[Quest API] Add Zone Methods to Perl/Lua (#4268)

* [Quest API] Add Zone Methods to Perl/Lua

* Update zone_store.cpp
This commit is contained in:
Alex King 2024-04-20 22:18:00 -04:00 committed by GitHub
parent 4215a3b9d6
commit 703d2cd1d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 51 additions and 1 deletions

View File

@ -162,6 +162,32 @@ std::string ZoneStore::GetZoneLongName(uint32 zone_id)
return {};
}
std::string ZoneStore::GetZoneShortNameByLongName(const std::string& zone_long_name)
{
for (const auto& z : m_zones) {
if (z.long_name == zone_long_name) {
return z.short_name;
}
}
LogInfo("Failed to get zone short name by zone_long_name [{}]", zone_long_name);
return {};
}
uint32 ZoneStore::GetZoneIDByLongName(const std::string& zone_long_name)
{
for (const auto& z : m_zones) {
if (z.long_name == zone_long_name) {
return z.zoneidnumber;
}
}
LogInfo("Failed to get zone ID by zone_long_name [{}]", zone_long_name);
return 0;
}
/**
* @param zone_id
* @param version

View File

@ -42,6 +42,8 @@ public:
uint32 GetZoneID(std::string zone_name);
std::string GetZoneName(uint32 zone_id);
std::string GetZoneLongName(uint32 zone_id);
std::string GetZoneShortNameByLongName(const std::string& zone_long_name);
uint32 GetZoneIDByLongName(const std::string& zone_long_name);
const char *GetZoneName(uint32 zone_id, bool error_unknown = false);
const char *GetZoneLongName(uint32 zone_id, bool error_unknown = false);
ZoneRepository::Zone *GetZoneWithFallback(uint32 zone_id, int version = 0);

View File

@ -5865,6 +5865,16 @@ bool Perl__SetAutoLoginCharacterNameByAccountID(uint32 account_id, std::string c
return quest_manager.SetAutoLoginCharacterNameByAccountID(account_id, character_name);
}
uint32 Perl__GetZoneIDByLongName(std::string zone_long_name)
{
return zone_store.GetZoneIDByLongName(zone_long_name);
}
std::string Perl__GetZoneShortNameByLongName(std::string zone_long_name)
{
return zone_store.GetZoneShortNameByLongName(zone_long_name);
}
void perl_register_quest()
{
perl::interpreter perl(PERL_GET_THX);
@ -5951,6 +5961,7 @@ void perl_register_quest()
package.add("GetZoneInstanceType", (uint8(*)(uint32))&Perl__GetZoneInstanceType);
package.add("GetZoneInstanceType", (uint8(*)(uint32, int))&Perl__GetZoneInstanceType);
package.add("GetZoneID", &Perl__GetZoneID);
package.add("GetZoneIDByLongName", (uint32(*)(std::string))&Perl__GetZoneIDByLongName);
package.add("GetZoneExpansion", (int8(*)(uint32))&Perl__GetZoneExpansion);
package.add("GetZoneExpansion", (int8(*)(uint32, int))&Perl__GetZoneExpansion);
package.add("GetZoneExperienceMultiplier", (float(*)(uint32))&Perl__GetZoneExperienceMultiplier);
@ -6030,6 +6041,8 @@ void perl_register_quest()
package.add("GetZoneSafeZ", (float(*)(uint32, int))&Perl__GetZoneSafeZ);
package.add("GetZoneSecondsBeforeIdle", (uint32(*)(uint32))&Perl__GetZoneSecondsBeforeIdle);
package.add("GetZoneSecondsBeforeIdle", (uint32(*)(uint32, int))&Perl__GetZoneSecondsBeforeIdle);
package.add("GetZoneShortName", (std::string(*)(uint32))&Perl__GetZoneShortName);
package.add("GetZoneShortNameByLongName", (std::string(*)(std::string))&Perl__GetZoneShortNameByLongName);
package.add("GetZoneShutdownDelay", (uint64(*)(uint32))&Perl__GetZoneShutdownDelay);
package.add("GetZoneShutdownDelay", (uint64(*)(uint32, int))&Perl__GetZoneShutdownDelay);
package.add("GetZoneSky", (uint8(*)(uint32))&Perl__GetZoneSky);
@ -6046,7 +6059,6 @@ void perl_register_quest()
package.add("GetZoneSuspendBuffs", (uint8(*)(uint32, int))&Perl__GetZoneSuspendBuffs);
package.add("GetZoneZType", (uint8(*)(uint32))&Perl__GetZoneZType);
package.add("GetZoneZType", (uint8(*)(uint32, int))&Perl__GetZoneZType);
package.add("GetZoneShortName", &Perl__GetZoneShortName);
package.add("GetZoneTimeType", (uint8(*)(uint32))&Perl__GetZoneTimeType);
package.add("GetZoneTimeType", (uint8(*)(uint32, int))&Perl__GetZoneTimeType);
package.add("GetZoneTimeZone", (int(*)(uint32))&Perl__GetZoneTimeZone);

View File

@ -5496,6 +5496,14 @@ bool lua_set_auto_login_character_name_by_account_id(uint32 account_id, std::str
return quest_manager.SetAutoLoginCharacterNameByAccountID(account_id, character_name);
}
uint32 lua_get_zone_id_by_long_name(std::string zone_long_name) {
return zone_store.GetZoneIDByLongName(zone_long_name);
}
std::string lua_get_zone_short_name_by_long_name(std::string zone_long_name) {
return zone_store.GetZoneShortNameByLongName(zone_long_name);
}
#define LuaCreateNPCParse(name, c_type, default_value) do { \
cur = table[#name]; \
if(luabind::type(cur) != LUA_TNIL) { \
@ -6297,6 +6305,8 @@ luabind::scope lua_register_general() {
luabind::def("get_race_bitmask", &lua_get_race_bitmask),
luabind::def("get_auto_login_character_name_by_account_id", &lua_get_auto_login_character_name_by_account_id),
luabind::def("set_auto_login_character_name_by_account_id", &lua_set_auto_login_character_name_by_account_id),
luabind::def("get_zone_id_by_long_name", &lua_get_zone_id_by_long_name),
luabind::def("get_zone_short_name_by_long_name", &lua_get_zone_short_name_by_long_name),
/*
Cross Zone
*/