mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-17 18:41:29 +00:00
[Quest API] Cleanup Proximity Events (#2697)
* [Quest API] Cleanup Proximity Events # Perl - Add `$area_id` export to EVENT_ENTER_AREA. - Add `$area_type` export to EVENT_ENTER_AREA. - Add `$area_id` export to EVENT_LEAVE_AREA. - Add `$area_type` export to EVENT_LEAVE_AREA. # Notes - This is so Spire will parse these events properly. * Update entity.cpp * Update entity.cpp * Update entity.cpp * Update entity.cpp
This commit is contained in:
parent
039d4f09e3
commit
3e4231c662
@ -2004,6 +2004,15 @@ void PerlembParser::ExportEventVariables(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case EVENT_ENTER_AREA:
|
||||||
|
case EVENT_LEAVE_AREA: {
|
||||||
|
if (extra_pointers && extra_pointers->size() >= 2) {
|
||||||
|
ExportVar(package_name.c_str(), "area_id", *std::any_cast<int*>(extra_pointers->at(0)));
|
||||||
|
ExportVar(package_name.c_str(), "area_type", *std::any_cast<int*>(extra_pointers->at(1)));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4007,14 +4007,31 @@ void EntityList::ProcessMove(Client *c, const glm::vec3& location)
|
|||||||
|
|
||||||
for (auto iter = events.begin(); iter != events.end(); ++iter) {
|
for (auto iter = events.begin(); iter != events.end(); ++iter) {
|
||||||
quest_proximity_event& evt = (*iter);
|
quest_proximity_event& evt = (*iter);
|
||||||
if (evt.npc) {
|
|
||||||
std::vector<std::any> args;
|
|
||||||
parse->EventNPC(evt.event_id, evt.npc, evt.client, "", 0, &args);
|
|
||||||
} else {
|
|
||||||
std::vector<std::any> args;
|
std::vector<std::any> args;
|
||||||
args.push_back(&evt.area_id);
|
args.push_back(&evt.area_id);
|
||||||
args.push_back(&evt.area_type);
|
args.push_back(&evt.area_type);
|
||||||
parse->EventPlayer(evt.event_id, evt.client, "", 0, &args);
|
|
||||||
|
if (evt.npc) {
|
||||||
|
if (evt.event_id == EVENT_ENTER) {
|
||||||
|
parse->EventNPC(EVENT_ENTER, evt.npc, evt.client, "", 0);
|
||||||
|
} else if (evt.event_id == EVENT_EXIT) {
|
||||||
|
parse->EventNPC(EVENT_EXIT, evt.npc, evt.client, "", 0);
|
||||||
|
} else if (evt.event_id == EVENT_ENTER_AREA) {
|
||||||
|
parse->EventNPC(EVENT_ENTER_AREA, evt.npc, evt.client, "", 0, &args);
|
||||||
|
} else if (evt.event_id == EVENT_LEAVE_AREA) {
|
||||||
|
parse->EventNPC(EVENT_LEAVE_AREA, evt.npc, evt.client, "", 0, &args);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (evt.event_id == EVENT_ENTER) {
|
||||||
|
parse->EventPlayer(EVENT_ENTER, evt.client, "", 0);
|
||||||
|
} else if (evt.event_id == EVENT_EXIT) {
|
||||||
|
parse->EventPlayer(EVENT_EXIT, evt.client, "", 0);
|
||||||
|
} else if (evt.event_id == EVENT_ENTER_AREA) {
|
||||||
|
parse->EventNPC(EVENT_ENTER_AREA, evt.npc, evt.client, "", 0, &args);
|
||||||
|
} else if (evt.event_id == EVENT_LEAVE_AREA) {
|
||||||
|
parse->EventNPC(EVENT_LEAVE_AREA, evt.npc, evt.client, "", 0, &args);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4067,10 +4084,20 @@ void EntityList::ProcessMove(NPC *n, float x, float y, float z) {
|
|||||||
|
|
||||||
for (auto iter = events.begin(); iter != events.end(); ++iter) {
|
for (auto iter = events.begin(); iter != events.end(); ++iter) {
|
||||||
quest_proximity_event &evt = (*iter);
|
quest_proximity_event &evt = (*iter);
|
||||||
|
|
||||||
std::vector<std::any> args;
|
std::vector<std::any> args;
|
||||||
args.push_back(&evt.area_id);
|
args.push_back(&evt.area_id);
|
||||||
args.push_back(&evt.area_type);
|
args.push_back(&evt.area_type);
|
||||||
parse->EventNPC(evt.event_id, evt.npc, evt.client, "", 0, &args);
|
|
||||||
|
if (evt.event_id == EVENT_ENTER) {
|
||||||
|
parse->EventNPC(EVENT_ENTER, evt.npc, evt.client, "", 0);
|
||||||
|
} else if (evt.event_id == EVENT_EXIT) {
|
||||||
|
parse->EventNPC(EVENT_EXIT, evt.npc, evt.client, "", 0);
|
||||||
|
} else if (evt.event_id == EVENT_ENTER_AREA) {
|
||||||
|
parse->EventNPC(EVENT_ENTER_AREA, evt.npc, evt.client, "", 0, &args);
|
||||||
|
} else if (evt.event_id == EVENT_LEAVE_AREA) {
|
||||||
|
parse->EventNPC(EVENT_LEAVE_AREA, evt.npc, evt.client, "", 0, &args);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user