diff options
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_go.cpp | 34 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_list.cpp | 30 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 2 |
3 files changed, 35 insertions, 31 deletions
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 9122099ff92..171185428cb 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -79,13 +79,15 @@ public: return commandTable; } - static bool DoTeleport(ChatHandler* handler, WorldLocation loc) + static bool DoTeleport(ChatHandler* handler, Position pos, uint32 mapId = MAPID_INVALID) { Player* player = handler->GetSession()->GetPlayer(); - if (!MapManager::IsValidMapCoord(loc) || sObjectMgr->IsTransportMap(loc.GetMapId())) + if (mapId == MAPID_INVALID) + mapId = player->GetMapId(); + if (!MapManager::IsValidMapCoord(mapId, pos) || sObjectMgr->IsTransportMap(mapId)) { - handler->PSendSysMessage(LANG_INVALID_TARGET_COORD, loc.GetPositionX(), loc.GetPositionY(), loc.GetMapId()); + handler->PSendSysMessage(LANG_INVALID_TARGET_COORD, pos.GetPositionX(), pos.GetPositionY(), mapId); handler->SetSentErrorMessage(true); return false; } @@ -96,7 +98,7 @@ public: else player->SaveRecallPosition(); // save only in non-flight case - player->TeleportTo(loc); + player->TeleportTo({ mapId, pos }); return true; } @@ -110,7 +112,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoCreatureCIdCommand(ChatHandler* handler, Variant<Hyperlink<creature_entry>, uint32> cId) @@ -137,7 +139,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoGameObjectSpawnIdCommand(ChatHandler* handler, uint32 spawnId) @@ -150,7 +152,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoGameObjectGOIdCommand(ChatHandler* handler, uint32 goId) @@ -177,7 +179,7 @@ public: return false; } - return DoTeleport(handler, spawnpoint->spawnPoint); + return DoTeleport(handler, spawnpoint->spawnPoint, spawnpoint->mapId); } static bool HandleGoGraveyardCommand(ChatHandler* handler, uint32 gyId) @@ -247,7 +249,7 @@ public: handler->SetSentErrorMessage(true); return false; } - return DoTeleport(handler, { node->map_id, { node->x, node->y, node->z } }); + return DoTeleport(handler, { node->x, node->y, node->z }, node->map_id); } static bool HandleGoAreaTriggerCommand(ChatHandler* handler, Variant<Hyperlink<areatrigger>, uint32> areaTriggerId) @@ -259,7 +261,7 @@ public: handler->SetSentErrorMessage(true); return false; } - return DoTeleport(handler, { at->mapid, { at->x, at->y, at->z } }); + return DoTeleport(handler, { at->x, at->y, at->z }, at->mapid); } //teleport at coordinates @@ -357,7 +359,7 @@ public: z = std::max(map->GetHeight(x, y, MAX_HEIGHT), map->GetWaterLevel(x, y)); } - return DoTeleport(handler, { mapId, { x, y, *z, o.get_value_or(0.0f) } }); + return DoTeleport(handler, { x, y, *z, o.get_value_or(0.0f) }, mapId); } static bool HandleGoTicketCommand(ChatHandler* handler, uint32 ticketId) @@ -383,7 +385,7 @@ public: static bool HandleGoOffsetCommand(ChatHandler* handler, float dX, Optional<float> dY, Optional<float> dZ, Optional<float> dO) { - WorldLocation loc = handler->GetSession()->GetPlayer()->GetWorldLocation(); + Position loc = handler->GetSession()->GetPlayer()->GetPosition(); loc.RelocateOffset({ dX, dY.get_value_or(0.0f), dZ.get_value_or(0.0f), dO.get_value_or(0.0f) }); return DoTeleport(handler, loc); @@ -548,9 +550,9 @@ public: handler->PSendSysMessage(LANG_COMMAND_BOSS_MULTIPLE_SPAWNS, boss->Name.c_str(), boss->Entry); for (CreatureData const* spawn : spawns) { - uint32 const mapId = spawn->spawnPoint.GetMapId(); + uint32 const mapId = spawn->mapId; MapEntry const* const map = ASSERT_NOTNULL(sMapStore.LookupEntry(mapId)); - handler->PSendSysMessage(LANG_COMMAND_BOSS_MULTIPLE_SPAWN_ETY, spawn->spawnId, mapId, map->name[handler->GetSessionDbcLocale()], spawn->spawnPoint.GetPosition().ToString().c_str()); + handler->PSendSysMessage(LANG_COMMAND_BOSS_MULTIPLE_SPAWN_ETY, spawn->spawnId, mapId, map->name[handler->GetSessionDbcLocale()], spawn->spawnPoint.ToString().c_str()); } handler->SetSentErrorMessage(true); return false; @@ -563,8 +565,8 @@ public: player->SaveRecallPosition(); CreatureData const* const spawn = spawns.front(); - uint32 const mapId = spawn->spawnPoint.GetMapId(); - if (!player->TeleportTo(spawn->spawnPoint)) + uint32 const mapId = spawn->mapId; + if (!player->TeleportTo({ mapId, spawn->spawnPoint })) { char const* const mapName = ASSERT_NOTNULL(sMapStore.LookupEntry(mapId))->name[handler->GetSessionDbcLocale()]; handler->PSendSysMessage(LANG_COMMAND_GO_BOSS_FAILED, spawn->spawnId, boss->Name.c_str(), boss->Entry, mapName); diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index e264e7153c3..430a496b418 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -656,7 +656,7 @@ public: for (auto const& pair : sObjectMgr->GetAllCreatureData()) { SpawnData const& data = pair.second; - if (data.spawnPoint.GetMapId() != mapId) + if (data.mapId != mapId) continue; CreatureTemplate const* cTemp = sObjectMgr->GetCreatureTemplate(data.id); if (!cTemp) @@ -667,7 +667,7 @@ public: for (auto const& pair : sObjectMgr->GetAllGameObjectData()) { SpawnData const& data = pair.second; - if (data.spawnPoint.GetMapId() != mapId) + if (data.mapId != mapId) continue; GameObjectTemplate const* goTemp = sObjectMgr->GetGameObjectTemplate(data.id); if (!goTemp) @@ -709,25 +709,27 @@ public: map->GetRespawnInfo(respawns, SpawnObjectTypeMask(1 << type)); for (RespawnInfo const* ri : respawns) { - SpawnData const* data = sObjectMgr->GetSpawnData(ri->type, ri->spawnId); + SpawnMetadata const* data = sObjectMgr->GetSpawnMetadata(ri->type, ri->spawnId); if (!data) continue; - uint32 respawnZoneId = map->GetZoneId(data->spawnPoint); - if (range) + uint32 respawnZoneId = 0; + if (SpawnData const* edata = data->ToSpawnData()) { - if (!player->IsInDist(data->spawnPoint, range)) - continue; - } - else - { - if (zoneId != respawnZoneId) - continue; + respawnZoneId = map->GetZoneId(edata->spawnPoint); + if (range) + { + if (!player->IsInDist(edata->spawnPoint, range)) + continue; + } + else + { + if (zoneId != respawnZoneId) + continue; + } } - uint32 gridY = ri->gridId / MAX_NUMBER_OF_GRIDS; uint32 gridX = ri->gridId % MAX_NUMBER_OF_GRIDS; - std::string respawnTime = ri->respawnTime > GameTime::GetGameTime() ? secsToTimeString(uint64(ri->respawnTime - GameTime::GetGameTime()), true) : stringOverdue; handler->PSendSysMessage("%u | %u | [%02u,%02u] | %s (%u) | %s%s", ri->spawnId, ri->entry, gridX, gridY, GetZoneName(respawnZoneId, locale), respawnZoneId, respawnTime.c_str(), map->IsSpawnGroupActive(data->spawnGroupData->groupId) ? "" : " (inactive)"); } diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 358be467e39..f60a0225b97 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -763,7 +763,7 @@ public: return false; } - if (player->GetMapId() != data->spawnPoint.GetMapId()) + if (player->GetMapId() != data->mapId) { handler->PSendSysMessage(LANG_COMMAND_CREATUREATSAMEMAP, lowguid); handler->SetSentErrorMessage(true); |
