private void StartRace(Race race) { race = new Race(race); CurrentRace = race; Opponents.ForEach(op => { if (!op.Vehicle.IsNull) { API.deleteEntity(op.Vehicle); } API.unspectatePlayer(op.Client); }); foreach (var ent in Objects) { API.deleteEntity(ent); } Objects.Clear(); foreach (var prop in race.DecorativeProps) { Objects.Add(API.createObject(prop.Hash, prop.Position, prop.Rotation)); } var clients = API.getAllPlayers(); for (int i = 0; i < clients.Count; i++) { SetUpPlayerForRace(clients[i], CurrentRace, true, i); } RaceStart = DateTime.UtcNow; API.consoleOutput("RACE: Starting race " + race.Name); IsRaceStarting = true; var t = new Thread((ThreadStart) delegate { Thread.Sleep(10000); IsRaceStarting = false; API.triggerClientEventForAll("startRaceCountdown"); Thread.Sleep(3000); IsRaceOngoing = true; var nat = 0x428CA6DBD1094446; lock (Opponents) foreach (var opponent in Opponents) { API.setEntityPositionFrozen(opponent.Client, opponent.Vehicle, false); } }); t.IsBackground = true; t.Start(); }
public void onResourceStop(object sender, EventArgs e) { API.triggerClientEventForAll("resetRace"); Opponents.ForEach(op => { op.HasFinished = false; op.CheckpointsPassed = 0; if (!op.Vehicle.IsNull) { API.deleteEntity(op.Vehicle); } }); foreach (var ent in Objects) { API.deleteEntity(ent); } foreach (var t in ActiveThreads) { if (!t.IsAlive) { continue; } t.Abort(); } }
private void StartRace(Race race) { race = new Race(race); //Game.FadeScreenOut(500); CurrentRace = race; /*if (_raceSettings["Laps"] > 1) * { * _totalLaps = race.Checkpoints.Length; * List<Vector3> tmpCheckpoints = new List<Vector3>(); * for (int i = 0; i < _raceSettings["Laps"]; i++) * { * tmpCheckpoints.AddRange(race.Checkpoints); * } * _currentRace.Checkpoints = tmpCheckpoints.ToArray(); * }*/ Opponents.ForEach(op => { op.HasFinished = false; op.CheckpointsPassed = 0; }); lock (Program.ServerInstance.Clients) for (int i = 0; i < Program.ServerInstance.Clients.Count; i++) { SetUpPlayerForRace(Program.ServerInstance.Clients[i], CurrentRace, true, i); } CurrentRaceCheckpoints = race.Checkpoints.ToList(); RaceStart = DateTime.UtcNow; Console.WriteLine("RACE: Starting race " + race.Name); var t = new Thread((ThreadStart) delegate { Thread.Sleep(10000); Program.ServerInstance.SendNotificationToAll("3"); // I should probably automate this Thread.Sleep(1000); Program.ServerInstance.SendNotificationToAll("2"); Thread.Sleep(1000); Program.ServerInstance.SendNotificationToAll("1"); Thread.Sleep(1000); Program.ServerInstance.SendNotificationToAll("Go!"); IsRaceOngoing = true; lock (Opponents) foreach (var opponent in Opponents) { Program.ServerInstance.SendNativeCallToPlayer(opponent.Client, 0x428CA6DBD1094446, opponent.Vehicle, false); opponent.HasStarted = true; } }); t.Start(); }
public void MapChange(string mapName, XmlGroup map) { EndRace(); API.consoleOutput("Parsing map..."); var race = new Race(parseRace(mapName, map)); API.consoleOutput("Map parse done! Race null? " + (race == null)); CurrentRace = race; Opponents.ForEach(op => { op.HasFinished = false; op.CheckpointsPassed = 0; op.TimeFinished = ""; if (!op.Vehicle.IsNull) { API.deleteEntity(op.Vehicle); } API.freezePlayer(op.Client, true); }); if (Objects != null) { foreach (var ent in Objects) { API.deleteEntity(ent); } Objects.Clear(); } else { Objects = new List <NetHandle>(); } var clients = API.getAllPlayers(); for (int i = 0; i < clients.Count; i++) { API.freezePlayer(clients[i], false); SetUpPlayerForRace(clients[i], CurrentRace, true, i); } CurrentRaceCheckpoints = race.Checkpoints.ToList(); RaceStart = DateTime.UtcNow; API.consoleOutput("RACE: Starting race " + race.Name); RaceStartCountdown = 13; }
private void StartRace(Race race) { race = new Race(race); CurrentRace = race; Opponents.ForEach(op => { op.HasFinished = false; op.CheckpointsPassed = 0; if (!op.Vehicle.IsNull) { API.deleteEntity(op.Vehicle); } }); foreach (var ent in Objects) { API.deleteEntity(ent); } Objects.Clear(); foreach (var prop in race.DecorativeProps) { Objects.Add(API.createObject(prop.Hash, prop.Position, prop.Rotation)); } var clients = API.getAllPlayers(); for (int i = 0; i < clients.Count; i++) { SetUpPlayerForRace(clients[i], CurrentRace, true, i); } CurrentRaceCheckpoints = race.Checkpoints.ToList(); RaceStart = DateTime.UtcNow; API.consoleOutput("CARRERA: Comenzando la carrera " + race.Name); RaceStartCountdown = 13; }