Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$DEFINE SMART8}
- {$i srl/srl.simba}
- {$I P07Include.Simba}
- //***********************************************************\\
- // 2007 EssenceHarvester \\
- // Released by wthomas 3/3/13 \\
- // Coming Soon: \\
- // AntiBan \\
- // more AntiRandoms(golem next) \\
- // \\
- // \\
- // Version 1.07 \\
- // Fixed Use Essence -> Banker issue \\
- // Changed DTM's \\
- // changed Bank detection method \\
- // Added Anti Leech \\
- // \\
- // version 1.06 \\
- // fixedBug ismoving \\
- // Bixed other small bugs \\
- // \\
- // \\
- // Version 1.05 \\
- // Bug fixes \\
- // Abiss dection and solving \\
- // Paint Proggy \\
- // \\
- // Version 1.04 \\
- // Using findSymbol, colors and DTMs \\
- // Fixed Banking issues \\
- // Updated Essence finding- less bot like \\
- // \\
- // Version 1.03 \\
- // updated DTM's and demoved old unused color \\
- // \\
- // Version 1.02Qfx \\
- // using DTM's and bruting paths \\
- // \\
- // Version 1.02 \\
- // Added in a Proggy \\
- // \\
- // Version 1.01 \\
- // Fixed a few minor issues with getstate() \\
- // Added nice debug notices. \\
- // \\
- //***********************************************************\\
- const
- DEBUG = true;
- PicInInvent = 0;
- CostPerEssence = 26;
- WALKBANK = 1;
- BANK = 2;
- WALKESS = 3;
- MINEESS = 4;
- AUBURY = 5;
- PORTAL = 6;
- Version = 1.07;
- type
- tStatus = record
- ID: Integer;
- Name: string;
- end;
- tPointerSet = record
- proc:
- procedure; name: string;
- end;
- var
- RuneShopDTM, BankDTM, TreeDTM, PortalDTM: integer;
- BankSymbolColor, BankTreesColor, RuneShopSymbolColor, PortalColor, BankSymbolTolerance, BankTreeTolerance, RuneShopTolerance, PortalTolerance, banked, StartTime, LastProg: integer;
- Pointers: tPointerSet;
- logTime: integer;
- procedure SetupDTMs;
- begin
- P07_PlayerName := '';
- P07_PlayerPass := '';
- BankSymbolColor := 4965868;
- BankSymbolTolerance := 5;
- BankTreesColor := 1586544;
- BankTreeTolerance := 10;
- RuneShopSymbolColor := 2265855;
- RuneShopTolerance := 50;
- PortalColor := 1792734;
- PortalTolerance := 100;
- RuneShopDTM := DTMFromString('mWAAAAHicY2FgYChkQuA8IG4AilUDcTMDhP1/khLDDxkVhkOMLGBaAyiGjBnRMAgAAP+kCVo=');
- BankDTM := DTMFromString('mlwAAAHicY2dgYGhgYmDoAuJ2IG4C4nogrgbiMiDWA8qbQ7EZFJtC8aVLlxj+/GFiePuWAU5//QrB/4HyGjgwIx4MBQA71hTz');
- TreeDTM := DTMFromString('mwQAAAHic42RgYGBhYmD4xcjAwA+k2YFYFIi/A/mfGRHifEBaiBFCswKxABCLAjEbEMsCsRgQe4abMbz7/AKC371jCHbUBmO4GBBzAe3DhbmhNCMRGA4AkCoYPQ==');
- PortalDTM := DTMFromString('mQwAAAHicY2ZgYChhYmDIBeJyIDZlgGBLILb29WK4FyUNxm5APgwzImEgAAD34wZS');
- SetupSRLStats(1324, 'EssenceHarvester', 'EssenceHarvester');
- SRL_SixHourFix := True;
- SMART_FixSpeed := True;
- AddonTerminate('freeMyDTMs');
- MarkTime(LastProg);
- MarkTime(StartTime);
- MarkTime(logTime);
- banked := 0;
- SetUpSRL;
- SetupP07Include;
- end;
- function P07_IsMoving: boolean;
- begin
- Result := Animating(IntToBox(P07_MMCX - 30, P07_MMCY - 30, P07_MMCX + 30, P07_MMCY + 30), 50, 100);
- end;
- function P07_NotMoving: boolean;
- begin
- Result := not P07_IsMoving;
- end;
- function P07_PercentColorMMEx(Color, Tol, StartRadial, EndRadial, StartRadius, EndRadius: Integer): integer;
- var
- TPA: TPointArray;
- begin
- FindColorsTolerance(TPA, Color, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, Tol);
- FilterPointsPie(TPA, StartRadial, EndRadial, StartRadius, EndRadius, P07_MMCX, P07_MMCY);
- Result := ceil((Length(TPA) * 100) / ((Pi * (EndRadius * EndRadius)) * ((EndRadial - StartRadial) / 360.0) - ((Pi * (StartRadius * StartRadius)) * ((EndRadial - StartRadial) / 360.0))));
- end;
- function P07_PercentColorMM(Color, Tol: Integer): Integer;
- begin
- Result := P07_PercentColorMMEx(Color, Tol, 0, 360, 0, 76);
- end;
- function P07_PercentBlackMM: Integer;
- begin
- Result := P07_PercentColorMM(0, 5);
- end;
- procedure P07_SetRun(Run: Boolean);
- begin
- if not P07_TabInventoryTab(12) then
- Writeln('cannot set run');
- if CountColorTolerance(1711220, 626, 414, 656, 445, 5) < 10 then
- MouseBox(626, 414, 656, 445, MOUSE_LEFT);
- P07_TabInventoryTab(4)
- end;
- procedure DebugStr(Str: string);
- begin
- if Debug then
- Writeln(MSToTime(TimeFromMark(StartTime), Time_Bare) + Str);
- end;
- function InEssMine: boolean;
- begin
- Result := (P07_PercentBlackMM > 25);
- end;
- function seeMMSymbol(var x: integer; var y: integer; DTM, color, tolerance: integer; name: string): boolean;
- var
- angle: extended;
- begin
- SymbolAccuracy := 0.7;
- if findsymbol(x, y, name) then
- begin
- debugstr(' [INFO] symbol found: ' + name);
- result := true;
- exit;
- end;
- if findDTMRotatedSE(DTM, x, y, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, - pi() / 4, pi() / 4, pi() / 64, angle) then
- begin
- result := true;
- debugstr(' [INFO] DTM found: ' + name);
- exit;
- end
- else
- begin
- if FindColorTolerance(x, y, color, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, tolerance) then
- begin
- result := true;
- debugstr(' [INFO] Color found: ' + name);
- end
- else
- begin
- result := false;
- end;
- end;
- end;
- function FindColorMinimap(color: integer; tolerance: integer): TpointArray;
- var
- TPA: TpointArray;
- begin
- if FindColorsTolerance(TPA, Color, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, Tolerance) then
- Result := TPA;
- end;
- function InRuneShop: Boolean;
- var
- j: TPoint;
- x, y: integer;
- begin
- if not seeMMSymbol(x, y, RuneShopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop') then
- result := false;
- j := IntToPoint(P07_MMCX, P07_MMCY);
- Result := (Abs(x - j.x) < 20) and (Abs(y - j.y) < 10);
- end;
- function InBank: Boolean;
- var
- j: TPoint;
- x, y: integer;
- begin
- if not seeMMSymbol(x, y, BankDTM, BankSymbolColor, BankSymboltolerance, 'bank') then
- result := false;
- j := IntToPoint(P07_MMCX, P07_MMCY);
- Result := (Abs(x - j.x) < 20) and (Abs(y - j.y) < 20);
- end;
- function AtPortal: boolean;
- var
- j: TPoint;
- x, y: integer;
- begin
- if not seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
- result := false;
- j := IntToPoint(P07_MMCX, P07_MMCY);
- Result := (Abs(x - j.x) < 20) and (Abs(y - j.y) < 20);
- end;
- procedure WalktoAubury;
- var
- x, y: integer;
- angle: extended;
- begin
- P07_makeCompassNorth;
- if seeMMSymbol(x, y, RuneshopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop') then
- begin
- debugstr(' [INFO] Found shop ');
- Mouse(x + 4, y, 2, 2, mouse_left);
- wait(4000);
- P07_setRun(TRUE);
- P07_FFlag;
- waitfunc(@ inRuneShop, 1000, 20000);
- P07_FFlag;
- DebugStr(' [INFO] Should be in the shop now');
- end
- else
- begin
- if FindDTMRotatedSE(TreeDTM, x, y, MMX1, MMY1, MMX2, MMY2, - pi() / 8, pi() / 8, pi() / 16, angle) then
- begin
- debugstr(' [INFO] Found tree DTM');
- Mouse(x, y, 2, 2, mouse_left);
- P07_FFlag;
- waitfunc(@ P07_NotMoving, 100, 20000);
- P07_FFlag;
- debugstr(' [INFO] Should be south of the bank');
- end
- else
- begin
- writeln('***[WARINING]*** cant see shop or trees walking anyway');
- Mouse(P07_MMCX + 15, P07_MMCY + 30, 2, 2, mouse_left);
- P07_FFlag;
- waitfunc(@ P07_NotMoving, 100, 20000);
- P07_FFlag;
- debugstr(' [INFO] Should be south of the bank');
- end;
- end;
- end;
- procedure BankEssence;
- var
- CTS, I, x, y: Integer;
- TPA: TPointArray;
- ATPA: array of TPointArray;
- begin
- if P07_BankScreen then
- begin
- P07_Deposit(2, 28, TRUE);
- exit;
- end;
- P07_MakeCompassNorth;
- P07_MakeCameraAngleHigh;
- begin
- CTS := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.06, 0.91);
- FindColorsSpiralTolerance(MSCX, MSCY, TPA, 6188918, MSX1, MSY1, MSX2, MSY2, 5);
- ColorToleranceSpeed(CTS);
- wait(100);
- ATPA := SplitTPA(TPA, 3);
- for I := 0 to High(ATPA) do
- begin
- MiddleTPAEx(ATPA[i], x, y);
- MMouse(x, y, 2, 2);
- wait(50);
- if (P07_IsUpTextMultiCustom(['sence'])) then
- begin
- MouseBox(7, 350, 500, 470, mouse_left);
- exit;
- end;
- if (P07_IsUpTextMultiCustom(['se', 'ooth'])) then
- begin
- clickMouse2(MOUSE_RIGHT);
- wait(700);
- if P07_ChooseOptionMulti(['uickly']) then
- begin
- writeln('bank is open');
- wait(1000);
- P07_Deposit(2, 28, TRUE);
- banked := banked + 28 - PicInInvent;
- Stats_IncVariable('Pure Essence (Mined)', 28 - PicInInvent);
- debugstr(' [INFO] updated banked ess log');
- end;
- Break;
- end;
- wait(100);
- end;
- Mouse(P07_MMCX, P07_MMCY + 10, 2, 2, mouse_left);
- wait(300);
- end;
- end;
- procedure WalktoBank;
- var
- x, y: integer;
- angle: extended;
- begin
- P07_makeCompassdegree(randomrange( - 20, 20));
- if seeMMSymbol(x, y, BankDTM, BankSymbolColor, BankSymboltolerance, 'bank') then
- begin
- debugstr(' [INFO] Found bank');
- Mouse(x, y, 2, 2, mouse_left);
- P07_setRun(TRUE);
- waitfunc(@ P07_NotMoving, 100, 20000);
- P07_FFlag;
- end
- else
- begin
- if FindDTMRotatedSE(TreeDTM, x, y, MMX1, MMY1, MMX2, MMY2, - pi() / 8, pi() / 8, pi() / 64, angle) then
- begin
- debugstr(' [INFO] Found tree colors');
- Mouse(x, y, 2, 2, mouse_left);
- waitfunc(@ P07_NotMoving, 100, 20000);
- P07_FFlag;
- debugstr(' [INFO] Should be south of the bank');
- end
- else
- begin
- debugstr(' [INFO] cant see bank or trees walking north');
- Mouse(P07_MMCX + 15, P07_MMCY - 30, 2, 2, mouse_left);
- waitfunc(@ P07_NotMoving, 100, 20000);
- P07_FFlag;
- debugstr(' [INFO] Should be south of the bank');
- end;
- end;
- end;
- procedure teleportAubury;
- var
- CTS, I, x, y: Integer;
- TPA: TPointArray;
- ATPA: array of TPointArray;
- begin
- P07_MakeCompassNorth;
- P07_MakeCameraAngleHigh;
- begin
- if CountColorTolerance(5923683, MSX1, MSY1, MSX2, MSY2, 20) > 20000 then
- begin
- debugstr(' [INFO] Outside ess shop trying to re-enter');
- if seeMMSymbol(x, y, RuneshopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop') then
- Mouse(x, y + 15, 5, 10, mouse_left);
- P07_FFlag;
- end;
- CTS := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.19, 0.92);
- FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1226735, MSX1, MSY1, MSX2, MSY2, 10);
- ColorToleranceSpeed(CTS);
- ATPA := SplitTPA(TPA, 5);
- for I := 0 to High(ATPA) do
- begin
- if length(ATPA[i]) < 5 then
- continue;
- MiddleTPAEx(ATPA[i], x, y);
- MMouse(x, y, 2, 2);
- wait(50);
- if (P07_IsUpTextMultiCustom(['alk-to', 'bury'])) then
- begin
- clickMouse2(mouse_right);
- wait(300);
- if P07_ChooseOptionMulti(['Teleport']) then
- debugstr(' [INFO] Chose Option Teleport');
- wait(2000);
- P07_FFlag;
- Break;
- end;
- wait(100);
- end;
- debugstr(' [INFO] Couldnt See Aubury, checking under us');
- MMouse(P07_MSCX, P07_MSCY, 5, 5);
- wait(50);
- if (P07_IsUpTextMultiCustom(['alk-to', 'bury'])) then
- begin
- clickMouse2(mouse_right);
- wait(300);
- if P07_ChooseOptionMulti(['Teleport']) then
- debugstr(' [INFO] Chose Option Teleport');
- end;
- end;
- end;
- procedure startMining;
- var
- i, c, x, y: integer;
- begin
- if P07_Containstext(GetBlackChatMessage, ['rock', 'ine', 'axe', 'pic']) and not P07_InvFull then
- exit;
- P07_makeCompassdegree(60);
- c := 0;
- if seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
- begin
- debugstr(' [INFO] Found portal on MM');
- Mouse(round((x + P07_MMCX) / 2), round((y + P07_MMCY) / 2), 2, 2, MOUSE_LEFT);
- P07_FFlag;
- debugstr(' [INFO] Correcting position');
- MiddleTPAEx(FindColorMinimap(11513529, 200), x, y);
- Mouse(x, y, 2, 2, MOUSE_LEFT);
- P07_FFlag;
- P07_MakeCameraAngleLow;
- MMouse(MSCX + randomrange( - 100, 100), MSCY + randomrange( - 150, 0), 0, 0);
- repeat
- inc(c);
- P07_makeCompassdegree(P07_getcompassangle + 30);
- wait(50);
- if P07_Containstext(P07_getUptext, ['Mine', 'Rune', 'Essence']) then
- begin
- clickmouse2(mouse_left);
- debugstr(' [INFO] Mining Essence');
- wait(500);
- break;
- end;
- until (C > 12);
- end
- else
- begin
- debugstr(' [INFO] We are not at an ess node, trying to find one');
- c := 45 + 90 * randomrange(0, 3);
- for i := 0 to 2 do
- begin
- Mouse(MMCX + round(50 * cos(c)), MMCY - round(50 * sin(c)), 5, 5, mouse_left);
- P07_FFlag;
- if seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
- begin
- debugstr(' [INFO] We are almost at an ess node');
- exit;
- end;
- end;
- end;
- end;
- procedure findPortal;
- var
- MTPA: TpointArray;
- CTS, I, x, y: Integer;
- TPA: TPointArray;
- begin
- if seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
- begin
- debugstr(' [INFO] Found portal color on MM');
- if not atportal then
- Mouse(x, y, 5, 5, mouse_left);
- P07_FFlag;
- debugstr(' [INFO] Standing by portal');
- P07_makeCameraAngleHigh;
- P07_makeCompassDegree(P07_getCompassAngle + randomrange( - 40, 40));
- CTS := GetColorToleranceSpeed;
- ColorToleranceSpeed(2);
- SetColorSpeed2Modifiers(0.20, 3.19);
- FindColorsSpiralTolerance(MSCX, MSCY, TPA, 10868705, MSX1, MSY1, MSX2, MSY2, 11);
- ColorToleranceSpeed(CTS);
- wait(100);
- x := MiddleTPA(TPA).x;
- y := MiddleTPA(TPA).y;
- MMouse(x, y, 2, 2);
- if (P07_IsUpTextMultiCustom(['use', 'ortal'])) then
- begin
- wait(100);
- clickMouse2(MOUSE_LEFT);
- wait(200);
- if not InessMine then
- debugstr(' [INFO] Teleported to Varrock');
- exit;
- end;
- wait(100);
- end
- else
- begin
- end;
- end;
- procedure Random_Abiss;
- var
- c, d: integer;
- begin
- c := 0;
- d := 0;
- if P07_PercentBlackMM < 75 then
- exit;
- writeln('[WARNING] Random Found: Abiss Attempting to Solve');
- P07_makeCompassNorth;
- P07_MakeCameraAngleLow;
- MMouse(250, 106, 5, 5);
- P07_makeCompassdegree(P07_getcompassangle + 10);
- wait(50);
- if P07_Containstext(P07_getUptext, ['Operate', 'Appendage']) then
- begin
- repeat
- inc(d);
- if P07_Containstext(P07_getUptext, ['Operate', 'Appendage']) then
- clickmouse2(mouse_left);
- wait(700);
- until (P07_PercentBlackMM < 75) or (d > 15);
- end;
- end;
- function getState(): Integer;
- var
- angle: extended;
- x, y: integer;
- begin
- P07_TabInventoryTab(4);
- Random_abiss;
- if not InEssMine then
- if not (seeMMSymbol(x, y, BankDTM, BankSymbolColor, BankSymboltolerance, 'bank') or seeMMSymbol(x, y, RuneShopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop')) then
- if not FindDTMRotatedSE(TreeDTM, x, y, MMX1, MMY1, MMX2, MMY2, - 180, 180, 1, angle) then
- if not InEssMine then
- begin
- writeln('[FATAL] terminal error, cant see bank or rune shop ending script now');
- terminatescript;
- end;
- if P07_invFull then
- begin
- if InEssMine then
- begin
- result := PORTAL;
- exit;
- end
- else if not inbank then
- begin
- result := WALKBANK;
- exit;
- end
- else
- begin
- result := BANK;
- exit;
- end;
- end;
- if not InEssMine then
- begin
- if not inruneshop then
- begin
- result := WALKESS;
- exit;
- end
- else
- begin
- result := AUBURY;
- exit;
- end;
- end
- else
- begin
- result := MINEESS;
- exit;
- end;
- end;
- procedure Loop();
- begin
- with Pointers do
- begin
- case getState() of
- WALKBANK:
- begin
- name := 'Walk:Bank';
- Proc := @ WalktoBank;
- end;
- BANK:
- begin
- name := 'Bank Essence';
- Proc := @ BankEssence;
- end;
- WALKESS:
- begin
- name := 'Walk:Aubury';
- Proc := @ walktoAubury;
- end;
- MINEESS:
- begin
- name := 'Mine essence';
- Proc := @ startMining;
- end;
- AUBURY:
- begin
- name := 'Teleport:Essence';
- Proc := @ teleportAubury;
- end;
- PORTAL:
- begin
- name := 'Teleport:Varrock';
- Proc := @ findPortal;
- end;
- end;
- end;
- end;
- procedure proggy;
- var
- t: integer;
- timestr: string;
- begin
- wait(10);
- t := banked + P07_invCount - PicInInvent;
- begin
- marktime(LogTime);
- Stats_Commit;
- end;
- end;
- procedure freeMyDTMs;
- begin
- freeDTM(RuneShopDTM);
- freeDTM(BankDTM);
- freeDTM(TreeDTM);
- freeDTM(PortalDTM);
- end;
- begin
- SetupDTMs;
- writeln('script Version ' + floattostr(Version) + ' Starting');
- P07_loginPlayer;
- wait(1000);
- while P07_LoggedIN do
- begin
- proggy;
- Loop();
- with Pointers do
- begin
- Proc() wait(1000);
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement