• Log in or sign up for an account here: https://www.sythe.org/login

Reported Post by nielsie95

  • Thread starter Thread starter nielsie95
  • Start date Start date
Status
Not open for further replies.
N

nielsie95

Guest
nielsie95 has reported a post.

Reason:
I accidentally made a double post because of server lag, requesting the duplicate thread to be deleted, please and thanks.
Post: Nielsie95's Yew Retriever Draynor
Forum: RuneScape Scripts
Assigned Moderators: Cruel__Machine, speljohan, Town

Posted by: nielsie95
Original Content:
Niels Yew Retriever Draynor

This script chops a load of yews above the Lumbridge Swamp and banks the logs in Draynor Bank.


Features:


  • AntiBan
  • AntiRandoms
  • Best Axe finder in bank
  • AutoColor
  • MultiPlayer
  • GainedLvl - counter
  • 2 yews - The script will cut one untill its gone and walk to the second!

Set-up:


  • Setup your Player Array. Plz set ur nick-names OK
  • Start in the bank or start at one of the 2 yews
  • Have more axes in bank, the script wil automaticly find the best axe. So if you have broken your only rune axe and have an addy and an iron axe in bank; the script will pick the addy axe
  • Post your progress report as I want to repair any bugs

Known - bugs:


  • WalkBack

Code:
|                                                           
{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|           Nielsie95's Yew Retriever Draynor               
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|                                                           
|    Will cut and bank from the 2 yews south from draynor   
|                                                           
|        Has Antiban - AntiRandoms - AutoColor              
|                                                           
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|                                                           
|    Start at 1 of the 2 yews or in bank.                   
|    Have axe wielded or in inv. Also have more in bank.    
|                                                           
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|                                                           
|    VERSION 1.3                                           
|                                                           
|    SRL 3.7 and DIVI ready.                                
|                                                           
|    VERSION 1.2                                            
|                                                           
|    Improved Walking                                      
|                                                           
|    VERSION 1.1                                            
|                                                           
|    Again tried to fix that stupid DirtColorFinder         
|                                                           
|    VERSION 1.0                                            
|                                                           
|    A big update was done, better DirtFinding,             
|    faster tree finding, better ent finding, new walking   
|    procedures and a change to the Progress Report and     
|    added some Status writing =]                           
|                                                           
|    VERSION 0.75                                           
|                                                           
|    Small update to DirtFinding, small banking bug         
|    removed, little update to chopping =]                  
|                                                           
|    VERSION 0.50                                          
|                                                           
|    My very first version of my very first script!         
|                                                           
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}

Version 1.1

Code:
{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|           Nielsie95's Yew Retriever Draynor               |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|                                                           |
|    Will cut and bank from the 2 yews south from draynor   |
|                                                           |
|        Has Antiban - AntiRandoms - AutoColor              |
|                                                           |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|                                                           |
|    Start at 1 of the 2 yews or in bank.                   |
|    Have axe wielded or in inv. Also have more in bank.    |
|    Please set HumanDirtColor for safety =]                |
|                                                           |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|                                                           |
|    VERSION 1.1                                            |
|                                                           |
|    Again tried to fix that stupid DirtColorFinder         |
|                                                           |
|    VERSION 1.0                                            |
|                                                           |
|    A big update was done, better DirtFinding,             |
|    faster tree finding, better ent finding, new walking   |
|    procedures and a change to the Progress Report and     |
|    added some Status writing =]                           |
|                                                           |
|    VERSION 0.75                                           |
|                                                           |
|    Small update to DirtFinding, small banking bug         |
|    removed, little update to chopping =]                  |
|                                                           |
|    VERSION 0.50                                           |
|                                                           |
|    My very first version of my very first script!         |
|                                                           |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}

program NielsYewRetrieverDraynor;
{.Include SRL/SRL.SCAR}
{.Include SRL/SRL/Skill/Woodcutting.Scar}

//----------------------------------------------------------------------------//
//                        -->   SCRIPT SETUP   <--                            //
//----------------------------------------------------------------------------//

const Version = '1.1';                //No need to change
      MaxLoggedInTime = 25;           //Max time the player can be logged in
      HumanDirtColor = 2183262;       //Set this if DirtColorFinder doesn't work

//----------------------------------------------------------------------------//
//                         -->   VARIABLES   <--                              //
//----------------------------------------------------------------------------//

var tx, ty, TreeX, TreeY, TempColor, DirtColor, DirtRoadColor, Slot, LoadsToDo, AxesBroke,
    BankDot1, BankDot2, BankDot3, TreeSymbol, Tree, TotalLogs, LogMask, AxeMask, Loads,
    ChangedYews, StartLvl, GainedLvl, AxeHeadTxt, BrokenAxeHeadMask, HeadDTM: integer;
    ColorArray: array of integer; NoAxe: Boolean;
    ChopMark, LogPresent, LogCheck, SST1, SST2, FindNorMalRandomsTime, FindFastRandomsTime,
    Report, LoggedInTime: LongInt;

//----------------------------------------------------------------------------//
//                        -->   PLAYER SETUP   <--                            //
//----------------------------------------------------------------------------//

procedure DeclarePlayers;
begin
    HowManyPlayers:=4;
    NumberOfPlayers(HowManyPlayers);
    CurrentPlayer := 0;
    
    Players[0].Name     :='';            //Name
    Players[0].Pass     :='';            //Password
    Players[0].Nick     :='';            //3-4 letter nickname
    Players[0].Loc      :='';            //Where is your Player? CHOOSE FROM: Bank, Yew 1 or Yew 2
    Players[0].Integer1 := 2 ;           //Loads to do
    Players[0].Active   := True;         //Is the Player used?

    Players[1].Name     :='';
    Players[1].Pass     :='';
    Players[1].Nick     :='';
    Players[1].Loc      :='';
    Players[1].Integer1 := 2 ;
    Players[1].Active   := True;

    Players[2].Name     :='';
    Players[2].Pass     :='';
    Players[2].Nick     :='';
    Players[2].Loc      :='';
    Players[2].Integer1 := 2 ;
    Players[2].Active   := True;

    Players[3].Name     :='';
    Players[3].Pass     :='';
    Players[3].Nick     :='';
    Players[3].Loc      :='';
    Players[3].Integer1 := 2 ;
    Players[3].Active   := True;


end;

//----------------------------------------------------------------------------//
//                      -->   OVERALL PROCEDURES   <--                        //
//----------------------------------------------------------------------------//

