コード例 #1
0
        private void ActiveWowTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                List <WowProcess> wowProcesses = BotUtils.GetRunningWows(OffsetList);
                Dispatcher.Invoke(() => AddUnusedWowProcessesToView(wowProcesses));
                Dispatcher.Invoke(() => AddUsedWowProcessesToView());
                Dispatcher.Invoke(() => RemoveDeadViews());

                ManagedAmeisenBots.RemoveAll(b => b.WowProcess.Process.HasExited);

                if (FleetMode)
                {
                    Dispatcher.Invoke(() => HandleFleet());
                }
            }
            catch (TaskCanceledException)
            {
                // can be ignored, happens sometimes when you exit the bot
                // maybe i'll fix this, maybe not :^)
            }
        }
コード例 #2
0
        private void SetupNewAmeisenBot(WowAccount account, WowProcess wowProcess)
        {
            WowAccounts[account] = BotStartState.BotIsAttaching;

            TrashMem                    trashMem                    = new TrashMem(wowProcess.Process);
            MemoryWowDataAdapter        memoryWowDataAdapter        = new MemoryWowDataAdapter(trashMem, OffsetList);
            MemoryWowActionExecutor     memoryWowActionExecutioner  = new MemoryWowActionExecutor(trashMem, OffsetList);
            AmeisenNavPathfindingClient ameisenNavPathfindingClient = new AmeisenNavPathfindingClient(Settings.AmeisenNavmeshServerIp, Settings.AmeisenNavmeshServerPort, wowProcess.Process.Id);
            LuaHookWowEventAdapter      luaHookWowEventAdapter      = new LuaHookWowEventAdapter(memoryWowActionExecutioner);
            BasicMeleeMovementProvider  basicMeleeMovementProvider  = new BasicMeleeMovementProvider();
            SimpleAutologinProvider     simpleAutologinProvider     = new SimpleAutologinProvider();

            AmeisenBot        ameisenBot        = new AmeisenBot(trashMem, memoryWowDataAdapter, simpleAutologinProvider, wowProcess.Process);
            ManagedAmeisenBot managedAmeisenBot = new ManagedAmeisenBot(wowProcess, account, ameisenBot);

            if (ameisenBot.AutologinProvider.DoLogin(wowProcess.Process, account, OffsetList))
            {
                ameisenBot.Attach(memoryWowActionExecutioner, ameisenNavPathfindingClient, luaHookWowEventAdapter, basicMeleeMovementProvider, null);
                if (Settings.WowPositions.ContainsKey(account.CharacterName))
                {
                    ameisenBot.SetWindowPosition(Settings.WowPositions[account.CharacterName]);
                }

                ManagedAmeisenBots.Add(managedAmeisenBot);

                IAmeisenBotViews.OfType <WowView>().ToList().RemoveAll(v => v.WowProcess.Process.Id == managedAmeisenBot.WowProcess.Process.Id);

                WowAccounts[account] = BotStartState.BotIsAttached;
            }
            else
            {
                // we failed to login, restart wow...
                if (!wowProcess.Process.HasExited)
                {
                    wowProcess.Process.Kill();
                }
                WowAccounts[account] = BotStartState.None;
            }
        }
コード例 #3
0
 private void RemoveDeadViews()
 {
     // remov old wow views converted to a botview
     IAmeisenBotViews.RemoveAll(v => v.GetType() == typeof(WowView) && ManagedAmeisenBots.Any(m => m.WowProcess.Process.Id == v.Process.Id));
     IAmeisenBotViews.RemoveAll(v => v.Process.HasExited);
 }