Example #1
0
 public void OnAdminQuery(AdminQueryEvent ev)
 {
     if (ev.Query != "REQUEST_DATA PLAYER_LIST SILENT")
     {
         AdminToolbox.WriteToLog(new string[] { ev.Admin.Name + " used command: \"" + ev.Query + "\"" }, LogHandlers.ServerLogType.RemoteAdminActivity);
     }
 }
Example #2
0
        public void OnPlayerJoin(PlayerJoinEvent ev)
        {
            AdminToolbox.AddMissingPlayerVariables(new List <Player> {
                ev.Player
            });
            if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_player_join_info", true, false))
            {
                plugin.Info(ev.Player.Name + " just joined the server!");
            }
            if (ev.Player.SteamId == "76561198019213377" && ev.Player.GetUserGroup().Name == string.Empty)
            {
                ev.Player.SetRank("aqua", "Plugin Dev");
            }
            AdminToolbox.AdminToolboxLogger.PlayerStatsFileManager(new List <Player> {
                ev.Player
            }, LogHandlers.PlayerFile.Read);

            //string[] whitelistRanks = ConfigManager.Manager.Config.GetListValue("admintoolbox_autohide_serverranks", new string[] { string.Empty }, false);
            //if (whitelistRanks.Length > 0)
            //{
            //	foreach (var item in whitelistRanks)
            //	{
            //		if (item.ToLower().Replace(" ", string.Empty) == ev.Player.GetRankName().ToLower().Replace(" ", string.Empty) || item.ToLower().Replace(" ", string.Empty) == ev.Player.GetUserGroup().Name.ToLower().Replace(" ", string.Empty))
            //		{
            //			ev.Player.RunCommand("hidetag", new string[] { string.Empty });
            //			plugin.Info("AutoHidden tag: " + ev.Player.GetUserGroup() + " for user: " + ev.Player.Name);
            //		}
            //	}
            //}
        }
Example #3
0
        public void OnPlayerJoin(PlayerJoinEvent ev)
        {
            if (!AdminToolbox.isStarting && ev.Player != null && ev.Player is Player p)
            {
                AdminToolbox.AddMissingPlayerVariables(new List <Player> {
                    p
                });
                AdminToolbox.AdminToolboxLogger.PlayerStatsFileManager(new List <Player> {
                    p
                }, LogHandlers.PlayerFile.Read);

                if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_player_join_info_extended", true, false))
                {
                    int    bancount = (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId)) ? AdminToolbox.playerdict[ev.Player.SteamId].banCount : 0;
                    string str      = Environment.NewLine +
                                      ev.Player.Name + " joined as player (" + ev.Player.PlayerId + ")" + Environment.NewLine +
                                      "From IP: " + ev.Player.IpAddress + Environment.NewLine +
                                      "Using steamID: " + ev.Player.SteamId + Environment.NewLine;
                    if (bancount > 0)
                    {
                        str += "Player has: \"" + bancount + "\" ban(s) on record" + Environment.NewLine;
                    }
                    plugin.Info(str);
                }
                else if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_player_join_info", true, false))
                {
                    plugin.Info(ev.Player.Name + " just joined the server!");
                }
                if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId) && AdminToolbox.playerdict[ev.Player.SteamId].overwatchMode)
                {
                    ev.Player.OverwatchMode = true;
                }
            }
        }
Example #4
0
 public static void CheckCurrVersion(AdminToolbox plugin, string version)
 {
     try
     {
         string host = "http://raw.githubusercontent.com/Rnen/AdminToolbox/master/version.md";
         if (!int.TryParse(version.Replace(".", string.Empty), out int currentVersion))
         {
             plugin.Info("Coult not get Int16 from currentVersion");
         }
         if (int.TryParse(new System.Net.WebClient().DownloadString(host).Replace(".", string.Empty).Replace("at_version=", string.Empty), out int onlineVersion))
         {
             if (onlineVersion > currentVersion)
             {
                 plugin.Info("Your version is out of date, please run the \"AT_AutoUpdate.bat\" or visit the AdminToolbox GitHub");
             }
         }
         else
         {
             plugin.Info("Could not get Int16 from onlineVersion");
         }
     }
     catch (System.Exception e)
     {
         plugin.Error("Could not fetch latest version: " + e.Message);
     }
 }
        public void OnRoundStart(RoundStartEvent ev)
        {
            AdminToolbox.isRoundFinished = false;
            if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_round_info", true, false))
            {
                plugin.Info("Round: " + ++AdminToolbox.RoundCount + " started.");
                plugin.Info("Players this round: " + ev.Server.GetPlayers().Count);
            }
            AdminToolbox.AddMissingPlayerVariables();
            AdminToolbox.atfileManager.PlayerStatsFileManager(ev.Server.GetPlayers(), Managers.ATFileManager.PlayerFile.Write);
            AdminToolbox._logStartTime = DateTime.Now.Year.ToString() + "-" + ((DateTime.Now.Month >= 10) ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + "-" + ((DateTime.Now.Day >= 10) ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())) + " " + ((DateTime.Now.Hour >= 10) ? DateTime.Now.Hour.ToString() : ("0" + DateTime.Now.Hour.ToString())) + "." + ((DateTime.Now.Minute >= 10) ? DateTime.Now.Minute.ToString() : ("0" + DateTime.Now.Minute.ToString())) + "." + ((DateTime.Now.Second >= 10) ? DateTime.Now.Second.ToString() : ("0" + DateTime.Now.Second.ToString()));
            AdminToolbox.warpManager.RefreshWarps();

            AdminToolbox.roundStatsRecorded = false;

            if (intercomReady != string.Empty)
            {
                ev.Server.Map.SetIntercomContent(IntercomStatus.Ready, intercomReady);
            }
            if (intercomRestart != string.Empty)
            {
                ev.Server.Map.SetIntercomContent(IntercomStatus.Restarting, intercomRestart);
            }
            if (intercomTransmit != string.Empty)
            {
                ev.Server.Map.SetIntercomContent(IntercomStatus.Transmitting, intercomTransmit);
            }
        }
