コード例 #1
0
        public static void Main(string[] args)
        {
            bool_0 = true;
            DateTime now = DateTime.Now;

            Output.InitializeStream(true, OutputLevel.DebugInformation);
            Output.WriteLine("Initializing BoomBang game environment...");
            ConfigManager.Initialize(Constants.DataFileDirectory + @"\server-main.cfg");
            Output.SetVerbosityLevel((OutputLevel)ConfigManager.GetValue("output.verbositylevel"));
            foreach (string str in args)
            {
                Output.WriteLine("Command line argument: " + str);
                Input.ProcessInput(str.Split(new char[] { ' ' }));
            }
            try
            {
                Output.WriteLine("Initializing MySQL manager...");
                SqlDatabaseManager.Initialize();
                Output.WriteLine("Setting up server listener on port " + ((int)ConfigManager.GetValue("net.bind.port")) + "...");
                boomBangTcpListener_0 = new BoomBangTcpListener(new IPEndPoint(IPAddress.Any, (int)ConfigManager.GetValue("net.bind.port")), (int)ConfigManager.GetValue("net.backlog"), new OnNewConnectionCallback(SessionManager.HandleIncomingConnection));
                using (SqlDatabaseClient client = SqlDatabaseManager.GetClient())
                {
                    Output.WriteLine("Resetting database counters and statistics...");
                    smethod_0(client);
                    Output.WriteLine("Initializing game components and workers...");
                    DataRouter.Initialize();
                    GlobalHandler.Initialize();
                    SessionManager.Initialize();
                    CharacterInfoLoader.Initialize();
                    UserCredentialsAuthenticator.Initialize();
                    RegisterManager.Initialize();
                    Class1.smethod_0();
                    LaptopHandler.Initialize();
                    CatalogManager.Initialize(client);
                    FlowerPowerManager.Initialize();
                    NewsCacheManager.Initialize(client);
                    Navigator.Initialize(client);
                    SpaceManager.Initialize(client);
                    SpaceInfoLoader.Initialize();
                    SpaceHandler.Initialize();
                    GameHandler.Initialize();
                    CrossdomainPolicy.Initialize(@"Data\crossdomain.xml");
                    WordFilterManager.Initialize(client);
                    AdvertisementManager.Initialize();
                    ContestHandler.Initialize();
                    SilverCoinsWorker.Initialize();
                    ModerationBanManager.Initialize(client);
                }
            }
            catch (Exception exception)
            {
                HandleFatalError("Could not initialize BoomBang game environment: " + exception.Message + "\nStack trace: " + exception.StackTrace);
                return;
            }
            TimeSpan span = (TimeSpan)(DateTime.Now - now);

            Output.WriteLine("The server has initialized successfully (" + Math.Round(span.TotalSeconds, 2) + " seconds). Ready for connections.", OutputLevel.Notification);
            Output.WriteLine("Pulsa ENTER e introduce un comando. Ten una guía de comandos escribiendo HELP", OutputLevel.Notification);
            Console.Beep();
        }
コード例 #2
0
        public static bool RemoveUserFromSpace(Session Session, bool SendKick = true)
        {
            bool flag            = false;
            uint absoluteSpaceId = Session.AbsoluteSpaceId;

            if (absoluteSpaceId > 0)
            {
                if (Session.SpaceJoined)
                {
                    SpaceInstance instanceBySpaceId = GetInstanceBySpaceId(absoluteSpaceId);
                    if (instanceBySpaceId != null)
                    {
                        instanceBySpaceId.RemoveCharacterFromSpace(Session.CharacterId);
                    }
                }
                Session.AbsoluteSpaceId = 0;
                Session.SpaceAuthed     = false;
                Session.SpaceJoined     = false;
                LaptopHandler.MarkUpdateNeeded(Session, 0, false);
                flag = true;
            }
            if (SendKick)
            {
                Session.SendData(SpaceUserRemovedComposer.SingleCompose());
            }
            return(flag);
        }
