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

SCAR Errors

FaLCo

Member
Joined
Apr 1, 2007
Sythe Gold
0
Messages
88
SCAR Errors
Failed when compiling
Line 59: [Error] (14813:10): Unknown identifier 'FindItemColor' in script C:\Program Files\SCAR 2.03\includes\SRL/SRL/Skill/Fishing.scar

i always get these errors.. AND i have SRL!!
 
SCAR Errors
Now i get this error


Failed when compiling
Line 565: [Error] (18637:10): Unknown identifier 'CurrentSkillXP' in script C:\Program Files\SCAR 2.03\Scripts\Any Fisher.txt
 
SCAR Errors
Post the script.
 
SCAR Errors
Code:
program rustysautofisher;

{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Fishing.scar}
{.include SRL/SRL/Extended/xMapWalk.scar}

{
Rusty's auto fisher!
-Features-
Options to fish in draynor, lumbridge, guild, catherby, and barbarian village.
Good banking procedure, never fails
Full anti randoms
Full anti ban
Can run all night
Easy to do setup-anyone can do it!
-Instructions-
Full out the setup
Specify the window
Start near the fishing spot
Have fishing utensil in first inventory slot, bait or feathers in second iventory slot if they are needed.
Run!

Note: If you're doing lumbridge, there is no banking.
The bank is way too far off.
It's only power fishing.
}

//Setup
Const
thefishis = 'trout'; //what fish, options are shrimp (does both shrimp and anchovies), trout (trout and salmon), pike, lobster, tuna (tuna and swordfish), or shark
theplaceis = 'barbvill'; //where, options are catherby, guild, draynor, lumbridge, and barbvill.
loadstodo = 1000; //loads to do
//End of setup

//Don't touch below

 var
  loads, fish, startlevel, endlevel, levelsgained, startxp, endxp, xpgained:Integer;
   FishText:String;
    run3:Boolean;
   Shrimp, Trout, Pike, Lobsters, Tuna, Sharks:Integer;
  i:Integer;

  procedure progressreport;
   begin
    AddToReport('Rustys autofisher has done...');
     AddToReport('Loads: '+inttostr(loads));
      AddToReport('Fish: '+inttostr(fish));
     AddToReport('Levels gained: '+inttostr(levelsgained));
    AddToReport('XP Gained: '+inttostr(xpgained));
   AddToReport('I hope you had as much fun autoing as I did making the script!');
end;

 procedure mehantirandoms;
  begin
   FindNormalRandoms;
   FindFishingEquipmentColor;
  FindPlant;
 if (FindFight = true) then
  begin
   RunAwayDirection('S');
     Wait(10000);
       RunBack;
end;
 if (FindMSColor(x, y, FishingEquipmentColor)) then
  begin
   Mouse(x, y, 1, 1, true);
end;
HandleWhirlPool;
 end;

  procedure mehantiban;
   begin
    RotateEvery(1);
    AntiBan;
    RandomChat;
    EnglishWords;
end;

 procedure tothefish2;
  begin
   SetRun(true);
    GameTab(4);
 if theplaceis = 'catherby' then
  begin
   if (FindSymbol(x, y, 'archery shop')) then
    begin
     Mouse(x, y, 1, 1, true);
       Wait(5000);
        if (FindSymbol(x, y, 'fishing shop')) then
         begin
          Mouse(x, y, 1, 1, true);
           Wait(5000);
end;
end;
end;
 if theplaceis = 'guild' then
  begin
   Mouse(675, 115, 1, 1, true);
    GetSymbolColor(x, y, 'fishing spot');
   Mouse(x, y, 1, 1, true);
end;
 if theplaceis = 'barbvill' then
  begin
  Mouse(945, 269, 0, 0, true);
   Wait(5000);
    Mouse(937, 250, 0, 0, true);
     Wait(5000);
    Mouse(944, 395, 0, 0, true);
   Wait(5000);
  Mouse(943, 302, 0, 0, true);
Wait(5000);
 Mouse(935, 316, 0, 0, true);
Wait(5000);
end;
 repeat
  if (FindColorSpiralTolerance(x,y,15515792,5,5,514,337,20)) then
   begin
    Mouse(x, y, 1, 1, false);
end;
 until(ChooseOption(x, y, FishText))
  If(ChooseOption(x, y, FishText)) then
   begin
    ClickMSColor(15515792, false);
   if thefishis = 'shrimp' then
 begin
  if (ChooseOption(x, y, 'Net')) then
   begin
end;
end;
 if thefishis = 'trout' then
  begin
   if (ChooseOption(x, y, 'Lure')) then
    begin
end;
end;
 if thefishis = 'pike' then
  begin
   if (ChooseOption(x, y, 'Bait')) then
    begin
end;
end;
 if thefishis = 'lobster' then
  begin
   if (ChooseOption(x, y, 'Cage')) then
    begin
end;
end;
 if thefishis = 'tuna' then
  begin
   if (ChooseOption(x, y, 'Harpoon')) then
    begin
end;
end;
 if thefishis = 'shark' then
  begin
   if (ChooseOption(x, y, 'Harpoon')) then
    begin
end;
end;
end;
 if (InvFull = true) then
  SetRun(true);
  run3:=true;
end;

 procedure todabank2;
  begin
   SetRun(true);
   GameTab(4);
 if theplaceis = 'catherby' then
  begin
   if (FindSymbol(x, y, 'fishing shop')) then
    begin
    Mouse(x, y, 1, 1, true);
     Wait(5000);
    if (FindSymbol(x, y, 'archery shop')) then
 begin
  Mouse(x, y, 1, 1, true);
  Wait(5000);
 if (FindSymbol(x, y, 'bank')) then
  begin
  Mouse(x, y, 1, 1, true);
  Wait(5000);
   OpenBank3;
    Deposit(2, 28, 2);
     Closebank;
    tothefish2;
end;
end;
end;
end;
 if theplaceis = 'guild' then
  begin
  Mouse(607, 96, 1, 1, true);
  Wait(8000);
   GetSymbolColor(x, y, 'bank');
    Mouse(x, y, 1, 1, true);
     KeyDown(40);
      Wait(2000);
       KeyUp(40);
        MakeCompass('W');
       Wait(5000);
      OpenBank3;
     Deposit(2, 28, 2);
    Closebank;
   KeyDown(38);
  Wait(2000);
 KeyUp(40);
 MakeCompass('N');
tothefish2;
end;
if theplaceis = 'barbvill' then
 begin
  Mouse(935, 316, 0, 0, true);
  Wait(5000);
   Mouse(943, 302, 0, 0, true);
    Wait(5000);
     Mouse(944, 395, 0, 0, true);
      Wait(5000);
       Mouse(937, 250, 0, 0, true);
      Wait(5000);
     Mouse(945, 269, 0, 0, true);
    Wait(5000);
   OpenBank3;
  Deposit(3, 28, 2);
 Closebank;
  tothefish2;
end;
 if theplaceis = 'draynor' then
  begin
   if (FindSymbol(x, y, 'bank')) then
    begin
     Mouse(x, y, 1, 1, true);
     SendArrowSilentWait(2, 500 + Random(500));
     SendArrowSilentWait(4, 500 + Random(500));
      OpenBank3;
     Deposit(2, 28, 2);
    Closebank;
   tothefish2;
end;
end;
 if theplaceis = 'lumbridge' then
  begin
   DropToPosition(3, 28);
end;
 loads:=loads + 1;
 tothefish2;
