コード例 #1
0
ファイル: PetRaceManager.cs プロジェクト: Clawed/ProjectHub
        public void Init()
        {
            if (Races.Count > 0)
            {
                Races.Clear();
            }

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT * FROM `catalog_pet_races`");
                DataTable DataTable = DbClient.getTable();

                if (DataTable != null)
                {
                    foreach (DataRow DataRow in DataTable.Rows)
                    {
                        PetRace Race = new PetRace(Convert.ToInt32(DataRow["raceid"]), Convert.ToInt32(DataRow["color1"]), Convert.ToInt32(DataRow["color2"]), (Convert.ToString(DataRow["has1color"]) == "1"), (Convert.ToString(DataRow["has2color"]) == "1"));
                        if (!Races.Contains(Race))
                        {
                            Races.Add(Race);
                        }
                    }
                }
            }
        }
コード例 #2
0
        public WordFilterManager()
        {
            FilteredWords = new List <WordFilter>();

            if (FilteredWords.Count > 0)
            {
                FilteredWords.Clear();
            }

            DataTable Data = null;

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT * FROM `" + ProjectHub.DbPrefix + "wordfilter`");
                Data = DbClient.getTable();

                if (Data != null)
                {
                    foreach (DataRow Row in Data.Rows)
                    {
                        FilteredWords.Add(new WordFilter(Convert.ToString(Row["word"]), ProjectHub.GetSettingsData().Data["wordfilter.replacement"], ProjectHub.EnumToBool(Row["strict"].ToString()), ProjectHub.EnumToBool(Row["bannable"].ToString())));
                    }
                }
            }
        }
コード例 #3
0
        public ClothingManager()
        {
            Clothing = new Dictionary <int, ClothingItem>();

            if (Clothing.Count > 0)
            {
                Clothing.Clear();
            }

            DataTable GetClothing = null;

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT `id`,`clothing_name`,`clothing_parts` FROM `" + ProjectHub.DbPrefix + "catalog_clothing`");
                GetClothing = DbClient.getTable();
            }

            if (GetClothing != null)
            {
                foreach (DataRow DataRow in GetClothing.Rows)
                {
                    Clothing.Add(Convert.ToInt32(DataRow["id"]), new ClothingItem(Convert.ToInt32(DataRow["id"]), Convert.ToString(DataRow["clothing_name"]), Convert.ToString(DataRow["clothing_parts"])));
                }
            }
        }
コード例 #4
0
        public int AvgPriceForSprite(int SpriteID)
        {
            int Num  = 0;
            int Num2 = 0;

            if (MarketAverages.ContainsKey(SpriteID) && MarketCounts.ContainsKey(SpriteID))
            {
                if (MarketCounts[SpriteID] > 0)
                {
                    return(MarketAverages[SpriteID] / MarketCounts[SpriteID]);
                }

                return(0);
            }

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT `avgprice` FROM `" + ProjectHub.DbPrefix + "catalog_marketplace_data` WHERE `sprite` = '" + SpriteID + "' LIMIT 1");
                Num = DbClient.getInteger();

                DbClient.SetQuery("SELECT `sold` FROM `" + ProjectHub.DbPrefix + "catalog_marketplace_data` WHERE `sprite` = '" + SpriteID + "' LIMIT 1");
                Num2 = DbClient.getInteger();
            }

            MarketAverages.Add(SpriteID, Num);
            MarketCounts.Add(SpriteID, Num2);

            if (Num2 > 0)
            {
                return(Convert.ToInt32(Math.Ceiling((double)(Num / Num2))));
            }

            return(0);
        }
コード例 #5
0
ファイル: GameClient.cs プロジェクト: Clawed/ProjectHub
        public void Disconnect()
        {
            try
            {
                if (GetHabbo() != null)
                {
                    using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
                    {
                        DbClient.RunQuery(GetHabbo().GetQueryString);
                    }

                    GetHabbo().OnDisconnect();
                }
            }
            catch (Exception Error)
            {
                Logging.LogError(Error.ToString());
            }


            if (!Disconnected)
            {
                if (Connection != null)
                {
                    Connection.Dispose();
                }

                Disconnected = true;
            }
        }
