Log in

View Full Version : A problem with Charm'z Willow Raper. HELP.



Ilikepie1995
06-18-2007, 02:46 PM
Hello i found a problem with Charms'z Willow Raper and i dont know how to fix it so please help.

Well you see after sometime when script is running, it's not able to type because after some time the window wont be like chosen or something, so i think that the script should click out of the client on the black area so the window will stay active, because when the window is not active the script is not able to type IN RUNESCAPE so it types somewhere else example: at the google bar.It just ypes something then presses enter but then google bar searches the thing the script typed and wtf it goes to another web-page.

Charm's Willow Raper.

{================================================= ========================]
[ ~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 := 5;
CurrentPlayer:= 0;
NumberOfPlayers(HowManyPlayers);

Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := ''; //3 Lowercase Letters of your username
Players[0].Integer1 := 5; //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 := 10;
Players[1].Boolean1 := False;
Players[1].Active := True;

Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Integer1 := 10;
Players[2].Boolean1 := False;
Players[2].Active := True;

Players[3].Name := '';
Players[3].Pass := '';
Players[3].Nick := '';
Players[3].Integer1 := 10;
Players[3].Boolean1 := False;
Players[3].Active := True;

Players[4].Name := '';
Players[4].Pass := '';
Players[4].Nick := '';
Players[4].Integer1 := 10;
Players[4].Boolean1 := False;
Players[4].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('78DA636C67626008664001FFFFFF67F80FA 41' + //By FT-Fwaki
'921ECFF8CB54035DEA86AFEFC61621081AA0101C63A4C73B0 AA09' +
'C7AF06000153117B');

BankDot2 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA 41' +
'921ECFF8C3540353EA86AFEFC61621081AA0101C63AA09A10 22D4' +
'44E057030001B5117D');

BankDot3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA 41' +
'921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40 026A' +
'6A816A42F1AB010000781176');

AxeHandleDTM := DTMFromString('78DA637465626078C48002CA2379191E026 94' + //Stole From SRL
'620FE0F048C0E40352F19D000231209A4ED806A3E1150E304 54F3' +
'86801A2FA09AEB04D47800D5DC23A0C616A8E61D01358E403 5EF0' +
'9A80185CF03FC6A00E1CD105C');

End;

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

Procedure LoadBitmaps;
Begin

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

AxeMask := BitmapFromString(10, 10, 'z78DA7373230D18500028316' +
'130E825353470A921DE3DE499409EDB480D25FCE10000B72C 7CE1' +
'');

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

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

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;
OldLine, TheLine, NewLine: string;
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' +
'0393A62EA62626E6839374437227320901A36E1E75333124A 9265' +
'04B3DA9EE84005C2663AAA4AE7A5CBAF0BB16530D729A2155 9C98' +
'10C36F0E316E26DE6DF87D4DBC1B28B197BCF0C404F863997 2715' +
'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' +
'01648502C30382160682C3040135850444848324850244850 39');

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.

Scripts made by me.

-PieShafter.Version 0.2. 100%Done!
-PieStringer.Version 0.1. 100%Done!
-PiePcAirRuneBuyer.Version 0.1. 100%Done!
-PieChestThiever.Version 0.1. 100%Done!
-PieShafyer.Version 0.1. 100%Done!

Currently working on.

-PieBoner.Version 0.1. 20%Done!

Visit my web-site and get the "Best Runescape Money Guide" there!
- www.freewebs.com/rsbestcashguide/

http://siggy.draynor.net/goal/fletching/99/Iamrich1995.gif (http://www.draynor.net/)

GoF
06-18-2007, 03:21 PM
Const UseAutoResponder.. Set that to false?

Ilikepie1995
06-18-2007, 05:01 PM
Omg, man you are my hero lol thanks alot now i can cut willows with this script once again!!! -And i added you on msn if i have any questions i will ask you lol. Oh and i wanted to say i love your seagull killer still use it these days to train my pures.