IMPL_PACKET_FUNC(ClientGameLogic, PKT_S2C_DestroyNetObject)
{
GameObject* obj = GameWorld().GetNetworkObject(n.spawnID);
r3d_assert(obj);
if (obj)
{
if(obj->isObjType(OBJTYPE_Human))
{
obj_Player* plr = (obj_Player*)obj;
char plrUserName[64]; plr->GetUserName(plrUserName);
if (localPlayer_->CurLoadout.GroupID == plr->CurLoadout.GroupID && plr->CurLoadout.GroupID != 0)
{
hudMain->showMessage(L"Player in group left");
hudMain->removeplayerfromgroup(plrUserName,false);
}
if (r_voip->GetBool() && r_voipShowBall->GetBool()) //!! check only voip is turn on !!
if (plr->CurLoadout.isVoipShow) hudMain->removeVoip(plrUserName,plrUserName); // if player talking when destroy voip balloon will freeze we will remove this !!
int playerIdx = obj->GetNetworkID() - NETID_PLAYERS_START;
SetPlayerPtr(playerIdx, NULL);
}
obj->setActiveFlag(0);
GameWorld().DeleteObject(obj);
//@TODO: do something when local player was dropped
if(obj == localPlayer_)
{
r3dOutToLog("local player dropped by server\n");
}
//if (obj->Class->Name == "obj_Building")
// GameWorld().DeleteObject(obj);
}
return;
}