mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 19:51:29 +00:00
Implement EVENT_USE_SKILL in Perl/Lua.
- Exports skill_id and skill_level in Perl/Lua whenever a skill is used (bash, kick, taunt, etc.)
This commit is contained in:
parent
decaa1f7b6
commit
d64f2e40c5
@ -2337,7 +2337,9 @@ bool Client::CheckIncreaseSkill(EQEmu::skills::SkillType skillid, Mob *against_w
|
|||||||
return false;
|
return false;
|
||||||
int skillval = GetRawSkill(skillid);
|
int skillval = GetRawSkill(skillid);
|
||||||
int maxskill = GetMaxSkillAfterSpecializationRules(skillid, MaxSkill(skillid));
|
int maxskill = GetMaxSkillAfterSpecializationRules(skillid, MaxSkill(skillid));
|
||||||
|
char buffer[24] = { 0 };
|
||||||
|
snprintf(buffer, 23, "%d %d", skillid, skillval);
|
||||||
|
parse->EventPlayer(EVENT_USE_SKILL, this, buffer, 0);
|
||||||
if(against_who)
|
if(against_who)
|
||||||
{
|
{
|
||||||
if(against_who->GetSpecialAbility(IMMUNE_AGGRO) || against_who->IsClient() ||
|
if(against_who->GetSpecialAbility(IMMUNE_AGGRO) || against_who->IsClient() ||
|
||||||
|
|||||||
@ -117,6 +117,7 @@ const char *QuestEventSubroutines[_LargestEventID] = {
|
|||||||
"EVENT_TICK",
|
"EVENT_TICK",
|
||||||
"EVENT_SPAWN_ZONE",
|
"EVENT_SPAWN_ZONE",
|
||||||
"EVENT_DEATH_ZONE",
|
"EVENT_DEATH_ZONE",
|
||||||
|
"EVENT_USE_SKILL",
|
||||||
};
|
};
|
||||||
|
|
||||||
PerlembParser::PerlembParser() : perl(nullptr) {
|
PerlembParser::PerlembParser() : perl(nullptr) {
|
||||||
@ -1441,6 +1442,12 @@ void PerlembParser::ExportEventVariables(std::string &package_name, QuestEventID
|
|||||||
ExportVar(package_name.c_str(), "killed_npc_id", sep.arg[4]);
|
ExportVar(package_name.c_str(), "killed_npc_id", sep.arg[4]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EVENT_USE_SKILL:{
|
||||||
|
Seperator sep(data);
|
||||||
|
ExportVar(package_name.c_str(), "skill_id", sep.arg[0]);
|
||||||
|
ExportVar(package_name.c_str(), "skill_level", sep.arg[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -85,6 +85,7 @@ typedef enum {
|
|||||||
EVENT_TICK,
|
EVENT_TICK,
|
||||||
EVENT_SPAWN_ZONE,
|
EVENT_SPAWN_ZONE,
|
||||||
EVENT_DEATH_ZONE,
|
EVENT_DEATH_ZONE,
|
||||||
|
EVENT_USE_SKILL,
|
||||||
_LargestEventID
|
_LargestEventID
|
||||||
} QuestEventID;
|
} QuestEventID;
|
||||||
|
|
||||||
|
|||||||
@ -1738,7 +1738,8 @@ luabind::scope lua_register_events() {
|
|||||||
luabind::value("unhandled_opcode", static_cast<int>(EVENT_UNHANDLED_OPCODE)),
|
luabind::value("unhandled_opcode", static_cast<int>(EVENT_UNHANDLED_OPCODE)),
|
||||||
luabind::value("tick", static_cast<int>(EVENT_TICK)),
|
luabind::value("tick", static_cast<int>(EVENT_TICK)),
|
||||||
luabind::value("spawn_zone", static_cast<int>(EVENT_SPAWN_ZONE)),
|
luabind::value("spawn_zone", static_cast<int>(EVENT_SPAWN_ZONE)),
|
||||||
luabind::value("death_zone", static_cast<int>(EVENT_DEATH_ZONE))
|
luabind::value("death_zone", static_cast<int>(EVENT_DEATH_ZONE)),
|
||||||
|
luabind::value("use_skill", static_cast<int>(EVENT_USE_SKILL))
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -120,7 +120,8 @@ const char *LuaEvents[_LargestEventID] = {
|
|||||||
"event_unhandled_opcode",
|
"event_unhandled_opcode",
|
||||||
"event_tick",
|
"event_tick",
|
||||||
"event_spawn_zone",
|
"event_spawn_zone",
|
||||||
"event_death_zone"
|
"event_death_zone",
|
||||||
|
"event_use_skill"
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Zone *zone;
|
extern Zone *zone;
|
||||||
@ -202,6 +203,7 @@ LuaParser::LuaParser() {
|
|||||||
PlayerArgumentDispatch[EVENT_LEAVE_AREA] = handle_player_area;
|
PlayerArgumentDispatch[EVENT_LEAVE_AREA] = handle_player_area;
|
||||||
PlayerArgumentDispatch[EVENT_RESPAWN] = handle_player_respawn;
|
PlayerArgumentDispatch[EVENT_RESPAWN] = handle_player_respawn;
|
||||||
PlayerArgumentDispatch[EVENT_UNHANDLED_OPCODE] = handle_player_packet;
|
PlayerArgumentDispatch[EVENT_UNHANDLED_OPCODE] = handle_player_packet;
|
||||||
|
PlayerArgumentDispatch[EVENT_USE_SKILL] = handle_player_use_skill;
|
||||||
|
|
||||||
ItemArgumentDispatch[EVENT_ITEM_CLICK] = handle_item_click;
|
ItemArgumentDispatch[EVENT_ITEM_CLICK] = handle_item_click;
|
||||||
ItemArgumentDispatch[EVENT_ITEM_CLICK_CAST] = handle_item_click;
|
ItemArgumentDispatch[EVENT_ITEM_CLICK_CAST] = handle_item_click;
|
||||||
|
|||||||
@ -505,6 +505,15 @@ void handle_player_null(QuestInterface *parse, lua_State* L, Client* client, std
|
|||||||
std::vector<EQEmu::Any> *extra_pointers) {
|
std::vector<EQEmu::Any> *extra_pointers) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handle_player_use_skill(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data, std::vector<EQEmu::Any> *extra_pointers) {
|
||||||
|
Seperator sep(data.c_str());
|
||||||
|
lua_pushinteger(L, std::stoi(sep.arg[0]));
|
||||||
|
lua_setfield(L, -2, "skill_id");
|
||||||
|
|
||||||
|
lua_pushinteger(L, std::stoi(sep.arg[1]));
|
||||||
|
lua_setfield(L, -2, "skill_level");
|
||||||
|
}
|
||||||
|
|
||||||
//Item
|
//Item
|
||||||
void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
|
void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
|
||||||
std::vector<EQEmu::Any> *extra_pointers) {
|
std::vector<EQEmu::Any> *extra_pointers) {
|
||||||
|
|||||||
@ -95,6 +95,8 @@ void handle_player_packet(QuestInterface *parse, lua_State* L, Client* client, s
|
|||||||
std::vector<EQEmu::Any> *extra_pointers);
|
std::vector<EQEmu::Any> *extra_pointers);
|
||||||
void handle_player_null(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
|
void handle_player_null(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
|
||||||
std::vector<EQEmu::Any> *extra_pointers);
|
std::vector<EQEmu::Any> *extra_pointers);
|
||||||
|
void handle_player_use_skill(QuestInterface *parse, lua_State* L, Client* client, std::string data, uint32 extra_data,
|
||||||
|
std::vector<EQEmu::Any> *extra_pointers);
|
||||||
|
|
||||||
//Item
|
//Item
|
||||||
void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
|
void handle_item_click(QuestInterface *parse, lua_State* L, Client* client, EQEmu::ItemInstance* item, Mob *mob, std::string data, uint32 extra_data,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user