Example #1
0
        private static bool HandleTile(GetDataHandlerArgs args)
        {
            byte type     = args.Data.ReadInt8();
            int  x        = args.Data.ReadInt32();
            int  y        = args.Data.ReadInt32();
            byte tiletype = args.Data.ReadInt8();
            var  player   = HTools.GetPlayerByID(args.Player.Index);

            int tilex = Math.Abs(x);
            int tiley = Math.Abs(y);

            if (player.AwaitingHouseName)
            {
                if (HTools.InAreaHouseName(x, y) == null)
                {
                    args.Player.SendMessage("Tile is not in any House", Color.Yellow);
                }
                else
                {
                    args.Player.SendMessage("House Name: " + HTools.InAreaHouseName(x, y), Color.Yellow);
                }
                args.Player.SendTileSquare(x, y);
                player.AwaitingHouseName = false;
                return(true);
            }

            if (args.Player.AwaitingTempPoint > 0)
            {
                args.Player.TempPoints[args.Player.AwaitingTempPoint - 1].X = x;
                args.Player.TempPoints[args.Player.AwaitingTempPoint - 1].Y = y;
                args.Player.SendMessage("Set Temp Vector2 " + args.Player.AwaitingTempPoint, Color.Yellow);
                args.Player.SendTileSquare(x, y);
                args.Player.AwaitingTempPoint = 0;
                return(true);
            }

            if (!args.Player.Group.HasPermission("edithouse"))
            {
                lock (HousingDistricts.HPlayers)
                {
                    foreach (House house in HousingDistricts.Houses)
                    {
                        if (house.HouseArea.Intersects(new Rectangle(tilex, tiley, 1, 1)) && house.WorldID == Main.worldID.ToString())
                        {
                            if (!HTools.OwnsHouse(args.Player.UserID.ToString(), house.Name))
                            {
                                args.Player.SendTileSquare(tilex, tiley);
                                return(true);
                            }
                        }
                    }
                }
            }
            return(false);
        }
Example #2
0
        private static bool HandlePlaceObject(GetDataHandlerArgs args)
        {
            var Start = DateTime.Now;

            int x = args.Data.ReadInt16();
            int y = args.Data.ReadInt16();
            //short tiletype = args.Data.ReadInt16();

            var player = HTools.GetPlayerByID(args.Player.Index);

            if (player.AwaitingHouseName)
            {
                if (HTools.InAreaHouseName(x, y) == null)
                {
                    args.Player.SendMessage("Tile is not in any House", Color.Yellow);
                }
                else
                {
                    args.Player.SendMessage("House Name: " + HTools.InAreaHouseName(x, y), Color.Yellow);
                }

                args.Player.SendTileSquare(x, y);
                player.AwaitingHouseName = false;
                return(true);
            }

            if (args.Player.AwaitingTempPoint > 0)
            {
                args.Player.TempPoints[args.Player.AwaitingTempPoint - 1].X = x;
                args.Player.TempPoints[args.Player.AwaitingTempPoint - 1].Y = y;

                if (args.Player.AwaitingTempPoint == 1)
                {
                    args.Player.SendMessage("Top-left corner of protection area has been set!", Color.Yellow);
                }

                if (args.Player.AwaitingTempPoint == 2)
                {
                    args.Player.SendMessage("Bottom-right corner of protection area has been set!", Color.Yellow);
                }

                args.Player.SendTileSquare(x, y);
                args.Player.AwaitingTempPoint = 0;
                return(true);
            }
            if (!args.Player.Group.HasPermission(EditHouse))
            {
                //lock (HousingDistricts.HPlayers)
                {
                    var rect = new Rectangle(x, y, 1, 1);
                    return(House.HandlerAction((house) =>
                    {
                        if (HousingDistricts.Timeout(Start))
                        {
                            return false;
                        }
                        if (house != null && house.HouseArea.Intersects(rect))
                        {
                            if (!HTools.OwnsHouse(args.Player.User, house))
                            {
                                args.Player.SendTileSquare(x, y);
                                return true;
                            }
                        }
                        return false;
                    }));
                }
            }
            return(false);
        }