{.include SRL/SRL.scar} const Treecolour = 2969159; Treecolour1 = 2969159; Treecolour2 = 2969159; var RockColor, Mask, x, y: Integer; RockDTM: integer; procedure SetupGlobalColors; begin RockColor := 5593948; end; procedure SetRockDTM; var DTMSubPoints: array[0..2] of TDTMPointDef; var CGMainPoint: TDTMPointDef; var RockTDTM: TDTM; begin CGMainPoint.x := 642; // Centre Of Rock Formation CGMainPoint.y := 54; CGMainPoint.areasize := 1; CGMainPoint.areashape := 0; CGMainPoint.color := 0; CGMainPoint.tolerance := 255; // Any Color DTMSubPoints[0].x := 662; DTMSubPoints[0].y := 13; DTMSubPoints[0].areasize := 1; DTMSubPoints[0].areashape := 0; DTMSubPoints[0].color := RockColor; DTMSubPoints[0].tolerance := 1; DTMSubPoints[1].x := 623; DTMSubPoints[1].y := 30; DTMSubPoints[1].areasize := 1; DTMSubPoints[1].areashape := 0; DTMSubPoints[1].color := RockColor; DTMSubPoints[1].tolerance := 1; DTMSubPoints[2].x := 628; DTMSubPoints[2].y := 37; DTMSubPoints[2].areasize := 1; DTMSubPoints[2].areashape := 0; DTMSubPoints[2].color := RockColor; DTMSubPoints[2].tolerance := 1; RockTDTM.MainPoint := CGMainPoint; RockTDTM.SubPoints := DTMSubPoints; RockDTM := AddDTM(RockTDTM); end; procedure EntFinder; // Thanks to YoHoJo. var EX, EY: integer; FX, FY: integer; SafeEntWait: LongInt; begin if (not (LoggedIn)) then begin Nextplayer(false); end; begin Status('Checking For Ent') if (FindObjCustom(EX, EY, ['Tree', 'Willow', 'Oak'], [4690821], 5)) then begin MMouse(EX, EY, 0, 0) if FindColorTolerance(FX, FY, 55769, 85, 15, 115, 15, 20) then begin Status('Ent Found'); MouseFindFlag(645, 83, 2, 2); MarkTime(SafeEntWait) repeat FTWait(5) FindNormalRandoms; if not (LoggedIn) then NextPlayer(False); until TimeFromMark(SafeEntWait) > 29000 + Random(10000) end; end; end; end; function FindFastRandoms: Boolean; //By WT-Fakawi. var i: Integer; begin for i := 1 to 8 do begin case I of 1: if FindDead then Result := True; 2: if FindMod then Result := True; 3: if FindMime then Result := True; 4: if FindMaze then Result := True; 5: if FindQuiz then Result := True; 6: if FindDemon then Result := True; 7: begin if NoGameTab then begin Result := True; Players[CurrentPlayer].loc := 'No GameTab'; Logout; Exit; end; end; 7: begin if InBlack then begin Result := True; Players[CurrentPlayer].loc := 'InBlack'; Logout; Exit; end; end; 8: RC; end; wait(1); end; end; /////////////////////////////////////////////////////////////////////////// procedure FindRandoms; begin if (not (LoggedIn)) then Exit FindFastRandoms; FindNormalRandoms; Wait(20) FindTalk; FTWait(3) EntFinder; if (FindFight) then begin RunAwayDirection('North'); Wait(8000 + Random(2000)); RunBack; end; Wait(20) FindTalk; end; procedure FindIt; begin if (FindDTM(RockDTM, x, y, MMX1, MMY1, MMX2, MMY2)) then begin MouseFindFlag(x + 20, y + 10, 2, 2); Writeln('lol'); FFlag(30); Exit; end; Writeln('DTM Not Found, using the fish symbol.'); if FindSymbol(x, y, 'fish') then begin mouse(x, y + 20, 6, 6, true); writeln('yay found fish.'); FFlag(30); end; end; function UpdateCoords(var cx, cy: Integer; ax, ay, TheColor, Tol: Integer): Boolean; var //ax, ay, Counter: Integer; begin //GetMousePos(ax, ay); if (ax < 20) then ax := 20; if (ay < 20) then ay := 20; while (FlagPresent) and (FindColorSpiralTolerance(cx, cy, TheColor, ax - 20, ay - 20, ax + 20, ay + 20, Tol)) do begin ax := cx; ay := cy; Wait(10); end; if (ax < 10) then ax := 10; if (ay < 10) then ay := 10; while (FindColorSpiralTolerance(cx, cy, TheColor, ax - 10, ay - 10, ax + 10, ay + 10, Tol)) and (Counter < 100) do begin ax := cx; ay := cy; Counter := Counter + 1; Wait(10); end; Result := FindColorSpiralTolerance(cx, cy, TheColor, ax - 10, ay - 10, ax + 10, ay + 10, Tol); if (not Result) then else end; { ---------------------------------------------------------------------------- ] [ >> Part of Woodcutting ] [ >> Function StartChopping(Click: Boolean): Boolean; ] [ >> Starts Cutting the Tree, Returning a Boolean ] [ ---------------------------------------------------------------------------- } function StartChopping(var cx, cy, TreeColor: Integer; Click: Boolean): Boolean; begin if not (LoggedIn) then Exit; while not (FindColorSpiralTolerance(cx, cy, TreeColour, MSX1, MSY1, MSX2, MSY2, 5)) do begin if not (Loggedin) then Exit; Wait(100); end; repeat if not (LoggedIn) then Exit; if FindColorSpiralTolerance(x, y, TreeColour, MSX1, MSY1, MSX2, MSY2, 5) or FindColorSpiralTolerance(x, y, TreeColour1, MSX1, MSY1, MSX2, MSY2, 5) or FindColorSpiralTolerance(x, y, TreeColour2, MSX1, MSY1, MSX2, MSY2, 5) then MMouse(x, y, 1, 1); if IsUpText('Willow') then begin GetMousePos(x, y); TreeColor := GetColor(x, y); if (Click) then begin if (Random(5) = 0) then begin Mouse(x, y, 0, 0, False); Wait(100 + Random(100)); ChooseOption('Chop'); end else Mouse(x, y, 0, 0, True); end else MMouse(x, y, 0, 0); Result := True; end; Wait(100 + Random(100)); until (Result = True) end; procedure Chopping; var cx, cy, Counter, CountUntil, Current, Mark, TreeColor: Integer; begin repeat if StartChopping(cx, cy, TreeColor, True) then begin if UpdateCoords(x, y, cx, cy, TreeColor, 10) then MMouse(x, y, 0, 0) //MMouse(cx, cy, 0, 0) else begin Flag; Wait(400 + Random(200)); StartChopping(x, y, TreeColor, False) end; Current := InvCount; MarkTime(Mark); CountUntil := 64 + Random(20); Counter := 0; if not (LoggedIn) then Exit; EntFinder; if (TimeFromMark(Mark) >= 20 * 1000) and (Current = InvCount) then Break else begin Current := InvCount; MarkTime(Mark); end; Wait(10); EntFinder; end; until not (IsUpText('Willow')) or (Invfull) end; { procedure Cut; begin repeat if FindColorSpiralTolerance(x, y, TreeColour, MSX1, MSY1, MSX2, MSY2, 5)or FindColorSpiralTolerance(x, y, TreeColour1, MSX1, MSY1, MSX2, MSY2, 5)or FindColorSpiralTolerance(x, y, TreeColour2, MSX1, MSY1, MSX2, MSY2, 5)then MMouse(x,y,1,1); if IsUpText('Willow') then begin Mouse(x,y,1,1,true); end; Until(Invfull); end; } procedure Bank; begin if FindSymbol(x, y, 'bank') then begin mouse(x, y, 1, 1, true); writeln('yay'); FFlag(0); end else writeln('symbol false, using fish symbol.'); end; function OpenBank31: Boolean; var x, y, fs, fs2: Integer; begin Status('Banking'); if not BankScreen then repeat if (FindObj(x, y, 'Use Bank', 4870227, 10)) then Mouse(x, y, 4, 4, False) else if (FindObj(x, y, 'Use Bank', 2578028, 10)) then Mouse(x, y, 4, 4, False) else if (FindObj(x, y, 'Use Bank', 5462367, 10)) then Mouse(x, y, 4, 4, False); Wait(250); if (ChooseOption('quickly')) then begin Flag; repeat Wait(100); fs := fs + 1; until (BankScreen) or (fs >= 50); end; fs2 := fs2 + 1; until (BankScreen) or (fs2 > 5); if BankScreen then Result := True; wait(200); FixBank; Deposit(2, 28, 2); CloseBank; end; begin SetupSRL; ActivateClient; SetupGlobalColors; FindIt; repeat Chopping; EntFinder; until (invfull); if Invfull then Bank; OpenBank31; end; until (false); end.