本文整理汇总了C++中GameObject::GetGUIDHigh方法的典型用法代码示例。如果您正苦于以下问题:C++ GameObject::GetGUIDHigh方法的具体用法?C++ GameObject::GetGUIDHigh怎么用?C++ GameObject::GetGUIDHigh使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GameObject
的用法示例。
在下文中一共展示了GameObject::GetGUIDHigh方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SummonGameObject
static GameObject* SummonGameObject(Player* obj, uint32 entry, float x, float y, float z, float o, uint32 p, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime)
{
if (!obj->IsInWorld())
return NULL;
GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(entry);
if (!goinfo)
return NULL;
Map* map = obj->GetMap();
GameObject* go = new GameObject();
if (!go->Create(0, entry, map, p, x, y, z, o, rotation0, rotation1, rotation2, rotation3, 100, GO_STATE_READY))
{
delete go;
return NULL;
}
go->SetRespawnTime(respawnTime);
obj->AddGameObject(go);
map->AddToMap(go);
go->SetSpellId(go->GetGUIDHigh()); // small hack :3
GObjects.insert(go->GetGUIDHigh());
return go;
}
示例2: SpawnObject
static GameObject* SpawnObject(Player* player,float x,float y,float z,float o,uint32 p, bool move, uint32 eorg, bool isHex, bool message = false)
{
// eorg = !move && entry or move && GObjectID (entry or ID)
if (!player || !eorg)
return NULL;
float rot2 = std::sin(o/2);
float rot3 = std::cos(o/2);
GameObject* object = NULL;
if (move)
{
object = GetObjectByGObjectID(player, eorg, isHex);
if (!object)
return NULL;
GameObject* spawned = SummonGameObject(player, object->GetEntry(), x, y, z, o, p, 0, 0, rot2, rot3, 0);
DeleteObject(object/*, isHex ? eorg : 0*/);
if(!spawned)
return NULL;
// object->SetPhaseMask(p, true);
std::ostringstream ss;
if (!isHex)
ss << "GOMOVE|SWAP|" << eorg << "||" << "0x" << std::hex << spawned->GetGUIDHigh();
else
ss << "GOMOVE|SWAP|" << "0x" << std::hex << eorg << "||" << "0x" << std::hex << spawned->GetGUIDHigh();
SendAddonMessage(player, ss.str().c_str());
}
else
{
object = SummonGameObject(player, eorg, x, y, z, o, p, 0, 0, rot2, rot3, 0);
if(!object)
return NULL;
SendSelectionInfo(player, object->GetGUIDHigh(), true, true); // MUST be handled here. There are no good ways to get the GObjectID later.
}
return object;
}
示例3: GOMove_Command
static bool GOMove_Command(ChatHandler* handler, const char* args)
{
if (!args)
return false;
char* ID_t = strtok((char*)args, " ");
if (!ID_t)
return false;
uint32 ID = (uint32)atol(ID_t);
char* GObjectID_C = strtok(NULL, " ");
uint32 GObjectID = 0;
bool isHex = false;
if (GObjectID_C)
{
GObjectID = strtoul(GObjectID_C, NULL, 0); // can take in hex as well as dec
isHex = (std::string(GObjectID_C).find("0x") != std::string::npos);
}
char* ARG_t = strtok(NULL, " ");
uint32 ARG = 0;
if (ARG_t)
ARG = (uint32)atol(ARG_t);
WorldSession* session = handler->GetSession();
Player* player = session->GetPlayer();
uint64 playerGUID = player->GetGUID();
if (ID < SPAWN) // no args
{
if (ID >= DELET && ID <= GOTO) // has target (needs retrieve gameobject)
{
GameObject* target = GetObjectByGObjectID(player, GObjectID, isHex);
if (!target)
ChatHandler(player->GetSession()).PSendSysMessage("Object GUID: %u not found. Temp(%u)", GObjectID, isHex ? 1 : 0);
else
{
float x,y,z,o;
target->GetPosition(x,y,z,o);
uint32 p = target->GetPhaseMask();
switch(ID)
{
case DELET: DeleteObject(target/*, isHex ? GObjectID : 0*/); SendSelectionInfo(player, GObjectID, isHex, false); break;
case X: SpawnObject(player,player->GetPositionX(),y,z,o,p,true,GObjectID, isHex); break;
case Y: SpawnObject(player,x,player->GetPositionY(),z,o,p,true,GObjectID, isHex); break;
case Z: SpawnObject(player,x,y,player->GetPositionZ(),o,p,true,GObjectID, isHex); break;
case O: SpawnObject(player,x,y,z,player->GetOrientation(),p,true,GObjectID, isHex); break;
case GOTO: player->TeleportTo(target->GetMapId(), x,y,z,o); break;
case RESPAWN: SpawnObject(player,x,y,z,o,p,false,target->GetEntry(), isHex); break;
case GROUND:
{
float ground = target->GetMap()->GetHeight(target->GetPhaseMask(), x, y, MAX_HEIGHT);
if(ground != INVALID_HEIGHT)
SpawnObject(player,x,y,ground,o,p,true,GObjectID, isHex);
} break;
}
}
}
else
{
switch(ID)
{
case TEST: session->SendAreaTriggerMessage(player->GetName().c_str()); break;
case FACE: { float piper2 = M_PI/2; float multi = player->GetOrientation()/piper2; float multi_int = floor(multi); float new_ori = (multi-multi_int > 0.5f) ? (multi_int+1)*piper2 : multi_int*piper2; player->SetFacingTo(new_ori); } break;
case SAVE: SaveObject(player, GObjectID, isHex); break;
case SELECTNEAR:
{
GameObject* object = handler->GetNearbyGameObject();
object = GetClosestGObjectID(player, object);
if (!object)
ChatHandler(player->GetSession()).PSendSysMessage("No objects found");
else
{
bool isHex = (object->GetGUIDHigh() != HIGHGUID_GAMEOBJECT);
SendSelectionInfo(player, isHex ? object->GetGUIDHigh() : object->GetDBTableGUIDLow() ? object->GetDBTableGUIDLow() : object->GetGUIDLow(), isHex, true);
session->SendAreaTriggerMessage("Selected %s", object->GetName().c_str());
}
} break;
}
}
}
else if (ARG && ID >= SPAWN)
{
if (ID >= NORTH && ID <= PHASE)
{
GameObject* target = GetObjectByGObjectID(player, GObjectID, isHex);
if (!target)
ChatHandler(player->GetSession()).PSendSysMessage("Object GUID: %u not found. Temporary: %s", GObjectID, isHex ? "true" : "false");
else
{
float x,y,z,o;
target->GetPosition(x,y,z,o);
uint32 p = target->GetPhaseMask();
switch(ID)
{
case NORTH: SpawnObject(player,x+((float)ARG/100),y,z,o,p,true,GObjectID, isHex); break;
case EAST: SpawnObject(player,x,y-((float)ARG/100),z,o,p,true,GObjectID, isHex); break;
case SOUTH: SpawnObject(player,x-((float)ARG/100),y,z,o,p,true,GObjectID, isHex); break;
case WEST: SpawnObject(player,x,y+((float)ARG/100),z,o,p,true,GObjectID, isHex); break;
case NORTHEAST: SpawnObject(player,x+((float)ARG/100),y-((float)ARG/100),z,o,p,true,GObjectID, isHex); break;
//.........这里部分代码省略.........