Scripts/Commands: New utility command: .list spawnpoints.
Port From (https://github.com/TrinityCore/TrinityCore/commit/703910d71baa3182c956494465cdd335f5de1d3d)
This commit is contained in:
@@ -761,17 +761,17 @@ namespace Framework.Constants
|
||||
CommandReloadConversationTemplate = 853,
|
||||
CommandDebugConversation = 854,
|
||||
CommandDebugPlayMusic = 855,
|
||||
CommandNpcSpawngroup = 856, // Reserved For DynamicSpawning
|
||||
CommandNpcDespawngroup = 857, // Reserved For DynamicSpawning
|
||||
CommandGobjectSpawngroup = 858, // Reserved For DynamicSpawning
|
||||
CommandGobjectDespawngroup = 859, // Reserved For DynamicSpawning
|
||||
CommandListRespawns = 860, // Reserved For DynamicSpawning
|
||||
CommandNpcSpawngroup = 856,
|
||||
CommandNpcDespawngroup = 857,
|
||||
CommandGobjectSpawngroup = 858,
|
||||
CommandGobjectDespawngroup = 859,
|
||||
CommandListRespawns = 860,
|
||||
CommandGroupSet = 861,
|
||||
CommandGroupAssistant = 862,
|
||||
CommandGroupMaintank = 863,
|
||||
CommandGroupMainassist = 864,
|
||||
CommandNpcShowloot = 865,
|
||||
CommandListSpawnpoints = 866, // Reserved
|
||||
CommandListSpawnpoints = 866,
|
||||
CommandReloadQuestGreetingLocale = 867, // Reserved
|
||||
CommandModifyPower = 868,
|
||||
CommandDebugSendPlayerChoice = 869,
|
||||
|
||||
@@ -570,15 +570,8 @@ namespace Game.Chat.Commands
|
||||
[Command("respawns", RBACPermissions.CommandListRespawns)]
|
||||
static bool HandleListRespawnsCommand(StringArguments args, CommandHandler handler)
|
||||
{
|
||||
// We need a player
|
||||
Player player = handler.GetSession().GetPlayer();
|
||||
if (player == null)
|
||||
return false;
|
||||
|
||||
// And we need a map
|
||||
Map map = player.GetMap();
|
||||
if (map == null)
|
||||
return false;
|
||||
|
||||
uint range = 0;
|
||||
if (!args.Empty())
|
||||
@@ -661,6 +654,44 @@ namespace Game.Chat.Commands
|
||||
return true;
|
||||
}
|
||||
|
||||
[Command("spawnpoints", RBACPermissions.CommandListSpawnpoints)]
|
||||
static bool HandleListSpawnPointsCommand(StringArguments args, CommandHandler handler)
|
||||
{
|
||||
Player player = handler.GetSession().GetPlayer();
|
||||
Map map = player.GetMap();
|
||||
uint mapId = map.GetId();
|
||||
bool showAll = map.IsBattlegroundOrArena() || map.IsDungeon();
|
||||
handler.SendSysMessage("Listing all spawn points in map %u (%s)%s:", mapId, map.GetMapName(), showAll ? "" : " within 5000yd");
|
||||
|
||||
foreach (var pair in Global.ObjectMgr.GetAllCreatureData())
|
||||
{
|
||||
SpawnData data = pair.Value;
|
||||
if (data.spawnPoint.GetMapId() != mapId)
|
||||
continue;
|
||||
|
||||
CreatureTemplate cTemp = Global.ObjectMgr.GetCreatureTemplate(data.Id);
|
||||
if (cTemp == null)
|
||||
continue;
|
||||
|
||||
if (showAll || data.spawnPoint.IsInDist2d(player, 5000.0f))
|
||||
handler.SendSysMessage($"Type: {data.type} | SpawnId: {data.spawnId} | Entry: {data.Id} ({cTemp.Name}) | X: {data.spawnPoint.GetPositionX():3} | Y: {data.spawnPoint.GetPositionY():3} | Z: {data.spawnPoint.GetPositionZ():3}");
|
||||
}
|
||||
foreach (var pair in Global.ObjectMgr.GetAllGameObjectData())
|
||||
{
|
||||
SpawnData data = pair.Value;
|
||||
if (data.spawnPoint.GetMapId() != mapId)
|
||||
continue;
|
||||
|
||||
GameObjectTemplate goTemp = Global.ObjectMgr.GetGameObjectTemplate(data.Id);
|
||||
if (goTemp == null)
|
||||
continue;
|
||||
|
||||
if (showAll || data.spawnPoint.IsInDist2d(player, 5000.0f))
|
||||
handler.SendSysMessage($"Type: {data.type} | SpawnId: {data.spawnId} | Entry: {data.Id} ({goTemp.name}) | X: {data.spawnPoint.GetPositionX():3} | Y: {data.spawnPoint.GetPositionY():3} | Z: {data.spawnPoint.GetPositionZ():3}");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static string GetZoneName(uint zoneId, Locale locale)
|
||||
{
|
||||
AreaTableRecord zoneEntry = CliDB.AreaTableStorage.LookupByKey(zoneId);
|
||||
|
||||
@@ -3538,6 +3538,7 @@ namespace Game
|
||||
{
|
||||
return _creatureTemplateStorage;
|
||||
}
|
||||
public Dictionary<ulong, CreatureData> GetAllCreatureData() { return creatureDataStorage; }
|
||||
public CreatureData GetCreatureData(ulong guid)
|
||||
{
|
||||
return creatureDataStorage.LookupByKey(guid);
|
||||
@@ -4381,6 +4382,7 @@ namespace Game
|
||||
return _gameObjectQuestItemStorage.LookupByKey(id);
|
||||
}
|
||||
MultiMap<uint, uint> GetGameObjectQuestItemMap() { return _gameObjectQuestItemStorage; }
|
||||
public Dictionary<ulong, GameObjectData> GetAllGameObjectData() { return gameObjectDataStorage; }
|
||||
public GameObjectData GetGameObjectData(ulong guid)
|
||||
{
|
||||
return gameObjectDataStorage.LookupByKey(guid);
|
||||
|
||||
@@ -1181,6 +1181,7 @@ INSERT INTO `rbac_linked_permissions` VALUES
|
||||
(196,840),
|
||||
(196,842),
|
||||
(196,843),
|
||||
(196,866),
|
||||
(196,869),
|
||||
(196,872),
|
||||
(197,232),
|
||||
@@ -2107,6 +2108,7 @@ INSERT INTO `rbac_permissions` VALUES
|
||||
(859,'Command: gobject despawngroup'),
|
||||
(860,'Command: list respawns'),
|
||||
(865,'Command: npc showloot'),
|
||||
(866,'Command: list spawnpoints'),
|
||||
(868,'Command: modify power'),
|
||||
(869,'Command: debug send playerchoice'),
|
||||
(872,'Command: server debug');
|
||||
@@ -2309,6 +2311,7 @@ INSERT INTO `updates` VALUES
|
||||
('2017_06_25_00_auth.sql','A2DA6A64D4217992EF766915DEBD517DB0834E01','ARCHIVED','2017-06-25 00:54:10',0),
|
||||
('2017_06_28_00_auth_master.sql','6E58300D4D4DAAEE89107ECB3CB7DA8529DA738F','ARCHIVED','2017-06-28 19:11:09',0),
|
||||
('2017_06_28_00_auth_rbac.sql','D32EF80F57F629C23395D80F06E91D7E40719F83','ARCHIVED','2017-06-28 00:00:00',0),
|
||||
('2017_08_01_00_auth.sql','6ECE808AF52345177189E962C0606B769B6806A6','ARCHIVED','2017-08-01 00:00:00',0),
|
||||
('2017_06_30_00_auth.sql','C73BD277D211DBE1BB86BB1B443CA8F292D8ADEE','ARCHIVED','2017-06-30 16:18:51',0),
|
||||
('2017_08_04_00_auth.sql','2E994A704C64FECE3CE0883ED0CAC5E5A0E3A36C','ARCHIVED','2017-08-04 23:46:32',0),
|
||||
('2017_08_13_00_auth_2016_09_22_00_auth.sql','70047954E3556BFA430ADD5680EF8797F74A4B9E','ARCHIVED','2017-08-13 12:00:00',0),
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
--
|
||||
DELETE FROM `rbac_permissions` WHERE `id`=866;
|
||||
INSERT INTO `rbac_permissions` (`id`,`name`) VALUES
|
||||
(866, 'Command: list spawnpoints');
|
||||
|
||||
DELETE FROM `rbac_linked_permissions` WHERE `linkedId`=866;
|
||||
INSERT INTO `rbac_linked_permissions` (`id`,`linkedId`) VALUES
|
||||
(196,866);
|
||||
@@ -0,0 +1,6 @@
|
||||
--
|
||||
DELETE FROM `command` WHERE `name`="list spawnpoints";
|
||||
INSERT INTO `command` (`name`,`permission`,`help`) VALUES
|
||||
('list spawnpoints', 866, 'Syntax: .list spawnpoints
|
||||
|
||||
Lists all spawn points (both creatures and GOs) in the current zone.');
|
||||
Reference in New Issue
Block a user