Пример #1
0
        public GameServer GetHandlers()
        {
            try
            {
                GameServer server = (GameServer)GameState.ActiveState;

                if (server == null)
                {
                    return(null);
                }

                mainLog.Info("IRSE: Loaded GameServer Instance!");

                ControllerManager = server.Controllers;

                var universe = ControllerManager.Universe as Game.Server.UniverseController;

                mainLog.Info("IRSE: Waiting for Universe To Populate..");

                while (!universe.IsInitialized)
                {
                    Thread.Sleep(1000);
                    if (universe.IsInitialized)
                    {
                        break;
                    }
                }

                mainLog.Info("IRSE: Loading Handlers..");
                NetworkHandler = new NetworkHandler(ControllerManager);
                NetworkHandler.SetupNetworkHandler(server);

                PlayerHandler = new PlayerHandler(ControllerManager);
                PlayerHandler.SetupPlayerHandler(server);

                ChatHandler = new ChatHandler(ControllerManager);
                ChatHandler.SetupChatMessageHandler(NetworkHandler);

                UniverseHandler = new UniverseHandler(ControllerManager);
                UniverseHandler.SetupHandler(server);

                mainLog.Info("IRSE: Loaded Universe!");

                return(server);
            }
            catch (ArgumentException ex)
            {
                mainLog.Error("Failed to get handlers [Argument Exception] \r\n Exception:" + ex.ToString());
                return(null);
            }
            catch (Exception ex)
            {
                mainLog.Error("Failed to get handlers \r\n Exception: " + ex.ToString());
                return(null);
            }
        }
 public NetworkHandler(Game.Server.ControllerManager controllerManager)
 {
     try
     {
         mainLog = NLog.LogManager.GetCurrentClassLogger();
         mainLog.Info("IRSE: Loading NetworkHandler...");
     }
     catch (Exception ex)
     {
         mainLog.Error(ex.ToString());
     }
 }
Пример #3
0
        internal void Hook()
        {
            m_launchedTime = DateTime.Now;
            try
            {
                Program.SetTitle(true);

                m_handlerManager = new HandlerManager(m_assembly, m_frameworkAssembly);

                WaitForHandlers();

                Game.Server.ControllerManager controllerManager = m_handlerManager.ControllerManager;

                // Intercept events to copy and invoke
                EventManager.Instance.Intercept(controllerManager);

                // command loader
                mainLog.Info("IRSE: Loading Game Console Commands..");
                // soon

                ConsoleCommandManager.InitCommands(controllerManager);



                // start gamelogic coroutine
                Program.ConsoleCoroutine = CommandSystem.Singleton.Logic(controllerManager, Game.Configuration.Globals.NoConsoleAutoComplete);


                SendKeys.SendWait("{ENTER}"); // activates the game console commands

                // plugin loader
                mainLog.Info("IRSE: Initializing Plugins...");
                m_pluginManager = new PluginManager();
                m_pluginManager.InitializeAllPlugins();

                // Wait 5 seconds before activating ServerInstance.Instance.IsRunning

                mainLog.Info("IRSE: Startup Procedure Complete!");
                IsRunning = true; // Server is running by now
            }
            catch (Exception ex)
            {
                mainLog.Info("IRSE: Startup Procedure FAILED!");
                mainLog.Info("IRSE: Haulting Server.. Major problem detected!!!!!!!! - Exception:");
                mainLog.Error(ex.ToString());

                Console.ReadLine();
                Stop();
            }
        }
        public UniverseHandler(Game.Server.ControllerManager controllerManager)
        {
            m_controllers = controllerManager;
            Universe      = m_controllers.Universe as Game.Server.UniverseController;

            try
            {
                mainLog = NLog.LogManager.GetCurrentClassLogger();
                NLog.LogManager.GetCurrentClassLogger().Info("IRSE: Loading UniverseHandler...");
            }
            catch (Exception ex)
            {
                mainLog.Error(ex.ToString());
            }
        }
        public UniverseHandler(Game.Server.ControllerManager controllerManager)
        {
            Universe = controllerManager.Universe as Game.Server.UniverseController;



            //Console.WriteLine(test.ActiveSystems.FirstOrDefault());
            try
            {
                mainLog = NLog.LogManager.GetCurrentClassLogger();
                NLog.LogManager.GetCurrentClassLogger().Info("IRSE: Loading UniverseHandler...");
            }
            catch (Exception ex)
            {
                mainLog.Error(ex.ToString());
            }
        }
        public Object GetHandlers()
        {
            try
            {
                m_gameStateType = m_frameworkAssembly.GetType("Game.GameStates.GameState");
                PropertyInfo m_activeState = m_gameStateType.GetProperty("ActiveState");
                object       server        = m_activeState.GetValue(null);

                if (server == null)
                {
                    return(null);
                }

                mainLog.Info("IRSE: Loaded GameServer Instance!");

                FieldInfo m_controllerManagerField = server.GetType().GetField("m_controllers", BindingFlags.NonPublic | BindingFlags.Instance);

                m_controllerManager = m_controllerManagerField.GetValue(server) as Game.Server.ControllerManager;

                var universe = m_controllerManager.Universe as Game.Server.UniverseController;

                mainLog.Info("IRSE: Waiting for Universe To Populate..");

                // will be removed when they fix the ghost client spawner
                ServerInstance.Instance.SpawnGhostClients(m_controllerManager);

                while (m_controllerManager.Players.AllPlayers().Count() < 1)
                {
                    Thread.Sleep(1000);
                    if (m_controllerManager.Players.AllPlayers().Count() <= 1)
                    {
                        break;
                    }
                }

                mainLog.Info("IRSE: Loading Handlers..");
                NetworkHandler = new NetworkHandler(m_controllerManager);
                NetworkHandler.SetupNetworkHandler(server);

                PlayerHandler = new PlayerHandler(m_controllerManager);
                PlayerHandler.SetupPlayerHandler(server);

                ChatHandler = new ChatHandler(m_controllerManager);
                ChatHandler.SetupChatMessageHandler(NetworkHandler);

                UniverseHandler = new UniverseHandler(m_controllerManager);
                UniverseHandler.SetupHandler(server);

                mainLog.Info("IRSE: Loaded Universe!");

                return(true);
            }
            catch (ArgumentException ex)
            {
                mainLog.Error("Failed to get handlers [Argument Exception] \r\n Exception:" + ex.ToString());
                return(null);
            }
            catch (Exception ex)
            {
                mainLog.Error("Failed to get handlers \r\n Exception: " + ex.ToString());
                return(null);
            }
        }
