示例#1
0
        public static void ShowInGameMenu()
        {
            if (User.GetStatusType() != StatusTypes.InGame)
            {
                return;
            }

            HideMenu();

            var menu = new Menu();

            UiMenu = menu.Create("Menu", "~b~Main menu");

            menu.AddMenuItem(UiMenu, "~y~Drop Current Weapon").Activated += (uimenu, item) =>
            {
                HideMenu();
                SetPedDropsWeapon(GetPlayerPed(-1));
            };

            menu.AddMenuItem(UiMenu, "~r~Close").Activated += (uimenu, item) =>
            {
                HideMenu();
            };

            MenuPool.Add(UiMenu);
        }
示例#2
0
        private static async Task TimeSync()
        {
            if (IsHudPreferenceSwitchedOn() || Screen.Hud.IsVisible)
            {
                TimerBarPool.Draw();

                if (User.Data.money < 0)
                {
                    DrawText("$" + User.Data.money.ToString("#,#"), 15, 50, 0.6f, 244, 67, 54, 255, 7, 2, false, true, 0, 0, 2);
                }
                else
                {
                    DrawText("$" + User.Data.money.ToString("#,#"), 15, 50, 0.6f, 115, 186, 131, 255, 7, 2, false, true, 0, 0, 2);
                }

                DrawText($"Players: {CurrentOnline}", 130, 8, 0.3f, 255, 255, 255, 150, 0, 2, false, false, 0, 0, 2);
                if (User.GetStatusType() == StatusTypes.InGame)
                {
                    DrawText($"M - Game Menu | Players: {CurrentOnline}", 130, 8, 0.3f, 255, 255, 255, 150, 0, 2, false, false, 0, 0, 2);
                }
                if (User.GetStatusType() == StatusTypes.Spectator)
                {
                    DrawText($"Arrow LEFT and RIGHT switch player | Players: {CurrentOnline}", 130, 8, 0.3f, 255, 255, 255, 150, 0, 2, false, false, 0, 0, 2);
                }
            }
        }
