示例#1
0
        public static void ShowLobbyMenu()
        {
            HideMenu();

            var menu = new Menu();

            UiMenu = menu.Create("Lobby", "~b~Vote", true, true);

            var listCam = new List <dynamic> {
                "First person", "Third person"
            };

            menu.AddMenuItemList(UiMenu, "Camera", listCam, "Press enter if u wanna vote").OnListSelected += (uimenu, idx) =>
            {
                Sync.Data.Set(User.GetServerId(), "CameraType", idx);
            };

            menu.AddMenuItem(UiMenu, "~y~Exit to main menu").Activated += (uimenu, item) =>
            {
                HideMenu();
                User.SetStatusType(StatusTypes.MainMenu);
            };

            MenuPool.Add(UiMenu);
        }
示例#2
0
        private static async Task Sec60Timer()
        {
            await Delay(1000 * 60);

            if (User.IsAdmin())
            {
                foreach (var player in new PlayerList())
                {
                    if (player.ServerId == User.GetServerId())
                    {
                        continue;
                    }
                    var entity = new MyEntity(GetPlayerPed(player.Handle));
                    if (!PlayerBlips.ContainsKey(player.ServerId))
                    {
                        var b    = AddBlipForEntity(entity.Handle);
                        var blip = new Blip(b)
                        {
                            Sprite       = (BlipSprite)1,
                            Name         = "Игрок",
                            IsShortRange = true
                        };
                        PlayerBlips.Add(player.ServerId, blip);
                    }
                }
            }
        }
        public static async void StartGame(int traitor1, int traitor2, int traitor3, int traitor4, int detective1, int detective2, int gameTimer, int camType)
        {
            User.SetStatusType(StatusTypes.InGame);

            await Delay(500);

            User.GameInfo.Active     = true;
            User.GameInfo.CamType    = camType;
            User.GameInfo.Timer      = gameTimer;
            User.GameInfo.Traitor1   = traitor1;
            User.GameInfo.Traitor2   = traitor2;
            User.GameInfo.Traitor3   = traitor3;
            User.GameInfo.Traitor4   = traitor4;
            User.GameInfo.Detective1 = detective1;
            User.GameInfo.Detective2 = detective2;

            var playerId = User.GetServerId();

            if (playerId == User.GameInfo.Traitor1)
            {
                User.GameInfo.PlayerType = PlayerTypes.Traitor;
            }
            else if (playerId == User.GameInfo.Traitor2)
            {
                User.GameInfo.PlayerType = PlayerTypes.Traitor;
            }
            else if (playerId == User.GameInfo.Traitor3)
            {
                User.GameInfo.PlayerType = PlayerTypes.Traitor;
            }
            else if (playerId == User.GameInfo.Traitor4)
            {
                User.GameInfo.PlayerType = PlayerTypes.Traitor;
            }
            else if (playerId == User.GameInfo.Detective1)
            {
                User.GameInfo.PlayerType = PlayerTypes.Detective;
            }
            else if (playerId == User.GameInfo.Detective2)
            {
                User.GameInfo.PlayerType = PlayerTypes.Detective;
            }
            else
            {
                User.GameInfo.PlayerType = PlayerTypes.Innocent;
            }

            if (User.GameInfo.PlayerType == PlayerTypes.Traitor)
            {
                MenuList.ShowWeaponShopMenu("Special");
            }

            Sync.Data.Set(User.GetServerId(), "playerType", User.GameInfo.PlayerType);
        }
示例#4
0
        public static void ShowVoteMapMenu()
        {
            HideMenu();

            if (User.MapList == null)
            {
                return;
            }

            var menu = new Menu();

            UiMenu = menu.Create("Lobby", "~b~Vote map", true, true);

            foreach (var item in (IList <Object>)User.MapList)
            {
                menu.AddMenuItem(UiMenu, item.ToString()).Activated += (uimenu, idx) =>
                {
                    Sync.Data.Set(User.GetServerId(), "voteMap", item.ToString());
                    Notification.Send($"You are vote ~g~{item}");
                };
            }

            MenuPool.Add(UiMenu);
        }
示例#5
0
        public static async void ShowShopMenu()
        {
            HideMenu();

            var menu = new Menu();

            UiMenu = menu.Create("Shop", "~b~Skin Shop", true, true);

            RequestCollisionAtCoord(9.653649f, 528.3086f, 169.635f);
            await Delay(1000);

            User.Teleport(new Vector3(9.653649f, 528.3086f, 169.635f));
            NetworkResurrectLocalPlayer(9.653649f, 528.3086f, 169.635f, 120.0613f, true, true);
            User.PedRotation(120.0613f);

            User.Freeze(true);

            Camera          = new CitizenFX.Core.Camera(CreateCam("DEFAULT_SCRIPTED_CAMERA", true));
            Camera.IsActive = true;
            Camera.Position = new Vector3(8.243752f, 527.4373f, 171.6173f);
            Camera.PointAt(new Vector3(9.653649f, 528.3086f, 171.335f));
            RenderScriptCams(true, false, Camera.Handle, false, false);

            var skinList = Main.GetAllSkinList();

            var listSkin = new List <dynamic>();

            for (int i = 0; i < skinList.Length / 2; i++)
            {
                listSkin.Add("$" + skinList[i, 1].ToString());
            }


            var skinListMenu = menu.AddMenuItemList(UiMenu, "Skin List", listSkin, "Press enter if u wanna buy");

            skinListMenu.OnListSelected += async(uimenu, idx) =>
            {
                int sum = (int)skinList[idx, 1];
                if (await User.GetCashMoney() < sum)
                {
                    Notification.Send("~r~You dont have money");
                    return;
                }
                User.RemoveCashMoney(sum);
                Sync.Data.Set(User.GetServerId(), "skin", (string)skinList[idx, 0]);
                User.Data.skin = (string)skinList[idx, 0];
                User.SetSkin((string)skinList[idx, 0]);
                Notification.Send($"~g~You are buy new skin. Price: ${sum:#,#}");
            };

            skinListMenu.OnListChanged += (uimenu, idx) =>
            {
                User.SetSkin((string)skinList[idx, 0]);
            };

            menu.AddMenuItem(UiMenu, "~y~Exit to main menu").Activated += (uimenu, item) =>
            {
                HideMenu();
                User.Freeze(false);
                Camera.Delete();
                Camera = null;
                RenderScriptCams(false, true, 500, true, true);
                User.SetSkin(User.Data.skin);
                User.SetStatusType(StatusTypes.MainMenu);
            };

            MenuPool.Add(UiMenu);
        }
 public static CitizenFX.Core.Player GetPlayerOnRadius(Vector3 pos, float radius)
 {
     return(new PlayerList().Where(player => player.ServerId != User.GetServerId()).FirstOrDefault(player => GetDistance(pos, GetEntityCoords(GetPlayerPed(player.Handle), true)) < radius));
 }
        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);
                }
            }
        }