Exemplo n.º 1
0
        internal static void MatchingPollResults(GameClient client, Poll poll)
        {
            var room = client.GetHabbo().CurrentRoom;
            if (poll == null || poll.Type != PollType.Matching || room == null)
                return;

            var users = room.GetRoomUserManager().GetRoomUsers();

            for (var i = 0; i < 10; i++)
            {
                Thread.Sleep(1000);
                foreach (var roomUser in users)
                {
                    var user = Azure.GetHabboById(roomUser.UserId);
                    if (user.AnsweredPool)
                    {
                        var result =
                            new ServerMessage(LibraryParser.OutgoingRequest("MatchingPollResultMessageComposer"));
                        result.AppendInteger(poll.Id);
                        result.AppendInteger(2);
                        result.AppendString("0");
                        result.AppendInteger(poll.AnswersNegative);
                        result.AppendString("1");
                        result.AppendInteger(poll.AnswersPositive);
                        client.SendMessage(result);
                    }
                }
            }

            foreach (var roomUser in users)
                Azure.GetHabboById(roomUser.UserId).AnsweredPool = false;
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Gives the badge.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="inDatabase">if set to <c>true</c> [in database].</param>
        /// <param name="session">The session.</param>
        /// <param name="wiredReward">if set to <c>true</c> [wired reward].</param>
        internal void GiveBadge(string badge, bool inDatabase, GameClient session, bool wiredReward = false)
        {
            if (wiredReward)
                session.SendMessage(SerializeBadgeReward(!HasBadge(badge)));

            if (HasBadge(badge))
                return;

            if (inDatabase)
            {
                using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.SetQuery(
                        string.Concat("INSERT INTO users_badges (user_id,badge_id,badge_slot) VALUES (", _userId,
                            ",@badge,", 0, ")"));
                    queryReactor.AddParameter("badge", badge);
                    queryReactor.RunQuery();
                }
            }

            BadgeList.Add(badge, new Badge(badge, 0));

            session.SendMessage(SerializeBadge(badge));
            session.SendMessage(Update(badge));
        }
Exemplo n.º 3
0
        public override bool Execute(GameClient client, string[] pms)
        {
            var message =
                new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer"));

            message.AppendString("Azure");
            message.AppendInteger(4);
            message.AppendString("title");
            message.AppendString("ManiaEVO 1.2");
            message.AppendString("message");
            var info = new StringBuilder();
            info.Append("<h5><b>ManiaEVO 1.2 - Base: Azure</b><h5></br></br>");
            info.Append("<br />");
            info.AppendFormat(
                "<b><br />Desenvolvedores:</b> <br />iPlezier <br />Claudi0<br />Kessiler <br /><br /> ");
            info.AppendFormat(
                "<b>Créditos:</b> <br />Jamal, Claudio, Boris, Lucca, Antoine, IhToN<br /> <br /> ");
            info.AppendFormat("<b>Estatisticas:</b> <br />");
            var userCount = Azure.GetGame().GetClientManager().Clients.Count;
            var roomsCount = Azure.GetGame().GetRoomManager().LoadedRooms.Count;
            info.AppendFormat("<b>Usuários:</b> {0} em {1}{2}.<br /><br /><br />", userCount, roomsCount,
                (roomsCount == 1) ? " Quarto" : " Quartos");
            message.AppendString(info.ToString());
            message.AppendString("linkUrl");
            message.AppendString("event:");
            message.AppendString("linkTitle");
            message.AppendString("ok");
            client.SendMessage(message);

            return true;
        }
Exemplo n.º 4
0
 public override bool Execute(GameClient session, string[] pms)
 {
     var room = session.GetHabbo().CurrentRoom;
     foreach (
         var pet in
             room.GetRoomUserManager().GetPets().Where(pet => pet.OwnerId == session.GetHabbo().Id))
     {
         session.GetHabbo().GetInventoryComponent().AddPet(pet);
         room.GetRoomUserManager().RemoveBot(pet.VirtualId, false);
     }
     session.SendMessage(session.GetHabbo().GetInventoryComponent().SerializePetInventory());
     return true;
 }
Exemplo n.º 5
0
        public override bool Execute(GameClient session, string[] pms)
        {
            if (ExtraSettings.NewPageCommands)
            {
                session.SendMessage(StaticMessage.NewWayToOpenCommandsList);
                return true;
            }

            string commandList;
            if (pms.Length == 0)
            {
                commandList =
                    CommandsManager.CommandsDictionary.Where(
                        command => CommandsManager.CanUse(command.Value.MinRank, session))
                        .Aggregate(string.Empty,
                            (current, command) =>
                                current + (command.Value.Usage + " - " + command.Value.Description + "\n"));
            }
            else
            {
                if (pms[0].Length == 1)
                {
                    commandList =
                        CommandsManager.CommandsDictionary.Where(
                            command =>
                                command.Key.StartsWith(pms[0]) && CommandsManager.CanUse(command.Value.MinRank, session))
                            .Aggregate(string.Empty,
                                (current, command) =>
                                    current + (command.Value.Usage + " - " + command.Value.Description + "\n"));
                }
                else
                {
                    commandList =
                        CommandsManager.CommandsDictionary.Where(
                            command =>
                                command.Key.Contains(pms[0]) && CommandsManager.CanUse(command.Value.MinRank, session))
                            .Aggregate(string.Empty,
                                (current, command) =>
                                    current + (command.Value.Usage + " - " + command.Value.Description + "\n"));
                }
            }
            session.SendNotifWithScroll(commandList);

            return true;
        }
Exemplo n.º 6
0
        public override bool Execute(GameClient session, string[] pms)
        {
            var client = Azure.GetGame().GetClientManager().GetClientByUserName(pms[0]);
            if (client == null || client.GetHabbo() == null)
            {
                session.SendWhisper(Azure.GetLanguage().GetVar("user_not_found"));
                return true;
            }
            if (client.GetHabbo().CurrentRoom == null ||
                client.GetHabbo().CurrentRoom == session.GetHabbo().CurrentRoom)
                return false;
            var roomFwd =
                new ServerMessage(LibraryParser.OutgoingRequest("RoomForwardMessageComposer"));
            roomFwd.AppendInteger(client.GetHabbo().CurrentRoom.RoomId);
            session.SendMessage(roomFwd);

            return true;
        }
Exemplo n.º 7
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            var user = session.GetHabbo();
            var ishc = user.Vip;

            if (!ishc)
            {
                var message = new ServerMessage(LibraryParser.OutgoingRequest("CustomUserNotificationMessageComposer"));
                message.AppendInteger(3);
                session.SendMessage(message);
                return;
            }

            if (item?.GetBaseItem() == null || item.GetBaseItem().InteractionType != Interaction.HcGate)
                return;

            var modes = item.GetBaseItem().Modes - 1;

            if (modes <= 0)
                item.UpdateState(false, true);

            int currentMode;
            int.TryParse(item.ExtraData, out currentMode);
            int newMode;

            if (currentMode <= 0)
                newMode = 1;
            else if (currentMode >= modes)
                newMode = 0;
            else
                newMode = currentMode + 1;

            if (newMode == 0 && !item.GetRoom().GetGameMap().ItemCanBePlacedHere(item.X, item.Y))
                return;

            item.ExtraData = newMode.ToString();
            item.UpdateState();
            item.GetRoom().GetGameMap().UpdateMapForItem(item);
            item.GetRoom()
                .GetWiredHandler()
                .ExecuteWired(Interaction.TriggerStateChanged,
                    item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id), item);
        }
Exemplo n.º 8
0
        /// <summary>
        ///     Completes the user talent.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="talent">The talent.</param>
        internal void CompleteUserTalent(GameClient session, Talent talent)
        {
            if (session?.GetHabbo() == null || session.GetHabbo().CurrentTalentLevel < talent.Level || session.GetHabbo().Talents.ContainsKey(talent.Id))
                return;

            if (!LevelIsCompleted(session, talent.Type, talent.Level))
                return;

            if (!string.IsNullOrEmpty(talent.Prize) && talent.PrizeBaseItem > 0u)
                Azure.GetGame().GetCatalog().DeliverItems(session, Azure.GetGame().GetItemManager().GetItem(talent.PrizeBaseItem), 1, string.Empty, 0, 0, string.Empty);

            session.GetHabbo().Talents.Add(talent.Id, new UserTalent(talent.Id, 1));

            using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery($"REPLACE INTO users_talents VALUES ('{session.GetHabbo().Id}', '{talent.Id}', '1');");

            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("TalentLevelUpMessageComposer"));

            serverMessage.AppendString(talent.Type);
            serverMessage.AppendInteger(talent.Level);
            serverMessage.AppendInteger(0);

            if (talent.Type == "citizenship" && talent.Level == 4)
            {
                serverMessage.AppendInteger(2);
                serverMessage.AppendString("HABBO_CLUB_VIP_7_DAYS");
                serverMessage.AppendInteger(7);
                serverMessage.AppendString(talent.Prize);
                serverMessage.AppendInteger(0);
            }
            else
            {
                serverMessage.AppendInteger(1);
                serverMessage.AppendString(talent.Prize);
                serverMessage.AppendInteger(0);
            }

            session.SendMessage(serverMessage);

            if (talent.Type == "citizenship" && talent.Level == 3)
                Azure.GetGame().GetAchievementManager().ProgressUserAchievement(session, "ACH_Citizenship", 1);
            else if (talent.Type == "citizenship" && talent.Level == 4)
            {
                session.GetHabbo().GetSubscriptionManager().AddSubscription(7);

                using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    queryReactor.RunFastQuery($"UPDATE users SET talent_status = 'helper' WHERE id = '{session.GetHabbo().Id}'");
            }
        }
Exemplo n.º 9
0
 /// <summary>
 ///     Gets the list.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="message">The message.</param>
 internal void GetList(GameClient session, ClientMessage message)
 {
     session.SendMessage(AchievementListComposer.Compose(session, Achievements.Values.ToList()));
 }
