Beispiel #1
0
        /// <summary>
        ///     Disconnects the specified reason.
        /// </summary>
        /// <param name="reason">The reason.</param>
        internal void Disconnect(string reason)
        {
            if (GetHabbo() != null)
            {
                using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                    queryReactor.RunFastQuery(GetHabbo().GetQueryString);
                GetHabbo().OnDisconnect(reason);
            }

            if (_disconnected)
            {
                return;
            }

            _connection?.Dispose();
            _disconnected = true;
        }
Beispiel #2
0
        /// <summary>
        /// Targeteds the offer buy.
        /// </summary>
        internal void PurchaseTargetedOffer()
        {
            uint offerId  = Request.GetUInteger();
            uint quantity = Request.GetUInteger();

            TargetedOffer offer = Yupi.GetGame().GetTargetedOfferManager().CurrentOffer;

            if (offer == null)
            {
                return;
            }

            if (Session.GetHabbo().Credits < offer.CostCredits * quantity)
            {
                return;
            }

            if (Session.GetHabbo().ActivityPoints < offer.CostDuckets * quantity)
            {
                return;
            }

            if (Session.GetHabbo().Diamonds < offer.CostDiamonds * quantity)
            {
                return;
            }

            foreach (string product in offer.Products)
            {
                Item item = Yupi.GetGame().GetItemManager().GetItemByName(product);

                if (item == null)
                {
                    continue;
                }

                Yupi.GetGame().GetCatalog().DeliverItems(Session, item, quantity, string.Empty, 0, 0, string.Empty);
            }

            Session.GetHabbo().Credits        -= offer.CostCredits * quantity;
            Session.GetHabbo().ActivityPoints -= offer.CostDuckets * quantity;
            Session.GetHabbo().Diamonds       -= offer.CostDiamonds * quantity;
            Session.GetHabbo().UpdateCreditsBalance();
            Session.GetHabbo().UpdateSeasonalCurrencyBalance();
            Session.GetHabbo().GetInventoryComponent().UpdateItems(false);
        }
Beispiel #3
0
        /// <summary>
        ///     Serializes the new flat categories.
        /// </summary>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage SerializeNewFlatCategories()
        {
            List <PublicCategory> flatcat = Yupi.GetGame().GetNavigator().PrivateCategories.OfType <PublicCategory>().ToList();

            ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorNewFlatCategoriesMessageComposer"));

            message.AppendInteger(flatcat.Count);

            foreach (PublicCategory cat in flatcat)
            {
                message.AppendInteger(cat.Id);
                message.AppendInteger(cat.UsersNow);
                message.AppendInteger(500);
            }

            return(message);
        }
Beispiel #4
0
        public bool OnCycle()
        {
            long num = Yupi.Now();

            if (num <= _mNext)
            {
                return(false);
            }

            lock (ToWork.SyncRoot)
            {
                while (ToWork.Count > 0)
                {
                    RoomUser          roomUser   = (RoomUser)ToWork.Dequeue();
                    List <IWiredItem> conditions = Room.GetWiredHandler().GetConditions(this);
                    List <IWiredItem> effects    = Room.GetWiredHandler().GetEffects(this);

                    if (conditions.Any())
                    {
                        foreach (IWiredItem current in conditions)
                        {
                            if (!current.Execute(roomUser))
                            {
                                return(false);
                            }

                            WiredHandler.OnEvent(current);
                        }
                    }

                    if (!effects.Any())
                    {
                        continue;
                    }

                    foreach (IWiredItem current2 in effects.Where(current2 => current2.Execute(roomUser, Type)))
                    {
                        WiredHandler.OnEvent(current2);
                    }
                }
            }

            _mNext = 0L;
            WiredHandler.OnEvent(this);
            return(true);
        }