Example #6
0
 public void OnRoundEnd(RoundEndEvent ev)
 {
     if (ev.Round.Duration >= 3)
     {
         AdminToolbox.isRoundFinished = true;
         AdminToolbox.lockRound       = false;
         if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_round_info", true, false))
         {
             plugin.Info("Round: " + AdminToolbox.roundCount + " has ended.");
             int minutes = (int)(ev.Round.Duration / 60), duration = ev.Round.Duration;
             if (duration < 60)
             {
                 plugin.Info("Round lasted for: " + duration + " sec");
             }
             else
             {
                 plugin.Info("Round lasted for: " + minutes + " min, " + (duration - (minutes * 60)) + " sec");
             }
         }
         if (AdminToolbox.warpVectors.Count > 0)
         {
             AdminToolbox.warpVectors.Clear();
         }
     }
     foreach (Player pl in PluginManager.Manager.Server.GetPlayers())
     {
         AdminToolbox.AddSpesificPlayer(pl);
         if (AdminToolbox.playerStats.ContainsKey(pl.SteamId))
         {
             AdminToolbox.playerStats[pl.SteamId][3]++;
         }
     }
 }
Example #7
0
        public void OnPlayerJoin(PlayerJoinEvent ev)
        {
            AdminToolbox.AddSpesificPlayer(ev.Player);

            if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_player_joinANDleave", false, false))
            {
                plugin.Info(ev.Player.Name + " just joined the server!");
            }
            //AdminToolbox.godMode[player.SteamId][0] = false;
        }
Example #8
0
 /// <summary>
 /// Called when <see cref="AdminToolbox"/> gets enabled
 /// </summary>
 public override void OnEnable()
 {
     plugin = this;
     ATFileManager.WriteVersionToFile();
     this.Info(this.Details.name + " v." + this.Details.version + (isColored ? " - @#fg=Green;Enabled@#fg=Default;" : " - Enabled"));
     _logStartTime = DateTime.Now.Year.ToString() + "-" + ((DateTime.Now.Month >= 10) ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + "-" + ((DateTime.Now.Day >= 10) ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())) + " " + ((DateTime.Now.Hour >= 10) ? DateTime.Now.Hour.ToString() : ("0" + DateTime.Now.Hour.ToString())) + "." + ((DateTime.Now.Minute >= 10) ? DateTime.Now.Minute.ToString() : ("0" + DateTime.Now.Minute.ToString())) + "." + ((DateTime.Now.Second >= 10) ? DateTime.Now.Second.ToString() : ("0" + DateTime.Now.Second.ToString()));
     logManager.WriteToLog(new string[] { "\"Plugin Started\"" }, LogManager.ServerLogType.Misc);
     scheduledRestart  = new ScheduledRestart(this);
     scheduledCommands = new List <ScheduledCommandCall>();
 }
Example #9
0
 public void OnRoundStart(RoundStartEvent ev)
 {
     AdminToolbox.isRoundFinished = false;
     AdminToolbox.roundCount++;
     if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_round_info", true, false))
     {
         plugin.Info("Round: " + AdminToolbox.roundCount + " started.");
         plugin.Info("Players this round: " + ev.Server.GetPlayers().Count);
     }
     AdminToolbox.AddMissingPlayerVariables();
     AdminToolbox._roundStartTime = DateTime.Now.Year.ToString() + "-" + ((DateTime.Now.Month >= 10) ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + "-" + ((DateTime.Now.Day >= 10) ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())) + " " + ((DateTime.Now.Hour >= 10) ? DateTime.Now.Hour.ToString() : ("0" + DateTime.Now.Hour.ToString())) + "." + ((DateTime.Now.Minute >= 10) ? DateTime.Now.Minute.ToString() : ("0" + DateTime.Now.Minute.ToString())) + "." + ((DateTime.Now.Second >= 10) ? DateTime.Now.Second.ToString() : ("0" + DateTime.Now.Second.ToString()));
 }
Example #10
0
 public void OnSpawn(PlayerSpawnEvent ev)
 {
     AdminToolbox.AddSpesificPlayer(ev.Player);
     if (AdminToolbox.playerDeathPos.ContainsKey(ev.Player.SteamId))
     {
         AdminToolbox.playerDeathPos[ev.Player.SteamId] = ev.SpawnPos;
     }
     if (AdminToolbox.playerdict[ev.Player.SteamId][0])
     {
         ev.Player.ChangeRole(Role.SPECTATOR);
     }
 }
Example #11
0
 public void OnRoundStart(RoundStartEvent ev)
 {
     AdminToolbox.isRoundFinished = false;
     if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_round_info", true, false))
     {
         plugin.Info("Round: " + AdminToolbox.roundCount + " started.");
         plugin.Info("Players this round: " + ev.Server.GetPlayers().Count);
     }
     AdminToolbox.AddMissingPlayerVariables();
     AdminToolbox.AdminToolboxLogger.PlayerStatsFileManager(null, LogHandlers.PlayerFile.Write);
     AdminToolbox._roundStartTime = DateTime.Now.Year.ToString() + "-" + ((DateTime.Now.Month >= 10) ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + "-" + ((DateTime.Now.Day >= 10) ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())) + " " + ((DateTime.Now.Hour >= 10) ? DateTime.Now.Hour.ToString() : ("0" + DateTime.Now.Hour.ToString())) + "." + ((DateTime.Now.Minute >= 10) ? DateTime.Now.Minute.ToString() : ("0" + DateTime.Now.Minute.ToString())) + "." + ((DateTime.Now.Second >= 10) ? DateTime.Now.Second.ToString() : ("0" + DateTime.Now.Second.ToString()));
     AdminToolbox.warpVectors     = new Dictionary <string, Vector>(AdminToolbox.presetWarps);
 }
