Server icon indicating copy to clipboard operation
Server copied to clipboard

Implement OP_MoveMultipleItems

Open mackal opened this issue 7 years ago • 1 comments

This is available in all supported clients. RoF and RoF2 are the only clients that send this packet, the rest however will accept it (and use it internally w/o sending for Bandolier)

Here are some examples (older clients were edited to incorrectly send them while using bandolier :P)

Titanium

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 186]                                                                                                                                                      
---    0: 05 00 00 00 00 00 00 00 - 16 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---   16: 00 00 00 00 00 00 00 00 - 00 00 00 00 0D 00 00 00  | ................                                                                                                                                                            
---   32: FF FF FF FF 00 00 00 00 - 00 00 00 00 0B 00 00 00  | ................                                                                                                                                                            
---   48: FF FF FF FF 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   64: 0B 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   80: 15 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   96: 00 00 00 00 15 00 00 00 - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  112: 00 00 00 00 0D 00 00 00 - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  128: 00 00 00 00 00 00 00 00 - 16 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---  144: 00 00 00 00 00 00 00 00 - 0E 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  160: 00 00 00 00 00 00 00 00 - 00 00 00 00 1D 00 00 00  | ................                                                                                                                                                            
---  176: FF FF FF FF 00 00 00 00                            | ........


[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 186]                                                                                                                                                            
---    0: 05 00 00 00 00 00 00 00 - 16 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---   16: 00 00 00 00 00 00 00 00 - 00 00 00 00 0D 00 00 00  | ................                                                                                                                                                            
---   32: FF FF FF FF 00 00 00 00 - 00 00 00 00 1D 00 00 00  | ................                                                                                                                                                            
---   48: FF FF FF FF 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   64: 0E 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   80: 0B 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   96: 00 00 00 00 0B 00 00 00 - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  112: 00 00 00 00 15 00 00 00 - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  128: 00 00 00 00 00 00 00 00 - 15 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  144: 00 00 00 00 00 00 00 00 - 0D 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  160: 00 00 00 00 00 00 00 00 - 00 00 00 00 16 00 00 00  | ................                                                                                                                                                            
---  176: 01 00 00 00 00 00 00 00                            | ........

These are swapping a sword and board for a 2h then back. Each set is 36 bytes

Titanium with an ammo slot with a stack and one without

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 186]                                                                                                                                                          
---    0: 05 00 00 00 00 00 00 00 - 0D 00 00 00 FF FF FF FF  | ................                                                                                                                                                           
---   16: 00 00 00 00 00 00 00 00 - 00 00 00 00 0D 00 00 00  | ................                                                                                                                                                           
---   32: FF FF FF FF 00 00 00 00 - 00 00 00 00 0E 00 00 00  | ................                                                                                                                                                           
---   48: FF FF FF FF 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---   64: 0E 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---   80: 0B 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---   96: 00 00 00 00 0B 00 00 00 - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                           
---  112: 00 00 00 00 16 00 00 00 - 04 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---  128: 01 00 00 00 00 00 00 00 - 15 00 00 00 FF FF FF FF  | ................                                                                                                                                                           
---  144: 00 00 00 00 00 00 00 00 - 15 00 00 00 FF FF FF FF  | ................                                                                                                                                                           
---  160: 00 00 00 00 00 00 00 00 - 00 00 00 00 16 00 00 00  | ................                                                                                                                                                           
---  176: 01 00 00 00 00 00 00 00                            | ........                

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 186]                                                                                                                                                          
---    0: 05 00 00 00 00 00 00 00 - 0D 00 00 00 FF FF FF FF  | ................                                                                                                                                                           
---   16: 00 00 00 00 00 00 00 00 - 00 00 00 00 0D 00 00 00  | ................                                                                                                                                                           
---   32: FF FF FF FF 00 00 00 00 - 00 00 00 00 0E 00 00 00  | ................                                                                                                                                                           
---   48: FF FF FF FF 00 00 00 00 - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---   64: 0E 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---   80: 0B 00 00 00 FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---   96: 00 00 00 00 0B 00 00 00 - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                           
---  112: 00 00 00 00 16 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                           
---  128: 00 00 00 00 00 00 00 00 - 15 00 00 00 FF FF FF FF  | ................                                                                                                                                                           
---  144: 00 00 00 00 00 00 00 00 - 15 00 00 00 FF FF FF FF  | ................                                                                                                                                                           
---  160: 00 00 00 00 01 00 00 00 - 00 00 00 00 16 00 00 00  | ................                                                                                                                                                           
---  176: 04 00 00 00 00 00 00 00                            | ........

Titanium struct looks like:

struct MultiMoveItemSub_Struct
{
/*0000*/ uint32 from_type;
/*0004*/ uint32 from_slot;
/*0008*/ int32  from_sub_slot;
/*0012*/ uint32 unknown1;
/*0016*/ uint32 number_in_stack; // so the amount we are moving from the source
/*0020*/ uint32 to_type;
/*0024*/ uint32 to_slot;
/*0028*/ int32  to_sub_slot;
/*0032*/ uint32 unknown3;
};

struct MultiMoveItem_Struct
{
/*0000*/ uint32	count;
/*0004*/ MultiMoveItemSub_Struct moves[0];
};

SoF

First is 1h + shield to 2h, Second is back

