Пример #1
0
        /// <summary>
        /// Updates the preset.
        /// </summary>
        /// <param name="preset">The preset.</param>
        /// <param name="color">The color.</param>
        /// <param name="intensity">The intensity.</param>
        /// <param name="bgOnly">if set to <c>true</c> [bg only].</param>
        /// <param name="hax">if set to <c>true</c> [hax].</param>
        internal void UpdatePreset(int preset, string color, int intensity, bool bgOnly, bool hax = false)
        {
            if (!IsValidColor(color) || (!IsValidIntensity(intensity) && !hax))
            {
                return;
            }

            string text = "one";

            switch (preset)
            {
            case 2:
                text = "two";
                break;

            case 3:
                text = "three";
                break;

            default:
                text = "one";
                break;
            }

            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(string.Format(format: "UPDATE items_moodlight SET preset_{0}='{1},{2},{3}' WHERE item_id='{4}'", args: new object[] { text, color, intensity, Plus.BoolToEnum(bgOnly), ItemId }));
                queryReactor.RunQuery();
            }

            GetPreset(preset).ColorCode      = color;
            GetPreset(preset).ColorIntensity = intensity;
            GetPreset(preset).BackgroundOnly = bgOnly;
        }
Пример #2
0
        public static void init()
        {
            DataTable Gangs      = null;
            DataTable GangsRanks = null;

            GangData     = new ConcurrentDictionary <int, Gang>();
            GangRankData = new MultiKeyDictionary <int, int, GangRank>();
            GangData.Clear();
            GangRankData.Clear();

            using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM rp_gangs");

                Gangs = dbClient.GetTable();

                foreach (DataRow Gang in Gangs.Rows)
                {
                    dbClient.SetQuery("SELECT * FROM rp_gangs_ranks WHERE gangid = " + Convert.ToInt32(Gang[0]) + "");

                    GangsRanks = dbClient.GetTable();

                    foreach (DataRow Rank in GangsRanks.Rows)
                    {
                        GangRankData.Add(Convert.ToInt32(Rank[0]), Convert.ToInt32(Rank[1]), new GangRank(Convert.ToInt32(Rank[0]), Convert.ToInt32(Rank[1]), Convert.ToString(Rank[2]), Convert.ToInt32(Rank[3]), Convert.ToInt32(Rank[4]), Convert.ToInt32(Rank[5]), Convert.ToInt32(Rank[6]), Convert.ToInt32(Rank[7])));
                    }

                    GangData.TryAdd(Convert.ToInt32(Gang[0]), new Gang(Convert.ToInt32(Gang[0]), Convert.ToString(Gang[1]), Convert.ToInt32(Gang[2]), Convert.ToInt32(Gang[3]), Convert.ToInt32(Gang[4]), Convert.ToInt32(Gang[5])));
                }
            }

            initTurfs();
        }
Пример #3
0
 public void OnPlace(GameClient session, RoomItem item)
 {
     {
         item.GetRoom().GetRoomItemHandler().HopperCount++;
         using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
         {
             queryReactor.SetQuery("INSERT INTO items_hopper (hopper_id, room_id) VALUES (@hopperid, @roomid);");
             queryReactor.AddParameter("hopperid", item.Id);
             queryReactor.AddParameter("roomid", item.RoomId);
             queryReactor.RunQuery();
         }
         if (item.InteractingUser == 0u)
         {
             return;
         }
         var roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);
         if (roomUserByHabbo != null)
         {
             roomUserByHabbo.ClearMovement();
             roomUserByHabbo.AllowOverride = false;
             roomUserByHabbo.CanWalk       = true;
         }
         item.InteractingUser = 0u;
     }
 }
