using System.Collections.Generic; using ReallifeGamemode.Server.Services; using GTANetworkAPI; using System.Linq; namespace ReallifeGamemode.Server.Util { public class CheckPointHandle : Script { public static List listHandle = new List(); public static void StartCheckPointRoute(Client player, IEnumerable nListCps, int delay, int markerID, string nEvent) { RemovePlayerHandlerFromList(player); CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, nEvent); listHandle.Add(playerHandle); playerHandle.StartRoute(); } public static void RemovePlayerHandlerFromList(Client player) { CheckPointListForPlayer temp = null; for (int a = 0; a < listHandle.Count; a++) { temp = listHandle[a]; if (temp.player == player) { listHandle.Remove(temp); } } } [RemoteEvent("playerInCheckpoint")] public void PlayerInCheckpoint(Client user) { CheckPointListForPlayer temp = null; for (int a = 0; a < listHandle.Count; a++) { temp = listHandle[a]; if (temp.player == user) { break; } } temp.NextCheckpoint(); } } public class CheckPointListForPlayer { public IEnumerable list = new List(); public Client player; public int delay = 0; public int markerID; public string eventInCheckpoint = ""; int checkPointsDone = 0; public CheckPointListForPlayer(Client nPlayer, IEnumerable nList, int nDelay, int nMarkerID, string nEvent) { this.player = nPlayer; this.list = nList; this.delay = nDelay; this.markerID = nMarkerID; this.eventInCheckpoint = nEvent; this.checkPointsDone = 0; } public void StartRoute() { player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.eventInCheckpoint); } public void NextCheckpoint() { this.checkPointsDone++; if (this.list.Count() > checkPointsDone) { Vector3 nextCp = list.ElementAt(checkPointsDone); this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.eventInCheckpoint); } if (this.list.Count() == checkPointsDone) { CheckPointHandle.RemovePlayerHandlerFromList(this.player); } } } }