static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(onError); Console.CancelKeyPress += new ConsoleCancelEventHandler(OnClose); Log.Texte("", "-------------------- World Server ---------------------", ConsoleColor.DarkRed); // Loading all configs files ConfigMgr.LoadConfigs(); Config = ConfigMgr.GetConfig <WorldConfigs>(); // Loading log level from file if (!Log.InitLog(Config.LogLevel, "WorldServer")) { ConsoleMgr.WaitAndExit(2000); } #if DEBUG API.Server api = null; if (Config.EnableAPI) { try { api = new API.Server(Config.APIAddress, Config.APIPort, 100); } catch (Exception e) { Log.Error("API", "Unable to start API server: " + e.Message); } } #endif CharMgr.Database = DBManager.Start(Config.CharacterDatabase.Total(), Config.CharacterDatabase.ConnectionType, "Characters", Config.CharacterDatabase.Database); if (CharMgr.Database == null) { ConsoleMgr.WaitAndExit(2000); } else if (!Config.PreloadAllCharacters) { CharMgr.Database.RegisterAction(CharMgr.LoadPendingCharacters); } _timer = new Timer(AuctionHouse.CheckAuctionExpiry, null, new TimeSpan(0, 12, 0, 0), new TimeSpan(0, 24, 0, 0)); WorldMgr.Database = DBManager.Start(Config.WorldDatabase.Total(), Config.CharacterDatabase.ConnectionType, "World", Config.WorldDatabase.Database); if (WorldMgr.Database == null) { ConsoleMgr.WaitAndExit(2000); } WorldMgr.StartingPairing = WorldMgr.Database.ExecuteQueryInt("SELECT FLOOR(RAND() * 3) + 1"); WorldMgr.UpperTierBattlefrontManager = new UpperTierBattlefrontManager(); WorldMgr.UpperTierBattlefrontManager.SetInitialPairActive(); Log.Texte("Creating Upper Tier Battlefront Manager", WorldMgr.UpperTierBattlefrontManager.GetActivePairing().PairingName, ConsoleColor.Cyan); WorldMgr.LowerTierBattlefrontManager = new LowerTierBattlefrontManager(); WorldMgr.LowerTierBattlefrontManager.SetInitialPairActive(); Log.Texte("Creating Lower Tier Battlefront Manager", WorldMgr.LowerTierBattlefrontManager.GetActivePairing().PairingName, ConsoleColor.Cyan); Log.Texte("StartingPairing: ", WorldMgr.StartingPairing.ToString(), ConsoleColor.Cyan); Client = new RpcClient("WorldServer-" + Config.RealmId, Config.AccountCacherInfo.RpcLocalIp, 1); if (!Client.Start(Config.AccountCacherInfo.RpcServerIp, Config.AccountCacherInfo.RpcServerPort)) { ConsoleMgr.WaitAndExit(2000); } Rm = AcctMgr.GetRealm(Config.RealmId); if (Rm == null) { Log.Error("WorldServer", "Realm (" + Config.RealmId + ") not found"); return; } LoaderMgr.Start(); if (!TCPManager.Listen <TCPServer>(Rm.Port, "World")) { ConsoleMgr.WaitAndExit(2000); } Server = TCPManager.GetTcp <TCPServer>("World"); AcctMgr.UpdateRealm(Client.Info, Rm.RealmId); AcctMgr.UpdateRealmCharacters(Rm.RealmId, (uint)CharMgr.Database.GetObjectCount <Character>("Realm=1"), (uint)CharMgr.Database.GetObjectCount <Character>("Realm=2")); ConsoleMgr.Start(); }
static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(onError); Console.CancelKeyPress += new ConsoleCancelEventHandler(OnClose); Log.Info("", "-------------------- World Server ---------------------", ConsoleColor.DarkRed); // Default the server to DEV mode. if (args.Length == 0) { WorldMgr.ServerMode = "DEV"; } else { if (args.Length == 1) { if (args[0] == "DEV") { WorldMgr.ServerMode = "DEV"; } if (args[0] == "PRD") { WorldMgr.ServerMode = "PRD"; } } else { WorldMgr.ServerMode = "DEV"; } } Log.Info("", "SERVER running in " + WorldMgr.ServerMode + " mode", ConsoleColor.Cyan); // Loading all configs files ConfigMgr.LoadConfigs(); Config = ConfigMgr.GetConfig <WorldConfigs>(); // Loading log level from file if (!Log.InitLog(Config.LogLevel, "WorldServer")) { ConsoleMgr.WaitAndExit(2000); } #if DEBUG API.Server api = null; if (Config.EnableAPI) { try { api = new API.Server(Config.APIAddress, Config.APIPort, 100); } catch (Exception e) { Log.Error("API", "Unable to start API server: " + e.Message); } } #endif CharMgr.Database = DBManager.Start(Config.CharacterDatabase.Total(), Config.CharacterDatabase.ConnectionType, "Characters", Config.CharacterDatabase.Database); if (CharMgr.Database == null) { ConsoleMgr.WaitAndExit(2000); } else if (!Config.PreloadAllCharacters) { CharMgr.Database.RegisterAction(CharMgr.LoadPendingCharacters); } _timer = new Timer(AuctionHouse.CheckAuctionExpiry, null, new TimeSpan(0, 12, 0, 0), new TimeSpan(0, 24, 0, 0)); WorldMgr.Database = DBManager.Start(Config.WorldDatabase.Total(), Config.CharacterDatabase.ConnectionType, "World", Config.WorldDatabase.Database); if (WorldMgr.Database == null) { ConsoleMgr.WaitAndExit(2000); } WorldMgr.StartingPairing = WorldMgr.Database.ExecuteQueryInt("SELECT FLOOR(RAND() * 3) + 1"); // Ensure directory structure is correct if (!Directory.Exists("Zones")) { Log.Error("Directory Check", "Zones directory does not exist"); ConsoleMgr.WaitAndExit(2000); } if (!Directory.Exists("Scripts")) { Log.Error("Directory Check", "Scripts directory does not exist"); ConsoleMgr.WaitAndExit(2000); } if (!Directory.Exists("World")) { Log.Error("Directory Check", "World directory does not exist"); ConsoleMgr.WaitAndExit(2000); } if (!Directory.Exists("Abilities")) { Log.Error("Directory Check", "Abilities directory does not exist"); ConsoleMgr.WaitAndExit(2000); } Client = new RpcClient("WorldServer-" + Config.RealmId, Config.AccountCacherInfo.RpcLocalIp, 1); if (!Client.Start(Config.AccountCacherInfo.RpcServerIp, Config.AccountCacherInfo.RpcServerPort)) { ConsoleMgr.WaitAndExit(2000); } Rm = AcctMgr.GetRealm(Config.RealmId); if (Rm == null) { Log.Error("WorldServer", "Realm (" + Config.RealmId + ") not found"); return; } LoaderMgr.Start(); // Clean up rvr_metrics Log.Info("Battlefront Manager", "Clearing rvr_metrics", ConsoleColor.Cyan); WorldMgr.Database.ExecuteNonQuery("DELETE FROM rvr_metrics WHERE TIMESTAMP NOT BETWEEN DATE_SUB(UTC_TIMESTAMP(), INTERVAL 60 DAY) AND UTC_TIMESTAMP()"); Log.Info("Battlefront Manager", "Creating Upper Tier Campaign Manager", ConsoleColor.Cyan); if (RVRProgressionService._RVRProgressions.Count == 0) { Log.Error("RVR Progression", "NO RVR Progressions in DB"); return; } WorldMgr.UpperTierCampaignManager = new UpperTierCampaignManager(RVRProgressionService._RVRProgressions.Where(x => x.Tier == 4).ToList(), WorldMgr._Regions); Log.Info("Battlefront Manager", "Creating Lower Tier Campaign Manager", ConsoleColor.Cyan); WorldMgr.LowerTierCampaignManager = new LowerTierCampaignManager(RVRProgressionService._RVRProgressions.Where(x => x.Tier == 1).ToList(), WorldMgr._Regions); Log.Info("Battlefront Manager", "Getting Progression based upon rvr_progression.LastOpenedZone", ConsoleColor.Cyan); WorldMgr.UpperTierCampaignManager.GetActiveBattleFrontFromProgression(); WorldMgr.LowerTierCampaignManager.GetActiveBattleFrontFromProgression(); Log.Info("Battlefront Manager", "Attaching Campaigns to Regions", ConsoleColor.Cyan); // Attach Battlefronts to regions WorldMgr.AttachCampaignsToRegions(); Log.Info("Battlefront Manager", "Locking Battlefronts", ConsoleColor.Cyan); WorldMgr.UpperTierCampaignManager.LockBattleFrontsAllRegions(4); WorldMgr.LowerTierCampaignManager.LockBattleFrontsAllRegions(1); Log.Info("Battlefront Manager", "Opening Active battlefronts", ConsoleColor.Cyan); WorldMgr.UpperTierCampaignManager.OpenActiveBattlefront(); WorldMgr.LowerTierCampaignManager.OpenActiveBattlefront(); WorldMgr.UpdateRegionCaptureStatus(WorldMgr.LowerTierCampaignManager, WorldMgr.UpperTierCampaignManager); if (!TCPManager.Listen <TCPServer>(Rm.Port, "World")) { ConsoleMgr.WaitAndExit(2000); } Server = TCPManager.GetTcp <TCPServer>("World"); AcctMgr.UpdateRealm(Client.Info, Rm.RealmId); AcctMgr.UpdateRealmCharacters(Rm.RealmId, (uint)CharMgr.Database.GetObjectCount <Character>("Realm=1"), (uint)CharMgr.Database.GetObjectCount <Character>("Realm=2")); ConsoleMgr.Start(); }