Page 18 of 53 FirstFirst ... 8161718192028 ... LastLast
Results 426 to 450 of 1302

Thread: [C]Livid Farmer

  1. #426
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Definitely, go for it.
    Thanks Flight!

    Forum account issues? Please send me a PM

  2. #427
    Join Date
    Feb 2012
    Posts
    125
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Its a no go... Flight, any idea why it's not fertilizing the soil?

  3. #428
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by Here2help View Post
    Its a no go... Flight, any idea why it's not fertilizing the soil?
    Give me just a second and I'll go test it myself. I'll edit this post when I have some results, so look back to this post soon.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  4. #429
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by Here2help View Post
    Its a no go... Flight, any idea why it's not fertilizing the soil?
    Just gave this a test, (Someone else is also using Flights Livid Farmer here lol) working fine for me and the other botter.

    You might want to check your graphic settings

    Forum account issues? Please send me a PM

  5. #430
    Join Date
    Feb 2012
    Posts
    125
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Give me just a second and I'll go test it myself. I'll edit this post when I have some results, so look back to this post soon.
    Alright thanks.



    I have graphics on lowest, and light on high.

  6. #431
    Join Date
    Feb 2012
    Posts
    125
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default



    Also it keeps trying to click off screen.

  7. #432
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Quote Originally Posted by Here2help View Post


    Also it keeps trying to click off screen.
    You have something enabled..



    Change your graphic settings to this.



    Forum account issues? Please send me a PM

  8. #433
    Join Date
    Feb 2012
    Posts
    125
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    It was my settings. Dunno why it doesn't do it automatically when I set it to lower graphics. Thanks for the help, its working amazingly now!

  9. #434
    Join Date
    Mar 2007
    Posts
    66
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    =-=-=-=-=-=-= LividFarmer 1.15 by Flight =-=-=-=-=-=
    Time Running: 3 Hours, 44 Minutes and 28 Seconds
    Points: 25060
    Plants cured: 618
    Soil fertilized: 635
    Farming XP: 115276 (30813 / hour)
    Magic XP: 92325 (24678 / hour)
    Breaks: 1
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    Successfully executed.
    Great script! Will be using it to get the Repair Pouch skill haha.

  10. #435
    Join Date
    Mar 2012
    Posts
    6
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    thanks

  11. #436
    Join Date
    Feb 2012
    Location
    Toronto Ontario, Canada
    Posts
    331
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    I've yet to explore this activity,
    before I begin this script - anyone able to suggest a number of each rune to bring for 6 hours of running it?
    118/120 Dungeoneering

  12. #437
    Join Date
    Feb 2012
    Posts
    28
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    =-=-=-=-=-=-= LividFarmer 1.15 by Flight =-=-=-=-=-=
    Time Running: 5 Hours, 3 Minutes and 23 Seconds
    Points: 13120
    Plants cured: 246
    Soil fertilized: 410
    Farming XP: 60352 (11935 / hour)
    Magic XP: 50430 (9973 / hour)
    Breaks: 2
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


    not a fan....all settings are correct by the way.

  13. #438
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by whyME View Post
    =-=-=-=-=-=-= LividFarmer 1.15 by Flight =-=-=-=-=-=
    Time Running: 5 Hours, 3 Minutes and 23 Seconds
    Points: 13120
    Plants cured: 246
    Soil fertilized: 410
    Farming XP: 60352 (11935 / hour)
    Magic XP: 50430 (9973 / hour)
    Breaks: 2
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


    not a fan....all settings are correct by the way.
    Hm plants not being cured... I've seen a couple progress reports with similar results of more soil fertilized than plants cured. I think I'll tweak this a bit. Would you like to test it when I finish up, whyME?

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  14. #439
    Join Date
    Mar 2012
    Posts
    5
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Great script Flight! Will post a proggy soon. Already got a 3 hour one and a 2 hour one! And for everyone with the fertilise soil being way more than the cure plants, I think it's because you disabled smart too many times/ for too long, because that's happened to me a couple times, but otherwise great script.

    P.S. Do you plan on making a script that does the whole farm in the future? If you did that would be AMAZING. (Sorry to sound like a leecher )

  15. #440
    Join Date
    Feb 2012
    Posts
    28
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Hm plants not being cured... I've seen a couple progress reports with similar results of more soil fertilized than plants cured. I think I'll tweak this a bit. Would you like to test it when I finish up, whyME?
    I would love to, I set it and went out for a bit so I wasn't able to see what was wrong with it, just the horrible exp per hour :P. After playing around with a bit, it seems to have trouble deciding which plant it is.

    Also, for whatever reason it will continuously loop right-clicking on the different plants, almost as if deciding which one to try to cure.

    PS: Love your scripts, actually learning how to script because there are things I want to add/tweak with them. Keep it up!

  16. #441
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    It's been improved, and now I'm working on adding Pauline-energizing support. I'll release it after that, and possibly work on the rest of the activity later on.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  17. #442
    Join Date
    Mar 2012
    Posts
    10
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Small bug: runs away east of the farming patches where the suqua is.. my settings are minimum and ran for about 40 mins before it decided to do that.
    Lucky for 99 defence and torags while botting i've kept over 30m in runes or else would of lost it.

  18. #443
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Added energizing of Pauline and jumped up to over 11k points / hour as well as a jump up to 31k Magic XP / hour. Anyone care to test out V.1.2?

    Edit:
    Progress Report by Flight:
    [=================================]
    [ LividFarmer 1.2                 ]
    [            by Flight            ]
    [=================================]
    [ Run Time        : 59 Min 57 Sec ]
    [ Points          : 10600         ]
    [ Plants Cured    : 180           ]
    [ Soil Fertilized : 185           ]
    [ Farming XP      : 33580         ]
    [ Farming XP/Hr   : 33608         ]
    [ Magic XP        : 30195         ]
    [ Magic XP/Hr     : 30220         ]
    [ Agility XP      : 5544          ]
    [ Agility XP/Hr   : 5548          ]
    [ Breaks          : 0             ]
    [=================================]
    [         LividFarmer 1.2         ]
    [=================================]
    Last edited by Flight; 04-07-2012 at 03:41 PM.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  19. #444
    Join Date
    Nov 2011
    Location
    New Zealand
    Posts
    72
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Added energizing of Pauline and jumped up to over 11k points / hour as well as a jump up to 31k Magic XP / hour. Anyone care to test out V.1.2?
    Yeap, I will. Using your ZMI bot, 700k to 99 then I'll be happy to use this to 99 farm

  20. #445
    Join Date
    Mar 2012
    Posts
    5
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Added energizing of Pauline and jumped up to over 11k points / hour as well as a jump up to 31k Magic XP / hour. Anyone care to test out V.1.2?

    Edit:
    Progress Report by Flight:
    [=================================]
    [ LividFarmer 1.2                 ]
    [            by Flight            ]
    [=================================]
    [ Run Time        : 59 Min 57 Sec ]
    [ Points          : 10600         ]
    [ Plants Cured    : 180           ]
    [ Soil Fertilized : 185           ]
    [ Farming XP      : 33580         ]
    [ Farming XP/Hr   : 33608         ]
    [ Magic XP        : 30195         ]
    [ Magic XP/Hr     : 30220         ]
    [ Agility XP      : 5544          ]
    [ Agility XP/Hr   : 5548          ]
    [ Breaks          : 0             ]
    [=================================]
    [         LividFarmer 1.2         ]
    [=================================]
    I'd be so happy to test out v1.2! I'll make sure to post a big proggy!

  21. #446
    Join Date
    Mar 2012
    Posts
    5
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Working pretty smooth so far.

    Thank you very much

  22. #447
    Join Date
    Mar 2007
    Posts
    66
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Hey Flight! I'd love to test the new version.

  23. #448
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Here's V.1.2 for anyone who would like to test it out with me. Same as before but now you must have Law runes in your inventory.

    Simba Code:
    {/////////////////////////////////////////
                      //             LividFarmer              //
                      //             (by Flight)              //
                      //                                      //
                      //             Version: 1.2             //
                      /////////////////////////////////////////}


    program LividFarmer;
      {$DEFINE SRL5}
      {$DEFINE SMART}

      {$i SRL/srl.simba}
      {$i SRL/SRL/misc/reports.simba}
      {$i SRL/SRL/misc/paintsmart.simba}

    Const

    //SRL Stats
      SRLStats_Username = '';
      SRLStats_Password = '';

    //General settings
      DebugMode    = True;    //On-screen debugging?
      SwitchWorlds = True;    //Switch worlds after a break?

    //Break settings
      BreakIn      = 135;     //How long before we take a break? (minutes)
      BreakFor     = 15;      //How long will we break for? (minutes)
      Bir          = 13;      //Random minutes to add/subtract from how long until we break
      Bfr          = 7;       //Random minutes to add/subjtract from break duraction

    Var

    //Static
      Version: String;
      SCols,PCols: TIntegerArray;

    //Dynamic
      FarmXP,FarmXP_O,MageXP,
      MageXP_O,AgilXP,AgilXP_O,
      Points,CommitTime,
      ReportTime,PlantCount,
      SoilCount: Integer;
      CheckedPauline: Boolean;

    //Break variables
      w,x,y,z,RealBTime,CurrentBTime,
      BreakRounds,TotalBreaks: Integer;


      Procedure DeclarePlayers;
      begin
        HowManyPlayers := 1;
        NumberOfPlayers(HowManyPlayers);
        CurrentPlayer := 0;
        with Players[0] do
        begin
          Name        := '';
          Pass        := '';
          BoxRewards  := ['XP','xp','lamp'];
          LampSkill   := Skill_Farming;
          Active      := True;
        end;
      end;

      Procedure LoadVars;
      begin
        Version := '1.2';
        MarkTime(ReportTime);
        MarkTime(CommitTime);
        CheckedPauline := False;

        SetupSRLStats(156, SRLStats_Username, SRLStats_Password);

        w := (BreakIn * 60000);
        x := (BreakFor * 60000);
        y := RandomRange(-Bir * 60000, Bir * 60000);
        z := RandomRange(-Bfr * 60000, Bfr * 60000);

        SCols := [5073267, 5204854, 5465452, 5402748];          //Soil colors
        PCols := [4542282, 4674124, 4871760, 5003346, 5135188]; //Healthy livid colors
      end;

      Procedure Report;
      Var
        FXPH,MXPH,AXPH: Integer;
      begin
        FXPH := Round((FarmXP * 3600) / (GetTimeRunning / 1000));
        MXPH := Round((MageXP * 3600) / (GetTimeRunning / 1000));
        AXPH := Round((AgilXP * 3600) / (GetTimeRunning / 1000));

        ClearDebug;
        SRLProgressReport(ResultDebugBox, 'LividFarmer', 'Flight', Version,
          ['Run time', 'Points', 'Plants cured', 'Soil fertilized', 'Farming XP',
            'Farming XP/Hr', 'Magic XP', 'Magic XP/Hr', 'Agility XP', 'Agility XP/Hr','Breaks'],
        [MsToTime(GetTimeRunning, Time_Abbrev), Points, PlantCount, SoilCount, FarmXP,
          FXPH, MageXP, MXPH, AgilXP, AXPH, TotalBreaks]);

        MarkTime(ReportTime);
      end;

      Procedure Commit;
      begin
        stats_IncVariable('Farming EXP (Gained)', FarmXP_O);
        stats_IncVariable('Magic EXP (Gained)', MageXP_O);
        stats_IncVariable('Agility EXP (Gained)', AgilXP_O);
        Stats_Commit;
        FarmXP_O := 0;
        MageXP_O := 0;
        AgilXP_O := 0;
        MarkTime(CommitTime);
      end;

      //By Bandland100, modified to shift mouse speeds after every step
      procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
      var
        veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
        lastX,lastY,MSP,W: integer;
        sqrt2,sqrt3,sqrt5: extended;
      begin
        MSP  := MouseSpeed;
        sqrt2:= sqrt(2);
        sqrt3:= sqrt(3);
        sqrt5:= sqrt(5);
        while hypot(xs - xe, ys - ye) > 1 do
        begin
          dist:= hypot(xs - xe, ys - ye);
          wind:= minE(wind, dist);
          if dist >= targetArea then
          begin
            windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
            windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
          end else
          begin
            windX:= windX / sqrt2;
            windY:= windY / sqrt2;
            if (maxStep < 3) then
            begin
              maxStep:= random(3) + 3.0;
            end else
            begin
              maxStep:= maxStep / sqrt5;
            end;
          end;
          veloX:= veloX + windX;
          veloY:= veloY + windY;
          veloX:= veloX + gravity * (xe - xs) / dist;
          veloY:= veloY + gravity * (ye - ys) / dist;
          if hypot(veloX, veloY) > maxStep then
          begin
            randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
            veloMag:= sqrt(veloX * veloX + veloY * veloY);
            veloX:= (veloX / veloMag) * randomDist;
            veloY:= (veloY / veloMag) * randomDist;
          end;
          lastX:= Round(xs);
          lastY:= Round(ys);
          xs:= xs + veloX;
          ys:= ys + veloY;

          case Random(50) of
            1..25: W := (MSP + (Random((MSP/4))));
            26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
          end;
          if (W < 1) then
            W := 1;

          if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
            MoveMouse(Round(xs), Round(ys));

          if not DebugMode then
            SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);

          step:= hypot(xs - lastX, ys - lastY);
          wait(W);
          lastdist:= dist;
        end;

        if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
          MoveMouse(Round(xe), Round(ye));

        MouseSpeed := MSP;
      end;

      Procedure HumanRandomMouse;
      var
        randSpeed: extended;
        x, y, firstSpeed: integer;
      begin
        case(Random(10)) of
          2..8:
          begin
            firstSpeed := mouseSpeed;

            mouseSpeed := RandomRange(5,10);
            randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
            GetMousePos(x, y);
            SuperWindMouse(x, y, RandomRange(x - 75, x + 75), RandomRange(y - 75, y + 75),
                    30, 55, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);

            mouseSpeed := firstSpeed;
            Smart_ClearCanvas;
          end;
        end;
      end;

      Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
      var
        randSpeed: extended;
        X,Y,X2,Y2,A,Dist,MP: integer;
      begin
        A := MouseSpeed;
        GetMousePos(X, Y);
        Dist := Distance(X, Y, eX, eY);
        MP := Round(Dist/150);
        if MP < 0 then
          MP := 1;

        randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
        X2 := RandomRange(eX-(A*MP), eX+(A*MP));
        Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
        SuperWindMouse(X, Y, X2, Y2, 9.0, 3.0, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
        GetMousePos(X, Y);
        MMouse(eX, eY, ranX, ranY);
        MouseSpeed := A;
      end;

      Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
      Var
        h, s, t: Extended;
        I,II : integer;
        HSLColor : Array[1..3] of Extended;
        HSL : Array[0..1] of Array[1..3] of Extended;
      begin;
        For I:= 1 to 3 do
        begin;
          HSL[0][i] := 255;
        end;

        For I:= 0 to High(Colors) do
        begin;
          ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
          For II:= 1 to 3 do
          begin;
            HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
            HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
          end;
        end;

        H := (HSL[1][1] - HSL[0][1]);
        S := (HSL[1][2] - HSL[0][2]);
        T := (HSL[1][3] - HSL[0][3]);

        try
          HueMods := (H/T);
          SatMods := (S/T);
          Tolerance := Round(t);
        except
          HueMods := 0;
          SatMods := 0;
          Tolerance := Round(0.0);
        end;

        Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
      end;

      Function FindLivid(Var X,Y: Integer): Boolean;
      var
        B: TBox;
        TPA,PAr: TPointArray;
        i,h,CTS: Integer;
        TBA: TBoxArray;
        MBP: TPoint;
        ATPA: T2DPointArray;
      begin
        Result := False;
        if not LoggedIn then Exit;

        CTS := GetColorToleranceSpeed;
        PAr := TPAFromBox(IntToBox(245, 135, 275, 190));

        ColorToleranceSpeed(2);
        SetColorSpeed2Modifiers(8.34, 0.33);

        FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1907996, MSX1, MSY1, MSX2, MSY2, 6);
        ColorToleranceSpeed(CTS);
        SetColorSpeed2Modifiers(0.2, 0.2);

        if (Length(TPA) < 1) then
          Exit;

        TPA := ClearTPAFromTPA(TPA, PAr);
        ATPA := SplitTPAEx(TPA, 30, 40);
        SortATPAFromFirstpoint(ATPA, Point(MSCX, MSCY));;

        for i := 0 to High(ATPA) do
        begin
          if (GetArrayLength(ATPA[I]) > 50) then
          begin
            B := GetTPABounds(ATPA[i]);

            SetArrayLength(TBA, Length(TBA)+1);
            TBA[High(TBA)] := B;
          end;
        end;

        if DebugMode then
        begin
          SMART_DrawBoxes(True, TBA, clRed);
          if (Length(TBA) > 0) then
            SMART_DrawBoxEx(False, TBA[0], 65280);
        end;

        for h := 0 to High(TBA) do
        begin
          MBP := MiddleBox(TBA[h]);
          HumanMMouse(MBP.X, MBP.Y, 5, 5);
          if WaitUpTextMulti(['Cure', 'plant', 'Diseased', 'livd'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end else
            Result := False;
        end;

      end;

      Function FindSoil(Var X,Y: Integer): Boolean;
      var
        B,B2: TBox;
        TPA,TPA2,PAr: TPointArray;
        Hmod,Hmod2,Smod2,Smod: Extended;
        i,h,Tol,Tol2,CTS,Col2,Col: Integer;
        TBA: TBoxArray;
        MBP: TPoint;
        ATPA: T2DPointArray;
      begin
        CTS := GetColorToleranceSpeed;
        PAr := TPAFromBox(IntToBox(245, 155, 270, 190));

        ColorToleranceSpeed(2);
        ReturnValues(SCols, Hmod, Smod, Col, Tol);
        SetColorSpeed2Modifiers(Hmod, SMod);

        FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);

        if (Length(TPA) < 1) then
        begin
          ColorToleranceSpeed(CTS);
          SetColorSpeed2Modifiers(0.2, 0.2);
          Exit;
        end;

        TPA := ClearTPAFromTPA(TPA, PAr);
        ATPA := SplitTPAEx(TPA, 30, 30);
        SortATPAFromFirstpoint(ATPA, Point(MSCX, MSCY));

        for i := 0 to High(ATPA) do
        begin
          B := GetTPABounds(ATPA[i]);

          ReturnValues(PCols, Hmod2, Smod2, Col2, Tol2);
          SetColorSpeed2Modifiers(Hmod2, SMod2);

          if not FindColorsSpiralTolerance(MSCX, MSCY, TPA2, Col2, B.X1, B.Y1, B.X2, B.Y2, Tol2) then
          begin
            B2 := GetTPABounds(ATPA[i]);
            SetArrayLength(TBA, Length(TBA)+1);
            TBA[High(TBA)] := B2;
          end;

        end;

        ColorToleranceSpeed(CTS);
        SetColorSpeed2Modifiers(0.2, 0.2);

        if DebugMode then
        begin
          SMART_DrawBoxes(True, TBA, clRed);
          if (Length(TBA) > 0) then
            SMART_DrawBoxEx(False, TBA[0], 65280);
        end;

        for h := 0 to High(TBA) do
        begin
          MBP := MiddleBox(TBA[h]);
          HumanMMouse(MBP.X, MBP.Y, 5, 5);
          if WaitUpTextMulti(['Fertilise', 'Empty', 'patch'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end else
            Result := False;
        end;

      end;

      Function FindPauline(Var X,Y: Integer): Boolean;
      var
        B: TBox;
        TPA,PArr: TPointArray;
        i,h,CTS: Integer;
        MBP: TPoint;
        ATPA: T2DPointArray;
        Cols,Tols: TIntegerArray;
        HMods,SMods: Array of Extended;
      begin
        Result := False;
        if not LoggedIn then Exit;

        CTS := GetColorToleranceSpeed;
        PArr := TPAFromBox(IntToBox(245, 135, 275, 190));

        Cols := [6319982, 6583413, 6648947];
        Tols  := [9, 12, 9];
        HMods := [0.10, 0.09, 0.09];
        SMods := [0.04, 0.08, 0.08];

        for h := 0 to High(Cols) do
        begin
          ColorToleranceSpeed(2);
          SetColorSpeed2Modifiers(HMods[h], SMods[h]);
          FindColorsSpiralTolerance(370, 30, TPA, Cols[h], 300, 5, 420, 70, Tols[h]);
          TPA := ClearTPAFromTPA(TPA, PArr);
          if (Length(TPA) > 0) then break;
        end;

        ColorToleranceSpeed(CTS);
        SetColorSpeed2Modifiers(0.2, 0.2);

        if (Length(TPA) < 1) then
        begin
          Writeln('No Pauline colors found');
          Exit;
        end;

        TPA := ClearTPAFromTPA(TPA, PArr);
        ATPA := SplitTPAEx(TPA, 15, 25);
        SortATPAFromFirstpoint(ATPA, Point(370, 30));;

        for i := 0 to High(ATPA) do
        begin
          B := GetTPABounds(ATPA[i]);

          if DebugMode then
            SMART_DrawBoxEx(True, B, 65280);

          MBP := MiddleBox(B);
          HumanMMouse(MBP.X, MBP.Y, 5, 5);
          if WaitUpTextMulti(['alk-t', 'rain', 'auli', 'Paul','olari'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end;
        end;

      end;

      Function GetLividType(X, Y: Integer): Integer;
      var
        R1C1,R1C2,R1C3,R1C4,R1C5,
        R2C1,R2C2,R2C3,R2C4,R2C5,
        R3C1,R3C2,R3C3,R3C4,R3C5: TBox;
      begin
        Result := 0;
      //Top row
        R1C1 := IntToBox(100, 20, 150, 70);
        R1C2 := IntToBox(165, 20, 220, 70);
        R1C3 := IntToBox(235, 20, 290, 70);
        R1C4 := IntToBox(300, 20, 355, 70);
        R1C5 := IntToBox(370, 20, 440, 70);

      //Middle row
        R2C1 := IntToBox(70, 100, 135, 160);
        R2C2 := IntToBox(155, 100, 220, 160);
        R2C3 := IntToBox(230, 100, 290, 160);
        R2C4 := IntToBox(305, 100, 365, 160);
        R2C5 := IntToBox(380, 100, 440, 160);

      //Bottom row
        R3C1 := IntToBox(60, 210, 125, 270);
        R3C2 := IntToBox(140, 210, 215, 270);
        R3C3 := IntToBox(225, 210, 295, 270);
        R3C4 := IntToBox(305, 210, 375, 270);
        R3C5 := IntToBox(400, 210, 470, 270);

        if (IntInBox(X, Y, R1C1) or IntInBox(X, Y, R1C2) or        //Type 1
          IntInBox(X, Y, R1C3) or IntInBox(X, Y, R1C5)) then
            Result := 1
        else if (IntInBox(X, Y, R1C4) or IntInBox(X, Y, R2C3) or   //Type 2
          IntInBox(X, Y, R2C4) or IntInBox(X, Y, R2C5)) then
            Result := 2
        else if (IntInBox(X, Y, R2C2) or IntInBox(X, Y, R3C1) or   //Type 3
          IntInBox(X, Y, R3C5)) then
            Result := 3
        else if (IntInBox(X, Y, R2C1) or IntInBox(X, Y, R3C2) or   //Type 4
          IntInBox(X, Y, R3C3) or IntInBox(X, Y, R3C4)) then
            Result := 4;

      end;

      Function LividMenu: Boolean;
      var
        X,Y: Integer;
      begin
        Result := FindText(x, y, 'train', SmallChars, MIX1, MIY1, MIX2, MIY2);
      end;

      Function TalkScreen: Boolean;
      begin
        Result := GetColor(216, 360) = 7913190;
      end;

      Procedure QuickLow;
      begin
        KeyDown(40);
        Wait(850 + Random(100));
        KeyUp(40);
      end;

      Procedure QuickHigh;
      begin
        Mouse(542, 24, 15, 15, mouse_left);
        KeyDown(38);
        Wait(950 + Random(100));
        KeyUp(38);
      end;

      Procedure CureLivid(Strain: Integer);
      var
        SPoint: TPoint;
      begin
        if (Strain = 1) then
          SPoint := Point(590, 280)
        else if (Strain = 2) then
          SPoint := Point(680, 280)
        else if (Strain = 3) then
          SPoint := Point(590, 400)
        else if (Strain = 4) then
          SPoint := Point(680, 400);

        HumanMMouse(SPoint.X, SPoint.Y, 10, 10);
        if WaitUpText('Continue', 300) then
        begin
          ClickMouse2(True);
          Inc(PlantCount);
          IncEx(FarmXP_O, 92);
          IncEx(FarmXP, 92);
          IncEx(MageXP_O, 60);
          IncEx(MageXP, 60);
          IncEx(Points, 20);
        end;
      end;

      Function HandleLivids: Boolean;
      var
        X,Y,T: Integer;
      label
        Start;
      begin
        Result := False;

        Start:
        if not LoggedIn then Exit;
        FindNormalRandoms;

        MouseSpeed := RandomRange(12, 16);

        if FindLivid(X, Y) then
        begin
          if (GetLividType(X, Y) = 0) then
            GoTo Start;

          CheckedPauline := False;

          ClickMouse2(False);
          if WaitOptionMulti(['Cure', 're-p', '-pl', 'lant'], 500) then
          begin
            HumanMMouse(635, 310, 65, 70);
            if DebugMode then
              Smart_ClearCanvas;
          end;

          MarkTime(T);
          repeat
            if (TimeFromMark(T) > 3000) then
              Exit;
            if LividMenu then
              break;
          until(false)

          if LividMenu then
          begin
            CureLivid(GetLividType(X, Y));
            Wait(randomRange(1915, 2570));
            GoTo Start;
          end;
        end else
          Result := True;

      end;

      Function HandleSoil: Boolean;
      var
        X,Y: Integer;
      label
        Start;
      begin
        Result := False;

        Start:
        MouseSpeed := RandomRange(12, 16);
        FindNormalRandoms;

        if FindSoil(X, Y) then
        begin
          CheckedPauline := False;

          ClickMouse2(False);
          if WaitOption('Empty', 500) then
          begin
            Inc(SoilCount);
            IncEx(FarmXP_O, 92);
            IncEx(FarmXP, 92);
            IncEx(MageXP_O, 87);
            IncEx(MageXP, 87);
            IncEx(Points, 20);
            Smart_ClearCanvas;
            Wait(randomRange(1915, 2570));
            GoTo Start;
          end;
        end else
          Result := True;

      end;

      Function HandleThatTiredPaulinePersonWhoNeedsEncouragementBecauseWeAreProLikeABoss: Boolean;
      Var
        X,Y: Integer;
        ExBMP,FanBMP,LukBMP,
        ProBMP,WeBMP,WellBMP: Integer;
      begin
        Result := False;
        if not LoggedIn then Exit;

        if ((not FindLivid(X, Y)) and (not FindSoil(X, Y))) then
        begin
          QuickLow;
          MakeCompass('E');
          Wait(RandomRange(235, 320));

          if FindPauline(X, Y) then
          begin
            if WaitUpTextMulti(['Drai', 'raine'], 500) then
            begin
              ClickMouse2(False);
              if WaitOptionMulti(['Ener', 'ergis', 'gise'], 500) then
              begin

                if DebugMode then
                  Smart_ClearCanvas;

                if WaitFunc(@TalkScreen, 10, 3000) then
                begin
                  ExBMP := BitmapFromString(16, 5, 'meJw7cQIFMMAAhI0sAuGiiaDJYop' +
                      'QSz0e92C6H9MjcAAAAUs6mQ==');
                  FanBMP := BitmapFromString(67, 6, 'meJw7cQIKGHCAE0gAUxBZBI96POJ' +
                      '4zCTDGcguwSWI7FQ8gsRrwQXw+AWPFvwBRU+PEBNlpGqhv0eI9Ckx' +
                      'WgY2Rij3CMGoITKXEXQzMSmHkqQFAMDdFvg=');
                  LukBMP := BitmapFromString(18, 7, 'meJw7ceIEAwPDCTCJH8DVnAAD/Lp' +
                      'OIAEidSGLI+siaBEZunC5kKAuXOaQpAWiCwCFcEZR');
                  ProBMP := BitmapFromString(26, 7, 'meJw7cQIBGJAAVkFMWWQFmFw0Bho' +
                      'bqyCyLjzieJxHqmlYPUi5aZS7jYHcWMDvI1wAl0YAdzB8OQ==');
                  WellBMP := BitmapFromString(41, 6, 'meJw7cQIBGLABTFmC6nExcOnFahS' +
                      'mIJo5JFmNSy8uc/C4EI/VmCQDkpcxgxHTHEwHUGg1LvNxWY1LOzFG' +
                      '4WFjDQFMBQQFibEaTS8AGGuowQ==');
                  WeBMP := BitmapFromString(23, 8, 'meJw7ceIEAwycQGKTBE5QwxC4XjQ' +
                      'TTsAAHl3ICjANIeg8TAVYDUEG+A0hxiW4/EJQkAzv4HIe8QELAEER' +
                      'YnE=');

                  if (FindBitmapToleranceIn(ExBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(WellBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(FanBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(LukBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(ProBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(WeBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15)) then
                  begin
                    HumanMMouse(X, Y+2, 10, 2);
                    ClickMouse2(True);
                    IncEx(AgilXP_O, 168);
                    IncEx(AgilXP, 168);
                    IncEx(MageXP_O, 100);
                    IncEx(MageXP, 100);
                    IncEx(Points, 100);
                  end;

                  FreeBitmap(ExBMP);
                  FreeBitmap(WellBMP);
                  FreeBitmap(FanBMP);
                  FreeBitmap(LukBMP);
                  FreeBitmap(ProBMP);
                  FreeBitmap(WeBMP);
                end;

              end;
            end;

            Result := True;
          end;

          QuickHigh;
          CheckedPauline := True;

        end;

      end;

      Function DoAntiban: Boolean;
      var
        i: Integer;
      begin
        if not LoggedIn then Exit;
        i := Random(900);
        case i of
          1..45:
            begin
              HumanRandomMouse;
              Result := True;
            end;
          46:
            begin
              HoverSkill('Farming', False);
              Result := True;
            end;
          47:
            begin
              HoverSkill('Magic', False);
              Result := True;
            end;
        end;

        Wait(100);

      end;

      Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
      Var
        h,m,s: integer;
      begin
        if not LoggedIn then Exit;

        if (HowManyPlayers = 1) then
        begin
          if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
          else
            if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
            begin
              RealBTime := ((x+z)/60000);
              Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
              Logout;
              MarkTime(CurrentBTime);
              repeat
                Wait(21000);
                ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                ClearDebug;
                Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
              until(TimeFromMark(CurrentBTime)>(x+z));
              Writeln('Logging in.');
              if SwitchWorlds then
                if LoginPlayerToLob then
                  ChangeWorld(RandomWorld(True, False))
              else
                LoginPlayer;
              Wait(4000);
              Result := LoggedIn;
              ClickNorth(SRL_ANGLE_HIGH);
              IncEx(BreakRounds, (w) + (x));
              Inc(TotalBreaks);
              Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
              w := (BreakIn * 60000);
              x := (BreakFor * 60000);
              y := RandomRange(-Bir * 60000, Bir * 60000);
              z := RandomRange(-Bfr * 60000, Bfr * 60000);
            end;
        end;
      end;

      Procedure FoundARandom;
      begin
        Writeln('Found a random!');
        PlaySound(ScriptPath+'evilaugh.wav');
        Wait(RandomRange(10000, 20000));
      end;

    begin
      Smart_Server := 86;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;

      setupSRL();
      DeclarePlayers;

      LoadVars;

      Smart_ClearCanvas;
      LoginPlayer;

      QuickHigh;
      //SRL_Procs[SRL_OnFindRandom] := @FoundARandom;

      Repeat

        if not LoggedIn then
        begin
          LoginPlayer;
          ClickNorth(SRL_ANGLE_HIGH);
        end;

        BreakHandler(BreakIn,BreakFor,Bir,Bfr);

        if (TimeFromMark(CommitTime)>=30000) then
          Commit;

        if (TimeFromMark(ReportTime)>=30000) then
          Report;

        FindNormalRandoms;
        HandleLivids;
        HandleSoil;

        if not CheckedPauline then
          HandleThatTiredPaulinePersonWhoNeedsEncouragementBecauseWeAreProLikeABoss;

        DoAntiban;

      Until(AllPlayersInactive)
    end.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  24. #449
    Join Date
    Nov 2011
    Posts
    23
    Mentioned
    0 Post(s)
    Quoted
    4 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Here's V.1.2 for anyone who would like to test it out with me. Same as before but now you must have Law runes in your inventory.

    Simba Code:
    {/////////////////////////////////////////
                      //             LividFarmer              //
                      //             (by Flight)              //
                      //                                      //
                      //             Version: 1.2             //
                      /////////////////////////////////////////}


    program LividFarmer;
      {$DEFINE SRL5}
      {$DEFINE SMART}

      {$i SRL/srl.simba}
      {$i SRL/SRL/misc/reports.simba}
      {$i SRL/SRL/misc/paintsmart.simba}

    Const

    //SRL Stats
      SRLStats_Username = '';
      SRLStats_Password = '';

    //General settings
      DebugMode    = True;    //On-screen debugging?
      SwitchWorlds = True;    //Switch worlds after a break?

    //Break settings
      BreakIn      = 135;     //How long before we take a break? (minutes)
      BreakFor     = 15;      //How long will we break for? (minutes)
      Bir          = 13;      //Random minutes to add/subtract from how long until we break
      Bfr          = 7;       //Random minutes to add/subjtract from break duraction

    Var

    //Static
      Version: String;
      SCols,PCols: TIntegerArray;

    //Dynamic
      FarmXP,FarmXP_O,MageXP,
      MageXP_O,AgilXP,AgilXP_O,
      Points,CommitTime,
      ReportTime,PlantCount,
      SoilCount: Integer;
      CheckedPauline: Boolean;

    //Break variables
      w,x,y,z,RealBTime,CurrentBTime,
      BreakRounds,TotalBreaks: Integer;


      Procedure DeclarePlayers;
      begin
        HowManyPlayers := 1;
        NumberOfPlayers(HowManyPlayers);
        CurrentPlayer := 0;
        with Players[0] do
        begin
          Name        := '';
          Pass        := '';
          BoxRewards  := ['XP','xp','lamp'];
          LampSkill   := Skill_Farming;
          Active      := True;
        end;
      end;

      Procedure LoadVars;
      begin
        Version := '1.2';
        MarkTime(ReportTime);
        MarkTime(CommitTime);
        CheckedPauline := False;

        SetupSRLStats(156, SRLStats_Username, SRLStats_Password);

        w := (BreakIn * 60000);
        x := (BreakFor * 60000);
        y := RandomRange(-Bir * 60000, Bir * 60000);
        z := RandomRange(-Bfr * 60000, Bfr * 60000);

        SCols := [5073267, 5204854, 5465452, 5402748];          //Soil colors
        PCols := [4542282, 4674124, 4871760, 5003346, 5135188]; //Healthy livid colors
      end;

      Procedure Report;
      Var
        FXPH,MXPH,AXPH: Integer;
      begin
        FXPH := Round((FarmXP * 3600) / (GetTimeRunning / 1000));
        MXPH := Round((MageXP * 3600) / (GetTimeRunning / 1000));
        AXPH := Round((AgilXP * 3600) / (GetTimeRunning / 1000));

        ClearDebug;
        SRLProgressReport(ResultDebugBox, 'LividFarmer', 'Flight', Version,
          ['Run time', 'Points', 'Plants cured', 'Soil fertilized', 'Farming XP',
            'Farming XP/Hr', 'Magic XP', 'Magic XP/Hr', 'Agility XP', 'Agility XP/Hr','Breaks'],
        [MsToTime(GetTimeRunning, Time_Abbrev), Points, PlantCount, SoilCount, FarmXP,
          FXPH, MageXP, MXPH, AgilXP, AXPH, TotalBreaks]);

        MarkTime(ReportTime);
      end;

      Procedure Commit;
      begin
        stats_IncVariable('Farming EXP (Gained)', FarmXP_O);
        stats_IncVariable('Magic EXP (Gained)', MageXP_O);
        stats_IncVariable('Agility EXP (Gained)', AgilXP_O);
        Stats_Commit;
        FarmXP_O := 0;
        MageXP_O := 0;
        AgilXP_O := 0;
        MarkTime(CommitTime);
      end;

      //By Bandland100, modified to shift mouse speeds after every step
      procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
      var
        veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
        lastX,lastY,MSP,W: integer;
        sqrt2,sqrt3,sqrt5: extended;
      begin
        MSP  := MouseSpeed;
        sqrt2:= sqrt(2);
        sqrt3:= sqrt(3);
        sqrt5:= sqrt(5);
        while hypot(xs - xe, ys - ye) > 1 do
        begin
          dist:= hypot(xs - xe, ys - ye);
          wind:= minE(wind, dist);
          if dist >= targetArea then
          begin
            windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
            windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
          end else
          begin
            windX:= windX / sqrt2;
            windY:= windY / sqrt2;
            if (maxStep < 3) then
            begin
              maxStep:= random(3) + 3.0;
            end else
            begin
              maxStep:= maxStep / sqrt5;
            end;
          end;
          veloX:= veloX + windX;
          veloY:= veloY + windY;
          veloX:= veloX + gravity * (xe - xs) / dist;
          veloY:= veloY + gravity * (ye - ys) / dist;
          if hypot(veloX, veloY) > maxStep then
          begin
            randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
            veloMag:= sqrt(veloX * veloX + veloY * veloY);
            veloX:= (veloX / veloMag) * randomDist;
            veloY:= (veloY / veloMag) * randomDist;
          end;
          lastX:= Round(xs);
          lastY:= Round(ys);
          xs:= xs + veloX;
          ys:= ys + veloY;

          case Random(50) of
            1..25: W := (MSP + (Random((MSP/4))));
            26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
          end;
          if (W < 1) then
            W := 1;

          if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
            MoveMouse(Round(xs), Round(ys));

          if not DebugMode then
            SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);

          step:= hypot(xs - lastX, ys - lastY);
          wait(W);
          lastdist:= dist;
        end;

        if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
          MoveMouse(Round(xe), Round(ye));

        MouseSpeed := MSP;
      end;

      Procedure HumanRandomMouse;
      var
        randSpeed: extended;
        x, y, firstSpeed: integer;
      begin
        case(Random(10)) of
          2..8:
          begin
            firstSpeed := mouseSpeed;

            mouseSpeed := RandomRange(5,10);
            randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
            GetMousePos(x, y);
            SuperWindMouse(x, y, RandomRange(x - 75, x + 75), RandomRange(y - 75, y + 75),
                    30, 55, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);

            mouseSpeed := firstSpeed;
            Smart_ClearCanvas;
          end;
        end;
      end;

      Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
      var
        randSpeed: extended;
        X,Y,X2,Y2,A,Dist,MP: integer;
      begin
        A := MouseSpeed;
        GetMousePos(X, Y);
        Dist := Distance(X, Y, eX, eY);
        MP := Round(Dist/150);
        if MP < 0 then
          MP := 1;

        randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
        X2 := RandomRange(eX-(A*MP), eX+(A*MP));
        Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
        SuperWindMouse(X, Y, X2, Y2, 9.0, 3.0, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
        GetMousePos(X, Y);
        MMouse(eX, eY, ranX, ranY);
        MouseSpeed := A;
      end;

      Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
      Var
        h, s, t: Extended;
        I,II : integer;
        HSLColor : Array[1..3] of Extended;
        HSL : Array[0..1] of Array[1..3] of Extended;
      begin;
        For I:= 1 to 3 do
        begin;
          HSL[0][i] := 255;
        end;

        For I:= 0 to High(Colors) do
        begin;
          ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
          For II:= 1 to 3 do
          begin;
            HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
            HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
          end;
        end;

        H := (HSL[1][1] - HSL[0][1]);
        S := (HSL[1][2] - HSL[0][2]);
        T := (HSL[1][3] - HSL[0][3]);

        try
          HueMods := (H/T);
          SatMods := (S/T);
          Tolerance := Round(t);
        except
          HueMods := 0;
          SatMods := 0;
          Tolerance := Round(0.0);
        end;

        Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
      end;

      Function FindLivid(Var X,Y: Integer): Boolean;
      var
        B: TBox;
        TPA,PAr: TPointArray;
        i,h,CTS: Integer;
        TBA: TBoxArray;
        MBP: TPoint;
        ATPA: T2DPointArray;
      begin
        Result := False;
        if not LoggedIn then Exit;

        CTS := GetColorToleranceSpeed;
        PAr := TPAFromBox(IntToBox(245, 135, 275, 190));

        ColorToleranceSpeed(2);
        SetColorSpeed2Modifiers(8.34, 0.33);

        FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1907996, MSX1, MSY1, MSX2, MSY2, 6);
        ColorToleranceSpeed(CTS);
        SetColorSpeed2Modifiers(0.2, 0.2);

        if (Length(TPA) < 1) then
          Exit;

        TPA := ClearTPAFromTPA(TPA, PAr);
        ATPA := SplitTPAEx(TPA, 30, 40);
        SortATPAFromFirstpoint(ATPA, Point(MSCX, MSCY));;

        for i := 0 to High(ATPA) do
        begin
          if (GetArrayLength(ATPA[I]) > 50) then
          begin
            B := GetTPABounds(ATPA[i]);

            SetArrayLength(TBA, Length(TBA)+1);
            TBA[High(TBA)] := B;
          end;
        end;

        if DebugMode then
        begin
          SMART_DrawBoxes(True, TBA, clRed);
          if (Length(TBA) > 0) then
            SMART_DrawBoxEx(False, TBA[0], 65280);
        end;

        for h := 0 to High(TBA) do
        begin
          MBP := MiddleBox(TBA[h]);
          HumanMMouse(MBP.X, MBP.Y, 5, 5);
          if WaitUpTextMulti(['Cure', 'plant', 'Diseased', 'livd'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end else
            Result := False;
        end;

      end;

      Function FindSoil(Var X,Y: Integer): Boolean;
      var
        B,B2: TBox;
        TPA,TPA2,PAr: TPointArray;
        Hmod,Hmod2,Smod2,Smod: Extended;
        i,h,Tol,Tol2,CTS,Col2,Col: Integer;
        TBA: TBoxArray;
        MBP: TPoint;
        ATPA: T2DPointArray;
      begin
        CTS := GetColorToleranceSpeed;
        PAr := TPAFromBox(IntToBox(245, 155, 270, 190));

        ColorToleranceSpeed(2);
        ReturnValues(SCols, Hmod, Smod, Col, Tol);
        SetColorSpeed2Modifiers(Hmod, SMod);

        FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);

        if (Length(TPA) < 1) then
        begin
          ColorToleranceSpeed(CTS);
          SetColorSpeed2Modifiers(0.2, 0.2);
          Exit;
        end;

        TPA := ClearTPAFromTPA(TPA, PAr);
        ATPA := SplitTPAEx(TPA, 30, 30);
        SortATPAFromFirstpoint(ATPA, Point(MSCX, MSCY));

        for i := 0 to High(ATPA) do
        begin
          B := GetTPABounds(ATPA[i]);

          ReturnValues(PCols, Hmod2, Smod2, Col2, Tol2);
          SetColorSpeed2Modifiers(Hmod2, SMod2);

          if not FindColorsSpiralTolerance(MSCX, MSCY, TPA2, Col2, B.X1, B.Y1, B.X2, B.Y2, Tol2) then
          begin
            B2 := GetTPABounds(ATPA[i]);
            SetArrayLength(TBA, Length(TBA)+1);
            TBA[High(TBA)] := B2;
          end;

        end;

        ColorToleranceSpeed(CTS);
        SetColorSpeed2Modifiers(0.2, 0.2);

        if DebugMode then
        begin
          SMART_DrawBoxes(True, TBA, clRed);
          if (Length(TBA) > 0) then
            SMART_DrawBoxEx(False, TBA[0], 65280);
        end;

        for h := 0 to High(TBA) do
        begin
          MBP := MiddleBox(TBA[h]);
          HumanMMouse(MBP.X, MBP.Y, 5, 5);
          if WaitUpTextMulti(['Fertilise', 'Empty', 'patch'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end else
            Result := False;
        end;

      end;

      Function FindPauline(Var X,Y: Integer): Boolean;
      var
        B: TBox;
        TPA,PArr: TPointArray;
        i,h,CTS: Integer;
        MBP: TPoint;
        ATPA: T2DPointArray;
        Cols,Tols: TIntegerArray;
        HMods,SMods: Array of Extended;
      begin
        Result := False;
        if not LoggedIn then Exit;

        CTS := GetColorToleranceSpeed;
        PArr := TPAFromBox(IntToBox(245, 135, 275, 190));

        Cols := [6319982, 6583413, 6648947];
        Tols  := [9, 12, 9];
        HMods := [0.10, 0.09, 0.09];
        SMods := [0.04, 0.08, 0.08];

        for h := 0 to High(Cols) do
        begin
          ColorToleranceSpeed(2);
          SetColorSpeed2Modifiers(HMods[h], SMods[h]);
          FindColorsSpiralTolerance(370, 30, TPA, Cols[h], 300, 5, 420, 70, Tols[h]);
          TPA := ClearTPAFromTPA(TPA, PArr);
          if (Length(TPA) > 0) then break;
        end;

        ColorToleranceSpeed(CTS);
        SetColorSpeed2Modifiers(0.2, 0.2);

        if (Length(TPA) < 1) then
        begin
          Writeln('No Pauline colors found');
          Exit;
        end;

        TPA := ClearTPAFromTPA(TPA, PArr);
        ATPA := SplitTPAEx(TPA, 15, 25);
        SortATPAFromFirstpoint(ATPA, Point(370, 30));;

        for i := 0 to High(ATPA) do
        begin
          B := GetTPABounds(ATPA[i]);

          if DebugMode then
            SMART_DrawBoxEx(True, B, 65280);

          MBP := MiddleBox(B);
          HumanMMouse(MBP.X, MBP.Y, 5, 5);
          if WaitUpTextMulti(['alk-t', 'rain', 'auli', 'Paul','olari'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end;
        end;

      end;

      Function GetLividType(X, Y: Integer): Integer;
      var
        R1C1,R1C2,R1C3,R1C4,R1C5,
        R2C1,R2C2,R2C3,R2C4,R2C5,
        R3C1,R3C2,R3C3,R3C4,R3C5: TBox;
      begin
        Result := 0;
      //Top row
        R1C1 := IntToBox(100, 20, 150, 70);
        R1C2 := IntToBox(165, 20, 220, 70);
        R1C3 := IntToBox(235, 20, 290, 70);
        R1C4 := IntToBox(300, 20, 355, 70);
        R1C5 := IntToBox(370, 20, 440, 70);

      //Middle row
        R2C1 := IntToBox(70, 100, 135, 160);
        R2C2 := IntToBox(155, 100, 220, 160);
        R2C3 := IntToBox(230, 100, 290, 160);
        R2C4 := IntToBox(305, 100, 365, 160);
        R2C5 := IntToBox(380, 100, 440, 160);

      //Bottom row
        R3C1 := IntToBox(60, 210, 125, 270);
        R3C2 := IntToBox(140, 210, 215, 270);
        R3C3 := IntToBox(225, 210, 295, 270);
        R3C4 := IntToBox(305, 210, 375, 270);
        R3C5 := IntToBox(400, 210, 470, 270);

        if (IntInBox(X, Y, R1C1) or IntInBox(X, Y, R1C2) or        //Type 1
          IntInBox(X, Y, R1C3) or IntInBox(X, Y, R1C5)) then
            Result := 1
        else if (IntInBox(X, Y, R1C4) or IntInBox(X, Y, R2C3) or   //Type 2
          IntInBox(X, Y, R2C4) or IntInBox(X, Y, R2C5)) then
            Result := 2
        else if (IntInBox(X, Y, R2C2) or IntInBox(X, Y, R3C1) or   //Type 3
          IntInBox(X, Y, R3C5)) then
            Result := 3
        else if (IntInBox(X, Y, R2C1) or IntInBox(X, Y, R3C2) or   //Type 4
          IntInBox(X, Y, R3C3) or IntInBox(X, Y, R3C4)) then
            Result := 4;

      end;

      Function LividMenu: Boolean;
      var
        X,Y: Integer;
      begin
        Result := FindText(x, y, 'train', SmallChars, MIX1, MIY1, MIX2, MIY2);
      end;

      Function TalkScreen: Boolean;
      begin
        Result := GetColor(216, 360) = 7913190;
      end;

      Procedure QuickLow;
      begin
        KeyDown(40);
        Wait(850 + Random(100));
        KeyUp(40);
      end;

      Procedure QuickHigh;
      begin
        Mouse(542, 24, 15, 15, mouse_left);
        KeyDown(38);
        Wait(950 + Random(100));
        KeyUp(38);
      end;

      Procedure CureLivid(Strain: Integer);
      var
        SPoint: TPoint;
      begin
        if (Strain = 1) then
          SPoint := Point(590, 280)
        else if (Strain = 2) then
          SPoint := Point(680, 280)
        else if (Strain = 3) then
          SPoint := Point(590, 400)
        else if (Strain = 4) then
          SPoint := Point(680, 400);

        HumanMMouse(SPoint.X, SPoint.Y, 10, 10);
        if WaitUpText('Continue', 300) then
        begin
          ClickMouse2(True);
          Inc(PlantCount);
          IncEx(FarmXP_O, 92);
          IncEx(FarmXP, 92);
          IncEx(MageXP_O, 60);
          IncEx(MageXP, 60);
          IncEx(Points, 20);
        end;
      end;

      Function HandleLivids: Boolean;
      var
        X,Y,T: Integer;
      label
        Start;
      begin
        Result := False;

        Start:
        if not LoggedIn then Exit;
        FindNormalRandoms;

        MouseSpeed := RandomRange(12, 16);

        if FindLivid(X, Y) then
        begin
          if (GetLividType(X, Y) = 0) then
            GoTo Start;

          CheckedPauline := False;

          ClickMouse2(False);
          if WaitOptionMulti(['Cure', 're-p', '-pl', 'lant'], 500) then
          begin
            HumanMMouse(635, 310, 65, 70);
            if DebugMode then
              Smart_ClearCanvas;
          end;

          MarkTime(T);
          repeat
            if (TimeFromMark(T) > 3000) then
              Exit;
            if LividMenu then
              break;
          until(false)

          if LividMenu then
          begin
            CureLivid(GetLividType(X, Y));
            Wait(randomRange(1915, 2570));
            GoTo Start;
          end;
        end else
          Result := True;

      end;

      Function HandleSoil: Boolean;
      var
        X,Y: Integer;
      label
        Start;
      begin
        Result := False;

        Start:
        MouseSpeed := RandomRange(12, 16);
        FindNormalRandoms;

        if FindSoil(X, Y) then
        begin
          CheckedPauline := False;

          ClickMouse2(False);
          if WaitOption('Empty', 500) then
          begin
            Inc(SoilCount);
            IncEx(FarmXP_O, 92);
            IncEx(FarmXP, 92);
            IncEx(MageXP_O, 87);
            IncEx(MageXP, 87);
            IncEx(Points, 20);
            Smart_ClearCanvas;
            Wait(randomRange(1915, 2570));
            GoTo Start;
          end;
        end else
          Result := True;

      end;

      Function HandleThatTiredPaulinePersonWhoNeedsEncouragementBecauseWeAreProLikeABoss: Boolean;
      Var
        X,Y: Integer;
        ExBMP,FanBMP,LukBMP,
        ProBMP,WeBMP,WellBMP: Integer;
      begin
        Result := False;
        if not LoggedIn then Exit;

        if ((not FindLivid(X, Y)) and (not FindSoil(X, Y))) then
        begin
          QuickLow;
          MakeCompass('E');
          Wait(RandomRange(235, 320));

          if FindPauline(X, Y) then
          begin
            if WaitUpTextMulti(['Drai', 'raine'], 500) then
            begin
              ClickMouse2(False);
              if WaitOptionMulti(['Ener', 'ergis', 'gise'], 500) then
              begin

                if DebugMode then
                  Smart_ClearCanvas;

                if WaitFunc(@TalkScreen, 10, 3000) then
                begin
                  ExBMP := BitmapFromString(16, 5, 'meJw7cQIFMMAAhI0sAuGiiaDJYop' +
                      'QSz0e92C6H9MjcAAAAUs6mQ==');
                  FanBMP := BitmapFromString(67, 6, 'meJw7cQIKGHCAE0gAUxBZBI96POJ' +
                      '4zCTDGcguwSWI7FQ8gsRrwQXw+AWPFvwBRU+PEBNlpGqhv0eI9Ckx' +
                      'WgY2Rij3CMGoITKXEXQzMSmHkqQFAMDdFvg=');
                  LukBMP := BitmapFromString(18, 7, 'meJw7ceIEAwPDCTCJH8DVnAAD/Lp' +
                      'OIAEidSGLI+siaBEZunC5kKAuXOaQpAWiCwCFcEZR');
                  ProBMP := BitmapFromString(26, 7, 'meJw7cQIBGJAAVkFMWWQFmFw0Bho' +
                      'bqyCyLjzieJxHqmlYPUi5aZS7jYHcWMDvI1wAl0YAdzB8OQ==');
                  WellBMP := BitmapFromString(41, 6, 'meJw7cQIBGLABTFmC6nExcOnFahS' +
                      'mIJo5JFmNSy8uc/C4EI/VmCQDkpcxgxHTHEwHUGg1LvNxWY1LOzFG' +
                      '4WFjDQFMBQQFibEaTS8AGGuowQ==');
                  WeBMP := BitmapFromString(23, 8, 'meJw7ceIEAwycQGKTBE5QwxC4XjQ' +
                      'TTsAAHl3ICjANIeg8TAVYDUEG+A0hxiW4/EJQkAzv4HIe8QELAEER' +
                      'YnE=');

                  if (FindBitmapToleranceIn(ExBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(WellBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(FanBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(LukBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(ProBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15) or
                      FindBitmapToleranceIn(WeBMP, X, Y, MCX1, MCY1, MCX2, MCY2, 15)) then
                  begin
                    HumanMMouse(X, Y+2, 10, 2);
                    ClickMouse2(True);
                    IncEx(AgilXP_O, 168);
                    IncEx(AgilXP, 168);
                    IncEx(MageXP_O, 100);
                    IncEx(MageXP, 100);
                    IncEx(Points, 100);
                  end;

                  FreeBitmap(ExBMP);
                  FreeBitmap(WellBMP);
                  FreeBitmap(FanBMP);
                  FreeBitmap(LukBMP);
                  FreeBitmap(ProBMP);
                  FreeBitmap(WeBMP);
                end;

              end;
            end;

            Result := True;
          end;

          QuickHigh;
          CheckedPauline := True;

        end;

      end;

      Function DoAntiban: Boolean;
      var
        i: Integer;
      begin
        if not LoggedIn then Exit;
        i := Random(900);
        case i of
          1..45:
            begin
              HumanRandomMouse;
              Result := True;
            end;
          46:
            begin
              HoverSkill('Farming', False);
              Result := True;
            end;
          47:
            begin
              HoverSkill('Magic', False);
              Result := True;
            end;
        end;

        Wait(100);

      end;

      Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
      Var
        h,m,s: integer;
      begin
        if not LoggedIn then Exit;

        if (HowManyPlayers = 1) then
        begin
          if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
          else
            if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
            begin
              RealBTime := ((x+z)/60000);
              Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
              Logout;
              MarkTime(CurrentBTime);
              repeat
                Wait(21000);
                ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                ClearDebug;
                Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
              until(TimeFromMark(CurrentBTime)>(x+z));
              Writeln('Logging in.');
              if SwitchWorlds then
                if LoginPlayerToLob then
                  ChangeWorld(RandomWorld(True, False))
              else
                LoginPlayer;
              Wait(4000);
              Result := LoggedIn;
              ClickNorth(SRL_ANGLE_HIGH);
              IncEx(BreakRounds, (w) + (x));
              Inc(TotalBreaks);
              Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
              w := (BreakIn * 60000);
              x := (BreakFor * 60000);
              y := RandomRange(-Bir * 60000, Bir * 60000);
              z := RandomRange(-Bfr * 60000, Bfr * 60000);
            end;
        end;
      end;

      Procedure FoundARandom;
      begin
        Writeln('Found a random!');
        PlaySound(ScriptPath+'evilaugh.wav');
        Wait(RandomRange(10000, 20000));
      end;

    begin
      Smart_Server := 86;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;

      setupSRL();
      DeclarePlayers;

      LoadVars;

      Smart_ClearCanvas;
      LoginPlayer;

      QuickHigh;
      //SRL_Procs[SRL_OnFindRandom] := @FoundARandom;

      Repeat

        if not LoggedIn then
        begin
          LoginPlayer;
          ClickNorth(SRL_ANGLE_HIGH);
        end;

        BreakHandler(BreakIn,BreakFor,Bir,Bfr);

        if (TimeFromMark(CommitTime)>=30000) then
          Commit;

        if (TimeFromMark(ReportTime)>=30000) then
          Report;

        FindNormalRandoms;
        HandleLivids;
        HandleSoil;

        if not CheckedPauline then
          HandleThatTiredPaulinePersonWhoNeedsEncouragementBecauseWeAreProLikeABoss;

        DoAntiban;

      Until(AllPlayersInactive)
    end.
    It worked good for about 4 minutes then the mouse just began to jump around in the green box on the plant. It fertilizes still though, it just doesn't choose the plant.

    Edit: restarted a couple of times to see if it was a compiling error, I have it now to select the plant but it doesn't select right. Ill mess around with it a little more to see if I can get a fix.

  25. #450
    Join Date
    Mar 2007
    Posts
    5,125
    Mentioned
    275 Post(s)
    Quoted
    901 Post(s)

    Default

    Thanks for the update Flight, Will be more than to try this out. Will let you know how I go

    Forum account issues? Please send me a PM

Page 18 of 53 FirstFirst ... 8161718192028 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •