SRL Archive - RS3 Outdated / Broken Scripts

Draynor willow cutter/banker for scar 2.03 that actually works well.


alldaypk

2007-07-11 00:30:52

I have been looking for one for ages, one that when you go into the bank, dosent completley lag to were everything freeze's. And setup sequences are already made perfectly.

One for just a single player.

And can go many loads without screwin up.

If anyone would be willing to make me one or find me one, post it here.

And not a link or downloadable one, beacuse it wont let me download anything.

:f:

bullzeye95

2007-07-11 01:05:33

Become a member. There's an amazing one in the members section.

dannymet

2007-07-21 05:32:13

hmm its not that easy to become a member, i tried and it said i have to provide a script… so i spent a whole week trying to make a script that worked and i had no luck, just proves that not all people are designed for script making

omg i just made an easier script lol
i tried making stuff like auto cooker, the more advanced ones, i made auto talker but its not working, ill post it in my first scripts and ask for help

Santa_Clause

2007-07-21 05:47:27

From: dannymet
hmm its not that easy to become a member, i tried and it said i have to provide a script… so i spent a whole week trying to make a script that worked and i had no luck, just proves that not all people are designed for script making


Lmao!!

i tried and it said i have to provide a script


That part made me crack up :p

Pentti

2007-07-21 05:47:58

Btw, you cant get 100% working willow cutter and banker for SCAR 2.03, because all SRLs are outdated for SCAR 2.03.

EDIT: Hey Santa, how about this:
so i spent a whole week trying to make a script

Dude, you cant just make a very good working script in a week if you start from 0-point.

Santa_Clause

2007-07-21 05:51:47

That's funny too but the other one was funnier…he though he could get in without a script :p

Pentti

2007-07-21 06:10:17

From: SantaClause
That's funny too but the other one was funnier…he though he could get in without a script :p

Thats what they all think. :D

the scar noob

2007-07-21 12:47:55

as first to be honest i didn't read anything over here, sorry for that not much time.. :(
but due to the threath's title i can give my oppinion:
NO NEED TO MAKE SCRIPT FOR SCAR IF DIVI IS OUT WITH BETTER FUNCTIONS AND ABILITIES.

Ty for your time,

~TSN.

WoodMan

2007-07-25 13:35:15

hardly any scripts work for me, but i tried this one, and after changing a few things, it works great!!! try it and see if it works for you… I CANNOT TAKE ANY CREDIT FOR THIS SCRIPT, I ONLY DELETED A FEW THINGS THAT WERE MAKING IT NOT WORK, THAT IS ALL…

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

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

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

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

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

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

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

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

Procedure DeclarePlayers;
Begin

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

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

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

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

End;

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

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

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

Procedure LoadDTMs;
Begin

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

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

BankDot3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' +
'921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40026A' +
'6A816A42F1AB010000781176');

AxeHandleDTM := DTMFromString('78DA637465626078C48002CA2379191E02694' + //Stole From SRL
'620FE0F048C0E40352F19D000231209A4ED806A3E1150E30454F3' +
'86801A2FA09AEB04D47800D5DC23A0C616A8E61D01358E4035EF0' +
'9A80185CF03FC6A00E1CD105C');

End;

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

Procedure LoadBitmaps;
Begin

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

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

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

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

End;

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

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

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

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

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

FreeBitmap(MMWater);

End;

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

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

//—————————————————————————-//

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

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

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

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

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

End

End;

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

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

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

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

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

End;

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

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

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

Begin
Exit;
End

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

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


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

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

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

End;

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

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

If(not(LoggedIn))then Exit;

GameTab(4);

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

End else

Begin

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

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

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

End;

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

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

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

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

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

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

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

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

End;

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

Procedure HandleFight;
Begin

RunAwayDirection(RunDirection);
Wait(10000+Random(2000));
RunBack;

If(FindSymbol(x, y, 'fishing spot'))then
Begin
Mouse(x, y - 20, 5, 6, True);
FindTalk;
Flag;
End

End;

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

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

If(not(LoggedIn))then Exit;

AxeHeadTxt := BitmapFromString(30, 10, 'z78DA7373B334303170' +
'0393A62EA62626E6839374437227320901A36E1E75333124A9265' +
'04B3DA9EE84005C2663AAA4AE7A5CBAF0BB16530D729A21559C98' +
'10C36F0E316E26DE6DF87D4DBC1B28B197BCF0C404F8639972715' +
'AC435A9B98954F3013DD58547');

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

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

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

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

If(Start= True)then
Begin

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

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

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

GameTab(4);
Wait(2000+Random(100));

If(InvFull)then
Begin
If(FindBitmapMaskTolerance(LogMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))then
Begin
Mouse(XH, YH, 0, 0, False);
ChooseOption(x, y, 'rop');
End
End

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

GameTab(4);

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

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

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

NoAxe:= False;
Result:= True;

End

FreeBitmap(Chat);
FreeBitmap(AxeHeadTxt);

End;

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

Procedure DraynorBankToWillowTrees;
Var
DX, DY: Integer;
Begin

If(not(LoggedIn))then Exit;

HighestAngle;
PerfectNorth;

Status('Bank->Willows');

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

