Add XP Events

This commit is contained in:
Valorith 2023-02-10 19:54:29 -05:00 committed by Akkadius
parent fc7c30977a
commit 97c93ca55a
7 changed files with 74 additions and 1 deletions

View File

@ -161,6 +161,8 @@ const char *QuestEventSubroutines[_LargestEventID] = {
"EVENT_TASK_BEFORE_UPDATE",
"EVENT_AA_BUY",
"EVENT_AA_GAIN",
"EVENT_AAXP_GAIN",
"EVENT_XP_GAIN",
"EVENT_PAYLOAD",
"EVENT_LEVEL_DOWN",
"EVENT_GM_COMMAND",
@ -2080,10 +2082,20 @@ void PerlembParser::ExportEventVariables(
}
case EVENT_AA_GAIN: {
ExportVar(package_name.c_str(), "aa_gained", data);
ExportVar(package_name.c_str(), "aa_gained", extradata);
break;
}
case EVENT_AAXP_GAIN: {
ExportVar(package_name.c_str(), "aaxp_value", extradata);
break;
}
case EVENT_XP_GAIN: {
ExportVar(package_name.c_str(), "xp_value", extradata);
break;
}
case EVENT_INSPECT: {
ExportVar(package_name.c_str(), "target_id", extradata);
if (extra_pointers && extra_pointers->size() == 1) {

View File

@ -106,6 +106,8 @@ typedef enum {
EVENT_TASK_BEFORE_UPDATE,
EVENT_AA_BUY,
EVENT_AA_GAIN,
EVENT_AAXP_GAIN,
EVENT_XP_GAIN,
EVENT_PAYLOAD,
EVENT_LEVEL_DOWN,
EVENT_GM_COMMAND,

View File

@ -804,6 +804,17 @@ void Client::SetEXP(uint64 set_exp, uint64 set_aaxp, bool isrezzexp) {
}
}
if (m_pp.exp != set_exp) {
const auto xp_value = set_exp - m_pp.exp;
const auto export_string = fmt::format("{}",xp_value);
parse->EventPlayer(EVENT_XP_GAIN, this,export_string, xp_value);
}
if (m_pp.expAA != set_aaxp) {
const auto aaxp_value = set_aaxp - m_pp.expAA;
const auto export_string = fmt::format("{}",aaxp_value);
parse->EventPlayer(EVENT_AAXP_GAIN, this, export_string, aaxp_value);
}
//set the client's EXP and AAEXP
m_pp.exp = set_exp;
m_pp.expAA = set_aaxp;

View File

@ -4737,6 +4737,8 @@ luabind::scope lua_register_events() {
luabind::value("task_before_update", static_cast<int>(EVENT_TASK_BEFORE_UPDATE)),
luabind::value("aa_buy", static_cast<int>(EVENT_AA_BUY)),
luabind::value("aa_gain", static_cast<int>(EVENT_AA_GAIN)),
luabind::value("aaxp_gain", static_cast<int>(EVENT_AAXP_GAIN)),
luabind::value("xp_gain", static_cast<int>(EVENT_XP_GAIN)),
luabind::value("payload", static_cast<int>(EVENT_PAYLOAD)),
luabind::value("level_down", static_cast<int>(EVENT_LEVEL_DOWN)),
luabind::value("gm_command", static_cast<int>(EVENT_GM_COMMAND)),

View File

@ -148,6 +148,8 @@ const char *LuaEvents[_LargestEventID] = {
"event_task_before_update",
"event_aa_buy",
"event_aa_gain",
"event_aaxp_gain",
"event_xp_gain",
"event_payload",
"event_level_down",
"event_gm_command",
@ -275,6 +277,8 @@ LuaParser::LuaParser() {
PlayerArgumentDispatch[EVENT_INSPECT] = handle_player_inspect;
PlayerArgumentDispatch[EVENT_AA_BUY] = handle_player_aa_buy;
PlayerArgumentDispatch[EVENT_AA_GAIN] = handle_player_aa_gain;
PlayerArgumentDispatch[EVENT_AAXP_GAIN] = handle_player_aaxp_gain;
PlayerArgumentDispatch[EVENT_XP_GAIN] = handle_player_xp_gain;
PlayerArgumentDispatch[EVENT_PAYLOAD] = handle_player_payload;
PlayerArgumentDispatch[EVENT_LEVEL_UP] = handle_player_level_up;
PlayerArgumentDispatch[EVENT_LEVEL_DOWN] = handle_player_level_down;

View File

@ -1181,6 +1181,30 @@ void handle_player_aa_gain(
lua_setfield(L, -2, "aa_gained");
}
void handle_player_aaxp_gain(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
) {
lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "aaxp_value");
}
void handle_player_xp_gain(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
) {
lua_pushinteger(L, Strings::ToInt(data));
lua_setfield(L, -2, "xp_value");
}
void handle_player_level_up(
QuestInterface *parse,
lua_State* L,

View File

@ -608,6 +608,24 @@ void handle_player_aa_gain(
std::vector<std::any> *extra_pointers
);
void handle_player_aaxp_gain(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_xp_gain(
QuestInterface *parse,
lua_State* L,
Client* client,
std::string data,
uint32 extra_data,
std::vector<std::any> *extra_pointers
);
void handle_player_payload(
QuestInterface *parse,
lua_State* L,