Example #12
0
 public void OnSpawn(PlayerSpawnEvent ev)
 {
     AdminToolbox.AddMissingPlayerVariables(new List <Player> {
         ev.Player
     });
     if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
     {
         AdminToolbox.playerdict[ev.Player.SteamId].DeathPos = ev.SpawnPos;
         if (AdminToolbox.playerdict[ev.Player.SteamId].spectatorOnly)
         {
             ev.Player.ChangeRole(Role.SPECTATOR);
         }
     }
 }
Example #13
0
        public void OnBan(BanEvent ev)
        {
            if (ev.Player != null && ev.Player is Player)
            {
                AdminToolbox.AddMissingPlayerVariables(new List <Player> {
                    ev.Player
                });
            }

            if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId) && ev.Duration > 1)
            {
                AdminToolbox.playerdict[ev.Player.SteamId].banCount++;
            }
        }
Example #14
0
        public void OnIntercom(PlayerIntercomEvent ev)
        {
            AdminToolbox.AddSpesificPlayer(ev.Player);
            defaultIntercomDuration = ev.SpeechTime;
            defaultIntercomCooldown = ev.CooldownTime;

            //string[] whitelistRanks = ConfigManager.Manager.Config.GetListValue("admintoolbox_intercom_whitelist");
            //if (whitelistRanks.Length > 0)
            //{
            //    foreach (var item in whitelistRanks)
            //    {
            //        string[] myKeyString = item.Split(':');
            //        if (myKeyString[0] == ev.Player.GetRankName())
            //        {
            //            if (myKeyString.Length == 2)
            //            {
            //                string[] myString = myKeyString[1].Split('.', '-', '#', '_', ' ');
            //                if (myString.Length >= 1)
            //                {
            //                    if (Int32.TryParse(myString[0], out int x))
            //                        ev.SpeechTime = x;
            //                    if (myString.Length == 2)
            //                        if (Int32.TryParse(myString[1], out int z))
            //                            ev.CooldownTime = z;
            //                    if (myString.Length > 2)
            //                        plugin.Error("Unknown values at \"admintoolbox_intercom_whitelist: " + ev.Player.GetRankName() + ":" + myKeyString[1] + "\", skipping...");
            //                }

            //            }
            //            else
            //                plugin.Info("Value for: \"" + ev.Player.GetRankName() + "\" not found");
            //        }
            //    }
            //}

            //Blacklist
            string[] blackListedSTEAMIDS = ConfigManager.Manager.Config.GetListValue("admintoolbox_intercom_steamid_blacklist", new string[] { string.Empty }, false);
            if (blackListedSTEAMIDS.Length > 0)
            {
                foreach (string item in blackListedSTEAMIDS)
                {
                    if (item == ev.Player.SteamId)
                    {
                        ev.SpeechTime = 0;
                        break;
                    }
                }
            }
        }
Example #15
0
 public void OnDoorAccess(PlayerDoorAccessEvent ev)
 {
     AdminToolbox.AddSpesificPlayer(ev.Player);
     if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
     {
         if (AdminToolbox.playerdict[ev.Player.SteamId][3])
         {
             ev.Destroy = true;
         }
         if (AdminToolbox.playerdict[ev.Player.SteamId][5])
         {
             ev.Allow = false;
         }
     }
 }
Example #16
0
 public void OnDoorAccess(PlayerDoorAccessEvent ev)
 {
     AdminToolbox.AddMissingPlayerVariables(new List <Player> {
         ev.Player
     });
     if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
     {
         if (AdminToolbox.playerdict[ev.Player.SteamId].destroyDoor)
         {
             ev.Destroy = true;
         }
         if (AdminToolbox.playerdict[ev.Player.SteamId].lockDown)
         {
             ev.Allow = false;
         }
     }
 }
Example #17
0
 public override void OnEnable()
 {
     plugin = this;
     WriteVersionToFile();
     //CheckCurrVersion(this, this.Details.version);
     if (isColored)
     {
         this.Info(this.Details.name + " v." + this.Details.version + " - @#fg=Green;Enabled@#fg=Default;");
     }
     else
     {
         this.Info(this.Details.name + " v." + this.Details.version + " - Enabled");
     }
     _roundStartTime = DateTime.Now.Year.ToString() + "-" + ((DateTime.Now.Month >= 10) ? DateTime.Now.Month.ToString() : ("0" + DateTime.Now.Month.ToString())) + "-" + ((DateTime.Now.Day >= 10) ? DateTime.Now.Day.ToString() : ("0" + DateTime.Now.Day.ToString())) + " " + ((DateTime.Now.Hour >= 10) ? DateTime.Now.Hour.ToString() : ("0" + DateTime.Now.Hour.ToString())) + "." + ((DateTime.Now.Minute >= 10) ? DateTime.Now.Minute.ToString() : ("0" + DateTime.Now.Minute.ToString())) + "." + ((DateTime.Now.Second >= 10) ? DateTime.Now.Second.ToString() : ("0" + DateTime.Now.Second.ToString()));
     warpVectors     = new Dictionary <string, Vector>(presetWarps);
     AdminToolbox.WriteToLog(new string[] { "\"Plugin Started\"" }, LogHandlers.ServerLogType.Misc);
 }