Пример #4
0
        /// <summary>
        /// Delivers the random pinata item.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="room">The room.</param>
        /// <param name="item">The item.</param>
        internal void DeliverRandomPinataItem(RoomUser user, Room room, RoomItem item)
        {
            if (room == null || item == null || item.GetBaseItem().InteractionType != Interaction.Pinata || !Pinatas.ContainsKey(item.GetBaseItem().ItemId))
            {
                return;
            }

            PinataItem pinataItem;

            Pinatas.TryGetValue(item.GetBaseItem().ItemId, out pinataItem);

            if (pinataItem == null || pinataItem.Rewards.Count < 1)
            {
                return;
            }

            item.RefreshItem();
            item.BaseItem = pinataItem.Rewards[new Random().Next((pinataItem.Rewards.Count - 1))];

            item.ExtraData = string.Empty;
            room.GetRoomItemHandler().RemoveFurniture(user.GetClient(), item.Id, wasPicked: false);
            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Format(format: "UPDATE items_rooms SET base_item='{0}', extra_data='' WHERE id='{1}'", arg0: item.BaseItem, arg1: item.Id));
                queryReactor.RunQuery();
            }

            if (!room.GetRoomItemHandler().SetFloorItem(user.GetClient(), item, item.X, item.Y, newRot: 0, newItem: true, onRoller: false, sendMessage: true))
            {
                user.GetClient().GetHabbo().GetInventoryComponent().AddItem(item);
            }
        }
Пример #5
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 = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "REPLACE INTO users_quests_data(user_id,quest_id) VALUES (",
                    session.GetHabbo().Id,
                    ", ",
                    nextQuestInSeries.Id,
                    ")"
                }));
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "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));
        }
Пример #6
0
        /// <summary>
        /// Adds the subscription.
        /// </summary>
        /// <param name="dayLength">Length of the day.</param>
        internal void AddSubscription(double dayLength)
        {
            var num = ((int)Math.Round(dayLength));

            var      clientByUserId = Plus.GetGame().GetClientManager().GetClientByUserId(_userId);
            DateTime target;
            Int64    num2;
            Int64    num3;

            if (_subscription != null)
            {
                target = Plus.UnixToDateTime(_subscription.ExpireTime).AddDays(num);
                num2   = _subscription.ActivateTime;
                num3   = _subscription.LastGiftTime;
            }
            else
            {
                target = DateTime.Now.AddDays(num);
                num2   = Plus.GetUnixTimeStamp();
                num3   = Plus.GetUnixTimeStamp();
            }
            var num4 = Plus.DateTimeToUnix(target);

            _subscription = new Subscription(2, num2, num4, num3);
            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery(
                    string.Concat(new object[]
                                  { "REPLACE INTO users_subscriptions VALUES (", _userId, ", 2, ", num2, ", ", num4, ", ", num3, ");" }));
            clientByUserId.GetHabbo().SerializeClub();
            Plus.GetGame().GetAchievementManager().TryProgressHabboClubAchievements(clientByUserId);
        }
Пример #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UserItem"/> class.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="baseItemId">The base item identifier.</param>
        /// <param name="extraData">The extra data.</param>
        /// <param name="group">The group.</param>
        /// <param name="songCode">The song code.</param>
        internal UserItem(uint id, uint baseItemId, string extraData, uint group, string songCode)
        {
            Id         = id;
            BaseItemId = baseItemId;
            ExtraData  = extraData;
            GroupId    = group;
            BaseItem   = Plus.GetGame().GetItemManager().GetItem(baseItemId);

            if (BaseItem == null)
            {
                return;
            }
            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(string.Format("SELECT * FROM items_limited WHERE item_id={0} LIMIT 1", id));
                var row = queryReactor.GetRow();
                if (row != null)
                {
                    uint.TryParse(row[1].ToString(), out LimitedSellId);
                    uint.TryParse(row[2].ToString(), out LimitedStack);
                }
            }

            IsWallItem = (BaseItem.Type == 'i');
            SongCode   = songCode;
        }
Пример #8
0
 /// <summary>
 /// Saves to database.
 /// </summary>
 /// <param name="roomId">The room identifier.</param>
 internal void SaveToDatabase(uint roomId)
 {
     using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
     {
         queryReactor.RunFastQuery(string.Concat("REPLACE INTO items_songs VALUES (", ItemId, ",", roomId, ",", SongId, ")"));
     }
 }
Пример #9
0
 /// <summary>
 /// Removes from database.
 /// </summary>
 internal void RemoveFromDatabase()
 {
     using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
     {
         queryReactor.RunFastQuery(string.Format("DELETE FROM items_songs WHERE itemid = {0}", ItemId));
     }
 }