end;

 procedure tothefish;
  begin
   SetRun(true);
   GameTab(4);
 if theplaceis = 'catherby' then
 begin
  if (FindSymbol(x, y, 'archery shop')) then
   begin
 Mouse(x, y, 1, 1, true);
  Wait(5000);
 if (FindSymbol(x, y, 'fishing shop')) then
  begin
   Mouse(x, y, 1, 1, true);
   Wait(5000);
end;
end;
end;
 if theplaceis = 'guild' then
  begin
   Mouse(706,81, 1, 1, true);
    Wait(5000);
     GetSymbolColor(x, y, 'fishing spot');
      Mouse(x, y, 1, 1, true);
end;
 if theplaceis = 'barbvill' then
  begin
   Mouse(945, 269, 0, 0, true);
   Wait(5000);
    Mouse(937, 250, 0, 0, true);
     Wait(5000);
      Mouse(944, 395, 0, 0, true);
     Wait(5000);
    Mouse(943, 302, 0, 0, true);
   Wait(5000);
  Mouse(935, 316, 0, 0, true);
 Wait(5000);
end;
 repeat
  repeat
   if (FindColorSpiralTolerance(x,y,15515792,5,5,514,337,20)) then
 begin
  Mouse(x, y, 1, 1, false);
end;
 until(ChooseOption(x, y, FishText))
  If(ChooseOption(x, y, FishText)) then
 begin
  ClickMSColor(15515792, false);
 if thefishis = 'shrimp' then
  begin
   if (ChooseOption(x, y, 'Net')) then
 begin
  GameTab(4);
   for i := 1 to 28 do
 if (ExistsItem(i)) then
       Shrimp := Shrimp + 1;
  if Shrimp = 28 then
  SetRun(true);
   todabank2;
end;
end;
 if thefishis = 'trout' then
  begin
   if (ChooseOption(x, y, 'Lure')) then
    begin
  GameTab(4);
  for i := 1 to 28 do
   if (ExistsItem(i)) then
      Trout := Trout + 1;
    if Trout = 28 then
 SetRun(true);
  todabank2;
end;
end;
 if thefishis = 'pike' then
  begin
   if (ChooseOption(x, y, 'Bait')) then
    begin
  GameTab(4);
  for i := 1 to 28 do
 if (ExistsItem(i)) then
      Pike := Pike + 1;
  if Pike = 28 then
SetRun(true);
todabank2;
end;
end;
 if thefishis = 'lobster' then
  begin
   if (ChooseOption(x, y, 'Cage')) then
    begin
  GameTab(4);
  for i := 1 to 28 do
 if (ExistsItem(i)) then
      Lobsters := Lobsters + 1;
  if Lobsters = 28 then
 SetRun(true);
  todabank2;
end;
end;
 if thefishis = 'tuna' then
  begin
   if (ChooseOption(x, y, 'Harpoon')) then
    begin
  GameTab(4);
  for i := 1 to 28 do
 if (ExistsItem(i)) then
      Tuna := Tuna + 1;
  if Tuna = 28 then
  SetRun(true);
 todabank2;
end;
end;
 if thefishis = 'shark' then
  begin
   if (ChooseOption(x, y, 'Harpoon')) then
    begin
  GameTab(4);
  for i := 1 to 28 do
 if (ExistsItem(i)) then
      Sharks :=Sharks + 1;
  if Sharks = 28 then
  SetRun(true);
 todabank2;
end;
end;
end;
 Wait(15000);
  until(InvFull)
end;


 procedure todabank;
  begin
   SetRun(true);
    GameTab(4);
     if theplaceis = 'catherby' then
      begin
       if (FindSymbol(x, y, 'fishing shop')) then
         begin
        Mouse(x, y, 1, 1, true);
       Wait(5000);
      if (FindSymbol(x, y, 'archery shop')) then
     begin
    Mouse(x, y, 1, 1, true);
   Wait(5000);
  if (FindSymbol(x, y, 'bank')) then
 begin
  Mouse(x, y, 1, 1, true);
   Wait(5000);
    OpenBank3;
     Deposit(2, 28, 2);
      Closebank;
     tothefish;
end;
end;
end;
end;
 if theplaceis = 'guild' then
  begin
   Mouse(607, 96, 1, 1, true);
    Wait(8000);
     GetSymbolColor(x, y, 'bank');
      Mouse(x, y, 1, 1, true);
       KeyDown(40);
        Wait(2000);
         KeyUp(40);
          MakeCompass('W');
           Wait(5000);
          OpenBank3;
         Deposit(2, 28, 2);
        Closebank;
       KeyDown(38);
      Wait(2000);
     KeyUp(40);
    MakeCompass('N');
   tothefish;
end;
 if theplaceis = 'barbvill' then
  begin
   Mouse(935, 316, 0, 0, true);
    Wait(5000);
     Mouse(943, 302, 0, 0, true);
      Wait(5000);
       Mouse(944, 395, 0, 0, true);
        Wait(5000);
       Mouse(937, 250, 0, 0, true);
      Wait(5000);
     Mouse(945, 269, 0, 0, true);
    Wait(5000);
   OpenBank3;
  Deposit(3, 28, 2);
 Closebank;
tothefish;
end;
 if theplaceis = 'draynor' then
  begin
   if (FindSymbol(x, y, 'bank')) then
    begin
     Mouse(x, y, 1, 1, true);
      OpenBank3;
     Deposit(2, 28, 2);
    Closebank;
   tothefish;
end;
end;
 if theplaceis = 'lumbridge' then
  begin
   DropToPosition(3, 28);
    end;
     loads:=loads + 1;
      tothefish;
end;


 procedure findthefish2;
  begin
   repeat
    if (FindColorSpiralTolerance(x,y,15515792,5,5,514,337,20)) then
     begin
      Mouse(x, y, 1, 1, false);
       end;
        until(ChooseOption(x, y, FishText))
         If(ChooseOption(x, y, FishText)) then
          begin
           ClickMSColor(15515792, false);
          if thefishis = 'shrimp' then
         begin
        if (ChooseOption(x, y, 'Net')) then
       begin
      end;
     end;
    if thefishis = 'trout' then
   begin
  if (ChooseOption(x, y, 'Lure')) then
 begin
end;
end;
 if thefishis = 'pike' then
  begin
   if (ChooseOption(x, y, 'Bait')) then
    begin
end;
end;
 if thefishis = 'lobster' then
  begin
   if (ChooseOption(x, y, 'Cage')) then
    begin
end;
end;
 if thefishis = 'tuna' then
  begin
   if (ChooseOption(x, y, 'Harpoon')) then
    begin
end;
end;
 if thefishis = 'shark' then
  begin
   if (ChooseOption(x, y, 'Harpoon')) then
    begin
end;
end;
end;
 if (InvFull = true) then
  SetRun(true);
   todabank;
    end;

 procedure fishthefish;
  begin
   mehantiban;
    mehantirandoms;
     Wait(10000);
      findthefish2;
       if (InvFull = true) then
        SetRun(true);
         todabank;
end;

 procedure findthefish;
  begin
   if thefishis = 'shrimp' then
    begin
     FishText:='Net';
end;
 if thefishis = 'trout' then
  begin
   FishText:='Lure';
end;
 if thefishis = 'pike' then
  begin
   FishText:='Lure';
end;
 if thefishis = 'lobster' then
  begin
   FishText:='Cage';
end;
 if thefishis = 'tuna' then
  begin
   FishText:='Cage';
end;
 if thefishis = 'shark' then
  begin
   FishText:='Net';
end;
 SetRun(true);
  GameTab(4);
   if (FindSymbol(x, y, 'fishing spot')) then
    Mouse(x, y, 1, 1, true);
     findthefish2;
