PDA

Просмотр полной версии : [Скрипт] Автоматизация выполнения заказов


VovanDJ
16.02.2011, 16:51
Скрипт для l2phx и написан во время жесточайшей депрессии по поводу невозможности нигде достать рецепт Усиленного орихалкового меча подмастерья
Где-то прочитал, что добыть его можно, выполняя заказы нпса кузнеца, однако около трех дней выполнения этих заказов не дали нужного рецепта.

В результате было принято решение автоматизировать нудный процесс выполнения заказа на производство меча центуриона (наисложнейший заказ для уровня 399).

Вот собствено сам скрипт

var
i: Integer;
begin

repeat
Buf := HStr('99 55 56 22 02 00 00 34 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
Buf := HStr('99 55 56 22 02 00 00 19 00 01 00 1C 00 97 17 00 00 00 00');
SendToServer;
Buf := HStr('99 55 56 22 02 00 00 EA 03 01 00 04 00 97 17 00 00 00 00');
SendToServer;

for i:=1 to 16 do
begin
Buf := HStr('40 55 FF 80 8B D1 F0 08 10 40 3D 09 67 01 00 00 04 00 5F 8A DD 0A 14 00 00 00 00 00 00 00 D7 D6 18 0A AF 03 00 00 00 00 00 00 DD D6 18 0A 18 01 00 00 00 00 00 00 D8 D6 18 0A 80 00 00 00 00 00 00 00');
SendToServer;
Delay(7000);
end;

Delay(1000);
Buf := HStr('99 55 56 22 02 00 00 34 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
Buf := HStr('99 55 56 22 02 00 00 19 00 01 00 1C 00 97 17 00 00 00 00');
SendToServer;
Buf := HStr('99 55 56 22 02 00 00 11 00 01 00 05 00 97 17 00 00 00 00');
SendToServer;

until false
end.

Первые три пакета 99 перехватываются при открытии диалога и взятии нужного заказа.
Пакет 40 в цикле - пакет, посылающийся при выполнении одной ковки (или нескольких - пакет один и тот же). На всякий случай посылается 16 раз, чтобы выполнить заказ 15\15 наверняка. Задержка 7 секунд хватает впритык, меньше нельзя.
Последние три пакета - перехватываются при сдатии заказа нпсу.

При запуске скрипта желательно открыть окно ковки и стоять рядом с нпсом.

Скрипт успешно протестирован на Сиберии.
Кстати там сейчас нпсов можно подтаскивать куда угодно "дружеским" агром.

Скажи спасибо=):pandal:

AZERIYS
18.02.2011, 11:25
Это на 2.0 покеты 99 с диалогом, на 2.1.0.7 кодировка изменена на 9C

Tr0y
18.02.2011, 11:50
Вместо Delay я использую


function Pause(Timewait: Integer):Boolean;
// сквозная проверка без остановки скрипта (c)dmitry501
var
t : integer;
begin
result := false;
t := Round(Time*86400);
if t > (tick + Timewait) then
begin
tick := t;
result := true;
end;
end;

Zephy
20.02.2011, 11:26
Хм, я переделал под свои нуждны, но при старте почему-то виснет и игра дисконектится.

var
i: Integer;
begin

repeat
Buf := HStr('9C 66 6E 08 6B 01 00 34 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
Buf := HStr('9C 66 6E 08 6B 01 00 19 00 01 00 1C 00 3D 18 00 00 00 00');
SendToServer;
Buf := HStr('9C 66 6E 08 6B 01 00 EA 03 01 00 04 00 3D 18 00 00 00 00');
SendToServer;

for i:=1 to 8 do
begin
Buf := HStr('E3 66 B5 80 8F D1 F0 08 40 40 3D 09 33 F6 01 00 03 00 8F 8A DD 0A 08 00 00 00 00 00 00 00 F3 D6 18 0A E4 01 00 00 00 00 00 00 EE D6 18 0A E6 01 00 00 00 00 00 00 ');
SendToServer;
Delay(7000);
end;

Delay(1000);
Buf := HStr('9C 66 6E 08 6B 01 00 34 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
Buf := HStr('9C 66 6E 08 6B 01 00 19 00 01 00 1C 00 3D 18 00 00 00 00');
SendToServer;
Buf := HStr('9C 66 6E 08 6B 01 00 11 00 01 00 05 00 3D 18 00 00 00 00');
SendToServer;

until false
end.

где ошибка?

Prukforum
21.02.2011, 00:17
у меня тоже виснет. 2.1.0.8
Даже когда игра не запущена.

Кстати, заказ лучше не сдавать, а отменять пакетом отмены от конкретного заказа (например:

FE 66 88 5E 14 00 00 ),

так как
не всегда делаются все вещи (после чего ступор в крафте)

Yurii77
21.02.2011, 05:34
тут весь смысл в успешной сдаче кв дабы получить рецепт...

sashok__
21.02.2011, 09:44
Buf :=
А разве это не надо к переменным присваивать?

MadDoK2
22.03.2011, 03:23
У кого имеются скрипты для версии 2.1 ?

ceutap
22.03.2011, 15:50
это скрипт для всех версий лично проверил на 2.1.. если у тебя виснет при создании скрипта просто не делай галочку на выделение этого скрипта и все и подумай хорошо как под свой крафт отредактировать скрипт

KacTac
22.03.2011, 19:25
Прошу прощенья что значит дружеский агр?

MadDoK2
03.04.2011, 18:19
Настроил все под свой серв но игра виснет и десконектится , что ето может быть ?
var
i: Integer;
begin

repeat
Buf := HStr('9C 57 5B 3E 00 00 00 34 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
Buf := HStr('9C 57 5B 3E 00 00 00 19 00 01 00 1C 00 18 15 00 00 00 00');
SendToServer;
Buf := HStr('9C 57 5B 3E 00 00 00 EA 03 01 00 04 00 18 15 00 00 00 00');
SendToServer;

for i:=1 to 16 do
begin
Buf := HStr('E3 57 80 80 8D D1 F0 08 05 2D 3D 09 48 01 00 00 01 00 F4 86 DD 0A 04 00 00 00 00 00 00 00');
SendToServer;
Delay(7000);
end;

Delay(1000);
Buf := HStr('9C 57 5B 3E 00 00 00 34 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
Buf := HStr('9C 57 5B 3E 00 00 00 19 00 01 00 1C 00 18 15 00 00 00 00');
SendToServer;
Buf := HStr('9C 57 5B 3E 00 00 00 11 00 01 00 05 00 18 15 00 00 00 00');
SendToServer;

until false
end.

Добавлено через 2 минуты
Кто подскажет как Автоматизировать крафт ?

Denomaro
10.04.2011, 22:35
кто может выложить скрипты для других проф на 390 заказ, с меня спс

fanFermara
11.04.2011, 07:27
Да ну нафиг, всё перепробавал...не помогает нечего =/ игра виснет, и приходится убивать процесс... Пробавал на TerAion и на PVP который не в топе, разницы ноль...

Alcom0055
19.04.2011, 11:30
а есть такие скрипты чтоб шмот воровать?

Drelann
23.04.2011, 22:10
Tr0y, ты бы не мог вписать свой пример в скрипт шапки? ;)

RemoteAccess
25.04.2011, 18:58
Всё виснет из-за этого:
Delay(7000);
Тормозится на 7 сек весь процесс приема/передачи пакетов и так в цикле 16 раз.
Число более 500 не рекомендуется. Лучше заменить таймером. Причём между посылом пакетов требуется небольшая пауза.

OskaL
09.05.2011, 01:28
Спс большое за скрипт. Всё работает отлично. Также немного переделав использую его для разборки руды и эфира. Автоматизировать советую заказы на 10 единиц ниже т.к. фейков почти нету.

OsacurO
16.05.2011, 22:09
Три пакета это хорошо, но как минимум на Тере можно брать и сдавать квест двумя пакетами вида
9C 57 5B 4F 00 00 00 EA 03 01 00 04 00 19 15 00 00 00 00 // принять
9C 57 5B 4F 00 00 00 11 00 01 00 05 00 19 15 00 00 00 00 //сдаем

то есть первый пакет- когда мы хватаем ресы и жмем принять.
второй - когда мы жмем отдать заказ. По сути последние в представленном скрипте.
Способ уменьшает писанину в коде. Но пожалуй есть некоторый риск быть отслеженным по логам.

Так же можно заметить что за заказ(именно за крафт итема) мы получаем опыт и у нас обновляется инвентарь. Так вот вместо делея можно прикрутить посылку пакета на крафт именно на изменение в инвентаре или на получение экспы за крафт(может глючить когда полоска умения крафта заполнена до предела, опыт идти не будет) + в такой прикрутке в том что получается более гибкая система посылки пакетов на новый крафт(некоторые крафты моментальны, некоторые с фейл полоской гоняются до конца) имеем экономию времени на крафте.
Реализовал бы и сам бы выложил модифицированный скрипт, но руки у мну кривоваты((( Буду работать на этим может осилю и выложу. =)