Пример #10
0
        /// <summary>
        /// Caches apartments
        /// </summary>
        public static void init()
        {
            Apartments.Clear();

            string Query = "SELECT * FROM rp_apartments";

            try
            {
                using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery(Query);
                    DataTable apartmentTable = dbClient.GetTable();

                    foreach (DataRow row in apartmentTable.Rows)
                    {
                        uint RoomID  = Convert.ToUInt32(row["roomid"]);
                        uint OwnerID = Convert.ToUInt32(row["ownerid"]);

                        bool IsVIP     = Convert.ToBoolean(row["vip"]);
                        bool IsForSale = Convert.ToBoolean(row["forsale"]);

                        var apartment = new Apartment(RoomID, OwnerID, IsVIP, IsForSale);
                        Apartments.TryAdd(RoomID, apartment);
                    }
                }
            }
            catch (Exception ex) { Logging.LogQueryError(ex, Query); }
        }
Пример #11
0
        /// <summary>
        /// Processes the specified caller.
        /// </summary>
        /// <param name="caller">The caller.</param>
        internal static void Process(object caller)
        {
            if (lowPriorityProcessWatch.ElapsedMilliseconds >= 10000 || !isExecuted)
            {
                isExecuted = true;
                lowPriorityProcessWatch.Restart();

                var clientCount      = Plus.GetGame().GetClientManager().ClientCount;
                var loadedRoomsCount = Plus.GetGame().GetRoomManager().LoadedRoomsCount;
                var Uptime           = DateTime.Now - Plus.ServerStarted;

                Console.Title = "[FluxRP]  Uptime: " + Uptime.Days + " days and " + Uptime.Hours + " hours | " +
                                "Online users: " + clientCount + " | Loaded rooms: " + loadedRoomsCount;

                using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    if (clientCount > _userPeak)
                    {
                        _userPeak = clientCount;
                    }

                    _lastDate = DateTime.Now.ToShortDateString();
                    queryReactor.RunFastQuery(string.Concat("UPDATE `server_status` SET `stamp` = '", Plus.GetUnixTimeStamp(), "', `users_online` = '", clientCount, "', `rooms_loaded` = '", loadedRoomsCount, "', `server_ver` = 'Plus Emulator', `userpeak` = ", _userPeak));
                }
            }
        }
Пример #12
0
        internal object GetRPStat(string Stat)
        {
            object RetStat = 0;

            try
            {
                using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("SELECT " + Stat + " FROM bots WHERE id = '" + this.BotId + "'");
                    DataRow Row = dbClient.GetRow();

                    if (Row == null)
                    {
                        return(RetStat);
                    }

                    RetStat = Row[Stat];
                }
            }
            catch (Exception e)
            {
                return(RetStat);
            }

            return(RetStat);
        }
Пример #13
0
        /// <summary>
        /// Closes the specified new status.
        /// </summary>
        /// <param name="newStatus">The new status.</param>
        /// <param name="updateInDb">if set to <c>true</c> [update in database].</param>
        internal void Close(TicketStatus newStatus, bool updateInDb)
        {
            this.Status = newStatus;
            if (!updateInDb)
            {
                return;
            }
            string text;

            switch (newStatus)
            {
            case TicketStatus.Abusive:
                text = "abusive";
                goto IL_41;

            case TicketStatus.Invalid:
                text = "invalid";
                goto IL_41;
            }
            text = "resolved";
IL_41:
            using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "UPDATE moderation_tickets SET status = '",
                    text,
                    "' WHERE id = ",
                    this.TicketId
                }));
            }
        }
