L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
//QaK:отдельная тема по подкючению пакетхака к серверу >>>>>>>>тут
любые вопросы по данной тематике в этом топе будут удаляться без предупреждения.
Код:
const
mp='8A 1B 15 01 10';
hp='8A 1A 15 01 10';
begin
if fromclient and (pck[1]=#$38#$F5#$00#$EF#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=hstr(hp);
SendToServer;
end;
if fromclient and (pck[2]=#$33#$F5#$00#$EF#$00#$40#$00#$03#$00#$00#$00) then
begin
buf:=hstr(mp);
SendToServer;
end;
end.
где я ошибся?
Последний раз редактировалось QaK, 30.08.2010 в 18:56.
Не совсем понял, зачем удалять старый пакет и посылать новый, если можно в проходящем заменить нужные байты.
З.Ы.: жаль, на мой вопрос так и нету ответа...
Дело в том, что функции WriteC, WriteD ... работают с переменной buf.
Потом, такой метод более унивесален. Используя переменные не надо думать как делить на байты.
По мне так проще добавить пару функций для работы с pck - это если какой-то большой скрипт. А для маленьких можно обойтись и побайтным изменением пакета.
В моем представлении, чем раньше пакет покинет скрипт, тем лучше. А в случае с заменой pck на buf - так я вообще не возьмусь утверждать, что этот пустой пакет так и не выйдет за пределы л2пнх. Кто знает, может его осколки все-таки долетят до сервера, а мне такой флуд не к чему. Впрочем, тут уже вопрос к разрабочтику: как обрабатываются пустые пакеты?
Вот так мне больше нравится:
Код:
if (pck[1]=#$2E) and FromClient then
begin
buf:=pck; //копируем пришедший пакет 2E 00 00 00 79 34 15 00 22 05 11 48
//формат команды вставки данных WriteD(data, index: integer), по умолчанию index=0, index увеличивается на длину данных
WriteC($99, 5); //заменяем 79 на 99
WriteD($11111111, 9); //заменяем 22051148 на 11111111
pck:=buf; //записываем в pck нужный пакет
exit;
end;
В моем представлении, чем раньше пакет покинет скрипт, тем лучше. А в случае с заменой pck на buf - так я вообще не возьмусь утверждать, что этот пустой пакет так и не выйдет за пределы л2пнх. Кто знает, может его осколки все-таки долетят до сервера, а мне такой флуд не к чему. Впрочем, тут уже вопрос к разрабочтику: как обрабатываются пустые пакеты?
При вызове метода SENDTOSERVER и т.п., пакет из переменной buf отправляется сразу, а переменная pck может долго обрабатываться в плагинах и других скриптах.
delphi Код:
if MethodName = 'SENDTOSERVER'thenbegin
buf:=TfsScript(Integer(Params[0])).Variables['buf'];
b:=TfsScript(Integer(Params[0])).Variables['ConnectID'];
SendPacket(Length(buf)+2,buf,b,True);
endelse
здрасте я играю набаттле форсе (интерлюд) и сегодня там сказали(XAMELuOH с этого форума ) что работает подмена покетов на точку можете мне нюбу обьеснить как и что делать