Code:
{.Script Info:
# ScriptName = Tree Chopper + Shaft Maker
# Author = madman (edited by Burnout)
# Description = Chops trees until full inventory then makes shafts
# Version = v0.3
# Date = 3-Feb-2006
# Comments = Start anywhere where there are trees, with an axe and knife, probally should have an axe wielded and one in inv.
# Autocolor = Yes
# Release Comments
* 0.1 - Inital Release
* 0.2 - Added AntiBan
* 0.3 - changed firemaking to shaftmaking
**PLEASE post comments and suggestion in post**
- http://villu-reborn.com/showthread.php?t=6459 -
/Script Info}
program ChopperFireMaker;
{.include SRL\SRL.SCAR}
{.include SRL\SRL\skill\WoodCutting.scar}
{.include srl\srl\skill\fletching.scar}
Var
Colors: Array[1..3] of Integer;
Loads, LogCount : Integer;
LogDTM, knifeDTM: Integer;
Const
TreeTol = 5; //Tolerance for tree color
WaitTime = 15; //Maximum time before clicking tree again (seconds)
MaxLoads = 10; //Max Loads Per Player
MinutesALoad = 5; //Maximum minutes per load
LeftCPercent = 80; //Percent to left click
Version = '0.2'; //No Touch This
//----------------------------------------------------------------------------//
//---> 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].Active := True;
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Active := True;
Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Active := True;
End;
//*************************\\
// DTMS / BMPS \\
//*************************\\
Procedure LoadDTM;
Begin
LogDTM := DTMFromString('78DA63F466626078CA8002B2820C19FE03694' +
'620FE0F048C7640357719D000231209A42D816A5E1150E30254F3' +
'91809A50A09A3704D40401D53C2242CD6D026A3C816AEEE057030' +
'0D68B0F7A');
knifeDTM := DTMFromString('78DA632C60626078C68002C2AD39C1342394C' +
'F580A547317554D45413EAA9A6CA09AF7A86A3AEAEB50D55402D5' +
'DC405553535C8CA20600F3B00A3D');
End;
//****************\\
// ANTIBAN \\
//****************\\
Procedure MyAntiBan;
Begin
RandomChatEvery(10 + Random(5));
RotateEvery(5 + Random(2));
LeaveScreenEvery(5 + Random(5));
PickUpMouseEvery(5 + Random(10))
RandomRClickEvery(15 + Random(5))
End;
//*****************\\
// RANDOMS \\
//*****************\\
Function TreeColor : Integer; Forward;
Procedure DoMyRandoms;
Begin
ClickToContinue;
FindNormalRandoms;
FindHead;
if(FindFight)then
Begin
RunAwayDirection('N');
Wait((60 * 500) + Random(60 * 500));
RunBack;
End
if(FindDead)then
Begin
Writeln('Player is dead... NextPlayer');
NextPlayer(false);
End
FindEnt(TreeColor);
FindBirdsNest;
MyAntiBan;
End;
Function Ent(Ex,Ey : integer): Boolean; //From Charmz
Begin
MMouse(Ex, Ey, 0, 0);
If(FindColorSpiralTolerance(x, y, 3432536, MSX1, MSY1, MSX2, MSY2, 10))then
MMouse(x, y, 0, 0);
If(IsUpText('Chop')) or (IsUpText('Tree')) or (IsUpText('Down'))then
Begin
If(FindColorSpiralTolerance(x, y, 383705, 1, 1, 180, 39, 20))or
(FindColorSpiralTolerance(x, y, 65535, 1, 1, 200, 40, 20))then
Begin
Result:= True;
EntsAvoided:=EntsAvoided + 1;
WriteLn('Ent found, waiting');
Mouse(648, 83, 1, 1, True);
Wait(5000+Random(2000));
End else
Result:= False;
Exit;
End;
End;
//******************\\
// COLOR STUFF \\
//******************\\
Function FindTreeColorsIfNeeded(refrencecol,tol,tol2:integer):boolean; //Stole from
Var
c,a,b,xm,ym,curcolor:integer;
oc1,oc2,oc3:boolean;
Begin
If ((Colors[1]=0) or (Colors[2]=0) or (Colors[3]=0)) Then
Begin
If (FindColorTolerance(x,y,refrencecol,3,3,515,338,tol)) Then//Find tree close
Begin
if (FindObj(x,y,'Chop',refrencecol,tol)) Then
Begin
a:=1;
GetMousePos(x,y);
xm:=x;
ym:=y;
repeat
xm:=xm+a;
ym:=ym+b;
curcolor:=GetColor(xm,ym);
MMouse(xm,ym, 5, 5);
Wait(5+random(5));
If(IsUpText('Chop'))then
Begin
If(SimilarColors(curcolor,refrencecol,tol2))and(oc1=false)then
Begin
Colors[1]:=curcolor;
oc1:=true;
End;
If(SimilarColors(curcolor,refrencecol,tol2))and
(not(curcolor=Colors[1]))and(oc2=false)then
Begin
Colors[2]:=curcolor;
oc2:=true;
End;
if(SimilarColors(curcolor,refrencecol,tol2))and
(not(curcolor=Colors[1]))and
(not(curcolor=Colors[2]))and(oc3=false)then
Begin
Colors[3]:=curcolor;
oc3:=true;
End;
End;
If(not(IsUpText('Chop')))then
Begin
c:=c+1;
xm:=x;
ym:=y
MMouse(xm,ym,1,1);
wait(200+random(100)+random(100))
if(c=1)then a:=-1;
if(c=2)then begin a:=0;b:=-1;end;
if(c=3)then begin a:=0;b:=2;end;
End;
Until((oc1)and(oc2)and(oc3))or(c>=4);
End;
End;
If(Colors[1]>0)and(Colors[2]>0)and(Colors[3]>0)then result:=true;
End;
End;
Function TreeColor : integer; //Stolen from
Var RandomColor:integer;
Begin
Repeat
RandomColor:=random(3)+1;
Until (RandomColor >= 1) or (RandomColor <= 3);
Result:=Colors[RandomColor];
End;
//*******************\\
// PROCEDURES \\
// + \\
// FUNCTIONS \\
//*******************\\
Procedure ProgressReport;
Begin
ClearDebug;
Writeln('****************************');
Writeln('/ shaft Maker + Log Chopper \');
Writeln('/ v' + Version + ' \');
Writeln('============================');
Writeln(' Ran for ' + TimeRunning);
Writeln(' Cut and light ' + IntToStr(LogCount) + ' logs');
Writeln('****************************');
End;
Procedure NewPlayer;
Begin
if(not(LoggedIn)) then LoginPlayer;
GameTab(4);
HighestAngle;
SetRun(true);
PerfectNorth;
End;
Function FindTree(MaxTol:Integer):Boolean; //Stolen from
Var Tol,Ex,Ey:Integer;
Begin
While (Not (FindColorTolerance(Ex, Ey, TreeColor, MSX1, MSY1, MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Do
Begin
Tol:=Tol+1;
End;
If ((FindColorTolerance(Ex, Ey, TreeColor, MSX1,MSY1 ,MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Then Result:=True;
Tol:=1;
Wait(10);
End;
Procedure DoChopping;
Begin
if(FindTree(TreeColor))then
Begin
if(FindObj(x, y, 'ree', TreeColor, TreeTol))then
Begin
if(not(Ent(x, y)))then
Begin
if((Random(100) + 1) < LeftCPercent)then
Begin
Mouse(x, y, 0, 0, true);
Wait(50);
End else
Begin
Mouse(x, y, 0, 0, false);
ChooseOption(x, y, 'own');
Wait(50);
End
Flag;
Wait(500 + Random(500));
MarkTime(Mark);
repeat
DoMyRandoms;
Wait(50 + random(50));
if(InvFull)then Break;
Until(not(TimeFromMark(Mark) > (1000 * WaitTime)));
End
End
End
End;
//*****************\\
// MAIN LOOP \\
//*****************\\
Procedure Setup;
Begin
SetupSRL;
LoadDTM;
MouseSpeed := 10;
BenMouse := true;
DeclarePlayers;
ActivateClient;
Wait(1000 + Random(1000));
End;
begin
Setup;
Repeat
if(LoggedIn)then
Begin
NewPlayer;
FindAxeHeadColor;
FindTreeColorsIfNeeded(1520688, 5, 45);
End
Repeat
MarkTime(Mark);
Repeat
if(not(LoggedIn))then Break;
DoChopping;
Until((InvFull) or (TimeFromMark(Mark) >= 1000 * 60 * MinutesALoad));
Repeat
if(FindInvDTM(x, y, LogDTM))then
begin
Mouse(x, y, 3, 3, true);
Wait(1000 + random(500));
if(FindInvDTM(x, y, knifeDTM))then
begin
Mouse(x, y, 3, 3, true);
Wait(1000 + Random(500));
mouse(72,442,4,4,true)
repeat
if(not(FindInvDTM(x, y, LogDTM)))then
Begin
MouseFindFlag(MMCX, MMCY, 15, -15);
Flag;
Break;
End
Wait(500);
DoMyRandoms;
Wait(5);
until(not(InChat('attempt to'))) or (InChat('advanced a'));
End
LogCount := LogCount + 1;
End
Until(not(FindInvDTM(x, y, LogDTM)));
Loads := Loads + 1;
ProgressReport;
SRLRandomsReport;
if(Loads >= MaxLoads)then setup;
Until(not(LoggedIn));
NextPlayer(true);
Until(false);
end.