E3 57 80 80 8B D1 F0 08 - эта часть у всех пакетов всегда одинакова, так что ее расшифровать мне никак (не проверял с другими чарами)
7B 2C 3D 09 54 01 00 00 - это я так понимаю что производиться реально меняется только один байт (7В на 7С или 7D зависит от того что делаю какой заказ)
05 00 - количество расходуемых ресурсов для производства
6A 86 DD 0A - 1 ресурс в моем случае квест предмет "запечатан адамантитовый стержень")
30 00 00 00 00 00 00 00 количество 1 ресурса в рюкзаке на момент старта производства (думаю используется только число в 4 байта зачем остальные 4 которые 00 понятия не имею огромного количества ресурсов не покупал)
49 87 DD 0A - 2 ресурс квест-итем "Большая адамантитовая пластина"
30 00 00 00 00 00 00 00 количество 2 ресурса в рюкзаке
D3 D6 18 0A - 3 ресурс Цирконевый порошок
10 00 00 00 00 00 00 00 - количество 3 ресурса
DC D6 18 0A - 4 ресурс Ададмантитовый провод
10 00 00 00 00 00 00 00 -количество 4 ресурса
D9 D6 18 0A - 5 ресурс Смазка
30 00 00 00 00 00 00 00 - количество 5 ресурса
Собственно в окне производства 2 кнопки для старта
изготовить все
изготовить указанное католичество
так и два пакета Е3 которые я выложил они полностью одинаковы что изготовить все что изготовить только 1.
Есть мысль что клиент шлет еще какую то информацию через другие пакеты которые я не отслеживаю например пакет 44 он идет слишком часто и разного размера
Не пойму тут ведь по 4 байта нада брать? Или в Айон по другому?
По идее если тут одни числа в Dword, то они пачками идут
E3(ид) 57 80 80 8B(аццкое число) и т.д....
Так а на какое действие это пакет? (Подробненько)
И какие там еще пакеты меняющиеся отправлять нада?
А то скрипт без этого не написать)) Я прост сам в Айон не играю))
Не пойму тут ведь по 4 байта нада брать? Или в Айон по другому?
По идее если тут одни числа в Dword, то они пачками идут
E3(ид) 57 80 80 8B(аццкое число) и т.д....
Так а на какое действие это пакет? (Подробненько)
И какие там еще пакеты меняющиеся отправлять нада?
А то скрипт без этого не написать)) Я прост сам в Айон не играю))
Короче этот пакет производит заказ этот квест можно брать, потенциально, бесконечно.
Суть в том что пакет Е3 запускает производство квестового предмета, который в конце сдается
все, что меняется это количество оставшихся итемов в рюкзаке при посылке, но можно и не менять все равно работает, если слать самый первый пакет постоянно.
Работает, если обычной посылкой послать, а в скрипте дисконнект.
Добавлено через 2 минуты
если с задержками производство получиться перейду к написанию взятия и сдачи квеста они и так работали, по крайней мере, взятие и покупка итемов
Последний раз редактировалось TEHb, 18.02.2011 в 22:59.
Причина: Добавлено сообщение
Попробую подвести итог.
Нам надо написать скрипт, которой автоматизирует следующие действия:
1) Произвести некоторое количество итемов (пакетом Е3)
2) Сдать произведенные итемы
3) При нехватке итемов покупать их
Все правильно?
__________________
В любом из нас спит гений. И с каждым днем все крепче.
Попробую подвести итог.
Нам надо написать скрипт, которой автоматизирует следующие действия:
1) Произвести некоторое количество итемов (пакетом Е3)
2) Сдать произведенные итемы
3) При нехватке итемов покупать их
Все правильно?
Нет, что касается алгоритма, то он следующий:
1. Взять задание (у меня записаны 3 пакета)
2. купить необходимое число итемов для производства (2 пакета)
3. Произвести квест итемы (пакет Е3 можно С9 В5 Е3 первые два выбирают станок производства в цель)
4. Сдать задание
ну и дальше по кругу.
Собственно я с производством уже справился, но на моем сервере уже появился фикс - нельзя брать задания далеко от персонажа,
сразу тюрьма.
Так что теперь, мой скрипт сильно усложниться, но я думаю дальше справлюсь. Спасибо всем за помощь думаю тему можно закрыть.
К стати, а почему нельзя использовать DELAY(1000)? Где об этом можно прочесть?
ЗЫ: Я выложу получившийся скрипт чуть позже, если кому надо.
Последний раз редактировалось TEHb, 19.02.2011 в 10:33.
Создаем таймер, начальное значение TimerCyrcle задаем 1, доделываем код и вставляем его в событие таймера.
Код:
case TimerCyrcle of
1: Begin
buf:=HStr('00 00 00 00 00 00'); //первый пакет на задание
SendToServerEx(name);
end;
2: Begin
buf:=#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00; //второй пакет на задание (для примера пишу в таком виде)
SendToServerEx(name);
end
3: Begin
buf:=HStr('00 00 00 00 00 00'); //третий пакет на задание
SendToServerEx(name);
end;
4: Begin
buf:=HStr('00 00 00 00 00 00'); //покупаем итемы 1-й пакет
SendToServerEx(name);
end;
5: Begin
buf:=HStr('00 00 00 00 00 00'); //покупаем итемы 2-й пакет
SendToServerEx(name);
end;
6..9: Begin
buf:=HStr('00 00 00 00 00 00'); //пару раз отсылаем пакет на производство
SendToServerEx(name);
end;
//ну и так далее, думаю суть понятна)
else begin
TimerCyrcle:=0;
end;
end;
Inc(TimerCyrcle2);
end;
__________________
В любом из нас спит гений. И с каждым днем все крепче.
В общем с case ... of идея ясна и спасибо я уже сказал
а delаy на маленьких задержках (соизмеримых с ПИНГом) я думаю можно использовать, именно так мой скрипт первый раз заработал.
и к стати фриз действительно есть, но меня он не напрягает ибо мне пофиг так как я в это время ни чего не делаю.
Теперь у меня мелькнула идея написать скрипт который будет записывать все пакеты(определенного типа) по очереди по команде из чата
микро обучаемый пакетный БОТ так сказать. Единственная проблема на текущий момент это как засечь время между приходами пакетов.
Алгоритм такой:
1. Ждем с чата команду (например когда я напишу 1)
2. Если пакет от сервера или клиента соответствует необходимому типу
записать его в массив действий (и тут то как раз необходимо запомнить время прихода пакета)
3. и так далее пока не появиться в чате другая команда означающая окончание записи пакетов
4. если пришла третья команда из чата запустить выполнение всех записанных команд по очереди с их же интервалами и плюс небольшой 10% запас, и все это бесконечно
ЗЫ: Думаю я тут не оригинал но так можно записать выполнение тьма квестов. Есть конечно еще одна маленькая проблемка это, то что я не нашел способа сохранять логи на жесткий диск и вообще не смог работать с файлами. Думаю эту проблему поможет решить DLL с функциями работы с файлами.
Если я решу писать такой скрипт мне отдельную ветку создавать?
Ну и еще насчет отсчета времени собственно решение, я думаю, что нашел
создаю таймер устанавливаю интервал 1 (лучше 10 ибо точность особо не важна и меньше я думаю лагать будет) в теле таймера inc(i), ну и по приходу считываю эту самую i и обнуляю
только вот может таймер и сам считает время(я практически в этом уверен) нужно лишь считать некую переменную, структуру класса не помню. ((((
Последний раз редактировалось TEHb, 20.02.2011 в 12:17.
Причина: Прозрение
Вот и сам скрипт как я и обещал только чейчас он уже не работает там где стоит фикс (нельзя брать задания стоя далеко от NPC) таким образом его придется модифицировать чтобы чар бегал брал задания рядом с NPC мне с этим лень было заморачиваться может моя новая идея все упростит.