Exemplo n.º 10
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (session == null || item?.GetRoom() == null || !hasRights)
                return;

            var wired = item.GetRoom().GetWiredHandler().GetWired(item);

            if (wired == null)
                return;

            var extraInfo = wired.OtherString;
            var flag = wired.OtherBool;
            var delay = wired.Delay / 500;
            var list = wired.Items.Where(roomItem => roomItem != null).ToList();
            var extraString = wired.OtherExtraString;
            var extraString2 = wired.OtherExtraString2;

            switch (item.GetBaseItem().InteractionType)
            {
                case Interaction.TriggerTimer:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);
                        serverMessage.AppendInteger(list.Count);
                        foreach (var current in list) serverMessage.AppendInteger(current.Id);
                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(extraInfo);
                        serverMessage.AppendInteger(1);
                        serverMessage.AppendInteger(delay);
                        serverMessage.AppendInteger(1);
                        serverMessage.AppendInteger(3);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        session.SendMessage(serverMessage);
                        return;
                    }
                case Interaction.TriggerRoomEnter:
                    {
                        var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage2.AppendBool(false);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(list.Count);
                        foreach (var current2 in list) serverMessage2.AppendInteger(current2.Id);
                        serverMessage2.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage2.AppendInteger(item.Id);
                        serverMessage2.AppendString(extraInfo);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(7);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        session.SendMessage(serverMessage2);
                        return;
                    }
                case Interaction.TriggerGameEnd:
                    {
                        var serverMessage3 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage3.AppendBool(false);
                        serverMessage3.AppendInteger(0);
                        serverMessage3.AppendInteger(list.Count);
                        foreach (var current3 in list) serverMessage3.AppendInteger(current3.Id);
                        serverMessage3.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage3.AppendInteger(item.Id);
                        serverMessage3.AppendString(extraInfo);
                        serverMessage3.AppendInteger(0);
                        serverMessage3.AppendInteger(0);
                        serverMessage3.AppendInteger(8);
                        serverMessage3.AppendInteger(0);
                        serverMessage3.AppendInteger(0);
                        serverMessage3.AppendInteger(0);
                        session.SendMessage(serverMessage3);
                        return;
                    }
                case Interaction.TriggerGameStart:
                    {
                        var serverMessage4 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage4.AppendBool(false);
                        serverMessage4.AppendInteger(0);
                        serverMessage4.AppendInteger(list.Count);
                        foreach (var current4 in list) serverMessage4.AppendInteger(current4.Id);
                        serverMessage4.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage4.AppendInteger(item.Id);
                        serverMessage4.AppendString(extraInfo);
                        serverMessage4.AppendInteger(0);
                        serverMessage4.AppendInteger(0);
                        serverMessage4.AppendInteger(8);
                        serverMessage4.AppendInteger(0);
                        serverMessage4.AppendInteger(0);
                        serverMessage4.AppendInteger(0);
                        session.SendMessage(serverMessage4);
                        return;
                    }
                case Interaction.TriggerLongRepeater:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString("");
                        serverMessage.AppendInteger(1);
                        serverMessage.AppendInteger(delay / 10); //fix
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(12);
                        serverMessage.AppendInteger(0);
                        session.SendMessage(serverMessage);
                        return;
                    }

                case Interaction.TriggerRepeater:
                    {
                        var serverMessage5 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage5.AppendBool(false);
                        serverMessage5.AppendInteger(5);
                        serverMessage5.AppendInteger(list.Count);
                        foreach (var current5 in list) serverMessage5.AppendInteger(current5.Id);
                        serverMessage5.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage5.AppendInteger(item.Id);
                        serverMessage5.AppendString(extraInfo);
                        serverMessage5.AppendInteger(1);
                        serverMessage5.AppendInteger(delay);
                        serverMessage5.AppendInteger(0);
                        serverMessage5.AppendInteger(6);
                        serverMessage5.AppendInteger(0);
                        serverMessage5.AppendInteger(0);
                        session.SendMessage(serverMessage5);
                        return;
                    }
                case Interaction.TriggerOnUserSay:
                    {
                        var serverMessage6 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage6.AppendBool(false);
                        serverMessage6.AppendInteger(0);
                        serverMessage6.AppendInteger(list.Count);
                        foreach (var current6 in list) serverMessage6.AppendInteger(current6.Id);
                        serverMessage6.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage6.AppendInteger(item.Id);
                        serverMessage6.AppendString(extraInfo);
                        serverMessage6.AppendInteger(0);
                        serverMessage6.AppendInteger(0);
                        serverMessage6.AppendInteger(0);
                        serverMessage6.AppendInteger(0);
                        serverMessage6.AppendInteger(0);
                        serverMessage6.AppendInteger(0);
                        session.SendMessage(serverMessage6);
                        return;
                    }
                case Interaction.TriggerScoreAchieved:
                    {
                        var serverMessage7 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage7.AppendBool(false);
                        serverMessage7.AppendInteger(5);
                        serverMessage7.AppendInteger(0);
                        serverMessage7.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage7.AppendInteger(item.Id);
                        serverMessage7.AppendString("");
                        serverMessage7.AppendInteger(1);
                        serverMessage7.AppendInteger((string.IsNullOrWhiteSpace(extraInfo)) ? 100 : int.Parse(extraInfo));
                        serverMessage7.AppendInteger(0);
                        serverMessage7.AppendInteger(10);
                        serverMessage7.AppendInteger(0);
                        serverMessage7.AppendInteger(0);
                        session.SendMessage(serverMessage7);
                        return;
                    }
                case Interaction.TriggerStateChanged:
                    {
                        var serverMessage8 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage8.AppendBool(false);
                        serverMessage8.AppendInteger(5);
                        serverMessage8.AppendInteger(list.Count);
                        foreach (var current8 in list) serverMessage8.AppendInteger(current8.Id);
                        serverMessage8.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage8.AppendInteger(item.Id);
                        serverMessage8.AppendString(extraInfo);
                        serverMessage8.AppendInteger(0);
                        serverMessage8.AppendInteger(0);
                        serverMessage8.AppendInteger(1);
                        serverMessage8.AppendInteger(delay);
                        serverMessage8.AppendInteger(0);
                        serverMessage8.AppendInteger(0);
                        session.SendMessage(serverMessage8);
                        return;
                    }
                case Interaction.TriggerWalkOnFurni:
                    {
                        var serverMessage9 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage9.AppendBool(false);
                        serverMessage9.AppendInteger(5);
                        serverMessage9.AppendInteger(list.Count);
                        foreach (var current9 in list) serverMessage9.AppendInteger(current9.Id);
                        serverMessage9.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage9.AppendInteger(item.Id);
                        serverMessage9.AppendString(extraInfo);
                        serverMessage9.AppendInteger(0);
                        serverMessage9.AppendInteger(0);
                        serverMessage9.AppendInteger(1);
                        serverMessage9.AppendInteger(0);
                        serverMessage9.AppendInteger(0);
                        serverMessage9.AppendInteger(0);
                        session.SendMessage(serverMessage9);
                        return;
                    }
                case Interaction.ActionMuteUser:
                    {
                        var serverMessage18 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage18.AppendBool(false);
                        serverMessage18.AppendInteger(5);
                        serverMessage18.AppendInteger(0);
                        serverMessage18.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage18.AppendInteger(item.Id);
                        serverMessage18.AppendString(extraInfo);
                        serverMessage18.AppendInteger(1);
                        serverMessage18.AppendInteger(delay);
                        serverMessage18.AppendInteger(0);
                        serverMessage18.AppendInteger(20);
                        serverMessage18.AppendInteger(0);
                        serverMessage18.AppendInteger(0);
                        session.SendMessage(serverMessage18);
                        return;
                    }
                case Interaction.TriggerWalkOffFurni:
                    {
                        var serverMessage10 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage10.AppendBool(false);
                        serverMessage10.AppendInteger(5);
                        serverMessage10.AppendInteger(list.Count);
                        foreach (var current10 in list) serverMessage10.AppendInteger(current10.Id);
                        serverMessage10.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage10.AppendInteger(item.Id);
                        serverMessage10.AppendString(extraInfo);
                        serverMessage10.AppendInteger(0);
                        serverMessage10.AppendInteger(0);
                        serverMessage10.AppendInteger(1);
                        serverMessage10.AppendInteger(0);
                        serverMessage10.AppendInteger(0);
                        serverMessage10.AppendInteger(0);
                        serverMessage10.AppendInteger(0);
                        session.SendMessage(serverMessage10);
                        return;
                    }

                case Interaction.TriggerCollision:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(string.Empty);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(11);
                        serverMessage.AppendInteger(0);
                        session.SendMessage(serverMessage);
                        return;
                    }

                case Interaction.ActionGiveScore:
                    {
                        // Por hacer.
                        var serverMessage11 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage11.AppendBool(false);
                        serverMessage11.AppendInteger(5);
                        serverMessage11.AppendInteger(0);
                        serverMessage11.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage11.AppendInteger(item.Id);
                        serverMessage11.AppendString("");
                        serverMessage11.AppendInteger(2);
                        if (string.IsNullOrWhiteSpace(extraInfo))
                        {
                            serverMessage11.AppendInteger(10); // Puntos a dar
                            serverMessage11.AppendInteger(1); // Numero de veces por equipo
                        }
                        else
                        {
                            var integers = extraInfo.Split(',');
                            serverMessage11.AppendInteger(int.Parse(integers[0])); // Puntos a dar
                            serverMessage11.AppendInteger(int.Parse(integers[1])); // Numero de veces por equipo
                        }
                        serverMessage11.AppendInteger(0);
                        serverMessage11.AppendInteger(6);
                        serverMessage11.AppendInteger(0);
                        serverMessage11.AppendInteger(0);
                        serverMessage11.AppendInteger(0);
                        session.SendMessage(serverMessage11);
                        return;
                    }

                case Interaction.ConditionGroupMember:
                case Interaction.ConditionNotGroupMember:
                    {
                        var message = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        message.AppendBool(false);
                        message.AppendInteger(5);
                        message.AppendInteger(0);
                        message.AppendInteger(item.GetBaseItem().SpriteId);
                        message.AppendInteger(item.Id);
                        message.AppendString("");
                        message.AppendInteger(0);
                        message.AppendInteger(0);
                        message.AppendInteger(10);
                        session.SendMessage(message);
                        return;
                    }

                case Interaction.ConditionItemsMatches:
                case Interaction.ConditionItemsDontMatch:
                    {
                        var serverMessage21 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage21.AppendBool(false);
                        serverMessage21.AppendInteger(5);
                        serverMessage21.AppendInteger(list.Count);
                        foreach (var current20 in list) serverMessage21.AppendInteger(current20.Id);
                        serverMessage21.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage21.AppendInteger(item.Id);
                        serverMessage21.AppendString(extraString2);
                        serverMessage21.AppendInteger(3);

                        if (string.IsNullOrWhiteSpace(extraInfo) || !extraInfo.Contains(","))
                        {
                            serverMessage21.AppendInteger(0);
                            serverMessage21.AppendInteger(0);
                            serverMessage21.AppendInteger(0);
                        }
                        else
                        {
                            var boolz = extraInfo.Split(',');

                            foreach (var stringy in boolz)
                                serverMessage21.AppendInteger(stringy.ToLower() == "true" ? 1 : 0);
                        }
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(0);
                        session.SendMessage(serverMessage21);
                        return;
                    }

                case Interaction.ActionPosReset:
                    {
                        var serverMessage12 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage12.AppendBool(false);
                        serverMessage12.AppendInteger(5);
                        serverMessage12.AppendInteger(list.Count);
                        foreach (var current12 in list) serverMessage12.AppendInteger(current12.Id);
                        serverMessage12.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage12.AppendInteger(item.Id);
                        serverMessage12.AppendString(extraString2);
                        serverMessage12.AppendInteger(3);

                        if (string.IsNullOrWhiteSpace(extraInfo))
                        {
                            serverMessage12.AppendInteger(0);
                            serverMessage12.AppendInteger(0);
                            serverMessage12.AppendInteger(0);
                        }
                        else
                        {
                            var boolz = extraInfo.Split(',');

                            foreach (var stringy in boolz)
                                serverMessage12.AppendInteger(stringy.ToLower() == "true" ? 1 : 0);
                        }
                        serverMessage12.AppendInteger(0);
                        serverMessage12.AppendInteger(3);
                        serverMessage12.AppendInteger(delay); // Delay
                        serverMessage12.AppendInteger(0);
                        session.SendMessage(serverMessage12);
                        return;
                    }
                case Interaction.ActionMoveRotate:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);

                        serverMessage.AppendInteger(list.Count(roomItem => roomItem != null));
                        foreach (var roomItem in list.Where(roomItem => roomItem != null))
                            serverMessage.AppendInteger(roomItem.Id);

                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(string.Empty);
                        serverMessage.AppendInteger(2);
                        serverMessage.AppendIntegersArray(extraInfo, ';', 2);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(4);
                        serverMessage.AppendInteger(delay);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        session.SendMessage(serverMessage);
                    }
                    break;

                case Interaction.ActionMoveToDir:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);

                        serverMessage.AppendInteger(list.Count(roomItem => roomItem != null));
                        foreach (var roomItem in list.Where(roomItem => roomItem != null))
                            serverMessage.AppendInteger(roomItem.Id);

                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(string.Empty);
                        serverMessage.AppendInteger(2);
                        serverMessage.AppendIntegersArray(extraInfo, ';', 2);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(13);
                        serverMessage.AppendInteger(delay);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        session.SendMessage(serverMessage);
                    }
                    break;

                case Interaction.ActionResetTimer:
                    {
                        var serverMessage14 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage14.AppendBool(false);
                        serverMessage14.AppendInteger(0);
                        serverMessage14.AppendInteger(0);
                        serverMessage14.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage14.AppendInteger(item.Id);
                        serverMessage14.AppendString(extraInfo);
                        serverMessage14.AppendInteger(0);
                        serverMessage14.AppendInteger(0);
                        serverMessage14.AppendInteger(1);
                        serverMessage14.AppendInteger(delay);
                        serverMessage14.AppendInteger(0);
                        serverMessage14.AppendInteger(0);
                        session.SendMessage(serverMessage14);
                        return;
                    }
                case Interaction.ActionShowMessage:
                case Interaction.ActionKickUser:
                case Interaction.ActionEffectUser:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(list.Count);
                        foreach (var current15 in list) serverMessage15.AppendInteger(current15.Id);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(7);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionTeleportTo:
                    {
                        var serverMessage16 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage16.AppendBool(false);
                        serverMessage16.AppendInteger(5);

                        serverMessage16.AppendInteger(list.Count);
                        foreach (var roomItem in list) serverMessage16.AppendInteger(roomItem.Id);

                        serverMessage16.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage16.AppendInteger(item.Id);
                        serverMessage16.AppendString(extraInfo);
                        serverMessage16.AppendInteger(0);
                        serverMessage16.AppendInteger(8);
                        serverMessage16.AppendInteger(0);
                        serverMessage16.AppendInteger(delay);
                        serverMessage16.AppendInteger(0);
                        serverMessage16.AppendByte(2);
                        session.SendMessage(serverMessage16);
                        return;
                    }
                case Interaction.ActionToggleState:
                    {
                        var serverMessage17 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage17.AppendBool(false);
                        serverMessage17.AppendInteger(5);
                        serverMessage17.AppendInteger(list.Count);
                        foreach (var current17 in list) serverMessage17.AppendInteger(current17.Id);
                        serverMessage17.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage17.AppendInteger(item.Id);
                        serverMessage17.AppendString(extraInfo);
                        serverMessage17.AppendInteger(0);
                        serverMessage17.AppendInteger(8);
                        serverMessage17.AppendInteger(0);
                        serverMessage17.AppendInteger(delay);
                        serverMessage17.AppendInteger(0);
                        serverMessage17.AppendInteger(0);
                        session.SendMessage(serverMessage17);
                        return;
                    }
                case Interaction.ActionGiveReward:
                    {
                        if (!session.GetHabbo().HasFuse("fuse_use_superwired")) return;
                        var serverMessage18 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage18.AppendBool(false);
                        serverMessage18.AppendInteger(5);
                        serverMessage18.AppendInteger(0);
                        serverMessage18.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage18.AppendInteger(item.Id);
                        serverMessage18.AppendString(extraInfo);
                        serverMessage18.AppendInteger(3);
                        serverMessage18.AppendInteger(extraString == "" ? 0 : int.Parse(extraString));
                        serverMessage18.AppendInteger(flag ? 1 : 0);
                        serverMessage18.AppendInteger(extraString2 == "" ? 0 : int.Parse(extraString2));
                        serverMessage18.AppendInteger(0);
                        serverMessage18.AppendInteger(17);
                        serverMessage18.AppendInteger(0);
                        serverMessage18.AppendInteger(0);
                        session.SendMessage(serverMessage18);
                        return;
                    }

                case Interaction.ConditionHowManyUsersInRoom:
                case Interaction.ConditionNegativeHowManyUsers:
                    {
                        var serverMessage19 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage19.AppendBool(false);
                        serverMessage19.AppendInteger(5);
                        serverMessage19.AppendInteger(0);
                        serverMessage19.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage19.AppendInteger(item.Id);
                        serverMessage19.AppendString("");
                        serverMessage19.AppendInteger(2);
                        if (string.IsNullOrWhiteSpace(extraInfo))
                        {
                            serverMessage19.AppendInteger(1);
                            serverMessage19.AppendInteger(50);
                        }
                        else
                            foreach (var integers in extraInfo.Split(','))
                                serverMessage19.AppendInteger(int.Parse(integers));
                        serverMessage19.AppendBool(false);
                        serverMessage19.AppendInteger(0);
                        serverMessage19.AppendInteger(1290);
                        session.SendMessage(serverMessage19);
                        return;
                    }

                case Interaction.ConditionFurnisHaveUsers:
                case Interaction.ConditionStatePos:
                case Interaction.ConditionTriggerOnFurni:
                case Interaction.ConditionFurniTypeMatches:
                case Interaction.ConditionFurnisHaveNotUsers:
                case Interaction.ConditionFurniTypeDontMatch:
                case Interaction.ConditionTriggererNotOnFurni:
                    {
                        var serverMessage19 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage19.AppendBool(false);
                        serverMessage19.AppendInteger(5);
                        serverMessage19.AppendInteger(list.Count);
                        foreach (var current18 in list) serverMessage19.AppendInteger(current18.Id);
                        serverMessage19.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage19.AppendInteger(item.Id);
                        serverMessage19.AppendInteger(0);
                        serverMessage19.AppendInteger(0);
                        serverMessage19.AppendInteger(0);
                        serverMessage19.AppendBool(false);
                        serverMessage19.AppendBool(true);
                        session.SendMessage(serverMessage19);
                        return;
                    }
                case Interaction.ConditionFurniHasNotFurni:
                case Interaction.ConditionFurniHasFurni:
                    {
                        var serverMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);
                        serverMessage.AppendInteger(list.Count);
                        foreach (var current18 in list) serverMessage.AppendInteger(current18.Id);
                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(string.Empty);
                        serverMessage.AppendInteger(1);
                        serverMessage.AppendInteger(flag); //bool
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(item.GetBaseItem().InteractionType == Interaction.ConditionFurniHasFurni
                            ? 7
                            : 18);
                        session.SendMessage(serverMessage);
                        return;
                    }
                case Interaction.ConditionTimeLessThan:
                case Interaction.ConditionTimeMoreThan:
                    {
                        var serverMessage21 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage21.AppendBool(false);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage21.AppendInteger(item.Id);
                        serverMessage21.AppendString("");
                        serverMessage21.AppendInteger(1);
                        serverMessage21.AppendInteger(delay); //delay
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(item.GetBaseItem().InteractionType ==
                                                      Interaction.ConditionTimeMoreThan
                            ? 3
                            : 4);
                        session.SendMessage(serverMessage21);
                        return;
                    }

                case Interaction.ConditionUserWearingEffect:
                case Interaction.ConditionUserNotWearingEffect:
                    {
                        int effect;
                        int.TryParse(extraInfo, out effect);
                        var serverMessage21 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage21.AppendBool(false);
                        serverMessage21.AppendInteger(5);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage21.AppendInteger(item.Id);
                        serverMessage21.AppendString("");
                        serverMessage21.AppendInteger(1);
                        serverMessage21.AppendInteger(effect);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(12);
                        session.SendMessage(serverMessage21);
                        return;
                    }

                case Interaction.ConditionUserWearingBadge:
                case Interaction.ConditionUserNotWearingBadge:
                case Interaction.ConditionUserHasFurni:
                    {
                        var serverMessage21 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage21.AppendBool(false);
                        serverMessage21.AppendInteger(5);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage21.AppendInteger(item.Id);
                        serverMessage21.AppendString(extraInfo);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(11);
                        session.SendMessage(serverMessage21);
                        return;
                    }

                case Interaction.ConditionDateRangeActive:
                    {
                        var date1 = 0;
                        var date2 = 0;

                        try
                        {
                            var strArray = extraInfo.Split(',');
                            date1 = int.Parse(strArray[0]);
                            date2 = int.Parse(strArray[1]);
                        }
                        catch
                        {
                        }

                        var serverMessage21 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage21.AppendBool(false);
                        serverMessage21.AppendInteger(5);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage21.AppendInteger(item.Id);
                        serverMessage21.AppendString(extraInfo);
                        serverMessage21.AppendInteger(2);
                        serverMessage21.AppendInteger(date1);
                        serverMessage21.AppendInteger(date2);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(24);
                        session.SendMessage(serverMessage21);
                        return;
                    }
                case Interaction.ActionJoinTeam:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(1);
                        serverMessage15.AppendInteger(delay); // Team (1-4)
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(9);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionLeaveTeam:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(10);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.TriggerBotReachedAvatar:
                    {
                        var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage2.AppendBool(false);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(list.Count);
                        foreach (var current2 in list) serverMessage2.AppendInteger(current2.Id);
                        serverMessage2.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage2.AppendInteger(item.Id);
                        serverMessage2.AppendString(extraInfo);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(14);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        session.SendMessage(serverMessage2);
                        return;
                    }
                case Interaction.TriggerBotReachedStuff:
                    {
                        var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer"));
                        serverMessage2.AppendBool(false);
                        serverMessage2.AppendInteger(5);
                        serverMessage2.AppendInteger(list.Count);
                        foreach (var current2 in list) serverMessage2.AppendInteger(current2.Id);
                        serverMessage2.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage2.AppendInteger(item.Id);
                        serverMessage2.AppendString(extraInfo);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(13);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        serverMessage2.AppendInteger(0);
                        session.SendMessage(serverMessage2);
                        return;
                    }
                case Interaction.ActionBotClothes:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo + (char)9 + extraString);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(26);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionBotFollowAvatar:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(25);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionBotGiveHanditem:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(1);
                        serverMessage15.AppendInteger(delay);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(24);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionBotMove:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(5);
                        serverMessage15.AppendInteger(list.Count);
                        foreach (var current2 in list) serverMessage15.AppendInteger(current2.Id);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(22);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionBotTalk:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo + (char)9 + extraString);
                        serverMessage15.AppendInteger(1);
                        serverMessage15.AppendInteger(Azure.BoolToInteger(flag));
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(23);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionBotTalkToAvatar:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo + (char)9 + extraString);
                        serverMessage15.AppendInteger(1);
                        serverMessage15.AppendInteger(Azure.BoolToInteger(flag));
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(27);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionBotTeleport:
                    {
                        var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage15.AppendBool(false);
                        serverMessage15.AppendInteger(5);
                        serverMessage15.AppendInteger(list.Count);
                        foreach (var current2 in list) serverMessage15.AppendInteger(current2.Id);
                        serverMessage15.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage15.AppendInteger(item.Id);
                        serverMessage15.AppendString(extraInfo);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(21);
                        serverMessage15.AppendInteger(0);
                        serverMessage15.AppendInteger(0);
                        session.SendMessage(serverMessage15);
                        return;
                    }
                case Interaction.ActionChase:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);

                        serverMessage.AppendInteger(list.Count);
                        foreach (var roomItem in list) serverMessage.AppendInteger(roomItem.Id);

                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(string.Empty);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(11);
                        serverMessage.AppendInteger(0);

                        serverMessage.AppendInteger(0);

                        session.SendMessage(serverMessage);
                        return;
                    }
                case Interaction.ConditionUserHasHanditem:
                    {
                        var serverMessage21 =
                            new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer"));
                        serverMessage21.AppendBool(false);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage21.AppendInteger(item.Id);
                        serverMessage21.AppendString(extraInfo);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(0);
                        serverMessage21.AppendInteger(25);
                        session.SendMessage(serverMessage21);
                        return;
                    }
                case Interaction.ActionCallStacks:
                    {
                        var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage.AppendBool(false);
                        serverMessage.AppendInteger(5);
                        serverMessage.AppendInteger(list.Count);
                        foreach (var current15 in list) serverMessage.AppendInteger(current15.Id);
                        serverMessage.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage.AppendInteger(item.Id);
                        serverMessage.AppendString(extraInfo);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(18);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        serverMessage.AppendInteger(0);
                        session.SendMessage(serverMessage);
                        return;
                    }

                case Interaction.ArrowPlate:
                case Interaction.PressurePad:
                case Interaction.PressurePadBed:
                case Interaction.RingPlate:
                case Interaction.ColorTile:
                case Interaction.ColorWheel:
                case Interaction.FloorSwitch1:
                case Interaction.FloorSwitch2:
                    break;

                case Interaction.SpecialRandom:
                    {
                        var serverMessage24 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage24.AppendBool(false);
                        serverMessage24.AppendInteger(5);
                        serverMessage24.AppendInteger(list.Count);
                        foreach (var current23 in list) serverMessage24.AppendInteger(current23.Id);
                        serverMessage24.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage24.AppendInteger(item.Id);
                        serverMessage24.AppendString(extraInfo);
                        serverMessage24.AppendInteger(0);
                        serverMessage24.AppendInteger(8);
                        serverMessage24.AppendInteger(0);
                        serverMessage24.AppendInteger(0);
                        serverMessage24.AppendInteger(0);
                        serverMessage24.AppendInteger(0);
                        session.SendMessage(serverMessage24);
                        return;
                    }
                case Interaction.SpecialUnseen:
                    {
                        var serverMessage25 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer"));
                        serverMessage25.AppendBool(false);
                        serverMessage25.AppendInteger(5);
                        serverMessage25.AppendInteger(list.Count);
                        foreach (var current24 in list) serverMessage25.AppendInteger(current24.Id);
                        serverMessage25.AppendInteger(item.GetBaseItem().SpriteId);
                        serverMessage25.AppendInteger(item.Id);
                        serverMessage25.AppendString(extraInfo);
                        serverMessage25.AppendInteger(0);
                        serverMessage25.AppendInteger(8);
                        serverMessage25.AppendInteger(0);
                        serverMessage25.AppendInteger(0);
                        serverMessage25.AppendInteger(0);
                        serverMessage25.AppendInteger(0);
                        session.SendMessage(serverMessage25);
                        return;
                    }
                default:
                    return;
            }
        }