Beispiel #5
0
        /// <summary>
        ///     Called when [cycle].
        /// </summary>
        internal void OnCycle()
        {
            try
            {
                AddClients();
                RemoveClients();
                GiveBadges();
                BroadcastPackets();

                Yupi.GetGame().ClientManagerCycleEnded = true;
            }
            catch (Exception ex)
            {
                ServerLogManager.LogThreadException(ex.ToString(),
                                                    "GameClientManager.OnCycle Exception --> Not inclusive");
            }
        }
Beispiel #6
0
        /// <summary>
        ///     Gets the new length of the navigator.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <returns>System.Int32.</returns>
        private static int GetNewNavigatorLength(string value)
        {
            switch (value)
            {
            case "official_view":
                return(2);

            case "myworld_view":
                return(5);

            case "hotel_view":
            case "roomads_view":
                return(Yupi.GetGame().GetNavigator().FlatCatsCount + 1);
            }

            return(1);
        }
Beispiel #7
0
        public override bool Execute(GameClient session, string[] pms)
        {
            RoomUser user = session.GetHabbo()
                            .CurrentRoom.GetRoomUserManager()
                            .GetRoomUserByHabbo(pms[0]);

            if (user == null)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("user_not_found"));
            }
            else
            {
                user.Frozen = !user.Frozen;
            }

            return(true);
        }
Beispiel #8
0
        /// <summary>
        ///     Purchases the gift.
        /// </summary>
        public void PurchaseGift()
        {
            uint   pageId       = Request.GetUInteger();
            uint   itemId       = Request.GetUInteger();
            string extraData    = Request.GetString();
            string giftUser     = Request.GetString();
            string giftMessage  = Request.GetString();
            int    giftSpriteId = Request.GetInteger();
            int    giftLazo     = Request.GetInteger();
            int    giftColor    = Request.GetInteger();
            bool   undef        = Request.GetBool();

            Yupi.GetGame()
            .GetCatalogManager()
            .HandlePurchase(Session, pageId, itemId, extraData, 1, true, giftUser, giftMessage, giftSpriteId,
                            giftLazo, giftColor, undef, 0u);
        }
Beispiel #9
0
        public override bool Execute(GameClient session, string[] pms)
        {
            Room room = Yupi.GetGame().GetRoomManager().GetRoom(session.GetHabbo().CurrentRoomId);

            if (room == null)
            {
                return(true);
            }

            RoomUser user2 = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().LastSelectedUser);

            if (user2 == null)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("user_not_found"));
                return(true);
            }

            RoomUser user =
                room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().UserName);

            if (PathFinder.GetDistance(user.X, user.Y, user2.X, user2.Y) > 1)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("kil_command_error_1"));

                return(true);
            }
            if (user2.IsLyingDown || user2.IsSitting)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("kil_command_error_2"));
                return(true);
            }
            if (
                !string.Equals(user2.GetUserName(), session.GetHabbo().UserName,
                               StringComparison.CurrentCultureIgnoreCase))
            {
                user2.Statusses.Add("lay", "0.55");
                user2.IsLyingDown  = true;
                user2.UpdateNeeded = true;
                user.Chat(user.GetClient(), Yupi.GetLanguage().GetVar("command.kill.user"), true, 0, 3);
                user2.Chat(user2.GetClient(), Yupi.GetLanguage().GetVar("command.kill.userdeath"), true, 0,
                           3);
                return(true);
            }
            user.Chat(session, "I am sad", false, 0);
            return(true);
        }
