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.");
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
 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;
                 }
             }
         }
     }
 }