using System; using System.Threading; using Chop.Database; //using Chop.Game.Moderation; using Chop.Game.Catalogue; using Chop.Game.User; using System.Data; using Chop.Rooms; using Chop.Game.Rooms; using Chop.Game.Misc; namespace Chop { public static class Core { public delegate void CommonDelegate(); private static GameSocket Socket; public static ClientManager ClientManager; public static DatabaseManager DatabaseManager; public static HabboManager HabboManager; public static NavigatorManager NavigatorManager; public static RoomManager RoomManager; public static RoomTemplateManager RoomTemplateManager; //public static CryForHelpManager CryForHelpManager; public static RankManager RankManager; public static BobbaFilter BobbaFilter; public static CatalogueManager CatalogueManager; public static FileReader Config; public static FileReader DebugLog; public static bool ClientIsFlash; public static int ClientRevision; public static void Main(string[] args) { Console.WriteLine("PROJECT CHOP BY AWA"); Console.WriteLine(""); Console.WriteLine("Emulator starting!"); Console.WriteLine(""); try { #region Config Console.Write("Starting Config..."); Config = new FileReader(Environment.CurrentDirectory + "\\config.ini"); int Port = Config.GetInt("socket.port"); int MaxConnections = Config.GetInt("socket.maxconnections"); //ClientIsFlash = Config.GetBoolean("game.client.flash"); //ClientRevision = Config.GetInt("game.client.release"); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Debug log Console.Write("Starting DebugLog..."); DebugLog = new FileReader(Environment.CurrentDirectory + "\\debug.txt"); DebugLog.AddValue("startlog", DateTime.Now.ToString()); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Socket Console.Write("Starting GameSocket..."); Socket = new GameSocket(Port); Socket.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Client manager Console.Write("Starting ClientManager..."); ClientManager = new ClientManager(); ClientManager.Init(MaxConnections); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region MySQL Console.Write("Starting MySQL connection..."); DatabaseManager = new DatabaseManager(Config.GetString("database.host"), (uint)Config.GetInt("database.port"), Config.GetString("database.username"), Config.GetString("database.password"), Config.GetString("database.name"), 0, 30); try { DatabaseManager.GetClient(); } catch { Console.WriteLine("failed! (check your connection details)"); Shutdown(); } Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Habbo manager Console.Write("Starting HabboManager..."); HabboManager = new HabboManager(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Navigator manager Console.Write("Starting NavigatorManager..."); NavigatorManager = new NavigatorManager(); NavigatorManager.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Room manager Console.Write("Starting RoomManager..."); RoomManager = new RoomManager(); RoomManager.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Room template manager Console.Write("Starting RoomTemplateManager..."); RoomTemplateManager = new RoomTemplateManager(); RoomTemplateManager.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion //#region Cry for help manager //Console.Write("Starting CryForHelpManager..."); //CryForHelpManager = new CryForHelpManager(); //CryForHelpManager.Init(); //Console.WriteLine("complete!"); //Console.WriteLine(""); //#endregion #region Rank manager Console.Write("Starting RankManager..."); RankManager = new RankManager(); RankManager.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Catalogue manager Console.Write("Starting CatalogueManager..."); CatalogueManager = new CatalogueManager(); CatalogueManager.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion #region Filter Console.Write("Starting BobbaFilter..."); BobbaFilter = new BobbaFilter(); BobbaFilter.Init(); Console.WriteLine("complete!"); Console.WriteLine(""); #endregion //#region Messages //GameClient.mRequestHandlers = new GameClient.requestHandler[GameClient.MESSAGEID_MAX + 1]; //#endregion //Convert(); //ConvertDB(); } catch (Exception x) { Console.WriteLine("failed! (" + x + ")"); Shutdown(); } Console.WriteLine("Emulator ready!"); var t = new Thread(Run) {Priority = ThreadPriority.Lowest}; t.Start(); } private static void Shutdown() { Console.Write("Emulator is shutting down..."); if (ClientManager != null) ClientManager.Destroy(); Console.WriteLine("complete!"); Console.WriteLine("Press any key to exit."); Console.ReadKey(true); Environment.Exit(2); } private static void Run() { while (true) { Thread.Sleep(60000); // Just keep it running } } public static void Convert() { using (DatabaseClient dbClient = DatabaseManager.GetClient()) { DataTable table = dbClient.ReadDataTable("SELECT * FROM rooms2"); foreach (DataRow row in table.Rows) { dbClient.AddParamWithValue("id", row["id"]); dbClient.AddParamWithValue("name", row["name"]); dbClient.AddParamWithValue("description", row["description"]); dbClient.AddParamWithValue("password", ""); dbClient.AddParamWithValue("owner", ""); //dbClient.AddParamWithValue("state", 0); dbClient.AddParamWithValue("category", 3); dbClient.AddParamWithValue("floorid", row["floor"]); dbClient.AddParamWithValue("wallid", row["wallpaper"]); dbClient.AddParamWithValue("model", row["model"]); dbClient.AddParamWithValue("allrights", row["superusers"]); dbClient.AddParamWithValue("casts", row["ccts"]); dbClient.AddParamWithValue("minrank", 1); dbClient.AddParamWithValue("maxvisitors", row["visitors_max"]); dbClient.ExecuteQuery("INSERT INTO rooms(id,name,description,password,owner,category,floorid,wallid,model,allrights,casts,minrank,maxvisitors) VALUES(@id,@name,@description,@password,@owner,@category,@floorid,@wallid,@model,@allrights,@casts,@minrank,@maxvisitors)"); } } } /* private static void ConvertDB() { using (DatabaseClient dbClient = (DatabaseManager.GetClient())) { dbClient.ExecuteQuery("ALTER TABLE catalogue_pages ADD orderid TINYINT(3)"); dbClient.ExecuteQuery(@"DROP TABLE IF EXISTS `catalogue_products`; CREATE TABLE `catalogue_products` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `description` varchar(100) NOT NULL, `pageid` tinyint(3) NOT NULL, `templateid` int(10) NOT NULL, `cost` int(5) NOT NULL, `deal` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1900 DEFAULT CHARSET=latin1;"); dbClient.ExecuteQuery(@"DROP TABLE IF EXISTS `furniture_templates`; CREATE TABLE `furniture_templates` ( `id` int(10) NOT NULL AUTO_INCREMENT, `type` varchar(15) COLLATE latin1_general_ci NOT NULL DEFAULT '', `typeid` int(1) NOT NULL DEFAULT '0', `length` int(2) NOT NULL DEFAULT '0', `width` int(2) NOT NULL DEFAULT '0', `top` double(4,2) NOT NULL DEFAULT '0.00', `sprite` varchar(110) COLLATE latin1_general_ci NOT NULL DEFAULT '', `colour` varchar(100) COLLATE latin1_general_ci NOT NULL DEFAULT '', `tradeable` enum('0','1') COLLATE latin1_general_ci NOT NULL DEFAULT '0', `recycleable` enum('0','1') COLLATE latin1_general_ci NOT NULL DEFAULT '0', `door` enum('0','1') COLLATE latin1_general_ci NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `typeid` (`typeid`) ) ENGINE=MyISAM AUTO_INCREMENT=1899 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;"); int i = 0; foreach (DataRow row in dbClient.ReadDataTable("SELECT * FROM catalogue_items").Rows) { i++; dbClient.AddParamWithValue("name", row["catalogue_name"]); dbClient.AddParamWithValue("desc", row["catalogue_description"]); dbClient.AddParamWithValue("pageid", row["catalogue_id_page"]); dbClient.AddParamWithValue("cost", row["catalogue_cost"]); dbClient.AddParamWithValue("tid", i); dbClient.AddParamWithValue("typeid", row["typeid"]); dbClient.AddParamWithValue("length", row["length"]); dbClient.AddParamWithValue("width", row["width"]); dbClient.AddParamWithValue("top", row["top"]); dbClient.AddParamWithValue("sprite", row["name_cct"]); dbClient.AddParamWithValue("colour", row["colour"]); dbClient.AddParamWithValue("tradeable", row["tradeable"]); dbClient.AddParamWithValue("recycleable", row["recycleable"]); dbClient.AddParamWithValue("door", row["door"]); dbClient.ExecuteQuery("INSERT INTO catalogue_products(name,description,pageid,templateid,cost) VALUES(@name,@desc,@pageid,@tid,@cost);"); dbClient.ExecuteQuery("INSERT INTO furniture_templates(id,typeid,length,width,top,sprite,colour,tradeable,recycleable,door) VALUES(@tid,@typeid,@length,@width,@top,@sprite,@colour,@tradeable,@recycleable,@door);"); dbClient.clearParams(); } Console.WriteLine("Converted " + i + "!"); } } */ } }