Beispiel #10
0
        /// <summary>
        /// Submits the help ticket.
        /// </summary>
        internal void SubmitHelpTicket()
        {
            string message      = Request.GetString();
            int    category     = Request.GetInteger();
            uint   reportedUser = Request.GetUInteger();

            Request.GetUInteger(); // roomId

            int messageCount = Request.GetInteger();

            List <string> chats = new List <string>();

            for (int i = 0; i < messageCount; i++)
            {
                Request.GetInteger();

                chats.Add(Request.GetString());
            }

            Response.Init(LibraryParser.OutgoingRequest("TicketUserAlert"));

            if (Yupi.GetGame().GetModerationTool().UsersHasPendingTicket(Session.GetHabbo().Id))
            {
                SupportTicket ticket = Yupi.GetGame().GetModerationTool().GetPendingTicketForUser(Session.GetHabbo().Id);
                Response.AppendInteger(1);
                Response.AppendString(ticket.TicketId.ToString());
                Response.AppendString(ticket.Timestamp.ToString(CultureInfo.InvariantCulture));
                Response.AppendString(ticket.Message);
                SendResponse();

                return;
            }

            if (Yupi.GetGame().GetModerationTool().UsersHasAbusiveCooldown(Session.GetHabbo().Id)) // the previous issue of the user was abusive
            {
                Response.AppendInteger(2);
                SendResponse();

                return;
            }

            Response.AppendInteger(0); // It's okay, the user may send an new issue
            Yupi.GetGame().GetModerationTool().SendNewTicket(Session, category, 7, reportedUser, message, chats);

            SendResponse();
        }
Beispiel #11
0
        /// <summary>
        ///     Redeemcreditses the specified session.
        /// </summary>
        /// <param name="session">The session.</param>
        internal void Redeemcredits(GameClient session)
        {
            Room currentRoom = session.GetHabbo().CurrentRoom;

            if (currentRoom == null)
            {
                return;
            }

            DataTable table;

            using (IQueryAdapter commitableQueryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                commitableQueryReactor.SetQuery(
                    $"SELECT id FROM items_rooms WHERE user_id={session.GetHabbo().Id} AND room_id='0'");
                table = commitableQueryReactor.GetTable();
            }

            foreach (DataRow dataRow in table.Rows)
            {
                UserItem item = GetItem(Convert.ToUInt32(dataRow[0]));

                if (item == null || (!item.BaseItem.Name.StartsWith("CF_") && !item.BaseItem.Name.StartsWith("CFC_")))
                {
                    continue;
                }

                string[] array = item.BaseItem.Name.Split('_');
                uint     num   = uint.Parse(array[1]);

                using (IQueryAdapter queryreactor2 = Yupi.GetDatabaseManager().GetQueryReactor())
                    queryreactor2.RunFastQuery($"DELETE FROM items_rooms WHERE id={item.Id} LIMIT 1");

                currentRoom.GetRoomItemHandler().RemoveItem(item.Id);

                RemoveItem(item.Id, false);

                if (num <= 0)
                {
                    continue;
                }

                session.GetHabbo().Credits += num;
                session.GetHabbo().UpdateCreditsBalance();
            }
        }
Beispiel #12
0
        /// <summary>
        ///     Serializes the group furni page.
        /// </summary>
        internal void SerializeGroupFurniPage()
        {
            HashSet <GroupMember> userGroups = Yupi.GetGame().GetGroupManager().GetUserGroups(Session.GetHabbo().Id);

            Response.Init(LibraryParser.OutgoingRequest("GroupFurniturePageMessageComposer"));

            List <ServerMessage> responseList = new List <ServerMessage>();

            foreach (
                Group habboGroup in
                userGroups.Where(current => current != null)
                .Select(current => Yupi.GetGame().GetGroupManager().GetGroup(current.GroupId)))
            {
                if (habboGroup == null)
                {
                    continue;
                }

                ServerMessage subResponse = new ServerMessage();
                subResponse.AppendInteger(habboGroup.Id);
                subResponse.AppendString(habboGroup.Name);
                subResponse.AppendString(habboGroup.Badge);
                subResponse.AppendString(Yupi.GetGame().GetGroupManager().SymbolColours.Contains(habboGroup.Colour1)
                    ? ((GroupSymbolColours)
                       Yupi.GetGame().GetGroupManager().SymbolColours[habboGroup.Colour1]).Colour
                    : "4f8a00");
                subResponse.AppendString(
                    Yupi.GetGame().GetGroupManager().BackGroundColours.Contains(habboGroup.Colour2)
                        ? ((GroupBackGroundColours)
                           Yupi.GetGame().GetGroupManager().BackGroundColours[habboGroup.Colour2]).Colour
                        : "4f8a00");
                subResponse.AppendBool(habboGroup.CreatorId == Session.GetHabbo().Id);
                subResponse.AppendInteger(habboGroup.CreatorId);
                subResponse.AppendBool(habboGroup.Forum.Id != 0);

                responseList.Add(subResponse);
            }

            Response.AppendInteger(responseList.Count());
            Response.AppendServerMessages(responseList);

            responseList.Clear();

            SendResponse();
        }
