Draynor Willow Power or Banker

Discussion in 'Script Requests' started by Sagaxxxx V, Jul 25, 2007.

Draynor Willow Power or Banker
  1. Unread #1 - Jul 25, 2007 at 8:03 AM
  2. Sagaxxxx V
    Referrals:
    0

    Sagaxxxx V Guest

    Draynor Willow Power or Banker

    need draynor willow power chopper or banker yes i know only scar uses banking thats why it has to be a scar script thx pm me or post
     
  3. Unread #2 - Jul 27, 2007 at 2:50 PM
  4. Skateboard
    Joined:
    Jan 21, 2007
    Posts:
    393
    Referrals:
    0
    Sythe Gold:
    0

    Skateboard Forum Addict

    Draynor Willow Power or Banker

    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= 25; //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 := 3;
         CurrentPlayer:= 0;
         NumberOfPlayers(HowManyPlayers);
    
         Players[0].Name     := '';
         Players[0].Pass     := '';
         Players[0].Nick     := '';     //3 Lowercase Letters of your username
         Players[0].Integer1 := 35;     //Loads For Player
         Players[0].Boolean1 := False;  //Equip Axe?
         Players[0].Active   := True;
    
         Players[1].Name     := '';
         Players[1].Pass     := '';
         Players[1].Nick     := '';
         Players[1].Integer1 := 35;
         Players[1].Boolean1 := True;
         Players[1].Active   := True;
    
         Players[2].Name     := '';
         Players[2].Pass     := '';
         Players[2].Nick     := '';
         Players[2].Integer1 := 35;
         Players[2].Boolean1 := False;
         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.
     
  5. Unread #3 - Jul 31, 2007 at 6:45 PM
  6. the scar noob
    Joined:
    Jan 21, 2007
    Posts:
    620
    Referrals:
    0
    Sythe Gold:
    0

    the scar noob Forum Addict

    Draynor Willow Power or Banker

    that an older one than the PSWW by SUmilion and Lorax..
     
< Essence miner+banker | Flax Spinner >

Users viewing this thread
1 guest


 
 
Adblock breaks this site