L2JMobius

Questions about packets/client

mrk · 5 · 2082

Offline mrk

  • Heir
  • **
    • Posts: 21
How do you know which packet/format the client expects in a given request?

For example, I'm trying to complete RequestNewHennaCompose in BattleChronicle. I have already enabled the packet debug suggested at: https://l2jmobius.org/forum/index.php?topic=7416

What method/tool do you suggest to know which packet (format) to send to the client, or which packet the client expects?


Offline Index

  • Black Sheep
  • Marquis
  • *****
    • Posts: 536

If you want todo this thing - it completed, but need to commited ( in next month I will commit maybe )


Offline Index

  • Black Sheep
  • Marquis
  • *****
    • Posts: 536

Code: [Select]
struct _S_EX_PAYBACK_LIST
{
  var array<_PaybackRewardSet> vRewardSet;
  var int cEventIDType;
  var int nEndDatetime;
  var int nConsumedItemclassID;
  var int nUserConsumption;
};

struct _PaybackRewardSet
{
  var array<_PaybackRewardItem> vItemList;
  var int cSetIndex;
  var int nRequirement;
  var int cReceived;
};

struct _PaybackRewardItem
{
  var int nClassID;
  var int nAmount;
};
Code: [Select]
@Override
    public boolean write(PacketWriter packet)
    {
        OutgoingPackets.EX_PAYBACK_LIST.writeId(packet);
        packet.writeD(3); // колличество строк // string size //nSize
        for (int i = 1; i < 4; i++)
        {
            //заполняем строку //fill the string
            //start _PaybackRewardSet
            packet.writeD(3); // колличество предметов в строке // item count in field (max 3)//i
            for (int j = 1; j < 4; j++)

            //start _PaybackRewardItem
            //заполняем предметы //fill the items
            {
                packet.writeD(57); // предмет // item id
                packet.writeD(1); // количество // count
            }
            //закончили заполнять предметы // item fill end
            //end _PaybackRewardItem

            packet.writeC(i); // cSetIndex
            packet.writeD(5); // сколько нужно потратить // how much you need //nRequirement
            packet.writeC(0x00); //получена ли награда // check reward receiving ( 0x00 - no, 0x01 - yes ) //cReceived

            //закончили заполнять строку // end string fill
            //end _PaybackRewardSet
        }
        packet.writeC(_EventID);    //cEventIDType
        packet.writeD(10);  //nEndDatetime
        packet.writeD(91663);  //Итем, который должен светиться вверху // display item //nConsumedItemclassID
        packet.writeD(7);  //Сколько всего было потрачено итемов // summary item spend //nUserConsumption
        return true;
    }


Offline mrk

  • Heir
  • **
    • Posts: 21
Code: [Select]
struct _S_EX_PAYBACK_LIST
{
  var array<_PaybackRewardSet> vRewardSet;
  var int cEventIDType;
  var int nEndDatetime;
  var int nConsumedItemclassID;
  var int nUserConsumption;
};

struct _PaybackRewardSet
{
  var array<_PaybackRewardItem> vItemList;
  var int cSetIndex;
  var int nRequirement;
  var int cReceived;
};

struct _PaybackRewardItem
{
  var int nClassID;
  var int nAmount;
};

Thank you very much. Very didactic. Where/How do I get this first part of the code?



Offline mrk

  • Heir
  • **
    • Posts: 21
I managed to find the information. Thanks for putting me on the right path.