/// <summary> /// Delivers the random pinata item. /// </summary> /// <param name="user">The user.</param> /// <param name="room">The room.</param> /// <param name="item">The item.</param> internal void DeliverRandomPinataItem(RoomUser user, Room room, RoomItem item) { if (room == null || item == null || item.GetBaseItem().InteractionType != Interaction.Pinata || !Pinatas.ContainsKey(item.GetBaseItem().ItemId)) return; PinataItem pinataItem; Pinatas.TryGetValue(item.GetBaseItem().ItemId, out pinataItem); if (pinataItem == null || pinataItem.Rewards.Count < 1) return; item.RefreshItem(); item.BaseItem = pinataItem.Rewards[new Random().Next((pinataItem.Rewards.Count - 1))]; item.ExtraData = string.Empty; room.GetRoomItemHandler().RemoveFurniture(user.GetClient(), item.Id, false); using (var queryReactor = AzureEmulator.GetDatabaseManager().GetQueryReactor()) { queryReactor.RunFastQuery(string.Format("UPDATE items_rooms SET base_item='{0}', extra_data='' WHERE id='{1}'", item.BaseItem, item.Id)); queryReactor.RunQuery(); } if (!room.GetRoomItemHandler().SetFloorItem(user.GetClient(), item, item.X, item.Y, 0, true, false, true)) user.GetClient().GetHabbo().GetInventoryComponent().AddItem(item); }
/// <summary> /// Determines whether [is tele linked] [the specified tele identifier]. /// </summary> /// <param name="teleId">The tele identifier.</param> /// <param name="pRoom">The p room.</param> /// <returns><c>true</c> if [is tele linked] [the specified tele identifier]; otherwise, <c>false</c>.</returns> internal static bool IsTeleLinked(uint teleId, Room pRoom) { var linkedTele = GetLinkedTele(teleId, pRoom); if (linkedTele == 0u) return false; var item = pRoom.GetRoomItemHandler().GetItem(linkedTele); return (item != null && (item.GetBaseItem().InteractionType == Interaction.Teleport || item.GetBaseItem().InteractionType == Interaction.QuickTeleport)) || GetTeleRoomId(linkedTele, pRoom) != 0u; }
/// <summary> /// Gets the tele room identifier. /// </summary> /// <param name="teleId">The tele identifier.</param> /// <param name="pRoom">The p room.</param> /// <returns>System.UInt32.</returns> internal static uint GetTeleRoomId(uint teleId, Room pRoom) { if (pRoom.GetRoomItemHandler().GetItem(teleId) != null) return pRoom.RoomId; uint result = uint.MinValue; using (var queryReactor = AzureEmulator.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Format("SELECT room_id FROM items_rooms WHERE id = {0} LIMIT 1", teleId)); var row = queryReactor.GetRow(); result = row == null ? 0u : Convert.ToUInt32(row[0]); } return result; }
internal ServerMessage AppendEntrySubmitMessage(ServerMessage message, int status, Room room = null) { message.Init(LibraryParser.OutgoingRequest("CompetitionEntrySubmitResultMessageComposer")); message.AppendInteger(Id); message.AppendString(Name); message.AppendInteger(status);// 0 : roomSent - 1 : send room - 2 : confirm register - 3 : neededFurnis - 4 : doorClosed - 6 : acceptRules if (status != 3) { message.AppendInteger(0); message.AppendInteger(0); } else { message.StartArray(); foreach (string furni in RequiredFurnis) { message.AppendString(furni); message.SaveArray(); } message.EndArray(); if (room == null) { message.AppendInteger(0); } else { message.StartArray(); foreach (string furni in RequiredFurnis) { if (!room.GetRoomItemHandler().HasFurniByItemName(furni)) { message.AppendString(furni); message.SaveArray(); } } message.EndArray(); } } return message; }
private static List<RoomItem> GetFurniItems(ClientMessage request, Room room) { var list = new List<RoomItem>(); var itemCount = request.GetInteger(); for (var i = 0; i < itemCount; i++) { var item = room.GetRoomItemHandler().GetItem(request.GetUInteger()); if (item != null) list.Add(item); } return list; }
internal bool HasAllRequiredFurnis(Room room) { if (room == null) return false; foreach (string furni in RequiredFurnis) { if (!room.GetRoomItemHandler().HasFurniByItemName(furni)) { return false; } } return true; }
internal void PlantMonsterplant(RoomItem mopla, Room room) { int rarity = 0, internalRarity = 0; if (room == null || mopla == null) return; if ((mopla.GetBaseItem().InteractionType != Interaction.Moplaseed) && (mopla.GetBaseItem().InteractionType != Interaction.RareMoplaSeed)) return; if (string.IsNullOrEmpty(mopla.ExtraData) || mopla.ExtraData == "0") rarity = 1; if (!string.IsNullOrEmpty(mopla.ExtraData) && mopla.ExtraData != "0") rarity = int.TryParse(mopla.ExtraData, out internalRarity) ? internalRarity : 1; var getX = mopla.X; var getY = mopla.Y; room.GetRoomItemHandler().RemoveFurniture(Session, mopla.Id, false); var pet = CatalogManager.CreatePet(Session.GetHabbo().Id, "Monsterplant", 16, "0", "0", rarity); Response.Init(LibraryParser.OutgoingRequest("SendMonsterplantIdMessageComposer")); Response.AppendInteger(pet.PetId); SendResponse(); using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor()) queryReactor.RunFastQuery(string.Concat("UPDATE bots SET room_id = '", room.RoomId, "', x = '", getX, "', y = '", getY, "' WHERE id = '", pet.PetId, "'")); pet.PlacedInRoom = true; pet.RoomId = room.RoomId; var bot = new RoomBot(pet.PetId, pet.OwnerId, pet.RoomId, AiType.Pet, "freeroam", pet.Name, "", pet.Look, getX, getY, 0.0, 4, 0, 0, 0, 0, null, null, "", 0, false); room.GetRoomUserManager().DeployBot(bot, pet); if (pet.DbState != DatabaseUpdateState.NeedsInsert) pet.DbState = DatabaseUpdateState.NeedsUpdate; using (var queryreactor2 = Azure.GetDatabaseManager().GetQueryReactor()) { queryreactor2.RunFastQuery(string.Format("DELETE FROM items_rooms WHERE id = {0}", mopla.Id)); room.GetRoomUserManager().SavePets(queryreactor2); } }