Scripts/Commands: New utility command: .list spawnpoints.

Port From (https://github.com/TrinityCore/TrinityCore/commit/703910d71baa3182c956494465cdd335f5de1d3d)
This commit is contained in:
hondacrx
2020-08-23 22:02:52 -04:00
parent 1fb15f31c7
commit 5bc078060f
6 changed files with 63 additions and 13 deletions
+6 -6
View File
@@ -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,
+38 -7
View File
@@ -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);
+2
View File
@@ -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);
+3
View File
@@ -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.');