Exemplo n.º 11
0
        /// <summary>
        ///     Serializes the theGroup information.
        /// </summary>
        /// <param name="group">The theGroup.</param>
        /// <param name="response">The response.</param>
        /// <param name="session">The session.</param>
        /// <param name="newWindow">if set to <c>true</c> [new window].</param>
        internal void SerializeGroupInfo(Guild group, ServerMessage response, GameClient session, bool newWindow = false)
        {
            if (group == null || session == null)
                return;

            var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            var dateTime2 = dateTime.AddSeconds(group.CreateTime);

            response.Init(LibraryParser.OutgoingRequest("GroupDataMessageComposer"));

            response.AppendInteger(group.Id);
            response.AppendBool(true);
            response.AppendInteger(group.State);
            response.AppendString(group.Name);
            response.AppendString(group.Description);
            response.AppendString(group.Badge);
            response.AppendInteger(group.RoomId);
            response.AppendString((Azure.GetGame().GetRoomManager().GenerateRoomData(group.RoomId) == null) ? "No room found.." : Azure.GetGame().GetRoomManager().GenerateRoomData(@group.RoomId).Name);
            response.AppendInteger((group.CreatorId == session.GetHabbo().Id) ? 3 : (group.Requests.ContainsKey(session.GetHabbo().Id) ? 2 : (group.Members.ContainsKey(session.GetHabbo().Id) ? 1 : 0)));
            response.AppendInteger(group.Members.Count);
            response.AppendBool(session.GetHabbo().FavouriteGroup == group.Id);
            response.AppendString($"{dateTime2.Day.ToString("00")}-{dateTime2.Month.ToString("00")}-{dateTime2.Year}");
            response.AppendBool(group.CreatorId == session.GetHabbo().Id);
            response.AppendBool(group.Admins.ContainsKey(session.GetHabbo().Id));
            response.AppendString((Azure.GetHabboById(group.CreatorId) == null) ? string.Empty : Azure.GetHabboById(group.CreatorId).UserName);
            response.AppendBool(newWindow);
            response.AppendBool(group.AdminOnlyDeco == 0u);
            response.AppendInteger(group.Requests.Count);
            response.AppendBool(group.HasForum);
            session.SendMessage(response);
        }
