Ejemplo n.º 1
0
        public static void AddHouse(House house)
        {
            // try and get the houses for the given region
            Dictionary <int, House> housesByRegion;

            _houseList.TryGetValue(house.RegionID, out housesByRegion);

            if (housesByRegion == null)
            {
                return;
            }

            // if the house doesn't exist yet, add it
            if (!housesByRegion.ContainsKey(house.HouseNumber))
            {
                housesByRegion.Add(house.HouseNumber, house);
            }
            else
            {
                // replace the existing lot with our new house
                housesByRegion[house.HouseNumber] = house;
            }

            if (house.Model == 0)
            {
                // if this is a lot marker purchase then reset all permissions and customization
                RemoveHouseItems(house);
                RemoveHousePermissions(house);
                ResetHouseData(house);
            }
            else
            {
                // create a new set of permissions
                for (int i = HousingConstants.MinPermissionLevel; i < HousingConstants.MaxPermissionLevel + 1; i++)
                {
                    if (house.PermissionLevels.ContainsKey(i))
                    {
                        var oldPermission = house.PermissionLevels[i];
                        if (oldPermission != null)
                        {
                            GameServer.Database.DeleteObject(oldPermission);
                        }
                    }

                    // create a new, blank permission
                    var permission = new DBHousePermissions(house.HouseNumber, i);
                    house.PermissionLevels.Add(i, permission);

                    // add the permission to the database
                    GameServer.Database.AddObject(permission);
                }
            }

            // save the house, broadcast an update
            house.SaveIntoDatabase();
            house.SendUpdate();
        }
Ejemplo n.º 2
0
        public void HandlePacket(GameClient client, GSPacketIn packet)
        {
            int level = packet.ReadByte();

            packet.ReadByte(); // unk1
            ushort housenumber = packet.ReadShort();

            // make sure permission level is within bounds
            if (level < HousingConstants.MinPermissionLevel || level > HousingConstants.MaxPermissionLevel)
            {
                return;
            }

            // house is null, return
            var house = HouseMgr.GetHouse(housenumber);

            if (house == null)
            {
                return;
            }

            // player is null, return
            if (client.Player == null)
            {
                return;
            }

            // player has no owner permissions and isn't a GM or admin, return
            if (!house.HasOwnerPermissions(client.Player) && client.Account.PrivLevel <= 1)
            {
                return;
            }

            // read in the permission values
            DBHousePermissions permission = house.PermissionLevels[level];

            permission.CanEnterHouse = packet.ReadByte() != 0;
            permission.Vault1        = (byte)packet.ReadByte();
            permission.Vault2        = (byte)packet.ReadByte();
            permission.Vault3        = (byte)packet.ReadByte();
            permission.Vault4        = (byte)packet.ReadByte();
            permission.CanChangeExternalAppearance = packet.ReadByte() != 0;
            permission.ChangeInterior      = (byte)packet.ReadByte();
            permission.ChangeGarden        = (byte)packet.ReadByte();
            permission.CanBanish           = packet.ReadByte() != 0;
            permission.CanUseMerchants     = packet.ReadByte() != 0;
            permission.CanUseTools         = packet.ReadByte() != 0;
            permission.CanBindInHouse      = packet.ReadByte() != 0;
            permission.ConsignmentMerchant = (byte)packet.ReadByte();
            permission.CanPayRent          = packet.ReadByte() != 0;
            packet.ReadByte(); // unk2

            // save the updated permission
            GameServer.Database.SaveObject(permission);
        }