SymbolAccuracy:= 0.4;

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

SymbolAccuracy:= 0.6;

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

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

SymbolAccuracy:= 0.8;

End;

//—————————————————————————-//

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

If(not(LoggedIn))then Exit;

PerfectNorth;

Status('Willows->Bank');

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

SymbolAccuracy:= 0.4;

If(not(FindSymbol(DX, DY, 'bank')))then
Begin
If(FindSymbol(DX, DY, 'fishing spot'))then
Begin
Mouse(DX + 10, DY - 30+Random(6), 4, 5, True);
FFlag(10);
End
End

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

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

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

SymbolAccuracy:= 0.8;

End;

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

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

Status('FindEnt');

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

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

End

End;

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

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

//—————————————————————————-//
//—> FindWillowDeformed Function //
//—————————————————————————-//

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

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

Ref:= 0.9;
Tol:= 0;

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

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

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

If(not(LoggedIn))then Exit;

Status('Chopping');

//If(FindWillowDeformed(CX, CY))then
If(CharmFindObjWillow(CX, CY, 5535856, 6328448, 3301456, 15))then
Begin

TempColor:= GetColor(CX, CY);

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

If(FlagPresent)then
Begin
Flag;
End

Wait(200-Random(50));

Status('CheckAxe');
CharmFindAxeHead;

If(Result= True)then
Begin

MarkTime(ChopMark);
Repeat

If(not(LoggedIn))then Break;

Status('FindRandoms->Nest->Axe');
CharmFindAxeHead;
FindNormalRandoms;
Wait(Random(50));
FindBirdsNest;

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

WoodcuttingAntiban;

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

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

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

Status('FindRandoms');
FindTalk;

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

End

End

End;

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

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

Repeat

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

MMouse(BX, BY, 2, 2);

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

End;

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

Procedure CountLogs;
Var
WillowCount, WillowExp: Integer;
Begin

GameTab(4);

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

Players[CurrentPlayer].Integer2:= Players[CurrentPlayer].Integer2 + WillowCount;

WillowExp:= (WillowCount*(125/2));

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

TotalExp:= TotalExp + Round(WillowExp);

End;

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

Procedure BankWillows;
Begin

If(not(LoggedIn))then Exit;

Status('Banking');

CountLogs;

If(FlagPresent)then Wait(500+Random(2000));

HighestAngle;

MarkTime(Mark);
Repeat

If(CharmOpenBank)then Break;
If(OpenBankQuiet('db'))then Break;

Until(BankScreen) or (TimeFromMark(Mark) > 90000);

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

If(BankScreen)then
Begin
If(NoAxe= True)then
Begin
ClickAllItemsColorWait('All', 65536, 500+Random(100));
FixBank;
Wait(Random(250)+300);

If(FindBitmapMaskTolerance(AxeMask, x, y, MSX1, MSY1, MSX2, MSY2, 20, 10))then
Begin
Mouse(x, y, 1, 1, True);
End else
Begin
Players[CurrentPlayer].Loc:= 'No Axes';
NoAxes:= True;
End

Wait(Random(250)+50);

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

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

If(NoAxe= True)then
Begin
CharmFindAxeHeadColors;
Wait(Random(300)+250);
If(EquipAxe= True)then
GameTab(4);
If(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10))then
Begin
Mouse(x, y, 5, 5, True);
End
NoAxe:= False;
End

Loads:= Loads + 1;
Banks:= Banks + 1;
Players[CurrentPlayer].Banked:= Players[CurrentPlayer].Banked + 1;

End

End;

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

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

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

WriteLn('|—————————————————–|');
Writeln(' Name : '+Players[CurrentPlayer].Name);
Writeln(' Number : '+IntToStr(CurrentPlayer));
Writeln(' Active : '+Active);
Writeln(' Location : '+Players[CurrentPlayer].Loc);
Writeln(' Chopped : '+IntToStr(Players[CurrentPlayer].Integer2)+' willow.');
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.Active= True)then Active:= 'T' else Active:= 'F';

WriteLn(' '+IntToStr(I)+' : '+Players.Name+' = '+Active+' - '
+'B '+IntToStr(Players.Banked)+' time, '
+'C '+IntToStr(Players.Integer2)+' log, '
+'G '+IntToStr(Players.Integer3)+' exp., '
+'L '+Players.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.');
WriteLn(' Chopped '+IntToStr(TotalWillows)+' Total Willow.');
WriteLn(' Gained '+IntToStr(TotalExp)+' Total Exp.');
If(HeadsFound > 0)then
WriteLn(' Found Axe Head '+IntToStr(HeadsFound)+' Time.');
If(AxesBroke > 0)then
WriteLn(' Broke '+IntToStr(AxesBroke)+' Axe.');
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:= 50000000;
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:= 50000000;
End

Until(False);

End.

MylesMadness

2007-07-25 18:38:00

holy crap put some scar tags in there

cathering_

2007-07-25 19:04:39

Yeh we dont need that sort of content overflowing the page

EL_TYCHO

2007-07-26 12:02:50

you could have just given the link to charms willow raper :rolleyes:

Harry

2007-07-26 12:07:35

Oh, and don't pust up his whole effin script *rolls eyes*