Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 14.03.2010, 15:35   #1
Новичок
 
Регистрация: 16.02.2010
Сообщений: 20
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
0rfin пока неопределено
По умолчанию

Как правильно считывать значения хп цп? Красный ХП, Орандж ЦП
18 E0 51 02 10 03 00 00 00 09 00 00 00 E3 12 00 00 0B 00 00 00 61 07 00 00 21 00 00 00 78 09 00 00
Код:
Tип: 0x18 (StatusUpdate)
Pазмер: 33+2
Время прихода: 16:32:09:553
0002 d  ObjectID: 268587488 (0x100251E0)
0006 d  AttribCount: 3 (0x00000003)
              [Начало повторяющегося блока 1/3]
0010 d  AttrID: cur_HP ID:9 (0x0009) (0x00000009)
0014 d  AttrValue: 4835 (0x000012E3)
              [Конец повторяющегося блока  1/3]
              [Начало повторяющегося блока 2/3]
0018 d  AttrID: cur_MP ID:11 (0x000B) (0x0000000B)
0022 d  AttrValue: 1889 (0x00000761)
              [Конец повторяющегося блока  2/3]
              [Начало повторяющегося блока 3/3]
0026 d  AttrID: cur_CP ID:33 (0x0021) (0x00000021)
0030 d  AttrValue: 2424 (0x00000978)
              [Конец повторяющегося блока  3/3]

delphi Код:
if FromServer and (pck[1]=#$18) then   //берем значения из пакета StatusUpdate     begin     CurHP:=ReadD(5);     CurCP:=ReadD(20); // НЕ понимаю как работает реадд     SAY(IntToStr(CurCP));   end;

Последний раз редактировалось 0rfin, 14.03.2010 в 20:46.
0rfin вне форума   Ответить с цитированием
Старый 14.03.2010, 19:29   #2
Пользователь
 
Регистрация: 19.02.2010
Сообщений: 49
Сказал Спасибо: 1
Имеет 35 спасибок в 12 сообщенях
Vilson пока неопределено
По умолчанию

Цитата:
Сообщение от 0rfin Посмотреть сообщение
Еще откуда брать значение макс ЦП? в пакете UserInfo его нет
Точно нет? А это тогда что такое?

delphi Код:
procedure UserInfo; var   i, tmpCharObjectId: integer;   tmpMyName: stringbegin   tmpCharObjectId:=ReadD(18);       if CharObjectId=0 then CharObjectId:=tmpCharObjectId;   case tmpCharObjectId of   CharObjectId:   begin     MyCorX:=ReadD(2);    MyCorY:=ReadD(6);    MyCorZ:=ReadD(10);    i:=22;    tmpMyName:=ReadS(i);       i:=i+48;    MaxHP:=ReadD(i);    CurHP:=ReadD(i);    MaxMP:=ReadD(i);    CurMP:=ReadD(i);    MaxCP:=ReadD(655);     CurCP:=ReadD(659);          end;                    end;

Только сразу предпреждаю что отсюда ты возьмешь только начальные значения, а потом отслеживай StatsUpdate. Из моего пвп-скрипта:
delphi Код:
procedure StatsUpdate; var   i, tmpMaxHP, tmpCurHP, tmpMaxMP, tmpCurMP, tmpMaxCP, tmpCurCP, tmpCharObjectId :integer; begin   tmpCharObjectId:=ReadD(2);        if (tmpCharObjectId<>CharObjectId) then Exit;   for i:=0 to ReadD(6)-1 do     case pck[i*8+10] of       #$09: tmpCurHP:=ReadD(i*8+14);       #$0A: tmpMaxHP:=ReadD(i*8+14);       #$0B: tmpCurMP:=ReadD(i*8+14);       #$0C: tmpMaxMP:=ReadD(i*8+14);       #$21: tmpCurCP:=ReadD(i*8+14);       #$22: tmpMaxCP:=ReadD(i*8+14);     end;         if (tmpMaxHP<>0) then MaxHP:=tmpMaxHP;    if (tmpCurHP<>0) then CurHP:=tmpCurHP;    if (tmpMaxCP<>0) then MaxCP:=tmpMaxCP;     if (tmpCurCP<>0) then CurCP:=tmpCurCP;           if (tmpMaxMP<>0) then MaxMP:=tmpMaxMP;    if (tmpCurMP<>0) then CurMP:=tmpCurMP;    if (BSOEAutoUse) and (BSOEAmount>1) and (CurHP<>0) and (not TimerBSOE.Enabled) and (CurHP<((MaxHP*BSOEUsePercent)/100)) then    begin     UseItem(MyName, BSOEObjectId);     TimerBSOE.Enabled:=True;       end;              if (PotsAutoUse) then   begin    if (GCPAutoUse) and (GCPAmount>1) and (not TimerGCP.Enabled) and (CurCP<((MaxCP*GCPUsePercent)/100)) then     begin      UseItem(MyName, GCPObjectId);     TimerGCP.Enabled:=True                 end;       if (QHPAutoUse) and (QHPAmount>1) and (CurHP<>0) and (not TimerQHP.Enabled) and (CurHP<((MaxHP*QHPUsePercent)/100)) then    begin     UseItem(MyName, QHPObjectId);     TimerQHP.Enabled:=True                 end;                  if (GHPAutoUse) and (GHPAmount>1) and (CurHP<>0) and (not TimerGHP.Enabled) and (CurHP<((MaxHP*GHPUsePercent)/100)) then    begin            UseItem(MyName, GHPObjectId);     TimerGHP.Enabled:=True;           end;             if (MPAutoUse)   and (MPAmount>1) and (not TimerMP.Enabled) and (CurMP<((MaxMP*MPUsePercent)/100))  then    begin        UseItem(MyName, MPObjectId);     TimerMP.Enabled:=True;           end;              end;              end;

Последний раз редактировалось Vilson, 14.03.2010 в 19:40.
Vilson вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



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

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


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

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

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