mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-10 19:10:25 +00:00
Small changes to encounter stuff
This commit is contained in:
+86
-17
@@ -32,20 +32,34 @@ struct lua_registered_event {
|
||||
};
|
||||
|
||||
extern std::map<std::string, std::list<lua_registered_event>> lua_encounter_events_registered;
|
||||
extern std::map<std::string, bool> lua_encounters_loaded;
|
||||
extern void MapOpcodes();
|
||||
extern void ClearMappedOpcode(EmuOpcode op);
|
||||
|
||||
void unregister_event(std::string package_name, std::string name, int evt);
|
||||
|
||||
void load_encounter(std::string name) {
|
||||
if(lua_encounters_loaded.count(name) > 0)
|
||||
return;
|
||||
|
||||
lua_encounters_loaded[name] = true;
|
||||
parse->EventEncounter(EVENT_ENCOUNTER_LOAD, name, 0);
|
||||
}
|
||||
|
||||
void load_encounter_with_data(std::string name, std::string info_str) {
|
||||
if(lua_encounters_loaded.count(name) > 0)
|
||||
return;
|
||||
|
||||
lua_encounters_loaded[name] = true;
|
||||
std::vector<EQEmu::Any> info_ptrs;
|
||||
info_ptrs.push_back(&info_str);
|
||||
parse->EventEncounter(EVENT_ENCOUNTER_LOAD, name, 0, &info_ptrs);
|
||||
}
|
||||
|
||||
void unload_encounter(std::string name) {
|
||||
if(lua_encounters_loaded.count(name) == 0)
|
||||
return;
|
||||
|
||||
auto liter = lua_encounter_events_registered.begin();
|
||||
while(liter != lua_encounter_events_registered.end()) {
|
||||
std::list<lua_registered_event> &elist = liter->second;
|
||||
@@ -65,10 +79,13 @@ void unload_encounter(std::string name) {
|
||||
}
|
||||
}
|
||||
|
||||
lua_encounters_loaded.erase(name);
|
||||
parse->EventEncounter(EVENT_ENCOUNTER_UNLOAD, name, 0);
|
||||
}
|
||||
|
||||
void unload_encounter_with_data(std::string name, std::string info_str) {
|
||||
if(lua_encounters_loaded.count(name) == 0)
|
||||
return;
|
||||
|
||||
auto liter = lua_encounter_events_registered.begin();
|
||||
while(liter != lua_encounter_events_registered.end()) {
|
||||
@@ -91,12 +108,18 @@ void unload_encounter_with_data(std::string name, std::string info_str) {
|
||||
}
|
||||
}
|
||||
|
||||
lua_encounters_loaded.erase(name);
|
||||
std::vector<EQEmu::Any> info_ptrs;
|
||||
info_ptrs.push_back(&info_str);
|
||||
parse->EventEncounter(EVENT_ENCOUNTER_UNLOAD, name, 0, &info_ptrs);
|
||||
}
|
||||
|
||||
void register_event(std::string package_name, std::string name, int evt, luabind::adl::object func) {
|
||||
if(lua_encounters_loaded.count(name) == 0)
|
||||
return;
|
||||
|
||||
unregister_event(package_name, name, evt);
|
||||
|
||||
lua_registered_event e;
|
||||
e.encounter_name = name;
|
||||
e.lua_reference = func;
|
||||
@@ -109,15 +132,6 @@ void register_event(std::string package_name, std::string name, int evt, luabind
|
||||
lua_encounter_events_registered[package_name] = elist;
|
||||
} else {
|
||||
std::list<lua_registered_event> &elist = liter->second;
|
||||
auto iter = elist.begin();
|
||||
while(iter != elist.end()) {
|
||||
if(iter->event_id == evt && iter->encounter_name.compare(name) == 0) {
|
||||
//already registered this event for this encounter
|
||||
return;
|
||||
}
|
||||
++iter;
|
||||
}
|
||||
|
||||
elist.push_back(e);
|
||||
}
|
||||
}
|
||||
@@ -130,6 +144,7 @@ void unregister_event(std::string package_name, std::string name, int evt) {
|
||||
while(iter != elist.end()) {
|
||||
if(iter->event_id == evt && iter->encounter_name.compare(name) == 0) {
|
||||
iter = elist.erase(iter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
lua_encounter_events_registered[package_name] = elist;
|
||||
@@ -145,6 +160,11 @@ void register_npc_event(std::string name, int evt, int npc_id, luabind::adl::obj
|
||||
}
|
||||
}
|
||||
|
||||
void register_npc_event(int evt, int npc_id, luabind::adl::object func) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
register_npc_event(name, evt, npc_id, func);
|
||||
}
|
||||
|
||||
void unregister_npc_event(std::string name, int evt, int npc_id) {
|
||||
std::stringstream package_name;
|
||||
package_name << "npc_" << npc_id;
|
||||
@@ -152,16 +172,31 @@ void unregister_npc_event(std::string name, int evt, int npc_id) {
|
||||
unregister_event(package_name.str(), name, evt);
|
||||
}
|
||||
|
||||
void unregister_npc_event(int evt, int npc_id) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
unregister_npc_event(name, evt, npc_id);
|
||||
}
|
||||
|
||||
void register_player_event(std::string name, int evt, luabind::adl::object func) {
|
||||
if(luabind::type(func) == LUA_TFUNCTION) {
|
||||
register_event("player", name, evt, func);
|
||||
}
|
||||
}
|
||||
|
||||
void register_player_event(int evt, luabind::adl::object func) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
register_player_event(name, evt, func);
|
||||
}
|
||||
|
||||
void unregister_player_event(std::string name, int evt) {
|
||||
unregister_event("player", name, evt);
|
||||
}
|
||||
|
||||
void unregister_player_event(int evt) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
unregister_player_event(name, evt);
|
||||
}
|
||||
|
||||
void register_item_event(std::string name, int evt, int item_id, luabind::adl::object func) {
|
||||
std::string package_name = "item_";
|
||||
package_name += std::to_string(static_cast<long long>(item_id));
|
||||
@@ -171,6 +206,11 @@ void register_item_event(std::string name, int evt, int item_id, luabind::adl::o
|
||||
}
|
||||
}
|
||||
|
||||
void register_item_event(int evt, int item_id, luabind::adl::object func) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
register_item_event(name, evt, item_id, func);
|
||||
}
|
||||
|
||||
void unregister_item_event(std::string name, int evt, int item_id) {
|
||||
std::string package_name = "item_";
|
||||
package_name += std::to_string(static_cast<long long>(item_id));
|
||||
@@ -178,6 +218,11 @@ void unregister_item_event(std::string name, int evt, int item_id) {
|
||||
unregister_event(package_name, name, evt);
|
||||
}
|
||||
|
||||
void unregister_item_event(int evt, int item_id) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
unregister_item_event(name, evt, item_id);
|
||||
}
|
||||
|
||||
void register_spell_event(std::string name, int evt, int spell_id, luabind::adl::object func) {
|
||||
if(luabind::type(func) == LUA_TFUNCTION) {
|
||||
std::stringstream package_name;
|
||||
@@ -187,6 +232,11 @@ void register_spell_event(std::string name, int evt, int spell_id, luabind::adl:
|
||||
}
|
||||
}
|
||||
|
||||
void register_spell_event(int evt, int spell_id, luabind::adl::object func) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
register_spell_event(name, evt, spell_id, func);
|
||||
}
|
||||
|
||||
void unregister_spell_event(std::string name, int evt, int spell_id) {
|
||||
std::stringstream package_name;
|
||||
package_name << "spell_" << spell_id;
|
||||
@@ -194,6 +244,11 @@ void unregister_spell_event(std::string name, int evt, int spell_id) {
|
||||
unregister_event(package_name.str(), name, evt);
|
||||
}
|
||||
|
||||
void unregister_spell_event(int evt, int spell_id) {
|
||||
std::string name = quest_manager.GetEncounter();
|
||||
unregister_spell_event(name, evt, spell_id);
|
||||
}
|
||||
|
||||
Lua_Mob lua_spawn2(int npc_type, int grid, int unused, double x, double y, double z, double heading) {
|
||||
return Lua_Mob(quest_manager.spawn2(npc_type, grid, unused,
|
||||
static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(heading)));
|
||||
@@ -1161,6 +1216,11 @@ Lua_ItemInst lua_get_quest_item() {
|
||||
return quest_manager.GetQuestItem();
|
||||
}
|
||||
|
||||
std::string lua_get_encounter() {
|
||||
return quest_manager.GetEncounter();
|
||||
}
|
||||
|
||||
|
||||
void lua_map_opcodes() {
|
||||
MapOpcodes();
|
||||
}
|
||||
@@ -1195,14 +1255,22 @@ luabind::scope lua_register_general() {
|
||||
luabind::def("unload_encounter", &unload_encounter),
|
||||
luabind::def("load_encounter_with_data", &load_encounter_with_data),
|
||||
luabind::def("unload_encounter_with_data", &unload_encounter_with_data),
|
||||
luabind::def("register_npc_event", ®ister_npc_event),
|
||||
luabind::def("unregister_npc_event", &unregister_npc_event),
|
||||
luabind::def("register_player_event", ®ister_player_event),
|
||||
luabind::def("unregister_player_event", &unregister_player_event),
|
||||
luabind::def("register_item_event", ®ister_item_event),
|
||||
luabind::def("unregister_item_event", &unregister_item_event),
|
||||
luabind::def("register_spell_event", ®ister_spell_event),
|
||||
luabind::def("unregister_spell_event", &unregister_spell_event),
|
||||
luabind::def("register_npc_event", (void(*)(std::string, int, int, luabind::adl::object))®ister_npc_event),
|
||||
luabind::def("register_npc_event", (void(*)(int, int, luabind::adl::object))®ister_npc_event),
|
||||
luabind::def("unregister_npc_event", (void(*)(std::string, int, int))&unregister_npc_event),
|
||||
luabind::def("unregister_npc_event", (void(*)(int, int))&unregister_npc_event),
|
||||
luabind::def("register_player_event", (void(*)(std::string, int, luabind::adl::object))®ister_player_event),
|
||||
luabind::def("register_player_event", (void(*)(int, luabind::adl::object))®ister_player_event),
|
||||
luabind::def("unregister_player_event", (void(*)(std::string, int))&unregister_player_event),
|
||||
luabind::def("unregister_player_event", (void(*)(int))&unregister_player_event),
|
||||
luabind::def("register_item_event", (void(*)(std::string, int, int, luabind::adl::object))®ister_item_event),
|
||||
luabind::def("register_item_event", (void(*)(int, int, luabind::adl::object))®ister_item_event),
|
||||
luabind::def("unregister_item_event", (void(*)(std::string, int, int))&unregister_item_event),
|
||||
luabind::def("unregister_item_event", (void(*)(int, int))&unregister_item_event),
|
||||
luabind::def("register_spell_event", (void(*)(std::string, int, int, luabind::adl::object func))®ister_spell_event),
|
||||
luabind::def("register_spell_event", (void(*)(int, int, luabind::adl::object func))®ister_spell_event),
|
||||
luabind::def("unregister_spell_event", (void(*)(std::string, int, int))&unregister_spell_event),
|
||||
luabind::def("unregister_spell_event", (void(*)(int, int))&unregister_spell_event),
|
||||
luabind::def("spawn2", (Lua_Mob(*)(int,int,int,double,double,double,double))&lua_spawn2),
|
||||
luabind::def("unique_spawn", (Lua_Mob(*)(int,int,int,double,double,double))&lua_unique_spawn),
|
||||
luabind::def("unique_spawn", (Lua_Mob(*)(int,int,int,double,double,double,double))&lua_unique_spawn),
|
||||
@@ -1360,6 +1428,7 @@ luabind::scope lua_register_general() {
|
||||
luabind::def("get_initiator", &lua_get_initiator),
|
||||
luabind::def("get_owner", &lua_get_owner),
|
||||
luabind::def("get_quest_item", &lua_get_quest_item),
|
||||
luabind::def("get_encounter", &lua_get_encounter),
|
||||
luabind::def("map_opcodes", &lua_map_opcodes),
|
||||
luabind::def("clear_opcode", &lua_clear_opcode),
|
||||
luabind::def("enable_recipe", &lua_enable_recipe),
|
||||
|
||||
Reference in New Issue
Block a user