Initial MSVC 2008 projects workspace
This commit is contained in:
51
l2ooghelper/packet_handlers/ph_DeleteObject.cpp
Normal file
51
l2ooghelper/packet_handlers/ph_DeleteObject.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include "stdafx.h"
|
||||
#include "Logger.h"
|
||||
#include "L2Client.h"
|
||||
|
||||
/**
|
||||
writeC(0x08);
|
||||
writeD(_objectId);
|
||||
writeD(0x00); //c2 */
|
||||
void L2Client::ph_DeleteObject( class L2Client *pcls, L2GamePacket *p )
|
||||
{
|
||||
unsigned int objectID;
|
||||
p->getPacketType();
|
||||
objectID = p->readUInt();
|
||||
if( objectID == 0 ) return; // O_o WTF
|
||||
// delete object from world object tree and from corresponding array
|
||||
// first try to find object in world tree
|
||||
WorldObjectTreeNode wotNode;
|
||||
if( pcls->world_tree.GetInfoByObjectID( objectID, &wotNode ) )
|
||||
{
|
||||
// delete from world tree
|
||||
pcls->world_tree.DelObject( objectID );
|
||||
// delete from specified array/list
|
||||
switch( wotNode.getObjectType() )
|
||||
{
|
||||
case L2OT_PC:
|
||||
{
|
||||
pcls->world_chars.DeleteCharByArrayIdx( wotNode.getArrayIdx() );
|
||||
pcls->postUpdateUI( UPDATE_MAP_PLAYERS );
|
||||
} break;
|
||||
case L2OT_NPC:
|
||||
{
|
||||
int isAttackable = 0;
|
||||
L2Npc *deletingNpc = wotNode.cast_L2Npc();
|
||||
if( deletingNpc ) isAttackable = deletingNpc->isAttackable;
|
||||
pcls->world_npcs.DelNPCByArrayIdx( wotNode.getArrayIdx() );
|
||||
if( isAttackable ) pcls->postUpdateUI( UPDATE_MAP_MOBS );
|
||||
else pcls->postUpdateUI( UPDATE_MAP_NPCS );
|
||||
} break;
|
||||
case L2OT_ITEM:
|
||||
{
|
||||
int del_idx = wotNode.getArrayIdx();
|
||||
//log_error( LOG_USERAI, "DeleteObject: delete item [%s] idx %d!\n",
|
||||
// pcls->world_ground_items.gi_array[del_idx]->itemName, del_idx );
|
||||
pcls->world_ground_items.DelGIByArrayIdx( del_idx );
|
||||
pcls->postUpdateUI( UPDATE_MAP_ITEMS );
|
||||
} break;
|
||||
default: log_error( LOG_ERROR, "DeleteObject: unknown objectType for oid %u\n", objectID ); break;
|
||||
}
|
||||
}
|
||||
else log_error( LOG_ERROR, "WOT cannot find OID %u while DeleteObject\n", objectID );
|
||||
}
|
Reference in New Issue
Block a user