From 29dfe9d4040f0a73a04bdd949997b1035f479684 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Wed, 1 Dec 2021 20:31:20 -0500 Subject: [PATCH] [Quest API] Add GetLanguageName() to Perl/Lua. (#1860) - Add quest::getlanguagename(language_id) to Perl. - Add eq.get_language_name(language_id) to Lua. --- zone/embparser_api.cpp | 18 ++++++++++++++++++ zone/lua_general.cpp | 5 +++++ zone/questmgr.cpp | 4 ++++ zone/questmgr.h | 1 + 4 files changed, 28 insertions(+) diff --git a/zone/embparser_api.cpp b/zone/embparser_api.cpp index f5fc4ad6b..7882f5c34 100644 --- a/zone/embparser_api.cpp +++ b/zone/embparser_api.cpp @@ -8023,6 +8023,23 @@ XS(XS__getspell) { } } +XS(XS__getlanguagename); +XS(XS__getlanguagename) { + dXSARGS; + if (items != 1) + Perl_croak(aTHX_ "Usage: quest::getlanguagename(int language_id)"); + { + dXSTARG; + int language_id = (int) SvIV(ST(0)); + std::string language_name = quest_manager.getlanguagename(language_id); + + sv_setpv(TARG, language_name.c_str()); + XSprePUSH; + PUSHTARG; + XSRETURN(1); + } +} + /* This is the callback perl will look for to setup the quest package's XSUBs @@ -8315,6 +8332,7 @@ EXTERN_C XS(boot_quest) { newXS(strcpy(buf, "get_expedition_by_zone_instance"), XS__get_expedition_by_zone_instance, file); newXS(strcpy(buf, "get_expedition_lockout_by_char_id"), XS__get_expedition_lockout_by_char_id, file); newXS(strcpy(buf, "get_expedition_lockouts_by_char_id"), XS__get_expedition_lockouts_by_char_id, file); + newXS(strcpy(buf, "getlanguagename"), XS__getlanguagename, file); newXS(strcpy(buf, "getinventoryslotid"), XS__getinventoryslotid, file); newXS(strcpy(buf, "getitemname"), XS__getitemname, file); newXS(strcpy(buf, "getItemName"), XS_qc_getItemName, file); diff --git a/zone/lua_general.cpp b/zone/lua_general.cpp index 7e76d1ddf..4703d7657 100644 --- a/zone/lua_general.cpp +++ b/zone/lua_general.cpp @@ -3351,6 +3351,10 @@ Lua_Spell lua_get_spell(uint32 spell_id) { return Lua_Spell(spell_id); } +std::string lua_get_language_name(int language_id) { + return quest_manager.getlanguagename(language_id); +} + #define LuaCreateNPCParse(name, c_type, default_value) do { \ cur = table[#name]; \ if(luabind::type(cur) != LUA_TNIL) { \ @@ -3794,6 +3798,7 @@ luabind::scope lua_register_general() { luabind::def("is_npc_spawned", &lua_is_npc_spawned), luabind::def("count_spawned_npcs", &lua_count_spawned_npcs), luabind::def("get_spell", &lua_get_spell), + luabind::def("get_language_name", &lua_get_language_name), /* Cross Zone diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index a825cf505..ca8bcdca2 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -1036,6 +1036,10 @@ std::string QuestManager::getskillname(int skill_id) { return EQ::skills::GetSkillName(static_cast(skill_id)); } +std::string QuestManager::getlanguagename(int language_id) { + return EQ::constants::GetLanguageName(language_id); +} + void QuestManager::safemove() { QuestManagerCurrentQuestVars(); if (initiator && initiator->IsClient()) diff --git a/zone/questmgr.h b/zone/questmgr.h index d41b2d3ae..c9a490e31 100644 --- a/zone/questmgr.h +++ b/zone/questmgr.h @@ -115,6 +115,7 @@ public: std::string getracename(uint16 race_id); std::string getspellname(uint32 spell_id); std::string getskillname(int skill_id); + std::string getlanguagename(int language_id); void safemove(); void rain(int weather); void snow(int weather);