Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Пакеты
Войти через OpenID

Пакеты Форум о форматах отдельных пакетов или групп пакетов

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 10.06.2012, 18:38   #1
Новичок
 
Регистрация: 13.01.2012
Сообщений: 4
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Nevec пока неопределено
По умолчанию HighFive->StatusUpdate

Решил написать скрипт простенький (Для начала чтоб выводил количество собственных ЦП в чат).
Сам пакет выглядит так:
StatusUpdate - 18 EC 02 03 10 06 00 00 00 0A 00 00 00 1A 10 00 00 0C 00 00 00 EC 06 00 00 22 00 00 00 33 09 00 00 09 00 00 00 1A 10 00 00 0B 00 00 00 BB 06 00 00 21 00 00 00 33 09 00 00

Tип: 0x18 (StatusUpdate)
Pазмер: 57+2
Время прихода: 18:24:54:609
0002 d ObjectID: 268632812 (0x100302EC)
0006 d AttribCount: 6 (0x00000006)
[Начало повторяющегося блока 1/6]
000A d AttrID: max_HP ID:10 (0x000A)
000E d AttrValue: 4122 (0x0000101A)
[Конец повторяющегося блока 1/6]
[Начало повторяющегося блока 2/6]
0012 d AttrID: max_MP ID:12 (0x000C)
0016 d AttrValue: 1772 (0x000006EC)
[Конец повторяющегося блока 2/6]
[Начало повторяющегося блока 3/6]
001A d AttrID: max_CP ID:34 (0x0022)
001E d AttrValue: 2355 (0x00000933)
[Конец повторяющегося блока 3/6]
[Начало повторяющегося блока 4/6]
0022 d AttrID: cur_HP ID:9 (0x0009)
0026 d AttrValue: 4122 (0x0000101A)
[Конец повторяющегося блока 4/6]
[Начало повторяющегося блока 5/6]
002A d AttrID: cur_MP ID:11 (0x000B)
002E d AttrValue: 1723 (0x000006BB)
[Конец повторяющегося блока 5/6]
[Начало повторяющегося блока 6/6]
0032 d AttrID: cur_CP ID:33 (0x0021)
0036 d AttrValue: 2355 (0x00000933)
[Конец повторяющегося блока 6/6]

Код программы:
Код:
const
    Name='Marilyn';
    chat=19;                                            //15,18,19
var
    i,n:integer;
    ValueCP:integer;    

procedure SendMessage(Msg:String);
begin 
    buf:=#$4A;
    WriteD(0);
    WriteD(Chat);
    WriteS(':');
    buf:=buf+#$FF+#$FF+#$FF+#$FF;
    WriteS(Msg);
    SendToClientEx(Name);
end;

begin
    if FromServer and (ConnectName=Name) and (pck[1]=#$18) then
    begin
         ..... <= Тут нужна помощь знатоков, вопрос ниже.
    end;
end.
То что помечено красным компилятор выдает такую ошибку (видимо на самом деле не критично):
Access violation at address 132A61E9 in module 'l2ph.exe'. Read of address 00000000.

Вопрос:
Как выписать из пакета 18 EC 02 03 10 06 00 00 00 0A 00 00 00 1A 10 00 00 0C 00 00 00 EC 06 00 00 22 00 00 00 33 09 00 00 09 00 00 00 1A 10 00 00 0B 00 00 00 BB 06 00 00 21 00 00 00 33 09 00 00
последние 4 байта, перевести в число???

Дополнение:
Какие типы переводов есть в l2phx, приведите примеры.
Зарание благодарен.
Nevec вне форума   Ответить с цитированием
Старый 11.06.2012, 00:01   #2
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

http://coderx.ru/showthread.php?t=10
http://l2ph.coderx.ru/arhive/l2ph_help/
__________________

В любом из нас спит гений. И с каждым днем все крепче.

Переходим на протокол нового поколения jabber
J-Fobos вне форума   Ответить с цитированием
За это сообщение J-Fobos нажился спасибкой от:
Старый 11.06.2012, 21:50   #3
Новичок
 
Регистрация: 13.01.2012
Сообщений: 4
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Nevec пока неопределено
По умолчанию

Спасибо помогло, в то место вставил этот код:
Код:
        ValueCP:=ReadD(Length(pck)-3);
        SendMessage(IntToStr(ValueCP));
Я так понял ReadD(i:index):integer считывает с позиции i 4 байта ключительно, после долгих тестов, помог в программе "преобразовщик".

Вот собственно скриптик, кто хочет потестить, пожалуйста (Пишет красноватом шрифтом в чате ваше ЦП).
Код:
const
    Name='Marilyn';                                   <= Сюда впишите свой ник.
    chat=19;                                            //15,18,19
var
    ValueCP:integer;    

procedure SendMessage(Msg:String);
begin 
    buf:=#$4A;
    WriteD(0);
    WriteD(Chat);
    WriteS(':');
    buf:=buf+#$FF+#$FF+#$FF+#$FF;
    WriteS(Msg);
    SendToClientEx(Name);
end;

begin
    if FromServer and (ConnectName=Name) and (pck[1]=#$18) then
    begin
         ValueCP:=ReadD(Length(pck)-3);
         SendMessage(IntToStr(ValueCP));
    end;
end.
Nevec вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Пакеты



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:50.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!