private static void Main() { Events.Start(); Logger.Debug("Loading..."); ObjectManager <IRoom> .Instance.RegisterManager <RoomManager>(); ObjectManager <IItem> .Instance.RegisterManager <ItemManager>(); ObjectManager <IMessenger> .Instance.RegisterManager <MessengerManager>(); Logger.Debug("Loading objects..."); foreach (var assembly in Configuration.Config.GetSection("assemblies").GetChildren()) { MainManager.Instance.LoadAssembly(assembly.Value); } foreach (var python in Configuration.Config.GetSection("python").GetChildren()) { MainManager.Instance.LoadPython(Path.GetDirectoryName(python.Value), Path.GetFileName(python.Value)); } MainManager.Instance.LoadAssembly(Assembly.GetExecutingAssembly()); Logger.Info("Working!"); // To allow long strings Console.SetIn(new StreamReader(Console.OpenStandardInput(), Console.InputEncoding, false, 16384)); var commandLine = new PythonCommandLine(); var engine = Python.CreateEngine(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { engine.Runtime.LoadAssembly(assembly); } commandLine.Run(engine, new SuperConsole(commandLine, true), new PythonConsoleOptions { AutoIndent = true, ColorfulConsole = true, TabCompletion = true }); Logger.Info("Saving users..."); UserManager.Instance.Flush(); Logger.Debug("Done!"); Thread.Sleep(500); // Finish logging Environment.Exit(0); }
public void Start() { ItemEvaluator.Instance = DefaultItemEvaluator.Instance; Explorer.CurrentDelegate = user => CombatAreaCache.Current.Explorer.BasicExplorer; ComplexExplorer.ResetSettingsProviders(); ComplexExplorer.AddSettingsProvider("MapBot", MapBotExploration, ProviderPriority.Low); // Cache all bound keys. LokiPoe.Input.Binding.Update(); // Reset the default MsBetweenTicks on start. Log.Debug($"[Start] MsBetweenTicks: {BotManager.MsBetweenTicks}."); Log.Debug($"[Start] NetworkingMode: {LokiPoe.ConfigManager.NetworkingMode}."); Log.Debug($"[Start] KeyPickup: {LokiPoe.ConfigManager.KeyPickup}."); Log.Debug($"[Start] IsAutoEquipEnabled: {LokiPoe.ConfigManager.IsAutoEquipEnabled}."); // Since this bot will be performing client actions, we need to enable the process hook manager. LokiPoe.ProcessHookManager.Enable(); _coroutine = null; ExilePather.Reload(); _taskManager.Reset(); AddTasks(); Events.Start(); PluginManager.Start(); RoutineManager.Start(); PlayerMoverManager.Start(); _taskManager.Start(); foreach (var plugin in PluginManager.EnabledPlugins) { Log.Debug($"[Start] The plugin {plugin.Name} is enabled."); } if (ExilePather.BlockTrialOfAscendancy == FeatureEnum.Unset) { //no need for this, map trials are in separate areas ExilePather.BlockTrialOfAscendancy = FeatureEnum.Disabled; } }
public void SetActive(bool _value) { if (_value == true && m_Active == false && Enabled) { m_Active = true; Move.Altitude.Init(); Effect.Start(OwnerComponent); Events.Start(OwnerComponent); Inventory.Start(); Influences.Start(); } else if (_value == false) { m_Active = false; m_Runtime = 0; Effect.Stop(); Events.Stop(); Inventory.Stop(OwnerComponent); Influences.Stop(OwnerComponent); } }
private static void Main() { Events.Start(); AppDomain.CurrentDomain.UnhandledException += (sender, args) => { Logger.Error(args.ExceptionObject as Exception, "Unhandled error"); Exit(); }; Logger.Debug("Loading..."); ObjectManager <IRoom> .Instance.RegisterManager <RoomManager>(); ObjectManager <IRoot> .Instance.RegisterManager <RootManager>(); ObjectManager <IItem> .Instance.RegisterManager <ItemManager>(); ObjectManager <IQuest> .Instance.RegisterManager <QuestManager>(); ObjectManager <IMessenger> .Instance.RegisterManager <MessengerManager>(); ObjectManager <IMigrator> .Instance.RegisterManager <MigratorManager>(); Logger.Debug("Loading objects..."); MainManager.Instance.LoadAssembly(Assembly.GetExecutingAssembly()); foreach (var assembly in Configuration.Config.GetSection("assemblies").GetChildren()) { MainManager.Instance.LoadAssembly(assembly.Value); } Logger.Debug("Loading other..."); ObjectManager <IMessenger> .Instance.Get <MessengerManager>().BeginPolling(); Logger.Info("Working!"); // To allow long strings Console.SetIn(new StreamReader(Console.OpenStandardInput(), Console.InputEncoding, false, 16384)); Console.CancelKeyPress += (sender, args) => { args.Cancel = true; Console.Error.WriteLine("\nUse `/q` to quit."); }; while (true) { Console.WriteLine("Working..."); var cmd = Console.ReadLine(); if (cmd != "/q") { Console.Error.WriteLine("Use `/q` to quit."); } else { break; } } Exit(); }
static void Main(string[] args) { _proxy = new TransportProxy(new SimpleTransport()); _discovery = new Discovery(_proxy); _authentication = new Authentication(_proxy); System.Console.WriteLine("Enter discovery domain"); var discoveryDomain = System.Console.ReadLine(); System.Console.WriteLine("Enter username"); var username = System.Console.ReadLine(); System.Console.WriteLine("Enter password"); var password = System.Console.ReadLine(); System.Console.WriteLine("Starting discovery..."); var discoveryTask = _discovery.Start(!string.IsNullOrWhiteSpace(discoveryDomain) ? discoveryDomain : username); discoveryTask.Wait(); var discoveryUri = new Uri(discoveryTask.Result.Links.User.Href); System.Console.WriteLine("Starting authentication"); try { var authenticationTask = _authentication.Start(discoveryUri); authenticationTask.Wait(); } catch (AggregateException ex) { if (ex?.InnerException.GetType() == typeof(AuthenticationException)) { var challenge = (ex.InnerException as AuthenticationException).Challenge; var authTokenTask = _authentication.GetAuthToken(challenge.MsRtcOAuth, new Credentials { GrantType = Constants.Password, Username = username, Password = password }); authTokenTask.Wait(); var rootTask = _authentication.Start(discoveryUri, authTokenTask.Result); rootTask.Wait(); if (rootTask.Result != null) { System.Console.WriteLine("Creating Application"); var applications = new Application { Culture = "en-US", EndpointId = Guid.NewGuid().ToString(), UserAgent = "tester" }; var appTask = _proxy.ExecuteRequestAsync(new Request { Uri = new Uri(rootTask.Result.Links.Applications.Href), Method = HttpMethod.Post, Headers = new Dictionary <string, string> { { Constants.ContentType, Constants.Json } }, Data = applications.ToBytes() }); appTask.Wait(); if (appTask?.Result?.StatusCode == HttpStatusCode.Created) { applications = appTask.Result.Data.FromBytes <Application>(); if (applications != null) { var makeMeAvailable = new MakeMeAvailable { SupportedModalities = new [] { "Messaging" } }; var makeMeAvailableTask = _proxy.ExecuteRequestAsync(new Request { Uri = new Uri(applications.Embedded.Me.Links.MakeMeAvailable.Href, UriKind.Relative), Method = HttpMethod.Post, Headers = new Dictionary <string, string> { { Constants.ContentType, Constants.Json } }, Data = makeMeAvailable.ToBytes() }); makeMeAvailableTask.Wait(); if (makeMeAvailableTask?.Result.StatusCode == HttpStatusCode.NoContent) { // Start events loop var events = new Events(_proxy, new Uri(applications.Links.Events.Href, UriKind.Relative)); events.OnEventReceived += OnEventReceived; events.Start(); // Request and start reportMyActivity loop var meTask = _proxy.ExecuteRequestAsync(new Request { Uri = new Uri(applications.Embedded.Me.Links.Self.Href, UriKind.Relative), Method = HttpMethod.Get }); meTask.Wait(); if (meTask?.Result?.StatusCode == HttpStatusCode.OK) { var me = meTask.Result.Data.FromBytes <Me>(); _timer = new Timer(ReportMyActivity, me.Links.ReportMyActivity.Href, 0, (int)(3.5 * 60 * 1000)); } // Request and update communication var commGetTask = _proxy.ExecuteRequestAsync(new Request { Uri = new Uri(applications.Embedded.Communication.Links.Self.Href, UriKind.Relative), Method = HttpMethod.Get }); commGetTask.Wait(); if (commGetTask?.Result?.StatusCode == HttpStatusCode.OK) { var comm = commGetTask.Result.Data.FromBytes <Communication>(); comm.SupportedMessageFormats.Add("Html"); var commTask = _proxy.ExecuteRequestAsync(new Request { Uri = new Uri(applications.Embedded.Communication.Links.Self.Href, UriKind.Relative), Method = HttpMethod.Put, Headers = new Dictionary <string, string> { { Constants.ContentType, Constants.Json }, { Constants.IfMatch, string.Format("\"{0}\"", comm.ETag) } }, Data = comm.ToBytes() }); commTask.Wait(); if (commTask?.Result?.StatusCode == HttpStatusCode.NoContent) { System.Console.WriteLine("Communication Updated"); } } } } } } } } System.Console.ReadLine(); _timer.Dispose(); _timer = null; }
private static void Main() { Events.Start(); AppDomain.CurrentDomain.UnhandledException += (sender, args) => { Logger.Error(args.ExceptionObject as Exception, "Unhandled error"); _work = false; Exit(); }; Logger.Debug("Loading..."); ObjectManager <IRoom> .Instance.RegisterManager <RoomManager>(); ObjectManager <IRoot> .Instance.RegisterManager <RootManager>(); ObjectManager <IItem> .Instance.RegisterManager <ItemManager>(); ObjectManager <IQuest> .Instance.RegisterManager <QuestManager>(); ObjectManager <IMessenger> .Instance.RegisterManager <MessengerManager>(); ObjectManager <IMigrator> .Instance.RegisterManager <MigratorManager>(); Logger.Debug("Loading objects..."); MainManager.Instance.LoadAssembly(Assembly.GetExecutingAssembly()); foreach (var assembly in Configuration.Config.GetSection("assemblies").GetChildren()) { MainManager.Instance.LoadAssembly(assembly.Value); } Logger.Debug("Loading other..."); TopPlayers.Instance.Initialize(); ObjectManager <IMessenger> .Instance.Get <MessengerManager>().BeginPolling(); Logger.Info("Working!"); // To allow long strings Console.SetIn(new StreamReader(Console.OpenStandardInput(), Console.InputEncoding, false, 16384)); while (_work) { try { var console = new InteractiveInterpreterConsole(); console.ReadEvalPrintLoop(); } catch (Exception e) { Console.WriteLine(e); continue; } break; } Exit(); }