Beispiel #13
0
        /// <summary>
        /// Calls the guide.
        /// </summary>
        internal void CallGuide()
        {
            Request.GetBool();

            int    userId  = Request.GetIntegerFromString();
            string message = Request.GetString();

            GuideManager guideManager = Yupi.GetGame().GetGuideManager();

            if (guideManager.GuidesCount <= 0)
            {
                Response.Init(LibraryParser.OutgoingRequest("OnGuideSessionError"));
                Response.AppendInteger(0);
                SendResponse();
                return;
            }

            GameClient guide = guideManager.GetRandomGuide();

            if (guide == null)
            {
                Response.Init(LibraryParser.OutgoingRequest("OnGuideSessionError"));
                Response.AppendInteger(0);
                SendResponse();
                return;
            }

            ServerMessage onGuideSessionAttached = new ServerMessage(LibraryParser.OutgoingRequest("OnGuideSessionAttachedMessageComposer"));

            onGuideSessionAttached.AppendBool(false);
            onGuideSessionAttached.AppendInteger(userId);
            onGuideSessionAttached.AppendString(message);
            onGuideSessionAttached.AppendInteger(30);
            Session.SendMessage(onGuideSessionAttached);

            ServerMessage onGuideSessionAttached2 = new ServerMessage(LibraryParser.OutgoingRequest("OnGuideSessionAttachedMessageComposer"));

            onGuideSessionAttached2.AppendBool(true);
            onGuideSessionAttached2.AppendInteger(userId);
            onGuideSessionAttached2.AppendString(message);
            onGuideSessionAttached2.AppendInteger(15);
            guide.SendMessage(onGuideSessionAttached2);
            guide.GetHabbo().GuideOtherUser   = Session;
            Session.GetHabbo().GuideOtherUser = guide;
        }
Beispiel #14
0
        public override bool Execute(GameClient client, string[] pms)
        {
            uint id   = uint.Parse(pms[0]);
            Poll poll = Yupi.GetGame().GetPollManager().TryGetPollById(id);

            if (poll == null || poll.Type != PollType.Matching)
            {
                client.SendWhisper("Poll doesn't exists or isn't a matching poll.");
                return(true);
            }
            poll.AnswersPositive = 0;
            poll.AnswersNegative = 0;
            MatchingPollAnswer(client, poll);
            Thread showPoll = new Thread(delegate() { MatchingPollResults(client, poll); });

            showPoll.Start();
            return(true);
        }
Beispiel #15
0
        /// <summary>
        ///     Catalogues the offer.
        /// </summary>
        public void CatalogueOffer()
        {
            uint num = Request.GetUInteger();

            CatalogItem catalogItem = Yupi.GetGame().GetCatalogManager().GetItemFromOffer(num);

            if (catalogItem == null || CatalogManager.LastSentOffer == num)
            {
                return;
            }

            CatalogManager.LastSentOffer = num;

            ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("CatalogOfferMessageComposer"));

            CatalogPageComposer.ComposeItem(catalogItem, message);
            Session.SendMessage(message);
        }
