void OnPlayerKilled(BasePlayer victim, BasePlayer killer) { #if DEBUG PrintToChat($"{killer?.displayName ?? "null"} kills {victim?.displayName ?? "null"}"); #endif Hunt hunt = null; hunt = HuntData.getHuntByTarget(victim); if (hunt != null) //Hunter kills target { if (hunt.hunter == killer && hunt.target == victim) { hunt.end(hunt.hunter); } } else { hunt = HuntData.getHuntByHunter(victim); } if (hunt != null) //target kills hunter { if (hunt.target == killer && hunt.hunter == victim) { hunt.end(hunt.target); } } return; }
private object OnItemAction(Item item, string action) { if (action != "crush") { return(null); } if (item.info.shortname != "skull.human") { return(null); } string skullName = null; if (item.name != null) { skullName = item.name.Substring(10, item.name.Length - 11); } if (string.IsNullOrEmpty(skullName)) { return(null); } BasePlayer killer = item.GetOwnerPlayer(); BasePlayer victim = BasePlayer.Find(skullName); if (victim == null) { return(null); } #if DEBUG PrintToChat($"{killer} crushed {victim}'s skull!"); #endif Hunt hunt = null; hunt = HuntData.getHuntByTarget(victim); if (hunt == null) { hunt = HuntData.getHuntByHunter(victim); } if (hunt == null) { return(null); } if (hunt.hunter == killer || hunt.target == killer) { hunt.end(killer); return(null); } return(null); }
void OnPlayerDisconnected(BasePlayer player, string reason) { if (player == null) { return; } Hunt hunt = HuntData.getHuntByHunter(player); if (hunt == null) { return; } hunt.end(); CooldownData.removeCooldown(hunt.target); }
private void huntCommand(BasePlayer player, string command, string[] args) { if (!hasPermission(player, permissions.admin)) { PrintToChat(player, lang.GetMessage("noPermission", this, player.UserIDString)); return; } if (args.Length == 0) { return; } switch (args[0]) { case "list": player.ChatMessage("Ongoing hunts:"); foreach (Hunt h in HuntData.instance.hunts) { player.ChatMessage($"{h.hunterName} hunts {h.bounty.targetName}"); } break; case "end": case "remove": if (args.Length < 2) { return; } BasePlayer target = findPlayer(args[1], player); Hunt hunt = HuntData.getHuntByHunter(target); if (hunt == null) { hunt = HuntData.getHuntByTarget(target); } if (hunt == null) { return; } hunt.end(); player.ChatMessage("removed hunt"); break; } }