Пример #7
0
        public void SpawnGhostClients(Game.Server.ControllerManager controllers)
        {
            SystemNames.ForEach((systemIdent) =>
            {
                Task.Run((Action)(() =>
                {
                    SolarSystem system = controllers.Universe.Galaxy.GetSystem(systemIdent);

                    using (WriteLock.CreateLock(m_startingGhostClientsLock))
                        m_startingGhostClients.Add(systemIdent);

                    GhostClientState ghostClientState;

                    //if(m_ghostClients.Count() != 5)

                    this.m_ghostClients.TryGetValue(systemIdent, out ghostClientState);
                    if (ghostClientState == null || !ghostClientState.PreventStart)
                    {
                        string str1 = ServerConfig.Singleton.GhostClientConsoleVisible ? "-console " : "";
                        string str2 = "-ip 127.0.0.1 ";
                        string str3 = "-port " + controllers.Network.NetGeneric.GetPort().ToString();
                        string str4 = " -GhostSystemName " + systemIdent;
                        try
                        {
                            if (ghostClientState == null)
                            {
                                ghostClientState = new GhostClientState(controllers);
                                using (WriteLock.CreateLock(m_delayedAddUpdatablesLock))
                                    m_delayedAddUpdatables.Add((IUpdatable)ghostClientState);
                            }
                            ghostClientState.Process = Process.Start(new ProcessStartInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "IRGhostClient.exe"), "-ghostclient " + str1 + str2 + str3 + str4)
                            {
                                UseShellExecute = false,
                                CreateNoWindow = !ServerConfig.Singleton.GhostClientConsoleVisible
                            });
                            ghostClientState.SystemName = systemIdent;
                            ghostClientState.ResetHeartbeat();
                            ++ghostClientState.StartCount;
                            using (WriteLock.CreateLock(m_ghostClientsLock))
                                this.m_ghostClients[systemIdent] = ghostClientState;
                            if (ServerConfig.Singleton.GhostClientStartCountThresholdEnabled && ghostClientState.StartCount >= ServerConfig.Singleton.GhostClientStartCountThreshold)
                            {
                                Console.WriteLine(string.Format("Ghost client for '{0}' started {1} in {2} seconds! Preventing start for {3}.", new object[4]
                                {
                                    (object)systemIdent,
                                    (object)ghostClientState.StartCount,
                                    (object)ServerConfig.Singleton.GhostClientStartCountResetDurationInSeconds,
                                    (object)ServerConfig.Singleton.GhostClientPreventStartDurationInSeconds
                                }), "Saving", (Exception)null);
                                ghostClientState.PreventStart = true;
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(string.Format("Failed to start ghost client. Path: {0}, Arguments: {1}", (object)Assembly.GetEntryAssembly().Location, (object)("-ghostclient " + str1 + str2 + str3 + str4)), "Exceptions", ex);
                        }
                    }
                    using (WriteLock.CreateLock(this.m_startingGhostClientsLock))
                        this.m_startingGhostClients.Remove(systemIdent);
                }));
            });

            //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system1.Identifier}");
            //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system2.Identifier}");
            //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system3.Identifier}");
            //Process.Start(@"F:\IRSE2020\InterstellarRiftServerExtender\InterstellarRiftServerExtender\bin\Debug\IRGhostClient.exe", $"-ghostclient -ip 127.0.0.1 -port {controllers.Network.NetGeneric.GetPort()} -GhostSystemName {system4.Identifier}");

            // dont remove this, its for after SP fixes a bug
            //MethodInfo clientMethod = server.GetType().GetMethod("StartGhostClient", BindingFlags.Instance | BindingFlags.Public);
            //clientMethod.Invoke(server, new object[] { system1 });
            //clientMethod.Invoke(server, new object[] { system2 });
            //clientMethod.Invoke(server, new object[] { system3 });
            //clientMethod.Invoke(server, new object[] { system4 });
        }