[Lua] Resolve stoi Exception (#2736)

* [Lua] Resolve stoi Exception

* Change fallback for wp, not really needed for safety

* Change to Strings::ToInt
This commit is contained in:
Chris Miles 2023-02-06 17:22:01 -06:00 committed by GitHub
parent 8031bf0bcb
commit 6a9228ed6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 102 additions and 94 deletions

View File

@ -763,3 +763,10 @@ std::string Strings::Random(size_t length)
std::generate_n(str.begin(), length, randchar); std::generate_n(str.begin(), length, randchar);
return str; return str;
} }
// a wrapper for stoi which will return a fallback if the string
// fails to cast to a number
int Strings::ToInt(const std::string &s, int fallback)
{
return Strings::IsNumber(s) ? std::stoi(s) : fallback;
}

View File

@ -86,6 +86,7 @@ class Strings {
public: public:
static bool Contains(std::vector<std::string> container, std::string element); static bool Contains(std::vector<std::string> container, std::string element);
static bool Contains(const std::string& subject, const std::string& search); static bool Contains(const std::string& subject, const std::string& search);
static int ToInt(const std::string &s, int fallback = 0);
static bool IsNumber(const std::string &s); static bool IsNumber(const std::string &s);
static bool IsFloat(const std::string &s); static bool IsFloat(const std::string &s);
static const std::string ToLower(std::string s); static const std::string ToLower(std::string s);

View File

@ -120,12 +120,12 @@ void handle_npc_event_hp(
if(extra_data == 1) { if(extra_data == 1) {
lua_pushinteger(L, -1); lua_pushinteger(L, -1);
lua_setfield(L, -2, "hp_event"); lua_setfield(L, -2, "hp_event");
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "inc_hp_event"); lua_setfield(L, -2, "inc_hp_event");
} }
else else
{ {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "hp_event"); lua_setfield(L, -2, "hp_event");
lua_pushinteger(L, -1); lua_pushinteger(L, -1);
lua_setfield(L, -2, "inc_hp_event"); lua_setfield(L, -2, "inc_hp_event");
@ -191,7 +191,7 @@ void handle_npc_task_accepted(
l_client_o.push(L); l_client_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "task_id"); lua_setfield(L, -2, "task_id");
} }
@ -209,7 +209,7 @@ void handle_npc_popup(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "popup_id"); lua_setfield(L, -2, "popup_id");
} }
@ -227,7 +227,7 @@ void handle_npc_waypoint(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data, -1));
lua_setfield(L, -2, "wp"); lua_setfield(L, -2, "wp");
} }
@ -245,7 +245,7 @@ void handle_npc_hate(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushboolean(L, std::stoi(data) == 0 ? false : true); lua_pushboolean(L, Strings::ToInt(data) == 0 ? false : true);
lua_setfield(L, -2, "joined"); lua_setfield(L, -2, "joined");
} }
@ -259,7 +259,7 @@ void handle_npc_signal(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "signal"); lua_setfield(L, -2, "signal");
} }
@ -274,7 +274,7 @@ void handle_npc_payload(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "payload_id"); lua_setfield(L, -2, "payload_id");
lua_pushstring(L, sep.argplus[1]); lua_pushstring(L, sep.argplus[1]);
@ -309,13 +309,13 @@ void handle_npc_death(
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "killer_id"); lua_setfield(L, -2, "killer_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "damage"); lua_setfield(L, -2, "damage");
int spell_id = std::stoi(sep.arg[2]); int spell_id = Strings::ToInt(sep.arg[2]);
if(IsValidSpell(spell_id)) { if(IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -328,7 +328,7 @@ void handle_npc_death(
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
} }
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
if (extra_pointers && extra_pointers->size() >= 1) if (extra_pointers && extra_pointers->size() >= 1)
@ -357,7 +357,7 @@ void handle_npc_cast(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
int spell_id = std::stoi(data); int spell_id = Strings::ToInt(data);
if(IsValidSpell(spell_id)) { if(IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -522,13 +522,13 @@ void handle_player_environmental_damage(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "env_damage"); lua_setfield(L, -2, "env_damage");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "env_damage_type"); lua_setfield(L, -2, "env_damage_type");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "env_final_damage"); lua_setfield(L, -2, "env_final_damage");
} }
@ -542,19 +542,19 @@ void handle_player_death(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
Mob *o = entity_list.GetMobID(std::stoi(sep.arg[0])); Mob *o = entity_list.GetMobID(Strings::ToInt(sep.arg[0]));
Lua_Mob l_mob(o); Lua_Mob l_mob(o);
luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob); luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob);
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "killer_id"); lua_setfield(L, -2, "killer_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "damage"); lua_setfield(L, -2, "damage");
int spell_id = std::stoi(sep.arg[3]); int spell_id = Strings::ToInt(sep.arg[3]);
if(IsValidSpell(spell_id)) { if(IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -567,7 +567,7 @@ void handle_player_death(
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
} }
lua_pushinteger(L, std::stoi(sep.arg[4])); lua_pushinteger(L, Strings::ToInt(sep.arg[4]));
lua_setfield(L, -2, "skill"); lua_setfield(L, -2, "skill");
} }
@ -655,7 +655,7 @@ void handle_player_signal(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "signal"); lua_setfield(L, -2, "signal");
} }
@ -669,7 +669,7 @@ void handle_player_payload(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "payload_id"); lua_setfield(L, -2, "payload_id");
lua_pushstring(L, sep.argplus[1]); lua_pushstring(L, sep.argplus[1]);
@ -684,7 +684,7 @@ void handle_player_popup_response(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "popup_id"); lua_setfield(L, -2, "popup_id");
} }
@ -712,7 +712,7 @@ void handle_player_cast(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
int spell_id = std::stoi(sep.arg[0]); int spell_id = Strings::ToInt(sep.arg[0]);
if(IsValidSpell(spell_id)) { if(IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -725,10 +725,10 @@ void handle_player_cast(
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "caster_id"); lua_setfield(L, -2, "caster_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level"); lua_setfield(L, -2, "caster_level");
} }
@ -740,7 +740,7 @@ void handle_player_task_fail(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "task_id"); lua_setfield(L, -2, "task_id");
} }
@ -754,22 +754,22 @@ void handle_player_zone(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "from_zone_id"); lua_setfield(L, -2, "from_zone_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "from_instance_id"); lua_setfield(L, -2, "from_instance_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "from_instance_version"); lua_setfield(L, -2, "from_instance_version");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "zone_id"); lua_setfield(L, -2, "zone_id");
lua_pushinteger(L, std::stoi(sep.arg[4])); lua_pushinteger(L, Strings::ToInt(sep.arg[4]));
lua_setfield(L, -2, "instance_id"); lua_setfield(L, -2, "instance_id");
lua_pushinteger(L, std::stoi(sep.arg[5])); lua_pushinteger(L, Strings::ToInt(sep.arg[5]));
lua_setfield(L, -2, "instance_version"); lua_setfield(L, -2, "instance_version");
} }
@ -829,10 +829,10 @@ void handle_player_task_stage_complete(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "task_id"); lua_setfield(L, -2, "task_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "activity_id"); lua_setfield(L, -2, "activity_id");
} }
@ -857,13 +857,13 @@ void handle_player_task_update(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "count"); lua_setfield(L, -2, "count");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "activity_id"); lua_setfield(L, -2, "activity_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "task_id"); lua_setfield(L, -2, "task_id");
} }
@ -944,7 +944,7 @@ void handle_player_respawn(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "option"); lua_setfield(L, -2, "option");
lua_pushboolean(L, extra_data == 1 ? true : false); lua_pushboolean(L, extra_data == 1 ? true : false);
@ -987,10 +987,10 @@ void handle_player_use_skill(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "skill_level"); lua_setfield(L, -2, "skill_level");
} }
@ -1022,10 +1022,10 @@ void handle_player_combine_validate(
int zone_id = -1; int zone_id = -1;
int tradeskill_id = -1; int tradeskill_id = -1;
if (strcmp(sep.arg[0], "check_zone") == 0) { if (strcmp(sep.arg[0], "check_zone") == 0) {
zone_id = std::stoi(sep.arg[1]); zone_id = Strings::ToInt(sep.arg[1]);
} }
else if (strcmp(sep.arg[0], "check_tradeskill") == 0) { else if (strcmp(sep.arg[0], "check_tradeskill") == 0) {
tradeskill_id = std::stoi(sep.arg[1]); tradeskill_id = Strings::ToInt(sep.arg[1]);
} }
lua_pushinteger(L, zone_id); lua_pushinteger(L, zone_id);
@ -1087,7 +1087,7 @@ void handle_player_quest_combine(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "container_slot"); lua_setfield(L, -2, "container_slot");
} }
@ -1099,7 +1099,7 @@ void handle_player_consider(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "entity_id"); lua_setfield(L, -2, "entity_id");
} }
@ -1111,7 +1111,7 @@ void handle_player_consider_corpse(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "corpse_entity_id"); lua_setfield(L, -2, "corpse_entity_id");
} }
@ -1138,16 +1138,16 @@ void handle_player_aa_buy(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "aa_cost"); lua_setfield(L, -2, "aa_cost");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "aa_id"); lua_setfield(L, -2, "aa_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "aa_previous_id"); lua_setfield(L, -2, "aa_previous_id");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "aa_next_id"); lua_setfield(L, -2, "aa_next_id");
} }
@ -1159,7 +1159,7 @@ void handle_player_aa_gain(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "aa_gained"); lua_setfield(L, -2, "aa_gained");
} }
@ -1211,16 +1211,16 @@ void handle_player_bot_create(
lua_pushstring(L, sep.arg[0]); lua_pushstring(L, sep.arg[0]);
lua_setfield(L, -2, "bot_name"); lua_setfield(L, -2, "bot_name");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "bot_id"); lua_setfield(L, -2, "bot_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "bot_race"); lua_setfield(L, -2, "bot_race");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "bot_class"); lua_setfield(L, -2, "bot_class");
lua_pushinteger(L, std::stoi(sep.arg[4])); lua_pushinteger(L, Strings::ToInt(sep.arg[4]));
lua_setfield(L, -2, "bot_gender"); lua_setfield(L, -2, "bot_gender");
} }
@ -1495,16 +1495,16 @@ void handle_spell_event(
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "caster_id"); lua_setfield(L, -2, "caster_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "tics_remaining"); lua_setfield(L, -2, "tics_remaining");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level"); lua_setfield(L, -2, "caster_level");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "buff_slot"); lua_setfield(L, -2, "buff_slot");
Lua_Spell l_spell(spell_id); Lua_Spell l_spell(spell_id);
@ -1553,10 +1553,10 @@ void handle_player_equip_item(
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushnumber(L, std::stoi(sep.arg[0])); lua_pushnumber(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "item_quantity"); lua_setfield(L, -2, "item_quantity");
lua_pushnumber(L, std::stoi(sep.arg[1])); lua_pushnumber(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "slot_id"); lua_setfield(L, -2, "slot_id");
Lua_ItemInst l_item(extra_data); Lua_ItemInst l_item(extra_data);
@ -1644,16 +1644,16 @@ void handle_player_skill_up(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "skill_value"); lua_setfield(L, -2, "skill_value");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "skill_max"); lua_setfield(L, -2, "skill_max");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "is_tradeskill"); lua_setfield(L, -2, "is_tradeskill");
} }
@ -1666,13 +1666,13 @@ void handle_player_language_skill_up(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "skill_value"); lua_setfield(L, -2, "skill_value");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "skill_max"); lua_setfield(L, -2, "skill_max");
} }
@ -1685,19 +1685,19 @@ void handle_player_alt_currency_merchant(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "currency_id"); lua_setfield(L, -2, "currency_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "npc_id"); lua_setfield(L, -2, "npc_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "merchant_id"); lua_setfield(L, -2, "merchant_id");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "item_id"); lua_setfield(L, -2, "item_id");
lua_pushinteger(L, std::stoi(sep.arg[4])); lua_pushinteger(L, Strings::ToInt(sep.arg[4]));
lua_setfield(L, -2, "item_cost"); lua_setfield(L, -2, "item_cost");
} }
@ -1710,19 +1710,19 @@ void handle_player_merchant(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "npc_id"); lua_setfield(L, -2, "npc_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "merchant_id"); lua_setfield(L, -2, "merchant_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "item_id"); lua_setfield(L, -2, "item_id");
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "item_quantity"); lua_setfield(L, -2, "item_quantity");
lua_pushinteger(L, std::stoi(sep.arg[4])); lua_pushinteger(L, Strings::ToInt(sep.arg[4]));
lua_setfield(L, -2, "item_cost"); lua_setfield(L, -2, "item_cost");
} }
@ -1748,7 +1748,7 @@ void handle_player_augment_insert(
lua_pushinteger(L, std::stoul(sep.arg[0])); lua_pushinteger(L, std::stoul(sep.arg[0]));
lua_setfield(L, -2, "item_id"); lua_setfield(L, -2, "item_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "item_slot"); lua_setfield(L, -2, "item_slot");
lua_pushinteger(L, std::stoul(sep.arg[2])); lua_pushinteger(L, std::stoul(sep.arg[2]));
@ -1780,7 +1780,7 @@ void handle_player_augment_remove(
lua_pushinteger(L, std::stoul(sep.arg[0])); lua_pushinteger(L, std::stoul(sep.arg[0]));
lua_setfield(L, -2, "item_id"); lua_setfield(L, -2, "item_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "item_slot"); lua_setfield(L, -2, "item_slot");
lua_pushinteger(L, std::stoul(sep.arg[2])); lua_pushinteger(L, std::stoul(sep.arg[2]));
@ -1817,7 +1817,7 @@ void handle_bot_cast(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
int spell_id = std::stoi(sep.arg[0]); int spell_id = Strings::ToInt(sep.arg[0]);
if (IsValidSpell(spell_id)) { if (IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -1830,10 +1830,10 @@ void handle_bot_cast(
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "caster_id"); lua_setfield(L, -2, "caster_id");
lua_pushinteger(L, std::stoi(sep.arg[2])); lua_pushinteger(L, Strings::ToInt(sep.arg[2]));
lua_setfield(L, -2, "caster_level"); lua_setfield(L, -2, "caster_level");
} }
@ -1851,7 +1851,7 @@ void handle_bot_combat(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushboolean(L, std::stoi(data) == 0 ? false : true); lua_pushboolean(L, Strings::ToInt(data) == 0 ? false : true);
lua_setfield(L, -2, "joined"); lua_setfield(L, -2, "joined");
} }
@ -1866,16 +1866,16 @@ void handle_bot_death(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
Mob *o = entity_list.GetMobID(std::stoi(sep.arg[0])); Mob *o = entity_list.GetMobID(Strings::ToInt(sep.arg[0]));
Lua_Mob l_mob(o); Lua_Mob l_mob(o);
luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob); luabind::adl::object l_mob_o = luabind::adl::object(L, l_mob);
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "damage"); lua_setfield(L, -2, "damage");
int spell_id = std::stoi(sep.arg[2]); int spell_id = Strings::ToInt(sep.arg[2]);
if (IsValidSpell(spell_id)) { if (IsValidSpell(spell_id)) {
Lua_Spell l_spell(&spells[spell_id]); Lua_Spell l_spell(&spells[spell_id]);
luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell); luabind::adl::object l_spell_o = luabind::adl::object(L, l_spell);
@ -1888,7 +1888,7 @@ void handle_bot_death(
lua_setfield(L, -2, "spell"); lua_setfield(L, -2, "spell");
} }
lua_pushinteger(L, std::stoi(sep.arg[3])); lua_pushinteger(L, Strings::ToInt(sep.arg[3]));
lua_setfield(L, -2, "skill"); lua_setfield(L, -2, "skill");
} }
@ -1906,7 +1906,7 @@ void handle_bot_popup_response(
l_mob_o.push(L); l_mob_o.push(L);
lua_setfield(L, -2, "other"); lua_setfield(L, -2, "other");
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "popup_id"); lua_setfield(L, -2, "popup_id");
} }
@ -1940,7 +1940,7 @@ void handle_bot_signal(
uint32 extra_data, uint32 extra_data,
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
lua_pushinteger(L, std::stoi(data)); lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "signal"); lua_setfield(L, -2, "signal");
} }
@ -1955,7 +1955,7 @@ void handle_bot_payload(
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "payload_id"); lua_setfield(L, -2, "payload_id");
lua_pushstring(L, sep.argplus[1]); lua_pushstring(L, sep.argplus[1]);
@ -2073,10 +2073,10 @@ void handle_bot_use_skill(
std::vector<std::any> *extra_pointers std::vector<std::any> *extra_pointers
) { ) {
Seperator sep(data.c_str()); Seperator sep(data.c_str());
lua_pushinteger(L, std::stoi(sep.arg[0])); lua_pushinteger(L, Strings::ToInt(sep.arg[0]));
lua_setfield(L, -2, "skill_id"); lua_setfield(L, -2, "skill_id");
lua_pushinteger(L, std::stoi(sep.arg[1])); lua_pushinteger(L, Strings::ToInt(sep.arg[1]));
lua_setfield(L, -2, "skill_level"); lua_setfield(L, -2, "skill_level");
} }