procedure LoadVar;
begin

  BankDot1 := DTMFromString('78DA636C67626008664001FFFFFF67F80FA41' +  //By WT-Fakawi --> From Charm
       '921ECFF8CB54035DEA86AFEFC61621081AA0101C63A4C73B0AA09' +
       'C7AF06000153117B');

  BankDot2 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' +
       '921ECFF8C3540353EA86AFEFC61621081AA0101C63AA09A1022D4' +
       '44E057030001B5117D');

  BankDot3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' +
       '921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40026A' +
       '6A816A42F1AB010000781176');
       
  Tree := BitmapFromString(9, 1, '788843283020606837809046607' +
       '01D001000506022506022485032');
       
  LogMask := BitmapFromString(13, 10, 'z78DA33301805E40037BC8' +       //Charm
       '0BAB6D0C2E5F451494998D02E5471010034299979');
       
  AxeHeadTxt := BitmapFromString(30, 10, 'z78DA7373B334303170' +
       '0393A62EA62626E6839374437227320901A36E1E75333124A9265' +
       '04B3DA9EE84005C2663AAA4AE7A5CBAF0BB16530D729A21559C98' +
       '10C36F0E316E26DE6DF87D4DBC1B28B197BCF0C404F8639972715' +
       'AC435A9B98954F3013DD58547');
       
  HeadDTM := DTMFromString('78DA63CC62626078C180021C2312191E02694' +
    '620FE0F048C694035CF18D000231209A473816A9E12A1E6150135' +
    'A94035AF09A801B9F9090135994498930C54F392809A3CCCF0415' +
    '70300FB8311DF');

  BrokenAxeHeadMask := BitmapFromString(9, 10, 'z78DA7373230D1890' +
       '05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307225');
       
  AxeMask := BitmapFromString(10, 10, 'z78DA7373230D18500028316' +
       '130E825353470A921DE3DE499409EDB480D25FCE10000B72C7CE1' +
       '');
end;

procedure PlayerStats;  //Based on Fakawi's Progress Report
var Active: string;
    i, PlayerTemp: Integer;
begin
  if Players[CurrentPlayer].Loc <> 'Bank' then
  begin
    GameTab(4);
    PlayerTemp := Players[CurrentPlayer].Integer2;
    Players[CurrentPlayer].Integer2 := CountItemBmpMaskTol(LogMask, 20, 10) + PlayerTemp;
  end
  Writeln(' ');
  WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
  for I := 0 to HowManyPlayers - 1 do
  begin
    if Players[i].Active=True then Active:='True' else Active:='False';
    WriteLn ( '< ' + Inttostr ( I ) + ' : ' + Players[i].Name + ' = ' + Active
    +' . Loc = ' + Players[i].Loc +
    +' . Chopped ' + IntToStr(Players[i].Integer2) +' Logs.'
    +' . Lvl = ' + IntToStr(Players[i].level[20]));
  end
  WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
  Players[CurrentPlayer].Integer2 := PlayerTemp;
end;

