public static void ToggleDoor(Client player, params object[] arguments) { // Setup to find our target door. DoorInfo targetDoor = null; for (int i = 0; i < doors.Count; i++) { if (doors[i].DoorLocation.DistanceTo2D(player.position) > 5) { continue; } targetDoor = doors[i]; break; } // If our target door does not exist. Stop. if (targetDoor == null) { return; } if (!player.hasData("Instance")) { return; } Player instance = player.getData("Instance"); if (instance.Id != targetDoor.OwnerId) { return; } if (targetDoor.Locked) { targetDoor.Locked = false; API.shared.triggerClientEvent(player, "HeadNotification", "~g~Door unlocked."); } else { targetDoor.Locked = true; API.shared.triggerClientEvent(player, "HeadNotification", "~r~Door locked."); } }
public static void EnterDoor(Client player, params object[] arguments) { if (arguments.Length <= 0) { return; } // Setup to find our target door. DoorInfo targetDoor = null; string doorID = arguments[0].ToString().Replace("Door-", string.Empty); // Find our target door. for (int i = 0; i < doors.Count; i++) { if (doors[i].Id.Replace("Door-", string.Empty) != doorID) { continue; } targetDoor = doors[i]; break; } // If our target door does not exist. Stop. if (targetDoor == null) { Console.WriteLine("[Door] Not a valid door. " + arguments[0].ToString()); return; } // If our target door is locked, don't let the player in. if (targetDoor.Locked) { API.shared.triggerClientEvent(player, "HeadNotification", "~r~This door is locked."); return; } // Load the IPL if it hasn't been loaded today, then teleport them into the interior. loadIPL(targetDoor.IPL); AnticheatInfo info = player.getData("Anticheat"); info.LastPosition = targetDoor.InteriorLocation; player.setData("LastPosition", player.position); player.position = targetDoor.InteriorLocation; player.dimension = targetDoor.CoreId; }
public static void LoadAllDoors() { DataTable table = db.executeQueryWithResult("SELECT * FROM Doors"); if (table.Rows.Count <= 0) { return; } int count = 0; foreach (DataRow row in table.Rows) { DoorInfo door = new DoorInfo(row); doors.Add(door); EventManager.events.Add(new EventInfo($"{door.Id}", "DoorCalls", "EnterInterior")); API.shared.consoleOutput($"Door Loaded: {door.Id}"); count++; } Console.WriteLine("[Doors] TOTAL COUNT: " + count.ToString()); }