diff options
-rw-r--r-- | sql/updates/world/master/2021_10_23_06_world_2018_08_30_03_world.sql | 32 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 46 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_go.cpp | 83 |
3 files changed, 95 insertions, 66 deletions
diff --git a/sql/updates/world/master/2021_10_23_06_world_2018_08_30_03_world.sql b/sql/updates/world/master/2021_10_23_06_world_2018_08_30_03_world.sql new file mode 100644 index 00000000000..30dbcbb7a16 --- /dev/null +++ b/sql/updates/world/master/2021_10_23_06_world_2018_08_30_03_world.sql @@ -0,0 +1,32 @@ +-- +-- resolve branch id conflicts +UPDATE `trinity_string` SET `entry`=1212 WHERE `entry`=1184; -- move LANG_GUILD_INFO_LEVEL to free slot +UPDATE `trinity_string` SET `entry`=1184 WHERE `entry`=1192; -- move LANG_CHANGEACCOUNT_SUCCESS to 3.3.5 slot + +UPDATE `trinity_string` SET `entry`=1213 WHERE `entry`=1185; -- move LANG_ACCOUNT_BNET_LINKED to free slot +UPDATE `trinity_string` SET `entry`=1185 WHERE `entry`=1193; -- move LANG_GROUP_NOT_IN_RAID_GROUP to 3.3.5 slot + +UPDATE `trinity_string` SET `entry`=1214 WHERE `entry`=1186; -- move LANG_ACCOUNT_OR_BNET_DOES_NOT_EXIST to free slot +UPDATE `trinity_string` SET `entry`=1186 WHERE `entry`=1194; -- move LANG_GROUP_ROLE_CHANGED to 3.3.5 slot + +UPDATE `trinity_string` SET `entry`=1215 WHERE `entry`=1187; -- move LANG_ACCOUNT_ALREADY_LINKED to free slot +UPDATE `trinity_string` SET `entry`=1187 WHERE `entry`=1195; -- move LANG_LEADER_CANNOT_BE_ASSISTANT to 3.3.5 slot + +UPDATE `trinity_string` SET `entry`=1216 WHERE `entry`=1188; -- move LANG_ACCOUNT_BNET_UNLINKED to free slot +UPDATE `trinity_string` SET `entry`=1188 WHERE `entry`=1191; -- move LANG_BAN_EXISTS to 3.3.5 slot + +UPDATE `trinity_string` SET `entry`=1217 WHERE `entry`=1189; -- move LANG_ACCOUNT_BNET_NOT_LINKED to free slot + +UPDATE `trinity_string` SET `entry`=1218 WHERE `entry`=1190; -- move LANG_DISALLOW_TICKETS_CONFIG to free slot + +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 1189 AND 1197; +INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES +(1189, "No instances were found matching your input"), +(1190, "Multiple instances match your input - please be more specific:"), +(1191, "│ %04u - %s"), +(1192, "Specified map %u is not instanced"), +(1193, "Could not find entrance portal for map %u (%s)"), +(1194, "Could not find exit portal for map %u (%s)"), +(1195, "Teleported you to the entrance of mapid %u (%s)"), +(1196, "Teleported you to the starting location of mapid %u (%s)"), +(1197, "Failed to teleport you to mapid %u (%s) - missing attunement/expansion for parent map %u?"); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 36fd7717b2c..d251276ac76 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -929,19 +929,22 @@ enum TrinityStrings LANG_GUILD_INFO_BANK_GOLD = 1181, LANG_GUILD_INFO_MOTD = 1182, LANG_GUILD_INFO_EXTRA_INFO = 1183, - LANG_GUILD_INFO_LEVEL = 1184, - LANG_ACCOUNT_BNET_LINKED = 1185, - LANG_ACCOUNT_OR_BNET_DOES_NOT_EXIST = 1186, - LANG_ACCOUNT_ALREADY_LINKED = 1187, - LANG_ACCOUNT_BNET_UNLINKED = 1188, - LANG_ACCOUNT_BNET_NOT_LINKED = 1189, - LANG_DISALLOW_TICKETS_CONFIG = 1190, - LANG_BAN_EXISTS = 1191, - LANG_CHANGEACCOUNT_SUCCESS = 1192, - LANG_GROUP_NOT_IN_RAID_GROUP = 1193, - LANG_GROUP_ROLE_CHANGED = 1194, - LANG_LEADER_CANNOT_BE_ASSISTANT = 1195, - // Room for more level 3 1196-1198 not used + LANG_CHANGEACCOUNT_SUCCESS = 1184, // log + LANG_GROUP_NOT_IN_RAID_GROUP = 1185, + LANG_GROUP_ROLE_CHANGED = 1186, + LANG_LEADER_CANNOT_BE_ASSISTANT = 1187, + LANG_BAN_EXISTS = 1188, + LANG_COMMAND_NO_INSTANCES_MATCH = 1189, + LANG_COMMAND_MULTIPLE_INSTANCES_MATCH = 1190, + LANG_COMMAND_MULTIPLE_INSTANCES_ENTRY = 1191, + LANG_COMMAND_MAP_NOT_INSTANCE = 1192, + LANG_COMMAND_INSTANCE_NO_ENTRANCE = 1193, + LANG_COMMAND_INSTANCE_NO_EXIT = 1194, + LANG_COMMAND_WENT_TO_INSTANCE_GATE = 1195, + LANG_COMMAND_WENT_TO_INSTANCE_START = 1196, + LANG_COMMAND_GO_INSTANCE_FAILED = 1197, + LANG_COMMAND_GO_INSTANCE_START_FAILED = 1198, // 3.3.5 RESERVED + // Room for more level 3 1199 not used // Debug commands LANG_CINEMATIC_NOT_EXIST = 1200, @@ -950,7 +953,22 @@ enum TrinityStrings LANG_DEBUG_AREATRIGGER_OFF = 1203, LANG_DEBUG_AREATRIGGER_ENTERED = 1204, - // 1205-1999 - free + LANG_COMMAND_NO_BOSSES_MATCH = 1205, // 3.3.5 RESERVED + LANG_COMMAND_MULTIPLE_BOSSES_MATCH = 1206, // 3.3.5 RESERVED + LANG_COMMAND_MULTIPLE_BOSSES_ENTRY = 1207, // 3.3.5 RESERVED + LANG_COMMAND_BOSS_MULTIPLE_SPAWNS = 1208, // 3.3.5 RESERVED + LANG_COMMAND_BOSS_MULTIPLE_SPAWN_ETY = 1209, // 3.3.5 RESERVED + LANG_COMMAND_GO_BOSS_FAILED = 1210, // 3.3.5 RESERVED + LANG_COMMAND_WENT_TO_BOSS = 1211, // 3.3.5 RESERVED + LANG_GUILD_INFO_LEVEL = 1212, + LANG_ACCOUNT_BNET_LINKED = 1213, + LANG_ACCOUNT_OR_BNET_DOES_NOT_EXIST = 1214, + LANG_ACCOUNT_ALREADY_LINKED = 1215, + LANG_ACCOUNT_BNET_UNLINKED = 1216, + LANG_ACCOUNT_BNET_NOT_LINKED = 1217, + LANG_DISALLOW_TICKETS_CONFIG = 1218, + // 1219-1499 - free + LANG_DEBUG_AREATRIGGER_LEFT = 1999, // Ticket Strings 2003-2028 LANG_COMMAND_TICKETCLOSED = 2003, diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 7c0936bf371..1fa71b48468 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -635,33 +635,11 @@ public: if (!*args) return false; - std::vector<std::string> labels; - - // tokenize and convert to lowercase char* pos = const_cast<char*>(args); - char* last = nullptr; - do - { - if (*pos == ' ') - { - if (last) - { - *pos = '\0'; - labels.emplace_back(last); - last = nullptr; - } - } - else - { - if (!last) - last = pos; - *pos = tolower(*pos); - } - } while (*++pos); - if (last) - labels.emplace_back(last); - // tokenizing done + do *pos = tolower(*pos); + while (*(++pos)); + Tokenizer labels(args, ' '); uint32 mapid = 0; if (labels.size() == 1) { @@ -671,12 +649,12 @@ public: if (!mapid) { - std::multimap<uint32, std::pair<uint16, std::string>> matches; + std::multimap<uint32, std::pair<uint32, std::string>> matches; for (auto const& pair : sObjectMgr->GetInstanceTemplates()) { uint32 count = 0; std::string const& scriptName = sObjectMgr->GetScriptName(pair.second.ScriptId); - for (std::string const& label : labels) + for (char const* label : labels) if (scriptName.find(label) != std::string::npos) ++count; @@ -685,7 +663,7 @@ public: } if (matches.empty()) { - handler->SendSysMessage("No matches found for your input"); + handler->SendSysMessage(LANG_COMMAND_NO_INSTANCES_MATCH); return false; } auto it = matches.rbegin(); @@ -693,10 +671,10 @@ public: mapid = it->second.first; if (++it != matches.rend() && it->first == maxCount) { - handler->SendSysMessage("Multiple matches found for your input - please specify:"); + handler->SendSysMessage(LANG_COMMAND_MULTIPLE_INSTANCES_MATCH); --it; do - handler->PSendSysMessage("* Map %03u: '%s'", it->second.first, it->second.second); + handler->PSendSysMessage(LANG_COMMAND_MULTIPLE_INSTANCES_ENTRY, it->second.first, it->second.second.c_str()); while (++it != matches.rend() && it->first == maxCount); handler->SetSentErrorMessage(true); return false; @@ -708,42 +686,43 @@ public: InstanceTemplate const* temp = sObjectMgr->GetInstanceTemplate(mapid); if (!temp) { - handler->PSendSysMessage("Map %u is not instanced", mapid); + handler->PSendSysMessage(LANG_COMMAND_MAP_NOT_INSTANCE, mapid); handler->SetSentErrorMessage(true); return false; } std::string const& scriptname = sObjectMgr->GetScriptName(temp->ScriptId); - AreaTriggerStruct const* entrance = sObjectMgr->GetMapEntranceTrigger(mapid); - if (!entrance) - { - handler->PSendSysMessage("Could not find entrance for instance %u (%s)", mapid, scriptname); - handler->SetSentErrorMessage(true); - return false; - } - Player* player = handler->GetSession()->GetPlayer(); if (player->IsInFlight()) player->FinishTaxiFlight(); else player->SaveRecallPosition(); - if (player->TeleportTo(entrance->target_mapId, entrance->target_X, entrance->target_Y, entrance->target_Z, entrance->target_Orientation)) - handler->PSendSysMessage("Teleported you to entrance of mapid %u (%s)", mapid, scriptname); - else + // try going to entrance + AreaTriggerStruct const* exit = sObjectMgr->GetGoBackTrigger(mapid); + if (!exit) + handler->PSendSysMessage(LANG_COMMAND_INSTANCE_NO_EXIT, mapid, scriptname.c_str()); + + if (exit && player->TeleportTo(exit->target_mapId, exit->target_X, exit->target_Y, exit->target_Z, exit->target_Orientation + M_PI)) { - AreaTriggerStruct const* exit = sObjectMgr->GetGoBackTrigger(mapid); - if (player->TeleportTo(exit->target_mapId, exit->target_X, exit->target_Y, exit->target_Z, exit->target_Orientation + M_PI)) - handler->PSendSysMessage("Teleported you in front of entrance to mapid %u (%s)", mapid, scriptname); - else - { - handler->PSendSysMessage("Failed to teleport you to entrance of mapid %u (%s) - missing attunement/expansion for parent map?", mapid, scriptname); - handler->SetSentErrorMessage(true); - return false; - } + handler->PSendSysMessage(LANG_COMMAND_WENT_TO_INSTANCE_GATE, mapid, scriptname.c_str()); + return true; } - return true; + // try going to start + AreaTriggerStruct const* entrance = sObjectMgr->GetMapEntranceTrigger(mapid); + if (!entrance) + handler->PSendSysMessage(LANG_COMMAND_INSTANCE_NO_ENTRANCE, mapid, scriptname.c_str()); + + if (entrance && player->TeleportTo(entrance->target_mapId, entrance->target_X, entrance->target_Y, entrance->target_Z, entrance->target_Orientation)) + { + handler->PSendSysMessage(LANG_COMMAND_WENT_TO_INSTANCE_START, mapid, scriptname.c_str()); + return true; + } + + handler->PSendSysMessage(LANG_COMMAND_GO_INSTANCE_FAILED, mapid, scriptname.c_str(), exit->target_mapId); + handler->SetSentErrorMessage(true); + return false; } }; |