procedure ProgressReport;  //Based on Fakawi's Progress Report
var LogTemp: Integer;
begin
  if Players[CurrentPlayer].Loc = 'Bank' then LogTemp := TotalLogs else
  begin
    GameTab(4);
    LogTemp := CountItemBmpMaskTol(LogMask, 20, 10);
    LogTemp := LogTemp + TotalLogs;
  end;
  //Cleardebug;
  SRLRandomsReport;
  Writeln(' ');
  Writeln('/~~~~~~~~~~~~~~~~~~ Niels ~~~~~~~~~~~~~~~~~~~\');
  Writeln('||~~~~~~~~~~~~~~~~ Draynor ~~~~~~~~~~~~~~~~~||');
  Writeln('||~~~~~~~~~~~ Yew Cutter/Banker ~~~~~~~~~~~~||');
  Writeln('||~~~~~~~~~~~~ Progress Report ~~~~~~~~~~~~~||');
  Writeln('||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||');
  Writeln('||      Worked for '+ TimeRunning);
  Writeln('||      Chopped '+ IntToStr(LogTemp)+(' Logs.'));
  Writeln('||      Banked '+ IntToStr(Banks)+' time[s].');
  if ChangedYews > 0 then
  WriteLn('||      Changed from yew '+ IntToStr(ChangedYews)+' time[s].');
  if AxesBroke > 0 then
  WriteLn('||      Broken '+ IntToStr(AxesBroke) +' Axe[s].');
  if GainedLvl > 0 then
  WriteLn('||      Gained '+ IntToStr(GainedLvl) +' Lvl[s].');
  WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ');
  WriteLn('||      Current Colors:');
  WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ');
  WriteLn('||      Dirt: '+IntToStr(DirtRoadColor));
  WriteLn('||      Road: '+ IntToStr(RoadColor));
  WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ');
  WriteLn('||      Current Player: ' + Players[CurrentPlayer].Name);
  WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ');
  WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ');
  WriteLn('||      Current Version: ' + Version);
  WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ');
  Writeln('\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/');
  PlayerStats;
  MarkTime(Report);
end;


function FindFastRandoms: Boolean;  //Almost Directly from Fakawi's Goblin Sheduler
var i: Integer;
begin
  for i:=1 to 10 do
  begin
    if(not(LoggedIn))then Exit;
    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';
             Players[CurrentPlayer].Active := False;
             Logout;
             Exit;
           end;
         end;
     8: begin
           if InBlack then
           begin
             Result := True;
             Players[CurrentPlayer].loc := 'InBlack';
             Players[CurrentPlayer].Active := False;
             Logout;
             Exit;
           end;
         end;
     9 : if FindFight then
           begin
             Result := True;
             RunTo('N', True);
           end;
     10: if FindTalk then
           Result := True;

    end;
    wait(1);
  end;
end;

procedure FtWaitE ( Time : Integer );  //FTWaitD without the status writing
var T, I : integer;
begin
  try

    T := (Time div 1000)+1;
    for I := 1 to T do
    begin
      Wait ( 250 );
      FindTalk;
    end

  except

    begin
      if(not(LoggedIn))then Exit;
      Wait ( Time );
      FindTalk;
    end;

  end;

  if(not(LoggedIn))then Exit;
  MarkTime(FindNorMalRandomsTime);
  if FindNorMalRandomsTime-SST1 >(10000+Random(5000)) then
  begin
    FindNorMalRandoms;
    MarkTime(SST1);
  end;

  MarkTime(FindFastRandomsTime);
  if FindFastRandomsTime-SST2 >(1500+Random(1500)) then
  begin
    FindFastRandoms;
    MarkTime(SST2);
  end;
end;

//----------------------------------------------------------------------------//
//                    -->   OVERAL CHOP PROCEDURES   <--                      //
//----------------------------------------------------------------------------//

procedure GainLvl;  //Idea based on SL 'PS Willow Cutter' CheckLeveled function
Var temp: Integer;
begin
  if(not(LoggedIn))then Exit;
  if (Clicktocontinue) then WriteLn('We probably gained a lvl!');
  Temp := (Players[CurrentPlayer].level[20] - StartLvl);
  if (Temp > 0) then
  begin
    StartLvl := Players[CurrentPlayer].level[20]
    Gainedlvl :=  GainedLvl + Temp;
  end
end;

procedure CountLogs; // CharmZ
var LogTemp: integer;
begin
  if(not(LoggedIn))then Exit;
  GameTab(4);
  LogTemp := CountItemBmpMaskTol(LogMask, 20, 10);
  TotalLogs    := LogTemp + TotalLogs;
  Players[CurrentPlayer].Integer2 := Players[CurrentPlayer].Integer2 + LogTemp;
end;

procedure FirstEmptySlot;
begin
  if(not(LoggedIn))then Exit;
  if (InvFull) then exit;
  slot := 0;
  repeat
    slot := slot + 1
  until(not ExistsItem(slot));
  marktime(LogCheck);
end;

function CheckForLogs: Boolean;  //Idea from SL 'PS willow cutter'
begin
  if(not(LoggedIn))then Exit;
  if (InvFull) then exit;
  if (TimeFromMark(LogCheck) >= (15000 + random (1000))) then
  begin
    GameTab(4);
    if (not ExistsItem(slot)) then
    begin
      WriteLn('No logs found since last check');
      Result := True;
      FirstEmptySlot;
    end else
    begin
      FirstEmptySlot;
      MarkTime(LogPresent);
      Result := False;
    end
  end

  if (TimeFromMark(LogPresent) > 240000) then
  begin
    WriteLn('4 mins no logs were found, Player is set to false');
    Players[CurrentPlayer].Loc := '4 mins no logs';
    Players[CurrentPlayer].Active := False;
    Logout;
  end
end;

//----------------------------------------------------------------------------//
//                       -->   AXE PROCEDURES   <--                           //
//----------------------------------------------------------------------------//

function CharmFindAxeHeadColors: Boolean;  //Charm
var AX, AY: Integer;
begin
  if(not(LoggedIn))then Exit;
  GameTab(4);
  if(FindBitmapMaskTolerance(AxeMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 10, 5))then
  begin
    Head   := GetColor(AX + 5, AY + 3);
    Head2  := GetColor(AX + 7, AY + 2);
    Head3  := GetColor(AX, AY + 3);
    EquipAxe:= False;
    Result:= True;
    if ((Ax > 605) or (AY > 245) or (Ax < 565) or (AY < 210)) then
    begin
      MMouse(AX, AY, 1, 1);
      HoldMouse(AX, AY, True);
      Wait(150 + Random(50));
      MMouseItem(1);
      GetMousePos(x, y);
      ReleaseMouse(x, y, True);
      Wait(100 + Random(100));
      MMouse(x, y, 2, 2)
    end
  end else
  begin
    GameTab(5);
    Wait(1000+Random(750));
    if(FindBitmapMaskTolerance(AxeMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 10, 5))then
    begin
      Head  := GetColor(AX + 5, AY + 3);
      Head2 := GetColor(AX + 7, AY + 2);
      Head3 := GetColor(AX, AY + 3);
      EquipAxe:= True;
      Result:= True;
    end
    GameTab(4);
  end

  if(Result= True)then
  begin
    NoAxe:= False;
    WriteLn('Axe head colors - '+IntToStr(Head)+', '+IntToStr(Head2)+ ', and '+IntToStr(Head3));
    if EquipAxe then WriteLn('The axe is Equiped') else WriteLn('The axe not is Equiped');
  end else
  begin
    WriteLn('No Axe')
    Players[CurrentPlayer].loc := 'No Axes';
    Players[CurrentPlayer].Active := False;
    Logout;
  end
end;

function MyFindAxeHead: Boolean; //Mix from SRL Findhead and Charmz findaxehead procedures + walkback from RedDot
var xh, yh, ex, ey, xb, yb, Tries: Integer;
    Start: Boolean;
begin
  if(not(LoggedIn))then Exit;
  if(InChatMulti('ou do not have', 'You do no', 'o not have a')or
  (FindBitmapMaskTolerance(AxeHeadTxt, x, y, MCX1, MCY1, MCX2, MCY2, 10, 85))) then
  begin
    if not EquipAxe then
    begin
      GameTab(4);
      Wait(50+Random(50));
      if(not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then Start:= True;
    end else
    if EquipAxe then
    begin
      GameTab(5);
      Wait(50+Random(50));
      if(not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then Start:= True;
    end
  end;

  if Start then
  begin
    Status('Finding the axe')
    WriteLn('Lost Axe Head, Finding..');
    HighestAngle;
    if(FindBitmapMaskTolerance(BrokenAxeHeadMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))then
    begin
      AxesBroke:= AxesBroke + 1;
      WriteLn('Found a Broken Axe!');
      NoAxe:= True;
      Mouse(XH,YH,0,0,false);
      if not ChooseOption(Ex, Ey, 'emove') then
             ChooseOption(ex, ey, 'Cancel');
      Result:= False;
      Exit;
    end

  GameTab(4);
  FtWaitE(2000+Random(100));

  if(InvFull)then
  begin
    if(FindBitmapMaskTolerance(LogMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))then
    begin
      Mouse(XH, YH, 0, 0, False);
      ChooseOption(x, y, 'rop');
    end
  end

  repeat
    if not LoggedIn then Exit;
    if (FindDTM(HeadDTM, XH, YH, MIX1, MIY1, MIX2, MIY2)) then Break;
    if not (FindObjMulti('Take', Head, Head2, Head3, 5)) then
    begin
      SetRun(True);
      Tries := Tries + 1;
      WriteLn('Axe head not found. Taken ' + IntToStr(tries) + ' tries');
      Status('Axe Head not found - Rotating Screen');
      KeyDown(VK_LEFT);
      Wait(500 + Random(800));
      KeyUp(VK_LEFT);
      Wait(400 + Random(300));
      if not FindObjMulti('Take', Head, Head2, Head3, 5) then
      begin
        Status('Axe Head not found - Moving to Red Dot');
        x := 648;
        y := 83;
        FindColorSpiral(x, y, 241, 615, 55, 675, 115)
        XB := X
        YB := Y
        Mouse(x + 3, y + 3, 2, 2, True);
        Flag;
        Wait(100 + Random(300));
        Tries := Tries + 1;
      end;
      if FindObjMulti('Take', Head, Head2, Head3, 5) then
      begin
        Status('Found Axe Head');
        WriteLn('Axe head was found.  Picking it up');
        Wait(300 + Random(400));
        GetMousePos(x, y);
        Mouse(x, y, 0, 0, True);
        Flag;
        Wait(500 + Random(300));
        XB := 648 - XB + 648
        YB := 83 - YB + 83
        Mouse(XB,YB,1,1,True);
        Flag;
        Wait(500 + Random(300));
        Tries := Tries + 1;
      end else
      begin
        if (not(FindSymbol(x, y, 'Tree'))) then
        begin
          Status('Walking back from Red Dot');
          FtWaitE(500 + Random(300));
          XB := 648 - XB + 648
          YB := 83 - YB + 83
          Mouse(XB,YB,1,1,True);
          Flag;
          FtWaitE(500 + Random(300));
          Tries := Tries + 1;
        end;
      end;
    end;
  until (tries > 9) or (FindDTM(HeadDTM, XH, YH, MIX1, MIY1, MIX2, MIY2));
  if (tries > 9) then NoAxe := True else
  if (AttachHead) then
  begin
    Result := True;
    NoAxe := False;
    GameTab(4);
  end
    Setrun(False);
    MakeCompass('N');
    Flag;
    Wait(500);
    if FindSymbol(x, y, 'tree') then
    begin
      MouseFindFlag(x, y -9, 1, 1);
      FFlag(0);
    end
  end;
end;

procedure GetBestAxe;
var RuneAxeMask, AddyAxeMask, MithAxeMask, SteelAxeMask, IronAxeMask, BronzeAxeMask, x ,y: integer;
begin
  Status('Getting the best axe from the bank');
  Wait(5000);

  RuneAxeMask := BitmapFromString(5, 10, 'z78DA958C410E80400803BF040' +
       'B6DC2D58DFEFF49EAE281E86A620F3DCC14448EA8DCFB8A37045B' +
       'EDBA71C742266728247ED8FCA920B6891DFCDBD24F5E3B37B6C2D' +
       '09F3C6FAD4330E125FAC2650704733B67');
  AddyAxeMask := BitmapFromString(5, 10, 'z78DA7D8BB10DC0200C0457B2F' +
       '11B899208F65F8944503C58E48A2FEE6C91179573175057282FDF' +
       '203990A6CF455DCA56E9EB56ADA3598F75FAFF9AF179DE5BDD7E2' +
       'B1EABD113D12C06E4823B85');
  MithAxeMask := BitmapFromString(5, 10, 'z78DA8D90410AC0200C04BF94B' +
       '08992A394FAFF27D5AAA5DB16A11BD8C34C02A2488BCADD8F6047' +
       'F58D9B374D4DBD0E9E425D82EDBC6AE341567ED9CE51503CAD6CB' +
       '293734F3BAEDEFC7A5546767C3965F91B0716F53C9C');;
  SteelAxeMask := BitmapFromString(5, 10, 'z78DA758E490E80300C03BFE4' +
       '40EB28D7B2FCFF49A48B5028604B3E8CDB24804B30E79066EEDC6' +
       '2C6375A74712B4F1E34C9B047DB78FFF5D1F6992B8BFBDD36AEA0' +
       '55DF2D62CB5479CC3EC16F51F7CC87FC96543D6F0C921F8E0BF2C' +
       '73C7F');
  IronAxeMask := BitmapFromString(5, 10, 'z78DA958C310E80300C03BFE40' +
       '863292355E9FF9F44A1194251073C78B8930DF418E68EEC1B2B6B' +
       'EE97151BDBE02A26787E8895B1F0F86D1FCE934E5F59E9E6B9878' +
       'DD5CC63DB5F457D798A2D382EE20F3C76');
  BronzeAxeMask := BitmapFromString(5, 10, 'z78DA33300002430374120A4' +
       'C9C8D1D8D8C90496435C8E2669686A6069658642D8CCD8D0CB0C8' +
       '82C5299135330189239310352626C626862E98E250BD48B298FEC' +
       '5150E1000001FB63B4E');

  if ((Players[CurrentPlayer].level[20]) >= 41) and (FindBitmapToleranceIn(RuneAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then
  begin
    WriteLn('Rune Axe is found')
    Wait(1000);
    repeat
     Mouse(x, y, 1, 1, True);
     Wait(3000);
    until (FindBitmapToleranceIn(RuneAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20))
  end else

  if ((Players[CurrentPlayer].level[20]) >= 31) and (FindBitmapToleranceIn(AddyAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then
  begin
    WriteLn('Addy Axe is found')
    Wait(1000);
    repeat
      Mouse(x, y, 1, 1, True);
      Wait(3000);
    until (FindBitmapToleranceIn(AddyAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20))
  end else

  if ((Players[CurrentPlayer].level[20]) >= 41) and (FindBitmapToleranceIn(MithAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then
  begin
    WriteLn('Mithril Axe is found')
    repeat
      Mouse(x, y, 1, 1, True);
      Wait(3000);
    until (FindBitmapToleranceIn(MithAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20))
  end else

  if ((Players[CurrentPlayer].level[20]) >= 6) and (FindBitmapToleranceIn(SteelAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then
  begin
    WriteLn('Steel Axe is found')
    Wait(1000);
    repeat
      Mouse(x, y, 1, 1, True);
      Wait(3000);
    until (FindBitmapToleranceIn(SteelAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20))
  end else

 if FindBitmapToleranceIn(IronAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20) then
 begin
   WriteLn('Iron Axe is found');
   Wait(1000);
   repeat
     Mouse(x, y, 1, 1, True);
     Wait(3000);
   until (FindBitmapToleranceIn(IronAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20))
 end else

  if FindBitmapToleranceIn(BronzeAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20) then
  begin
    WriteLn('Bronze Axe is found')
    Wait(1000);
    repeat
      Mouse(x, y, 1, 1, True);
      Wait(3000);
    until (FindBitmapToleranceIn(BronzeAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20))
  end

  FreeBitmap(RuneAxeMask);
  FreeBitMap(AddyAxeMask);
  FreeBitmap(MithAxeMask);
  FreeBitmap(SteelAxeMask);
  FreeBitmap(IronAxeMask);
  FreeBitMap(BronzeAxeMask);
end;

//----------------------------------------------------------------------------//
//                      -->   BANKING PROCEDURES   <--                        //
//----------------------------------------------------------------------------//

function MyOpenBank: Boolean;
var bx, by, tol: Integer; OpenBankTime: LongInt;
begin
  Status('Opening Bank');
  WriteLn('Opening Bank');
  if(not(LoggedIn))then Exit;
  MakeCompass('W');
  LowestAngle;
  Tol := 0
  MMouse(240, 135, 1, 1);
  if IsUpTextMulti('e Bank', 'Booth', 'ooth') then
  begin
    GetMousePos(bx, by);
    Mouse(bx, by, 0, 0, False);
    if ChooseOption(x, y, 'uickly') then
    begin
      MarkTime(OpenBankTime);
      repeat
        if(not(LoggedIn))then Exit;
        Wait(10);
        if TimeFromMark(OpenBankTime) > 20000 then Exit;
        if BankScreen then Break;
      until BankScreen;
      Result := True;
      exit;
    end
  end else
  repeat
  Wait(200);
  if (FindObjectMulti(bx, by, 'se Bank', 'Bank Booth', 'nk Booth', 8026748, 1984346, 3026483, Tol, 10, True, True)) then
  begin
    if(not(LoggedIn))then Exit;
    Mouse(bx, by, 0, 0, False);
    if ChooseOption(x, y, 'uickly') then
    begin
      MarkTime(OpenBankTime);
      repeat
        if(not(LoggedIn))then Exit;
        Wait(10);
        if BankScreen then Break;
        if TimeFromMark(OpenBankTime) > 20000 then Exit;
      until BankScreen;
      Result := True;
      exit;
    end
    Wait(200);
  end else Tol := Tol + 10;
  until ((BankScreen) or (Tol >= 50))
  if (Tol >= 50) then result := False;
end;

procedure Bank;
begin
  Status('Banking')
  if(not(LoggedIn))then Exit;
  if (FlagPresent) then Flag;
  GetAllLevels;
  GainLvl;
  CountLogs;

  if (not(MyOpenBank)) then
  begin
    if(not(LoggedIn))then Exit;
    MakeCompass('N');
    HighestAngle;
    Openbank3;
  end

  if (EquipAxe) then Deposit(1,28,2) else
  Deposit (2,28,2)

  if (NoAxe) then
  begin
    fixbank;
    wait(1000);
    DepositAll;
    Wait(1000)
    GetBestAxe;
    Wait(1000);
    Closebank;
    Wait(1000);
    if FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10) then Mouse(x, y, 1, 1, True);
    Wait(5000);
    CharmFindAxeHeadColors;
    Loads := loads +1
    Banks := Banks +1
  end else
  begin
    Closebank;
    Banks := Banks +1
    Loads := Loads +1
  end

  PerfectNorth;
  HighestAngle;
end;

//----------------------------------------------------------------------------//
//                      -->   WALKING PROCEDURES   <--                        //
//----------------------------------------------------------------------------//

Function CountArray(Color: integer):integer;  //Tarajunky
var n:integer;
begin
  For n:= 0 to GetArrayLength(ColorArray)-1 do
  begin
    if ColorArray[n]= Color then result:=result+1;
  end;
end;

Function FindDirtColor: integer;
var h,i,j,n,tol,Color:integer; ColorPoints: TPointArray;
begin
   if(not(LoggedIn))then Exit;
   repeat
   if Tol > 60 then Color := DirtColor else Color := 1652808
   if Tol = 10 then Color := DirtColor;
   FindColorsSpiralTolerance(MMCX, MMCY, ColorPoints, Color, MMX1, MMY1, MMX2 -20, MMY2, tol)
     For h := 0 to GetArrayLength(ColorPoints)-1 do
     begin
       TestColor := GetColor(ColorPoints[h].x, ColorPoints[h].y);
       SetArrayLength(ColorArray, 0);
       n:=0;
       red := (TestColor mod 256)                                                          //
       green := ((TestColor / 256) mod 256);                                               //
       blue := ((TestColor / 256) / 256);                                                  //
                                                                                           //  this part is Tarajunky's
       if Tol < 60 then if FindColor(x, y, TestColor, 680, 15, MMX2, MMY2) then            //
       if Red - Green >= 3 then if Red - Green <= 32 then                                  //
        if Red - Blue >= 30 then if Red - Blue <= 62 then                                  //
         if Green - Blue >= 15 then if Green - Blue <= 50 then                             //
          if GetColor(ColorPoints[h].x +5, ColorPoints[h].y) = TestColor then
           if GetColor(ColorPoints[h].x -9, ColorPoints[h].y) = TestColor then
            if GetColor(ColorPoints[h].x +3, ColorPoints[h].y +3) = TestColor then
             if GetColor(ColorPoints[h].x -3, ColorPoints[h].y -3) = TestColor then
       for i:= 0 to 15 do
       begin
         for j:= 0 to 6 do
         begin
           SetArrayLength(ColorArray, GetArrayLength(ColorArray)+1);
           ColorArray[n]:=GetColor(ColorPoints[h].x -9 + i, ColorPoints[h].y -3 + j);
           n:=n+1;
         end;
       end;

       if (CountArray(TestColor) > 80) then
       begin
         WriteLn('Color = '+ inttostr(testColor)+' Red: '+inttostr(Red)+' Blue: '+inttostr(Blue)+' Green: '+inttostr(Green));
         WriteLn('DirtColor = ' + Inttostr(TestColor) + ' found at a Tol of ' + IntToStr(Tol));
         DirtRoadColor := TestColor;
         Result := DirtRoadColor;
         DirtColor := DirtRoadColor;
         exit;
       end
     end;
  Tol := Tol + 10;
  if Tol > 20 then IdleTime(Tol * 30, 75, 1) else Wait(Tol * 30)        //Makes sure it wont logout.
  until Tol > 100;
  WriteLn('DirtRoadColor NOT found!');
  WriteLn('Terminating script..');
  TerminateScript;
end;

procedure WalkToYews;
begin
  if(not(LoggedIn))then Exit;
  Status('Walking to Yews');
  FindRoadColor;
  RadialRoadWalk(RoadColor, 95, 58, 54, -1, 0);
   if not FindMMColor(x, y, RoadColor) then FindRoadColor;
  RadialRoadWalk(RoadColor, 140, 195, 55, -1, -1);
   if not FindMMColor(x, y, RoadColor) then FindRoadColor;
  RadialRoadWalk(RoadColor, 140, 195, 55, -1, -1);
   if not FindMMColor(x, y, RoadColor) then FindRoadColor;
  RadialRoadWalk(RoadColor, 120, 160, 55, -1, -1);
  Flag;
  FindDirtColor;
  RadialWalk(DirtRoadColor, 135, 75, 55, -1, 0);
   if not FindMMColor(x, y, DirtRoadColor) then
   begin
     Flag;
     FindDirtColor;
   end
  RadialWalk(DirtRoadColor, 30, 117, 55, -1, 0);
   if not FindMMColor(x, y, DirtRoadColor) then
   begin
     Flag;
     FindDirtColor;
   end
  RadialWalk(DirtRoadColor , 88, 48, 50, -1, 0);
  SymbolAccuracy := 0.5;
  if FindSymbol(tx, ty, 'tree') then Mouse(tx, ty +5, 1, 1, True) else
  begin
    if not FindMMColor(x, y, DirtRoadColor) then
      begin
        Flag;
        FindDirtColor;
      end
      RadialWalk(DirtRoadColor , 88, 48, 50, -1, 0);
      if not FindSymbol(tx, ty, 'tree') then
      begin
        if TreeSymbol <> 0 then
        if FindColorTolerance(tx, ty, Treesymbol, MMX1, MMY1, 785, 90, 1) then Mouse(tx, ty +9, 1, 1, True) else
        begin
          WriteLn('YewSymbol not found, maybe its an Ent, so we are waiting..');
          FtWaitE(15000);
          MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0);
          FtWaitE(10000);
          if FindSymbol(tx, ty, 'tree') then Mouse(tx, ty +9, 1, 1, True);
        end else
        begin
          WriteLn('Tree not found');
          Players[CurrentPlayer].Loc := 'Lost while walking to Yews';
          Players[CurrentPlayer].Active := False;
          LogOut;
          SymbolAccuracy := 0.9;
          exit;
        end
      end
  end;
  Flag;
  Players[CurrentPlayer].Loc := 'Yew 1';
  SymbolAccuracy := 0.9;
end;

procedure WalkToBank;
begin
  if(not(LoggedIn))then Exit;
  Status('Walking to Bank');
  FindDirtColor;
  RadialWalk(DirtRoadColor , 290, 245, 58, 1, 0);
   if not FindMMColor(x, y, DirtRoadColor) then
    begin
      Flag;
      FindDirtColor;
    end
  RadialWalk(DirtRoadColor , 276, 230, 58, 1, 0);
   if not FindMMColor(x, y, DirtRoadColor) then
    begin
      Flag;
      FindDirtColor;
    end
  RadialWalk(DirtRoadColor , 185, 265, 55, 1, 0);
  Flag;
  FindRoadColor;
  RadialRoadWalk(RoadColor, 270, 320, 65, 1, 1);
   if not FindMMColor(x, y, RoadColor) then FindRoadColor;
  RadialRoadWalk(RoadColor, 320, 365, 58, 1, 1);
  Flag;
  SymbolAccuracy := 0.3;
  if (DTM3Flag(BankDot1, BankDot2, BankDot3, True)) then Flag else
  if FindSymbol(tx, ty, 'bank') then Mouse(tx, ty, 1, 1, True) else
  begin
    if not FindMMColor(x, y, RoadColor) then FindRoadColor;
    RadialRoadWalk(RoadColor, 335, 390, 45, 1, 1);
    Flag;
    if (DTM3Flag(BankDot1, BankDot2, BankDot3, True)) then Flag else
    if FindSymbol(tx, ty, 'bank') then Mouse(tx, ty, 1, 1, True) else
    begin
      WriteLn('Bank not found');
      Players[CurrentPlayer].Loc := 'Lost while walking to bank';
      Players[CurrentPlayer].Active := False;
      LogOut;
      SymbolAccuracy := 0.9;
      exit;
    end
  end
  Players[CurrentPlayer].Loc := 'Bank';
  SymbolAccuracy := 0.9;
end;

procedure Yew1to2;
begin
  if(not(LoggedIn))then Exit;
  if ((TreeSymbol = 0) or (not(FindMMcolor(x, y, TreeSymbol)))) then TreeSymbol := (GetSymbolColor(x, y, 'tree'))
  MouseFindFlag(675, 115, 1, 1);
  fflag(3);
  if (FindColorTolerance(x, y, Treesymbol, 650, 70, 720, 155, 1)) then mouse(x, y, 1, 1, true);
  Flag;
  Players[CurrentPlayer].Loc := 'Yew 2';
  Wait(500);
end;

procedure Yew2to1;
begin
  if(not(LoggedIn))then Exit;
  if ((TreeSymbol = 0) or (not(FindMMcolor(x, y, TreeSymbol)))) then TreeSymbol := (GetSymbolColor(x, y, 'tree'))
  MouseFindFlag(616, 60, -1, 0)
  fflag(3);
  if (FindColorTolerance(x, y, Treesymbol, 570, 10, 650, 100, 1)) then mouse(x, y +9, 1, 1, true);
  Flag;
  Players[CurrentPlayer].Loc := 'Yew 1';
  Wait(500);
end;

procedure ChangeYews;
begin
  if(not(LoggedIn))then Exit;
  Status('Changing Yews');
  if LowerCase(Players[CurrentPlayer].Loc) = 'yew 1' then
  begin
    WriteLn('Walking from the first Yew to the second.');
    Yew1to2;
  end else
  if LowerCase(Players[CurrentPlayer].Loc) = 'yew 2' then
  begin
    WriteLn('Walking from the second Yew to the first.');
    Yew2to1;
  end
  ChangedYews := ChangedYews +1;
end;

//----------------------------------------------------------------------------//
//                      -->   CHOPPING PROCEDURES   <--                       //
//----------------------------------------------------------------------------//

function EntCheck(tx, ty: integer; Move: Boolean): Boolean;
begin
  if(not(LoggedIn))then Exit;
  if Move then MMouse(tx, ty, 1, 1);
  Wait(150 +Random(150));
  if IsUpText('Yew') then
   if FindColorTolerance(x, y, 55769, 85, 15, 115, 15, 20) then Result := True;
end;

function HandleEnt(Move: Boolean): Boolean;
var Ent: LongInt;
begin
  if(not(LoggedIn))then Exit;
  if (FindColorCircleTolerance(x,y, 195836, 15, 648, 83, 20)) then
   if EntCheck(TreeX, TreeY, Move) then
   begin
     WriteLn('Handling Ent!');
     Result := True;
     Mouse(MMCX, MMCY, 0, 0, True);
     MarkTime(Ent);
      repeat
       FTWaitE(1500);
      until ((not EntCheck(TreeX, TreeY, True)) or (TimeFromMark(Ent) > 120000))
     EntsAvoided := EntsAvoided +1;
   end else
  Result := False;
end;

Function FindDeformedYew(Var ObjX, ObjY: Integer): Boolean;  //Charmz    <-- Not used for now, as it causes to much lack.
Var
Acc, Ref: Extended;
TX, TY, Times, Tol: Integer;
Begin
  if(not(LoggedIn))then Exit;
  WriteLn('Performing FindDeformedYew');
  Ref:= 0.9;
  Tol:= 0;

  For Times := 1 to 10 do
   Begin
    FindTalk;
    Wait(50+Random(100));
    Try
     FindDeformedBitmapToleranceIn(Tree, TX, TY, MSX1 + 50, MSY1 + 30, MSX2 - 50, MSY2 - 50, Tol, 2, True, Acc);
    except
      Result:= False;
    End
    If(Acc >= Ref)then
     Begin
      tx := tx +10
      TempColor := GetColor(tx, ty);
      MMouse(TX, TY, 3, 3);
      If(IsUpTextMulti('hop down Ye', 'down Yew', 'own Y')) or (IsUpTextMulti('Yew', 'ew', 'Ye'))then
       Begin
        ObjX:= TX;
        ObjY:= TY;
        TreeX := ObjX;
        TreeY := ObjY;
        Result:= True;
        Exit;
       End
     End
    Ref:= Ref - 0.05; // Ref - 0.1
    Tol:= Tol + 5; // Tol + 10
    Wait(Random(50));
  Wait(1);
 End
 Wait(1);
End;

function FindYew(var x, y: integer): Boolean;
var
  Points: TPointArray;
  I, Ci, Tol: Integer;
begin
  repeat
   if FindMSColorTol(x, y, 598048, Tol) then Break else Tol := Tol +2
  until Tol > 15
  if Tol > 15 then
  begin
    Result := False;
    exit;
    Tol := 0
  end else
  begin
    FindColorsSpiralTolerance(MSCX, MSCY, Points, 598048, MSX1 + 50, MSY1 + 30, MSX2 - 50, MSY2 - 50, tol)
    ci := 0;
    for I := 1 to GetArrayLength(Points) - 1 do
    begin
      if (Distance(Points[ci].x, 0, Points[i].x, 0) >= 2) and
        (Distance(0, Points[ci].y, 0, Points[i].y) >= 2) then
        ci := I
      else
      begin
        Points[I].x := 0;
        Points[I].y := 0;
      end;
    end;
    for i := 0 to GetArrayLength(Points) - 1 do
    begin
      if (Points[i].x <> 0) then
      if FindColorTolerance(x, y, 2373688, Points[i].x -5, Points[i].y -5, Points[i].x +5, Points[i].y +5, 5 +Tol) then
      if FindColorTolerance(x, y, 4159600, Points[i].x -5, Points[i].y -5, Points[i].x +5, Points[i].y +5, 5 +Tol) then
      if FindColorTolerance(x, y, 2900024, Points[i].x -5, Points[i].y -5, Points[i].x +5, Points[i].y +5, 5 +Tol) then
      begin
        TempColor := GetColor(Points[i].x, Points[i].y);
        MMouse(Points[i].x, Points[i].y, 0, 0)
          Wait(50);
        if (IsUpText('Yew')) then
        begin
          Status('Yew found at a Tol of ' +IntToStr(Tol));
          Result := True;
          Break;
        end;
      end;
    end;
    if (Result) then
    begin
      x := Points[i].x;
      y := Points[i].y;
      TreeX := x;
      TreeY := y;
    end;
  end;
  Tol := 0;
end;

function TreeGone(Sx, Sy: integer): Boolean;
begin
  if(not(LoggedIn))then Exit;
  if ((not FindColor(x, y, TempColor, Sx -4, Sy -4, Sx +4, Sy +4)) or (TimeFromMark(ChopMark) > 120000)) then
  begin
    MMouse(TreeX, TreeY, 1, 1);
    Wait(100);
    if not IsUpText('Yew') then
    begin
      Status('Yew Gone');
      Result := True;
    end else
    begin
      if FindObjEx(tx, ty, 'Yew', TreeX -20, TreeY -20, TreeX +20, TreeY +20, 598048, 20, 2, 2, 50, True) then
      begin
        TempColor := GetColor(tx, ty);
        MarkTime(ChopMark);
      end
    end
  end
end;

function ClickTree: Boolean;
var Ent: LongInt;
begin
  if(not(LoggedIn))then Exit;
  if FindYew(tx, ty) then
  begin
    GainLvl;
    if not EntCheck(TreeX, TreeY, False) then
    begin
       if(Random(20) < 15)then
       begin
         Mouse(tx, ty, 1, 1, True);
       end else
       begin
         Mouse(tx, ty, 0, 0, False);
         if not ChooseOption(x, y, 'hop down')then
         Mouse(tx, ty, 1, 1, True);
       end
    end else
    begin
      MarkTime(Ent);
       repeat
        FTWaitE(1500);
       until ((not EntCheck(TreeX, TreeY, True)) or (TimeFromMark(Ent) > 120000));
       Mouse(tx, ty, 1, 1, True);
    end
    Result := True;
    FtWaitE(100);
    if FindFastRandoms then Mouse(tx, ty, 1, 1, True);
    GainLvl;
    MyFindAxeHead;
  end else
{  if FindDeformedYew(tx, ty) then
  begin
    Wait(50 +Random(150));
    if not HandleEnt(False) then Mouse(tx, ty, 1, 1, True);
    Result := True;
  end else} Result := False;
end;

procedure WaitTillTree;
var TillTreeMark: LongInt;
begin
  if(not(LoggedIn))then Exit;
  if InvFull then Exit;
  Status('Yew not found, waiting..');
  MarkTime(TillTreeMark);
  GetAllLevels;
  repeat
   case Random(20) of
     0 : SleepAndMoveMouse(2000 +Random(1000));
     1 : MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0);
     2 : IdleTime(2000 +Random(1000), 14, 2);
     3 : begin RandomRClick; Wait(200); ChooseOption(x, y, 'Cancel'); end
     4 : FtWaitE(1500);
     5 : PickUpMouse;
     6 : FtWait(50);//AlmostLogOut;
     7 : GameTab(Random(13) +1);
     8 : SleepAndMoveMouse(2000 +Random(1000));
     9 : WWait(3000);
     10: PickUpMouse;
     11: FtWait(8);
     12: IdleTime(3000 +Random(1000), 14, 2);
     13: WWait(2500);
     14: IdleTime(2700, 11, 1);
     15: GameTab(Random(13) +1);
     16: WWait(2000);
     17: FtWaitE(1500);
     18: PickUpMouse;
     19: begin RandomRClick; FtWaitE(200); ChooseOption(x, y, 'Cancel'); end
   end
   FindFastRandoms;
   if ClickTree then Break;
   FindFastRandoms;
   Wait(1000);
   if (TimeFromMark(Report) > 180000) then ProgressReport;
   FtWaitE(1500 +Random(2000));
   if (TimeFromMark(TillTreeMark) > 450000) then
   begin
     WriteLn('No tree for 7,5 minutes');
     Players[CurrentPlayer].Loc := 'No tree in 7,5 mins';
     Players[CurrentPlayer].Active := False;
     LogOut;
   end
  until(ClickTree);
end;

procedure Chop;
var TreeWait: LongInt;
begin
  if(not(LoggedIn))then Exit;
  HighestAngle;
  repeat
  Status('Chopping');
  FirstEmptySlot;
  if NoAxe then break;
  if not ClickTree then WaitTillTree;
  MarkTime(ChopMark);
  MarkTime(LogPresent);
  MarkTime(LogCheck);
   repeat
    Status('Chopping');
    if(not(LoggedIn))then Exit;
    if InvFull then Break;
    FtWait(2);
    MyFindAxeHead;
    if NoAxe then break;
    if HandleEnt(True) then ClickTree;
    if not TreeGone(TreeX, TreeY) then
    case Random(20) of
      0 : SleepAndMoveMouse(500 +Random(500));
      1 : MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0);
      2 : IdleTime(1000 +Random(1000), 14, 2);
      3 : begin RandomRClick; Wait(200); ChooseOption(x, y, 'Cancel'); end
      4 : FtWait(2);
      5 : PickUpMouse;
      6 : SleepAndMoveMouse(500 +Random(500));//AlmostLogOut;
      7 : GameTab(Random(13) +1);
      8 : SleepAndMoveMouse(500 +Random(1000));
      9 : WWait(1000);
      10: PickUpMouse;
      11: FtWait(6);
      12: IdleTime(500 +Random(1000), 14, 2);
      13: WWait(500);
      14: IdleTime(700, 11, 1);
      15: GameTab(Random(13) +1);
      16: HandleEnt(False);
      17: MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0);
      18: PickUpMouse;
      19: begin RandomRClick; Wait(200); ChooseOption(x, y, 'Cancel'); end
    end
    if not TreeGone(TreeX, TreeY) then
    begin
      MarkTime(TreeWait);
      if HandleEnt(True) then ClickTree;
      repeat
        FtWaitE(500 +Random(1000));
        Wait(100);
        if HandleEnt(False) then ClickTree;
        Wait(100);
        if NoAxe then break;
        if CheckForLogs then ClickTree;
        if TreeGone(TreeX, TreeY) then break;
        if InvFull then Break;
        if (TimeFromMark(Report) > 180000) then ProgressReport;
      until(TimeFromMark(TreeWait) > 30000);
    end
   until ((TreeGone(TreeX, TreeY)) or (TimeFromMark(ChopMark) > 90000));
   MyFindAxeHead;
   if NoAxe then break;
   if not InvFull then ChangeYews;
 until ((InvFull) or (not(LoggedIn)));
 if LowerCase(Players[CurrentPlayer].Loc) = 'yew 2' then Yew2to1;
end;

//----------------------------------------------------------------------------//
//                           -->   MAIN THING   <--                           //
//----------------------------------------------------------------------------//

begin
  ClearDebug;
  WriteLn('Nielsie95 Draynor Yew Cutter / Banker version '+ Version);
  Status('Nielsie95 Draynor Yew Cutter / Banker version '+ Version);
  Wait(2500);
  setupsrl;
  activateclient;
  BenMouse := False;
  MouseSpeed := 20 + random(5);
  DeclarePlayers;
  NickNameBMP:=CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,UpChars);
  LoadVar;
  DirtColor := HumanDirtColor;
  LoadsToDo := Players[CurrentPlayer].Integer1;
  LoginPlayer;
  CharmFindAxeHeadColors;
  GetAllLevels;
  MarkTime(LoggedInTime);
  repeat
    repeat
      if LowerCase(Players[CurrentPlayer].loc) = 'bank' then
      begin
        if InvCount > 10 then Bank;
        if (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) then Break;
        if (Loads >= LoadsToDo) then Break;
        WalkToYews;
      end

      if ((LowerCase(Players[CurrentPlayer].loc) = 'yew 1') or (LowerCase(Players[CurrentPlayer].loc) = 'yew 2')) then
       begin
         Chop;
         Wait(100);
         if (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) then Break;
         WalkToBank;
       end

       ProgressReport;
       if not LoggedIn then Break;
    until((Loads >= LoadsToDo) or (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) or (not(LoggedIn)));
    
   if (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) then
   begin
     if not (Players[CurrentPlayer].Active) then wait(100) else
     Players[CurrentPlayer].loc := 'Times up';
     LogOut;
     WriteLn('Time is up, Logging in next player');
   end
   if Loads >= LoadsToDo then
   begin
     if not (Players[CurrentPlayer].Active) then wait(100) else
     Players[CurrentPlayer].loc := 'Loads Done';
     LogOut;
     WriteLn('Loads are done, Logging in next player');
   end
   if LoggedIn then LogOut;
   Loads := 0;
   LoadsToDo := Players[CurrentPlayer].Integer1;
   NextPlayer(Players[CurrentPlayer].Active);
   MarkTime(LoggedInTime);
   CharmFindAxeHeadColors;
   GetAllLevels;
   ProgressReport;
  until(False);
end.
 
Status
Not open for further replies.
Runescape Gamblingrunescape gambling
Back
Top