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; } }
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; } }
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(); }