void OnChestOpen(ref HookContext ctx, ref HookArgs.ChestOpenReceived args) { var player = ctx.Player; if (player == null || player.Name == null) { ProgramLog.Log("<Restrict> Invalid player in OnChestOpen."); ctx.SetResult(HookResult.IGNORE); return; } if (!restrictGuests) { return; } if (player.AuthenticatedAs == null) { ctx.SetResult(HookResult.IGNORE); player.sendMessage("<Restrict> You are not allowed to open chests as a guest."); player.sendMessage("<Restrict> Type \"/reg password\" to request registration."); } else if (IsRestrictedForUser(ctx.Player, ChestOpen)) { ctx.SetResult(HookResult.RECTIFY); player.sendMessage("<Restrict> You are not allowed to open chests without permissions."); } }
public override void Process(int whoAmI, byte[] readBuffer, int length, int num) { int x = BitConverter.ToInt32(readBuffer, num); num += 4; int y = BitConverter.ToInt32(readBuffer, num); num += 4; var player = Main.players[whoAmI]; if (Math.Abs(player.Position.X / 16 - x) >= 7 || Math.Abs(player.Position.Y / 16 - y) >= 7) { return; } int chestIndex = Chest.FindChest(x, y); var ctx = new HookContext { Connection = player.Connection, Player = player, Sender = player, }; var args = new HookArgs.ChestOpenReceived { X = x, Y = y, ChestIndex = (short)chestIndex, }; HookPoints.ChestOpenReceived.Invoke(ref ctx, ref args); if (ctx.CheckForKick()) { return; } if (ctx.Result == HookResult.IGNORE) { return; } if (ctx.Result == HookResult.DEFAULT && chestIndex > -1) { var user = Chest.UsingChest(chestIndex); if (user >= 0 && user != whoAmI) { return; } for (int i = 0; i < Chest.MAX_ITEMS; i++) { NetMessage.SendData(32, whoAmI, -1, "", chestIndex, (float)i); } NetMessage.SendData(33, whoAmI, -1, "", chestIndex); Main.players[whoAmI].chest = chestIndex; return; } }
void OnChestOpen(ref HookContext ctx, ref HookArgs.ChestOpenReceived args) { foreach (Region rgn in regionManager.Regions) { if (rgn.HasPoint(new Vector2(args.X, args.Y))) { if (ctx.Sender is Player) { if (IsRestrictedForUser(ctx.Player, rgn, DoorChange)) { ctx.SetResult(HookResult.RECTIFY); ctx.Player.sendMessage("You cannot edit this object!", ChatColor.Red); return; } } } } }