Cand sterg un item din inventarul unui player, acesta se sterge doar daca userul este in joc, daca este offline nu il pot sterge!
Trebuie sa fie o treaba de game->database / cache.
Cum pot sterge un item din invetarul playerului cand acesta este offline?
Tipologie server:
*Resursă folosită:
*ServerFiles utilizat:
mainline_released
*Syserr:
Poză:
*Detalii suplimentare:
Las aici sursa unde sterg itemul, sunt mai multe linii comentate, acelea sunt felurile in care am incercat...
Cod: Selectaţi tot
LPITEM item = ITEM_MANAGER::instance().Find(item_id);
if (item != NULL) {
// LPCHARACTER pOwner = item->GetOwner();
// pOwner->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
// // remove from inventory
// if (item->GetOwner() && CHARACTER_MANAGER::instance().Find(item->GetOwner()->GetPlayerID()) != NULL) {
// item->RemoveFromCharacter();
// }
item->SetSkipSave(false);
item->RemoveFromCharacter();
item->SetOwnership(NULL, 0);
ITEM_MANAGER::instance().RemoveItem(item, "PURGE");
ITEM_MANAGER::instance().DestroyItem(item);
ITEM_MANAGER::instance().FlushDelayedSave(item);
////////////////////
// remove from db //
////////////////////
// DWORD dwID = item->GetID();
// DWORD dwOwnerID = item->GetLastOwnerPID();
// db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_DESTROY, 0, sizeof(DWORD) + sizeof(DWORD));
// db_clientdesc->Packet(&dwID, sizeof(DWORD));
// db_clientdesc->Packet(&dwOwnerID, sizeof(DWORD));
////////////////////////
// send the db packet //
////////////////////////
// db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_FLUSH, 0, sizeof(DWORD));
// db_clientdesc->Packet(&item_id, sizeof(DWORD));
}