Beispiel #16
0
        public override bool Execute(GameClient session, string[] pms)
        {
            ushort effectId;

            if (!ushort.TryParse(pms[0], out effectId))
            {
                return(true);
            }

            Room room = Yupi.GetGame().GetRoomManager().GetRoom(session.GetHabbo().CurrentRoomId);

            room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);
            foreach (RoomUser user in room.GetRoomUserManager().GetRoomUsers().Where(user => !user.RidingHorse))
            {
                user.ApplyEffect(effectId);
            }
            return(true);
        }
Beispiel #17
0
        public override bool Execute(GameClient session, string[] pms)
        {
            Room     room = session.GetHabbo().CurrentRoom;
            RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (user == null)
            {
                return(true);
            }
            if (!user.RidingHorse)
            {
                user.TeleportEnabled = !user.TeleportEnabled;
                room.GetGameMap().GenerateMaps();
                return(true);
            }
            session.SendWhisper(Yupi.GetLanguage().GetVar("command_error_teleport_enable"));
            return(true);
        }
Beispiel #18
0
        /// <summary>
        ///     Updates the rooms.
        /// </summary>
        internal void UpdateRooms()
        {
            using (IQueryAdapter dbClient = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                UsersRooms.Clear();
                dbClient.SetQuery("SELECT * FROM rooms_data WHERE owner = @userId ORDER BY id ASC LIMIT 50");
                dbClient.AddParameter("userId", Id);

                DataTable table = dbClient.GetTable();

                foreach (DataRow dataRow in table.Rows)
                {
                    UsersRooms.Add(Yupi.GetGame()
                                   .GetRoomManager()
                                   .FetchRoomData(Convert.ToUInt32(dataRow["id"]), dataRow));
                }
            }
        }
Beispiel #19
0
        /// <summary>
        ///     Checks the trading.
        /// </summary>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        internal bool CheckTrading()
        {
            if (!TradeLocked)
            {
                return(true);
            }

            if (TradeLockExpire - Yupi.GetUnixTimeStamp() > 0)
            {
                return(false);
            }

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery($"UPDATE users SET trade_lock = '0' WHERE id = {Id}");

            TradeLocked = false;
            return(true);
        }
Beispiel #20
0
        public override bool Execute(GameClient session, string[] pms)
        {
            foreach (
                GameClient client in
                Yupi.GetGame()
                .GetClientManager()
                .Clients.Values.Where(client => client != null && client.GetHabbo() != null))
            {
                client.GetHabbo().GetBadgeComponent().GiveBadge(pms[0], true, client);
            }

            session.SendNotif(Yupi.GetLanguage().GetVar("command_badge_give_done"));
            Yupi.GetGame()
            .GetModerationTool()
            .LogStaffEntry(session.GetHabbo().UserName, "All",
                           "Badge", "Badge [" + pms[0] + "] given to all online users ATM");
            return(true);
        }
Beispiel #21
0
        /// <summary>
        ///     Initializes the voted rooms.
        /// </summary>
        internal void InitVotedRooms()
        {
            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(
                    "SELECT * FROM rooms_data WHERE score > 0 AND roomtype = 'private' ORDER BY score DESC LIMIT 40");

                DataTable table = queryReactor.GetTable();

                foreach (
                    RoomData data in
                    from DataRow dataRow in table.Rows
                    select FetchRoomData(Convert.ToUInt32(dataRow["id"]), dataRow))
                {
                    QueueVoteAdd(data);
                }
            }
        }
Beispiel #22
0
        /// <summary>
        ///     Initializes this instance.
        /// </summary>
        internal static void Initialize()
        {
            Songs       = new Dictionary <uint, SongData>();
            _cacheTimer = new Dictionary <uint, double>();

            Songs.Clear();

            using (IQueryAdapter commitableQueryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                commitableQueryReactor.SetQuery("SELECT * FROM items_songs_data ORDER BY id");
                DataTable table = commitableQueryReactor.GetTable();

                foreach (SongData songFromDataRow in from DataRow dRow in table.Rows select GetSongFromDataRow(dRow))
                {
                    Songs.Add(songFromDataRow.Id, songFromDataRow);
                }
            }
        }
