void OnDoorStateChanged(ref HookContext ctx, ref HookArgs.DoorStateChanged args) { if ((!restrictGuests) || (!restrictGuestsDoors)) { return; } var player = ctx.Player; if (player == null) { return; } if (player.AuthenticatedAs == null) { ctx.SetResult(HookResult.RECTIFY); player.sendMessage("<Restrict> You are not allowed to open and close doors as a guest."); player.sendMessage("<Restrict> Type \"/reg password\" to request registration."); } else if (IsRestrictedForUser(ctx.Player, DoorChange)) { ctx.SetResult(HookResult.RECTIFY); player.sendMessage("<Restrict> You are not allowed to open and close doors without permissions."); } }
void OnDoorStateChange(ref HookContext ctx, ref HookArgs.DoorStateChanged args) { foreach (Region rgn in regionManager.Regions) { if (rgn.HasPoint(new Vector2(args.X, args.Y))) { if (ctx.Sender is Player) { Player player = ctx.Sender as Player; if (IsRestrictedForUser(player, rgn, DoorChange)) { ctx.SetResult(HookResult.RECTIFY); player.sendMessage("You cannot edit this area!", ChatColor.Red); return; } } else if (ctx.Sender is NPC) { if (rgn.RestrictedNPCs) { ctx.SetResult(HookResult.RECTIFY); //[TODO] look into RECIFYing for NPC's, They don't need to be resent, only cancelled, IGRNORE? return; } } } } }