diff options
Diffstat (limited to 'src/game/ItemHandler.cpp')
-rw-r--r-- | src/game/ItemHandler.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index 1c34a1a58a3..62efe7dd234 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -49,6 +49,18 @@ void WorldSession::HandleSplitItemOpcode( WorldPacket & recv_data ) if (count==0) return; //check count - if zero it's fake packet + if(!_player->IsValidPos(srcbag,srcslot)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL ); + return; + } + + if(!_player->IsValidPos(dstbag,dstslot)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL ); + return; + } + _player->SplitItem( src, dst, count ); } @@ -66,6 +78,18 @@ void WorldSession::HandleSwapInvItemOpcode( WorldPacket & recv_data ) if(srcslot==dstslot) return; + if(!_player->IsValidPos(INVENTORY_SLOT_BAG_0,srcslot)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL ); + return; + } + + if(!_player->IsValidPos(INVENTORY_SLOT_BAG_0,dstslot)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL ); + return; + } + uint16 src = ( (INVENTORY_SLOT_BAG_0 << 8) | srcslot ); uint16 dst = ( (INVENTORY_SLOT_BAG_0 << 8) | dstslot ); @@ -109,6 +133,18 @@ void WorldSession::HandleSwapItem( WorldPacket & recv_data ) if(src==dst) return; + if(!_player->IsValidPos(srcbag,srcslot)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL ); + return; + } + + if(!_player->IsValidPos(dstbag,dstslot)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL ); + return; + } + _player->SwapItem( src, dst ); } @@ -746,6 +782,12 @@ void WorldSession::HandleAutoStoreBagItemOpcode( WorldPacket & recv_data ) if( !pItem ) return; + if(!_player->IsValidPos(dstbag,NULL_SLOT)) + { + _player->SendEquipError( EQUIP_ERR_ITEM_DOESNT_GO_TO_SLOT, NULL, NULL ); + return; + } + uint16 src = pItem->GetPos(); // check unequip potability for equipped items and bank bags |