Beispiel #23
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 (IQueryAdapter queryReactor = Yupi.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());
        }
Beispiel #24
0
        /// <summary>
        ///     Destroys this instance.
        /// </summary>
        internal void Destroy()
        {
            IEnumerable <GameClient> clientsById = Yupi.GetGame().GetClientManager().GetClientsById(Friends.Keys);

            foreach (
                GameClient current in
                clientsById.Where(current => current.GetHabbo() != null && current.GetHabbo().GetMessenger() != null)
                )
            {
                current.GetHabbo().GetMessenger().UpdateFriend(_userId, null, true);
            }

            Friends.Clear();
            Requests.Clear();

            Friends  = null;
            Requests = null;
        }
Beispiel #25
0
        /// <summary>
        ///     Serializes the search result list flatcats.
        /// </summary>
        /// <param name="flatCatId">The flat cat identifier.</param>
        /// <param name="direct">if set to <c>true</c> [direct].</param>
        /// <param name="message">The message.</param>
        internal static void SerializeSearchResultListFlatcats(int flatCatId, bool direct, ServerMessage message)
        {
            PublicCategory flatCat = Yupi.GetGame().GetNavigator().GetFlatCat(flatCatId);

            if (flatCat == null)
            {
                return;
            }

            message.AppendString($"category__{flatCat.Caption}");
            message.AppendString(flatCat.Caption);
            message.AppendInteger(0);
            message.AppendBool(true);
            message.AppendInteger(-1);

            KeyValuePair <RoomData, uint>[] rooms = Yupi.GetGame().GetRoomManager().GetActiveRooms();
            Yupi.GetGame().GetNavigator().SerializeNavigatorPopularRoomsNews(ref message, rooms, flatCatId, direct);
        }
Beispiel #26
0
        /// <summary>
        ///     Loads the reward.
        /// </summary>
        private void LoadReward()
        {
            using (IQueryAdapter commitableQueryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                commitableQueryReactor.SetQuery(
                    "SELECT hotelview_rewards_promos.furni_id, hotelview_rewards_promos.furni_name FROM hotelview_rewards_promos WHERE hotelview_rewards_promos.enabled = 1 LIMIT 1");

                DataRow row = commitableQueryReactor.GetRow();

                if (row == null)
                {
                    return;
                }

                FurniRewardId   = Convert.ToInt32(row[0]);
                FurniRewardName = Convert.ToString(row[1]);
            }
        }
Beispiel #27
0
        /// <summary>
        ///     Creates the pet.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="name">The name.</param>
        /// <param name="type">The type.</param>
        /// <param name="race">The race.</param>
        /// <param name="color">The color.</param>
        /// <param name="rarity">The rarity.</param>
        /// <returns>Pet.</returns>
        internal static Pet CreatePet(uint userId, string name, string type, string race, string color, int rarity = 0)
        {
            uint trace = Convert.ToUInt32(race);

            uint petId = 404u;

            Pet pet = new Pet(petId, userId, 0u, name, type, trace, 0, 100, 150, 0, Yupi.GetUnixTimeStamp(), 0, 0, 0.0,
                              false, 0, 0, -1, rarity, DateTime.Now.AddHours(36.0), DateTime.Now.AddHours(48.0), null, color)
            {
                DbState = DatabaseUpdateState.NeedsUpdate
            };

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(
                    "INSERT INTO pets_data (user_id, name, ai_type, pet_type, race_id, experience, energy, createstamp, rarity, lasthealth_stamp, untilgrown_stamp, color) " +
                    $"VALUES ('{pet.OwnerId}', @petName, 'pet', @petType, @petRace, 0, 100, UNIX_TIMESTAMP(), '{rarity}', UNIX_TIMESTAMP(now() + INTERVAL 36 HOUR), UNIX_TIMESTAMP(now() + INTERVAL 48 HOUR), @petColor)");

                queryReactor.AddParameter("petName", pet.Name);
                queryReactor.AddParameter("petType", pet.Type);
                queryReactor.AddParameter("petRace", pet.Race);
                queryReactor.AddParameter("petColor", pet.Color);

                petId = (uint)queryReactor.InsertQuery();
            }

            pet.PetId = petId;

            if (pet.Type == "pet_monster")
            {
                pet.MoplaBreed = MoplaBreed.CreateMonsterplantBreed(pet);
                pet.Name       = pet.MoplaBreed.Name;
                pet.DbState    = DatabaseUpdateState.NeedsUpdate;
            }

            GameClient clientByUserId = Yupi.GetGame().GetClientManager().GetClientByUserId(userId);

            if (clientByUserId != null)
            {
                Yupi.GetGame().GetAchievementManager().ProgressUserAchievement(clientByUserId, "ACH_PetLover", 1);
            }

            return(pet);
        }