示例#3
0
        private static async Task ProcessMenuPool()
        {
            MenuPool.ProcessMenus();

            if (MenuPool.ToList().Count == 0 && Camera != null)
            {
                Camera = null;
                ShowShopMenu();
            }

            if (Game.IsControlJustPressed(0, (Control)244) || Game.IsDisabledControlJustPressed(0, (Control)244))   //M
            {
                ShowInGameMenu();
            }

            if (Game.IsControlJustPressed(0, (Control)174) || Game.IsDisabledControlJustPressed(0, (Control)174))   // left
            {
                if (User.GetStatusType() != StatusTypes.Spectator)
                {
                    return;
                }

                var list = new NavigationList <Player>();
                list.AddRange(new PlayerList().Where(p => !p.IsDead).Where(p => !p.IsInvincible));
                try
                {
                    User.StartSpec(list.MovePrevious);
                }
                catch (Exception e)
                {
                    Debug.WriteLine($"{list.Count} | {e}");
                    User.StartSpec(list.First());
                }
            }
            else if (Game.IsControlJustPressed(0, (Control)175) || Game.IsDisabledControlJustPressed(0, (Control)175))   // right
            {
                if (User.GetStatusType() != StatusTypes.Spectator)
                {
                    return;
                }
                var list = new NavigationList <Player>();
                list.AddRange(new PlayerList().Where(p => !p.IsDead).Where(p => !p.IsInvincible));
                try
                {
                    User.StartSpec(list.MoveNext);
                }
                catch (Exception e)
                {
                    Debug.WriteLine($"{list.Count} | {e}");
                    User.StartSpec(list.Last());
                }
            }
        }
        private static async Task SetTick()
        {
            var player = PlayerId();

            if (NetworkIsPlayerActive(player))
            {
                var ped = PlayerPedId();

                if (IsPedFatallyInjured(ped) && !_isDead)
                {
                    _isDead = true;

                    if (!_isDead)
                    {
                        _diedAt = GetGameTimer();
                    }

                    var killer            = NetworkGetEntityKillerOfPlayer(player, ref KillerWeapon);
                    var killerEntityType  = GetEntityType(killer);
                    var killerType        = -1;
                    var killerVehicleName = "";
                    var killerId          = GetPlayerByEntityId(killer);

                    if (killerEntityType == 1)
                    {
                        killerType = GetPedType(killer);

                        if (IsPedInAnyVehicle(killer, false))
                        {
                            killerVehicleName = GetDisplayNameFromVehicleModel((uint)GetEntityModel(GetVehiclePedIsUsing(killer)));
                        }
                    }

                    if (killer != ped && killerId != -1 && NetworkIsPlayerActive(killerId))
                    {
                        killerId = GetPlayerServerId(killerId);
                    }

                    if (killer == ped || killer == -1 || killerId == -1 || killerType == -1)
                    {
                        /*var pos = GetEntityCoords(ped, true);
                         * TriggerEvent("ARP:OnPlayerDeath", killerType, pos.X, pos.Y, pos.Z);*/
                        _hasBeenDead = true;
                    }
                    else
                    {
                        var pos       = GetEntityCoords(ped, true);
                        var killerPos = GetEntityCoords(GetPlayerPed(killerId), true);
                        TriggerEvent("ARP:OnPlayerKiller", killerType, killerId, KillerWeapon, killerVehicleName, pos.X, pos.Y, pos.Z, killerPos.X, killerPos.Y, killerPos.Z);

                        if (User.GetStatusType() == StatusTypes.Briefing)
                        {
                            if (User.MapInfo.Briefing > 15)
                            {
                                TriggerServerEvent("TTT:KickByPlayer", killerId, "RDM");
                                User.SetStatusType(StatusTypes.Briefing);
                            }
                        }

                        if (User.GetStatusType() == StatusTypes.InGame)
                        {
                            if ((int)await Sync.Data.Get(User.GetServerId(), "playerType") ==
                                (int)await Sync.Data.Get(killerId, "playerType"))
                            {
                                if (await Sync.Data.Has(killerId, "playerWarning"))
                                {
                                    int count = (int)await Sync.Data.Get(killerId, "playerType") + 1;

                                    Sync.Data.Set(killerId, "playerWarning", count);
                                    if (count > 3)
                                    {
                                        TriggerServerEvent("TTT:KickByPlayer", killerId, "RDM");
                                    }
                                }
                                else
                                {
                                    Sync.Data.Set(killerId, "playerWarning", 1);
                                }
                            }
                        }


                        Client.Sync.Data.Set(User.GetServerId(), "deathReason", KillerWeapon);
                        _hasBeenDead = true;
                    }
                }
                else if (IsPedFatallyInjured(ped))
                {
                    _isDead = false;
                    _diedAt = -1;
                }

                if (!_hasBeenDead && _diedAt > 0)
                {
                    /*var pos = GetEntityCoords(ped, true);
                     * TriggerEvent("ARP:OnPlayerWasted", pos.X, pos.Y, pos.Z);*/
                    _hasBeenDead = true;
                }
                else if (_hasBeenDead && _diedAt <= 0)
                {
                    _hasBeenDead = false;
                }
            }
        }
        private static async Task SecTimer()
        {
            await Delay(1000);

            UI.CurrentOnline = new PlayerList().Count();

            SetWeatherTypePersist(User.MapInfo.Weather);
            SetWeatherTypeNowPersist(User.MapInfo.Weather);
            SetWeatherTypeNow(User.MapInfo.Weather);
            SetOverrideWeather(User.MapInfo.Weather);

            if (User.GameInfo.Active)
            {
                if (User.GameInfo.CamType == 0)
                {
                    if (GetFollowPedCamViewMode() != 4)
                    {
                        SetFollowPedCamViewMode(4);
                    }
                }
                else
                {
                    if (GetFollowPedCamViewMode() != 1)
                    {
                        SetFollowPedCamViewMode(1);
                    }
                }
            }

            if (User.GetStatusType() == StatusTypes.InGame || User.GetStatusType() == StatusTypes.Briefing)
            {
                var playerPos = GetEntityCoords(GetPlayerPed(-1), true);
                if (Main.GetDistance(playerPos, new Vector3((float)User.MapInfo.CenterX, (float)User.MapInfo.CenterY, (float)User.MapInfo.CenterZ)) > (float)User.MapInfo.MaxRadius || !User.MapInfo.CanSwim && (IsPedSwimming(GetPlayerPed(-1)) || IsPedSwimmingUnderWater(GetPlayerPed(-1))))
                {
                    float spawnX = (float)await Sync.Data.Get(User.GetServerId(), "spawnPosX");

                    float spawnY = (float)await Sync.Data.Get(User.GetServerId(), "spawnPosY");

                    float spawnZ = (float)await Sync.Data.Get(User.GetServerId(), "spawnPosZ");

                    User.Teleport(new Vector3(spawnX, spawnY, spawnZ));
                }

                if (IsEntityDead(GetPlayerPed(-1)))
                {
                    NetworkSetVoiceChannel(1);
                    Sync.Data.Set(User.GetServerId(), "isDead", true);

                    if (!NetworkIsInSpectatorMode())
                    {
                        User.SetStatusType(StatusTypes.Spectator);
                    }
                }
            }
            if (User.GetStatusType() == StatusTypes.Lobby)
            {
                if (await Sync.Data.Has(-1, "GameTimer"))
                {
                    var t = TimeSpan.FromSeconds((int)await Sync.Data.Get(-1, "GameTimer"));
                    Screen.LoadingPrompt.Show($"Wait new game: {t.Minutes}:{t.Seconds:d2}");
                    await Delay(4000);
                }
                else if (await Sync.Data.Has(-1, "BriefingTimer"))
                {
                    Screen.LoadingPrompt.Show("Wait new game...");
                    await Delay(4000);
                }
                else
                {
                    Sync.Data.Set(User.GetServerId(), "Lobby", true);
                    if (User.LobbyInfo.CountPlayers < 2)
                    {
                        Screen.LoadingPrompt.Show($"Wait more players... {User.LobbyInfo.CountPlayers}/2");
                        Sync.Data.Set(-1, "StartTimer", 121);
                    }
                    else if (Screen.LoadingPrompt.IsActive)
                    {
                        Screen.LoadingPrompt.Hide();
                    }
                }
            }
            if (User.GetStatusType() == StatusTypes.Spectator)
            {
                if (IsEntityDead(GetPlayerPed(User.GetSpecLast())))
                {
                    User.SetStatusType(StatusTypes.Spectator);
                    await Delay(5000);
                }
            }
        }