end;


 begin
  SetupSRL;
   startxp:=CurrentSkillXP('Fishing');
    startlevel:=GetSkillLevel('Fishing');
     if run3 = true then
      begin
       repeat
        findthefish;
         fishthefish;
        mehantirandoms;
       mehantiban;
      until(loads = loadstodo)
end;
 repeat
  findthefish;
   fishthefish;
    mehantirandoms;
     mehantiban;
      until(loads = loadstodo)
       if loads = loadstodo then
        endxp:=GetSkillAmount('Fishing');
         endlevel:=GetSkillLevel('Fishing');
          levelsgained:=endlevel-startlevel;
           xpgained:=endxp-startxp;
            if theplaceis = 'catherby' then
             begin
              fish:=loads*27;
end;
 if theplaceis = 'draynor' then
  begin
   fish:=loads*27;
end;
 if theplaceis = 'guild' then
  begin
   fish:=loads*27;
end;
 if theplaceis = 'barvill' then
  begin
   fish:=loads*26;
end;
 if theplaceis = 'lumbridge' then
  begin
   fish:=loads*26;
end;
progressreport;
end.

I dont know why none of these scripts work





Code:
{=========================================================================]
[                       ~ChArM's Willow Raper~                            ]
[                           ~Version: 2.1~                                ]
[=========================================================================]
|~Description:                                                            |
|   A macro that chops a full load of willows in Draynor,                 |
|   then banks it.                                                        |
|~Instructions:                                                           |
|   1. Set the Runescape brightness to V-bright, and your computer's      |
|       resolution to 32bit resolution.                                   |
|   2. Need SCAR version 2.0.3.                                           |
|   3. Need SRL version 3.5.                                              |
|   5. Setup Lines 60-64, and 70+                                         |
|   6. Start script in Draynor Bank.                                      |
|   7. Start with a axe in your first inventory slot or wielded.          |
|   8. Recomended to have extra axes near top of bank.                    |
|~Features:                                                               |
|  AutoResponder                                                          |
|  AntiBan                                                                |
|  Randoms (UpToDate With SRL)                                            |
|  AutoColor                                                              |
|  Multiple Players                                                       |
|  Awsome Ent and Axe Head Finding                                        |
[=========================================================================]
|~Version Info:                                                           |
|  v1.0 - First Release                                                   |
|  v1.1 - Updated Walking, and fixed little things.                       |
|  v1.2 - Fixed Lag                                                       |
|  v1.5 - Added Forms, Little Bug Fixes, Better Walking                   |
|  v2.0 - Completely rewrote script, removed powerchopping and forms      |
|         UPDATED EVERYTHING!                                             |
|  v2.1 - Fixed running from fights and Progress report, new ent finding, |
|         improved tree finding(2 ways), walking, and banking             |
[=========================================================================}

Program CharmWillowRaper;
{.Include SRL/SRL.Scar}
{.Include SRL/SRL/Skill/Woodcutting.Scar}

Const Ver= 'v2.1'; //Version #, DONT TOUCH!

//----------------------------------------------------------------------------//
//---> Variables                                                              //
//----------------------------------------------------------------------------//

Var
 BankDot1, BankDot2, BankDot3, AxeHandleDTM: Integer;
 LogMask, AxeHeadMask, BrokenAxeHeadMask, AxeMask: Integer;
 AxeHeadColor1, AxeHeadColor2, AxeHeadColor3: Integer;
 AxesBroke, HeadsFound: Integer;
 Chat, Name, ChatName: String;
 NoAxe, NoAxes: Boolean;
 ChopMark, CallibrateTime: LongInt;
 Loads, TotalWillows, TotalExp: Integer;

//----------------------------------------------------------------------------//
//---> Setup                                                                  //
//----------------------------------------------------------------------------//

Const WaitTime= 15; //Second to wait before clicking tree again used as a failsafe random extra 5 seconds is added on
Const DebugMode= 2;
Const RunDirection= 'E'; //Direction To Run Incase of a Fight?
Const UseAutoResponder= True; //Enable The Auto Responder?
Const MaxLoadTime= 10; //Max Time 1 Load Can Take In Minutes

//----------------------------------------------------------------------------//
//---> Setup Players                                                          //
//----------------------------------------------------------------------------//

Procedure DeclarePlayers;
Begin

     HowManyPlayers := 1;
     CurrentPlayer:= 0;
     NumberOfPlayers(HowManyPlayers);

     Players[0].Name     := 'wiccamaiden';
     Players[0].Pass     := 'uniden';
     Players[0].Nick     := 'maid';     //3 Lowercase Letters of your username
     Players[0].Integer1 := 35;     //Loads For Player
     Players[0].Boolean1 := True;  //Equip Axe?
     Players[0].Active   := True;

     Players[1].Name     := 'wiccamaiden';
     Players[1].Pass     := 'uniden';
     Players[1].Nick     := 'maid';
     Players[1].Integer1 := 35;
     Players[1].Boolean1 := True;
     Players[1].Active   := True;

     Players[2].Name     := 'wiccamaiden';
     Players[2].Pass     := 'uniden';
     Players[2].Nick     := 'maid';
     Players[2].Integer1 := 35;
     Players[2].Boolean1 := True;
     Players[2].Active   := True;

End;

//----------------------------------------------------------------------------//
//---> Debug Procedure                                                        //
//----------------------------------------------------------------------------//

Procedure CharmDebug(Reason: String);
Begin
  Case (DebugMode) of
    1 : Status(Reason);
    2 : WriteLn(Reason);
    3 : DisguiseScar(Reason);
    4 : Exit;
  End;
End;

//----------------------------------------------------------------------------//
//---> Load DTMs                                                              //
//----------------------------------------------------------------------------//

Procedure LoadDTMs;
Begin

  BankDot1 := DTMFromString('78DA636C67626008664001FFFFFF67F80FA41' +  //By FT-Fwaki
       '921ECFF8CB54035DEA86AFEFC61621081AA0101C63A4C73B0AA09' +
       'C7AF06000153117B');

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

  BankDot3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' +
       '921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40026A' +
       '6A816A42F1AB010000781176');
       
  AxeHandleDTM := DTMFromString('78DA637465626078C48002CA2379191E02694' + //Stole From SRL
       '620FE0F048C0E40352F19D000231209A4ED806A3E1150E30454F3' +
       '86801A2FA09AEB04D47800D5DC23A0C616A8E61D01358E4035EF0' +
       '9A80185CF03FC6A00E1CD105C');

End;

//----------------------------------------------------------------------------//
//---> Load Bitmaps                                                           //
//----------------------------------------------------------------------------//

Procedure LoadBitmaps;
Begin

  LogMask := BitmapFromString(13, 10, 'z78DA33301805E40037BC8' +
       '0BAB6D0C2E5F451494998D02E5471010034299979');

  AxeMask := BitmapFromString(10, 10, 'z78DA7373230D18500028316' +
       '130E825353470A921DE3DE499409EDB480D25FCE10000B72C7CE1' +
       '');

  AxeHeadMask := BitmapFromString(12, 8, 'z78DA3330200CDC3080018900' +
       '972E62CC24D55E4C9594BB993C13C8733FB5DCE3860310AF92185' +
       'B008E3078E5');

  BrokenAxeHeadMask := BitmapFromString(9, 10, 'z78DA7373230D1890' +
       '05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307225');

End;

//----------------------------------------------------------------------------//
//---> Color Finding Functions                                                //
//----------------------------------------------------------------------------//

