In the client.cpp around line 4100
Code:
bool Client::SwapItem(MoveItem_Struct* move_in) {
if (move_in->from_slot == move_in->to_slot)
return true; // Item summon, no further proccessing needed
if (move_in->to_slot == (uint32)SLOT_INVALID) {
DeleteItemInInventory(move_in->from_slot);
return true; // Item deletetion
}
if(auto_attack && (move_in->from_slot == SLOT_PRIMARY || move_in->from_slot == SLOT_SECONDARY))
SetAttackTimer();
else if(auto_attack && (move_in->to_slot == SLOT_PRIMARY || move_in->to_slot == SLOT_SECONDARY))
SetAttackTimer();
// Step 1: Variables
sint16 src_slot_id = (sint16)move_in->from_slot;
sint16 dst_slot_id = (sint16)move_in->to_slot;
Right after this we added:
Code:
if (src_slot_id == 2500 || dst_slot_id == 2500 || src_slot_id == 2501 || dst_slot_id == 2501)
{
m_inv.DeleteItem(2500);
m_inv.DeleteItem(2501);
database.GetSharedBank(AccountID(),&m_inv,false);
}
Not sure if this applies to other versions of the source or not.. but a similar fix may work on your server. It updates the shared bank each time its accessed.
If it doesn't help you or your source is different please dont flame. This is merely a fix intended to help those that have old source versions of the server and have problems with shared bank duping.
Thanks.
GM Crisco
http://magic.squeaker.us
#squeaker