Exemplo n.º 12
0
        /// <summary>
        ///     Removes the badge.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="session">The session.</param>
        internal void RemoveBadge(string badge, GameClient session)
        {
            if (!HasBadge(badge))
                return;

            using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery("DELETE FROM users_badges WHERE badge_id = @badge AND user_id = " + _userId);
                queryReactor.AddParameter("badge", badge);
                queryReactor.RunQuery();
            }

            BadgeList.Remove(GetBadge(badge));
            session.SendMessage(Serialize());
        }
Exemplo n.º 13
0
        /// <summary>
        ///     Sends the super notif.
        /// </summary>
        /// <param name="title">The title.</param>
        /// <param name="notice">The notice.</param>
        /// <param name="picture">The picture.</param>
        /// <param name="client">The client.</param>
        /// <param name="link">The link.</param>
        /// <param name="linkTitle">The link title.</param>
        /// <param name="broadCast">if set to <c>true</c> [broad cast].</param>
        /// <param name="Event">if set to <c>true</c> [event].</param>
        internal void SendSuperNotif(string title, string notice, string picture, GameClient client, string link, string linkTitle, bool broadCast, bool Event)
        {
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer"));

            serverMessage.AppendString(picture);
            serverMessage.AppendInteger(4);
            serverMessage.AppendString("title");
            serverMessage.AppendString(title);
            serverMessage.AppendString("message");

            if (broadCast)
                if (Event)
                {
                    var text1 = Azure.GetLanguage().GetVar("ha_event_one");
                    var text2 = Azure.GetLanguage().GetVar("ha_event_two");
                    var text3 = Azure.GetLanguage().GetVar("ha_event_three");
                    serverMessage.AppendString(
                        $"<b>{text1} {client.GetHabbo().CurrentRoom.RoomData.Owner}!</b>\r\n {text2} .\r\n<b>{text3}</b>\r\n{notice}");
                }
                else
                {
                    var text4 = Azure.GetLanguage().GetVar("ha_title");
                    serverMessage.AppendString(string.Concat("<b>" + text4 + "</b>\r\n", notice, "\r\n- <i>",
                        client.GetHabbo().UserName, "</i>"));
                }
            else
                serverMessage.AppendString(notice);

            if (link != string.Empty)
            {
                serverMessage.AppendString("linkUrl");
                serverMessage.AppendString(link);
                serverMessage.AppendString("linkTitle");
                serverMessage.AppendString(linkTitle);
            }
            else
            {
                serverMessage.AppendString("linkUrl");
                serverMessage.AppendString("event:");
                serverMessage.AppendString("linkTitle");
                serverMessage.AppendString("ok");
            }

            if (broadCast)
            {
                QueueBroadcaseMessage(serverMessage);
                return;
            }

            client.SendMessage(serverMessage);
        }
Exemplo n.º 14
0
        /// <summary>
        ///     Progresses the user quest.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="questType">Type of the quest.</param>
        /// <param name="eventData">The event data.</param>
        internal void ProgressUserQuest(GameClient session, QuestType questType, uint eventData = 0u)
        {
            if (session == null || session.GetHabbo() == null || session.GetHabbo().CurrentQuestId <= 0u)
                return;
            var quest = GetQuest(session.GetHabbo().CurrentQuestId);
            if (quest == null || quest.GoalType != questType)
                return;
            var questProgress = session.GetHabbo().GetQuestProgress(quest.Id);
            var num = questProgress;
            var flag = false;

            {
                if (questType != QuestType.ExploreFindItem)
                    switch (questType)
                    {
                        case QuestType.StandOn:
                        case QuestType.GiveItem:
                            if (eventData != quest.GoalData)
                                return;
                            num = (int) quest.GoalData;
                            flag = true;
                            goto IL_DC;
                        case QuestType.GiveCoffee:
                        case QuestType.WaveReindeer:
                        case QuestType.XmasParty:
                        case QuestType.FurniMove:
                            num++;
                            if ((num >= quest.GoalData))
                                flag = true;
                            goto IL_DC;
                    }
                if (eventData != quest.GoalData)
                    return;
                num = (int) quest.GoalData;
                flag = true;
                IL_DC:
                using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.RunFastQuery(string.Concat("UPDATE users_quests_data SET progress = ", num,
                        " WHERE user_id = ", session.GetHabbo().Id, " AND quest_id =  ", quest.Id));
                    if (flag)
                        queryReactor.RunFastQuery(string.Format("UPDATE users_stats SET quest_id = 0 WHERE id = {0}",
                            session.GetHabbo().Id));
                }
                session.GetHabbo().Quests[session.GetHabbo().CurrentQuestId] = num;
                session.SendMessage(QuestStartedComposer.Compose(session, quest));
                if (!flag)
                    return;
                session.GetHabbo().CurrentQuestId = 0u;
                session.GetHabbo().LastQuestCompleted = quest.Id;
                session.SendMessage(QuestCompletedComposer.Compose(session, quest));
                session.GetHabbo().ActivityPoints += quest.Reward;
                session.GetHabbo().NotifyNewPixels(quest.Reward);
                session.GetHabbo().UpdateSeasonalCurrencyBalance();
                GetList(session, null);
            }
        }
