mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
[Commands] Cleanup #setlanguage Command. (#1705)
* [Commands] Cleanup #setlanguage Command. - Cleanup message and lofic. - Add GetLanguageName() helper and GetLanguageMap() for future use. * Optimize GetLanguageName().
This commit is contained in:
parent
b17c24d2df
commit
aac0dd2993
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emu_constants.h"
|
#include "emu_constants.h"
|
||||||
|
#include "languages.h"
|
||||||
|
|
||||||
|
|
||||||
int16 EQ::invtype::GetInvTypeSize(int16 inv_type) {
|
int16 EQ::invtype::GetInvTypeSize(int16 inv_type) {
|
||||||
@ -152,3 +153,47 @@ int EQ::constants::ConvertStanceTypeToIndex(StanceType stance_type) {
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::map<int, std::string>& EQ::constants::GetLanguageMap()
|
||||||
|
{
|
||||||
|
static const std::map<int, std::string> language_map = {
|
||||||
|
{ LANG_COMMON_TONGUE, "Common Tongue" },
|
||||||
|
{ LANG_BARBARIAN, "Barbarian" },
|
||||||
|
{ LANG_ERUDIAN, "Erudian" },
|
||||||
|
{ LANG_ELVISH, "Elvish" },
|
||||||
|
{ LANG_DARK_ELVISH, "Dark Elvish" },
|
||||||
|
{ LANG_DWARVISH, "Dwarvish" },
|
||||||
|
{ LANG_TROLL, "Troll" },
|
||||||
|
{ LANG_OGRE, "Ogre" },
|
||||||
|
{ LANG_GNOMISH, "Gnomish" },
|
||||||
|
{ LANG_HALFLING, "Halfling" },
|
||||||
|
{ LANG_THIEVES_CANT, "Thieves Cant" },
|
||||||
|
{ LANG_OLD_ERUDIAN, "Old Erudian" },
|
||||||
|
{ LANG_ELDER_ELVISH, "Elder Elvish" },
|
||||||
|
{ LANG_FROGLOK, "Froglok" },
|
||||||
|
{ LANG_GOBLIN, "Goblin" },
|
||||||
|
{ LANG_GNOLL, "Gnoll" },
|
||||||
|
{ LANG_COMBINE_TONGUE, "Combine Tongue" },
|
||||||
|
{ LANG_ELDER_TEIRDAL, "Elder Teirdal" },
|
||||||
|
{ LANG_LIZARDMAN, "Lizardman" },
|
||||||
|
{ LANG_ORCISH, "Orcish" },
|
||||||
|
{ LANG_FAERIE, "Faerie" },
|
||||||
|
{ LANG_DRAGON, "Dragon" },
|
||||||
|
{ LANG_ELDER_DRAGON, "Elder Dragon" },
|
||||||
|
{ LANG_DARK_SPEECH, "Dark Speech" },
|
||||||
|
{ LANG_VAH_SHIR, "Vah Shir" },
|
||||||
|
{ LANG_ALARAN, "Alaran" },
|
||||||
|
{ LANG_HADAL, "Hadal" },
|
||||||
|
{ LANG_UNKNOWN, "Unknown" }
|
||||||
|
};
|
||||||
|
return language_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string EQ::constants::GetLanguageName(int language_id)
|
||||||
|
{
|
||||||
|
if (language_id >= LANG_COMMON_TONGUE && language_id <= LANG_UNKNOWN) {
|
||||||
|
auto languages = EQ::constants::GetLanguageMap();
|
||||||
|
return languages[language_id];
|
||||||
|
}
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
|
|||||||
@ -223,6 +223,9 @@ namespace EQ
|
|||||||
const char *GetStanceName(StanceType stance_type);
|
const char *GetStanceName(StanceType stance_type);
|
||||||
int ConvertStanceTypeToIndex(StanceType stance_type);
|
int ConvertStanceTypeToIndex(StanceType stance_type);
|
||||||
|
|
||||||
|
extern const std::map<int, std::string>& GetLanguageMap();
|
||||||
|
std::string GetLanguageName(int language_id);
|
||||||
|
|
||||||
const int STANCE_TYPE_FIRST = stancePassive;
|
const int STANCE_TYPE_FIRST = stancePassive;
|
||||||
const int STANCE_TYPE_LAST = stanceBurnAE;
|
const int STANCE_TYPE_LAST = stanceBurnAE;
|
||||||
const int STANCE_TYPE_COUNT = stanceBurnAE;
|
const int STANCE_TYPE_COUNT = stanceBurnAE;
|
||||||
|
|||||||
100
zone/command.cpp
100
zone/command.cpp
@ -79,6 +79,7 @@
|
|||||||
#include "../common/http/httplib.h"
|
#include "../common/http/httplib.h"
|
||||||
#include "../common/shared_tasks.h"
|
#include "../common/shared_tasks.h"
|
||||||
#include "gm_commands/door_manipulation.h"
|
#include "gm_commands/door_manipulation.h"
|
||||||
|
#include "../common/languages.h"
|
||||||
|
|
||||||
extern QueryServ* QServ;
|
extern QueryServ* QServ;
|
||||||
extern WorldServer worldserver;
|
extern WorldServer worldserver;
|
||||||
@ -3664,60 +3665,57 @@ void command_castspell(Client *c, const Seperator *sep)
|
|||||||
|
|
||||||
void command_setlanguage(Client *c, const Seperator *sep)
|
void command_setlanguage(Client *c, const Seperator *sep)
|
||||||
{
|
{
|
||||||
if (strcasecmp(sep->arg[1], "list" ) == 0 )
|
Client* target = c;
|
||||||
{
|
if (c->GetTarget() && c->GetTarget()->IsClient()) {
|
||||||
c->Message(Chat::White, "Languages:");
|
target = c->GetTarget()->CastToClient();
|
||||||
c->Message(Chat::White, "(0) Common Tongue");
|
|
||||||
c->Message(Chat::White, "(1) Barbarian");
|
|
||||||
c->Message(Chat::White, "(2) Erudian");
|
|
||||||
c->Message(Chat::White, "(3) Elvish");
|
|
||||||
c->Message(Chat::White, "(4) Dark Elvish");
|
|
||||||
c->Message(Chat::White, "(5) Dwarvish");
|
|
||||||
c->Message(Chat::White, "(6) Troll");
|
|
||||||
c->Message(Chat::White, "(7) Ogre");
|
|
||||||
c->Message(Chat::White, "(8) Gnomish");
|
|
||||||
c->Message(Chat::White, "(9) Halfling");
|
|
||||||
c->Message(Chat::White, "(10) Thieves Cant");
|
|
||||||
c->Message(Chat::White, "(11) Old Erudian");
|
|
||||||
c->Message(Chat::White, "(12) Elder Elvish");
|
|
||||||
c->Message(Chat::White, "(13) Froglok");
|
|
||||||
c->Message(Chat::White, "(14) Goblin");
|
|
||||||
c->Message(Chat::White, "(15) Gnoll");
|
|
||||||
c->Message(Chat::White, "(16) Combine Tongue");
|
|
||||||
c->Message(Chat::White, "(17) Elder Teir`Dal");
|
|
||||||
c->Message(Chat::White, "(18) Lizardman");
|
|
||||||
c->Message(Chat::White, "(19) Orcish");
|
|
||||||
c->Message(Chat::White, "(20) Faerie");
|
|
||||||
c->Message(Chat::White, "(21) Dragon");
|
|
||||||
c->Message(Chat::White, "(22) Elder Dragon");
|
|
||||||
c->Message(Chat::White, "(23) Dark Speech");
|
|
||||||
c->Message(Chat::White, "(24) Vah Shir");
|
|
||||||
c->Message(Chat::White, "(25) Alaran");
|
|
||||||
c->Message(Chat::White, "(26) Hadal");
|
|
||||||
c->Message(Chat::White, "(27) Unknown1");
|
|
||||||
}
|
}
|
||||||
else if( c->GetTarget() == 0 )
|
|
||||||
{
|
auto language_id = sep->IsNumber(1) ? std::stoi(sep->arg[1]) : -1;
|
||||||
c->Message(Chat::White, "Error: #setlanguage: No target.");
|
auto language_value = sep->IsNumber(2) ? std::stoi(sep->arg[2]) : -1;
|
||||||
|
if (!strcasecmp(sep->arg[1], "list" )) {
|
||||||
|
for (int language = LANG_COMMON_TONGUE; language <= LANG_UNKNOWN; language++) {
|
||||||
|
c->Message(
|
||||||
|
Chat::White,
|
||||||
|
fmt::format(
|
||||||
|
"Language {}: {}",
|
||||||
|
language,
|
||||||
|
EQ::constants::GetLanguageName(language)
|
||||||
|
).c_str()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else if( !c->GetTarget()->IsClient() )
|
} else if (
|
||||||
{
|
language_id < LANG_COMMON_TONGUE ||
|
||||||
c->Message(Chat::White, "Error: Target must be a player.");
|
language_id > LANG_UNKNOWN ||
|
||||||
|
language_value < 0 ||
|
||||||
|
language_value > 100
|
||||||
|
) {
|
||||||
|
c->Message(Chat::White, "Usage: #setlanguage [Language ID] [Language Value]");
|
||||||
|
c->Message(Chat::White, "Usage: #setlanguage [List]");
|
||||||
|
c->Message(Chat::White, "Language ID = 0 to 27", LANG_UNKNOWN);
|
||||||
|
c->Message(Chat::White, "Language Value = 0 to 100", HIGHEST_CAN_SET_SKILL);
|
||||||
|
} else {
|
||||||
|
LogInfo(
|
||||||
|
"Set language request from [{}], Target: [{}] Language ID: [{}] Language Value: [{}]",
|
||||||
|
c->GetCleanName(),
|
||||||
|
target->GetCleanName(),
|
||||||
|
language_id,
|
||||||
|
language_value
|
||||||
|
);
|
||||||
|
|
||||||
|
target->SetLanguageSkill(language_id, language_value);
|
||||||
|
|
||||||
|
if (c != target) {
|
||||||
|
c->Message(
|
||||||
|
Chat::White,
|
||||||
|
fmt::format(
|
||||||
|
"Set {} ({}) to {} for {}.",
|
||||||
|
EQ::constants::GetLanguageName(language_id),
|
||||||
|
language_id,
|
||||||
|
language_value,
|
||||||
|
target->GetCleanName()
|
||||||
|
).c_str()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else if (
|
|
||||||
!sep->IsNumber(1) || atoi(sep->arg[1]) < 0 || atoi(sep->arg[1]) > 27 ||
|
|
||||||
!sep->IsNumber(2) || atoi(sep->arg[2]) < 0 || atoi(sep->arg[2]) > 100
|
|
||||||
)
|
|
||||||
{
|
|
||||||
c->Message(Chat::White, "Usage: #setlanguage [language ID] [value] (0-27, 0-100)");
|
|
||||||
c->Message(Chat::White, "Try #setlanguage list for a list of language IDs");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LogInfo("Set language request from [{}], target:[{}] lang_id:[{}] value:[{}]", c->GetName(), c->GetTarget()->GetName(), atoi(sep->arg[1]), atoi(sep->arg[2]) );
|
|
||||||
uint8 langid = (uint8)atoi(sep->arg[1]);
|
|
||||||
uint8 value = (uint8)atoi(sep->arg[2]);
|
|
||||||
c->GetTarget()->CastToClient()->SetLanguageSkill( langid, value );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user