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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 08.07.2014, 12:18   #1
Новичок
 
Регистрация: 08.07.2014
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
oldog пока неопределено
По умолчанию снова инвентарь

Новичок в данной теме, помогите разобраться, никак не пойму что происходит, написал простенький скрипт, больше из любопытства:

Код:
var
iItemCount,iObjId,iItemId,iSlot,iCount,i,sme:integer; //сколько вещей в инвентаре

procedure Init; //Вызывается при включении скрипта
begin
iItemCount:=0;

end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

procedure SendMesg(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(17); //голосом героя
WriteS('Внутренний голос'); // кто чревовещает
WriteH(65535);
WriteH(65535); // почему-то без этого мессаги не отправляются
WriteS(msg);
SendToClient;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен

begin

if FromServer and (pck[1]=#$11) then
// пришел ответ на запрос списка вещей
begin
    SendMesg(inttostr(length(pck)));
    sme:=0;
    SendMesg(IntToStr(sme)+' тек смещение в пакете');
    i:=1; // не видел ни разу чтобы в инвентаре совсем было пусто, пусть будет 1
    iItemCount:=ReadH(4);
    SendMesg(IntToStr(iItemCount)+' слотов занято в инвентаре');
    iObjId:=ReadD(sme+6);
    iItemId:=ReadD(sme+10);
    iSlot:=ReadD(sme+14);
    iCount:=ReadQ(sme+18);
//    SendMesg(IntToStr(iObjId)+' ID '+IntToStr(i)+' объекта');
//    SendMesg(IntToStr(iItemId)+' ID '+IntToStr(i)+' итема');
    SendMesg(IntToStr(iSlot)+' слот '+IntToStr(i)+' итема');
    SendMesg(IntToStr(iCount)+' количество '+IntToStr(i)+' итема');

    // пока проверка цикла вручную со смещением относительно блоков
    sme:=$50;
    for i:=2 to iItemCount do
    begin
        SendMesg(IntToStr(sme)+' тек смещение в пакете');
        iObjId:=ReadD(sme);
        iItemId:=ReadD(sme);
        iSlot:=ReadD(sme);
        iCount:=ReadQ(sme);
        SendMesg(IntToStr(iObjId)+' ID '+IntToStr(i)+' объекта');
        SendMesg(IntToStr(iItemId)+' ID '+IntToStr(i)+' итема');
        SendMesg(IntToStr(iSlot)+' слот '+IntToStr(i)+' итема');
        SendMesg(IntToStr(iCount)+' количество '+IntToStr(i)+' итема');
        ReadH(sme); //it1
        ReadH(sme); //ct1
        ReadH(sme); //ie
        ReadD(sme); //bp
        ReadH(sme); //elvl
        ReadH(sme); //ct2
        ReadD(sme); //aid
        ReadD(sme); //mana
        ReadD(sme); //rt
        ReadH(sme); //ae
        ReadH(sme); //aev
        ReadH(sme); //daf
        ReadH(sme); //daw
        ReadH(sme); //dawi
        ReadH(sme); //dae
        ReadH(sme); //dah
        ReadH(sme); //dau
        ReadH(sme); //ee1
        ReadH(sme); //ee2
        ReadH(sme); //ee3
        ReadD(sme); //?
        ReadH(sme); //?
        
//        sme:=sme+$4a;  // переходим на след элемент
    end;

end;

end.
сам пакет инвентаря выглядит примерно так:

Код:
11 
01 00 
22 00 

3D C8 A4 40 oid
57 03 00 00 id
02 00 00 00 slot
01 00 00 00 00 00 00 00 count 
02 00 it2
00 00 ct1
00 00 eq
06 00 00 00 bp
00 00 el
00 00 ct
00 00 00 00 aid
FF FF FF FF mana
F1 D8 FF FF rt
01 00 ae
FE FF aev
00 00 daf
00 00 daw
00 00 dawi
00 00 dae
00 00 dah
00 00 dau
00 00 ee1
00 00 ee2
00 00 ee3
00 00 
00 00 
00 00 

14 D0 A4 40 57 03 00 00 FF FF FF FF 01 00 00 00 00 00 00 00 02 00 00 00 01 00 06 00 00 00 04 00 00 00 00 00 00 00
FF FF FF FF F1 D8 FF FF 01 00 FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

и так далее, по количеству итемов в инвентаре. Здесь после цифр короткий комментарий для себя, что обозначают цифры.
скрипт выводит последнюю позицию инвентаря - 31, хотя позиций 34, останавливаясь на смещении 2300, размер пакета - 2523, никак не пойму, почему так.
Может какие гуру подскажут? Версия протокола - 488.
oldog вне форума   Ответить с цитированием
 

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


Опции темы
Опции просмотра

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

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


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

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

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