internal bool IsPossibleRevenge(ref PlayerHurtEvent ev) { if (!plugin.antiRevenge) { return(false); } TeamKillCoolDown cooldown = null; foreach (var item in teamKillRevengeTimers) { if (item.UserId.Equals(ev.Attacker.GetUserId()) && item.NotRevengeUserId.Equals(ev.Player.GetUserId()) && Time.timeSinceLevelLoad - item.Time <= plugin.RevengeTimer) { cooldown = item; break; } } if (cooldown != null) { return(true); } return(false); }
internal void CheckKill(ref PlayerHurtEvent ev, Team team, Team target, ReferenceHub attacker, ReferenceHub player) { if (attacker == null || player == null) { SetAmountZero(ref ev); return; } bool ntf = (target == Team.MTF || target == Team.RSC || ((target == Team.CHI || target == Team.CDP) && player.IsHandCuffed())) && (team == Team.MTF || team == Team.RSC); bool ci = (target == Team.CHI || target == Team.CDP || ((target == Team.MTF || target == Team.RSC) && player.IsHandCuffed())) && (team == Team.CHI || team == Team.CDP); bool scpNear = plugin.useScpNear ? IsScpNearby(player, plugin.maxScpDist) : false; bool inElevator = plugin.useInElevator ? IsNearElevator(player, 20f) : false; if ((ntf || ci)) { if (!teamKills.ContainsKey(attacker.GetUserId())) { teamKills.Add(attacker.GetUserId(), 0); } if (!teamKillTimers.ContainsKey(attacker.GetUserId())) { teamKillTimers.Add(attacker.GetUserId(), 0f); } var curtks = teamKills[attacker.GetUserId()]; if (team == Team.RIP || Time.timeSinceLevelLoad - teamKillTimers[attacker.GetUserId()] <= plugin.TKInterval || scpNear || inElevator || IsTeamSquadNearby(player, team, target, plugin.maxTeamDist)) { SetAmountZero(ref ev); BroadCastToPlayer(attacker, 3, "You cannot teamkill now."); return; } else if (IsPossibleRevenge(ref ev)) { SetAmountZero(ref ev); BroadCastToPlayer(attacker, 3, "You cannot revengekill."); return; } else if (teamKills[attacker.GetUserId()] >= plugin.maxTK) { SetAmountZero(ref ev); BroadCastToPlayer(attacker, 3, "Max teamkills reached."); return; } else if (player.GetHealth() - ev.Amount <= 0f) { teamKills[attacker.GetUserId()]++; attacker.Broadcast(3, "Teamkills Left: " + (plugin.maxTK - (curtks + 1)), false); if (!teamKillTimers.ContainsKey(attacker.GetUserId())) { teamKillTimers.Add(attacker.GetUserId(), Time.timeSinceLevelLoad); } teamKillTimers[attacker.GetUserId()] = Time.timeSinceLevelLoad; var data = new TeamKillCoolDown() { NotRevengeUserId = attacker.GetUserId(), Time = Time.timeSinceLevelLoad, UserId = player.GetUserId() }; teamKillRevengeTimers.Add(data); } } /*else if ((ntf || ci) && (inElevator || scpNear)) * { * ev.Amount = 0f; * BroadCastToPlayer(ev.Attacker, 3, "You cannot teamkill now."); * return; * }*/ }