コード例 #1
0
        private static void GoNamedArea(IWorldManager manager, bool worldport, string[] args)
        {
            int    skip   = args[0] == "area" || args[0] == "instance" ? 1 : 0;
            string needle = string.Join(" ", args.Skip(skip).ToArray());             //Replace "area" and "instance"

            var locations = worldport ? Worldports.FindLocation(needle) : AreaTriggers.FindTrigger(needle);

            switch (locations.Count())
            {
            case 0:                     //No matches
                manager.Send(manager.Account.ActiveCharacter.BuildMessage("No matching locations found"));
                break;

            case 1:                     //Single match
                manager.Account.ActiveCharacter.Teleport(locations.First().Value, ref manager);
                break;

            default:                     //Multiple possible matches
                manager.Send(manager.Account.ActiveCharacter.BuildMessage("Multiple matches:"));

                foreach (var l in locations)
                {
                    manager.Send(manager.Account.ActiveCharacter.BuildMessage(" " + l.Key));
                }

                break;
            }
        }
コード例 #2
0
ファイル: Commands.cs プロジェクト: krullgor/AIO-Sandbox
        private static void GoNamedArea(IWorldManager manager, bool worldport, string[] args)
        {
            bool   isinstance = args[0] == "instance";
            string needle     = string.Join(" ", args.Skip(isinstance ? 1 : 0)); // Replace "area" and "instance"

            var expansion = manager.SandboxHost.Expansion;
            var locations = worldport ? Worldports.FindLocation(needle, expansion) : AreaTriggers.FindTrigger(needle, expansion);

            switch (locations.Count())
            {
            case 0:     // No matches
                manager.Send(manager.Account.ActiveCharacter.BuildMessage("No matching locations found"));
                break;

            case 1:     // Single match
                manager.Account.ActiveCharacter.Teleport(locations.First(), ref manager);
                break;

            default:     // Multiple possible matches
                manager.Send(manager.Account.ActiveCharacter.BuildMessage("Multiple matches:"));

                foreach (var location in locations)
                {
                    manager.Send(manager.Account.ActiveCharacter.BuildMessage(" " + location.Description));
                }

                break;
            }
        }
コード例 #3
0
ファイル: WorldServer.cs プロジェクト: coolzoom/AIO-Sandbox
        private static void Main()
        {
            CultureInfo.CurrentCulture = CultureInfo.CurrentUICulture = CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;

            Log.Message(LogType.INIT, "                AIO SANDBOX                ");
            Log.Message(LogType.INIT, "             REALM/PROXY/WORLD             ");
            Log.Message();
            Log.Message(LogType.NORMAL, "Starting AIO Sandbox WorldServer...");
            Log.Message();

            // Load Plugins
            PluginHandler pluginHandler = new PluginHandler();

            Sandbox = pluginHandler.SandboxSelector();

            RealmManager.RealmSession = new RealmSocket();
            WorldManager.WorldSession = new WorldSocket();

            if (WorldManager.WorldSession.Start() && RealmManager.RealmSession.Start())
            {
                Authenticator.LoadConfig();

                RealmManager.RealmSession.StartRealmThread();
                RealmManager.RealmSession.StartProxyThread();
                WorldManager.WorldSession.StartConnectionThread();

                Log.Message();
                Log.Message(LogType.NORMAL, "Loading {0}", Sandbox.RealmName);
                Log.Message(LogType.NORMAL, "RealmProxy listening on {0} port(s) {1}.", "127.0.0.1", Sandbox.RealmPort);
                Log.Message(LogType.NORMAL, "RedirectServer listening on {0} port {1}.", "127.0.0.1", Sandbox.RedirectPort);
                Log.Message(LogType.NORMAL, "WorldServer listening on {0} port {1}.", "127.0.0.1", Sandbox.WorldPort);
                Log.Message(LogType.NORMAL, "Started {0}", Sandbox.RealmName);
                Log.Message();
                Log.Message(LogType.NORMAL, "Default client password set to \"{0}\"", Authenticator.Password);
                Log.Message();

                HandlerDefinitions.InitializePacketHandler();
                AreaTriggers.Initialize(Sandbox);
                Worldports.Initialize(Sandbox);
            }
            else
            {
                if (!WorldManager.WorldSession.Started)
                {
                    Log.Message(LogType.ERROR, "WorldServer couldn't be started.");
                }
                if (!RealmManager.RealmSession.Started)
                {
                    Log.Message(LogType.ERROR, "RealmServer couldn't be started.");
                }

                Log.Message();
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }