public override bool Execute(string[] args) { if (args.Length <= 0) { chatMessage = Lang["errArg"]; return(false); } int ID; if (!int.TryParse(args[0], out ID)) { chatMessage = Lang["errArg"]; return(false); } PhotonPlayer target = PhotonPlayer.Find(ID); if (target == null) { chatMessage = Lang["errArg"]; return(false); } string killer = args.Length > 1 ? args[1] : "Kill"; return(Abuse.Kill(target, killer)); }
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { string strAbuseResourceFileID = Request.Params["r"]; string strAbuseURL = Request.Params["url"]; Member member = (Member)Session["Member"]; if (strAbuseResourceFileID != null && member != null) { if (strAbuseURL == null) { strAbuseURL = string.Empty; } Abuse abuse = new Abuse(); abuse.MemberID = member.MemberID; abuse.ResourceFileID = strAbuseResourceFileID; abuse.DTCreated = DateTime.Now; abuse.URL = strAbuseURL; abuse.Save(); AbuseCompleted = true; } } }
// [MasterClientOnly] public void KillCMD(ChatCommandContext ctx) { if (ctx.Arguments.Length <= 0) { ctx.SendLocalMessage(Lang["errArg"]); return; } int ID; if (!int.TryParse(ctx.Arguments[0], out ID)) { ctx.SendLocalMessage(Lang["errArg"]); return; } PhotonPlayer target = PhotonPlayer.Find(ID); if (target == null) { ctx.SendLocalMessage(Lang["errArg"]); return; } if (target.IsTitan) { // string message = $"{PhotonNetwork.player.GameObject.GetComponent<HERO>().checkBoxLeft.GetComponent<TriggerColliderWeapon>().gameObject.GetPhotonView().viewID}"; // ctx.SendLocalMessage(message == "" ? "No view" : message); ctx.SendLocalMessage("isTITAN"); if (target.GameObject.GetComponent <TITAN>()) { ctx.SendLocalMessage("TITAN object found"); int view = ctx.Arguments.Length > 1 ? Convert.ToInt32(ctx.Arguments[1]) : PhotonNetwork.player.GameObject.GetComponent <HERO>().checkBoxLeft.GetComponent <TriggerColliderWeapon>().gameObject.GetPhotonView().viewID; target.GameObject.GetComponent <TITAN>().BasePV.RPC("titanGetHit", target, new object[] { view, 69 }); } else { ctx.SendLocalMessage("No TITAN object found"); } } else { string killer = ctx.Arguments.Length > 1 ? ctx.Arguments[1] : "Kill"; Abuse.Kill(target, killer); } }
protected virtual void HandleAbuseCommand(CommandMatch cmd, IChannelMessageEventArgs message) { if (!EnsureOp(message)) { return; } TimeSpan?banTime = null; TimeSpan?cooldownTime = null; foreach (KeyValuePair <string, object> option in cmd.Options) { if (option.Key == "-b" || option.Key == "--ban-time") { if (banTime.HasValue) { ConnectionManager.SendChannelMessage( message.Channel, $"{message.SenderNickname}: -b/--ban-time may not be specified more than once (in total)." ); return; } banTime = TimeUtil.TimeSpanFromString((string)option.Value); if (!banTime.HasValue) { ConnectionManager.SendChannelMessage( message.Channel, $"{message.SenderNickname}: Invalid time span specified for {option.Key}." ); return; } } else if (option.Key == "-c" || option.Key == "--cooldown-time") { if (cooldownTime.HasValue) { ConnectionManager.SendChannelMessage( message.Channel, $"{message.SenderNickname}: -c/--cooldown-time may not be specified more than once (in total)." ); return; } cooldownTime = TimeUtil.TimeSpanFromString((string)option.Value); if (!cooldownTime.HasValue) { ConnectionManager.SendChannelMessage( message.Channel, $"{message.SenderNickname}: Invalid time span specified for {option.Key}." ); return; } } } if (!banTime.HasValue) { banTime = TimeSpan.FromMinutes(Config.AbuseBanMinutes); } if (!cooldownTime.HasValue) { cooldownTime = TimeSpan.FromMinutes(Config.AbuseLockMinutes); } var bannerNickname = (string)cmd.Arguments[0]; var criterionName = (string)cmd.Arguments[1]; Criterion crit; Ban ban; Abuse abuse; using (var ctx = GetNewContext()) { // identify the criterion crit = ctx.Criteria .FirstOrDefault(c => c.Name == criterionName && c.Channel == message.Channel); if (crit == null) { ConnectionManager.SendChannelMessage(message.Channel, $"{message.SenderNickname}: Unknown criterion."); return; } // find the last relevant ban ban = ctx.Bans .Where(b => b.CriterionID == crit.ID) .Where(b => b.BannerNickname == bannerNickname) .OrderByDescending(b => b.Timestamp) .FirstOrDefault(); if (ban == null) { ConnectionManager.SendChannelMessage(message.Channel, $"{message.SenderNickname}: No relevant ban found."); return; } // find if it has been sanctioned yet bool sanctioned = ctx.Abuses .Any(a => a.BanID == ban.ID); if (sanctioned) { ConnectionManager.SendChannelMessage(message.Channel, $"{message.SenderNickname}: This abuse has already been sanctioned."); return; } // lift the running ban ban.Lifted = true; // burn abuse = new Abuse { BanID = ban.ID, OpNickname = message.SenderNickname, OpUsername = ConnectionManager.RegisteredNameForNick(message.SenderNickname), Timestamp = DateTimeOffset.Now, BanUntil = DateTimeOffset.Now.Add(banTime.Value), LockUntil = DateTimeOffset.Now.Add(cooldownTime.Value), Lifted = (banTime.Value.Ticks == 0) }; ctx.Abuses.Add(abuse); ctx.SaveChanges(); } Logger.LogDebug( "{OpNickname} is sanctioning {BannerNickname} for abusing criterion {CriterionID} ({CriterionName}) " + "in channel {Channel} banning {OffenderNickname} (ban {BanID}), creating abuse entry {AbuseID}", message.SenderNickname, ban.BannerNickname, ban.CriterionID, crit.Name, message.Channel, ban.OffenderNickname, ban.ID, abuse.ID ); ConnectionManager.ChangeChannelMode(message.Channel, $"-b {ban.OffenderNickname}!*@*"); if (banTime.Value.Ticks > 0) { ConnectionManager.ChangeChannelMode(message.Channel, $"+b {ban.BannerNickname}!*@*"); ConnectionManager.KickChannelUser( message.Channel, ban.BannerNickname, $"demoderation abuse sanctioned by {message.SenderNickname}" ); } }