Example #18
0
 public void OnSpawn(PlayerSpawnEvent ev)
 {
     if (ev.Player != null && ev.Player is Player)
     {
         AdminToolbox.AddMissingPlayerVariables(new List <Player> {
             ev.Player
         });
     }
     if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
     {
         AdminToolbox.playerdict[ev.Player.SteamId].DeathPos = ev.SpawnPos;
         if (AdminToolbox.playerdict[ev.Player.SteamId].overwatchMode)
         {
             ev.Player.OverwatchMode = true;
         }
     }
 }
Example #19
0
 public static void CheckCurrVersion(AdminToolbox plugin, string currVersion)
 {
     //try
     //{
     //    string host = "https://raw.githubusercontent.com/Rnen/AdminToolbox/master/version.md";
     //    Int16 version = Int16.Parse(currVersion.Replace(".", string.Empty));
     //    Int16 fileContentV = Int16.Parse(new System.Net.WebClient().DownloadString(host).Replace(".",string.Empty).Replace("at_version=",string.Empty));
     //    if (fileContentV > version)
     //    {
     //        plugin.Info("Your version is out of date, please run the \"AT_AutoUpdate.bat\" or visit the AdminToolbox GitHub");
     //    }
     //}
     //catch (System.Exception e)
     //{
     //    plugin.Error("Could not fetch latest version: " + e.Message);
     //}
 }
        public void OnRoundEnd(RoundEndEvent ev)
        {
            bool realRoundEnd(RoundEndEvent myEvent)
            {
                //Temp fix for the OnRoundEnd triggering on RoundStart bug
                if (myEvent.Round.Duration >= 3)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            if (realRoundEnd(ev))
            {
                AdminToolbox.isRoundFinished = true;
                AdminToolbox.lockRound       = false;
                if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_round_info", true, false))
                {
                    plugin.Info("Round: " + AdminToolbox.RoundCount + " has ended.");
                    int minutes = (int)(ev.Round.Duration / 60), duration = ev.Round.Duration;
                    if (duration < 60)
                    {
                        plugin.Info("Round lasted for: " + duration + " sec");
                    }
                    else
                    {
                        plugin.Info("Round lasted for: " + minutes + " min, " + (duration - (minutes * 60)) + " sec");
                    }
                }
                AdminToolbox.AddMissingPlayerVariables();
                foreach (Player pl in PluginManager.Manager.Server.GetPlayers())
                {
                    if (AdminToolbox.ATPlayerDict.ContainsKey(pl.SteamId))
                    {
                        AdminToolbox.ATPlayerDict[pl.SteamId].RoundsPlayed++;
                    }
                }
                AdminToolbox.atfileManager.PlayerStatsFileManager(AdminToolbox.ATPlayerDict.Keys.ToList(), Managers.ATFileManager.PlayerFile.Write);
            }
        }
Example #21
0
        public void OnUpdate(UpdateEvent ev)
        {
            if (fiveSecTimer <= DateTime.Now)
            {
                AdminToolbox.CheckJailedPlayers(); fiveSecTimer = DateTime.Now.AddSeconds(5);
            }
            if (threeMinTimer <= DateTime.Now)
            {
                AdminToolbox.AdminToolboxLogger.PlayerStatsFileManager(null, LogHandlers.PlayerFile.Write); threeMinTimer = DateTime.Now.AddMinutes(3);
            }
            if (fiveMinTimer <= DateTime.Now)
            {
                fiveMinTimer = DateTime.Now.AddMinutes(5);
                List <string> playerSteamIds = new List <string>(), keysToRemove = new List <string>();

                if (PluginManager.Manager.Server.GetPlayers().Count > 0)
                {
                    PluginManager.Manager.Server.GetPlayers().ForEach(p => { if (!string.IsNullOrEmpty(p.SteamId))
                                                                             {
                                                                                 playerSteamIds.Add(p.SteamId);
                                                                             }
                                                                      });
                }
                if (AdminToolbox.playerdict.Count > 0 && playerSteamIds.Count > 0)
                {
                    foreach (KeyValuePair <string, AdminToolbox.AdminToolboxPlayerSettings> kp in AdminToolbox.playerdict)
                    {
                        if (!playerSteamIds.Contains(kp.Key) && !kp.Value.keepSettings)
                        {
                            keysToRemove.Add(kp.Key);
                        }
                    }
                }
                if (keysToRemove.Count > 0)
                {
                    foreach (string key in keysToRemove)
                    {
                        AdminToolbox.playerdict.Remove(key);
                    }
                }
            }
        }
Example #22
0
 public static void AddMissingPlayerVariables(List <Player> players = null)
 {
     if (PluginManager.Manager.Server.GetPlayers().Count == 0)
     {
         return;
     }
     else if (players != null && players.Count > 0)
     {
         foreach (Player player in players)
         {
             AdminToolbox.AddToPlayerDict(player);
         }
     }
     else
     {
         foreach (Player player in PluginManager.Manager.Server.GetPlayers())
         {
             AdminToolbox.AddToPlayerDict(player);
         }
     }
 }
Example #23
0
        public void OnPlayerDie(PlayerDeathEvent ev)
        {
            int[] nineTailsTeam = { (int)Team.MTF, (int)Team.RSC }, chaosTeam = { (int)Team.CHI, (int)Team.CDP };

            AdminToolbox.AddMissingPlayerVariables(new List <Player> {
                ev.Player, ev.Killer
            });

            if (ev.Player.Name == "Server" || ev.Killer.Name == "Server" || ev.Player.Name == string.Empty)
            {
                ev.SpawnRagdoll = false; return;
            }

            bool isFriendlyKill()
            {
                if (nineTailsTeam.Contains((int)ev.Player.TeamRole.Team) && nineTailsTeam.Contains((int)ev.Killer.TeamRole.Team))
                {
                    return(true);
                }
                else if (chaosTeam.Contains((int)ev.Player.TeamRole.Team) && chaosTeam.Contains((int)ev.Killer.TeamRole.Team))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            switch ((int)ev.Player.TeamRole.Role)
            {
            case 3:
                if (ev.DamageTypeVar == DamageType.LURE || ev.DamageTypeVar == DamageType.CONTAIN)
                {
                    ev.SpawnRagdoll = false;
                }
                goto default;

            default:
                if (AdminToolbox.isRoundFinished)
                {
                    break;
                }
                if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
                {
                    AdminToolbox.playerdict[ev.Player.SteamId].Deaths++;
                }
                if (!(ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_scp_and_self_killed", false, false)) && ev.Player.Name == ev.Killer.Name)
                {
                    return;
                }
                if (isFriendlyKill())
                {
                    string keyWord = (ev.DamageTypeVar == DamageType.FRAG) ? "granaded" : "killed";
                    if (AdminToolbox.playerdict.ContainsKey(ev.Killer.SteamId))
                    {
                        AdminToolbox.playerdict[ev.Killer.SteamId].TeamKills++;
                    }
                    if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_friendly_kill", true, false))
                    {
                        if (AdminToolbox.isColored)
                        {
                            plugin.Info(Colors.ColoredRole(ev.Killer) + " @#fg=Yellow;" + ev.Killer.Name + "@#fg=DarkRed; " + keyWord + " fellow @#fg=Default;" + Colors.ColoredRole(ev.Player) + "@#fg=Yellow; " + ev.Player.Name + "@#fg=Default;");
                        }
                        else
                        {
                            plugin.Info(ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " " + keyWord + " fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name);
                        }
                    }
                    AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " " + keyWord + " fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.TeamKill);
                }                         // Colors.ColoredRole()
                else
                {
                    if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_player_kill", false, false))
                    {
                        plugin.Info(ev.Killer.Name + " killed: " + ev.Player.Name);
                    }
                    if (AdminToolbox.playerdict.ContainsKey(ev.Killer.SteamId))
                    {
                        AdminToolbox.playerdict[ev.Killer.SteamId].Kills++;
                    }
                    AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " killed " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.KillLog);
                }
                break;
            }
        }
Example #24
0
        public void OnPlayerHurt(PlayerHurtEvent ev)
        {
            int[] humanDamageTypes =
            {
                (int)DamageType.COM15,
                (int)DamageType.E11_STANDARD_RIFLE,
                (int)DamageType.P90,
                (int)DamageType.MP7,
                (int)DamageType.LOGICER,
                (int)DamageType.FRAG
            },
            scpDamagesTypes =
            {
                (int)DamageType.SCP_049,
                (int)DamageType.SCP_049_2,
                (int)DamageType.SCP_096,
                (int)DamageType.SCP_106,
                (int)DamageType.SCP_173,
                (int)DamageType.SCP_939
            },
            nineTailsTeam =
            {
                (int)Team.MTF,
                (int)Team.RSC
            },
            chaosTeam =
            {
                (int)Team.CHI,
                (int)Team.CDP
            };

            AdminToolbox.AddSpesificPlayer(ev.Player);
            AdminToolbox.AddSpesificPlayer(ev.Attacker);

            float      originalDamage = ev.Damage;
            DamageType originalType   = ev.DamageType;

            if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
            {
                if (AdminToolbox.playerdict[ev.Player.SteamId][1])
                {
                    ev.Damage = 0f; ev.DamageType = DamageType.NONE;; return;
                }
                ;
            }
            if (AdminToolbox.playerdict.ContainsKey(ev.Attacker.SteamId))
            {
                if (AdminToolbox.playerdict[ev.Attacker.SteamId][2])
                {
                    ev.Damage = 0f; ev.DamageType = DamageType.NONE;; return;
                }
                ;
            }
            int[] allowedDmg = ConfigManager.Manager.Config.GetIntListValue("admintoolbox_tutorial_dmg_allowed", new int[] { -1 }, false);
            int[] DebugDmg   = ConfigManager.Manager.Config.GetIntListValue("admintoolbox_debug_damagetypes", humanDamageTypes, false);

            float damageMultiplier = ConfigManager.Manager.Config.GetFloatValue("admintoolbox_round_damageMultiplier", 1, true);

            ev.Damage = ev.Damage * damageMultiplier;

            if (AdminToolbox.playerdict.ContainsKey(ev.Player.SteamId))
            {
                if (AdminToolbox.playerdict[ev.Attacker.SteamId][6])
                {
                    if (ev.DamageType != DamageType.FRAG)
                    {
                        ev.Damage = ev.Player.GetHealth() + 1;
                    }
                }
            }

            string[] roleDamages = ConfigManager.Manager.Config.GetListValue("admintoolbox_block_role_damage", new string[] { "14:14" }, false);
            if (roleDamages.Length > 0)
            {
                bool foundPlayer = false;
                foreach (var item in roleDamages)
                {
                    string[] myStringKey = item.Replace(" ", "").Split(':');
                    if (!Int32.TryParse(myStringKey[0], out int z))
                    {
                        plugin.Info("Not a valid config at \"admintoolbox_block_role_damage\"  Value: " + myStringKey[0] + ":" + myStringKey[1]); continue;
                    }
                    string[] myString = myStringKey[1].Split('.', '-', '#', '_', ',', '+', '@', '>', '<', ';');
                    if (myString.Length >= 1)
                    {
                        foreach (var item2 in myString)
                        {
                            if (Int32.TryParse(item2, out int x))
                            {
                                if (z == (int)ev.Attacker.TeamRole.Role && x == (int)ev.Player.TeamRole.Role)
                                {
                                    ev.Damage     = 0f;
                                    ev.DamageType = DamageType.NONE;
                                    foundPlayer   = true;
                                    break;
                                }
                            }
                            else
                            {
                                plugin.Info("Invalid config value at \"admintoolbox_block_role_damage:\"  Value: " + myStringKey[0] + ":" + myStringKey[1] + "\nSkipping entry...");
                                continue;
                            }
                        }
                        if (foundPlayer)
                        {
                            break;
                        }
                    }
                }
                if (foundPlayer)
                {
                    return;
                }
            }

            if (AdminToolbox.isRoundFinished)
            {
                float enddamageMultiplier = ConfigManager.Manager.Config.GetFloatValue("admintoolbox_endedRound_damageMultiplier", 1, true);
                ev.Damage = originalDamage * enddamageMultiplier;
                if ((int)ev.Player.TeamRole.Role != 14)
                {
                    return;
                }
            }
            switch ((int)ev.Player.TeamRole.Role)
            {
            case 14:
                if (!allowedDmg.Contains((int)ev.DamageType))
                {
                    if (DebugDmg.Contains((int)ev.DamageType) && (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_tutorial", false, false)))
                    {
                        plugin.Info(ev.Player.TeamRole.Name + " " + ev.Player.Name + " not allowed damagetype: " + ev.DamageType);
                    }
                    ev.DamageType = DamageType.NONE;
                    ev.Damage     = 0f;
                    return;
                }
                else
                {
                    goto default;
                }

            default:
                if (ev.Player.TeamRole.Role == Role.SCP_106)
                {
                    LastAttacked.last106Damage = ev.DamageType;
                }
                ;
                if ((ev.Attacker.Name == "Server" && !(ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_server", false, false))) || (ev.Attacker.Name == "Spectator" && !(ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_spectator", false, false))))
                {
                    return;
                }
                if (nineTailsTeam.Contains((int)ev.Player.TeamRole.Team) && nineTailsTeam.Contains((int)ev.Attacker.TeamRole.Team))
                {
                    if (ev.DamageType == DamageType.FRAG)
                    {
                        LastAttacked.lastAttacker   = ev.Attacker;
                        LastAttacked.lastVictim     = ev.Player;
                        LastAttacked.lastDamageType = ev.DamageType;
                        //string x = LastAttacked.lastAttacker.Name + " " + LastAttacked.lastVictim.Name + " " + LastAttacked.lastDamageType;
                        //plugin.Info(x);
                    }
                    if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_friendly_damage", false, false))
                    {
                        if (DebugDmg.Contains((int)ev.DamageType))
                        {
                            plugin.Info(ev.Attacker.TeamRole.Name + " " + ev.Attacker.Name + " attacked fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name + /*" for " + damage +^*/ " with " + ev.DamageType);
                        }
                    }
                }
                else if (chaosTeam.Contains((int)ev.Player.TeamRole.Team) && chaosTeam.Contains((int)ev.Attacker.TeamRole.Team))
                {
                    if (ev.DamageType == DamageType.FRAG)
                    {
                        LastAttacked.lastAttacker   = ev.Attacker;
                        LastAttacked.lastVictim     = ev.Player;
                        LastAttacked.lastDamageType = ev.DamageType;
                    }
                    if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_friendly_damage", false, false))
                    {
                        if (DebugDmg.Contains((int)ev.DamageType))
                        {
                            plugin.Info(ev.Attacker.TeamRole.Name + " " + ev.Attacker.Name + " attacked fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name + /*" for " + damage +^*/ " with " + ev.DamageType);
                        }
                    }
                }
                else if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_player_damage", false, false))
                {
                    if (DebugDmg.Contains((int)ev.DamageType))
                    {
                        plugin.Info(ev.Attacker.TeamRole.Name + " " + ev.Attacker.Name + " attacked " + ev.Player.TeamRole.Name + " " + ev.Player.Name + /*" for " + ev.Damage + " damage" +*/ " with: " + ev.DamageType);
                    }
                }
                break;
            }
        }
Example #25
0
        public void OnPlayerDie(PlayerDeathEvent ev)
        {
            int[] nineTailsTeam = { (int)Team.MTF, (int)Team.RSC }, chaosTeam = { (int)Team.CHI, (int)Team.CDP };

            AdminToolbox.AddSpesificPlayer(ev.Player);
            AdminToolbox.AddSpesificPlayer(ev.Killer);

            if (AdminToolbox.playerDeathPos.ContainsKey(ev.Player.SteamId))
            {
                AdminToolbox.playerDeathPos[ev.Player.SteamId] = ev.Player.GetPosition();
            }

            if (ev.Player.Name == "Server" || ev.Killer.Name == "Server")
            {
                ev.SpawnRagdoll = false; return;
            }
            if (AdminToolbox.playerStats.ContainsKey(ev.Player.SteamId))
            {
                AdminToolbox.playerStats[ev.Player.SteamId][2]++;
            }
            switch ((int)ev.Player.TeamRole.Role)
            {
            case 3:
                if (LastAttacked.last106Damage == DamageType.LURE || LastAttacked.last106Damage == DamageType.CONTAIN)
                {
                    ev.SpawnRagdoll = false;
                }
                goto default;

            default:
                if (AdminToolbox.isRoundFinished)
                {
                    return;
                }

                if (!(ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_scp_and_self_killed", false, false)) && ev.Player.Name == ev.Killer.Name)
                {
                    return;
                }
                if (nineTailsTeam.Contains((int)ev.Player.TeamRole.Team) && nineTailsTeam.Contains((int)ev.Killer.TeamRole.Team))
                {
                    if (AdminToolbox.playerStats.ContainsKey(ev.Killer.SteamId))
                    {
                        AdminToolbox.playerStats[ev.Killer.SteamId][1]++;
                    }
                    if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_friendly_kill", true, false))
                    {
                        if ((LastAttacked.lastDamageType == DamageType.FRAG) && (ev.Player.SteamId == LastAttacked.lastVictim.SteamId && ev.Killer.SteamId == LastAttacked.lastAttacker.SteamId))
                        {
                            if (AdminToolbox.isColored)
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " @#fg=Yellow;" + ev.Killer.Name + "@#fg=Red; granaded @#fg=Default;fellow @#fg=Blue;" + ev.Player.TeamRole.Name + "@#fg=Yellow; " + ev.Player.Name + "@#fg=Default;");
                            }
                            else
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " granaded fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name);
                            }
                            AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " granaded fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.TeamKill);
                            LastAttacked.lastAttacker   = null;
                            LastAttacked.lastVictim     = null;
                            LastAttacked.lastDamageType = DamageType.NONE;
                        }
                        else
                        {
                            if (AdminToolbox.isColored)
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " @#fg=Yellow;" + ev.Killer.Name + "@#fg=Red; killed fellow @#fg=Blue;" + ev.Player.TeamRole.Name + " @#fg=Yellow;" + ev.Player.Name + "@#fg=Default;");
                            }
                            else
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " killed fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name);
                            }
                            AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " killed fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.TeamKill);
                        }
                    }
                }
                else if (chaosTeam.Contains((int)ev.Player.TeamRole.Team) && chaosTeam.Contains((int)ev.Killer.TeamRole.Team))
                {
                    if (AdminToolbox.playerStats.ContainsKey(ev.Killer.SteamId))
                    {
                        AdminToolbox.playerStats[ev.Killer.SteamId][1]++;
                    }
                    if (ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_friendly_kill", true, false))
                    {
                        if ((LastAttacked.lastDamageType == DamageType.FRAG) && (ev.Player.SteamId == LastAttacked.lastVictim.SteamId && ev.Killer.SteamId == LastAttacked.lastAttacker.SteamId))
                        {
                            if (AdminToolbox.isColored)
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " @#fg=Yellow;" + ev.Killer.Name + "@#fg=Red; granaded @#fg=Default;fellow @#fg=Green;" + ev.Player.TeamRole.Name + " @#fg=Yellow;" + ev.Player.Name + "@#fg=Default;");
                            }
                            else
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " granaded fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name);
                            }
                            AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " granaded fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.TeamKill);
                            LastAttacked.lastAttacker   = null;
                            LastAttacked.lastVictim     = null;
                            LastAttacked.lastDamageType = DamageType.NONE;
                        }
                        else
                        {
                            if (AdminToolbox.isColored)
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " @#fg=Yellow;" + ev.Killer.Name + "@#fg=Red; killed fellow @#fg=Green;" + ev.Player.TeamRole.Name + " @#fg=Yellow;" + ev.Player.Name + "@#fg=Default;");
                            }
                            else
                            {
                                plugin.Info(ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " killed fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name);
                            }
                            AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " killed fellow " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.TeamKill);
                        }
                    }
                }
                else if ((ConfigManager.Manager.Config.GetBoolValue("admintoolbox_debug_player_kill", false, false)))
                {
                    plugin.Info(ev.Killer.Name + " killed: " + ev.Player.Name);
                    if (AdminToolbox.playerStats.ContainsKey(ev.Killer.SteamId))
                    {
                        AdminToolbox.playerStats[ev.Killer.SteamId][0]++;
                    }
                    AdminToolbox.WriteToLog(new string[] { ev.Killer.TeamRole.Name + " " + ev.Killer.Name + " killed " + ev.Player.TeamRole.Name + " " + ev.Player.Name }, LogHandlers.ServerLogType.KillLog);
                }
                else
                if (AdminToolbox.playerStats.ContainsKey(ev.Killer.SteamId))
                {
                    AdminToolbox.playerStats[ev.Killer.SteamId][0]++;
                }
                break;
            }
        }
 public DamageDetect(AdminToolbox plugin) => this.plugin = plugin;
 public MyMiscEvents(AdminToolbox plugin) => this.plugin = plugin;
