Exemplo n.º 1
0
        private static void StaticOnClientJoined(ulong obj)
        {
            if (obj == 0)
            {
                return;
            }
            if (BlockLimiterConfig.Instance.PlayerTimes.Any(x => x.Player == obj) == false)
            {
                Instance.Log.Warn($"{obj} logged to player time {DateTime.Now}");
                var playerTime = new PlayerTime {
                    Player = obj, Time = DateTime.Now
                };
                BlockLimiterConfig.Instance.PlayerTimes.Add(playerTime);
            }
            if (!BlockLimiterConfig.Instance.EnableLimits)
            {
                return;
            }
            var identityId = Utilities.GetPlayerIdFromSteamId(obj);

            if (identityId == 0)
            {
                return;
            }
            var playerFaction = MySession.Static.Factions.GetPlayerFaction(identityId);

            UpdateLimits.PlayerLimit(identityId);
            if (playerFaction != null)
            {
                UpdateLimits.PlayerLimit(playerFaction.FactionId);
            }
        }
Exemplo n.º 2
0
        private static void StaticOnClientJoined(ulong obj)
        {
            var player = MySession.Static.Players.TryGetPlayerBySteamId(obj);

            if (player == null)
            {
                return;
            }
            UpdateLimits.PlayerLimit(player);
        }
Exemplo n.º 3
0
        private void FactionsOnFactionStateChanged(MyFactionStateChange factionState, long fromFaction, long toFaction, long playerId, long senderId)
        {
            if (factionState == MyFactionStateChange.RemoveFaction)
            {
                foreach (var limit in BlockLimiterConfig.Instance.AllLimits)
                {
                    limit.Exceptions.Remove(fromFaction.ToString());
                    limit.FoundEntities.Remove(fromFaction);
                }

                return;
            }

            UpdateLimits.FactionLimit(fromFaction);
            UpdateLimits.FactionLimit(toFaction);
            UpdateLimits.PlayerLimit(playerId);
        }
Exemplo n.º 4
0
        private static void StaticOnClientJoined(ulong obj, string playerName)
        {
            if (obj == 0)
            {
                return;
            }
            if (!BlockLimiterConfig.Instance.EnableLimits)
            {
                return;
            }
            var identityId = Utilities.GetPlayerIdFromSteamId(obj);

            if (identityId == 0)
            {
                return;
            }
            var playerFaction = MySession.Static.Factions.GetPlayerFaction(identityId);

            UpdateLimits.PlayerLimit(identityId);
            if (playerFaction != null)
            {
                UpdateLimits.PlayerLimit(playerFaction.FactionId);
            }
        }
Exemplo n.º 5
0
        public static void ResetLimits(bool updateGrids = true, bool updatePlayers = true, bool updateFactions = true)
        {
            if (!BlockLimiterConfig.Instance.EnableLimits)
            {
                foreach (var limit in BlockLimiterConfig.Instance.AllLimits)
                {
                    limit.FoundEntities.Clear();
                }
                return;
            }

            if (updateGrids)
            {
                var grids = new HashSet <MyCubeGrid>();
                GridCache.GetGrids(grids);


                Task.Run(() =>
                {
                    Thread.Sleep(500);
                    foreach (var grid in grids)
                    {
                        if (grid == null)
                        {
                            continue;
                        }
                        Parallel.Invoke(() =>
                        {
                            Thread.Sleep(100);
                            UpdateLimits.GridLimit(grid);
                        });
                    }
                });
            }

            if (updatePlayers)
            {
                Task.Run(() =>
                {
                    Thread.Sleep(300);
                    foreach (var player in MySession.Static.Players.GetAllPlayers())
                    {
                        if (player.SteamId == 0)
                        {
                            continue;
                        }
                        var identity = Utilities.GetPlayerIdFromSteamId(player.SteamId);
                        if (identity == 0)
                        {
                            continue;
                        }
                        Parallel.Invoke(() => UpdateLimits.PlayerLimit(identity));
                    }
                });
            }

            if (updateFactions)
            {
                Task.Run(() =>
                {
                    Thread.Sleep(100);
                    foreach (var(id, faction) in MySession.Static.Factions.Factions)
                    {
                        if (faction.IsEveryoneNpc() || id == 0)
                        {
                            continue;
                        }
                        Parallel.Invoke(() => UpdateLimits.FactionLimit(id));
                    }
                });
            }
        }
Exemplo n.º 6
0
        public static void ResetLimits(bool updateGrids = true, bool updatePlayers = true, bool updateFactions = true)
        {
            if (!BlockLimiterConfig.Instance.EnableLimits)
            {
                foreach (var limit in BlockLimiterConfig.Instance.AllLimits)
                {
                    limit.FoundEntities.Clear();
                }
                return;
            }

            if (updateGrids)
            {
                var grids = new HashSet <MyCubeGrid>();
                GridCache.GetGrids(grids);
                Task.Run(() =>
                {
                    Parallel.ForEach(grids, grid =>
                    {
                        if (grid == null)
                        {
                            return;
                        }

                        UpdateLimits.GridLimit(grid);
                    });
                });
            }

            if (updatePlayers)
            {
                var players = MySession.Static.Players.GetAllPlayers();
                if (players.Count > 0)
                {
                    Task.Run(() =>
                    {
                        Parallel.ForEach(players, player =>
                        {
                            if (player.SteamId == 0)
                            {
                                return;
                            }

                            var identity = Utilities.GetPlayerIdFromSteamId(player.SteamId);

                            if (identity == 0)
                            {
                                return;
                            }

                            UpdateLimits.PlayerLimit(identity);
                        });
                    });
                }
            }

            if (updateFactions)
            {
                Task.Run(() =>
                {
                    Parallel.ForEach(MySession.Static.Factions, factionInfo =>
                    {
                        var(id, faction) = factionInfo;

                        if (faction.IsEveryoneNpc() || id == 0)
                        {
                            return;
                        }

                        UpdateLimits.FactionLimit(id);
                    });
                });
            }
        }