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(); }
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); }