示例#1
0
        /// <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);
        }
示例#2
0
 /// <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;
 }
示例#3
0
 /// <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;
 }
示例#4
0
 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;
 }
示例#5
0
        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;
        }
示例#6
0
 internal bool HasAllRequiredFurnis(Room room)
 {
     if (room == null) return false;
     foreach (string furni in RequiredFurnis)
     {
         if (!room.GetRoomItemHandler().HasFurniByItemName(furni))
         {
             return false;
         }
     }
     return true;
 }
示例#7
0
        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);
            }
        }