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/)
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/)