コード例 #3
0
 private static void smethod_2(Session session_0, ClientMessage clientMessage_0)
 {
     if (session_0 != null)
     {
         if (!SpaceManager.InstanceIsLoadedForSpace(session_0.AbsoluteSpaceId))
         {
             if (SpaceManager.TryLoadSpaceInstance(session_0.AbsoluteSpaceId))
             {
             }
             else
             {
                 Console.WriteLine("ERROR");
             }
         }
         SpaceInstance instanceBySpaceId = SpaceManager.GetInstanceBySpaceId(session_0.AbsoluteSpaceId);
         if (instanceBySpaceId != null)
         {
             session_0.SpaceAuthed = true;
         }
         if (((instanceBySpaceId != null) && !session_0.SpaceJoined) && (session_0.SpaceAuthed && !instanceBySpaceId.Info.BlackList.Contains(session_0.CharacterInfo.Username)))
         {
             if (!instanceBySpaceId.AddUserToSpace(session_0))
             {
                 SpaceManager.RemoveUserFromSpace(session_0, true);
             }
             else
             {
                 session_0.SpaceAuthed = true;
                 session_0.SpaceJoined = true;
                 instanceBySpaceId.SendObjects(session_0);
                 LaptopHandler.MarkUpdateNeeded(session_0, 0, false);
                 SpaceActor actorByReferenceId = instanceBySpaceId.GetActorByReferenceId(session_0.CharacterId, SpaceActorType.UserCharacter);
                 if (actorByReferenceId == null)
                 {
                     session_0.SendData(SpaceUserRemovedComposer.SingleCompose());
                 }
                 else
                 {
                     instanceBySpaceId.BroadcastMessage(SpaceObjectListComposer.BroadcastCompose(actorByReferenceId), session_0.CharacterId, true);
                 }
             }
         }
         else
         {
             session_0.SendData(SpaceUserRemovedComposer.SingleCompose());
         }
     }
 }
