SCAR Code:
program Willow_Chopper;
{.include SRL/SRL/Misc/Smart.scar}
{.include srl/srl.scar}
{.include srl/srl/skill/woodcutting.scar}
var
frmDesign : TForm;
Username : TEdit;
Password : TEdit;
SmartWorld : TEdit;
TreeBaseColor : TEdit;
Start : TButton;
Loads : TEdit;
x , y , cx , cy , i , TreesChopped , loadsdone : Integer;
loadz : string;
TreeBaseColor1 : String;
const
///Set up your colors below///
WillowColor1 = 4487022;
CurrentVersion = '2.0';// no need to change this
yourSRLID='';
yourSRLPW='';
WillowColor2 = 4480100;
BoothColor1 = 739167;//You have to set these colors If it cannot find the bank booth
BoothColor2 = 671057;
SmartWorldNumber = 125;
Procedure SetupFormz(sender: tobject);
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := Username.text;
Players[0].Pass := Password.text;
Players[0].Active :=True;
Loads.text := loadz;
TreeBaseColor.Text := TreeBaseColor1;
FrmDesign.ModalResult := Mrok;
end;
Procedure InitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 656;
frmDesign.Top := 223;
frmDesign.Width := 220;
frmDesign.Height := 248;
frmDesign.Caption := 'Willow Chopper';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -14;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 120;
Username := TEdit.Create(frmDesign);
Username.Parent := frmDesign;
Username.Left := 8;
Username.Top := 8;
Username.Width := 113;
Username.Height := 24;
Username.TabOrder := 8;
Username.Text := 'Username';
Password := TEdit.Create(frmDesign);
Password.Parent := frmDesign;
Password.Left := 8;
Password.Top := 48;
Password.Width := 113;
Password.Height := 24;
Password.TabOrder := 9;
Password.Text := 'Password';
TreeBaseColor := TEdit.Create(frmDesign);
TreeBaseColor.Parent := frmDesign;
TreeBaseColor.Left := 8;
TreeBaseColor.Top := 128;
TreeBaseColor.Width := 113;
TreeBaseColor.Height := 24;
TreeBaseColor.TabOrder := 11;
TreeBaseColor.Text := 'TreeBaseColor';
Start := TButton.Create(frmDesign);
Start.Parent := frmDesign;
Start.Left := 8;
Start.Top := 168;
Start.Width := 97;
Start.Height := 25;
Start.Caption := 'Start';
Start.TabOrder := 12;
Start.OnClick := @SetupFormz;
Loads := TEdit.Create(frmDesign);
Loads.Parent := frmDesign;
Loads.Left := 120;
Loads.Top := 48;
Loads.Width := 89;
Loads.Height := 24;
Loads.TabOrder := 13;
Loads.Text := 'Loads';
end;
Procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
Procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
Procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
{****************************************************************************}
{Procedure BankWalk }
{By: Wade007 }
{Description: This will walk to to the bank }
{****************************************************************************}
Procedure BankWalk;
begin
RadialWalk(FindRoadColor,0,90,50,5,5)
Flag;
if(FindSymbol(x,y,'bank'))then
begin
writeln('Walking To bank!')
Mouse(x,y,2,2,true)
flag;
FindNormalRandoms;
end;
end;
{****************************************************************************
Procedure WillowWalk
By: Wade007
Description: This will walk you to willows.
{****************************************************************************}
Procedure WillowWalk;
begin
If(Not(LoggedIn)) then LoginPlayer;
setangle(true)
Status('Walking to willows')
writeln('Walking to willows')
end;
{*****************************************************************************
function InFight: Boolean;
By: WT-Fakawi
Description: Returns as True if in fight.
*****************************************************************************}
function InFight: Boolean;
var
x, y : Integer;
begin
Result := (FindColor(x, y, 65280, 230, 130, 280, 180) or FindColor(x, y, 255,
230, 130, 280, 180))
end;
{****************************************************************************
Procedure Depositing
By: the find and open bank part is by Wade007 and the deposit part is by frozen_soul
Description: This will deposit your logs.
*****************************************************************************}
procedure Depositing;
begin
if FindObjCustom(cx, cy, ['booth', 'ooth'], [BoothColor1, BoothColor2], 3) then
begin
repeat
Status('Banking');
Mouse(cx,cy,2,2,false)
chooseoption('Use-quickly')
wait(1000)
until(bankscreen)
Begin
for i := 2 to 28 do
Begin
if ExistsItem(i) then
Begin
MouseItem(i, false);
ChooseOption('ll');
Wait(1000 + random(500));
end;
end;
Mouse(485, 41, 4, 4, True);
Wait(500 + random(250));
end;
{case random(2) of //Use this if the banking doesn't work.
1: Deposit(2, 28, 2)
2: Deposit(2, 28, 2)
end;}
closebank;
FindNormalRandoms;
loadsdone := loadsdone+1
WillowWalk;
end;
end;
{****************************************************************************
Procedure: ChopDemWillows
By: Wade007
Description: This Chops trees (DUH!)
*****************************************************************************}
Procedure ChopDemWillows;
var tries:Integer;
Begin
if FindObjCustom(cx, cy, ['illow', 'llow'], [WillowColor1, WillowColor2], 3) then
begin
Status('Chopping Willows');
if(FindEnt(cx, cy, True))then exit;
Mouse(cx,cy,2,2,False)
ChooseOption('hop')
flag;
Wait(4000+random(800))
TreesChopped := TreesChopped+1
FindNormalRandoms;
end else
begin
tries := tries+1;
if (tries = 10)then
begin
Writeln('Could not find any trees :(')
Writeln('Try changing the colors.')
NextPlayer(false);
end;
end;
end;
procedure Ent_phrases;
begin
case random(18) of
0: Typesend('arg! stupied ent!');
1: Typesend('lol, lil nub ent');
2: Typesend('hahaha funny lil ent');
3: Typesend('tree got mad, hahaha');
4: Typesend('ents are funny');
5: Typesend('O M G, stupied ent');
6: Typesend('ffs dumb ent');
7: Typesend('rofl ent got mad');
8: Typesend('lamo, ent gone crazzy');
9: Typesend('huhh.....');
10: Typesend('ents are pointless to rs');
11: Typesend('Why did jagex make ents?');
12: Typesend('huh....ents are so useless');
13: Typesend('hahaha, stupied lil ent');
14: Typesend('oooo, an ent!');
15: Typesend('aarrgg, dumb ent');
16: Typesend('E N T !');
17: Typesend('ffs, an ent');
end;
end;
// Actual ent FINDING by Sumilion - from Woodcutting.scar
// Everything else edited by Osmm
function FFindEnt(fx, fy: Integer; AvoidWhenFound: Boolean): Boolean;
var
arUpTextEntColorPoints: TPointArray;
x, y, EntTime, tcts: Integer;
begin
if not(LoggedIn)then exit;
GetMousePos(x, y);
if(x <> fx)or(y <> fy)then
mmouse(fx, fy, 0, 0);
if(IsUpText('Chop'))then
begin
tcts := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorspeed2Modifiers(0.4, 0.4);
FindColorsTolerance(arUpTextEntColorPoints, 51657, 80, 6, 127, 20, 5);
Result := Length(arUpTextEntColorPoints) > 10;
ColorToleranceSpeed(tcts);
end;
if(result)then
begin // All my stuff from here on down
MarkTime(EntTime);
WriteLn('Ent Found!!');
Writeln('Waiting for it to go away.');
begin
case random(2) of
0: begin
mouse(627, 86, 5, 5, true);
mouse(627, 86, 10, 10, true);
Ent_phrases;
wait(750 + random(750));
GameTab(4);
wait(750 + random(750));
FindNormalRandoms;
end;
1: begin
DoEmote(4);
wait(750 + random(750));
Ent_phrases;
wait(750 + random(750));
Hoverskill('woodcutting', false);
wait(750 + random(750));
end;
end;
end;
begin
if (TimeFromMark(EntTime) < 35000) then
case random(2) of
0: begin
if Random(10) > 8 then
Hoverskill('woodcutting', false);
end;
end;
end;
Inc(EntsAvoided);
end;
end;
{****************************************************************************
Procedure Proggy
By: Wade007
Description: This will print a proggy to the debug box.
*****************************************************************************}
Procedure Proggy;
begin
Writeln('Thank you for using')
Writeln(' |\ /|( ___ )( __ \ ( ____ \( __ )( __ )/ ___ \ ')
Writeln(' | ) ( || ( ) || ( \ )| ( \/| ( ) || ( ) |\/ ) )')
Writeln(' | | _ | || (___) || | ) || (__ | | / || | / | / / ')
Writeln(' | |( )| || ___ || | | || __) | (/ /) || (/ /) | / / ')
Writeln(' | || || || ( ) || | ) || ( | / | || / | | / / ')
Writeln(' | () () || ) ( || (__/ )| (____/\| (__) || (__) | / /')
Writeln(' (_______)|/ \|(______/ (_______/(_______)(_______) \_/ ''s Willow chopper')
Writeln('Willow Chopper by wade007 has run for ' +TimeRunning)
Writeln('Willow Chopper has Chopped ' +intToStr(TreesChopped)+ ' Trees')
Writeln('We have done'+inttostr(loadsdone)+'loads')
end;
{****************************************************************************
Procedure: Running
By: Wade007
Description: This TINY procedure will run away if it is in a fight.
*****************************************************************************}
Procedure Running;
begin
If (InFight) then
begin
Writeln('We have found a fight! Running away!')
Status('Running');
BankWalk;
wait(2000)
WillowWalk;
end else
begin
Exit;
end;
end;
{****************************************************************************
Procedure: SetUp
By: Wade007
Description: this will run when it is start up....
*****************************************************************************}
procedure SetUp;
begin
If (FindAxe) then
begin
Writeln('I have found your axe, continuing.')
end else
begin
Withdraw(1,1,1)
end;
ScriptID := '651';
if not(yourSRLID = '') then SRLID := yourSRLID;
if not(yourSRLPW = '') then SRLPassword := yourSRLPW;
If (GetPage('http://wade007.freehostia.com/Version.txt')) > '2.0' then
begin
Writeln('Hmm... Your version is not up to date. please get the new update from the topic.')
Writeln('I hope to have a direct download link for this in the near future.')
logout;
end else
begin
writeln('You have the latest version, Continueing.')
end;
end;
{****************************************************************************
MAIN LOOP
Description: This is where it all begins...
*****************************************************************************}
begin
SmartSetupEx((SmartWorldNumber),false,false);
SetTargetDC(SmartGetDC);
SetupSRL;
SafeInitForm;
SafeShowFormModal;
SetUp;
repeat
If (not (loggedIn)) then loginplayer;
WillowWalk;
FindNormalRandoms;
repeat
ChopDemWillows;
solvesandwich;
Running;
FindNormalRandoms;
Until(InvFull);
Running;
bankWalk;
wait(100)
depositing;
SetUp;
ClearDebug;
Proggy;
i := +1
until(inttostr(loadsdone) = loadz)
ClearDebug;
Proggy;
end.
And here is the error i get