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.
гГ че там насчет в байты пялитса? А это - чье? Жми сюда!!
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
и второе - чтоб верно считать read'ом - надо формат строк знать. Ты знаешь аионский формат? я - нет. так что уж лучше делать "как оно работает", чем "так будет красивее, но хз как оно работает".
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
и второе - чтоб верно считать read'ом - надо формат строк знать. Ты знаешь аионский формат? я - нет. так что уж лучше делать "как оно работает", чем "так будет красивее, но хз как оно работает".
на расшифровку поглядеть вот тебе и формат строки)
от и что ему проще: обозначить в условии так как оно есть, или, чтобы комутотам угодить - лезть неизвестно куда, высматривая форматы (не факт что в инишках - от той самой нужной сборки) - и переписывать код, не зная заранее "а будет ли оно живое"?
__________________ На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."
А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?
Breadfan, с одной стороны ты прав, с другой - так привязываться к константам.. По мне это не очень хорошо. Для начала конечно не плохо, но если идти дальше, то я думаю ему самому будет легче разбивать эту вот ерунду на Read'ы и Write'ы по структурам тексать. Например, будет у него пакет на 60 байтов, какого-нибудь маленького itemlist'а и что, он будет так же вот по 60 байт переписывать? Поэтому лучше конечно сразу разбираться так, что бы было понятно, но потом упрощать для дальнейших изменений, т.е. создавать 1 скрипт для различных условий (но иногда это означает усложнят код, что, на мой взгляд, не существенный минус, если во всем разобраться)
Помогите тогда разобраться
Вот у меня есть слово например, первый 4 байта это вроде ID на сообшение в чат, потом идет само сообщение, например это /брбр
Как мне сделать, чтоб Read, считывал это слово в чате?
вот у меня слово
if FromServer and(pck[1]=#$4A)and(pck[6]=#$03)//пати чат просят ресthenbegin
j:=10; // j - стартовая позиция указателя//CharOID:=ReadD(j); // -- OID перса//TextType:=ReadD(j); //-- индекс чата в котором пишется текст
nick:=ReadS(j); //-- считывается ник, и, одновременно, указатель байта сдвигается на его длинну, т.е после выполнения команды будет j:=j+(длинна_блока_оканчивающегося "00 00")text:=ReadS(j); //-- считываем текст сообщенияif(text='рес')thenbegin
idtelasmerti:=pck[2]+pck[3]+pck[4]+pck[5]; //вычисление айди того, кто просит рес, то есть он труп
buf:=HStr('04 ') + idtelasmerti; //наведение таргета на этот труп. палевно, так как я не указал координаты трупа, но зато работает.
SendToServer;
rabota:='resurect';
endelsebeginif(text='хил')thenbegin
rabota:='heal';
end;
if(text='стоп')thenbegin
rabota:='';
end;
if(text='офф')thenbegin
rabota:='';
Timer01.enabled:=false;
buf:=HStr('46'); //рестарт
SendToServer;
end;
end;
end;
кусочек кода из моего проекта.
__________________
хочу картинку в подпись!
Последний раз редактировалось Breadfan, 08.06.2011 в 08:48.
Deffol, два последних байта нулей - обычно так обозначается конец строки, т.к. строка может быть любого размера, то как-то нужно конец обозначить - вот и обозначили двумя байтами нулей при WideString (в такой строке 2 байта определяют 1 символ), как у тебя собственно или еще может быть 1 пара нулей, если это обычная строка (1 символ = 1 байт) Я считаю все что связанно с считыванием строк нужно считывать именно через ReadS, т.к. эта процедура сама определяет где у тебя строка кончается. А именно у тебя это будет так:
Код:
...
var pos : integer; //позиция для чтения в твоем пакете
x : integer; //ID на сообщение в чат
s : string; //твоя строка
...
begin
pos := 1;//ставим позицию для чтения с первого байта пакета;
x := ReadD(pos); //читаем 4 байта ID и переменная pos сразу сместится на 4 байта и станет равна 5
s := ReadS(pos);// считывает строку в переменную s и смещает курсор pos на количество считанных байт
end;
...
А если тебе нужно считать только строку в данном случае это будет выглядеть так:
...
pos := 5;
s := ReadS(pos);
...
Вроде нигде не ошибся
Последний раз редактировалось Kilatif, 08.06.2011 в 02:42.