mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
[Quest API] Add Proximity Range Methods to Perl/Lua. (#2572)
# Perl - Add `quest::set_proximity_range(x_range, y_range)`. - Add `quest::set_proximity_range(x_range, y_range, z_range)`. - Add `quest::set_proximity_range(x_range, y_range, z_range, enable_say)`. # Lua - Add `eq.set_proximity_range(x_range, y_range)`. - Add `eq.set_proximity_range(x_range, y_range, z_range)`. - Add `eq.set_proximity_range(x_range, y_range, z_range, enable_say)`. # Notes - Allows a shorthand for setting proximities. - Automatically uses NPC's current location versus having to provide it.
This commit is contained in:
parent
4423a9f160
commit
1d1ffc66fe
@ -861,9 +861,9 @@ void Perl__set_proximity(float min_x, float max_x, float min_y, float max_y, flo
|
||||
quest_manager.set_proximity(min_x, max_x, min_y, max_y, min_z, max_z);
|
||||
}
|
||||
|
||||
void Perl__set_proximity(float min_x, float max_x, float min_y, float max_y, float min_z, float max_z, bool say)
|
||||
void Perl__set_proximity(float min_x, float max_x, float min_y, float max_y, float min_z, float max_z, bool enable_say)
|
||||
{
|
||||
quest_manager.set_proximity(min_x, max_x, min_y, max_y, min_z, max_z, say);
|
||||
quest_manager.set_proximity(min_x, max_x, min_y, max_y, min_z, max_z, enable_say);
|
||||
}
|
||||
|
||||
void Perl__clear_proximity()
|
||||
@ -3867,6 +3867,21 @@ void Perl__sethotzone(bool is_hotzone)
|
||||
zone->SetIsHotzone(is_hotzone);
|
||||
}
|
||||
|
||||
void Perl__set_proximity_range(float x_range, float y_range)
|
||||
{
|
||||
quest_manager.set_proximity_range(x_range, y_range);
|
||||
}
|
||||
|
||||
void Perl__set_proximity_range(float x_range, float y_range, float z_range)
|
||||
{
|
||||
quest_manager.set_proximity_range(x_range, y_range, z_range);
|
||||
}
|
||||
|
||||
void Perl__set_proximity_range(float x_range, float y_range, float z_range, bool enable_say)
|
||||
{
|
||||
quest_manager.set_proximity_range(x_range, y_range, z_range, enable_say);
|
||||
}
|
||||
|
||||
void perl_register_quest()
|
||||
{
|
||||
perl::interpreter perl(PERL_GET_THX);
|
||||
@ -4396,6 +4411,9 @@ void perl_register_quest()
|
||||
package.add("set_proximity", (void(*)(float, float, float, float))&Perl__set_proximity);
|
||||
package.add("set_proximity", (void(*)(float, float, float, float, float, float))&Perl__set_proximity);
|
||||
package.add("set_proximity", (void(*)(float, float, float, float, float, float, bool))&Perl__set_proximity);
|
||||
package.add("set_proximity_range", (void(*)(float, float))&Perl__set_proximity_range);
|
||||
package.add("set_proximity_range", (void(*)(float, float, float))&Perl__set_proximity_range);
|
||||
package.add("set_proximity_range", (void(*)(float, float, float, bool))&Perl__set_proximity_range);
|
||||
package.add("set_zone_flag", &Perl__set_zone_flag);
|
||||
package.add("setallskill", &Perl__setallskill);
|
||||
package.add("setanim", &Perl__setanim);
|
||||
|
||||
@ -542,8 +542,8 @@ void lua_set_proximity(float min_x, float max_x, float min_y, float max_y, float
|
||||
quest_manager.set_proximity(min_x, max_x, min_y, max_y, min_z, max_z);
|
||||
}
|
||||
|
||||
void lua_set_proximity(float min_x, float max_x, float min_y, float max_y, float min_z, float max_z, bool say) {
|
||||
quest_manager.set_proximity(min_x, max_x, min_y, max_y, min_z, max_z, say);
|
||||
void lua_set_proximity(float min_x, float max_x, float min_y, float max_y, float min_z, float max_z, bool enable_say) {
|
||||
quest_manager.set_proximity(min_x, max_x, min_y, max_y, min_z, max_z, enable_say);
|
||||
}
|
||||
|
||||
void lua_clear_proximity() {
|
||||
@ -3579,6 +3579,21 @@ void lua_set_hotzone(bool is_hotzone)
|
||||
zone->SetIsHotzone(is_hotzone);
|
||||
}
|
||||
|
||||
void lua_set_proximity_range(float x_range, float y_range)
|
||||
{
|
||||
quest_manager.set_proximity_range(x_range, y_range);
|
||||
}
|
||||
|
||||
void lua_set_proximity_range(float x_range, float y_range, float z_range)
|
||||
{
|
||||
quest_manager.set_proximity_range(x_range, y_range, z_range);
|
||||
}
|
||||
|
||||
void lua_set_proximity_range(float x_range, float y_range, float z_range, bool enable_say)
|
||||
{
|
||||
quest_manager.set_proximity_range(x_range, y_range, z_range, enable_say);
|
||||
}
|
||||
|
||||
#define LuaCreateNPCParse(name, c_type, default_value) do { \
|
||||
cur = table[#name]; \
|
||||
if(luabind::type(cur) != LUA_TNIL) { \
|
||||
@ -3847,6 +3862,9 @@ luabind::scope lua_register_general() {
|
||||
luabind::def("set_proximity", (void(*)(float,float,float,float))&lua_set_proximity),
|
||||
luabind::def("set_proximity", (void(*)(float,float,float,float,float,float))&lua_set_proximity),
|
||||
luabind::def("set_proximity", (void(*)(float,float,float,float,float,float,bool))&lua_set_proximity),
|
||||
luabind::def("set_proximity_range", (void(*)(float,float))&lua_set_proximity_range),
|
||||
luabind::def("set_proximity_range", (void(*)(float,float,float))&lua_set_proximity_range),
|
||||
luabind::def("set_proximity_range", (void(*)(float,float,float,bool))&lua_set_proximity_range),
|
||||
luabind::def("clear_proximity", &lua_clear_proximity),
|
||||
luabind::def("enable_proximity_say", &lua_enable_proximity_say),
|
||||
luabind::def("disable_proximity_say", &lua_disable_proximity_say),
|
||||
|
||||
@ -1821,23 +1821,46 @@ void QuestManager::respawn(int npcTypeID, int grid) {
|
||||
}
|
||||
}
|
||||
|
||||
void QuestManager::set_proximity(float minx, float maxx, float miny, float maxy, float minz, float maxz, bool bSay)
|
||||
void QuestManager::set_proximity_range(float x_range, float y_range, float z_range, bool enable_say)
|
||||
{
|
||||
QuestManagerCurrentQuestVars();
|
||||
if (!owner || !owner->IsNPC()) {
|
||||
return;
|
||||
}
|
||||
|
||||
entity_list.AddProximity(owner->CastToNPC());
|
||||
auto n = owner->CastToNPC();
|
||||
|
||||
owner->CastToNPC()->proximity->min_x = minx;
|
||||
owner->CastToNPC()->proximity->max_x = maxx;
|
||||
owner->CastToNPC()->proximity->min_y = miny;
|
||||
owner->CastToNPC()->proximity->max_y = maxy;
|
||||
owner->CastToNPC()->proximity->min_z = minz;
|
||||
owner->CastToNPC()->proximity->max_z = maxz;
|
||||
owner->CastToNPC()->proximity->say = bSay;
|
||||
owner->CastToNPC()->proximity->proximity_set = true;
|
||||
entity_list.AddProximity(n);
|
||||
|
||||
n->proximity->min_x = n->GetX() - x_range;
|
||||
n->proximity->max_x = n->GetX() + x_range;
|
||||
n->proximity->min_y = n->GetY() - y_range;
|
||||
n->proximity->max_y = n->GetY() + y_range;
|
||||
n->proximity->min_z = n->GetZ() - z_range;
|
||||
n->proximity->max_z = n->GetZ() + z_range;
|
||||
n->proximity->say = enable_say;
|
||||
n->proximity->proximity_set = true;
|
||||
}
|
||||
|
||||
void QuestManager::set_proximity(float min_x, float max_x, float min_y, float max_y, float min_z, float max_z, bool enable_say)
|
||||
{
|
||||
QuestManagerCurrentQuestVars();
|
||||
if (!owner || !owner->IsNPC()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto n = owner->CastToNPC();
|
||||
|
||||
entity_list.AddProximity(n);
|
||||
|
||||
n->proximity->min_x = min_x;
|
||||
n->proximity->max_x = max_x;
|
||||
n->proximity->min_y = min_y;
|
||||
n->proximity->max_y = max_y;
|
||||
n->proximity->min_z = min_z;
|
||||
n->proximity->max_z = max_z;
|
||||
n->proximity->say = enable_say;
|
||||
n->proximity->proximity_set = true;
|
||||
}
|
||||
|
||||
void QuestManager::clear_proximity() {
|
||||
|
||||
@ -177,7 +177,8 @@ public:
|
||||
void setnexthpevent(int at);
|
||||
void setnextinchpevent(int at);
|
||||
void respawn(int npc_type, int grid);
|
||||
void set_proximity(float minx, float maxx, float miny, float maxy, float minz=-999999, float maxz=999999, bool bSay = false);
|
||||
void set_proximity(float min_x, float max_x, float min_y, float max_y, float min_z = -999999.0f, float max_z = 999999.0f, bool enable_say = false);
|
||||
void set_proximity_range(float x_range, float y_range, float z_range = 999999.0f, bool enable_say = false);
|
||||
void clear_proximity();
|
||||
void enable_proximity_say();
|
||||
void disable_proximity_say();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user