Пример #14
0
        internal void ToggleStaffPick()
        {
            var roomId  = Request.GetUInteger();
            var current = Request.GetBool();
            var room    = Plus.GetGame().GetRoomManager().GetRoom(roomId);

            if (room == null)
            {
                return;
            }
            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                var pubItem = Plus.GetGame().GetNavigator().GetPublicItem(roomId);
                if (pubItem == null) // not picked
                {
                    queryReactor.SetQuery("INSERT INTO navigator_publics (bannertype, room_id, category_parent_id) VALUES ('0', @roomId, '-2')");
                    queryReactor.AddParameter("roomId", room.RoomId);
                    queryReactor.RunQuery();
                    queryReactor.RunFastQuery("SELECT last_insert_id()");
                    var publicItemId = queryReactor.GetInteger();
                    var publicItem   = new PublicItem(publicItemId, 0, string.Empty, string.Empty, string.Empty, PublicImageType.Internal, room.RoomId, 0, -2, false, 1, string.Empty);
                    Plus.GetGame().GetNavigator().AddPublicItem(publicItem);
                }
                else // picked
                {
                    queryReactor.SetQuery("DELETE FROM navigator_publics WHERE id = @pubId");
                    queryReactor.AddParameter("pubId", pubItem.Id);
                    queryReactor.RunQuery();
                    Plus.GetGame().GetNavigator().RemovePublicItem(pubItem.Id);
                }
                room.RoomData.SerializeRoomData(Response, Session, false, true);
                Plus.GetGame().GetNavigator().LoadNewPublicRooms();
            }
        }
Пример #15
0
        /// <summary>
        /// Called when [new friendship].
        /// </summary>
        /// <param name="friendId">The friend identifier.</param>
        internal void OnNewFriendship(uint friendId)
        {
            var            clientByUserId = Plus.GetGame().GetClientManager().GetClientByUserId(friendId);
            MessengerBuddy messengerBuddy;

            if (clientByUserId == null || clientByUserId.GetHabbo() == null)
            {
                DataRow row;
                using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.SetQuery(
                        string.Format(
                            "SELECT id,username,motto,look,last_online,hide_inroom,hide_online FROM users WHERE id = {0}",
                            friendId));
                    row = queryReactor.GetRow();
                }
                messengerBuddy = new MessengerBuddy(friendId, (string)row["Username"], (string)row["look"],
                                                    (string)row["motto"], (int)row["last_online"], Plus.EnumToBool(row["hide_online"].ToString()),
                                                    Plus.EnumToBool(row["hide_inroom"].ToString()));
            }
            else
            {
                var habbo = clientByUserId.GetHabbo();
                messengerBuddy = new MessengerBuddy(friendId, habbo.UserName, habbo.Look, habbo.Motto, 0,
                                                    habbo.AppearOffline, habbo.HideInRoom);
                messengerBuddy.UpdateUser();
            }
            if (!Friends.ContainsKey(friendId))
            {
                Friends.Add(friendId, messengerBuddy);
            }
            GetClient().SendMessage(SerializeUpdate(messengerBuddy));
        }
Пример #16
0
        /// <summary>
        /// Gets the user data.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <returns>UserData.</returns>
        internal static UserData GetUserData(int userId)
        {
            DataRow   dataRow;
            uint      num;
            DataRow   row;
            DataTable table;

            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(string.Format("SELECT * FROM users WHERE id = '{0}'", userId));
                dataRow = queryReactor.GetRow();
                Plus.GetGame().GetClientManager().LogClonesOut(Convert.ToUInt32(userId));
                if (dataRow == null)
                {
                    return(null);
                }
                num = Convert.ToUInt32(dataRow["id"]);
                if (Plus.GetGame().GetClientManager().GetClientByUserId(num) != null)
                {
                    return(null);
                }
                queryReactor.SetQuery(string.Format("SELECT job_id,job_rank FROM rp_stats WHERE id={0}", userId));
                queryReactor.GetTable();
                queryReactor.SetQuery(string.Format("SELECT * FROM users_stats WHERE id={0} LIMIT 1", num));
                row = queryReactor.GetRow();

                if (row == null)
                {
                }
                queryReactor.SetQuery("SELECT * FROM users_relationships WHERE user_id=@id");
                queryReactor.AddParameter("id", num);
                table = queryReactor.GetTable();
            }
            var achievements    = new Dictionary <string, UserAchievement>();
            var talents         = new Dictionary <int, UserTalent>();
            var favouritedRooms = new List <uint>();
            var ignores         = new List <uint>();
            var tags            = new List <string>();
            var badges          = new List <Badge>();
            var inventory       = new List <UserItem>();
            var effects         = new List <AvatarEffect>();
            var friends         = new Dictionary <uint, MessengerBuddy>();
            var requests        = new Dictionary <uint, MessengerRequest>();
            var rooms           = new HashSet <RoomData>();
            var pets            = new Dictionary <uint, Pet>();
            var quests          = new Dictionary <uint, int>();
            var bots            = new Dictionary <uint, RoomBot>();
            var group           = new HashSet <GroupUser>();
            var pollData        = new HashSet <uint>();
            var dictionary      = table.Rows.Cast <DataRow>()
                                  .ToDictionary(dataRow2 => (int)dataRow2[0],
                                                dataRow2 =>
                                                new Relationship((int)dataRow2[0], (int)dataRow2[2], Convert.ToInt32(dataRow2[3].ToString())));
            var user = HabboFactory.GenerateHabbo(dataRow, row, group);

            dataRow = null;

            return(new UserData(num, achievements, talents, favouritedRooms, ignores, tags, null, badges, inventory,
                                effects, friends, requests, rooms, pets, quests, user, bots, dictionary, pollData, 0));
        }
