в следующем пакете патый байт должен увеличиться на 1
Тоесть :
0e 00 05 01 01 00 00 00 ff ff 01 00 17 17
Потом :
0e 00 05 01 02 00 00 00 ff ff 01 00 17 17
Потом :
0e 00 05 01 03 00 00 00 ff ff 01 00 17 17
и тд и тп а когда дойдет до FF - то нужно остоновить отсылку пакетов ....
Пока жду ответов попробую сам разобраться ....
За дельные советы заранее спасибки ;)
Глюконатор
09.11.2008, 21:43
тебе их надо отправлять друг за дружкой или через какой-то интервал?
если никаких условий не выставлять, то они будут отсылаться при получении вп любого пакета, будь он сервер-клиент или клиент-сервер. такой вариант устроит?
OBERON_ZGZ
09.11.2008, 21:53
мне нужно друг за дружкой , но только по моей команде ...
а не когда ему вздумается...
Глюконатор
09.11.2008, 23:10
лови пакет на нужный тебе социал (приветствие, смех и т.д.) - по нему будет отправляться пакет. пакет выложи сюда. скрипт напишу.
begin
if flag then
if not _gFromServ then
if hStrCmp(_gBuff,1,5,'05 00 0D 16 06') then begin
gSys.SendS(HStr(a)+HStr(format('%x',[i]))+HStr(b));
inc(i);
if i > 255 then flag:=false;
end;
end.
Добавлено через 2 минуты
зы каждый след. пакет отсылается по твоей команде. если надо по другому - скажи как, я исправлю. делается это все один раз. то бишь если надо занового с 1 пакеты отсылать, то скрипт надо перезапустить.
OBERON_ZGZ
09.11.2008, 23:50
щя протестю и сообщю ...
Добавлено через 29 минут
Забыл спросить как кодировал , в FS или WPS ....???
В режиме FS говорит :
ERROR : Script[1] NOT Compiled !
В режиме WPS говорит :
ERROR(2)Scriptl: ( expected PROCEDURE ONCREATE
Запускал в онлайн редакторе ....
Что делаю не так ?
Глюконатор
10.11.2008, 00:30
Скрипт написан на FS. "Нот компилед" - как вариант старая версия WP. Для компиляции надо 6.56+ Скачать можно либо с оф сайта либо с моей темы ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).
На заметку - все скрипты всегда сначала проверяй в скрипт-тестере, если будешь пихать сразу в онлайн, то при косяке в скрипте можно в бсод вылететь...
Добавлено через 1 минуту
зы саурон пишет, что wps морально устарел и он более тормознутый, так что юзай fs...
OBERON_ZGZ
10.11.2008, 00:34
Объясню что хочу сделать ...
при атаке моба холодным оружием клиент отсылает пакет серверу.....
при следующем ударе увеличивается байт на 1 ......
и тд. и тп.
Я хочу отправить серверу один за одним эти пакеты на дамаг
Главное чтоб каждый последующий пакет имел этот байт на единицу больше !
Пытаемся сделать овердамаг ББ ....:notme:
Глюконатор
10.11.2008, 00:48
тогда я тя сразу обломаю)) таким макаром од сделать не получится. дамаг нанесенный мобу - серверсайд.
Добавлено через 2 минуты
P.s., а чтобы все таки попробовать, поменяй пакет в скрипте на пакет атаки. пакет в хексформате. можно пробелы между байтами поставить для большей читаемости.
OBERON_ZGZ
10.11.2008, 00:56
может я не так выразился , я хочу ускорить отправку пакетов удара
, так как клиент посылает их с определенной задержкой (скорость атаки)
если я отправлю серверу за 10 сек 100 ударов вместо 10 (как отсылает клиент) и сервер их примет - то будет кулл....
скачал wp 6,58 - щя потестим
Глюконатор
10.11.2008, 01:07
ааа... ну это совсем по другому оформлять надо... ща будет.
Добавлено через 23 минуты
Блин... я чета уже подзабыл немного работу с этими пакетами... но вроде должно работать...
var i: integer;
s: string;
begin
if not _gFromServ then
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
for i:=1 to 255 do begin
s[5] := HStr(format('%x',[i]));
gSys.SendS(s);
end;
end;
end.
Добавлено через 32 минуты
йопт.. опять забыл... короч тебе надо хотя бы раз жахнуть моба. точнее так. ты его один раз бьешь (отруби автоматичскую битву) а скрипт дальше сам послыает пакеты на удар. не успокоится пока не пошлет все 255.
OBERON_ZGZ
10.11.2008, 02:01
не запускает :nono:
.ERROR(1)Script1: Found I, expected :=, (, [ or ; I : INTEGER
0E 00 05 01 01 00 00 00 FF FF 01 00 AF 21
количество ударов (при входе в игру всегда начинаеться с 01)
АйДи моба
мне нужно сделать хоть 1 удар чтоб узнать АйДи моба , дальше нужно подправить скрипт с заменой АйДи моба ....
Следующий шаг , это запуск скрипта (для этого нужно ударить еще 1 раз его) --- значит скрипт должен начинаться как минимум с i:=3 to 255 do begin
Пытался исправить , но нифига не идет :nono:
Добавлено через 3 минуты
Вот что говорит тестер скриптов :
.compiling {FS text script} 10/11/2008 0:03:38
.compiled (time: 16 ms.)
.
.'OnCreate' not found...
.running Script {FS text script} 10/11/2008 0:03:38
.var's:
i : integer = 0 ($0000) short
s : string = (len: 0 /$00)
if GInt(_gBuff,3,2) = $105 then begin //если пакет на удар, то
gBlockPacket; //блокируем пакет клиента
s := _gBuff; //копируем его в переменную
for i:=1 to 255 do begin
s[5] := HStr(format('%x',[i])); //меняем 5 элемент на текущий i в хексе
gSys.SendS(s); //отправляем пакет с заменным 5 элементом.
короч. по русски. тебе надо один раз ударить моба. скрипт этот пакет поймает, заблокирует его и сам начнет отсылать такие же то ка с измененными значениями. я надеюсь это пакет на удар?
OBERON_ZGZ
10.11.2008, 02:51
сорри , понял - скрипт работает , ....
Вот только сразу после отправки первого же пакета
кикает с сервера :sad:
Тоесть скрипт даже не успевает отправить 2 пакет с патым байтом 02....
странно как то ...
если посылаю вручную
0E00050101000000FFFF0100241A
0E00050102000000FFFF0100241A
0E00050103000000FFFF0100241A
то с сервера не кикает
Добавлено через 3 минуты
но если я нарушу последовательность , тогда отключение ...
если после пакета
0e00050101000000ffff0100241a
я пошлю пакет не этот
0e00050102000000ffff0100241a
а 03 или 05 или дюбое другое значение - тогда сервак отключает ...
может что то не так в скрипте ?
Добавлено через 6 минут
Ладно , извини что надоедаю - фиг с ними с этими пакетами ...:pif::pif:
Спс за помощь.:)
Добавлено через 23 минуты
:notme:
Для размышления ......
Нашел лог пакетов (я новичёк , так что не суди строго)
Твой скрипт отправлял такие пакеты ....
0E00050110000000FFFF0100241A
0E00050120000000FFFF0100241A
0E00050130000000FFFF0100241A
и тд и тп - да еще с задержкой в 0 мс
Может всё таки сделать задержку в несколько мс ???
Глюконатор
10.11.2008, 03:15
ты смотрел в логере пакетов что скрипт отсылает? там все регистрируется, если он включен конечно. посмотри в нем какие пакеты отправляет скрипт.. может я его реально косячно написал.. =(
OBERON_ZGZ
10.11.2008, 03:23
вот
Глюконатор
10.11.2008, 03:53
доо.. косяк... ща будем править..
Добавлено через 6 минут
Я короч не стал разбираться с форматом.. просто подрправил косяк.
var i: integer;
s: string;
begin
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
for i:=1 to 255 do begin
if i<16 then s[5] := HStr(format('0%x',[i]))
else s[5] := HStr(format('%x',[i]));
end;
end;
end.
OBERON_ZGZ
10.11.2008, 04:16
:rolleyeyes:
Не получилось ;)
.......
OBERON_ZGZ
10.11.2008, 04:17
Утро вечера мудренее , оставим это на потом ....:agreed:
Глюконатор
10.11.2008, 04:27
Ыы... я команды на отправку пакета забыл обратно вписать... =)
var i: integer;
s: string;
begin
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
for i:=1 to 255 do begin
if i<16 then s[5] := HStr(format('0%x',[i]))
else s[5] := HStr(format('%x',[i]));
gSys.SendS(HStr(s));
end;
end;
end.
Кстати.. почему там 12? ты же говрил что с 1 начинается...
OBERON_ZGZ
10.11.2008, 04:55
ERROR: EXCEPT: HSTR: '$??' is not a valid integer value at [11:11]
:sad:
OBERON_ZGZ
10.11.2008, 05:06
сделал так :
var i: integer;
s: string;
begin
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
for i:=1 to 255 do begin
if i<16 then s[5] := HStr(format('0%x',[i]))
else s[5] := HStr(format('%x',[i]));
gSys.SendS(s);
end;
end;
end.
и заработало - вот результат :d
OBERON_ZGZ
10.11.2008, 05:08
может всё таки сделать задержку , а то я в 1 сек сделал 255 ударов .....
Глюконатор
10.11.2008, 05:09
молодца)) в прогеры пойдешь))... результат есть? =)
OBERON_ZGZ
10.11.2008, 05:12
на скрине видно как сервак 255 раз прислал мне пакет "AttackErrorResult"
Добавлено через 4 минуты
там где на скрине пятый байт = 12 это я вручную посылал пакеты ,
как видишь всё проходило нормально
Сервак принимал их и присылал мне результаты о дамаге который я нанёс
Так что я думаю что что то можно замутить с этим скриптом , токо нужно еще подумать и поиграться с ним .....:sceptic:
Глюконатор
10.11.2008, 05:23
С задержкой в 200мс
var i: integer;
s: string;
function OnTimer(n,cn: integer):boolean;
begin
if n = 1 then
if cn <= 255 then begin
if cn < 16 then s[5] := HStr(format('0%x',[i]))
else s[5] := HStr(format('%x',[i]));
writelogln(HStr(s));
result := true;
end
else result := false
else result := true;
end;
begin
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
gSys.SetTimer(1,200);
end;
end.
бьешь моба 1 раз и ждешь... из расчета того чтов секунду будет послываться 5 пакетов то примерно 50 секунд)) иначе за адекватность не отвечаю =)
кстати у меня этот таймер иногда косячит... смотри в логах в номере пакета название [OnTimer]. Если не обнаржуишь такого.. попробуй скрипт перезапустить..
Добавлено через 1 минуту
я вообще афк если че на 30-50 мин.
OBERON_ZGZ
10.11.2008, 05:34
Я вот подумал , а нельзя сделать по такой формуле
1 ловим пакет и блокируем его (s)
2 посылаем пакет с байтом 01 (i)
3 посылаем пакет c (i) + 1
4 если (i) =255 конец скрипта
5 если нет то пункт (3)+1
Чё то башка не варит :sad:
Короче в старом варианте по моему мы послали одним пакетом все значения, а нужно по очереди - да еще дать время серверу прислать нам инфу с дамагом ....
а может и нет , мозги уже совсем не варят - пойду спать ....:wtf:
OBERON_ZGZ
10.11.2008, 05:56
что то с таймером не то :confused:
1,200 это не 1.2 сек ???
вот что на скрине , не знаю нормально ли это ....
Глюконатор
10.11.2008, 06:14
Я короч итоговый скрипт опять забыл до конца изменить... :wtf:
var i: integer;
s: string;
function OnTimer(n,cn: integer):boolean;
begin
if n = 1 then
if cn <= 255 then begin
if cn < 16 then s[5] := HStr(format('0%x',[i]))
else s[5] := HStr(format('%x',[i]));
gSys.SendS(s);
result := true;
end
else result := false
else result := true;
end;
begin
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
gSys.SetTimer(1,200);
end;
end.
По поводу первого сообщения... Скрипт по этой схеме и работает... просто разница во времени между отсылками пакетов < 0,001с, поэтому в логгере это и не отображается..
Кстати пакет с еррором тебе пришел 254 раза)) первый наш пакет серв обработал и прислал тебе результат)
Че с таймером я хз... Если ты пользовался мультиинжектором, то могу только посоветовать перезапустить ВП и саму игру.. если через проксифер - только ВП... но с учетом нашей задержки это вполне ожидаемое поведение скрипта...
ЗЫ 1200 это 1,2 сек =)
:flood:
OBERON_ZGZ
10.11.2008, 14:55
первым посылает пакет с (i) = 0
Помоему ты забыл вписать
for i:=1 to 255 do begin
Глюконатор
10.11.2008, 16:12
Для пакета с i = 0:
var i: integer;
s: string;
function OnTimer(n,cn: integer):boolean;
begin
if n = 1 then
if cn <= 256 then begin
if cn < 17 then s[5] := HStr(format('0%x',[cn-1]))
else s[5] := HStr(format('%x',[cn-1]));
gSys.SendS(s);
result := true;
end
else result := false
else result := true;
end;
begin
if GInt(_gBuff,3,2) = $105 then begin
gBlockPacket;
s := _gBuff;
gSys.SetTimer(1,200);
end;
end.
И в данном случае цикл не нужен.=)
OBERON_ZGZ
10.11.2008, 16:29
так он посылает пакет с пятым байтом 0f
при повторной отсылке 0f меня логично выкидывает из игры ......
Ivan_32
10.11.2008, 17:46
А на С-подобном синтаксисе в нем писать нельзя ?
Так уж получилось что Профессор Вирт очень серьезно повлиял на всю отрасль программирования(как науки) и наравне с наследниками ALGOL-68 стали идти наследники Pascal. Ярким представителем является Ada (в честь Ады Лавлейс - первой программистки, вобще). Кстати это фактически два типа мышления...
Глюконатор
10.11.2008, 20:25
OBERON_ZGZ - подправил косяк;
Ivan_32 - к сожалению нет, тока делфи.. =(
OBERON_ZGZ
10.11.2008, 21:13
Вероятно я не так выразился , скрипт начинал отправку пакетов с
изменяемым пятым байтом начиная с 00 ....
А нужно с 01 по ff и остановить скрипт если ты не забыл ....
В исправленном варианте он также начинает отправку с 00 ....
а это не допустимое значение и меня выкидывает из игры ....
Глюконатор
11.11.2008, 02:10
ну а в чем дело тогда? о_о первый вариант и был таким каким ты просишь. отправляет с 1 по 255 включительно потом отрубается.
OBERON_ZGZ
11.11.2008, 19:38
Скрипт работает
нужно вернуть обратно значения :
if cn < 16 then s[5] := HStr(format('0%x',[cn]))
else s[5] := HStr(format('%x',[cn]));
Наверное что то было с WP , теперь всё работае ...:agreed:
Но к сожалению , на атаку таким способом сервак присылает
ерор...
наверное контролирует скорость атаки ББ.....
Хотя непонятно почему , ведь для акретовского ланча эта фишка проходит :((
Попробую поэксперементировать с с таймером ....:sceptic:
Добавлено через 2 минуты
еще забыл
if cn <= 256 then begin
поменять на
if cn <= 255 then begin
чтобы остановился на значении FF
Добавлено через 9 минут
Кстати , не подскажите как значение таймера устанавливать ???
1,200 - это задержка в 0,2 сек ?
1,500 - это 0,5 сек ?
а 2,000 - это сколько ?
или 0,500 это что ?
:rolleyeyes:
Глюконатор
11.11.2008, 23:40
по функяим FS есть справка ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Тут вкратце скажу - gSys.SetTimer(num, time: integer);
Устанавливает таймер с номером Num на время Time в мс. Всего может быть три таймера для каждого скрипта. Установка Time = 0 вырубает данный таймер.