Beispiel #28
0
        public bool Execute(params object[] stuff)
        {
            if (stuff[0] == null)
            {
                return(false);
            }

            RoomUser    roomUser = (RoomUser)stuff[0];
            Interaction item     = (Interaction)stuff[1];

            if (_mBanned.Contains(item))
            {
                return(false);
            }

            if (!Items.Any())
            {
                return(false);
            }

            if (!ToWorkConcurrentQueue.Contains(roomUser))
            {
                ToWorkConcurrentQueue.Enqueue(roomUser);
            }

            if (Delay < 500)
            {
                Delay = 500;
            }

            if (Room.GetWiredHandler().IsCycleQueued(this))
            {
                return(false);
            }

            if (_mNext == 0L || _mNext < Yupi.Now())
            {
                _mNext = Yupi.Now() + Delay;
            }

            Room.GetWiredHandler().EnqueueCycle(this);

            return(true);
        }
Beispiel #29
0
        public override bool Execute(GameClient session, string[] pms)
        {
            Room room = session.GetHabbo().CurrentRoom;

            RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(pms[0]);

            if (user == null)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("user_not_found"));
                return(true);
            }

            string gender = user.GetClient().GetHabbo().Gender;
            string look   = user.GetClient().GetHabbo().Look;

            session.GetHabbo().Gender = gender;
            session.GetHabbo().Look   = look;
            using (IQueryAdapter adapter = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                adapter.SetQuery(
                    "UPDATE users SET gender = @gender, look = @look WHERE id = " + session.GetHabbo().Id);
                adapter.AddParameter("gender", gender);
                adapter.AddParameter("look", look);
                adapter.RunQuery();
            }

            RoomUser myUser = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().UserName);

            if (myUser == null)
            {
                return(true);
            }

            ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer"));

            message.AppendInteger(myUser.VirtualId);
            message.AppendString(session.GetHabbo().Look);
            message.AppendString(session.GetHabbo().Gender.ToLower());
            message.AppendString(session.GetHabbo().Motto);
            message.AppendInteger(session.GetHabbo().AchievementPoints);
            room.SendMessage(message.GetReversedBytes());

            return(true);
        }
Beispiel #30
0
        /// <summary>
        ///     Gets the tele room identifier.
        /// </summary>
        /// <param name="teleId">The tele identifier.</param>
        /// <param name="pRoom">The p room.</param>
        /// <returns>System.UInt32.</returns>
        internal static uint GetTeleRoomId(uint teleId, Room pRoom)
        {
            if (pRoom.GetRoomItemHandler().GetItem(teleId) != null)
            {
                return(pRoom.RoomId);
            }

            uint result;

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery($"SELECT room_id FROM items_rooms WHERE id = {teleId} LIMIT 1");
                DataRow row = queryReactor.GetRow();

                result = row == null ? 0 : Convert.ToUInt32(row[0]);
            }

            return(result);
        }