Browse Source

Gate to bind Enabled. Added missing Lua Functions ( GetCanGate(Player)/SetCanGate(Player,Val) ).

root 1 year ago
parent
commit
efcf967100

+ 23 - 0
EQ2/source/WorldServer/LuaFunctions.cpp

@@ -11069,6 +11069,29 @@ int EQ2Emu_lua_GetCanBind(lua_State* state) {
 	return 0;
 }
 
+int EQ2Emu_lua_SetCanGate(lua_State* state) {
+	if (!lua_interface)
+		return 0;
+	Spawn* player = lua_interface->GetSpawn(state);
+	ZoneServer* zone = player->GetZone();
+	bool cangate = lua_interface->GetInt32Value(state, 2);
+	if (zone)
+		zone->SetCanGate(cangate);
+	return 0;
+}
+
+int EQ2Emu_lua_GetCanGate(lua_State* state) {
+	if (!lua_interface)
+		return 0;
+	Spawn* player = lua_interface->GetSpawn(state);
+	ZoneServer* zone = player->GetZone();
+	if (zone) {
+		lua_interface->SetInt32Value(state, zone->GetCanGate());
+		return 1;
+	}
+	return 0;
+}
+
 int EQ2Emu_lua_AddSpawnProximity(lua_State* state) {
 	if (!lua_interface)
 		return 0;

+ 3 - 0
EQ2/source/WorldServer/LuaFunctions.h

@@ -508,6 +508,9 @@ int EQ2Emu_lua_GetZoneHolidayFlag(lua_State* state);
 int EQ2Emu_lua_SetCanBind(lua_State* state);
 int EQ2Emu_lua_GetCanBind(lua_State* state);
 
+int EQ2Emu_lua_GetCanGate(lua_State* state);
+int EQ2Emu_lua_SetCanGate(lua_State* state);
+
 int EQ2Emu_lua_AddSpawnProximity(lua_State* state);
 
 int EQ2Emu_lua_CanSeeInvis(lua_State* state);

+ 2 - 0
EQ2/source/WorldServer/LuaInterface.cpp

@@ -1368,6 +1368,8 @@ void LuaInterface::RegisterFunctions(lua_State* state) {
 	lua_register(state, "SetCanBind", EQ2Emu_lua_SetCanBind);
 	lua_register(state, "GetCanBind", EQ2Emu_lua_GetCanBind);
 
+	lua_register(state, "GetCanGate", EQ2Emu_lua_GetCanGate);
+
 	lua_register(state, "AddSpawnProximity", EQ2Emu_lua_AddSpawnProximity);
 
 	lua_register(state, "CanSeeInvis", EQ2Emu_lua_CanSeeInvis);

+ 2 - 1
EQ2/source/WorldServer/client.cpp

@@ -8394,9 +8394,10 @@ bool Client::Bind() {
 }
 
 bool Client::Gate(bool is_spell) {
-	if (player->GetPlayerInfo()->GetBindZoneID() == 0)
+	if (player->GetPlayerInfo()->GetBindZoneID() == 0) {
 		SimpleMessage(CHANNEL_MERCHANT, "You can not cast recall spells. You have no bind location set.");
 		return false;
+	}
 
 	ZoneServer* zone = zone_list.Get(player->GetPlayerInfo()->GetBindZoneID());
 	if (zone) {