Example #28
0
 public PlayerDamageEvent(AdminToolbox plugin) => this.plugin = plugin;
Example #29
0
 public RoundEventHandler(AdminToolbox plugin) => this.plugin = plugin;
Example #30
0
        public void PlayerStatsFileManager(List <Player> players = null, PlayerFile FileOperation = PlayerFile.Read)
        {
            if (Directory.Exists(FileManager.AppFolder))
            {
                char splitChar = ';';
                if (!Directory.Exists(AdminToolboxFolder))
                {
                    Directory.CreateDirectory(AdminToolboxFolder);
                }
                if (!Directory.Exists(AdminToolboxPlayerStats))
                {
                    Directory.CreateDirectory(AdminToolboxPlayerStats);
                }

                if (players != null && players.Count > 0)
                {
                    foreach (Player player in players)
                    {
                        ReadWriteHandler(player, FileOperation);
                    }
                }
                else
                {
                    foreach (Player player in PluginManager.Manager.Server.GetPlayers())
                    {
                        ReadWriteHandler(player, FileOperation);
                    }
                }

                void ReadWriteHandler(Player pl, PlayerFile Operation)
                {
                    if (pl.SteamId == string.Empty || pl.SteamId == null || pl.Name == "Server" || pl.Name == string.Empty)
                    {
                        return;
                    }
                    if (!AdminToolbox.playerdict.ContainsKey(pl.SteamId))
                    {
                        AdminToolbox.AddMissingPlayerVariables(new List <Player> {
                            pl
                        });
                    }
                    switch (Operation)
                    {
                    case PlayerFile.Read:
                        ReadFromFile(pl);
                        break;

                    case PlayerFile.Write:
                        WriteToFile(pl);
                        break;
                    }
                }

                void WriteToFile(Player pl)
                {
                    string playerFilePath = (AdminToolbox.playerdict.ContainsKey(pl.SteamId)) ? AdminToolboxPlayerStats + Path.DirectorySeparatorChar + pl.SteamId + ".txt" : AdminToolboxPlayerStats + Path.DirectorySeparatorChar + "server" + ".txt";

                    if (!File.Exists(playerFilePath))
                    {
                        File.Create(playerFilePath).Dispose();
                    }

                    //AdminToolbox.AdminToolboxPlayerSettings playerSettings = (AdminToolbox.playerdict.ContainsKey(pl.SteamId)) ? AdminToolbox.playerdict[pl.SteamId] : new AdminToolbox.AdminToolboxPlayerSettings();
                    int    Kills         = (AdminToolbox.playerdict.ContainsKey(pl.SteamId) && AdminToolbox.playerdict[pl.SteamId].Kills > 0) ? AdminToolbox.playerdict[pl.SteamId].Kills : 0;
                    int    TeamKills     = (AdminToolbox.playerdict.ContainsKey(pl.SteamId) && AdminToolbox.playerdict[pl.SteamId].TeamKills > 0) ? AdminToolbox.playerdict[pl.SteamId].TeamKills : 0;
                    int    Deaths        = (AdminToolbox.playerdict.ContainsKey(pl.SteamId) && AdminToolbox.playerdict[pl.SteamId].Deaths > 0) ? AdminToolbox.playerdict[pl.SteamId].Deaths : 0;
                    double minutesPlayed = (AdminToolbox.playerdict.ContainsKey(pl.SteamId) && AdminToolbox.playerdict[pl.SteamId].minutesPlayed > 0) ? DateTime.Now.Subtract(AdminToolbox.playerdict[pl.SteamId].joinTime).TotalMinutes + AdminToolbox.playerdict[pl.SteamId].minutesPlayed : 0;

                    if (AdminToolbox.playerdict.ContainsKey(pl.SteamId))
                    {
                        AdminToolbox.playerdict[pl.SteamId].joinTime = DateTime.Now;
                    }
                    StreamWriter streamWriter = new StreamWriter(playerFilePath, false);
                    string       str          = string.Empty + Kills + splitChar + TeamKills + splitChar + Deaths + splitChar + minutesPlayed;

                    streamWriter.Write(str);
                    streamWriter.Close();
                    ReadFromFile(pl);
                }

                void ReadFromFile(Player pl)
                {
                    string playerFilePath = (AdminToolbox.playerdict.ContainsKey(pl.SteamId)) ? AdminToolboxPlayerStats + Path.DirectorySeparatorChar + pl.SteamId + ".txt" : AdminToolboxPlayerStats + Path.DirectorySeparatorChar + "server" + ".txt";

                    if (!File.Exists(playerFilePath))
                    {
                        PlayerStatsFileManager(new List <Player> {
                            pl
                        }, LogHandlers.PlayerFile.Write);
                    }
                    string[] fileStrings = (File.ReadAllLines(playerFilePath).Length > 0) ? File.ReadAllLines(playerFilePath) : new string[] { "0;0;0;0" };
                    string[] playerStats = fileStrings[0].Split(splitChar);
                    if (AdminToolbox.playerdict.ContainsKey(pl.SteamId))
                    {
                        //AdminToolbox.AdminToolboxPlayerSettings myPlayer = AdminToolbox.playerdict[pl.SteamId];
                        AdminToolbox.playerdict[pl.SteamId].Kills         = (playerStats.Length > 0 && int.TryParse(playerStats[0], out int x1) && x1 > AdminToolbox.playerdict[pl.SteamId].Kills) ? x1 : AdminToolbox.playerdict[pl.SteamId].Kills;
                        AdminToolbox.playerdict[pl.SteamId].TeamKills     = (playerStats.Length > 1 && int.TryParse(playerStats[1], out int x2) && x2 > AdminToolbox.playerdict[pl.SteamId].TeamKills) ? x2 : AdminToolbox.playerdict[pl.SteamId].TeamKills;
                        AdminToolbox.playerdict[pl.SteamId].Deaths        = (playerStats.Length > 2 && int.TryParse(playerStats[2], out int x3) && x3 > AdminToolbox.playerdict[pl.SteamId].Deaths) ? x3 : AdminToolbox.playerdict[pl.SteamId].Deaths;
                        AdminToolbox.playerdict[pl.SteamId].minutesPlayed = (playerStats.Length > 3 && double.TryParse(playerStats[3], out double x4) && x4 > AdminToolbox.playerdict[pl.SteamId].minutesPlayed) ? x4 : AdminToolbox.playerdict[pl.SteamId].minutesPlayed;
                        //AdminToolbox.playerdict[pl.SteamId] = myPlayer;
                    }
                }
            }
        }