コード例 #6
0
        public void Dispose()
        {
            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.RunQuery("UPDATE `server_status` SET `users_online` = '0', `rooms_loaded` = '0'");
            }

            Timer.Dispose();
            GC.SuppressFinalize(this);
        }
コード例 #7
0
        public void CloseAll()
        {
            foreach (GameClient Client in GetClients.ToList())
            {
                if (Client == null)
                {
                    continue;
                }

                if (Client.GetHabbo() != null)
                {
                    try
                    {
                        using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
                        {
                            DbClient.RunQuery(Client.GetHabbo().GetQueryString);
                        }

                        Console.Clear();
                    }
                    catch
                    {
                    }
                }
            }

            try
            {
                foreach (GameClient Client in GetClients.ToList())
                {
                    if (Client == null || Client.GetConnection() == null)
                    {
                        continue;
                    }

                    try
                    {
                        Client.GetConnection().Dispose();
                    }
                    catch { }

                    Console.Clear();
                }
            }
            catch (Exception e)
            {
                Logging.LogError(e.ToString());
            }

            if (Clients.Count > 0)
            {
                Clients.Clear();
            }
        }
コード例 #8
0
 public Logger(string Type, string Command, string Extra, int UserId = 0)
 {
     using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
     {
         DbClient.SetQuery("INSERT INTO " + ProjectHub.DbPrefix + "logs VALUES (NULL, @type, @command, @extra, @user_id, UNIX_TIMESTAMP());");
         DbClient.AddParameter("type", Type);
         DbClient.AddParameter("command", Command);
         DbClient.AddParameter("extra", Extra);
         DbClient.AddParameter("user_id", UserId);
         DbClient.RunQuery();
     }
 }
コード例 #9
0
        private void UpdateServerStatus()
        {
            TimeSpan Uptime = DateTime.Now - ProjectHub.ServerStarted;

            int UsersOnline = 0;
            int RoomCount   = 0;

            Console.Title = ProjectHub.PrettyVersion + ", " + UsersOnline + " users online, " + RoomCount + " rooms loaded, " + Uptime.Days + " day(s) " + Uptime.Hours + " hour(s) " + Uptime.Minutes + " minute(s) uptime";

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("UPDATE `server_status` SET `users_online` = @users, `rooms_loaded` = @rooms LIMIT 1;");
                DbClient.AddParameter("users", UsersOnline);
                DbClient.AddParameter("rooms", RoomCount);
                DbClient.RunQuery();
            }
        }
コード例 #10
0
        public void DoAdvertisingReport(GameClient Reporter, GameClient Target)
        {
            if (Reporter == null || Target == null || Reporter.GetHabbo() == null || Target.GetHabbo() == null)
            {
                return;
            }

            StringBuilder Builder = new StringBuilder();

            Builder.Append("New report submitted!\r\r");
            Builder.Append("Reporter: " + Reporter.GetHabbo().Username + "\r");
            Builder.Append("Reported User: "******"\r\r");
            Builder.Append(Target.GetHabbo().Username + "s last 10 messages:\r\r");

            DataTable GetLogs = null;

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT `message` FROM `" + ProjectHub.DbPrefix + "chatlogs` WHERE `user_id` = '" + Target.GetHabbo().Id + "' ORDER BY `id` DESC LIMIT 10");
                GetLogs = DbClient.getTable();

                if (GetLogs != null)
                {
                    int Number = 11;
                    foreach (DataRow Log in GetLogs.Rows)
                    {
                        Number -= 1;
                        Builder.Append(Number + ": " + Convert.ToString(Log["message"]) + "\r");
                    }
                }
            }

            foreach (GameClient Client in GetClients.ToList())
            {
                if (Client == null || Client.GetHabbo() == null)
                {
                    continue;
                }

                if (Client.GetHabbo().GetPermissions().HasRight("mod_tool") && !Client.GetHabbo().GetPermissions().HasRight("staff_ignore_advertisement_reports"))
                {
                    Client.SendMessage(new MOTDNotificationComposer(Builder.ToString()));
                }
            }
        }
