コード例 #1
0
 public void TeleportToPlayer1()
 {
     try
     {
         Console.WriteLine("Teleport routine started");
         rosController.Pause();
         //right click player 1
         UXControl player1FrameControl = GetControl <UXControl>("Root.NormalLayer.portraits.stack.party_stack.portrait_1.Frame");
         var       xCoord = player1FrameControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Left +
                            (player1FrameControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Width / 2);
         var yCoord = player1FrameControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Top +
                      (player1FrameControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Height / 2);
         SetCursorPos((int)xCoord, (int)yCoord);
         RightClick();
         Thread.Sleep(100);
         //left click teleport
         UXControl teleportOptionUiControl = GetControl <UXControl>("Root.TopLayer.ContextMenus.PlayerContextMenu.PlayerContextMenuContent.PlayerContextMenuList.InGameTeleportToPlayer");
         xCoord = teleportOptionUiControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Left +
                  (teleportOptionUiControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Width / 2);
         yCoord = teleportOptionUiControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Top +
                  (teleportOptionUiControl.uirect.TranslateToClientRect(gameState.clientWidth, gameState.clientHeight).Height / 2);
         SetCursorPos((int)xCoord, (int)yCoord);
         LeftClick();
         Thread.Sleep(6000);
         rosController.Unpause();
         Console.WriteLine("Teleport routine finished");
     }
     catch {  }
 }
コード例 #2
0
 public static T Cast <T>(this UXControl control) where T : UXControl
 {
     if (!GetVTables(typeof(T)).Contains(control.x000_VTable))
     {
         throw new InvalidCastException();
     }
     return(MemoryObjectFactory.Create <T>(control.Memory.Reader, control.Address));
 }
コード例 #3
0
 /// <summary>
 /// Render all CSS properties
 /// use a mapping to map ux properties and css properties
 /// </summary>
 /// <param name="control"></param>
 /// <param name="css"></param>
 public void RenderCSSProperties(UXControl control, CodeCSS css)
 {
     control.Get("Width", (s, v) => { css.Body.Add("width", v.Value.ToString() + "px"); });
     control.Get("Height", (s, v) => { css.Body.Add("height", v.Value.ToString() + "px"); });
     control.Get("BackColor", (s, v) => { css.BackgroundColor = new CSSColor(v.Value); });
     control.Get("ForeColor", (s, v) => { css.ForegroundColor = new CSSColor(v.Value); });
     control.Get("Padding", (s, v) => { css.Body.Add("padding", v.Value); });
     control.Get("Margin", (s, v) => { css.Body.Add("margin", v.Value); });
     control.Get("Border", (s, v) => { css.Body.Add("border", v.Value); });
     control.Get("Border-Spacing", (s, v) => { css.Body.Add("border-spacing", v.Value); });
     control.Get("Border-Width", (s, v) => { css.Body.Add("border-width", v.Value + "px"); });
     control.Get("Border-Height", (s, v) => { css.Body.Add("border-height", v.Value + "px"); });
     control.Get("Border-Color", (s, v) => { css.Body.Add("border-color", v.Value + "px"); });
     control.Get("Height-Minimum", (s, v) => { css.Body.Add("min-height", v.Value.ToString() + "px"); });
     control.Get("align", (s, v) => { css.Body.Add("text-align", v.Value); });
     control.Get("valign", (s, v) => { css.Body.Add("vertical-align", v.Value); });
 }
コード例 #4
0
 public static UXControl GetControl(string name)
 {
     return(UXControl.getByName(name));
 }
コード例 #5
0
 public static bool IsVisible(this UXControl control)
 {
     return(control != null && (control.x014_Flags & 4) != 0);
 }
コード例 #6
0
ファイル: Skills.cs プロジェクト: tmasiff/FindersKeepersD3
 public static UXTimer GetTimer(int Pos)
 {
     return(UXControl.Get <UXTimer>(UITimer[Pos]));
 }
コード例 #7
0
ファイル: Skills.cs プロジェクト: tmasiff/FindersKeepersD3
 public static UXIcon GetPowers(int Pos)
 {
     return(UXControl.Get <UXIcon>(UIElements[Pos]));
 }
