Can someone please make a a S.M.A.R.T. version of a draynor willow cutter. PM me or email me @
if someone could also update the following code to drop logs that will also be apreciated.
Code:
program WillowKiller;
{.include SRL/SRL/Misc/SMART.Scar}
{.include SRL/SRL.Scar}
{.include srl/srl/skill/woodcutting.scar}
{.Include SRL\SRL\Reflection\Reflection.Scar}
var
x, y, i, Logs, Loads, nap, wclvl, BrokenAxe, BrokenAxes, cblvl, Responds, logsdropped, OriginalWcLvl, CurrentWcLvl, LevelUps, ExpGained :Integer;
ExpGain :Extended;
const
World = 35;
SRLStatsID = '5774';
SRLStatsPass = 'leechme';
HowLongToSleep = 15;
Smart = True;
Signed= True;
Responder = True;
Skill = 'Woodcutting';
procedure DeclarePlayers;
begin
HowManyPlayers := 1; //Change this to number players you got
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; // Enter your Username here
Players[0].Pass := ''; // Enter your password here
Players[0].Nick := ''; // Enter 3 - 4 letters from your username here
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;
//-------------------------------DO NOT TOUCH ANYTHING BELOW THIS!----------------------------\\
procedure AntiBannage;
begin
case Random(30) of
0 : MMouse(0, 0, 700, 500);
1 : begin
Hoverskill('Woodcutting', false);
wait(3500 + Random(1000));
Hoverskill('Mining', false);
end;
2 : BoredHuman;
3 : RandomMovement;
4 : PickupMouse;
5 : begin
GameTab(random(10));
wait(3500 + Random(1000));
GameTab(4);
end;
end;
end;
procedure BrokenAxeDTM;
begin
BrokenAxe := DTMFromString('78DA636C616260E0636440061D697C601A26C' +
'AD80354C38FAA06260B57D30754C34D404D2F508D080135CD4035' +
'5C04D4D400D5A8E05703008C0604B4');
end;
//Very Important Do Not Touch-Script Wont Cut Trees\\
function FindObjTPAKing(var x, y: integer; colors : array of integer; tol, cts, ObjWidth, ObjHeight, minCount :Integer; UpText: tstringarray): Boolean;
var
I, j, tcts: Integer;
myPoint: TPoint;
Points, TempPoints: TPointArray;
aPoints: T2DPointArray;
s: string;
begin
tcts := GetColorToleranceSpeed;
SetLength(Points, 0);
if CTS * 9 mod 3 <> 0 then
CTS := 1;
ColorToleranceSpeed(cts);
For I := 0 to High(colors) do //Loop through the colors array
begin
FindColorsSpiralTolerance(x, y, TempPoints, Colors[i], MSX1, MSY1, MSX2, MSY2, Tol);//Check for the current color
Points := CombineTPA(Points, TempPoints); //Add the different results together
end;
aPoints := TPAtoATPAEx(Points, ObjWidth, ObjHeight);
SetLength(Points, 0);
for I := 0 to Length(aPoints) - 1 do
begin
if Length(aPoints[i]) < minCount then
Continue;
myPoint := MiddleTPA(aPoints[i]);
MMouse(myPoint.X, myPoint.Y, 0, 0);
Wait(100 + Random(50));
ColorToleranceSpeed(1);
s := rs_getuptext;
for j := 0 to high(uptext) do
if pos(uptext[j], s) <> 0 then
begin
x := myPoint.X;
y := myPoint.Y;
Result := True;
ColorToleranceSpeed(tcts);
Exit;
end;
ColorToleranceSpeed(cts);
end;
ColorToleranceSpeed(tcts);
end;
//DeathWalk- Using Reflection\\
function LoadPath: TPointArray;
begin
SetLength(Result, 15);
Result[0] := Point(3222, 3219);
Result[1] := Point(3236, 3225);
Result[2] := Point(3228, 3231);
Result[3] := Point(3224, 3238);
Result[4] := Point(3221, 3246);
Result[5] := Point(3213, 3247);
Result[6] := Point(3207, 3247);
Result[7] := Point(3200, 3247);
Result[8] := Point(3195, 3251);
Result[9] := Point(3191, 3255);
Result[10] := Point(3188, 3258);
Result[11] := Point(3181, 3264);
Result[12] := Point(3172, 3264);
Result[13] := Point(3164, 3267);
Result[14] := Point(3163, 3270);
end;
procedure DeathWalk;
var
I: Integer;
Path: TPointArray;
begin
if(FindBlackChatMessage('Oh Dear,You are dead!')) then
begin
Path := LoadPath;
for i := 0 to High(Path) do
begin
WalkToTile(Path[i], 3, 0);
Wait(7000+Random(3000));
end;
end;
end;
{*******************************************************************************
procedure NextPlayer2(Active: Boolean);
By: Dankness and modified by Ron and by Raymond and Tootoot222
Description: Logs in the next player.
Boolean: True - Current player is ok. False - Current player is false.
Doesn't go into an infinate loop when all players are false
*******************************************************************************}
procedure NextPlayer2(Active: Boolean);
begin
if RandomPlayer then
RandomNextPlayer(Active)
else
begin
WriteLn('NextPlayer2(Active: ' + BoolToStr(Active)+ ');');
Players[CurrentPlayer].Active := Active;
Logout;
PlayerCurTime := (GetSystemTime div 1000);
Players[CurrentPlayer].Worked := Players[CurrentPlayer].Worked +
((PlayerCurTime - PlayerStartTime) / 60);
if(AllPlayersInactive) then
Exit;
CurrentPlayer := (CurrentPlayer + 1) mod Length(Players);
while Players[CurrentPlayer].Active = False do
CurrentPlayer := (CurrentPlayer + 1) mod Length(Players);
SRL_Logs := SRL_Logs + 1;
LoginPlayer;
end;
end;
//Anti-Random\\
procedure AntiRandoms;
begin
FindNormalRandoms;
If(FindFight) Then
begin
SetRun(True);
RunAway('N', True, 1, 15000 + random(5000));
end;
if (FindEnt(x, y, True)) then
begin
Mouse(MMCX + 3, MMCY - 4, 3, 3, true);
wait(1000);
repeat
wait(100+random(100));
FindNormalRandoms;
until not (FindEnt(x, y, True))
end;
LampSkill := skill;
end;
//Auto-Responder (Pixelate)\\
procedure Responses;
var
text: string;
begin
if not LoggedIn then Exit;
if(Responder)then
begin
if(not GetLastChatText(text))then
begin
//Writeln('Error while getting chat text. No-one is talking?');
end else
begin
//Writeln('Chat text: ' + text);
if(InChat('bot') and InChat(Players[CurrentPlayer].Nick))then
begin
case Random(4) of
0: TypeSend('Me?');
1: TypeSend('I''m not a bot!');
2: TypeSend('Your a newb');
3: TypeSend('Huh?');
end;
Responds := Responds +1;
end;
if(text = 'wc lvls?') or (text = 'woodcut lvls?') or (text = 'wc?') or (text = 'woocutting levels?')then
begin
SayCurrentLevels('Woodcutting');
end;
end;
end;
if(Responder)then
begin
case Random(40) of
0: TypeSend('Runescape rox');
1: TypeSend('Im watching tv and playing rs at the same time');
2: Typesend('woodcut lvls?');
3: Typesend('I got my wc lvl to' + IntToStr(CurrentWcLvl) + '.');
4: Typesend('Hi!');
5: Typesend('attck,str,def lvls?');
6: Typesend('Old runescape was better than this.....');
7: Typesend('Wcing is boring')
end;
end;
end;
//BrokenAxe Finder\\
Procedure IsAxeBroken;
begin
if FindDTM(BrokenAxe, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
BrokenAxes := BrokenAxes +1;
Writeln('The axe was broken.The script will change players!');
LogOut;
NextPlayer2(False);
Exit;
FreeDTM(BrokenAxe);
end;
end;
///Tree Finder\\
procedure WillowCutter; //Credit goes to ToF for his tree finding (chnaged the colours and wait times for less ban %)
var Failed: integer;
TreeColors: array [0..3] of integer;
begin
if(not(LoggedIn)) or (InvFull) then
Exit;
TreeColors[0] := 2504497;
TreeColors[1] := 7309951;
TreeColors[2] := 2702134;
TreeColors[3] := 2242606;
for i := 0 to 4 do
AntiRandoms;
AntiBannage;
if FindObjTPAKing(x, y, TreeColors, 20, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow']) then
begin
repeat
if(InvFull) then
Exit;
FindEnt(x, y, True);
Responses;
FindObjTPAKing(x, y, TreeColors, 20, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])
Wait(100 + Random(300));
MMouse(x, y, 2, 2);
begin
Wait(100 + Random(200));
Wait(100 + Random(200));
case Random(10) of
0: begin
Mouse(x, y, 4, 4, False);
Wait(400 + Random(200));
ChooseOption('hop');
WriteLn('R Chopping Tree');;
end;
1: begin
Mouse(x, y, 4, 4, True);
WriteLn('L Chopping Tree');
end;
end;
Wait(900 + Random(100));
FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])
MMouse(x, y, 2, 2);
FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])
Wait(800 + Random(100));
end;
until Invfull or not FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow']);
while (not FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])) do
repeat
if(InvFull) then
Exit;
if (not FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])) then
MakeCompass('N');
Wait(100 + Random(300));
if (not FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])) then
MakeCompass('E');
Wait(100 + Random(300));
if (not FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])) then
MakeCompass('W');
Wait(100 + Random(300));
if (not FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow'])) then
Inc(Failed);
until FindObjTPAKing(x, y, TreeColors, 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow']) or (Failed = 5);
if (Failed = 5) then
begin
WriteLn('Tree Finding Failed :(');
end;
end;
end;
//DTMS\\
procedure LoadTheDTM; //Custom made with the help of tootoot222
begin
AntiRandoms;
AntiBannage;
Logs := DTMFromString('78DA63E4636460D8C68001FE0331238806024' +
'61E206B2DBA0A462412484B00595B09A8E105B2F61350C30464ED' +
'23A006C4DA825F0D00CBD5099D');
BrokenAxe := DTMFromString('78DA636C616260E0636440061D697C601A26C' +
'AD80354C38FAA06260B57D30754C34D404D2F508D080135CD4035' +
'5C04D4D400D5A8E05703008C0604B4');
end;
//Log Dropper\\
procedure WillowDropper;
begin
if(not(LoggedIn)) or (InvEmpty) then
Exit;
if(InvFull) then
begin
LoadTheDtm;
repeat
if(InvEmpty) then
Exit;
if(FindDtm(Logs, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
MMouse(X, Y, 2, 2);
wait(300 + random(300));
Mouse(X, Y, 2, 2, False);
ChooseOption('rop');
LogsDropped := LogsDropped + 1
wait(200 + random(300));
AntiRandoms;
AntiBannage;
end;
until(not(FindDtm(Logs, X, Y, MIX1, MIY1, MIX2, MIY2)) or (not(LoggedIn)))
FreeDTM(logs);
end;
end;
procedure sleepp;
begin
if(not(LoggedIn)) then
Exit;
if(TimeFromMark(nap) > HowLongToSleep * 60000) then
begin
logout;
sleep(15 * 60000 + random(15 * 60000));
loginplayer;
Marktime(nap);
end;
end;
procedure GetCBLevel;
begin
GameTab(1);
cblvl := GetCombatLevel;
if(cblvl<19) then
begin
writeln('Your combat level is less than 20!Please get your combat to 20+ before you use this script!');
Logout;
NextPlayer2(False);
Exit;
end;
end;
procedure GetOriginalWcLevel;
begin
GameTab(2);
OriginalWcLvl := GetSkillLevel('Woodcutting');
if(wclvl<29) then
begin
writeln('Your woodcutting level is not high enough to chop willows. Get it up to 30 then you can use this script.');
Logout;
NextPlayer2(False);
Exit;
end;
end;
procedure GetCurrentWcLevel;
begin
GameTab(2);
CurrentWcLvl := GetSkillLevel('Woodcutting');
end;
Procedure HowManyLevelsGained;
begin
GetCurrentWcLevel;
LevelUps := CurrentWcLvl - OriginalWcLvl;
end;
procedure Intro;
begin
Writeln(' .__.____ .____ ');
Writeln('__ _ _|__| | | | ______ _ __ ');
Writeln('\ \/ \/ / | | | | / _ \ \/ \/ / ');
Writeln(' \ /| | |___| |__( <_> ) / ');
Writeln(' \/\_/ |__|_______ \_______ \____/ \/\_/ ');
Writeln(' \/ \/ ');
Writeln(' __ .__.____ .____ ');
Writeln('| | _|__| | | | ___________ ____ ');
Writeln('| |/ / | | | | _/ __ \_ __ \ / \ ');
Writeln('| <| | |___| |__\ ___/| | \/ | | \ ');
Writeln('|__|_ \__|_______ \_______ \___ >__| |___| / ');
Writeln(' \/ \/ \/ \/ \/ ');
Writeln('___. __ ._. ');
Writeln('\_ |__ _____ ____ | | __ ___________| | ');
Writeln(' | __ \\__ \ / \| |/ // __ \_ __ \ | ');
Writeln(' | \_\ \/ __ \| | \ <\ ___/| | \/\| ');
Writeln(' |___ (____ /___| /__|_ \\___ >__| __ ');
Writeln(' \/ \/ \/ \/ \/ \/ ');
Writeln(' By !Pain ');
end;
procedure proggy;
begin
ClearDebug;
Writeln('***************Willow kiLLer***************')
Writeln('|The script has been running for ' + TimeRunning + '. ');
Writeln('|Logs dropped: ' + IntToStr(LogsDropped) + '');
Writeln('|Starting Wc Lvl: ' + InttoStr(OriginalWcLvl) +'');
Writeln('|Current Wc Lvl: ' + IntToStr(CurrentWcLvl) + '');
Writeln('|Axes Broken:' + InttoStr(BrokenAxes) + '');
Writeln('|' + IntToStr(Loads) + ' loads done so far!');
Writeln('*************************************************');
end;
procedure FinalProggy;
begin
proggy;
Writeln('|You have leveled up ' + IntToStr(LevelUps) + ' |');
end;
procedure SmartStart;
begin
SmartSetupEx(World, false, Signed, false);
SetTargetDC(SMARTGetDC);
repeat
wait(300);
until(SmartGetColor(253, 233)<>1118604);
end;
begin
ClearDebug;
Intro;
SetupSRL;
MouseSpeed := 17;
Writeln('Openning SMART')
SmartStart;
ScriptID := '499';
SRLID := SRLStatsID;
SRLPassword := SRLStatsPass;
ActivateClient;
DeclarePlayers;
repeat
if not loggedin then Loginplayer;
SetAngle(True);
MarkTime(nap);
AntiRandoms;
GetCBLevel;
GetCurrentWcLevel;
Loads := 0;
repeat
WillowCutter;
Inc(Loads);
Responses;
sleepp;
GetCurrentWcLevel;
proggy;
DeathWalk;
until Loads > 39;
NextPlayer2(True);
until(AllPlayersinactive)
FinalProggy;
ExpGain := LogsDropped * 67.5;
ExpGained := Round(ExpGain);
ReportVars[0] := LogsDropped;
ReportVars[1] := ExpGained;
ReportVars[2] := Loads;
ReportVars[3] := LevelUps;
SRLRandomsReport;
Writeln('##################################');
Writeln('Thank you for using Willow Killer.');
Writeln('##################################');
end.