l2-unlegits/l2ooghelper/packet_handlers/ph_MoveToLocation.cpp
2012-02-01 05:25:08 +00:00

52 lines
1.3 KiB
C++

#include "stdafx.h"
#include "Logger.h"
#include "L2Client.h"
/**
writeC(0x2f);
writeD(_charObjId);
writeD(_xDst);
writeD(_yDst);
writeD(_zDst);
writeD(_x);
writeD(_y);
writeD(_z); **/
void L2Client::ph_MoveToLocation( class L2Client *pcls, L2GamePacket *p )
{
p->getPacketType();
unsigned int objectID = p->readUInt();
int xDst = p->readInt();
int yDst = p->readInt();
int zDst = p->readInt();
int x = p->readInt();
int y = p->readInt();
int z = p->readInt();
//
if( objectID == pcls->usr.objectID )
{
pcls->usr.startMoveTo( xDst, yDst, zDst, x, y, z );
}
else
{
WorldObjectTreeNode wotNode;
if( pcls->world_tree.GetInfoByObjectID( objectID, &wotNode ) )
{
int idx = wotNode.getArrayIdx();
switch( wotNode.getObjectType() )
{
case L2OT_PC: pcls->world_chars.chars_array[idx]->startMoveTo( xDst, yDst, zDst, x, y, z ); break;
case L2OT_NPC:
{
//log_error( LOG_OK, "MoveToLocation NPC %S\n", pcls->world_npcs.npcs_array[idx]->charName );
pcls->world_npcs.npcs_array[idx]->startMoveTo( xDst, yDst, zDst, x, y, z );
} break;
}
}
else
{
log_error( LOG_ERROR, "WOT cannot find objectID while MoveToLocation\n" );
pcls->addChatToTab( CHAT_DMG, L"WARN: possible invisible GM nearby!" );
}
}
}