/// <summary> /// Loads the items. /// </summary> /// <param name="dbClient">The database client.</param> internal void LoadItems(IQueryAdapter dbClient) { Items = new Dictionary <uint, Item>(); Items.Clear(); GiftWrappers.Clear(); dbClient.SetQuery("SELECT * FROM catalog_furnis"); var table = dbClient.GetTable(); if (table == null) { return; } List <double> heights = null; foreach (DataRow dataRow in table.Rows) { try { var id = Convert.ToUInt32(dataRow["id"]); var type = Convert.ToChar(dataRow["type"]); var name = Convert.ToString(dataRow["item_name"]); var flatId = Convert.ToInt32(dataRow["flat_id"]); var stackHeightStr = dataRow["stack_height"].ToString(); double stackHeight; uint modes; uint.TryParse(dataRow["interaction_modes_count"].ToString(), out modes); var vendingIds = (string)dataRow["vending_ids"]; string variableheights = Convert.ToString(dataRow["variable_heights"]); var sub = Plus.EnumToBool(dataRow["subscriber"].ToString()); var effect = (int)dataRow["effectid"]; var stackable = Convert.ToInt32(dataRow["can_stack"]) == 1; var allowRecycle = Convert.ToInt32(dataRow["allow_recycle"]) == 1; var allowTrade = Convert.ToInt32(dataRow["allow_trade"]) == 1; var allowMarketplaceSell = Convert.ToInt32(dataRow["allow_marketplace_sell"]) == 1; var allowGift = Convert.ToInt32(dataRow["allow_gift"]) == 1; var allowInventoryStack = Convert.ToInt32(dataRow["allow_inventory_stack"]) == 1; var typeFromString = InteractionTypes.GetTypeFromString((string)dataRow["interaction_type"]); var sprite = Convert.ToInt32(dataRow["sprite_id"]); int x = Convert.ToInt32(dataRow["width"]), y = Convert.ToInt32(dataRow["length"]); var publicName = Convert.ToString(dataRow["item_name"]); bool canWalk = Convert.ToInt32(dataRow["is_walkable"]) == 1, canSit = Convert.ToInt32(dataRow["can_sit"]) == 1, stackMultiple = Plus.EnumToBool(dataRow["stack_multiplier"].ToString()); if (name.StartsWith("external_image_wallitem_poster")) { PhotoId = id; } // Special Types of Furnis /*if (name == "landscape" || name == "floor" || name == "wallpaper") * { * sprite = FurniDataParser.WallItems[name].Id; * x = 1; * y = 1; * } * else if (type == 's' && FurniDataParser.FloorItems.ContainsKey(name)) * { * sprite = FurniDataParser.FloorItems[name].Id; * publicName = FurniDataParser.FloorItems[name].Name; * x = FurniDataParser.FloorItems[name].X; * y = FurniDataParser.FloorItems[name].Y; * canWalk = FurniDataParser.FloorItems[name].CanWalk; * canSit = FurniDataParser.FloorItems[name].CanSit; * } * else if (type == 'i' && FurniDataParser.WallItems.ContainsKey(name)) * { * sprite = FurniDataParser.WallItems[name].Id; * publicName = FurniDataParser.WallItems[name].Name; * } * else if (name.StartsWith("a0 pet", StringComparison.InvariantCulture)) * { * x = 1; * y = 1; * publicName = name; * } * else if (type != 'e' && type != 'h' && type != 'r' && type != 'b') continue;*/ if (name.StartsWith("present_gen")) { GiftWrappers.AddOld((short)sprite); } else if (name.StartsWith("present_wrap*")) { GiftWrappers.Add((short)sprite); } // Stack Height Values if (stackHeightStr.Contains(';')) { var heightsStr = stackHeightStr.Split(';'); heights = heightsStr.Select(heightStr => double.Parse(heightStr, CultureInfo.InvariantCulture)) .ToList(); stackHeight = heights[0]; stackMultiple = true; } else { stackHeight = double.Parse(stackHeightStr, CultureInfo.InvariantCulture); } // If Can Walk if (InteractionTypes.AreFamiliar(GlobalInteractions.Gate, typeFromString) || typeFromString == Interaction.BanzaiPyramid || name.StartsWith("hole")) { canWalk = false; } // Add Item var value = new Item(id, (int)sprite, publicName, name, type, x, y, stackHeight, stackable, canWalk, canSit, allowRecycle, allowTrade, allowMarketplaceSell, allowGift, allowInventoryStack, typeFromString, modes, vendingIds, sub, effect, stackMultiple, (heights == null ? null : heights.ToArray()), flatId, variableheights); Items.Add(id, value); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.ReadKey(); Out.WriteLine( string.Format("Could not load item #{0}, please verify the data is okay.", Convert.ToUInt32(dataRow[0])), "Plus.Items", ConsoleColor.DarkRed); } } }
internal static void Initialize() { Console.Clear(); CyberEnvironment.ServerStarted = DateTime.Now; Console.SetWindowSize(120, 40); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(); Console.WriteLine(@" ____ _ _ ___ ____ ____ ____ _ _ _ _ _ ____ ___ ____ ____ "); Console.WriteLine(@" | \_/ |__] |___ |__/ |___ |\/| | | | |__| | | | |__/ "); Console.WriteLine(@" |___ | |__] |___ | \ |___ | | |__| |___ | | | |__| | \ "); Console.WriteLine(); Console.WriteLine(" Cyber Emulator - Version: " + PrettyBuild); Console.WriteLine(" based on Plus, developed by Kessiler Rodrigues."); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" " + PrettyRelease); Console.Title = "Cyber Emulator | Loading data [...]"; CyberEnvironment.DefaultEncoding = Encoding.Default; Console.WriteLine(""); CyberEnvironment.cultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); TextHandling.replaceDecimal(); try { CyberEnvironment.Configuration = new ConfigurationData(Path.Combine(Application.StartupPath, "config.ini"), false); MySqlConnectionStringBuilder mySqlConnectionStringBuilder = new MySqlConnectionStringBuilder(); mySqlConnectionStringBuilder.Server = (CyberEnvironment.GetConfig().data["db.hostname"]); mySqlConnectionStringBuilder.Port = (uint.Parse(CyberEnvironment.GetConfig().data["db.port"])); mySqlConnectionStringBuilder.UserID = (CyberEnvironment.GetConfig().data["db.username"]); mySqlConnectionStringBuilder.Password = (CyberEnvironment.GetConfig().data["db.password"]); mySqlConnectionStringBuilder.Database = (CyberEnvironment.GetConfig().data["db.name"]); mySqlConnectionStringBuilder.MinimumPoolSize = (uint.Parse(CyberEnvironment.GetConfig().data["db.pool.minsize"])); mySqlConnectionStringBuilder.MaximumPoolSize = (uint.Parse(CyberEnvironment.GetConfig().data["db.pool.maxsize"])); mySqlConnectionStringBuilder.Pooling = (true); mySqlConnectionStringBuilder.AllowZeroDateTime = (true); mySqlConnectionStringBuilder.ConvertZeroDateTime = (true); mySqlConnectionStringBuilder.DefaultCommandTimeout = (300u); mySqlConnectionStringBuilder.ConnectionTimeout = (10u); CyberEnvironment.manager = new DatabaseManager(mySqlConnectionStringBuilder.ToString()); using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { ConfigData = new ConfigData(queryreactor); PetLocale.Init(queryreactor); OfflineMessages = new Dictionary <uint, List <OfflineMessage> >(); OfflineMessage.InitOfflineMessages(queryreactor); GiftWrappers = new GiftWrappers(queryreactor); } FriendRequestLimit = (uint)int.Parse(CyberEnvironment.GetConfig().data["client.maxrequests"]); if (ExtraSettings.RunExtraSettings()) { Logging.WriteLine("Loaded an extra settings file."); } Game = new Game(int.Parse(GetConfig().data["game.tcp.conlimit"])); Game.start(); ConnectionManager = new ConnectionHandling(int.Parse(GetConfig().data["game.tcp.port"]), int.Parse(GetConfig().data["game.tcp.conlimit"]), int.Parse(GetConfig().data["game.tcp.conperip"]), GetConfig().data["game.tcp.enablenagles"].ToLower() == "true"); HabboCrypto.Initialize(new RsaKeyHolder()); CyberEnvironment.ConnectionManager.init(); CyberEnvironment.ConnectionManager.Start(); StaticClientMessageHandler.Initialize(); string[] allowedIps = GetConfig().data["mus.tcp.allowedaddr"].Split(';'); MusSystem = new MusSocket(GetConfig().data["mus.tcp.bindip"], int.Parse(GetConfig().data["mus.tcp.port"]), allowedIps, 0); if (Configuration.data.ContainsKey("StaffAlert.MinRank")) { StaffAlertMinRank = uint.Parse(CyberEnvironment.GetConfig().data["StaffAlert.MinRank"]); } if (Configuration.data.ContainsKey("SeparatedTasksInMainLoops.enabled") && Configuration.data["SeparatedTasksInMainLoops.enabled"] == "true") { SeparatedTasksInMainLoops = true; } if (Configuration.data.ContainsKey("SeparatedTasksInGameClientManager.enabled") && Configuration.data["SeparatedTasksInGameClientManager.enabled"] == "true") { SeparatedTasksInGameClientManager = true; } Logging.WriteLine("Game was succesfully loaded."); isLive = true; } catch (KeyNotFoundException ex) { Logging.WriteLine("Something is missing in your configuration", ConsoleColor.Red); Logging.WriteLine(ex.ToString(), ConsoleColor.Yellow); Logging.WriteLine("Please type a key to shut down ...", ConsoleColor.Gray); Console.ReadKey(true); CyberEnvironment.Destroy(); } catch (InvalidOperationException ex1) { Logging.WriteLine("Something wrong happened: " + ex1.Message, ConsoleColor.Red); Logging.WriteLine(ex1.ToString(), ConsoleColor.Yellow); Logging.WriteLine("Please type a key to shut down...", ConsoleColor.Gray); Console.ReadKey(true); CyberEnvironment.Destroy(); } catch (Exception ex2) { Logging.WriteLine("An exception got caught: " + ex2.Message, ConsoleColor.Red); Logging.WriteLine("Type a key to know more about the error", ConsoleColor.Gray); Console.ReadKey(); Logging.WriteLine(ex2.ToString(), ConsoleColor.Yellow); Logging.WriteLine("Please type a ket to shut down...", ConsoleColor.Gray); Console.ReadKey(); Environment.Exit(1); } }