Показать сообщение отдельно
Старый 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 вне форума   Ответить с цитированием