コード例 #4
0
 public void TryAuthenticate(string Username, string Password, string RemoteAddress, bool Register = false)
 {
     using (SqlDatabaseClient client = SqlDatabaseManager.GetClient())
     {
         uint characterId = UserCredentialsAuthenticator.TryAuthenticate(client, Username, Password, RemoteAddress);
         if (characterId == 0)
         {
             this.SendData(AuthenticationKoComposer.Compose(false), false);
         }
         else
         {
             BoomBang.Game.Characters.CharacterInfo info = CharacterInfoLoader.GetCharacterInfo(client, characterId, this.uint_0, true);
             if (ModerationBanManager.IsUserIdBlacklisted(info.UInt32_0))
             {
                 this.SendData(ModerationBanComposer.Compose(ModerationBanManager.GetBanDetails(info.UInt32_0)), false);
                 SessionManager.StopSession(this.uint_0);
             }
             else if ((info != null) && info.HasLinkedSession)
             {
                 this.characterInfo_0 = info;
                 this.characterInfo_0.TimestampLastOnline = UnixTimestamp.GetCurrent();
                 CharacterResolverCache.AddToCache(this.characterInfo_0.UInt32_0, this.characterInfo_0.Username, true);
                 this.sessionLaptopFriendCache_0 = new SessionLaptopFriendCache(client, this.CharacterId);
                 this.userIgnoreCache_0          = new UserIgnoreCache(client, this.CharacterId);
                 this.bool_1 = true;
                 if (Register)
                 {
                     this.SendData(RegisterComposer.Compose(this.characterInfo_0), false);
                 }
                 else
                 {
                     this.SendData(AuthenticationOkComposer.Compose(this.characterInfo_0), false);
                 }
                 LaptopHandler.MarkUpdateNeeded(this, 0, true);
             }
             else
             {
                 SessionManager.StopSession(this.uint_0);
             }
         }
     }
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: DaLoE99/Servidores-DaLoE
        public static void Main(string[] args)
        {
            mAlive = true;
            DateTime InitStart = DateTime.Now;

            // Set up basic output
            Console.WriteLine("Initializing Snowlight..."); // Cannot be localized before config+lang is loaded

            // Load configuration, translation, and re-configure output from config data
            ConfigManager.Initialize(Constants.DataFileDirectory + "server-main.cfg");
            Output.InitializeStream(true, (OutputLevel)ConfigManager.GetValue("output.verbositylevel"));
            Output.WriteLine("Initializing Snowlight...");

            Localization.Initialize(Constants.LangFileDirectory + "lang_" + ConfigManager.GetValue("lang") + ".lang");

            // Process args
            foreach (string arg in args)
            {
                Output.WriteLine(Localization.GetValue("core.init.cmdarg", arg));
                Input.ProcessInput(arg.Split(' '));
            }

            try
            {
                // Initialize and test database
                Output.WriteLine(Localization.GetValue("core.init.mysql"));
                SqlDatabaseManager.Initialize();

                // Initialize network components
                Output.WriteLine(Localization.GetValue("core.init.net", ConfigManager.GetValue("net.bind.port").ToString()));
                mServer = new SnowTcpListener(new IPEndPoint((IPAddress)ConfigManager.GetValue("net.bind.ip"), (int)ConfigManager.GetValue("net.bind.port")),
                                              (int)ConfigManager.GetValue("net.backlog"), new OnNewConnectionCallback(
                                                  SessionManager.HandleIncomingConnection));

                /*Output.WriteLine(Localization.GetValue("core.init.net", ConfigManager.GetValue("net.cmd.bind.port").ToString()));
                 * musServer = new SnowTcpListener(new IPEndPoint((IPAddress)ConfigManager.GetValue("net.cmd.bind.ip"), (int)ConfigManager.GetValue("net.cmd.bind.port")),
                 *  (int)ConfigManager.GetValue("net.backlog"), new OnNewConnectionCallback(
                 *      CommandListener.parse));*/

                using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
                {
                    Output.WriteLine(Localization.GetValue("core.init.dbcleanup"));
                    PerformDatabaseCleanup(MySqlClient);

                    Output.WriteLine(Localization.GetValue("core.init.game"));

                    // Core
                    DataRouter.Initialize();

                    // Sessions, characters
                    SessionManager.Initialize();

                    //
                    RandomGenerator.Initialize();
                    StatisticsSyncUtil.Initialize();

                    //Global Handler
                    Global.Initialize();

                    //Login Handler
                    Login.Initialize();
                    CharacterInfoLoader.Initialize();
                    UserCredentialsAuthenticator.Initialize();
                    //Bpad Handler
                    LaptopHandler.Initialize();

                    //FlowerHandler
                    FlowerPower.Initialize();
                    ContestHandler.Initialize();
                    CatalogManager.Initialize(MySqlClient);
                    NewsCacheManager.Initialize(MySqlClient);
                    SpaceInfoLoader.Initialize();
                    Navigator.Initialize(MySqlClient);
                    LaptopHandler.Initialize();
                    UserCredentialsAuthenticator.Initialize();
                    SpaceManager.Initialize(MySqlClient);

                    SpaceHandler.Initialize();


                    SilverCoinsWorker.Initialize();
                }
            }
            catch (Exception e)
            {
                HandleFatalError(Localization.GetValue("core.init.error.details", new string[] { e.Message, e.StackTrace }));
                return;
            }

            // Init complete
            TimeSpan TimeSpent = DateTime.Now - InitStart;

            Output.WriteLine(Localization.GetValue("core.init.ok", Math.Round(TimeSpent.TotalSeconds, 2).ToString()), OutputLevel.Notification);
            Output.WriteLine((string)Localization.GetValue("core.init.ok.cmdinfo"), OutputLevel.Notification);

            Console.Write("$" + Environment.UserName.ToLower() + "@snowlight> ");
            Console.Beep();
            Input.Listen(); // This will make the main thread process console while Program.Alive.
        }