Page 15 of 17 FirstFirst ... 51314151617 LastLast
Results 351 to 375 of 403

Thread: Nielsie95's Yew Retriever Draynor

  1. #351
    Join Date
    Apr 2007
    Posts
    217
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Second I ran it went to dranynor square than proceeded to draynor manor then it logged out

  2. #352
    Join Date
    Jul 2007
    Posts
    20
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    ight i just found out that this script dont work with d axe idk if ppl posted already but that could be a good bug to fix. Good work though.

  3. #353
    Join Date
    Jul 2007
    Location
    amsterdam
    Posts
    4
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
    < 0 : Arr0w me1 = False . Loc = No tree in 7,5 mins . Chopped 27 Logs. . Lvl = 77
    < 1 : = True . Loc = . Chopped 0 Logs. . Lvl = 0
    < 2 : = False . Loc = . Chopped 0 Logs. . Lvl = 0
    < 3 : = False . Loc = . Chopped 0 Logs. . Lvl = 0
    <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
    NextPlayer

    Enter your username and Password

    Enter your username and Password

    Enter your username and Password

    Enter your username and Password

    Enter your username and Password



    i was sleeping end he don't auto cut cuz he walks strange he cut max 1 hour then he go bank en log out at jail...

  4. #354
    Join Date
    Jul 2007
    Posts
    70
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Will post a prog when complete, but so far, all chars went from bank to Yew, some got lost, but all got full loads after a bit of direction from myself, but all never made it back to the bank. all New jail, some by Tree..

  5. #355
    Join Date
    Jul 2007
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    looks great ran it for a few minutes.
    Just wonderig does it also autotalk at somepoint?
    <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
    < 0 : = True . Loc = Yew 2 . Chopped 8 Logs. . Lvl =
    < 1 : = True . Loc = . Chopped 0 Logs. . Lvl = 0
    < 2 : = True . Loc = . Chopped 0 Logs. . Lvl = 0
    < 3 : = True . Loc = . Chopped 0 Logs. . Lvl = 0
    Worked for 3 Minutes and 52 Seconds
    || Chopped 8 Logs.
    || Banked 0 time[s].
    || Changed from yew 1 time[s].

  6. #356
    Join Date
    Jul 2007
    Posts
    3
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    It doesn't work for me

  7. #357
    Join Date
    Jul 2007
    Posts
    19
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    @ me it just stands still please help me

  8. #358
    Join Date
    Jul 2007
    Posts
    12
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Looks pretty good, I'm gonna test it and get you a proggy soon.

  9. #359
    Join Date
    Jul 2007
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Does the script have a autotalk ,antiban,or a anti random???

    everything else is perfect

  10. #360
    Join Date
    Jul 2007
    Location
    St. Louis, Missouri, USA.
    Posts
    575
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Hey, I'm new to these forums, trying not to be a leech, but I don't have a progress report right now I'll post one in a bit. Few things I've noticed are it gets lost alot on its way from to and from the bank. The random event finders are nice, but the anti-ban is sometimes a little too frequent and wastes time instead of cutting the yews more. Also, Runescapes newest update replaced the axe head flying off with a new random event so if you could remove both the axe head finders in it and maybe put and autoresponder even just a simple one that says your Woodcut level when asked this script would be perfect. I'll be back with a proggie or two in a bit.

    P.S. This is the only woodcut script I've even found that compiles on the newest Divi so good job on that lol.

    Edit:
    Okay not the greatest proggie here, but it might help you with some glitches.

    I started both characters at Yew 1. The first guy actually had a full invo of yews, but it doesn't say it in the progress report, and he ended up at the yew tree north of Yew 1 while trying to bank. The second was about 10 squares west and 5 north of Yew 1. I'll try and run it again and hopefully get something a little less disappointing.

  11. #361
    Join Date
    Jul 2007
    Posts
    26
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    mines went to yew 1 and couldnt go to yew 2 for some reason.

  12. #362
    Join Date
    Jun 2007
    Posts
    1
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    this script doesnt work with the new player interface in game ive noticed none of my scripts work and they just keep clicking from stats to bag and doing nothing so could you make one that works with the new interface thanks

  13. #363
    Join Date
    Feb 2007
    Posts
    203
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    can u update this script

  14. #364
    Join Date
    Jul 2007
    Location
    Edmonton, AB
    Posts
    56
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Line 83: [Error] (12535:12): Unknown identifier 'INTEGER1' in script C:\Documents and Settings\hmmmmmm\Desktop\DNYewRetriever.1.3.scar

  15. #365
    Join Date
    Aug 2007
    Location
    HOLLAND
    Posts
    61
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    I got the new player interface implemented, but, findaxe procedures are very old. Plz update!!!

    This is what i got:

    SCAR 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     :='timefault';            //Name
        Players[0].Pass     :='lolnoob!';            //Password
        Players[0].Nick     :='';            //3-4 letter nickname
        Players[0].Loc      :='Bank';            //Where is your Player? CHOOSE FROM: Bank, Yew 1 or Yew 2
        Players[0].Integers[1] := 2 ;           //Loads to do
        Players[0].Active   := True;         //Is the Player used?




    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].Integers[2];
        Players[CurrentPlayer].Integers[2] := 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].Integers[2]) +' Logs.'
        +' . Lvl = ' + IntToStr(Players[i].level[20]));
      end
      WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
      Players[CurrentPlayer].Integers[2] := 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].Integers[2] := Players[CurrentPlayer].Integers[2] + 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 !!!BUGGED FROM HERE ON!!!
    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].Integers[1];
      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].Integers[1];
       NextPlayer(Players[CurrentPlayer].Active);
       MarkTime(LoggedInTime);
       CharmFindAxeHeadColors;
       GetAllLevels;
       ProgressReport;
      until(False);
    end.

    Error:
    Line 363: [Error] (12815:1): Unknown identifier 'Head' in script C:\Program Files\SCAR 3.11\Scripts\yewchoptest.scar

  16. #366
    Join Date
    Apr 2007
    Location
    UK
    Posts
    2,295
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    You do no longer loose your axe head, its been taken out by Jagex.

    Either start again with a fresh script, or remove everything that doesnt work

    Rogeruk's Al-Kharid Tanner V1.1 [Released]
    Rogeruk's Barbarian Crafter [Coming Soon]
    Rogeruk's Guild Fisher [Coming Soon]
    !! - Taking Requests - !!

  17. #367
    Join Date
    Mar 2007
    Location
    In your computer
    Posts
    244
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    You do no longer loose your axe head, its been taken out by Jagex.

    Either start again with a fresh script, or remove everything that doesnt work
    OMFG you dont lose axe heads now??? OMFG now we can auto forvever and ever and ever and ever until we get the new random -.-.
    Even If You Are On Your Way, You Will Get Run Over If You Just Sit There.
    -ILikePie1995.

    My Best Script I Yet Made, Go Check It Out, Its In The Fighting Section. Look For UndeadKiller!

    GET FREE CASH!!!READ ALL ABOUT IT!!!
    http://www.AdPaid.com/ptr/pages/join...d=ilikepie1995

    JOIN AdPaid.Com NOW!!!ITS OWNAGE!!!
    http://www.AdPaid.com/ptr/pages/conf...d=ilikepie1995

  18. #368
    Join Date
    Jul 2007
    Location
    Edmonton, AB
    Posts
    56
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Please update this script?

    Apparently you don't lose your axe head anymore, lol.

  19. #369
    Join Date
    Aug 2007
    Location
    HOLLAND
    Posts
    61
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Wdf? View Post
    Please update this script?

    Apparently you don't lose your axe head anymore, lol.
    I'll try to fix this script. But i have never scripted be4. Well I fixed it for a quarter, so i'll get on it when i get home from college (1st day ^^ w00t)


    SCAR Code:
    {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
    |           Nielsie95's Yew Retriever Draynor TEMP VERSION, DOES NOT WORK          |
    |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
    |                                                           |
    |    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     :='timefault';            //Name
        Players[0].Pass     :='';            //Password
        Players[0].Nick     :='';            //3-4 letter nickname
        Players[0].Loc      :='Bank';            //Where is your Player? CHOOSE FROM: Bank, Yew 1 or Yew 2
        Players[0].Integers[1] := 2 ;           //Loads to do
        Players[0].Active   := True;         //Is the Player used?
     
     
     
     
    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].Integers[2];
        Players[CurrentPlayer].Integers[2] := 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].Integers[2]) +' Logs.'
        +' . Lvl = ' + IntToStr(Players[i].level[20]));
      end
      WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
      Players[CurrentPlayer].Integers[2] := 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].Integers[2] := Players[CurrentPlayer].Integers[2] + 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 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].Integers[1];
      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].Integers[1];
       NextPlayer(Players[CurrentPlayer].Active);
       MarkTime(LoggedInTime);
       CharmFindAxeHeadColors;
       GetAllLevels;
       ProgressReport;
      until(False);
    end.

  20. #370
    Join Date
    Apr 2007
    Location
    UK
    Posts
    2,295
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    You can still BREAK the axe, via ent.

    Rogeruk's Al-Kharid Tanner V1.1 [Released]
    Rogeruk's Barbarian Crafter [Coming Soon]
    Rogeruk's Guild Fisher [Coming Soon]
    !! - Taking Requests - !!

  21. #371
    Join Date
    Apr 2007
    Posts
    224
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    nice script man i'v used it for 14 days now mostly non stop i got 14 lvls from it.

  22. #372
    Join Date
    Apr 2007
    Posts
    68
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    nice, nice

  23. #373
    Join Date
    Sep 2006
    Posts
    6,089
    Mentioned
    77 Post(s)
    Quoted
    43 Post(s)

    Default

    Thanks jez I'm currently busy updating all my scripts for the next SCAR + SRL.. Smelter + TutRunner already are done, this one isn't next on my list, but I will update
    Hup Holland Hup!

  24. #374
    Join Date
    Apr 2007
    Posts
    224
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    look this script can't even go to all of the yews i call this script nub ibot neXus owns ths script by heaps and it takes the new randoms.

  25. #375
    Join Date
    Apr 2007
    Posts
    224
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    i'm sorry for that its true though some people got to know whats out there!

Page 15 of 17 FirstFirst ... 51314151617 LastLast

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. [SRL 4] Seers Maple Retriever
    By Timothegreat in forum RS3 Outdated / Broken Scripts
    Replies: 59
    Last Post: 11-01-2009, 11:27 PM
  2. Nielsie95's Tutorial Runner Fixed*
    By mormonman in forum RS3 Outdated / Broken Scripts
    Replies: 269
    Last Post: 07-17-2009, 01:14 PM
  3. Nielsie95's WheatPicker
    By nielsie95 in forum RS3 Outdated / Broken Scripts
    Replies: 96
    Last Post: 12-15-2007, 12:11 PM

Posting Permissions

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