Пример #1
0
    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();
    }
Пример #2
0
    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();
        }
    }
Пример #3
0
        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();
        }
Пример #4
0
    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;
    }
Пример #5
0
        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;
        }