コード例 #11
0
ファイル: PetUtility.cs プロジェクト: Clawed/ProjectHub
        public static Pet CreatePet(int UserId, string Name, int Type, string Race, string Color)
        {
            Pet Pet = new Pet(0, UserId, 0, Name, Type, Race, Color, 0, 100, 100, 0, ProjectHub.GetUnixTimestamp(), 0, 0, 0.0, 0, 0, 0, -1, "-1");

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("INSERT INTO " + ProjectHub.DbPrefix + "bots (user_id,name, ai_type) VALUES (" + Pet.OwnerId + ",@" + Pet.PetId + "name, 'pet')");
                DbClient.AddParameter(Pet.PetId + "name", Pet.Name);
                Pet.PetId = Convert.ToInt32(DbClient.InsertQuery());

                DbClient.SetQuery("INSERT INTO " + ProjectHub.DbPrefix + "bots_petdata (id,type,race,color,experience,energy,createstamp) VALUES (" + Pet.PetId + ", " + Pet.Type + ",@" + Pet.PetId + "race,@" + Pet.PetId + "color,0,100,UNIX_TIMESTAMP())");
                DbClient.AddParameter(Pet.PetId + "race", Pet.Race);
                DbClient.AddParameter(Pet.PetId + "color", Pet.Color);
                DbClient.RunQuery();
            }

            return(Pet);
        }
コード例 #12
0
ファイル: CacheManager.cs プロジェクト: Clawed/ProjectHub
        public UserCache GenerateUser(int Id)
        {
            UserCache User = null;

            if (UsersCached.ContainsKey(Id))
            {
                if (TryGetUser(Id, out User))
                {
                    return(User);
                }
            }

            GameClient Client = ProjectHub.GetGame().GetClientManager().GetClientByUserID(Id);

            if (Client != null)
            {
                if (Client.GetHabbo() != null)
                {
                    User = new UserCache(Id, Client.GetHabbo().Username, Client.GetHabbo().Motto, Client.GetHabbo().Look);
                    UsersCached.TryAdd(Id, User);

                    return(User);
                }
            }

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT `username`, `motto`, `look` FROM " + ProjectHub.DbPrefix + "users WHERE id = @id LIMIT 1");
                DbClient.AddParameter("id", Id);

                DataRow DataRow = DbClient.getRow();

                if (DataRow != null)
                {
                    User = new UserCache(Id, DataRow["username"].ToString(), DataRow["motto"].ToString(), DataRow["look"].ToString());
                    UsersCached.TryAdd(Id, User);
                }

                DataRow = null;
            }

            return(User);
        }
コード例 #13
0
        public TextsData()
        {
            Data = new Dictionary <string, string>();
            Data.Clear();

            using (IQueryAdapter dbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `" + ProjectHub.DbPrefix + "texts`");
                DataTable ConfigData = dbClient.getTable();

                if (ConfigData != null)
                {
                    foreach (DataRow Data2 in ConfigData.Rows)
                    {
                        Data.Add(Data2[1].ToString(), Data2[2].ToString());
                    }
                }
            }
            return;
        }
コード例 #14
0
        public string GetNameById(int Id)
        {
            GameClient Client = GetClientByUserID(Id);

            if (Client != null)
            {
                return(Client.GetHabbo().Username);
            }

            string Username;

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT username FROM " + ProjectHub.DbPrefix + "users WHERE id = @id LIMIT 1");
                DbClient.AddParameter("id", Id);
                Username = DbClient.getString();
            }

            return(Username);
        }
コード例 #15
0
ファイル: BadgeManager.cs プロジェクト: Clawed/ProjectHub
        public BadgeManager()
        {
            Badges = new Dictionary <string, BadgeDefinition>();

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT * FROM `" + ProjectHub.DbPrefix + "badge_definitions`;");
                DataTable GetBadges = DbClient.getTable();

                foreach (DataRow Row in GetBadges.Rows)
                {
                    string BadgeCode = Convert.ToString(Row["code"]).ToUpper();

                    if (!Badges.ContainsKey(BadgeCode))
                    {
                        Badges.Add(BadgeCode, new BadgeDefinition(BadgeCode, Convert.ToString(Row["required_right"])));
                    }
                }
            }
        }
