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); } }
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); // } // } //} }
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; } } }
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); } }
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]++; } } }
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; }
/// <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>(); }
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())); }
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); } }
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); }
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); } } }
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++; } }
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; } } } }
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; } } }
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; } } }
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); }
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; } } }
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); } }
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); } } } }
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); } } }
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; } }
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; } }
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;
public PlayerDamageEvent(AdminToolbox plugin) => this.plugin = plugin;
public RoundEventHandler(AdminToolbox plugin) => this.plugin = plugin;
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; } } } }