コード例 #8
0
        public ClientProgram()
        {
            IntPtr  multibotProcess = RosController.GetForegroundWindow();
            string  pathToFile      = Path.Combine(Environment.ExpandEnvironmentVariables("%userprofile%"), "Documents\\RoS-BoT\\Logs\\logs.txt");
            Process RosBotProcess   = Win32Processes.GetProcessesLockingFile(pathToFile).FirstOrDefault();

            Console.WriteLine("Starting Client controller: Make sure Server is Ready");
            ClientController client = new ClientController();

            client.pathToLogFile   = pathToFile;
            client.rosbotProcess   = RosBotProcess;
            client.multibotProcess = multibotProcess;
            client.GetRosRect();
            Console.WriteLine("Server Ip: "); // Prompt
            string serveripInput = Console.ReadLine();

            Console.WriteLine("Server Port: "); // Prompt
            int serverportInput = Convert.ToInt32(Console.ReadLine());

            client.serverip   = serveripInput;
            client.serverport = serverportInput;
            Console.WriteLine("Connecting to Server");
            bool clientStarting = true;

            while (clientStarting)
            {
                try
                {
                    client.Connect();
                    try
                    {
                        clientStarting = !client.tcpClient.TcpClient.Connected;
                    }
                    catch { clientStarting = true; }
                }
                catch
                {
                    Console.WriteLine("Failed to connect to server, press key to try again");
                    Console.ReadLine();
                    Console.WriteLine("Server Ip: ");   // Prompt
                    serveripInput = Console.ReadLine();
                    Console.WriteLine("Server Port: "); // Prompt
                    serverportInput = Convert.ToInt32(Console.ReadLine());
                }
            }
            Console.WriteLine("Starting Game Modules");
            client.StartModules();
            Console.WriteLine("All modules started: reading game states");
            client.sendMessage("Client started modules");
            client.ClickRosStart();
            client.sendMessage("BeginRosBot");

            Thread gameStateDecider = new Thread(() =>
            {
                while (true)
                {
                    try
                    {
                        client.gameState.UpdateGameState();
                        if (client.gameState.inMenu & client.rosController.failed)
                        {
                            //sleeping after going to menu
                            RosController.BlockInput();
                            Console.WriteLine("Sleeping 20s");
                            Thread.Sleep(20000);
                            Console.WriteLine("Done");
                            client.rosController.InitVariables();
                            RosController.UnBlockInput();
                        }

                        if (client.gameState.acceptgrUiVisible & client.rosController.vendorLoopDone)
                        {
                            // click accept grift yes
                            client.rosController.Pause();
                            client.rosController.enteredRift = false;
                            var xCoord = client.gameState.acceptgrUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Left +
                                         (client.gameState.acceptgrUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Width / 2);
                            var yCoord = client.gameState.acceptgrUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Top +
                                         (client.gameState.acceptgrUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Height / 2);
                            RosController.SetCursorPos((int)xCoord, (int)yCoord);
                            RosController.LeftClick();
                            Console.WriteLine("Accept Rift Dialog Detected: Click Accept and Send Pause");
                        }

                        if (client.gameState.cancelgriftUiVisible)
                        {
                            //click cancel ok
                            client.rosController.Pause();
                            var xCoord = client.gameState.confirmationUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Left +
                                         (client.gameState.confirmationUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Width / 2);
                            var yCoord = client.gameState.confirmationUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Top +
                                         (client.gameState.confirmationUiControl.uirect.TranslateToClientRect(client.gameState.clientWidth, client.gameState.clientHeight).Height / 2);
                            RosController.SetCursorPos((int)xCoord, (int)yCoord);
                            RosController.LeftClick();
                            client.sendMessage("Start");
                            Console.WriteLine("Rift Cancelled Dialog Detected: Pause, Click Cancel, and Send Start");
                        }

                        if (!client.rosController.enteredRift & client.gameState.firstlevelRift & !client.gameState.inMenu & !client.gameState.isLoading & !client.gameState.aloneInGame)
                        {
                            //unpause after entering rift and reinit variables
                            Thread.Sleep(1500);
                            client.rosController.enteredRift = true;
                            client.rosController.Unpause();
                            client.rosController.InitVariables();
                            Console.WriteLine("First Floor Rift Detected: Unpausing and Reiniting variables");
                        }

                        if (client.gameState.haveUrshiActor)
                        {
                            //set Urshi state
                            client.rosController.didUrshi = true;
                            //send have urushi to other if didnt yet
                            if (!client.rosController.sentUrshi)
                            {
                                client.sendMessage("Teleport");
                                client.rosController.sentUrshi = true;
                                Console.WriteLine("Sent Teleport for Urshi");
                            }
                        }
                    }
                    catch { }
                }
            });

            Thread logFileDecider = new Thread(() =>
            {
                while (true)
                {
                    try
                    {
                        var newLogLines = client.rosController.rosLog.NewLines;

                        if (LogFile.LookForString(newLogLines, "Vendor Loop Done"))
                        {
                            //pause after vendor loop done
                            client.rosController.vendorLoopDone = true;
                            client.rosController.enteredRift    = false;
                            client.sendMessage("Client Vendor Loop Done");
                            Console.WriteLine("Vendor Loop Done Detected");
                            if (!client.rosController.otherVendorLoopDone & !client.gameState.aloneInGame)
                            {
                                bool isRiftStarted = false;
                                try //check for rift started for pausing
                                {
                                    UXControl riftStartedUiControl = GetControl <UXControl>("Root.NormalLayer.eventtext_bkgrnd.eventtext_region.stackpanel.rift_wrapper");
                                    isRiftStarted = riftStartedUiControl.IsVisible();
                                }
                                catch { isRiftStarted = false; }
                                if (!isRiftStarted)
                                {
                                    client.rosController.Pause();
                                }
                            }
                            Thread.Sleep(100);
                        }

                        if (LogFile.LookForString(newLogLines, "Next rift in different") & !client.gameState.aloneInGame)
                        {
                            //failure detected
                            client.sendMessage("Go to menu");
                            Console.WriteLine("Next rift in different game detected: send Go to menu");
                            client.rosController.failed = true;
                        }

                        if (LogFile.LookForString(newLogLines, "[20] Reseting timeouts") | LogFile.LookForString(newLogLines, "[21] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[22] Reseting timeouts") | LogFile.LookForString(newLogLines, "[23] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[24] Reseting timeouts") | LogFile.LookForString(newLogLines, "[25] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[26] Reseting timeouts") | LogFile.LookForString(newLogLines, "[27] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[28] Reseting timeouts") | LogFile.LookForString(newLogLines, "[29] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[30] Reseting timeouts") & !client.gameState.aloneInGame)
                        {
                            //paused detected
                            client.rosController.paused = true;
                            client.sendMessage("Status Check Code 20");
                        }
                    }
                    catch { }
                }
            });

            Console.WriteLine("Starting Threads");
            gameStateDecider.Start();
            logFileDecider.Start();
            Console.ReadKey();
        }
