public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { //Win condition - Check reward color and a pixel in the middle if (posColorManager.WinCondition1Col.Matches(Screen.GetPixel(posColorManager.WinCondition1Pos)) && posColorManager.WinCondition2Col.Matches(Screen.GetPixel(posColorManager.WinCondition2Pos))) { return(StateManager.Instance[StateKind.Win]); } //Lose condition if (posColorManager.LoseCondition1Col.Matches(Screen.GetPixel(posColorManager.LoseCondition1Pos)) && posColorManager.LoseCondition2Col.Matches(Screen.GetPixel(posColorManager.LoseCondition2Pos))) { return(StateManager.Instance[StateKind.Lose]); } //Network problems - send data again if (posColorManager.NetworkProblems1Col.Matches( Screen.GetPixel(posColorManager.NetworkProblems1Pos)) && posColorManager.NetworkProblems2Col.Matches(Screen.GetPixel(posColorManager.NetworkProblems2Pos))) { return(StateManager.Instance[StateKind.NetworkProblem]); } //Unstable network connection if (posColorManager.UnstableConnection1Col.Matches( Screen.GetPixel(posColorManager.UnstableConnection1Pos)) && posColorManager.UnstableConnection1Col.Matches(Screen.GetPixel(posColorManager.UnstableConnection2Pos))) { return(StateManager.Instance[StateKind.UnstableNetwork]); } return(StateManager.Instance[StateKind.LastRuneFarming]); }
/// <summary> /// Validate command. /// </summary> private static bool IsValidCommand(string command, ModeConfig config) { if (config.Commands.ContainsKey(command)) { return(true); } return(false); }
public override IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { stats.Refills += StartNewRound(posColorManager, config.RefreshEnergy); stats.SuccessfulRuns++; stats.Runs++; stats.Print(); return(StateManager.Instance[StateKind.LastRuneFarming]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { //Unknown scroll, rainbowmon, mystical scroll, ... //sendMouseLeftclick(new Point(Randomize(90, 890), Randomize(15, 860))); Mouse.LeftClick(posColorManager.GetMiscButtonPos); ExecutionDelay.DelayFor(1500, 300); stats.MiscDrops++; return(StateManager.Instance[StateKind.AfterWin]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { Console.WriteLine($"Position X is: {Cursor.Position.X} Position Y is: {Cursor.Position.Y}" + "\n R:" + Screen.GetPixel(new Point(Cursor.Position.X, Cursor.Position.Y)).R + "\n G: " + Screen.GetPixel(new Point(Cursor.Position.X, Cursor.Position.Y)).G + "\n B: " + Screen.GetPixel(new Point(Cursor.Position.X, Cursor.Position.Y)).B + "\n"); ExecutionDelay.DelayFor(1500); return(StateManager.Instance[StateKind.Debug]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { //Perform a double click Mouse.DoubleLeftClick(posColorManager.DoubleClickPos); ExecutionDelay.DelayFor(2000, 300); //Check whether it is a rune drop or not return(posColorManager.CheckRuneDropCol.Matches(Screen.GetPixel(posColorManager.CheckRuneDropPos)) ? StateManager.Instance[StateKind.RuneDrop] : StateManager.Instance[StateKind.NoRuneDrop]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { //Check whether it is a good rune (6* || legend) var isGoodRune = posColorManager.CheckSixStarRuneCol.Matches(Screen.GetPixel(posColorManager.CheckSixStarRunePos)) || posColorManager.CheckLegendCol.Matches(Screen.GetPixel(posColorManager.CheckLegendPos)); return(isGoodRune ? StateManager.Instance[StateKind.GoodRuneDrop] : StateManager.Instance[StateKind.BadRuneDrop]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { //Bad rune stats.BadRuneCount++; //Purple 5* rune: take screenshot in order to check the sell heuristic quality //if ((checkRuneName(230, 130, 237) && MatchedColor(221, 228, 226, GetPixel(new Point(657, 366))))) // take_screenshot(SUBPATH, bad_rune_count); Mouse.LeftClick(posColorManager.SellRuneButtonPos); ExecutionDelay.DelayFor(1200, 300); //Is it a 5* or violet rune? Confirm sell button Mouse.LeftClick(posColorManager.ConfirmSellRuneButtonPos); ExecutionDelay.DelayFor(3500, 300); return(StateManager.Instance[StateKind.AfterWin]); }
public override IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { Mouse.LeftClick(posColorManager.NoContinueButtonPos); ExecutionDelay.DelayFor(3500, 300); Mouse.LeftClick(posColorManager.ReplayButtonPos); ExecutionDelay.DelayFor(1500, 300); stats.Refills += StartNewRound(posColorManager, config.RefreshEnergy); stats.LossCount++; stats.Runs++; stats.Print(); return(StateManager.Instance[StateKind.LastRuneFarming]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { //Good rune stats.GoodRuneCount++; if (stats.GoodRuneCount != null) { Screen.TakeScreenshot(Environment.ExpandEnvironmentVariables(Settings.Default.Rootpath), stats.GoodRuneCount.Value); } ExecutionDelay.DelayFor(1200, 300); Mouse.LeftClick(posColorManager.GetRuneButtonPos); ExecutionDelay.DelayFor(1200, 300); return(StateManager.Instance[StateKind.AfterWin]); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { Mouse.LeftClick(posColorManager.ResendWinButtonPos); return(StateManager.Instance[StateKind.LastRuneFarming]); }
/// <summary> /// Validate commands string and convert into individual items. /// </summary> /// <param name="input"></param> /// <returns></returns> public static List <string> ParseCommands(string input, ModeConfig mode) { // Initialise new list List <string> _cmdlist = new List <string>(); // Check for shell calls with parameters if (IsValidFullInvoke(input)) { _cmdlist.Add(input); return(_cmdlist); } // Simulate current mode and mode switches ModeConfig _curMode = mode; // Check each command item foreach (string _cmd in input.Trim().Split(' ')) { // Ignore empty entries if (_cmd == "") { continue; } // Check for batch commands if (IsValidBatchKey(_cmd)) { _cmdlist.Add(_cmd); continue; } // Check for mode changes if (IsValidModeSwitch(_cmd)) { _cmdlist.Add(_cmd); _curMode = TerminalMode.GetMode(_cmd); continue; } // Check for invoke command if (IsValidInvoke(_cmd)) { _cmdlist.Add(_cmd); continue; } // Check for valid macro if (IsValidMacro(_cmd)) { MacroItem _macro = Program.Config.Macros[_cmd]; // Check for infinite recursion if (_macro.Command.Contains(_cmd)) { throw new BadConfigException($"Macro {_cmd} references self. Unable to resolve."); } // Generate mode key string _mode = $"{Program.Config.Program.ModeKey}{_macro.SetMode} "; // Recursively resolve macro _cmdlist.AddRange(ParseCommands(_mode + _macro.Command, _curMode)); continue; } // Check for valid command if (IsValidCommand(_cmd, _curMode)) { _cmdlist.Add(_cmd); continue; } // Write to terminal of invalid command Terminal.WriteError( $"'{_cmd}' is not a valid command in '{TerminalMode.GetModeName(_curMode)} Mode'." ); // No valid command has been found. // If not ignoring, return null if (!Program.Config.Program.SkipInvalidCommands) { return(null); } } return(_cmdlist); }
/// <summary> /// Return the string name of the mode given. /// </summary> public static string GetModeName(ModeConfig mode) { return(Program.Config.Modes.Keys.Where(k => Program.Config.Modes[k] == mode).FirstOrDefault()); }
public IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats) { ExecutionDelay.DelayFor(1500); return(StateManager.Instance[StateKind.InitialRuneFamring]); }
public abstract IState MoveNext(IButtonPositionsAndColors posColorManager, ModeConfig config, Statistics stats);