bool ChatHandler::HandleGameObjectCommand(const char* args) { if (!*args) return false; char* pParam1 = strtok((char*)args, " "); uint32 id = atoi((char*)pParam1); if(!id) return false; char* spawntimeSecs = strtok(NULL, " "); const GameObjectInfo *goI = objmgr.GetGameObjectInfo(id); if (!goI) { PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST,id); return false; } Player *chr = m_session->GetPlayer(); float x = float(chr->GetPositionX()); float y = float(chr->GetPositionY()); float z = float(chr->GetPositionZ()); float o = float(chr->GetOrientation()); float rot2 = sin(o/2); float rot3 = cos(o/2); GameObject* pGameObj = new GameObject(NULL); uint32 lowGUID = objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT); if(!pGameObj->Create(lowGUID, goI->id, chr->GetMapId(), x, y, z, o, 0, 0, rot2, rot3, 0, 1)) { delete pGameObj; return false; } //pGameObj->SetZoneId(chr->GetZoneId()); pGameObj->SetMapId(chr->GetMapId()); //pGameObj->SetNameId(id); sLog.outDebug(GetMangosString(LANG_GAMEOBJECT_CURRENT), goI->name, lowGUID, x, y, z, o); if( spawntimeSecs ) { uint32 value = atoi((char*)spawntimeSecs); pGameObj->SetRespawnTime(value); //sLog.outDebug("*** spawntimeSecs: %d", value); } pGameObj->SaveToDB(); MapManager::Instance().GetMap(pGameObj->GetMapId(), pGameObj)->Add(pGameObj); GameObjectData const* data = objmgr.GetGOData(lowGUID); if (data) { objmgr.AddGameobjectToGrid(lowGUID, data); } PSendSysMessage(LANG_GAMEOBJECT_ADD,id,goI->name,lowGUID,x,y,z); return true; }