Function FindMMWaterColor: Integer;
Var
Tol, WX, WY, MMWater: Integer;
Begin

  MMWater := BitmapFromString(4, 4, 'z78DA3377B53474B234A7190' +
       '9002EDC1611');

 Repeat
  Begin
   If(not(LoggedIn))then Break;
   Tol:= Tol + 5;
    If(FindBitmapToleranceIn(MMWater, WX, WY, MMX1, MMY1, MMX2, MMY2, Tol))then
     Begin
      WaterColor:= GetColor(WX, WY);
      Result:= WaterColor;
     End
    End
 Until(Result > 0) or (Tol > 75);

  If(Result= 0)then
   Begin
    WriteLn('Could NOT Find MMWater Color, Please Restart Script!');
    Logout;
    //TerminateScript;
   End else
   Begin
    WriteLn('MMWaterColor - '+IntToStr(Result));
   End

 FreeBitmap(MMWater);

End;

//----------------------------------------------------------------------------//
//---> AntiBan                                                                //
//----------------------------------------------------------------------------//

Procedure RCExamine;
Begin
 MMouse(Random(MSX1), Random(MSY1), 3, 5);
  If(IsUpText('hop down')) or (IsUpText('alk here'))then
   Begin
    GetMousePos(x, y);
    Mouse(x, y, 2, 1, False);
    If(ChooseOption(x, y, 'Examine'))then
     Begin
      Exit;
     End else
    ChooseOption(x, y, 'Cancel');
   End
End;

//----------------------------------------------------------------------------//

Procedure WoodcuttingAntiBan;
Var
X: Integer;
Begin
  If(InvFull)then Exit;
  If(TimeFromMark(ChopMark) > 1000+Random(4000))then
   Begin
    Status('AntiBan');
    X:= Random(9)+1;
    ActivateClient;
    Case X of
      0 : RCExamine;
      1 : SleepAndMoveMouse(750+Random(2000));
      2 : SendArrowSilentWait(((Random(2)*2)), 1000+Random(200));
      3 : SendArrowSilentWait(((Random(2)*2) + 1), 200+Random(200));
      4 : SendArrowSilentWait(((Random(2)*2)), 200+Random(200));
      5 : SendArrowSilentWait(((Random(2)*2) + 1), 20+Random(20));
      6 : SendArrowSilentWait(((Random(2)*2)), 20+Random(20));
      7 : IdleTime(500, 500, 1.0);
      8 : begin GameTab(1+Random(7)) Wait(Random(300)) GameTab(4) end;
      9 : IdleTime(300, 200, 2.0);
    End
   //MarkTime(ChopMark);
   FindTalk;
   SendArrowSilentWait(0, 750+Random(500));
  End
End;

//----------------------------------------------------------------------------//
//---> GetChatMessage Function                                                //
//----------------------------------------------------------------------------//

Function GetChatMessage(Text: String): Boolean;
Var
TX, TY: Integer;
Chat: String;
Begin

  If(IsTextInAreaEx(40, 415, 130, 415, TX, TY, ':', 0, SmallChars, False, True, 0, 0, 0))then
   Begin
    Chat:= Lowercase(Trim(GetTextAtEx(TX + 8, 415, 0, SmallChars, False, False, 0, 1, 16711680, 40, False, TR_AllChars)));

     If(Pos(Text, Chat) <> 0)then
      Begin
       Result:= True;
      End

   End

End;

//----------------------------------------------------------------------------//
//---> GetChatName Function                                                   //
//----------------------------------------------------------------------------//

Function GetChatName(Name: String): Boolean;
Var
I: Integer;
Begin

  ChatName:= Lowercase(Trim(GetTextAtEx(21, 415, 0, SmallChars, False, False, 0, 0, 0, 50, False, TR_AllChars)));

  I:= Pos(':', ChatName);
  If(I <> 0)then
   Begin
     Delete(ChatName, I, I);
   End

  If(Pos(Name, ChatName) <> 0)then
   Begin
     Result:= True;
   End

End;

//----------------------------------------------------------------------------//
//---> AutoRespond Function                                                   //
//----------------------------------------------------------------------------//

Function AutoRespond: Boolean;
Var
Responce, Lvl: String;
RandomReply: Integer;
Begin

  OldLine:= TheLine;
  TheLine:= Lowercase(Trim(GetTextAtEx(20, 415, 0, SmallChars, False, False, 0, 1, 16711680, 40, False, TR_AllChars)));
  NewLine:= TheLine;

 If(GetChatName(Players[CurrentPlayer].Name))then
  Begin
   Exit;
  End

 If(OldLine=NewLine)then
  Begin
   Exit;
  End

  If(GetChatMessage(Players[CurrentPlayer].Name)) or (GetChatMessage(Players[CurrentPlayer].Nick))then
   Begin
     WriteLn(''+ChatName+': '+Chat);
     RandomReply:= Random(10)+1;
    Case (RandomReply) of
      0 : Responce:= ('?');
      1 : Responce:= ('what');
      2 : Responce:= ('yes');
      3 : Responce:= ('no');
      4 : Responce:= ('what do you want');
      5 : Responce:= ('me?');
      6 : Responce:= ('Yah?');
      7 : Responce:= ('who?');
      8 : Responce:= ('wha?');
      9 : Responce:= ('?');
      10 : Responce:= ('???');
    End
   TypeSend(Responce+' '+Name);
   Result:= True;
  End

  If(GetChatMessage('lol')) or (GetChatMessage('lmao')) or (GetChatMessage('rofl')) or (GetChatMessage('haha'))then
   Begin
    WriteLn(''+ChatName+': '+Chat);
    RandomReply:= Random(24)+1;
    Case (RandomReply) of
     0 : Responce:= ('hehe');
     1 : Responce:= ('lolol');
     2 : Responce:= ('lol');
     3 : Responce:= ('haha');
     4 : Responce:= ('hihi');
     5 : Responce:= ('ghehe');
     6 : Responce:= ('lmao');
     7 : Responce:= ('lmfao');
     8 : Responce:= ('rofls');
     9 : Responce:= ('fun');
     10 : Responce:= ('nice');
     11 : Responce:= ('lolz');
     12 : Responce:= ('yep');
     13 : Responce:= ('hola');
     14 : Responce:= ('wow');
     15 : Responce:= ('i bet');
     16 : Responce:= ('rofl');
     17 : Responce:= ('ghehehghehighhe');
     18 : Responce:= ('cool');
     19 : Responce:= ('...');
     20 : Responce:= ('???');
     21 : Responce:= ('wowzers');
     22 : Responce:= ('grrr...');
     23 : Responce:= ('rowr');
     24 : Responce:= ('lolololololol');
     25 : Responce:= ('ha ha ha!!!');
    End
   TypeSend(Responce);
   Result:= True;
  End


  If(GetChatMessage('wc')) or (GetChatMessage('woodcutting')) or (GetChatMessage('woodcuttin'))
   And
  (GetChatMessage('lvl')) or (GetChatMessage('level')) or (GetChatMessage('lvls')) or (GetChatMessage('levels'))then
   Begin
    WriteLn(''+ChatName+': '+Chat);
    Lvl:= IntToStr(GetSkillLevel('woodcutting'));
    RandomReply:= Random(5)+1;
     Case (RandomReply) of
      0 : Responce:= ('i''m lvl '+Lvl+' woodcuttin');
      1 : Responce:= ('level '+Lvl+' wc');
      2 : Responce:= ('lvl '+Lvl+' woodcut!');
      3 : Responce:= (+Lvl);
      4 : Responce:= ('i''m level '+lvl);
      5 : Responce:= (+Lvl+' here :P');
     End
    TypeSend(Responce);
    Result:= True;
   End

  If(GetChatMessage('wat')) or (GetChatMessage('what')) and (GetChatMessage('doin')) or (GetChatMessage('doing'))then
   Begin
   WriteLn(''+ChatName+': '+Chat);
   RandomReply:= Random(9)+1;
    Case RandomReply of
     0 : Responce:= ('not much');
     1 : Responce:= ('nothing');
     2 : Responce:= ('bored');
     3 : Responce:= ('aye?');
     4 : Responce:= ('emmm..nothin');
     5 : Responce:= ('nope');
     6 : Responce:= ('booo');
     7 : Responce:= ('no ty');
     8 : Responce:= ('what');
     9 : Responce:= ('....');
     10 : Responce:= ('nothin');
    End;
   TypeSend(Responce);
   Result:= True;
  End;

  If(GetChatMessage('hey')) or (GetChatMessage('hi')) or (GetChatMessage('hello')) or (GetChatMessage('wats up')) or (GetChatMessage('whats up')) or (GetChatMessage('yo'))then
   Begin
   WriteLn(''+ChatName+': '+Chat);
   RandomReply:= random(9)+1;
    Case RandomReply of
      0 : Responce:= ('ello');
      1 : Responce:= ('sup');
      2 : Responce:= ('yo');
      3 : Responce:= ('whats up everyone');
      4 : Responce:= ('whats up');
      5 : Responce:= ('welcome');
      6 : Responce:= ('allo allo');
      7 : Responce:= ('wat up');
      8 : Responce:= ('y0o');
      9 : Responce:= ('=P');
      10 : Responce:= ('what is up');
    End
   TypeSend(Responce);
   Result:= True;
  End

