PDA

View Full Version : 5.7DR6 shared bank dupe fix (may work on others)


Firedancer
11-14-2005, 11:20 AM
In the client.cpp around line 4100
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:
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