Exemplo n.º 15
0
        /// <summary>
        ///     Handles the purchase.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="pageId">The page identifier.</param>
        /// <param name="itemId">The item identifier.</param>
        /// <param name="extraData">The extra data.</param>
        /// <param name="priceAmount">The price amount.</param>
        /// <param name="isGift">if set to <c>true</c> [is gift].</param>
        /// <param name="giftUser">The gift user.</param>
        /// <param name="giftMessage">The gift message.</param>
        /// <param name="giftSpriteId">The gift sprite identifier.</param>
        /// <param name="giftLazo">The gift lazo.</param>
        /// <param name="giftColor">Color of the gift.</param>
        /// <param name="undef">if set to <c>true</c> [undef].</param>
        /// <param name="theGroup">The theGroup.</param>
        internal void HandlePurchase(GameClient session, int pageId, uint itemId, string extraData, int priceAmount, bool isGift, string giftUser, string giftMessage, int giftSpriteId, int giftLazo, int giftColor, bool undef, uint theGroup)
        {
            priceAmount = (priceAmount < 1 || priceAmount > 100) ? 1 : priceAmount;

            var totalPrice = priceAmount;
            var limitedId = 0;
            var limtot = 0;

            if (priceAmount >= 6)
                totalPrice -= Convert.ToInt32(Math.Ceiling(Convert.ToDouble(priceAmount) / 6)) * 2 - 1;

            if (!Categories.Contains(pageId))
                return;

            var catalogPage = (CatalogPage)Categories[pageId];

            if (catalogPage == null || !catalogPage.Enabled || !catalogPage.Visible || session?.GetHabbo() == null)
                return;

            if (catalogPage.MinRank > session.GetHabbo().Rank || catalogPage.Layout == "sold_ltd_items")
                return;

            var item = catalogPage.GetItem(itemId);

            if (item == null)
                return;

            if (catalogPage.Layout == "vip_buy" || catalogPage.Layout == "club_buy" || HabboClubItems.Contains(item))
            {
                if (session.GetHabbo().Credits < item.CreditsCost)
                    return;
                if (session.GetHabbo().ActivityPoints < item.DucketsCost)
                    return;
                if (session.GetHabbo().Diamonds < item.DiamondsCost)
                    return;

                var array = item.Name.Split('_');

                double dayLength;

                if (item.Name.Contains("DAY"))
                    dayLength = double.Parse(array[3]);
                else if (item.Name.Contains("MONTH"))
                    dayLength = Math.Ceiling((double.Parse(array[3]) * 31) - 0.205);
                else if (item.Name.Contains("YEAR"))
                    dayLength = (double.Parse(array[3]) * 31 * 12);
                else
                    dayLength = 31;

                session.GetHabbo().GetSubscriptionManager().AddSubscription(dayLength);

                if (item.CreditsCost > 0)
                {
                    session.GetHabbo().Credits -= (int)item.CreditsCost * totalPrice;
                    session.GetHabbo().UpdateCreditsBalance();
                }
                if (item.DucketsCost > 0)
                {
                    session.GetHabbo().ActivityPoints -= (int)item.DucketsCost * totalPrice;
                    session.GetHabbo().UpdateActivityPointsBalance();
                }
                if (item.DiamondsCost > 0)
                {
                    session.GetHabbo().Diamonds -= (int)item.DiamondsCost * totalPrice;
                    session.GetHabbo().UpdateSeasonalCurrencyBalance();
                }

                return;
            }

            if (item.Name == "room_ad_plus_badge")
                return;

            if (item.ClubOnly && !session.GetHabbo().GetSubscriptionManager().HasSubscription)
            {
                var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("CatalogPurchaseNotAllowedMessageComposer"));
                serverMessage.AppendInteger(1);
                session.SendMessage(serverMessage);
                return;
            }

            var flag = item.Items.Keys.Any(current => InteractionTypes.AreFamiliar(GlobalInteractions.Pet, current.InteractionType));

            if (!flag && (item.CreditsCost * totalPrice < 0 || item.DucketsCost * totalPrice < 0 || item.DiamondsCost * totalPrice < 0))
                return;

            if (item.IsLimited)
            {
                totalPrice = 1;
                priceAmount = 1;

                if (item.LimitedSelled >= item.LimitedStack)
                {
                    session.SendMessage(new ServerMessage(LibraryParser.OutgoingRequest("CatalogLimitedItemSoldOutMessageComposer")));
                    return;
                }

                item.LimitedSelled++;

                using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.RunFastQuery(string.Concat("UPDATE catalog_items SET limited_sells = ", item.LimitedSelled, " WHERE id = ", item.Id));
                    limitedId = item.LimitedSelled;
                    limtot = item.LimitedStack;
                }
            }
            else if (isGift & priceAmount > 1)
            {
                totalPrice = 1;
                priceAmount = 1;
            }

            var toUserId = 0u;

            if (session.GetHabbo().Credits < item.CreditsCost * totalPrice)
                return;
            if (session.GetHabbo().ActivityPoints < item.DucketsCost * totalPrice)
                return;
            if (session.GetHabbo().Diamonds < item.DiamondsCost * totalPrice)
                return;

            if (item.CreditsCost > 0 && !isGift)
            {
                session.GetHabbo().Credits -= (int)item.CreditsCost * totalPrice;
                session.GetHabbo().UpdateCreditsBalance();
            }
            if (item.DucketsCost > 0 && !isGift)
            {
                session.GetHabbo().ActivityPoints -= (int)item.DucketsCost * totalPrice;
                session.GetHabbo().UpdateActivityPointsBalance();
            }
            if (item.DiamondsCost > 0 && !isGift)
            {
                session.GetHabbo().Diamonds -= (int)item.DiamondsCost * totalPrice;
                session.GetHabbo().UpdateSeasonalCurrencyBalance();
            }

            foreach (var baseItem in item.Items.Keys)
            {
                if (isGift)
                {
                    if ((DateTime.Now - session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 15.0)
                    {
                        session.SendNotif(Azure.GetLanguage().GetVar("user_send_gift"));
                        return;
                    }

                    if (!baseItem.AllowGift)
                        return;

                    DataRow row;

                    using (var queryreactor3 = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryreactor3.SetQuery("SELECT id FROM users WHERE username = @gift_user");
                        queryreactor3.AddParameter("gift_user", giftUser);
                        row = queryreactor3.GetRow();
                    }

                    if (row == null)
                    {
                        session.GetMessageHandler()
                            .GetResponse()
                            .Init(LibraryParser.OutgoingRequest("GiftErrorMessageComposer"));
                        session.GetMessageHandler().GetResponse().AppendString(giftUser);
                        session.GetMessageHandler().SendResponse();
                        return;
                    }

                    toUserId = Convert.ToUInt32(row["id"]);

                    if (toUserId == 0u)
                    {
                        session.GetMessageHandler()
                            .GetResponse()
                            .Init(LibraryParser.OutgoingRequest("GiftErrorMessageComposer"));
                        session.GetMessageHandler().GetResponse().AppendString(giftUser);
                        session.GetMessageHandler().SendResponse();
                        return;
                    }

                    if (item.CreditsCost > 0 && isGift)
                    {
                        session.GetHabbo().Credits -= (int)item.CreditsCost * totalPrice;
                        session.GetHabbo().UpdateCreditsBalance();
                    }
                    if (item.DucketsCost > 0 && isGift)
                    {
                        session.GetHabbo().ActivityPoints -= (int)item.DucketsCost * totalPrice;
                        session.GetHabbo().UpdateActivityPointsBalance();
                    }
                    if (item.DiamondsCost > 0 && isGift)
                    {
                        session.GetHabbo().Diamonds -= (int)item.DiamondsCost * totalPrice;
                        session.GetHabbo().UpdateSeasonalCurrencyBalance();
                    }
                }
                if (isGift && baseItem.Type == 'e')
                {
                    session.SendNotif(Azure.GetLanguage().GetVar("user_send_gift_effect"));
                    return;
                }

                if (item.Name.StartsWith("builders_club_addon_"))
                {
                    var furniAmount = Convert.ToInt32(item.Name.Replace("builders_club_addon_", "").Replace("furnis", ""));

                    session.GetHabbo().BuildersItemsMax += furniAmount;

                    var update =
                        new ServerMessage(LibraryParser.OutgoingRequest("BuildersClubMembershipMessageComposer"));

                    update.AppendInteger(session.GetHabbo().BuildersExpire);
                    update.AppendInteger(session.GetHabbo().BuildersItemsMax);
                    update.AppendInteger(2);
                    session.SendMessage(update);

                    using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery("UPDATE users SET builders_items_max = @max WHERE id = @userId");
                        queryReactor.AddParameter("max", session.GetHabbo().BuildersItemsMax);
                        queryReactor.AddParameter("userId", session.GetHabbo().Id);
                        queryReactor.RunQuery();
                    }

                    session.SendMessage(CatalogPageComposer.PurchaseOk(item, item.Items));
                    session.SendNotif("${notification.builders_club.membership_extended.message}", "${notification.builders_club.membership_extended.title}", "builders_club_membership_extended");
                    return;
                }

                if (item.Name.StartsWith("builders_club_time_"))
                {
                    var timeAmount = Convert.ToInt32(item.Name.Replace("builders_club_time_", "").Replace("seconds", ""));

                    session.GetHabbo().BuildersExpire += timeAmount;

                    var update =
                        new ServerMessage(LibraryParser.OutgoingRequest("BuildersClubMembershipMessageComposer"));

                    update.AppendInteger(session.GetHabbo().BuildersExpire);
                    update.AppendInteger(session.GetHabbo().BuildersItemsMax);
                    update.AppendInteger(2);
                    session.SendMessage(update);

                    using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery("UPDATE users SET builders_expire = @max WHERE id = @userId");
                        queryReactor.AddParameter("max", session.GetHabbo().BuildersExpire);
                        queryReactor.AddParameter("userId", session.GetHabbo().Id);
                        queryReactor.RunQuery();
                    }

                    session.SendMessage(CatalogPageComposer.PurchaseOk(item, item.Items));
                    session.SendNotif("${notification.builders_club.membership_extended.message}", "${notification.builders_club.membership_extended.title}", "builders_club_membership_extended");
                    return;
                }

                var text = string.Empty;

                var interactionType = baseItem.InteractionType;

                switch (interactionType)
                {
                    case Interaction.None:
                    case Interaction.Gate:
                    case Interaction.Bed:
                    case Interaction.PressurePadBed:
                    case Interaction.Guillotine:
                    case Interaction.HcGate:
                    case Interaction.ScoreBoard:
                    case Interaction.VendingMachine:
                    case Interaction.Alert:
                    case Interaction.OneWayGate:
                    case Interaction.LoveShuffler:
                    case Interaction.HabboWheel:
                    case Interaction.Dice:
                    case Interaction.Bottle:
                    case Interaction.Hopper:
                    case Interaction.Teleport:
                    case Interaction.QuickTeleport:
                    case Interaction.Pet:
                    case Interaction.Pool:
                    case Interaction.Roller:
                        break;

                    case Interaction.PostIt:
                        extraData = "FFFF33";
                        break;

                    case Interaction.RoomEffect:
                        var number = string.IsNullOrEmpty(extraData) ? 0.0 : double.Parse(extraData, Azure.CultureInfo);
                        extraData = number.ToString(CultureInfo.InvariantCulture).Replace(',', '.');
                        break;

                    case Interaction.Dimmer:
                        extraData = "1,1,1,#000000,255";
                        break;

                    case Interaction.Trophy:
                        extraData = string.Concat(session.GetHabbo().UserName, Convert.ToChar(9),
                            DateTime.Now.Day.ToString("00"), "-", DateTime.Now.Month.ToString("00"), "-",
                            DateTime.Now.Year, Convert.ToChar(9), extraData);
                        break;

                    case Interaction.Rentals:
                        extraData = item.ExtraData;
                        break;

                    case Interaction.PetDog:
                    case Interaction.PetCat:
                    case Interaction.PetCrocodile:
                    case Interaction.PetTerrier:
                    case Interaction.PetBear:
                    case Interaction.PetPig:
                    case Interaction.PetLion:
                    case Interaction.PetRhino:
                    case Interaction.PetSpider:
                    case Interaction.PetTurtle:
                    case Interaction.PetChick:
                    case Interaction.PetFrog:
                    case Interaction.PetDragon:
                    case Interaction.PetHorse:
                    case Interaction.PetMonkey:
                    case Interaction.PetGnomo:
                    case Interaction.PetMonsterPlant:
                    case Interaction.PetWhiteRabbit:
                    case Interaction.PetEvilRabbit:
                    case Interaction.PetLoveRabbit:
                    case Interaction.PetCafeRabbit:
                    case Interaction.PetPigeon:
                    case Interaction.PetEvilPigeon:
                    case Interaction.PetDemonMonkey:
                    case Interaction.Pet24:
                    case Interaction.Pet25:
                    case Interaction.Pet26:
                    case Interaction.Pet27:
                    case Interaction.Pet28:
                    case Interaction.Pet29:
                    case Interaction.Pet30:
                    case Interaction.Pet31:
                    case Interaction.Pet32:
                    case Interaction.Pet33:
                    case Interaction.Pet34:
                        var data = extraData.Split('\n');
                        var petName = data[0];
                        var race = data[1];
                        var color = data[2];

                        if (!CheckPetName(petName))
                            return;
                        if (race.Length != 1 && race.Length != 2)
                            return;
                        if (color.Length != 6)
                            return;

                        Azure.GetGame().GetAchievementManager().ProgressUserAchievement(session, "ACH_PetLover", 1);
                        break;

                    case Interaction.Mannequin:
                        extraData = string.Concat("m", Convert.ToChar(5), "ch-215-92.lg-3202-1322-73", Convert.ToChar(5),
                            "Mannequin");
                        break;

                    case Interaction.VipGate:
                    case Interaction.MysteryBox:
                    case Interaction.YoutubeTv:
                    case Interaction.TileStackMagic:
                    case Interaction.Tent:
                    case Interaction.BedTent:
                        break;

                    case Interaction.BadgeDisplay:
                        if (!session.GetHabbo().GetBadgeComponent().HasBadge(extraData))
                            extraData = "UMAD";

                        extraData = $"{extraData}|{session.GetHabbo().UserName}|{DateTime.Now.Day.ToString("00")}-{DateTime.Now.Month.ToString("00")}-{DateTime.Now.Year}";
                        break;

                    case Interaction.FootballGate:
                        extraData = "hd-99999-99999.lg-270-62;hd-99999-99999.ch-630-62.lg-695-62";
                        break;

                    case Interaction.LoveLock:
                        extraData = "0";
                        break;

                    case Interaction.Pinata:
                    case Interaction.RunWaySage:
                    case Interaction.Shower:
                        extraData = "0";
                        break;

                    case Interaction.GroupForumTerminal:
                    case Interaction.GuildItem:
                    case Interaction.GuildGate:
                    case Interaction.GuildForum:
                    case Interaction.Poster:
                        break;

                    case Interaction.Moplaseed:
                        extraData = new Random().Next(0, 12).ToString();
                        break;

                    case Interaction.RareMoplaSeed:
                        extraData = new Random().Next(10, 12).ToString();
                        break;

                    case Interaction.MusicDisc:

                        var song = SoundMachineSongManager.GetSongById(item.SongId);

                        extraData = string.Empty;

                        if (song == null)
                            break;

                        extraData = string.Concat(session.GetHabbo().UserName, '\n', DateTime.Now.Year, '\n', DateTime.Now.Month, '\n', DateTime.Now.Day, '\n', song.LengthSeconds, '\n', song.Name);

                        text = song.CodeName;

                        break;

                    default:
                        extraData = item.ExtraData;
                        break;
                }

                session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("UpdateInventoryMessageComposer"));

                session.GetMessageHandler().SendResponse();

                session.SendMessage(CatalogPageComposer.PurchaseOk(item, item.Items));

                if (isGift)
                {
                    var itemBySprite = Azure.GetGame().GetItemManager().GetItemBySpriteId(giftSpriteId);

                    if (itemBySprite == null)
                        return;

                    uint insertId;

                    using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery("INSERT INTO items_rooms (base_item,user_id) VALUES (" + itemBySprite.ItemId + ", " + toUserId + ")");

                        insertId = (uint)queryReactor.InsertQuery();
                        queryReactor.SetQuery(string.Concat("INSERT INTO users_gifts (gift_id,item_id,extradata,giver_name,Message,ribbon,color,gift_sprite,show_sender,rare_id) VALUES (", insertId, ", ", baseItem.ItemId, ",@extradata, @name, @Message,", giftLazo, ",", giftColor, ",", giftSpriteId, ",", undef ? 1 : 0, ",", limitedId, ")"));
                        queryReactor.AddParameter("extradata", extraData);
                        queryReactor.AddParameter("name", giftUser);
                        queryReactor.AddParameter("message", giftMessage);
                        queryReactor.RunQuery();

                        if (session.GetHabbo().Id != toUserId)
                        {
                            Azure.GetGame().GetAchievementManager().ProgressUserAchievement(session, "ACH_GiftGiver", 1, true);
                            Azure.GetGame().GetQuestManager().ProgressUserQuest(session, QuestType.GiftOthers);

                            queryReactor.RunFastQuery("UPDATE users_stats SET gifts_given = gifts_given + 1 WHERE id = " + session.GetHabbo().Id + ";UPDATE users_stats SET gifts_received = gifts_received + 1 WHERE id = " + toUserId);
                        }
                    }

                    var clientByUserId = Azure.GetGame().GetClientManager().GetClientByUserId(toUserId);

                    if (clientByUserId != null)
                    {
                        clientByUserId.GetHabbo() .GetInventoryComponent().AddNewItem(insertId, itemBySprite.ItemId,  string.Concat(session.GetHabbo().Id, (char)9, giftMessage, (char)9, giftLazo, (char)9, giftColor, (char)9, ((undef) ? "1" : "0"), (char)9, session.GetHabbo().UserName, (char)9, session.GetHabbo().Look, (char)9, item.Name), 0u, false, false, 0, 0);

                        if (clientByUserId.GetHabbo().Id != session.GetHabbo().Id)
                            Azure.GetGame().GetAchievementManager().ProgressUserAchievement(clientByUserId, "ACH_GiftReceiver", 1, true);
                    }

                    session.GetHabbo().LastGiftPurchaseTime = DateTime.Now;

                    continue;
                }

                session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("NewInventoryObjectMessageComposer"));

                session.GetMessageHandler().GetResponse().AppendInteger(1);

                var i = 1;

                if (baseItem.Type == 's')
                    i = InteractionTypes.AreFamiliar(GlobalInteractions.Pet, baseItem.InteractionType) ? 3 : 1;

                session.GetMessageHandler().GetResponse().AppendInteger(i);

                var list = DeliverItems(session, baseItem, priceAmount * (int)item.Items[baseItem], extraData, limitedId,
                    limtot, text);

                session.GetMessageHandler().GetResponse().AppendInteger(list.Count);

                foreach (var current3 in list)
                    session.GetMessageHandler().GetResponse().AppendInteger(current3.Id);

                session.GetMessageHandler().SendResponse();
                session.GetHabbo().GetInventoryComponent().UpdateItems(false);

                if (InteractionTypes.AreFamiliar(GlobalInteractions.Pet, baseItem.InteractionType))
                    session.SendMessage(session.GetHabbo().GetInventoryComponent().SerializePetInventory());
            }

            if (item.Badge.Length >= 1)
                session.GetHabbo().GetBadgeComponent().GiveBadge(item.Badge, true, session);
        }