コード例 #16
0
ファイル: BotUtility.cs プロジェクト: Clawed/ProjectHub
        public static Bot CreateBot(ItemData Data, int OwnerId)
        {
            DataRow    BotData = null;
            CatalogBot CataBot = null;

            if (!ProjectHub.GetGame().GetCatalog().TryGetBot(Data.Id, out CataBot))
            {
                return(null);
            }

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("INSERT INTO " + ProjectHub.DbPrefix + "bots (`user_id`,`name`,`motto`,`look`,`gender`,`ai_type`) VALUES ('" + OwnerId + "', '" + CataBot.Name + "', '" + CataBot.Motto + "', '" + CataBot.Figure + "', '" + CataBot.Gender + "', '" + CataBot.AIType + "')");
                int Id = Convert.ToInt32(DbClient.InsertQuery());

                DbClient.SetQuery("SELECT `id`,`user_id`,`name`,`motto`,`look`,`gender` FROM `" + ProjectHub.DbPrefix + "bots` WHERE `user_id` = '" + OwnerId + "' AND `id` = '" + Id + "' LIMIT 1");
                BotData = DbClient.getRow();
            }

            return(new Bot(Convert.ToInt32(BotData["id"]), Convert.ToInt32(BotData["user_id"]), Convert.ToString(BotData["name"]), Convert.ToString(BotData["motto"]), Convert.ToString(BotData["look"]), Convert.ToString(BotData["gender"])));
        }
コード例 #17
0
ファイル: BotManager.cs プロジェクト: Clawed/ProjectHub
        public void Init()
        {
            if (Responses.Count > 0)
            {
                Responses.Clear();
            }

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT `bot_ai`,`chat_keywords`,`response_text`,`response_mode`,`response_beverage` FROM `" + ProjectHub.DbPrefix + "bots_responses`");
                DataTable BotResponses = DbClient.getTable();

                if (BotResponses != null)
                {
                    foreach (DataRow Response in BotResponses.Rows)
                    {
                        Responses.Add(new BotResponse(Convert.ToString(Response["bot_ai"]), Convert.ToString(Response["chat_keywords"]), Convert.ToString(Response["response_text"]), Response["response_mode"].ToString(), Convert.ToString(Response["response_beverage"])));
                    }
                }
            }
        }
コード例 #18
0
        public static void GetAchievementLevels(out Dictionary <string, Achievement> Achievements)
        {
            Achievements = new Dictionary <string, Achievement>();

            using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
            {
                DbClient.SetQuery("SELECT `id`,`category`,`group_name`,`level`,`reward_pixels`,`reward_points`,`progress_needed`,`game_id` FROM `" + ProjectHub.DbPrefix + "achievements`");
                DataTable DataTable = DbClient.getTable();

                if (DataTable != null)
                {
                    foreach (DataRow DataRow in DataTable.Rows)
                    {
                        int              Id               = Convert.ToInt32(DataRow["id"]);
                        string           Category         = Convert.ToString(DataRow["category"]);
                        string           GroupName        = Convert.ToString(DataRow["group_name"]);
                        int              Level            = Convert.ToInt32(DataRow["level"]);
                        int              RewardPixels     = Convert.ToInt32(DataRow["reward_pixels"]);
                        int              RewardPoints     = Convert.ToInt32(DataRow["reward_points"]);
                        int              ProgressNeeded   = Convert.ToInt32(DataRow["progress_needed"]);
                        AchievementLevel AchievementLevel = new AchievementLevel(Level, RewardPixels, RewardPoints, ProgressNeeded);

                        if (!Achievements.ContainsKey(GroupName))
                        {
                            Achievement Achievement = new Achievement(Id, GroupName, Category, Convert.ToInt32(DataRow["game_id"]));
                            Achievement.AddLevel(AchievementLevel);
                            Achievements.Add(GroupName, Achievement);
                        }
                        else
                        {
                            Achievements[GroupName].AddLevel(AchievementLevel);
                        }
                    }
                }
            }
        }