Each one is 44 bytes

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 226]                                                                                                                                                           
---    0: 05 00 00 00 00 00 00 00 - 1E 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---   16: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   32: 0D 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---   48: 00 00 00 00 0B 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---   64: 00 00 00 00 01 00 00 00 - 00 00 00 00 0B 00 00 00  | ................                                                                                                                                                            
---   80: FF FF FF FF FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   96: 16 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  112: 01 00 00 00 00 00 00 00 - 16 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  128: FF FF FF FF 00 00 00 00 - 00 00 00 00 0D 00 00 00  | ................                                                                                                                                                            
---  144: FF FF FF FF FF FF FF FF - 00 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---  160: 00 00 00 00 17 00 00 00 - 01 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  176: 00 00 00 00 00 00 00 00 - 0E 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  192: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---  208: 1E 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 226]                                                                                                                                                           
---    0: 05 00 00 00 00 00 00 00 - 17 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---   16: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   32: 0D 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---   48: 00 00 00 00 1E 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---   64: 00 00 00 00 01 00 00 00 - 00 00 00 00 0E 00 00 00  | ................                                                                                                                                                            
---   80: FF FF FF FF FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   96: 0B 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  112: 01 00 00 00 00 00 00 00 - 0B 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  128: FF FF FF FF 00 00 00 00 - 00 00 00 00 16 00 00 00  | ................                                                                                                                                                            
---  144: FF FF FF FF FF FF FF FF - 00 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---  160: 00 00 00 00 16 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---  176: 00 00 00 00 00 00 00 00 - 0D 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  192: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---  208: 17 00 00 00 01 00 00 00 - FF FF FF FF 00 00 00 00  | ................

Now for ones with a stack involved, moving 1 from a bag to ammo slot then swapping back

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 226]                                                                                                                                                           
---    0: 05 00 00 00 00 00 00 00 - 0D 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---   16: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   32: 0D 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---   48: 00 00 00 00 0E 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---   64: 00 00 00 00 01 00 00 00 - 00 00 00 00 0E 00 00 00  | ................                                                                                                                                                            
---   80: FF FF FF FF FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   96: 0B 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  112: 01 00 00 00 00 00 00 00 - 0B 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  128: FF FF FF FF 00 00 00 00 - 00 00 00 00 17 00 00 00  | ................                                                                                                                                                            
---  144: 04 00 00 00 FF FF FF FF - 00 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---  160: 00 00 00 00 16 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---  176: 00 00 00 00 00 00 00 00 - 16 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  192: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---  208: 17 00 00 00 03 00 00 00 - FF FF FF FF 00 00 00 00  | ................

[Packet :: Client -> Server (Dump)] [OP_MoveMultipleItems - 0x0155] [Size: 226]                                                                                                                                                           
---    0: 05 00 00 00 00 00 00 00 - 0D 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---   16: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   32: 0D 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---   48: 00 00 00 00 0E 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---   64: 00 00 00 00 01 00 00 00 - 00 00 00 00 0E 00 00 00  | ................                                                                                                                                                            
---   80: FF FF FF FF FF FF FF FF - 00 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---   96: 0B 00 00 00 FF FF FF FF - FF FF FF FF 00 00 00 00  | ................                                                                                                                                                            
---  112: 01 00 00 00 00 00 00 00 - 0B 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  128: FF FF FF FF 00 00 00 00 - 00 00 00 00 17 00 00 00  | ................                                                                                                                                                            
---  144: 03 00 00 00 FF FF FF FF - 00 00 00 00 01 00 00 00  | ................                                                                                                                                                            
---  160: 00 00 00 00 16 00 00 00 - FF FF FF FF FF FF FF FF  | ................                                                                                                                                                            
---  176: 00 00 00 00 00 00 00 00 - 16 00 00 00 FF FF FF FF  | ................                                                                                                                                                            
---  192: FF FF FF FF 00 00 00 00 - 01 00 00 00 00 00 00 00  | ................                                                                                                                                                            
---  208: 17 00 00 00 04 00 00 00 - FF FF FF FF 00 00 00 00  | ................

SoF (until UF?) struct looks like:

struct MultiMoveItemSub_Struct
{
/*0000*/ uint32 from_type;
/*0004*/ uint32 from_slot;
/*0008*/ int32  from_sub_slot;
/*0012*/ int32  from_aug_slot;
/*0016*/ uint32 unknown1;
/*0020*/ uint32 number_in_stack; // so the amount we are moving from the source
/*0024*/ uint32 to_type;
/*0028*/ uint32 to_slot;
/*0032*/ int32  to_sub_slot;
/*0036*/ int32  to_aug_slot;
/*0040*/ uint32 unknown3;
};

struct MultiMoveItem_Struct
{
/*0000*/ uint32	count;
/*0004*/ MultiMoveItemSub_Struct moves[0];
};

RoF2

struct MultiMoveItemSub_Struct
{
/*0000*/ InventorySlot_Struct	from_slot;
/*0012*/ InventorySlot_Struct	to_slot;
/*0024*/ uint32			number_in_stack;
/*0028*/ uint8			unknown[8];
};

struct MultiMoveItem_Struct
{
/*0000*/ uint32	count;
/*0004*/ MultiMoveItemSub_Struct moves[0];
};

mackal avatar Nov 28 '17 19:11 mackal

https://github.com/EQEmu/Server/commit/b80dd8007ea42934e9c69fd653b5d147562f83c9

xackery avatar Dec 28 '21 17:12 xackery