Exemplo n.º 16
0
        /// <summary>
        ///     Progresses the user achievement.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="achievementGroup">The achievement group.</param>
        /// <param name="progressAmount">The progress amount.</param>
        /// <param name="fromZero">if set to <c>true</c> [from zero].</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        internal bool ProgressUserAchievement(GameClient session, string achievementGroup, int progressAmount, bool fromZero = false)
        {
            if (Achievements.ContainsKey(achievementGroup) && session?.GetHabbo() != null)
            {
                var achievement = Achievements[achievementGroup];
                var user = session.GetHabbo();
                var userAchievement = user.GetAchievementData(achievementGroup);

                if (userAchievement == null)
                {
                    userAchievement = new UserAchievement(achievementGroup, 0, 0);
                    user.Achievements.Add(achievementGroup, userAchievement.Value);
                }

                var count = achievement.Levels.Count;

                if (userAchievement.Value.Level == count)
                    return false;

                var acount = (userAchievement.Value.Level + 1);

                if (acount > count)
                    acount = count;

                var targetLevelData = achievement.Levels[acount];

                var achievementColoc = session.GetHabbo().GetAchievementData(achievementGroup);

                if ((achievementColoc != null) && (fromZero))
                    fromZero = false;

                var progress = (fromZero) ? progressAmount : ((userAchievement.Value.Progress + progressAmount));

                var achievementLevel = userAchievement.Value.Level;
                var levelEndCheck = achievementLevel + 1;

                if (levelEndCheck > count)
                    levelEndCheck = count;

                if (progress >= targetLevelData.Requirement)
                {
                    achievementLevel++;
                    levelEndCheck++;
                    progress = 0;

                    var userBadgeComponent = user.GetBadgeComponent();

                    if (acount != 1)
                        userBadgeComponent.RemoveBadge(Convert.ToString($"{achievementGroup}{acount - 1}"), session);

                    userBadgeComponent.GiveBadge($"{achievementGroup}{acount}", true, session);

                    if (levelEndCheck > count)
                        levelEndCheck = count;

                    user.ActivityPoints += targetLevelData.RewardPixels;
                    user.NotifyNewPixels(targetLevelData.RewardPixels);
                    user.UpdateActivityPointsBalance();

                    session.SendMessage(AchievementUnlockedComposer.Compose(achievement, acount,
                        targetLevelData.RewardPoints, targetLevelData.RewardPixels));

                    using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery(string.Concat("REPLACE INTO users_achievements VALUES (", user.Id, ", @group, ", achievementLevel, ", ", progress, ")"));
                        queryReactor.AddParameter("group", achievementGroup);
                        queryReactor.RunQuery();
                    }

                    userAchievement.Value.SetLevel(achievementLevel);
                    userAchievement.Value.SetProgress(progress);
                    user.AchievementPoints += targetLevelData.RewardPoints;
                    user.NotifyNewPixels(targetLevelData.RewardPixels);
                    user.ActivityPoints += targetLevelData.RewardPixels;
                    user.UpdateActivityPointsBalance();

                    session.SendMessage(AchievementScoreUpdateComposer.Compose(user.AchievementPoints));

                    UserAchievement? achievementData = user.GetAchievementData(achievementGroup);

                    if (achievementData != null)
                        session.SendMessage(AchievementProgressComposer.Compose(achievement, levelEndCheck, achievement.Levels[levelEndCheck], count, achievementData.Value));

                    Talent talent;

                    if (Azure.GetGame().GetTalentManager().TryGetTalent(achievementGroup, out talent))
                        Azure.GetGame().GetTalentManager().CompleteUserTalent(session, talent);

                    return true;
                }

                userAchievement.Value.SetLevel(achievementLevel);
                userAchievement.Value.SetProgress(progress);

                using (var queryreactor2 = Azure.GetDatabaseManager().GetQueryReactor())
                {
                    queryreactor2.SetQuery(string.Concat("REPLACE INTO users_achievements VALUES (", session.GetHabbo().Id, ", @group, ", achievementLevel, ", ", progress, ")"));
                    queryreactor2.AddParameter("group", achievementGroup);
                    queryreactor2.RunQuery();
                }

                var messageHandler = session.GetMessageHandler();

                if (messageHandler != null)
                {
                    UserAchievement? achievementData = user.GetAchievementData(achievementGroup);

                    if (achievementData != null)
                        session.SendMessage(AchievementProgressComposer.Compose(achievement, acount, targetLevelData, count, achievementData.Value));

                    messageHandler.GetResponse().Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer"));
                    messageHandler.GetResponse().AppendInteger(-1);
                    messageHandler.GetResponse().AppendString(user.Look);
                    messageHandler.GetResponse().AppendString(user.Gender.ToLower());
                    messageHandler.GetResponse().AppendString(user.Motto);
                    messageHandler.GetResponse().AppendInteger(user.AchievementPoints);
                    messageHandler.SendResponse();

                    return true;
                }
            }

            return false;
        }
Exemplo n.º 17
0
 /// <summary>
 ///     Cancels the quest.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="message">The message.</param>
 internal void CancelQuest(GameClient session, ClientMessage message)
 {
     var quest = GetQuest(session.GetHabbo().CurrentQuestId);
     if (quest == null)
         return;
     using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
         queryReactor.RunFastQuery(string.Concat("DELETE FROM users_quests_data WHERE user_id = ",
             session.GetHabbo().Id, " AND quest_id = ", quest.Id, ";UPDATE users_stats SET quest_id=0 WHERE id=",
             session.GetHabbo().Id));
     session.GetHabbo().CurrentQuestId = 0u;
     session.SendMessage(QuestAbortedComposer.Compose());
     GetList(session, null);
 }
Exemplo n.º 18
0
        /// <summary>
        ///     Gets the current quest.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="message">The message.</param>
        internal void GetCurrentQuest(GameClient session, ClientMessage message)
        {
            if (!session.GetHabbo().InRoom)
                return;
            var quest = GetQuest(session.GetHabbo().LastQuestCompleted);
            var nextQuestInSeries = GetNextQuestInSeries(quest.Category, (quest.Number + 1));

            if (nextQuestInSeries == null)
                return;
            using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Concat("REPLACE INTO users_quests_data(user_id,quest_id) VALUES (",
                    session.GetHabbo().Id, ", ", nextQuestInSeries.Id, ")"));
                queryReactor.RunFastQuery(string.Concat("UPDATE users_stats SET quest_id = ", nextQuestInSeries.Id,
                    " WHERE id = ", session.GetHabbo().Id));
            }
            session.GetHabbo().CurrentQuestId = nextQuestInSeries.Id;
            GetList(session, null);
            session.SendMessage(QuestStartedComposer.Compose(session, nextQuestInSeries));
        }
Exemplo n.º 19
0
 /// <summary>
 ///     Activates the quest.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="message">The message.</param>
 internal void ActivateQuest(GameClient session, ClientMessage message)
 {
     var quest = GetQuest(message.GetUInteger());
     if (quest == null)
         return;
     using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
     {
         queryReactor.RunFastQuery(string.Concat("REPLACE INTO users_quests_data(user_id,quest_id) VALUES (",
             session.GetHabbo().Id, ", ", quest.Id, ")"));
         queryReactor.RunFastQuery(string.Concat("UPDATE users_stats SET quest_id = ", quest.Id, " WHERE id = ",
             session.GetHabbo().Id));
     }
     session.GetHabbo().CurrentQuestId = quest.Id;
     GetList(session, null);
     session.SendMessage(QuestStartedComposer.Compose(session, quest));
 }
Exemplo n.º 20
0
 /// <summary>
 ///     Gets the list.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="message">The message.</param>
 internal void GetList(GameClient session, ClientMessage message)
 {
     session.SendMessage(QuestListComposer.Compose(session, _quests.Values.ToList(), message != null));
 }