コード例 #19
0
        public bool ProgressAchievement(GameClient Session, string AchievementGroup, int ProgressAmount, bool FromZero = false)
        {
            if (!Achievements.ContainsKey(AchievementGroup) || Session == null)
            {
                return(false);
            }

            Achievement AchievementData = null;

            AchievementData = Achievements[AchievementGroup];
            UserAchievement UserData = Session.GetHabbo().GetAchievementData(AchievementGroup);

            if (UserData == null)
            {
                UserData = new UserAchievement(AchievementGroup, 0, 0);
                Session.GetHabbo().Achievements.TryAdd(AchievementGroup, UserData);
            }

            int TotalLevels = AchievementData.Levels.Count;

            if (UserData != null && UserData.Level == TotalLevels)
            {
                return(false);
            }

            int TargetLevel = (UserData != null ? UserData.Level + 1 : 1);

            if (TargetLevel > TotalLevels)
            {
                TargetLevel = TotalLevels;
            }

            AchievementLevel TargetLevelData = AchievementData.Levels[TargetLevel];
            int NewProgress = 0;

            if (FromZero)
            {
                NewProgress = ProgressAmount;
            }
            else
            {
                NewProgress = (UserData != null ? UserData.Progress + ProgressAmount : ProgressAmount);
            }

            int NewLevel  = (UserData != null ? UserData.Level : 0);
            int NewTarget = NewLevel + 1;

            if (NewTarget > TotalLevels)
            {
                NewTarget = TotalLevels;
            }

            if (NewProgress >= TargetLevelData.Requirement)
            {
                NewLevel++;
                NewTarget++;
                int ProgressRemainder = NewProgress - TargetLevelData.Requirement;
                NewProgress = 0;

                if (TargetLevel == 1)
                {
                    Session.GetHabbo().GetBadgeComponent().GiveBadge(AchievementGroup + TargetLevel, true, Session);
                }
                else
                {
                    Session.GetHabbo().GetBadgeComponent().RemoveBadge(Convert.ToString(AchievementGroup + (TargetLevel - 1)));
                    Session.GetHabbo().GetBadgeComponent().GiveBadge(AchievementGroup + TargetLevel, true, Session);
                }

                if (NewTarget > TotalLevels)
                {
                    NewTarget = TotalLevels;
                }

                Session.SendMessage(new AchievementUnlockedComposer(AchievementData, TargetLevel, TargetLevelData.RewardPoints, TargetLevelData.RewardPixels));
                Session.GetHabbo().GetMessenger().BroadcastAchievement(Session.GetHabbo().Id, Users.Messenger.MessengerEventTypes.ACHIEVEMENT_UNLOCKED, AchievementGroup + TargetLevel);

                using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
                {
                    DbClient.SetQuery("REPLACE INTO `" + ProjectHub.DbPrefix + "user_achievements` VALUES ('" + Session.GetHabbo().Id + "', @group, '" + NewLevel + "', '" + NewProgress + "')");
                    DbClient.AddParameter("group", AchievementGroup);
                    DbClient.RunQuery();
                }

                UserData.Level    = NewLevel;
                UserData.Progress = NewProgress;
                Session.GetHabbo().Duckets += TargetLevelData.RewardPixels;
                Session.GetHabbo().GetStats().AchievementPoints += TargetLevelData.RewardPoints;
                Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, TargetLevelData.RewardPixels));
                Session.SendMessage(new AchievementScoreComposer(Session.GetHabbo().GetStats().AchievementPoints));
                AchievementLevel NewLevelData = AchievementData.Levels[NewTarget];
                Session.SendMessage(new AchievementProgressedComposer(AchievementData, NewTarget, NewLevelData, TotalLevels, Session.GetHabbo().GetAchievementData(AchievementGroup)));

                return(true);
            }
            else
            {
                UserData.Level    = NewLevel;
                UserData.Progress = NewProgress;

                using (IQueryAdapter DbClient = ProjectHub.GetDatabaseManager().GetQueryReactor())
                {
                    DbClient.SetQuery("REPLACE INTO `" + ProjectHub.DbPrefix + "user_achievements` VALUES ('" + Session.GetHabbo().Id + "', @group, '" + NewLevel + "', '" + NewProgress + "')");
                    DbClient.AddParameter("group", AchievementGroup);
                    DbClient.RunQuery();
                }

                Session.SendMessage(new AchievementProgressedComposer(AchievementData, TargetLevel, TargetLevelData, TotalLevels, Session.GetHabbo().GetAchievementData(AchievementGroup)));
            }

            return(false);
        }