Пример #17
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 = Plus.GetDatabaseManager().GetQueryReactor())
         {
             queryReactor.SetQuery(string.Concat(new object[]
             {
                 "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));
 }
Пример #18
0
        public void Init()
        {
            using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                DataTable GetBans = null;
                dbClient.SetQuery("SELECT `bantype`,`value`,`reason`,`expire` FROM `users_bans` WHERE `bantype` = 'machine' OR `bantype` = 'user'");
                GetBans = dbClient.GetTable();

                if (GetBans != null)
                {
                    foreach (DataRow dRow in GetBans.Rows)
                    {
                        string value   = Convert.ToString(dRow["value"]);
                        string reason  = Convert.ToString(dRow["reason"]);
                        double expires = (double)dRow["expire"];
                        string type    = Convert.ToString(dRow["bantype"]);

                        ModerationBan Ban = new ModerationBan(BanTypeUtility.GetModerationBanType(type), value, reason, expires);
                        if (Ban != null)
                        {
                            if (expires > Plus.GetUnixTimeStamp())
                            {
                                if (!this._bans.ContainsKey(value))
                                {
                                    this._bans.Add(value, Ban);
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #19
0
        public static void initTrees()
        {
            Trees.Clear();
            try
            {
                using (var dbClient = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("SELECT * FROM rp_trees");
                    var woodTable = dbClient.GetTable();
                    dbClient.SetQuery("SELECT * FROM rp_settings WHERE type = 'TREES'");
                    var woodSettings = dbClient.GetRow();

                    foreach (DataRow row in woodTable.Rows)
                    {
                        var rock = new Tree(Convert.ToUInt32(row["id"]), Convert.ToUInt32(row["roomid"]),
                                            Convert.ToInt32(row["x"]), Convert.ToInt32(row["y"]), row["data"].ToString());
                        Trees.TryAdd(Convert.ToUInt32(row["id"]), rock);
                    }

                    var dataSettings = woodSettings["data"].ToString().Split(':');

                    sellPoint[0] = Convert.ToInt32(dataSettings[0]); // X
                    sellPoint[1] = Convert.ToInt32(dataSettings[1]); // Y
                    sellPoint[2] = Convert.ToInt32(dataSettings[2]); // Room ID
                }
            }
            catch
            {
            }
        }
Пример #20
0
        public void BanUser(GameClient client, string Mod, ModerationBanType Type, string BanValue, string Reason, double ExpireTimestamp)
        {
            string BanType   = (Type == ModerationBanType.IP ? "ip" : Type == ModerationBanType.MACHINE ? "machine" : "user");
            double BanExpire = Plus.GetUnixTimeStamp() + ExpireTimestamp;

            using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("INSERT INTO `users_bans` (`bantype`, `value`, `reason`, `expire`, `added_by`,`added_date`) VALUES ('" + BanType + "', '" + BanValue + "', @reason, " + BanExpire + ", '" + Mod + "', '" + DateTime.Now.ToLongDateString() + "');");
                dbClient.AddParameter("reason", Reason);
                dbClient.RunQuery();
            }

            if (Type == ModerationBanType.MACHINE || Type == ModerationBanType.USERNAME)
            {
                if (!this._bans.ContainsKey(BanValue))
                {
                    this._bans.Add(BanValue, new ModerationBan(Type, BanValue, Reason, BanExpire));
                }
            }

            using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.RunFastQuery("UPDATE `users_info` SET `bans` = `bans` + '1' WHERE `user_id` = '" + client.GetHabbo().Id + "' LIMIT 1");
            }

            client.Disconnect("banned");
        }
Пример #21
0
        /// <summary>
        /// Caches farming spots
        /// </summary>
        public static void init()
        {
            FarmingSpots.Clear();

            string Query = "SELECT * FROM rp_farming";

            try
            {
                using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery(Query);
                    DataTable farmingTable = dbClient.GetTable();

                    foreach (DataRow row in farmingTable.Rows)
                    {
                        uint Id     = Convert.ToUInt32(row["id"]);
                        uint RoomId = Convert.ToUInt32(row["roomid"]);

                        int X = Convert.ToInt32(row["x"]);
                        int Y = Convert.ToInt32(row["y"]);

                        string PlantType = row["type"].ToString();

                        var farmingspot = new FarmingSpot(Id, RoomId, X, Y, PlantType);
                        FarmingSpots.TryAdd(Id, farmingspot);
                    }
                }
            }
            catch (Exception ex) { Logging.LogQueryError(ex, Query); }
        }
Пример #22
0
 /// <summary>
 /// Unregisters the client.
 /// </summary>
 /// <param name="userid">The userid.</param>
 /// <param name="userName">The username.</param>
 internal void UnregisterClient(uint userid, string userName)
 {
     _userIdRegister.Remove(userid);
     _userNameRegister.Remove(userName.ToLower());
     using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
         queryReactor.SetQuery(string.Format("UPDATE users SET online='0' WHERE id={0} LIMIT 1", userid));
 }
Пример #23
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 = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "REPLACE INTO users_quests_data(user_id,quest_id) VALUES (",
                    session.GetHabbo().Id,
                    ", ",
                    quest.Id,
                    ")"
                }));
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "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));
        }
Пример #24
0
        /// <summary>
        /// Initializes the messenger.
        /// </summary>
        internal void InitMessenger()
        {
            var client = GetClient();

            if (client == null)
            {
                return;
            }
            client.SendMessage(_messenger.SerializeCategories());
            client.SendMessage(_messenger.SerializeFriends());

            client.SendMessage(_messenger.SerializeRequests());
            if (Plus.OfflineMessages.ContainsKey(Id))
            {
                var list = Plus.OfflineMessages[Id];
                foreach (var current in list)
                {
                    client.SendMessage(_messenger.SerializeOfflineMessages(current));
                }
                Plus.OfflineMessages.Remove(Id);
                OfflineMessage.RemoveAllMessages(Plus.GetDatabaseManager().GetQueryReactor(), Id);
            }
            if (_messenger.Requests.Count > Plus.FriendRequestLimit)
            {
                client.SendNotif(Plus.GetLanguage().GetVar("user_friend_request_max"));
            }

            _messenger.OnStatusChanged(false);
        }
Пример #25
0
        /// <summary>
        /// Constructor
        /// </summary>
        public MafiaWarManager()
        {
            string GameData;

            using (var dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM game_settings WHERE type = 'mafiawars'");
                DataTable GameTable = dbClient.GetTable();

                GameData = GameTable.Rows[0]["data"].ToString();
            }

            if (GameData == null)
            {
                Console.WriteLine("FAILED TO INITIALIZE MAFIA WARS");
                return;
            }

            DataArray = GameData.Split(',');

            // Split string by , and make a new vector instance | X,Y,X,Y
            Vector2D WaitingAreaGreen = new Vector2D(Convert.ToInt32(DataArray[0]), Convert.ToInt32(DataArray[1]));
            Vector2D WaitingAreaBlue  = new Vector2D(Convert.ToInt32(DataArray[2]), Convert.ToInt32(DataArray[3]));

            MWTeam Green = new MWTeam("Green", "ha-3352-101-101.sh-290-101.lg-275-101.ch-3030-101", WaitingAreaGreen);
            MWTeam Blue  = new MWTeam("Blue", "ha-3352-106-106.lg-275-106.sh-290-106.ch-3030-106", WaitingAreaBlue);

            MWTeams.Add("Green", Green);
            MWTeams.Add("Blue", Blue);
        }
Пример #26
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UserPreferences"/> class.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        internal UserPreferences(uint userId)
        {
            _userId = userId;
            DataRow row;

            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery("SELECT * FROM users_preferences WHERE userid = " + _userId);
                queryReactor.AddParameter("userid", _userId);
                row = queryReactor.GetRow();

                if (row == null)
                {
                    queryReactor.RunFastQuery("REPLACE INTO users_preferences (userid, volume) VALUES (" + _userId + ", '100,100,100')");
                    return;
                }
            }
            PreferOldChat       = Plus.EnumToBool((string)row["prefer_old_chat"]);
            IgnoreRoomInvite    = Plus.EnumToBool((string)row["ignore_room_invite"]);
            DisableCameraFollow = Plus.EnumToBool((string)row["disable_camera_follow"]);
            Volume        = (string)row["volume"];
            NewnaviX      = Convert.ToInt32(row["newnavi_x"]);
            NewnaviY      = Convert.ToInt32(row["newnavi_y"]);
            NewnaviWidth  = Convert.ToInt32(row["newnavi_width"]);
            NewnaviHeight = Convert.ToInt32(row["newnavi_height"]);
        }
Пример #27
0
        public static bool removeInventoryDrinks(GameClient session, HybridDictionary invedrinks)
        {
            if (session != null)
            {
                try
                {
                    bool lol2 = false;
                    foreach (UserItem item in invedrinks.Values)
                    {
                        if (lol2 == false)
                        {
                            session.GetHabbo().GetInventoryComponent().RemoveItem(item.Id, false);
                            using (var dbClient = Plus.GetDatabaseManager().GetQueryReactor())
                            {
                                dbClient.RunFastQuery("DELETE FROM items_rooms WHERE id = '" + item.Id + "'");
                            }
                            lol2 = true;
                        }
                    }

                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Пример #28
0
        public static void load()
        {
            SubstanceData = new ConcurrentDictionary <string, Food>();
            SubstanceData.Clear();
            DataTable substances = null;

            using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM rp_food");
                substances = dbClient.GetTable();
                foreach (DataRow sub in substances.Rows)
                {
                    Food food = new Food(
                        Convert.ToString(sub[0]),
                        Convert.ToInt32(sub[1]),
                        Convert.ToInt32(sub[2]),
                        Convert.ToInt32(sub[3]),
                        Convert.ToInt32(sub[4]),
                        Convert.ToInt32(sub[5]),
                        Convert.ToString(sub[6]),
                        Convert.ToString(sub[7]),
                        Convert.ToString(sub[8]),
                        Convert.ToUInt32(sub[9]),
                        Convert.ToDouble(sub[10]),
                        Convert.ToString(sub[11]),
                        Convert.ToInt32(sub[12])
                        );
                    SubstanceData.TryAdd(Convert.ToString(sub[0]), food);
                }
            }
        }
Пример #29
0
        /// <summary>
        /// Ends the game when it is finished
        /// </summary>
        public static void EndGame()
        {
            // Send all players that are still in the game to the loby
            ResetAllPlayers();
            SendAllPlayersToRoom(ColourManager.GameLobby);

            // Null all teams
            Teams["red"]    = null;
            Teams["blue"]   = null;
            Teams["yellow"] = null;
            Teams["pink"]   = null;

            // NU LTHE WINNING TEAM YING U FORGOT THIS U BTEC C**T
            WinningTeam = null;

            // Remove them from dictionary
            Teams.Clear();

            // Recreate teams etc
            Initialize();

            using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.RunFastQuery("UPDATE rp_stats SET last_cw_team = '" + String.Empty + "' WHERE last_cw_team != '" + String.Empty + "'");
            }
        }
Пример #30
0
 /// <summary>
 /// Disables this instance.
 /// </summary>
 internal void Disable()
 {
     Enabled = false;
     using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
         queryReactor.RunFastQuery(string.Format("UPDATE items_moodlight SET enabled = '0' WHERE item_id = {0}",
                                                 ItemId));
 }