Exemplo n.º 21
0
        public static void SaveWired(GameClient session, RoomItem item, ClientMessage request)
        {
            if (item == null || !item.IsWired)
                return;

            var room = item.GetRoom();

            var wiredHandler = room?.GetWiredHandler();

            if (wiredHandler == null)
                return;

            switch (item.GetBaseItem().InteractionType)
            {
                case Interaction.TriggerTimer:
                    {
                        request.GetInteger();
                        var wired = wiredHandler.GetWired(item);
                        var delay = request.GetInteger() * 500;
                        wired.Delay = delay;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.TriggerRoomEnter:
                    {
                        request.GetInteger();
                        var otherString = request.GetString();
                        var wired = wiredHandler.GetWired(item);
                        wired.OtherString = otherString;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }

                case Interaction.TriggerLongRepeater:
                    {
                        request.GetInteger();
                        var delay = request.GetInteger() * 5000;
                        var wired2 = wiredHandler.GetWired(item);
                        wired2.Delay = delay;
                        wiredHandler.ReloadWired(wired2);
                        break;
                    }

                case Interaction.TriggerRepeater:
                    {
                        request.GetInteger();
                        var delay = request.GetInteger() * 500;
                        var wired2 = wiredHandler.GetWired(item);
                        wired2.Delay = delay;
                        wiredHandler.ReloadWired(wired2);
                        break;
                    }
                case Interaction.TriggerOnUserSay:
                    {
                        request.GetInteger();
                        var num = request.GetInteger();
                        var otherString2 = request.GetString();
                        var wired3 = wiredHandler.GetWired(item);
                        wired3.OtherString = otherString2;
                        wired3.OtherBool = (num == 1);
                        wiredHandler.ReloadWired(wired3);
                        break;
                    }
                case Interaction.TriggerStateChanged:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems = GetFurniItems(request, room);
                        var num2 = request.GetInteger();
                        var wired4 = wiredHandler.GetWired(item);
                        wired4.Delay = num2 * 500;
                        wired4.Items = furniItems;
                        wiredHandler.ReloadWired(wired4);
                        break;
                    }
                case Interaction.TriggerWalkOnFurni:
                case Interaction.ActionChase:
                case Interaction.ActionResetTimer:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems2 = GetFurniItems(request, room);
                        var num3 = request.GetInteger();
                        var wired5 = wiredHandler.GetWired(item);
                        wired5.Delay = num3 * 500;
                        wired5.Items = furniItems2;
                        wiredHandler.ReloadWired(wired5);
                        break;
                    }

                case Interaction.TriggerWalkOffFurni:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems3 = GetFurniItems(request, room);
                        var num4 = request.GetInteger();
                        var wired6 = wiredHandler.GetWired(item);
                        wired6.Delay = num4 * 500;
                        wired6.Items = furniItems3;
                        wiredHandler.ReloadWired(wired6);
                        break;
                    }
                case Interaction.ActionMoveRotate:
                case Interaction.ActionMoveToDir:
                    {
                        request.GetInteger();
                        var dir = request.GetInteger();
                        var rot = request.GetInteger();
                        request.GetString();
                        var furniItems4 = GetFurniItems(request, room);
                        var delay = request.GetInteger();
                        var wired7 = wiredHandler.GetWired(item);
                        wired7.Items = furniItems4;
                        wired7.Delay = delay * 500;
                        wired7.OtherString = $"{dir};{rot}";
                        wiredHandler.ReloadWired(wired7);
                        break;
                    }
                case Interaction.ActionShowMessage:
                case Interaction.ActionKickUser:
                    {
                        request.GetInteger();
                        var otherString3 = request.GetString();
                        var wired8 = wiredHandler.GetWired(item);
                        wired8.OtherString = otherString3;
                        wiredHandler.ReloadWired(wired8);
                        break;
                    }
                case Interaction.ActionTeleportTo:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems5 = GetFurniItems(request, room);
                        var num8 = request.GetInteger();
                        var wired9 = wiredHandler.GetWired(item);
                        wired9.Items = furniItems5;
                        wired9.Delay = num8 * 500;
                        wiredHandler.ReloadWired(wired9);
                        break;
                    }
                case Interaction.ActionToggleState:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems6 = GetFurniItems(request, room);
                        var num9 = request.GetInteger();
                        var wired10 = wiredHandler.GetWired(item);
                        wired10.Items = furniItems6;
                        wired10.Delay = num9 * 500;
                        wiredHandler.ReloadWired(wired10);
                        break;
                    }
                case Interaction.ActionGiveReward:
                    {
                        if (!session.GetHabbo().HasFuse("fuse_use_superwired"))
                            return;

                        request.GetInteger();
                        var often = request.GetInteger();
                        var unique = request.GetIntegerAsBool();
                        var limit = request.GetInteger();
                        request.GetInteger();
                        var extrainfo = request.GetString();
                        var furniItems7 = GetFurniItems(request, room);
                        var wired11 = wiredHandler.GetWired(item);
                        wired11.Items = furniItems7;
                        wired11.Delay = 0;
                        wired11.OtherBool = unique;
                        wired11.OtherString = extrainfo;
                        wired11.OtherExtraString = often.ToString();
                        wired11.OtherExtraString2 = limit.ToString();
                        wiredHandler.ReloadWired(wired11);
                        break;
                    }
                case Interaction.ActionMuteUser:
                    {
                        request.GetInteger();
                        var minutes = request.GetInteger() * 500;
                        var message = request.GetString();
                        var furniItems7 = GetFurniItems(request, room);
                        var wired11 = wiredHandler.GetWired(item);
                        wired11.Items = furniItems7;
                        wired11.Delay = minutes;
                        wired11.OtherBool = false;
                        wired11.OtherString = message;
                        wiredHandler.ReloadWired(wired11);
                        break;
                    }
                case Interaction.TriggerScoreAchieved:
                    {
                        request.GetInteger();
                        var pointsRequired = request.GetInteger();

                        var wired11 = wiredHandler.GetWired(item);
                        wired11.Delay = 0;
                        wired11.OtherString = pointsRequired.ToString();
                        wiredHandler.ReloadWired(wired11);
                        break;
                    }

                case Interaction.ConditionItemsMatches:
                case Interaction.ConditionItemsDontMatch:
                case Interaction.ActionPosReset:
                    {
                        request.GetInteger();
                        var actualExtraData = request.GetIntegerAsBool();
                        var actualRot = request.GetIntegerAsBool();
                        var actualPosition = request.GetIntegerAsBool();

                        var booleans = $"{actualExtraData},{actualRot},{actualPosition}".ToLower();

                        request.GetString();
                        var items = GetFurniItems(request, room);

                        var delay = request.GetInteger() * 500;
                        var wiry = wiredHandler.GetWired(item);

                        var dataToSave = string.Empty;
                        var extraStringForWi = string.Empty;

                        foreach (var aItem in items)
                        {
                            if (aItem.GetBaseItem().InteractionType == Interaction.Dice)
                            {
                                // Why have a RETURN here?
                                dataToSave += string.Format("0|0|0|0,0,0", aItem.Id, aItem.ExtraData, aItem.Rot, aItem.X, aItem.Y, aItem.Z);
                                extraStringForWi += $"{aItem.Id},{((actualExtraData) ? aItem.ExtraData : "N")},{((actualRot) ? aItem.Rot.ToString() : "N")},{((actualPosition) ? aItem.X.ToString() : "N")},{((actualPosition) ? aItem.Y.ToString() : "N")}";

                                return;
                            }

                            dataToSave += $"{aItem.Id}|{aItem.ExtraData}|{aItem.Rot}|{aItem.X},{aItem.Y},{aItem.Z}";
                            extraStringForWi += $"{aItem.Id},{((actualExtraData) ? aItem.ExtraData : "N")},{((actualRot) ? aItem.Rot.ToString() : "N")},{((actualPosition) ? aItem.X.ToString() : "N")},{((actualPosition) ? aItem.Y.ToString() : "N")}";

                            if (aItem == items.Last())
                                continue;

                            dataToSave += "/";
                            extraStringForWi += ";";
                        }

                        wiry.Items = items;
                        wiry.Delay = delay;
                        wiry.OtherBool = true;
                        wiry.OtherString = booleans;
                        wiry.OtherExtraString = dataToSave;
                        wiry.OtherExtraString2 = extraStringForWi;
                        wiredHandler.ReloadWired(wiry);
                        break;
                    }

                case Interaction.ConditionGroupMember:
                case Interaction.ConditionNotGroupMember:
                case Interaction.TriggerCollision:
                    {
                        break;
                    }

                case Interaction.ConditionHowManyUsersInRoom:
                case Interaction.ConditionNegativeHowManyUsers:
                    {
                        request.GetInteger();
                        var minimum = request.GetInteger();
                        var maximum = request.GetInteger();

                        var ei = $"{minimum},{maximum}";
                        var wired12 = wiredHandler.GetWired(item);
                        wired12.Items = new List<RoomItem>();
                        wired12.OtherString = ei;
                        wiredHandler.ReloadWired(wired12);
                        break;
                    }

                case Interaction.ConditionUserNotWearingEffect:
                case Interaction.ConditionUserWearingEffect:
                    {
                        request.GetInteger();
                        var effect = request.GetInteger();
                        var wired12 = wiredHandler.GetWired(item);
                        wired12.Items = new List<RoomItem>();
                        wired12.OtherString = effect.ToString();
                        wiredHandler.ReloadWired(wired12);
                        break;
                    }

                case Interaction.ConditionUserWearingBadge:
                case Interaction.ConditionUserNotWearingBadge:
                case Interaction.ConditionUserHasFurni:
                    {
                        request.GetInteger();
                        var badge = request.GetString();
                        var wired12 = wiredHandler.GetWired(item);
                        wired12.Items = new List<RoomItem>();
                        wired12.OtherString = badge;
                        wiredHandler.ReloadWired(wired12);
                        break;
                    }

                case Interaction.ConditionDateRangeActive:
                    {
                        request.GetInteger();

                        var startDate = request.GetInteger();
                        var endDate = request.GetInteger();

                        var wired12 = wiredHandler.GetWired(item);
                        wired12.Items = new List<RoomItem>();
                        wired12.OtherString = $"{startDate},{endDate}";

                        if (startDate == 0)
                        {
                            wired12.OtherString = string.Empty;
                            session.SendNotif(Azure.GetLanguage().GetVar("user_wired_con_date_range"));
                        }

                        wiredHandler.ReloadWired(wired12);
                        break;
                    }

                case Interaction.ConditionFurnisHaveUsers:
                case Interaction.ConditionTriggerOnFurni:
                case Interaction.ConditionFurniTypeMatches:
                case Interaction.ConditionFurnisHaveNotUsers:
                case Interaction.ConditionTriggererNotOnFurni:
                case Interaction.ConditionFurniTypeDontMatch:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems = GetFurniItems(request, room);
                        var wired12 = wiredHandler.GetWired(item);

                        wired12.Items = furniItems;
                        wiredHandler.ReloadWired(wired12);
                        break;
                    }
                case Interaction.ConditionFurniHasFurni:
                case Interaction.ConditionFurniHasNotFurni:
                    {
                        request.GetInteger();
                        var allItems = request.GetIntegerAsBool();
                        request.GetString();

                        var furniItems = GetFurniItems(request, room);
                        var wired = wiredHandler.GetWired(item);

                        wired.OtherBool = allItems;
                        wired.Items = furniItems;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionGiveScore:
                    {
                        request.GetInteger();
                        var scoreToGive = request.GetInteger();
                        var maxTimesPerGame = request.GetInteger();

                        var newExtraInfo = $"{scoreToGive},{maxTimesPerGame}";

                        var furniItems8 = GetFurniItems(request, room);
                        var wired12 = wiredHandler.GetWired(item);
                        wired12.Items = furniItems8;
                        wired12.OtherString = newExtraInfo;
                        wiredHandler.ReloadWired(wired12);
                        break;
                    }
                case Interaction.ActionJoinTeam:
                    {
                        request.GetInteger();
                        var team = request.GetInteger();
                        var wired = wiredHandler.GetWired(item);
                        wired.Delay = team * 500;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionBotTalk:
                    {
                        request.GetInteger();
                        var type = request.GetIntegerAsBool();
                        var data = request.GetString().Split((char)9);
                        var wired = wiredHandler.GetWired(item);
                        wired.OtherBool = type;
                        wired.OtherString = data[0];
                        wired.OtherExtraString = data[1];
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionBotClothes:
                    {
                        request.GetInteger();
                        var data = request.GetString().Split((char)9);
                        var wired = wiredHandler.GetWired(item);
                        wired.OtherString = data[0];
                        wired.OtherExtraString = data[1];
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionBotTeleport:
                    {
                        request.GetInteger();
                        var botName = request.GetString();
                        var furniItems = GetFurniItems(request, room);
                        var wired = wiredHandler.GetWired(item);
                        wired.Items = furniItems;
                        wired.OtherString = botName;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionBotGiveHanditem:
                    {
                        request.GetInteger();
                        var handitem = request.GetInteger();
                        var botName = request.GetString();
                        var wired = wiredHandler.GetWired(item);
                        wired.OtherString = botName;
                        wired.Delay = handitem * 500;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionBotMove:
                    {
                        request.GetInteger();
                        var botName = request.GetString();
                        var furniItems = GetFurniItems(request, room);
                        var wired = wiredHandler.GetWired(item);
                        wired.Items = furniItems;
                        wired.OtherString = botName;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionCallStacks:
                    {
                        request.GetInteger();
                        request.GetString();
                        var furniItems = GetFurniItems(request, room);
                        var wired = wiredHandler.GetWired(item);
                        var num = request.GetInteger();
                        wired.Items = furniItems;
                        wired.Delay = num * 500;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ActionBotTalkToAvatar:
                    {
                        request.GetInteger();
                        var type = request.GetIntegerAsBool();
                        var data = request.GetString().Split((char)9);
                        var wired = wiredHandler.GetWired(item);
                        wired.OtherBool = type;
                        wired.OtherString = data[0];
                        wired.OtherExtraString = data[1];
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
                case Interaction.ConditionTimeMoreThan:
                case Interaction.ConditionTimeLessThan:
                    {
                        request.GetInteger();
                        var time = request.GetInteger();
                        var wired12 = wiredHandler.GetWired(item);
                        Console.WriteLine(time);
                        wired12.Delay = time * 500;
                        wiredHandler.ReloadWired(wired12);
                        break;
                    }
                case Interaction.ConditionUserHasHanditem:
                    {
                        request.GetInteger();
                        var handitem = request.GetInteger();
                        var wired = wiredHandler.GetWired(item);
                        wired.Delay = handitem * 500;
                        wiredHandler.ReloadWired(wired);
                        break;
                    }
            }

            session.SendMessage(new ServerMessage(LibraryParser.OutgoingRequest("SaveWiredMessageComposer")));
        }
Exemplo n.º 22
0
        /// <summary>
        ///     Serializes the room data.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="session">The session.</param>
        /// <param name="isNotReload">if set to <c>true</c> [from view].</param>
        /// <param name="sendRoom">if set to <c>true</c> [send room].</param>
        /// <param name="show">if set to <c>true</c> [show].</param>
        internal void SerializeRoomData(ServerMessage message, GameClient session, bool isNotReload,
            bool? sendRoom = false, bool show = true)
        {
            var room = Azure.GetGame().GetRoomManager().GetRoom(session.GetHabbo().CurrentRoomId);

            message.Init(LibraryParser.OutgoingRequest("RoomDataMessageComposer"));
            message.AppendBool(show); //flatId
            Serialize(message, true, !isNotReload);
            message.AppendBool(isNotReload);
            message.AppendBool(Azure.GetGame().GetNavigator() != null &&
                               Azure.GetGame().GetNavigator().GetPublicItem(Id) != null); // staffPick
            message.AppendBool(!isNotReload || session.GetHabbo().HasFuse("fuse_mod")); // bypass bell, pass ...
            message.AppendBool(room != null && room.RoomMuted); //roomMuted
            message.AppendInteger(WhoCanMute);
            message.AppendInteger(WhoCanKick);
            message.AppendInteger(WhoCanBan);
            message.AppendBool(room != null && room.CheckRights(session, true));
            message.AppendInteger(ChatType);
            message.AppendInteger(ChatBalloon);
            message.AppendInteger(ChatSpeed);
            message.AppendInteger(ChatMaxDistance);
            message.AppendInteger(ChatFloodProtection);
            if (sendRoom == null) return;

            if (sendRoom.Value)
            {
                if (Azure.GetGame().GetRoomManager().GetRoom(Id) != null)
                    Azure.GetGame().GetRoomManager().GetRoom(Id).SendMessage(message);
            }
            else session.SendMessage(message);
        }
Exemplo n.º 23
0
        /// <summary>
        ///     Delivers the items.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="item">The item.</param>
        /// <param name="amount">The amount.</param>
        /// <param name="extraData">The extra data.</param>
        /// <param name="limno">The limno.</param>
        /// <param name="limtot">The limtot.</param>
        /// <param name="songCode">The song code.</param>
        /// <returns>List&lt;UserItem&gt;.</returns>
        internal List<UserItem> DeliverItems(GameClient session, Item item, int amount, string extraData, int limno, int limtot, string songCode)
        {
            var list = new List<UserItem>();

            if (item.InteractionType == Interaction.PostIt)
                amount = amount * 20;

            var a = item.Type;
            if (a == 'i' || a == 's')
            {
                var i = 0;

                while (i < amount)
                {
                    var interactionType = item.InteractionType;

                    switch (interactionType)
                    {
                        case Interaction.Dimmer:
                            var userItem33 = session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, extraData, 0u, true, false, 0, 0);
                            var id33 = userItem33.Id;

                            list.Add(userItem33);

                            using (var queryreactor2 = Azure.GetDatabaseManager().GetQueryReactor())
                                queryreactor2.RunFastQuery(
                                    $"INSERT INTO items_moodlight (item_id,enabled,current_preset,preset_one,preset_two,preset_three) VALUES ({id33},'0',1,'#000000,255,0','#000000,255,0','#000000,255,0')");

                            break;

                        case Interaction.Trophy:
                        case Interaction.Bed:
                        case Interaction.PressurePadBed:
                        case Interaction.Guillotine:
                        case Interaction.ScoreBoard:
                        case Interaction.VendingMachine:
                        case Interaction.Alert:
                        case Interaction.OneWayGate:
                        case Interaction.LoveShuffler:
                        case Interaction.HabboWheel:
                        case Interaction.Dice:
                        case Interaction.Bottle:
                        case Interaction.Hopper:
                        case Interaction.Rentals:
                        case Interaction.Pet:
                        case Interaction.Pool:
                        case Interaction.Roller:
                        case Interaction.FootballGate:
                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, extraData, 0u, true, false, limno, limtot));
                            break;

                        case Interaction.Teleport:
                        case Interaction.QuickTeleport:
                            var userItem = session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, "0", 0u, true, false, 0, 0);
                            var id = userItem.Id;
                            var userItem2 = session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, "0", 0u, true, false, 0, 0);
                            var id2 = userItem2.Id;

                            list.Add(userItem);
                            list.Add(userItem2);

                            using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                                queryReactor.RunFastQuery($"INSERT INTO items_teleports (tele_one_id,tele_two_id) VALUES ('{id}','{id2}');" + $"INSERT INTO items_teleports (tele_one_id,tele_two_id) VALUES ('{id2}','{id}')");

                            break;

                        case Interaction.PetDog:
                        case Interaction.PetCat:
                        case Interaction.PetCrocodile:
                        case Interaction.PetTerrier:
                        case Interaction.PetBear:
                        case Interaction.PetPig:
                        case Interaction.PetLion:
                        case Interaction.PetRhino:
                        case Interaction.PetSpider:
                        case Interaction.PetTurtle:
                        case Interaction.PetChick:
                        case Interaction.PetFrog:
                        case Interaction.PetDragon:
                        case Interaction.PetHorse:
                        case Interaction.PetMonkey:
                        case Interaction.PetGnomo:
                        case Interaction.PetMonsterPlant:
                        case Interaction.PetWhiteRabbit:
                        case Interaction.PetEvilRabbit:
                        case Interaction.PetLoveRabbit:
                        case Interaction.PetPigeon:
                        case Interaction.PetEvilPigeon:
                        case Interaction.PetDemonMonkey:
                        case Interaction.Pet24:
                        case Interaction.Pet25:
                        case Interaction.Pet26:
                        case Interaction.Pet27:
                        case Interaction.Pet28:
                        case Interaction.Pet29:
                        case Interaction.Pet30:
                        case Interaction.Pet31:
                        case Interaction.Pet32:
                        case Interaction.Pet33:
                        case Interaction.Pet34:
                            var petData = extraData.Split('\n');
                            var petId = int.Parse(item.Name.Replace("a0 pet", string.Empty));
                            var generatedPet = CreatePet(session.GetHabbo().Id, petData[0], petId, petData[1],
                                petData[2]);

                            session.GetHabbo().GetInventoryComponent().AddPet(generatedPet);

                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0, 1534, "0", 0u, true, false, 0, 0, string.Empty));
                            break;

                        case Interaction.MusicDisc:
                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, extraData, 0u, true, false, 0, 0, songCode));
                            break;

                        case Interaction.PuzzleBox:
                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, extraData, 0u, true, false, limno, limtot));
                            break;

                        case Interaction.RoomBg:
                            var userItem44 = session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, extraData, 0u, true, false, 0, 0, string.Empty);
                            var id44 = userItem44.Id;

                            list.Add(userItem44);

                            using (var queryreactor3 = Azure.GetDatabaseManager().GetQueryReactor())
                                queryreactor3.RunFastQuery($"INSERT INTO items_toners VALUES ({id44},'0',0,0,0)");

                            break;

                        case Interaction.GuildItem:
                        case Interaction.GuildGate:
                        case Interaction.GroupForumTerminal:
                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, "0", Convert.ToUInt32(extraData), true, false, 0, 0, string.Empty));
                            break;

                        case Interaction.GuildForum:
                            uint groupId;

                            uint.TryParse(extraData, out groupId);

                            var group = Azure.GetGame().GetGroupManager().GetGroup(groupId);

                            if (group != null)
                            {
                                if (group.CreatorId == session.GetHabbo().Id)
                                {
                                    session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer"));
                                    session.GetMessageHandler().GetResponse().AppendString("forums.delivered");
                                    session.GetMessageHandler().GetResponse().AppendInteger(2);
                                    session.GetMessageHandler().GetResponse().AppendString("groupId");
                                    session.GetMessageHandler().GetResponse().AppendString(extraData);
                                    session.GetMessageHandler().GetResponse().AppendString("groupName");
                                    session.GetMessageHandler().GetResponse().AppendString(group.Name);
                                    session.GetMessageHandler().SendResponse();

                                    if (!group.HasForum)
                                    {
                                        group.HasForum = true;
                                        group.UpdateForum();
                                    }
                                }
                                else
                                    session.SendNotif(Azure.GetLanguage().GetVar("user_group_owner_error"));
                            }

                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, "0", Convert.ToUInt32(extraData), true, false, 0, 0, string.Empty));
                            break;

                        default:
                            list.Add(session.GetHabbo().GetInventoryComponent().AddNewItem(0u, item.ItemId, extraData, 0u, true, false, limno, limtot));
                            break;
                    }

                    i++;
                }

                return list;
            }

            if (a == 'e')
            {
                for (var j = 0; j < amount; j++)
                    session.GetHabbo().GetAvatarEffectsInventoryComponent().AddNewEffect(item.SpriteId, 7200, 0);
            }
            else if (a == 'r')
            {
                if (item.Name == "bot_bartender")
                {
                    var bot = CreateBot(session.GetHabbo().Id, "Mahw",
                        "hr-9534-39.hd-600-1.ch-819-92.lg-3058-64.sh-3064-110.wa-2005",
                        "Sacia a sede e você pode dançar!", "f", true);
                    session.GetHabbo().GetInventoryComponent().AddBot(bot);
                    session.SendMessage(session.GetHabbo().GetInventoryComponent().SerializeBotInventory());
                }
                else
                {
                    var bot2 = CreateBot(session.GetHabbo().Id, "Claudio",
                        "hr-3020-34.hd-3091-2.ch-225-92.lg-3058-100.sh-3089-1338.ca-3084-78-108.wa-2005",
                        "Fala, caminhadas, danças e vestidos", "m", false);
                    session.GetHabbo().GetInventoryComponent().AddBot(bot2);
                    session.SendMessage(session.GetHabbo().GetInventoryComponent().SerializeBotInventory());
                }
            }

            return list;
        }