L2JMobius
Public Development => General Discussion => Topic started by: mrk on April 27, 2022, 05:00:35 PM
-
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?
-
(https://media.discordapp.net/attachments/966096100798894110/968583702928031804/unknown.png?width=815&height=676)
If you want todo this thing - it completed, but need to commited ( in next month I will commit maybe )
-
(https://media.discordapp.net/attachments/879319463852388382/900117236784693298/unknown.png)
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;
};@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;
}
-
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?
-
I managed to find the information. Thanks for putting me on the right path.