End;

//----------------------------------------------------------------------------//
//---> FindAxeHead Colors Function                                            //
//----------------------------------------------------------------------------//

Function CharmFindAxeHeadColors: Boolean;
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
     AxeHeadColor1:= GetColor(AX + 5, AY + 3);
     AxeHeadColor2:= GetColor(AX + 7, AY + 2);
     AxeHeadColor3:= GetColor(AX, AY + 3);
     EquipAxe:= False;
     Result:= True;

    End else

   Begin

    GameTab(5);
    Wait(100+Random(75));

      If(FindBitmapMaskTolerance(AxeMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 10, 5))then
       Begin
        AxeHeadColor1:= GetColor(AX + 5, AY + 3);
        AxeHeadColor2:= GetColor(AX + 7, AY + 2);
        AxeHeadColor3:= GetColor(AX, AY + 3);
        EquipAxe:= True;
        Result:= True;
       End
      GameTab(4);
     End

  If(Result= True)then
   Begin
    NoAxe:= False;
    WriteLn('Axe head colors - '+IntToStr(AxeHeadColor1)+', '+IntToStr(AxeHeadColor2)+ ', and '+IntToStr(AxeHeadColor3));
  End else
   Begin
    WriteLn('Could NOT Find Axe Colors!, Logging Out!');
    Players[CurrentPlayer].Loc:= 'No Axe';
    Logout;
 End

End;

//----------------------------------------------------------------------------//
//---> AttachHeadToHandle Function                                            //
//----------------------------------------------------------------------------//

Function CharmAttachHeadToHandle: Boolean;
Var
AX, AY: Integer;
Begin

 If(InvFull)then
   Begin
    If(FindBitmapMaskTolerance(LogMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 20, 25))then
     Begin
      Mouse(AX, AY, 2, 3, False);
      ChooseOption(x, y, 'rop');
      Wait(500+Random(250));
     End
    End

 If(EquipAxe= True)then
  Begin
   GameTab(5);
   Wait(150+Random(75));
     If(FindDTM(AxeHandleDTM, AX, AY, MIX1, MIY1, MIX2, MIY2))then
      Begin
       Mouse(AX, AY, 3, 3, True);
       Wait(250+Random(175));
      End
   End

 GameTab(4);
 Wait(250+Random(175));

  If(FindBitmapMaskTolerance(AxeHeadMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 20, 25))then
   Begin
    Mouse(AX, AY, 2, 3, True);
    Result:= True;
   End

  If(FindDTM(AxeHandleDTM, AX, AY, MIX1, MIY1, MIX2, MIY2))then
   Begin
    Mouse(AX, AY, 2, 3, True);
   End

  If(EquipAxe= True)then
   Begin
    Wait(Random(1000));
    If(FindBitmapMaskTolerance(AxeHeadMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 20, 25))then
     Begin
      Mouse(AX, AY, 2, 3, True);
     End
   End

End;

//----------------------------------------------------------------------------//
//---> HandleFight                                                            //
//----------------------------------------------------------------------------//

Procedure HandleFight;
Begin

  RunAwayDirection(RunDirection);
  Wait(10000+Random(2000));
  RunBack;
  
  If(FindSymbol(x, y, 'fishing spot'))then
   Begin
    Mouse(x, y - 20, 5, 6, True);
    FindTalk;
    Flag;
   End
  
End;

//----------------------------------------------------------------------------//
//---> Axe Finding Function                                                   //
//----------------------------------------------------------------------------//