コード例 #9
0
        public ServerProgram()
        {
            IntPtr  multibotProcess = RosController.GetForegroundWindow();
            string  pathToFile      = Path.Combine(Environment.ExpandEnvironmentVariables("%userprofile%"), "Documents\\RoS-BoT\\Logs\\logs.txt");
            Process RosBotProcess   = Win32Processes.GetProcessesLockingFile(pathToFile).FirstOrDefault();

            Console.WriteLine("Starting Server Controller");
            ServerController server = new ServerController();

            server.pathToLogFile   = pathToFile;
            server.rosbotProcess   = RosBotProcess;
            server.multibotProcess = multibotProcess;
            server.GetRosRect();
            Console.WriteLine("Choose Port: "); // Prompt
            int serverportInput = Convert.ToInt32(Console.ReadLine());

            server.port = serverportInput;
            Console.WriteLine("Starting Server TCP");
            bool serverStarting = true;

            while (serverStarting)
            {
                try
                {
                    server.StartServerTCP();
                    try
                    {
                        serverStarting = !server.tcpServer.IsStarted;
                    }
                    catch
                    { serverStarting = true; }
                }
                catch
                {
                    Console.WriteLine("Failed to start server TCP, press key to try again");
                    Console.ReadLine();
                }
            }
            Console.WriteLine("Starting Game Modules");
            server.StartModules();
            Console.WriteLine("All modules started: reading game states");
            Console.WriteLine("Server Ready to start, client can connect and start now");

            Thread gameStateDecider = new Thread(() =>
            {
                while (true)
                {
                    try
                    {
                        server.gameState.UpdateGameState();
                        if (server.gameState.inMenu & server.rosController.failed)
                        {
                            RosController.BlockInput();
                            Console.WriteLine("Sleeping 20s");
                            Thread.Sleep(20000);
                            Console.WriteLine("Done");
                            server.rosController.InitVariables();
                            RosController.UnBlockInput();
                        }

                        if (server.gameState.acceptgrUiVisible)
                        {
                            // grift accept request: always click cancel
                            server.rosController.Pause();
                            server.rosController.enteredRift = false;
                            var xCoord = server.gameState.acceptgrUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Left +
                                         (server.gameState.acceptgrUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Width / 2);
                            var yCoord = server.gameState.acceptgrUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Top +
                                         (server.gameState.acceptgrUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Height * 1.5);
                            RosController.SetCursorPos((int)xCoord, (int)yCoord);
                            RosController.LeftClick();
                            Console.WriteLine("Accept Rift Dialog Detected: Click Cancel");
                        }

                        if (server.gameState.cancelgriftUiVisible)
                        {
                            //click cancel ok
                            server.rosController.Pause();
                            var xCoord = server.gameState.confirmationUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Left +
                                         (server.gameState.confirmationUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Width / 2);
                            var yCoord = server.gameState.confirmationUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Top +
                                         (server.gameState.confirmationUiControl.uirect.TranslateToClientRect(server.gameState.clientWidth, server.gameState.clientHeight).Height / 2);
                            RosController.SetCursorPos((int)xCoord, (int)yCoord);
                            RosController.LeftClick();
                            Console.WriteLine("Rift Cancelled Dialog Detected: Click Cancel");
                        }

                        if (!server.rosController.enteredRift & server.gameState.firstlevelRift & !server.gameState.inMenu & !server.gameState.isLoading & !server.gameState.aloneInGame)
                        {
                            //unpause after entering rift and reinit variables
                            Thread.Sleep(1500);
                            server.rosController.enteredRift = true;
                            server.rosController.Unpause();
                            server.rosController.InitVariables();
                            Console.WriteLine("First Floor Rift Detected: Unpausing and Reiniting variables");
                        }

                        if (server.gameState.haveUrshiActor)
                        {
                            //set Urshi state
                            server.rosController.didUrshi = true;
                            //send have urushi to other if didnt yet
                            if (!server.rosController.sentUrshi)
                            {
                                server.sendMessage("Teleport");
                                server.rosController.sentUrshi = true;
                                Console.WriteLine("Sent Teleport for Urshi");
                            }
                        }

                        if (server.gameState.lastRift.ElapsedMilliseconds > 360000) //Detect timeout, send F7 and restart
                        {
                            Console.WriteLine("Timeout detected");
                            server.rosController.Pause();
                            server.WaitStates();
                            server.GoToMenu();
                            RosController.SendF7();
                            Thread.Sleep(5000);
                            server.gameState.lastRift.Restart();
                            server.rosController.InitVariables();
                            server.ClickRosStart();
                            Thread.Sleep(7000);
                            server.sendMessage("Timeout");
                        }
                    }
                    catch { }
                }
            });

            Thread logFileDecider = new Thread(() =>
            {
                while (true)
                {
                    try
                    {
                        var newLogLines = server.rosController.rosLog.NewLines;
                        if (LogFile.LookForString(newLogLines, "Vendor Loop Done"))
                        {
                            //pause after vendor loop done
                            server.rosController.vendorLoopDone = true;
                            server.rosController.enteredRift    = false;
                            server.sendMessage("Server Vendor Loop Done");
                            Console.WriteLine("Vendor Loop Done Detected, server Always Pause here");
                            bool isRiftStarted = false;
                            try //check for rift started for pausing
                            {
                                UXControl riftStartedUiControl = GetControl <UXControl>("Root.NormalLayer.eventtext_bkgrnd.eventtext_region.stackpanel.rift_wrapper");
                                isRiftStarted = riftStartedUiControl.IsVisible();
                            }
                            catch { isRiftStarted = false; }
                            if (!isRiftStarted & !server.gameState.aloneInGame)
                            {
                                server.rosController.Pause();
                            }
                        }

                        if (LogFile.LookForString(newLogLines, "Next rift in different") & !server.gameState.aloneInGame)
                        {
                            //failure detected
                            server.sendMessage("Go to menu");
                            Console.WriteLine("Next rift in different game detected: send Go to menu");
                            server.rosController.failed = true;
                        }

                        if (LogFile.LookForString(newLogLines, "[20] Reseting timeouts") | LogFile.LookForString(newLogLines, "[21] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[22] Reseting timeouts") | LogFile.LookForString(newLogLines, "[23] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[24] Reseting timeouts") | LogFile.LookForString(newLogLines, "[25] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[26] Reseting timeouts") | LogFile.LookForString(newLogLines, "[27] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[28] Reseting timeouts") | LogFile.LookForString(newLogLines, "[29] Reseting timeouts")
                            | LogFile.LookForString(newLogLines, "[30] Reseting timeouts") & !server.gameState.aloneInGame)
                        {
                            //paused detected
                            server.rosController.paused = true;
                        }
                    }
                    catch { }
                }
            });

            Console.WriteLine("Starting Threads");
            gameStateDecider.Start();
            logFileDecider.Start();
            Console.ReadKey();
        }