L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
buf:=#$14;
..... SendToServerEx(AssistantName);;
Значит это пакет от клиента, и до Т1 это всегда было
14=UseItem:d(ObjectID)d(d)
Аналог в Т1 это
19=UseItem:d(ObjectID)d(Unknown)
Объясняю как изменять скрипт при переходе на другие хроники. Например с Интерлюдии на Грацию.
Берем packetsT0.ini - здесь описан формат пакетов интерлюдии. Лежит в папке .\SETTINGS пакетхака версий больше 100.
Берем packetsT1.ini - здесь описан формат пакетов грации. Лежит также в папке .\SETTINGS.
Смотрим, что в основном теле begin ... end. отлавливается, первое что видим
Код:
if (ConnectName = NickName) and FromServer then // разбор пакетов от сервера
case pck[1] of
#$01: MoveToLocation01;
смотрим в packetst0.ini пакет с ID=01 от сервера (FromServer) это MoveToLocation
ищем соответствие пакету MoveToLocationв packetst1.ini и находим пакет 2F=MoveToLocation от сервера (FromServer). Меняем ID=01 на ID=2F в скрипте получаем
Код:
if (ConnectName = NickName) and FromServer then // разбор пакетов от сервера
case pck[1] of
#$2F: MoveToLocation01;
Вот счас поработал над 3мя скриптами, не уверен что всё верно зделал, так как не всегда знаю где пакет от сервера, а где от клиента. Но надеюсь что работать будет. Есчё раз спс за подробное разьяснение для нуба.
Добавлено через 7 часов 0 минут
В посте выше отредоктированный скрипт, но почемуто не работает, видимо здесь нужно есчё поменять формат пакета, но как это определить и поменять незнаю. Если ктонить натолкнёт на правильный путь, буду благодарен.
Последний раз редактировалось lamer, 16.04.2009 в 21:54.
Причина: Добавлено сообщение
Вот счас поработал над 3мя скриптами, не уверен что всё верно зделал, так как не всегда знаю где пакет от сервера, а где от клиента. Но надеюсь что работать будет. Есчё раз спс за подробное разьяснение для нуба.
Добавлено через 7 часов 0 минут
В посте выше отредоктированный скрипт, но почемуто не работает, видимо здесь нужно есчё поменять формат пакета, но как это определить и поменять незнаю. Если ктонить натолкнёт на правильный путь, буду благодарен.
глядя на код ты всегда можеш точно сказть откуда пакет.. программа пакетхак сидит посредине между сервером и клиентом и прослушивает всё что передют они друг другу.. а также может вмешаться в процесс передачи пакетов..
глянь на пару примеров из скрипта локомотив от Alexus..
//Записываем текущие координаты
if FromClient and (ConnectName=Name) and (pck[1]=#$48) then begin
X:= ReadD(2);
Y:= ReadD(6);
Z:= ReadD(10);
end;
тут всё понятно.. мы слушаем трафик.. и запоминаем какуюто информацию из потока данных.. причем нас интерисует только то что FromClient и ConnectName=Name и pck[1]=#$48
что такое pck[1]=#$48 думаю из коментария всё понятно.. ето пакет в котором клиент передает серверу координаты.. ну может быть пакет и длинный там идет но координаты в нем записаны в начале пакета..
что делать если нет комментария? глянуть файл Packets.ini в папке с пакетхаком.. и в нем найти нужный пакет в нашем случае #$48 из етого файла ты прочтеш то что:
48=ValidatePosition:d(X)d(Y)d(Z)d(Heading)d(Data)
пакет называется валидейт позишн (название пакета имеет обычно простой и интуитивно понятный перевод с английсково в нашем случае - УТВЕРЖДАЮ КООРДИНАТЫ) в нем после идешника(заголовок пакета) (заголовок пакета ето его название типа- игра понимает как воспринимать ету кучу данных исходя из ИДешника) идут данные.. эти данные строго определенной длинны.. ты заранее можеш сказать сколько байт в етом пакете будет.. (для справки байт = число в диапазоне от 0-255 в десятичной и 0-ff в шестнадцатиричной системах) мы смотрим что после заголовка идет : d(X). делаем вывод что после заголовка 4 байта несут в себе координату по икс.. почему 4? потомучто d(X).. D буква говорит об размерности 4 байта.. аналогично делаем вывод что с 6-го по 9-й байты будет координата по игрик потомучто в описании написано: 48=ValidatePosition:d(X)d(Y)
ну с Z все и так понятно.. дальше мы видим что после координат передается d(Heading) .. что такое Heading я незнаю.. но мы точно можем судить об том что оно хранится в етом пакете в 4-х байтах в каких именно? с 1+4+4+4+ХХ ХХ ХХ ХХ+4 в етих иксах оно хранится..
ну и так далее по пакету.. с 14 по 17 байты значит..
да там всё просто ты ток всмотрись повнимательней.. а если не понятно то глянь хорошо-прокомментированные скрипты из первого поста в топе ДА БУДЕТ БОТ.. там они очень примитивны.. восновном без использования самописных функций и процедур..
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
народ, у меня вот такая вот проблема, ставлю пакетхак на кач, точнее на набивание колов, около часика всё работает бот качается, потом провисает и вылезает куча ошибок каскадом, вот тут видно http://www.photoshare.ru/photo3132638.html ктонить помагите, скажите в чём трабла? я все версии пакетхака поперепробывал везде одно и тоже!
Помогите поправить скрипт, что уже только не делал никак не выходит, нужно чтобы пакеты отправлялись все и в строго определенном порядке.
Пробывал по разному и таймером и переменными пытался условия ставить, и через case ничего не помогает, пакеты перемешиваются или отправляются не все...
Начальный вариант без моих замутов:
const
b1='11 11 11 ';
b2='22 22 22 ';
b3='33 33 33 ';
begin
buf:=hstr(b1);
SendToServer;
buf:=hstr(b2);
SendToServer;
buf:=hstr(b3);
SendToServer;
end.
end;
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;
begin
if pause(5) then
begin
buf:=hstr(b1);
SendToServer;
end;
if pause(10) then
begin
buf:=hstr(b2);
SendToServer;
end;
if pause(15) then
begin
buf:=hstr(b3);
SendToServer;
end;
end.
хотелось бы получить что то типа такого:
Цитата:
const
b1='11 11 11 ';
b2='22 22 22 ';
b3='33 33 33 ';
var
x: integer;
begin
x:=1;
end;
if x=1 then
begin
buf:=hstr(b1);
SendToServer;
x:=x+1;
end;
if x=2 then
buf:=hstr(b2);
SendToServer;
x:=x+1;
end;
if x=3 then
buf:=hstr(b3);
SendToServer;
x:=1;
end;
end.
Последний раз редактировалось Stasrus, 27.04.2009 в 23:59.