Function CharmFindAxeHead: Boolean;
Var
C, XH, YH, Chat, AxeHeadTxt: Integer;
Start: Boolean;
Begin

 If(not(LoggedIn))then Exit;
 
 AxeHeadTxt := BitmapFromString(30, 10, 'z78DA7373B334303170' +
       '0393A62EA62626E6839374437227320901A36E1E75333124A9265' +
       '04B3DA9EE84005C2663AAA4AE7A5CBAF0BB16530D729A21559C98' +
       '10C36F0E316E26DE6DF87D4DBC1B28B197BCF0C404F8639972715' +
       'AC435A9B98954F3013DD58547');

  {Chat:= CreateBitmapMaskFromText('ou do not have an axe', SmallChars);

  If(FindBitmapMaskTolerance(Chat, x, y, MCX1, MCY1, MCX2, MCY2, 10, 85))or
     (GetChatMessage('do not')) or (GetChatMessage('have axe'))then}

    If(EquipAxe= False)then
     Begin
      GameTab(4);
      Wait(50+Random(50));
      If(not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then Start:= True;
     End
     
    If(EquipAxe= True)then
     Begin
      GameTab(5);
      Wait(50+Random(50));
      If(not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then Start:= True;
     End

  If(Start= True)then
   Begin

 CharmDebug('Lost Axe Head, Finding..');
 HighestAngle;

   // If(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10))then Exit;

    If(FindBitmapMaskTolerance(BrokenAxeHeadMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))then
     Begin
      AxesBroke:= AxesBroke + 1;
      CharmDebug('ENT Got Us, Broken Axe!');
      Players[CurrentPlayer].Loc:= 'Broken Axe';
      NoAxe:= True;
      Result:= False;
      Exit;
     End

  GameTab(4);
  Wait(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 Break;
       C:= C + 1;
       XH:= Random(510) + 5;
       YH:= Random(330) + 5;
       If(FindObjectMulti(XH, YH, 'ake', 'Take', 'Tak', AxeHeadColor1, AxeHeadColor2, AxeHeadColor3, 5, 5, True, True))then
          Begin
            MMouse(XH, YH, 0, 0);
            Wait(100+Random(100));
            If(IsUpTextMulti('ake', 'Take', 'Tak'))then
             Begin
              GetMousePos(XH, YH);
              Mouse(XH, YH, 1, 1, False);
              Wait(Random(50));
              If(FindBitmapToleranceIn(AxeHeadTxt, x, y, MSX1, MSY1, MSX2, MSY2, 20))then
               Begin
                Mouse(x, y, 2, 2, True);
               End else
               Begin
                If(not(ChooseOption(x, y, 'axe head')))then ChooseOption(x, y, 'Take');
               End
             End
            Flag;
           Wait(750+Random(250));
          End
    Until(FindBitmapMaskTolerance(AxeHeadMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25)) or (FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)) or (C= 15);

    GameTab(4);
    
    If(not(FindBitmapMaskTolerance(AxeHeadMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))) or (not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then
     Begin
      CharmDebug('Could NOT Find Head!');
      Players[CurrentPlayer].Loc:= 'Lost AxeHead';
      NoAxe:= True;
      Result:= False;
      Exit;
     End

    CharmDebug('Found Head!');
    HeadsFound:= HeadsFound + 1;

    CharmDebug('Attaching Head To Handle.');
    CharmAttachHeadToHandle;

    NoAxe:= False;
    Result:= True;
    
  End

 FreeBitmap(Chat);
 FreeBitmap(AxeHeadTxt);

End;

//----------------------------------------------------------------------------//
//---> Walking Procedures                                                     //
//----------------------------------------------------------------------------//

Procedure DraynorBankToWillowTrees;
Var
DX, DY: Integer;
Begin

 If(not(LoggedIn))then Exit;

 HighestAngle;
 PerfectNorth;
 
 Status('Bank->Willows');

 Players[CurrentPlayer].Loc:= 'Bank';
 
 SymbolAccuracy:= 0.4;

 If(not(FindSymbol(DX, DY, 'bank')))then
 Begin
 If(FindColorSpiralTolerance(DX, DY, WaterColor, MMX1, MMY1, MMX2, MMY2, 5))then
  Begin
   Mouse(DX + 25+Random(8), DY + 25+Random(20), 5, 8, True);
   Flag;
  End
 End else
 Begin
 If(FindSymbol(DX, DY, 'bank'))then
 Begin
  Mouse(DX - 30+Random(10), DY + 34+Random(7), 5, 8, True);
  Flag;
 End else
 Begin
  Players[CurrentPlayer].Loc:= 'Lost';
  Logout;
  Exit;
 End
 End
  
 SymbolAccuracy:= 0.6;

  If(FindSymbol(DX, DY, 'fishing spot'))then
   Begin
    If(Distance(MMCX, DX, MMCY, DY) > 250)then
     Begin
      Mouse(DX + 5+Random(6), DY - 15+Random(15), 2, 3, True);
      Flag;
     End
   End

  Players[CurrentPlayer].Loc:= 'Willows';
  
 SymbolAccuracy:= 0.8;

End;

//----------------------------------------------------------------------------//

Procedure WillowTreesToDraynorBank;
Var
DX, DY, F: Integer;
See: Boolean;
Begin

 If(not(LoggedIn))then Exit;

 PerfectNorth;
 
 Status('Willows->Bank');

 Players[CurrentPlayer].Loc := 'Willows';
 
 SymbolAccuracy:= 0.4;

 If(not(FindSymbol(DX, DY, 'bank')))then
  Begin
   If(FindSymbol(DX, DY, 'fishing spot'))then
    Begin
     Mouse(DX + 10, DY - 30+Random(6), 4, 5, True);
     FFlag(10);
    End
  End
    
  Repeat
    If(not(DTM3Flag(BankDot1, BankDot2, BankDot3, True)))then
     Begin
      If(not(FindSymbol(x, y, 'bank')))then
       Begin
        F:= F + 1;
       End else
       Begin
        See:= True;
        MouseFlag(x, y, 2, 4);
        DTM3Flag(BankDot1, BankDot2, BankDot3, True);
        Flag;
        Players[CurrentPlayer].Loc:= 'Bank';
      end
    End else
    Begin
      See:= True;
      Wait(500+Random(1000));
      Flag;
      Players[CurrentPlayer].Loc:= 'Bank';
    End
  Until(See= True) or (F > 3);

  If(F > 3)then
   Begin
    Players[CurrentPlayer].Loc:= 'Lost';
    Logout;
    Exit;
   End

  Players[CurrentPlayer].Loc := 'Bank';
  
 SymbolAccuracy:= 0.8;

End;

//----------------------------------------------------------------------------//
//---> Ent Handleing Function                                                 //
//----------------------------------------------------------------------------//

Function CharmEnt(ex, ey: Integer): Boolean;
Var
Xe, Ye: Integer;
Begin

 Status('FindEnt');

 If(FindColorSpiralTolerance(Xe, Ye, 5535856, ex - 20, ey - 20, ex + 20, ey + 20, 12))then
  Begin
   MMouse(Xe, Ye, 5, 5);
   Wait(100+Random(50));
  End else
  Begin
   Exit;
  End

 If(IsUpTextMulti('hop down Will', 'down Willow', 'own Wil')) or (IsUpTextMulti('illow', 'low', 'Will'))then
   Begin
    If(FindColorSpiralTolerance(Xe, Ye, 383705, 1, 1, 180, 39, 20))or
       (FindColorSpiralTolerance(Xe, Ye, 65535, 1, 1, 200, 40, 20))or
        (FindColorTolerance(Xe, Ye, 55769, 85, 15, 115, 15, 20))then
      Begin
        EntsAvoided:= EntsAvoided + 1;
        Result:= True;
      End else
        Result:= False;
        Exit;

  End

End;

//----------------------------------------------------------------------------//
//---> CharmFindObjWillow Function                                            //
//----------------------------------------------------------------------------//

Function CharmFindObjWillow(var cx, cy: Integer; color1, color2, color3, tolerance: Integer): Boolean;
Var
  x, y, a, c, i, x1, y1, x2, y2 : Integer;
Begin
  if (FindMSColorTol(x, y, color1, tolerance)) or
    (FindMSColorTol(x, y, color2, tolerance)) or
    (FindMSColorTol(x, y, color3, tolerance)) then
 Begin
    x1 := 245;
    y1 := 165;
    x2 := 277;
    y2 := 185;
    Repeat
      If (not (Loggedin)) Then
        break;
      a := a + 1;
      If (a = 1) Then
        c := c + 1;
      If (a = 3) Then
        c := c + 1;
      for i := 1 to c do
      Begin
        If (a = 1) Then
        Begin
          x1 := x1 + 30;
          x2 := x2 + 30;
        End;
        If (a = 2) Then
        Begin
          y1 := y1 - 20;
          y2 := y2 - 20;
        End;
        If (a = 3) Then
        Begin
          x1 := x1 - 30;
          x2 := x2 - 30;
        End;
        If (a = 4) Then
        Begin
          y1 := y1 + 20;
          y2 := y2 + 20;
        End;
        If (x1 = 485) and (x2 = 517) Then
          x2 := x2 - 2;
        If (y1 = 325) and (y2 = 345) Then
          y2 := y2 - 7;
        If (x2 > 515) Then
          Break;
        if (FindColorTolerance(x, y, color1, x1, y1, x2, y2, tolerance)) or
          (FindColorTolerance(x, y, color2, x1, y1, x2, y2, tolerance)) or
          (FindColorTolerance(x, y, color3, x1, y1, x2, y2, tolerance)) then
            Begin
              MMouse(x, y, 5, 5);
              GetMousePos(x, y);
              cx:= x;
              cy:= y;
              Wait(100+Random(50));
              If(IsUpTextMulti('hop down Will', 'down Willow', 'own Wil')) or (IsUpTextMulti('illow', 'low', 'Will')) Then
                Begin
                 If(FindColorTolerance(X, Y, 55769, 85, 15, 115, 15, 20))then
                  Begin
                   CharmDebug('Found Ent!');
                   Mouse(MMCX, MMCY, 5, 5, True);
                   Wait(10000+Random(5000));
                   FindNormalRandoms;
                   EntsAvoided:= EntsAvoided + 1;
                   Break;
                   Result:= False;
                  End else
                  Begin
                  Result := True;
                  Break;
                 End
                End;
            End;
         End;
      If (a = 4) Then
        a := 0;
    Until (x2 > 515) or (Result= True);
  End;
End;

//----------------------------------------------------------------------------//
//---> FindWillowDeformed Function                                            //
//----------------------------------------------------------------------------//
       
Function FindWillowDeformed(Var ObjX, ObjY: Integer): Boolean;
Var
Acc, Ref: Extended;
TX, TY, Times, Tol, WillowTree: Integer;
Begin

 WillowTree := BitmapFromString(2, 6, '18180E303016304016283' +
       '01648502C30382160682C304013585044484832485024485039');

 Ref:= 0.9;
 Tol:= 0;

  For Times := 1 to 20 do
   Begin
    FindTalk;
    Wait(50+Random(100));
    Try
     FindDeformedBitmapToleranceIn(WillowTree, TX, TY, MSX1 + 50, MSY1 + 50, MSX2 - 50, MSY2 - 50, Tol, 2, True, Acc);
    except
      Result:= False;
    End
    If(Acc >= Ref)then
     Begin
      MMouse(TX + Random(10), TY, 3, 3);
      If(IsUpTextMulti('hop down Will', 'down Willow', 'own Wil')) or (IsUpTextMulti('illow', 'low', 'Will'))then
       Begin
        If(FindColorTolerance(X, Y, 55769, 85, 15, 115, 15, 20))then
         Begin
          CharmDebug('Found Ent!');
          Result:= False;
          Mouse(MMCX, MMCY, 5, 5, True);
          Wait(Random(5000));
          FindNormalRandoms;
          EntsAvoided:= EntsAvoided + 1;
          Exit;
         End
        ObjX:= TX;
        ObjY:= TY;
        Result:= True;
        Exit;
       End
     End
  //If Times mod 2 = 0 then //5
   //Begin
    Ref:= Ref - 0.1; //Ref:= Ref - 0.05;
    Tol:= Tol + 10; //Tol:= Tol + 7;
    Wait(Random(50));
   //End
  //Wait(1);
 End
 //Wait(1);
 FreeBitmap(WillowTree);
End;

//----------------------------------------------------------------------------//
//---> Chop Willows Function                                                  //
//----------------------------------------------------------------------------//

Function ChopWillows: Boolean;
Var
CX, CY, TempColor: Integer;
Begin

 If(not(LoggedIn))then Exit;
 
 Status('Chopping');

  //If(FindWillowDeformed(CX, CY))then
  If(CharmFindObjWillow(CX, CY, 5535856, 6328448, 3301456, 15))then
   Begin
   
   TempColor:= GetColor(CX, CY);
   
    //If(not(CharmEnt(CX, CY)))then
    If(IsUpTextMulti('hop down Will', 'down Willow', 'own Wil')) or (IsUpTextMulti('illow', 'low', 'Will')) Then
      Begin
       If(Random(20) < 15)then
         Begin
           Mouse(CX, CY, 2, 2, True);
           Result:= True;
         End
        Else
         Begin
           Mouse(CX, CY, 2, 3, False);
           If(ChooseOption(x, y, 'hop down'))then
           Result:= True;
         End
      End

    If(FlagPresent)then
     Begin
      Flag;
     End

   Wait(200-Random(50));

   Status('CheckAxe');
   CharmFindAxeHead;

   If(Result= True)then
   Begin
   
   MarkTime(ChopMark);
    Repeat

     If(not(LoggedIn))then Break;
     
     Status('FindRandoms->Nest->Axe');
     CharmFindAxeHead;
     FindNormalRandoms;
     Wait(Random(50));
     FindBirdsNest;

     If(NoAxe)then Break;
     If(InvFull)then Break;

     WoodcuttingAntiban;
     
     If(UseAutoResponder)then Status('AutoRespond') AutoRespond;

      If(CharmEnt(CX, CY))then
       Begin
        CharmDebug('Found Ent!');
        Mouse(MMCX, MMCY, 5, 5, True);
        FindTalk;
        Wait(10000+Random(5000));
        FindNormalRandoms;
        Exit;
       End

      Status('FindFight');
      If(FindFight)then
       Begin
        Status('Found Fight');
        HandleFight;
        Exit;
       End

     Status('FindRandoms');
     FindTalk;

    Until(TimeFromMark(ChopMark) >= (WaitTime*1000+Random(5000))) or (not(FindColor(CX, CY, TempColor, CX - 10, CY - 10, CX + 10, CY + 10)));
    
  End

 End

End;

//----------------------------------------------------------------------------//
//---> OpenBank Function                                                      //
//----------------------------------------------------------------------------//

Function CharmOpenBank: Boolean;
Var
BX, BY, Tries: Integer;
Begin

 Repeat

  If(FindObjectMulti(BX, BY, 'e Bank', 'Use Ba', 'ooth', 2842230, 3421241, 605778, 10, 5, True, True))then

    MMouse(BX, BY, 2, 2);

   If(IsUpTextMulti('e Bank', 'Use Ba', 'ooth'))then
     Begin
      Mouse(BX, BY, 4, 7, False);
      Wait(10+Random(50));
      If(ChooseOption(x, y, 'uickly'))then
      Begin
       MarkTime(Mark);
        Repeat
          Wait(10+Random(5));
          If(TimeFromMark(Mark) > 20000)then
           Begin
            Result:= False;
            Exit;
           End
        Until(BankScreen);
       If(BankScreen)then
        Begin
         Result:= True;
         Exit;
        End
      End
     End
    Else
    Begin
     Wait(1);
     Tries:= Tries + 1;
    End;
  Until(Tries > 10);

End;

//----------------------------------------------------------------------------//
//---> CountLogs Procedure                                                    //
//----------------------------------------------------------------------------//

Procedure CountLogs;
Var
WillowCount, WillowExp: Integer;
Begin

 GameTab(4);

 WillowCount:= CountItemBmpMaskTol(LogMask, 20, 10);
 TotalWillows:= TotalWillows + WillowCount;

 Players[CurrentPlayer].Integer2:= Players[CurrentPlayer].Integer2 + WillowCount;
 
 WillowExp:= (WillowCount*(125/2));

 Players[CurrentPlayer].Integer3:= Players[CurrentPlayer].Integer3 + Round(WillowExp);

 TotalExp:= TotalExp + Round(WillowExp);

End;

//----------------------------------------------------------------------------//
//---> Banking Procedure                                                      //
//----------------------------------------------------------------------------//

Procedure BankWillows;
Begin

 If(not(LoggedIn))then Exit;
 
 Status('Banking');

 CountLogs;
 
 If(FlagPresent)then Wait(500+Random(2000));
 
 HighestAngle;
 
 MarkTime(Mark);
 Repeat

  If(CharmOpenBank)then Break;
  If(OpenBankQuiet('db'))then Break;
 
 Until(BankScreen) or (TimeFromMark(Mark) > 90000);
 
 If(TimeFromMark(Mark) > 90000)then
  Begin
   Players[CurrentPlayer].Loc:= 'Lost';
   Logout;
   Exit;
  End

 If(BankScreen)then
  Begin
   If(NoAxe= True)then
     Begin
      ClickAllItemsColorWait('All', 65536, 500+Random(100));
      FixBank;
      Wait(Random(250)+300);
      
     If(FindBitmapMaskTolerance(AxeMask, x, y, MSX1, MSY1, MSX2, MSY2, 20, 10))then
       Begin
        Mouse(x, y, 1, 1, True);
       End else
       Begin
        Players[CurrentPlayer].Loc:= 'No Axes';
        NoAxes:= True;
       End

     Wait(Random(250)+50);
       
     End else
     Begin
       If(EquipAxe= False)then
        Begin
         Deposit(2, 28, 2);
         Wait(100+Random(50));
         Deposit(3, 28, 2);
        End else
       If(EquipAxe= True)then
        Begin
         ClickAllItemsColorWait('All', 65536, 500+Random(100));
         Wait(Random(250)+300);
        End
     End

     Repeat
      If(not(LoggedIn))then Break;
      CloseBank;
     Until(not(BankScreen));

     If(NoAxe= True)then
      Begin
       CharmFindAxeHeadColors;
       Wait(Random(300)+250);
      If(EquipAxe= True)then
       GameTab(4);
       If(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10))then
        Begin
         Mouse(x, y, 5, 5, True);
        End
       NoAxe:= False;
      End
      
     Loads:= Loads + 1;
     Banks:= Banks + 1;
     Players[CurrentPlayer].Banked:= Players[CurrentPlayer].Banked + 1;

   End

End;

//----------------------------------------------------------------------------//
//---> Progress Report                                                        //
//----------------------------------------------------------------------------//

Procedure PlayerStats;
Var
Active: String;
I: Integer;
Begin

  If(Players[CurrentPlayer].Active= True)then
   Begin
    Active:= 'True';
   End else
   Begin
    Active:= 'False';
   End

  WriteLn('|-----------------------------------------------------|');
  Writeln('  Name         : '+Players[CurrentPlayer].Name);
  Writeln('  Number       : '+IntToStr(CurrentPlayer));
  Writeln('  Active       : '+Active);
  Writeln('  Location     : '+Players[CurrentPlayer].Loc);
  Writeln('  Chopped      : '+IntToStr(Players[CurrentPlayer].Integer2)+' willow[s].');
  Writeln('  Gained       : '+IntToStr(Players[CurrentPlayer].Integer3)+' exp.');
  Writeln('  Worked       : '+IntToStr(Players[CurrentPlayer].Worked)+' mins.');
  WriteLn('|-----------------------------------------------------|');

  For I:= 0 to HowManyPlayers - 1 do
   Begin

    If(Players[I].Active= True)then Active:= 'T' else Active:= 'F';

    WriteLn(' '+IntToStr(I)+' : '+Players[I].Name+' = '+Active+' - '
    +'B '+IntToStr(Players[I].Banked)+' time[s], '
    +'C '+IntToStr(Players[I].Integer2)+' log[s], '
    +'G '+IntToStr(Players[I].Integer3)+' exp., '
    +'L '+Players[I].Loc);
   End

  WriteLn('\<--------------------------------------------------->/');

End;

//----------------------------------------------------------------------------//

Procedure ProgressReport;
Begin
  ClearDebug;
  WriteLn('/<--------------------------------------------------->\');
  WriteLn('| -> Willow Raper '+Ver+' > Prog Report < By - ChArMz <- |');
  Writeln('\<--------------------------------------------------->/');
  WriteLn('  Worked for '+TimeRunning+'.');
  WriteLn('  Banked '+IntToStr(Banks)+' Total Load[s].');
  WriteLn('  Chopped '+IntToStr(TotalWillows)+' Total Willow[s].');
  WriteLn('  Gained '+IntToStr(TotalExp)+' Total Exp.');
  If(HeadsFound > 0)then
    WriteLn('  Found Axe Head '+IntToStr(HeadsFound)+' Time[s].');
  If(AxesBroke > 0)then
    WriteLn('  Broke '+IntToStr(AxesBroke)+' Axe[s].');
  SRLRandomsReport;
  PlayerStats;
End;

//----------------------------------------------------------------------------//
//--->  Callibration Procedure                                                //
//----------------------------------------------------------------------------//

Procedure Callibrate;
Var
CX, CY: Integer;
Begin

 If(not(LoggedIn))then Exit;
 
 Status('Callibrating');

   If(FindSymbol(CX, CY, 'fishing spot'))then
     Begin
      If(Distance(MMCX, CX, MMCY, CY) > 45)then
       Begin
        Mouse(CX +Random(5), CY - 10+Random(10), 4, 6, True);
        Flag;
        CharmDebug('Callibrated by Fishing Symbol.');
       End
     End

  If(WeAreDead) or (FindSymbol(CX, CY, 'water source'))then
   Begin
    Players[CurrentPlayer].Loc:= 'Lumbridge';
    Logout;
   End

End;

//----------------------------------------------------------------------------//
//---> Setup Procedure                                                        //
//----------------------------------------------------------------------------//

Procedure Setup;
Begin

  SetupSRL;
  LoadBitmaps;
  LoadDTMs;
  DeclarePlayers;

  MouseSpeed:= 10-Random(5);

  ActivateClient;

 If(not(LoggedIn))then LoginPlayer;

 If(LoggedIn)then
  Begin
   EquipAxe:= Players[CurrentPlayer].Boolean1;
   NickNameBMP:= CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
   CharmFindAxeHeadColors;
   FindMMWaterColor;
   FindTalk;
  End

End;

//----------------------------------------------------------------------------//
//---> Main Loop                                                              //
//----------------------------------------------------------------------------//

Begin

 Setup;

 Repeat

   SetRun(True);

   DraynorBankToWillowTrees;

   MarkTime(CallibrateTime);
   MarkTime(Mark);
    Repeat
     If(not(LoggedIn))then Break;
     If(TimeFromMark(CallibrateTime) >= (240000+Random(60000)))then
      Begin
       Callibrate;
       MarkTime(CallibrateTime);
      End
      Wait(Random(50));
     ChopWillows;
    Until(InvFull) or (InvCount= 28) or (NoAxe) or (TimeFromMark(Mark) >= MaxLoadTime*60000);
    
   Wait(Random(50));

   SetRun(False);

   WillowTreesToDraynorBank;

   BankWillows;
   Wait(Random(50));
   ProgressReport;

  If(LoggedIn) and (Loads >= Players[CurrentPlayer].Integer1) or (NoAxes)then
   Begin
    Logout;
     If(Random(5)= 1)then
      Begin
       Wait(1 * 60000 +Random(5 * 60000));
       End else
      Begin
       Wait(1 * 60000 +Random(2 * 60000));
      End
      NextPlayer(True);
      EquipAxe:= Players[CurrentPlayer].Boolean1;
      NickNameBMP:= CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
      CharmFindAxeHeadColors;
      FindMMWaterColor;
      FindTalk;
      Loads:= 0;
    End
  If(not(LoggedIn))then
   Begin
    If(Random(5)= 1)then
      Begin
       Wait(1 * 60000 +Random(5 * 60000));
       End else
      Begin
       Wait(1 * 60000 +Random(2 * 60000));
      End
      NextPlayer(False);
      EquipAxe:= Players[CurrentPlayer].Boolean1;
      NickNameBMP:= CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
      CharmFindAxeHeadColors;
      FindMMWaterColor;
      FindTalk;
      Loads:= 0;
   End

  Until(False);

End.

And when i run that script i get this error


Successfully compiled
File access error
SRL Compiled in 16624msec.
[Runtime Error] : Out Of Range in line 84 in script C:\Program Files\SCAR 2.03\Scripts\ChArM's Willow Raper v2.1.scar
 
SCAR Errors
Use { and } to surround all of the players you don't use in the DeclarePlayers procedure.
 
Runescape Gamblingrunescape gambling
Back
Top