Scritpts/Commands: Fix area name display if no area present. Closes #21727.

This commit is contained in:
Treeston
2018-08-16 12:43:36 +02:00
parent 8711c539e1
commit 2a50f9202b
3 changed files with 21 additions and 8 deletions

View File

@@ -0,0 +1,5 @@
--
DELETE FROM `trinity_string` WHERE `entry` IN (848,882);
INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
(848,'│ Map: %s, Zone: %s'),
(882,'│ Map: %s, Zone: %s, Area: %s');

View File

@@ -765,6 +765,7 @@ enum TrinityStrings
LANG_PINFO_CHR_PLAYEDTIME = 853,
LANG_PINFO_CHR_MAILS = 854,
LANG_PINFO_CHR_LEVEL_HIGH = 871,
LANG_PINFO_CHR_MAP_WITH_AREA = 882,
LANG_CHARACTER_GENDER_MALE = 855,
LANG_CHARACTER_GENDER_FEMALE = 856,
@@ -794,7 +795,8 @@ enum TrinityStrings
// = 879, see LANG_PINFO_CHR_REGMAILS
LANG_ACCOUNT_SEC_TYPE = 880,
LANG_RBAC_EMAIL_REQUIRED = 881,
// Room for in-game strings 882-999 not used
// = 882, LANG_PINFO_CHR_MAP_WITH_AREA
// Room for in-game strings 883-999 not used
// Level 4 (CLI only commands)
LANG_COMMAND_EXIT = 1000,

View File

@@ -1601,8 +1601,8 @@ public:
uint32 mapId;
uint32 areaId;
uint32 phase = 0;
std::string areaName = handler->GetTrinityString(LANG_UNKNOWN);
std::string zoneName = handler->GetTrinityString(LANG_UNKNOWN);
char const* areaName = nullptr;
char const* zoneName = nullptr;
// Guild data print variables defined so that they exist, but are not necessarily used
uint32 guildId = 0;
@@ -1827,17 +1827,23 @@ public:
AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId);
if (area)
{
areaName = area->area_name[locale];
zoneName = area->area_name[locale];
AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->zone);
if (zone)
{
areaName = zoneName;
zoneName = zone->area_name[locale];
}
}
if (target)
handler->PSendSysMessage(LANG_PINFO_CHR_MAP, map->name[locale],
(!zoneName.empty() ? zoneName.c_str() : handler->GetTrinityString(LANG_UNKNOWN)),
(!areaName.empty() ? areaName.c_str() : handler->GetTrinityString(LANG_UNKNOWN)));
if (!zoneName)
zoneName = handler->GetTrinityString(LANG_UNKNOWN);
if (areaName)
handler->PSendSysMessage(LANG_PINFO_CHR_MAP_WITH_AREA, map->name[locale], zoneName, areaName);
else
handler->PSendSysMessage(LANG_PINFO_CHR_MAP, map->name[locale], zoneName);
// Output XVII. - XVIX. if they are not empty
if (!guildName.empty())