SCAR Code:
program DraynorWillowChopperAndBurnerByColucci;
{$DEFINE FORM }
{.include srl/srl/misc/Smart.scar}
{.include SRL/SRL.scar}
{.include SRL/srl/skill/WoodCutting.scar}
{.include SRL/srl/misc/QuickChat.scar}
{.include SRL/srl/misc/Friends.scar}
{$IFDEF FORM }
{.include srl/srl/misc/Users.scar}
{$ENDIF}
{.include SRL/SRL/misc/WorldSwitcher.scar}
Const
SmartWorld =161; // Smart world you want to be loaded.
UsingTinderBox = True ; // Do you have a tinderbox in the inventory? ? NOTE: Used to burn the willows. True or False.
ScriptVersion ='1.0' ; //DONT TOUCH. This version is 1.0.
ShutDownPC = False ;//Will shutdown your pc if True after the script ends. Change it if you want. True of False,
LoadsPerPlayer = 25; //Loads per player before switching.
AdditionalTreeColor = 0;//An additional tree color use. Its not needed but i have added it.
WaitPerWillows = 6000; //The time to wait while chopping willows.
MyScriptID = '1161' ;// Don't touch..
TheSRLID = '6974'; // Change it to yours.
TheSRLPassword = 'ttgfekatz8'; // Change it to yours.
var
x, y, AxeDTM, BankDTM, HowManyAntibans, HowManyPlayersAreWeUsing, Willows,
Willow1, Willow2, Willow3, Willow4, EntFindz0r, a, b, c , d, fx, fy, Level,
HowManyResponds, Tinderbox, SetTime, LoadsDone, AxeBroken, BrokenAxes, xx,
PlayersSwitch, TimeRunningSince, Talked, Antibans, Null, Xfile, TriesA, xy,
TriesB, TriesC, StupidX, StupidY, Ents, WillowsBanked, WillowsBurned,
WillowsDropped, LogAttemped, SRLDID, SRLDPASS, FishSymbol, BankSymbol, TimeA,
TotalLogs, TotalLogsX, SexyBeast, WillowsInInv, WLvl, FLvl, iad, FishSpot,
BankSpot: Integer;
RandomNumber: array [0..25] of integer;
IsAxeWield, WillowFound, BurningLogs, BankingLogs, StartBackupScript,
DroppingLogs, Cutting, ResultX, ResultY, Worked, WeAreAtFishingSpot,
WeAreAtBank, AnyRandom, Reason1, Reason2, Reason3, Reason4 :Boolean;
LastRespond, r, TextColour: String;
TheQuestion, TheRespond: array of array of String;
World:LongInt;
procedure DeclarePlayers;//RS player info and additional things needed to run the script..
begin
If Not (Players[0].Name = '') then Exit;
If (Players[0].Name = '') then
begin
WriteLn('No Players in SRLPlayerForm.');
WriteLn('Dont Worry...If you have the players declared in the DeclarePlayers Procedure, youll be fine.'); //Declare them just here :D
LampSkill := 'woodcutting';
HowManyPlayersAreWeUsing := 1;// Change if you are going to add more... otherwise it wont to work proper.
NumberOfPlayers(HowManyPlayersAreWeUsing);
CurrentPlayer := 0;
Players[0].Name := 'dddddddddddddddddddddd5'; //Runescape Username
Players[0].Pass := 'ddddd'; //Runescape Password
Players[0].nick := 'ddddd'; // 3-4 letters of your Runescape Name here->Don't include here Spaces and Capital letters
Players[0].Pin := '4444444444444444444'; //If you don't have one, let it blank
Players[0].Active := true; //Set to true to be active
Players[0].Strings[0] := ''; //What do you want do to? Valid options are: 'Dropping' , 'Burning', 'Banking'
WriteLn('Player Starting is '+Players[CurrentPlayer].Name);
{
//ADD MORE IF YOU WANT!
Players[1].Name := ''; //Runescape Username
Players[1].Pass := ''; //Runescape Password
Players[1].nick := ''; // 3-4 letters of your Runescape Name here->Don't include here Spaces and Capital letters
Players[1].Pin := ''; //If you don't have one, let it blank
Players[1].Active := true; //Set to true to be active
Players[1].Strings[0] := 'Banking'; //What do you want do to? Valid options are: 'Dropping' , 'Burning', 'Banking'
Players[2].Name := ''; //Runescape Username
Players[2].Pass := ''; //Runescape Password
Players[2].nick := ''; // 3-4 letters of your Runescape Name here->Don't include here Spaces and Capital letters
Players[2].Pin := ''; //If you don't have one, let it blank
Players[2].Active := true; //Set to true to be active
Players[2].Strings[0] := 'Banking'; //What do you want do to? Valid options are: 'Dropping' , 'Burning', 'Banking'
Players[3].Name := ''; //Runescape Username
Players[3].Pass := ''; //Runescape Password
Players[3].nick := ''; // 3-4 letters of your Runescape Name here->Don't include here Spaces and Capital letters
Players[3].Pin := ''; //If you don't have one, let it blank
Players[3].Active := true; //Set to true to be active
Players[3].Strings[0] := 'Banking'; //What do you want do to? Valid options are: 'Dropping' , 'Burning', 'Banking'
}
end;
end;
Procedure Antiban;Forward;
Procedure FindWhereWeAre;Forward;
Procedure AfterInvFull;Forward;
Procedure FindWillows;Forward;
Procedure AutoTalker;Forward;
Procedure TurnOffPC;Forward;
Procedure DropLogs;Forward;
Procedure BackupScript;Forward;
Procedure TheProggy;Forward;
Procedure LoadDTMS;Forward;
Function AntiRandoms: Boolean;//Note that if a random doesnt get solved, its not my script's fault its SRL fault. There are randoms that werent solved yet. Help SRL Community by taking screens, giving accounts in randoms, etc
var i:Integer;
begin
Case I of
0:If FindNormalRandoms then AnyRandom:=True;
1:If FindInventoryRandoms then AnyRandom:=True;
2:If FindNonInventoryRandoms then AnyRandom:=True;
end;
Result:=AnyRandom;
case random(4) of
0: r:= 'N';
1: r:= 'E';
2: r:= 'S';
3: r:= 'W';
end;
If FindFight then
begin
WriteLn('Found a fighting random');
Result:=True;
RunAway(r,True,1,15000 + Random(2000))
WriteLn('Successfully avoided the fight');
GetMMLevels('hp', TextColour);
end;
If (HPPercent < 25) then
begin
If Not GameTab(1) then exit;
If GameTab(1) then
begin
WriteLn('Your HP is ' + IntToStr(HPPercent) + '% ONLY. Logging out To Avoid Dying.');
LogOut;
NextPlayer(False);
end;
end;
end;
Function FindBrokenAxe(Slot : Integer): Boolean;//By Cazax...I pretend to do my own ent finder and broken axe too.
Var
ATPA : T2DPointArray;
Box : TBox;
T : Integer;
Begin
T := GetCurrentTab;
GameTab(4);
Wait(100);
SetArrayLength(ATPA, 3);
Box := InvBox(Slot);
FindColorsTolerance(ATPA[0], 924021, Box.X1, Box.Y1, Box.X2, Box.Y2, 7);
FindColorsTolerance(ATPA[1], 791908, Box.X1, Box.Y1, Box.X2, Box.Y2, 7);
FindColorsTolerance(ATPA[2], 923761, Box.X1, Box.Y1, Box.X2, Box.Y2, 7);
Result := (Length(ATPA[0]) <= 4) And (Length(ATPA[1]) <= 4) And (Length(ATPA[2]) <= 4)
If Not Result Then
Begin
GameTab(5);
Wait(100);
FindColorsTolerance(ATPA[0], 924021, 575, 291, 602, 318, 7);
FindColorsTolerance(ATPA[1], 791908, 575, 291, 602, 318, 7);
FindColorsTolerance(ATPA[2], 923761, 575, 291, 602, 318, 7);
Result := (Length(ATPA[0]) <= 4) And (Length(ATPA[1]) <= 4) And (Length(ATPA[2]) <= 4)
End;
GameTab(T);
End;
Procedure BankLogs;// Will BankLogs. It's a mess i know
var
x, y:Integer;
begin
If Not LoggedIn Then Exit;
If not InvFull Then Exit;
If FindSymbol(x,y,'bank') then
Begin
WriteLn('Found Bank')
Mouse(x, y, 1, 1,true) ;
FFlag(0);
WeAreAtBank:=True;
end;
If (not (OpenBank('db', true, true))) then
If (not (OpenBankFast('db'))) then
begin
FindObjCustom(x, y, ['ank', 'ooth'], [1792105, 4615547, 2970721], 0)
Mouse(x, y, 2, 2, false);
Wait(1000+Random(1000));
end;
If PinScreen then
wait(500);
InPin(Players[CurrentPlayer].Pin);
wait(500+random(1000));
If BankScreen then
Case IsAxeWield of
True:
begin
DepositAll;
WillowsBanked:=WillowsBanked+28;
TheProggy;
CloseBank;
end;
False:
begin
Deposit(2, 28, True);
WillowsBanked:=WillowsBanked+27;
TheProggy;
CloseBank;
end;
end;
begin
FindSymbol (x,y,'fishing spot')
Wait(100 + Random(200));
Mouse(x,y,0,0,true);
WeAreAtBank:=False;
WeAreAtFishingSpot:=True;
WriteLn('Banked all. Now going to chop willows again :D. ');
Wait(599+random(69));
Exit;
end;
end;
Procedure NewLevel;//When you lvl up, it will click to continue and count +1 level which will be in TheProggy.
begin
If Not LoggedIn Then Exit;
If FindNPCChatText('congratulu', Nothing) then
begin
WriteLn('Level Up!!!!');
Inc(Level);
end;
If FindText(x, y, 'ontinue', NPCCHARS, MCX1, MCY1, MCX2, MCY2) Then
Mouse(x, y, 1, 1, True);
end;
Procedure BurnLogs;// Will Burn Logs. It may not work 100% still working on it
begin
If Not LoggedIn Then Exit;
If not FindDTM(TinderBox, x, y, MIX1, MIY1, MIX2, MIY2)
or FindDTM(WillowsInInv, x, y, MIX1, MIY1, MIX2, MIY2) then FindWillows;
repeat
MarkTime(SexyBeast);//I was bored when i built this procedure nice name anyway
If FindDTM(TinderBox, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Mouse(x, y, 3, 3, True);
Wait(540 + Random(180));
if FindDTM(WillowsInInv, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
wait(500+random(500));
AntiRandoms;
Mouse(x, y, 3, 3, True);
if (FindBlackChatMessage('advan')) or (FindBlackChatMessage('catches')) then
Inc(WillowsBurned);
end;
end;
If FindBlackChatMessage('light a fire') then// Please i never help here i dont think it works 100%.
begin
Iad:= Random(6);
case Iad of //StormLighter
0: ClickMouseBox(246,220,263,236, false);//Also i need someone to explain me how MouseBox and ClickMouseBox works didnt found any relevant tut
1: ClickMouseBox(253,148,272,168, false);//Basically i need something
2: ClickMouseBox(222,174,234,188, false);//To get in another place when can't light fire
3: ClickMouseBox(185,176,202,195, false);//That didnt made sense. Well I think you understand it anyway
4: ClickMouseBox(240,240,256,259, false);//Dunno if this works..
5: ClickMouseBox(252,112,267,124, false);//But it's a worth try.
else
begin
WriteLn('Shit it didnt work. Wait for the next version to get a proper burner :)');
WriteLn('Dropping the logs.');
DropLogs;
end;
end;
If SexyBeast > 5000000 Then
begin
WriteLn('The Burn Logs Procedure Failed. Post What Happened In My SRL Script Thread');
WriteLn('Dont be mad! The script will continue');
WriteLn('Now ill be dropping logs..');
DropLogs;
Exit;
end;
end;
until not FindDTM(WillowsInInv, x, y, MIX1, MIY1, MIX2, MIY2)
If not FindDTM(WillowsInInv, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
Inc(LoadsDone);
WriteLn('Burn Logs Procedure Worked!!!!!!!!!!!');
TheProggy;
end;
end;
Procedure BrokeAxe;//Check if axe is broken and tries to find a new one in the bank.
begin
If FindBrokenAxe(1) then
If (FindBlackChatMessage('You do not')) Then WriteLn('Axe is broken.....');
If FindSymbol(x,y, 'Bank') then
begin
Mouse(x,y,0,0,true);
FFlag(0);
WeAreAtBank:= True;
WriteLn('We are in the bank');
end;
Case random(2) of
0:
begin
FindObjCustom(x, y, ['ank', 'ooth'], [1792105, 4615547, 2970721], 0)
Mouse(x, y, 2, 2, false);
Wait(1000+Random(1000));
end;
1:
begin
OpenBankFast('db');
end;
end;
If FindDtm(AxeBroken, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(x, y, 8, 8, false);
Wait(400);
Chooseoption('All');
end;
If not FindDTM(AxeDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
WriteLn('Sorry. BrokeAxe procedure didnt work at all. Please post what happened in my Thread at SRL-forums.com.');
Exit;
end;
If FindDTM(AxeDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
SearchBank('Axe');
FindDTM(AxeDTM, x, y, MSX1, MSY1, MSX2, MSY2)
Mouse(x, y, 4, 4, False);
ChooseOption('Withdraw-All');
CloseBank;
GameTab(4);
If FindDTM(AxeDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
If not FindDTM(AxeBroken, x, y, MSX1, MSY1, MSX2, MSY2) then
WriteLn('Seems like BrokeAxe procedure worked. Thats great!');
end;
end;
Procedure BackupScript; // If something went wrong with the script, this will try to start it again and resolve the problem
begin
If Not LoggedIn Then
begin
LogAttemped := LogAttemped + 1;
LogInPlayer;
end;
try FindWhereWeAre except WriteLn('Couldnt find where the player is.');
If (ResultX = False) then
begin
LogOut;
NextPlayer(false);
end;
If ResultX = True then
begin
FindWhereWeAre;
Antiban;
AntiRandoms;
end;
If LogAttemped <= 5 then
Begin
Writeln(Capitalize(Players[CurrentPlayer].Name) + ': Something is wrong within this player. Lets try again.');
LoginPlayer;
FindWhereWeAre;
FindWillows;
end;
end;
end;
Procedure LoadDTMS; //Will Load all the DTMS needed
begin
BankDTM := DTMFromString('78DA635CC4CCC070820105BC7AFA89E13F906' +
'604E2FF40C0381DA8E63CAA9A7FFF04E16A4080711A50CD315435' +
'7FFE30A1AA0199730855CDD7AF0CA86AE662AA41370700AD181AA' +
'1');
AxeBroken := DTMFromString('78DA63CC666260B8C580025A9205182481342' +
'310FF0702C662A09A3B0C6880118904D2A54035B709A82903AAB9' +
'4F404D3250CD47FC6A00A1090BB2');
AxeDTM := DTMFromString('78DA63CC666260B8CD80025A9205182481342' +
'310FF0702C672A09A7B0C6880118904D2A540353708A82901AA79' +
'48404D3250CD47FC6A00A3CD0BB6');
Willow2 := DTMFromString('78DA634C666260486564400661FE86601A26C' +
'AE80454938EAA26B3D217554D14508D23AA1A0B57255435E54035' +
'51A86A9C7D3450D56401D5D4A1AAC96F084755E309541389AAC6D' +
'05A05554D20508D03AA1A4B7765543515987E8FCD764155130A54' +
'5388AAC6DED712554D11A61A136755143500B1590FF2');
Willow1 := DTMFromString('78DA639CC3C8C0B0840105F879E832FC07D24' +
'01986FF40C0B809C8DA88AAC6C1471FAE0604183700597350D5E8' +
'5BC9A0AA990264F5A1AAB170534755D308642D445563ECA082AAA' +
'60DC8DA82AAC6C9560D450D008EF0155A');
Willow3 := DTMFromString('78DA636C60646038CF8002B2EB4218FE0369A' +
'00CC37F20609C0C646D475563E769085703028C9B81AC5368E634' +
'C6A2AA590E64DD445553DD9B8FAAA615C8BA82AAA6B42B0255CD5' +
'C20EB38AA1A3565515435D540D609543519E561A86AEA81ACDBA8' +
'6AFC63EC50D5F401590F51D504A45BA0840F00C53F26E1');
Willow4:= DTMFromString('78DA63AC606460F8CF80025C1D34C04240198' +
'6FF40C0B819C87A88AAC6D0540E4C3342F98CD140162B238A1A4B' +
'272D54357540D62B547358595950D56C01B24450CDD1369147559' +
'30D6429A3AA718B364655530B6445A0AAB1B550465103007DD30F' +
'E1');
WillowsInInv:= DTMFromString('78DA639467666078C1800282BD6419FE03694' +
'620FE0F048CA240354F51D514A4DBC3D58000A31850CD47026A54' +
'806A1EA3AAF173934155A30154F316B77BC06A04816ADEA0AAC94' +
'AB2465103005F8F158D');
TinderBox := DTMFromString('78DA638C67626078C18006189148205D0A547' +
'39D809A04A09A7B04D49400D5DC27A0A61CA8E60D0135E940351F' +
'F1AB0100C4B607FE');
FishSpot := DTMFromString('78DA63AC676660D8CB8002B8B2DE30FC07D28' +
'C40FC1F0818416A0EA0AA6114DE095703E63703D5EC4155B37BF7' +
'7A5435AD4035FB50D5CC9AD50757C304A25B30D5F0D89E80AB610' +
'6D120F7ECC6ED66B09A6AC2E60000413C1D6C');
BankSpot := DTMFromString('78DA635CC2CCC0D0C980025E9D1660F80FA41' +
'981F83F10302E07AAE9415593E6CD085703028C20735A50D5AC99' +
'6B84AA6611504D370135207326E0B70B00A9C81519');
WriteLn('Loaded all DTMS');
end;
Procedure FindWhereWeAre;//Just to startup. My first procedure!
var
x, y: Integer;
begin
Worked:=False;
MakeCompass('NW');
If FindDTM(Willow1, x, y, MSx1, MSy1, MSx2, MSy2)
or FindDTM(Willow2, x, y, MSx1, MSy1, MSx2, MSy2)
or FindDTM(Willow3, x, y, MSx1, MSy1, MSx2, MSy2)
or FindDTM(Willow4, x, y, MSx1, MSy1, MSx2, MSy2) then
begin
GetMousePos(x,y);
Mouse(x, y, 4, 4, False);
AntiRandoms;
FindWillows;
Exit;
end;
If RadialWalk(998943 , 240, 195, 80, 1, 1) Then
begin
AntiRandoms;
WriteLn('Walked To Willows Using Radial Walk');
wait(109+random(699));
Worked:=True;
Exit;
end;
If not RadialWalk(998943 , 240, 195, 80, 1, 1) Then
If Not InvFull Then
begin
if FindDtm(FishSpot, x, y, MMX1, MMY1, MMX2, MMY2) then begin
GetMousePos(x,y);
Mouse(x, y, 4, 4, False);
WriteLn('Walking To Willows Using DTMS');
Worked:= True;
Exit;
end;
If not FindDtm(FishSpot, x, y , MMX1, MMY1, MMX2, MMY2) then begin
If FindDtm(BankSpot, x, y , MMX1, MMY1, MMX2, MMY2) then begin
WriteLn('Walking To Bank Using DTMS');
GetMousePos(x,y);
Mouse(x, y, 4, 4, False);
Worked:= True;
Exit;
end;
If FindDtm(FishSpot, x, y , MMX1, MMY1, MMX2, MMY2) then
WriteLn('Walking Now To Willows Using DTMS');
GetMousePos(x,y);
Mouse(x, y, 4, 4, False);
Worked:= True;
Exit;
end else begin
WriteLn('Last try.');
LoadSymbolBitmapColor('fish');
LoadSymbolBitmapColor('bank');
Symbolaccuracy :=4;
wait(200+random(154));
if FindSymbol(x,y,'fish')then
begin
wait(500+random(600));
Worked:=True;
mouse(x,y,2,2,true);
end;
if not FindSymbol(x, y, 'fish')then
begin
If FindSymbol(x, y, 'bank') then
begin
Mouse(x,y,2,2, true);
Worked:=True;
Exit;
end;
If Not FindSymbol(x, y, 'bank') or FindSymbol(x, y, 'fishing spot')then
begin
Logout;
Worked:=False;
NextPlayer(false);
WriteLn('Logging Out...Reason - Couldnt find the Willows Spot');
Reason1:=True;
Exit;
end else
begin
Worked:=False;
WriteLn('We FAILED.');
NextPlayer(False);
end;
end;
end;
end;
end;
procedure DropLogs;//Drops the logs..If your axe is in the inventory and NOT IN THE 1st PLACE, put it in the 1st place otherwise it will be dropped.
Var
i:Integer;
begin
if not (LoggedIn) then exit;
if (InvFull) then
begin
case IsAxeWield of
True:
for i := 1 to 28 do
begin
DropItem(i);
Wait(500+random(500));
WillowsDropped:= WillowsDropped+28;
Inc(LoadsDone);
end;
False:
for i := 2 to 28 do
begin
DropItem(i);
Wait(500+random(500));
WillowsDropped:= WillowsDropped+27;
Inc(LoadsDone);
end;
end;
end;
TheProggy
Exit;
end;
{function MyOwnEntFinder:Boolean; // Still needs testing.. DONT use it yet.
var
x, y, i:integer;
EntTPA : TPointArray;
MyPoint2 : TPoint;
begin
x := MSCx;
y := MSCy;
FindColorsSpiralTolerance(x, y, EntTPA, 383705, MSx1, MSy1, MSx2, MSy2, 10);
if Length(EntTPA) = 0 then FindColorsSpiralTolerance(x, y, EntTPA, 65535, MSx1, MSy1, MSx2, MSy2, 10);
If not Length(EntTPA) = 0 Then
begin
WriteLn('!!!Found Ent!!!');
Result:=True;
end;
for i := 0 to High(EntTPA) do
begin
MyPoint2 := EntTPA[i]
MMouse (MyPoint2.x, MyPoint2.y, 3, 3);
if (IsUpTextMultiCustom(['chop', 'down'])) then
begin
Writeln('Waiting for it to go away');
Result := True;
Inc(Ents);
Mouse(x, y, 4, 4, False);
Wait(100+Random(100));
ChooseOption('cancel');
AntiRandoms;
AntiBan;
AutoTalker;
end else
begin
WriteLn('My Ent Finding Failed. Trying With SRL one.');
FindEnt(x,y, True);
Mouse(x, y, 4, 4, False);
Wait(100+Random(100));
ChooseOption('cancel');
Inc(Ents);
If Not FindEnt(x,y, True) Then
WriteLn('No ent was found. If there is one, then it failed.');
end;
end;
end; }
Procedure WhileCutting;
begin
MarkTime(TimeA);
repeat
Wait(WaitPerWillows);
while TimeA < 10000 do
begin
Antiban;
AntiRandoms;
If FindEnt(x,y, True) then Inc(Ents);
AfterInvFull;
AutoTalker;
Newlevel;
end;
until TimeA > 500000 ;
wait(100+random(200));
end;
Procedure FindWillows;
var
TreeColor: array [0..4] of integer;
WillowTPA : TPointArray;
MyPoint : TPoint;
x, y, i, WeFailed, d : Integer;
begin
If InvFull Then AfterInvFull;
If Not LoggedIn then Exit;
TreeColor[0] := 332817;
TreeColor[1] := 3765091;
TreeColor[2] := 2179633;
TreeColor[3] := 3230282
TreeColor[4] := 3821637;
x := MSCx;
y := MSCy;
repeat
FindColorsSpiralTolerance(x, y, WillowTPA, 3692618, MSx1, MSy1, MSx2, MSy2, 10);
if Length(WillowTPA) = 0 then FindColorsSpiralTolerance(x, y, WillowTPA, 4681822, MSX1, MSY1, MSX2, MSY2, 10);
if not Length(WillowTPA) = 0 then WriteLn('Found Willow');
for i := 0 to High(WillowTPA) do
begin
MyPoint := WillowTPA[i];
MMouse (MyPoint.x, MyPoint.y, 3, 3);
if (IsUpTextMultiCustom(['chop', 'llow'])) then
case Random(2) of
0:begin
If not LoggedIn Then BackUpScript;
GetMousePos(x,y);
Mouse(x, y, 4, 4, False);
Wait(400+Random(900));
ChooseOption('hop');
ResultX:=True;
If FindEnt(x,y, True) then Inc(Ents);
Inc(Willows);
WriteLn('Chopping Willows');
WriteLn('Willows Found = '+IntToStr(Willows)+' .');
WriteLn('Waiting While Cutting');
WhileCutting;
Exit;
end;
1:
begin
If not LoggedIn Then BackUpScript;
GetMousePos(x,y);
Mouse(x, y, 4, 4, True);
ResultX:=True;
If FindEnt(x,y, True) then Inc(Ents);
Inc(Willows);
WriteLn('Chopping Willows');
WriteLn('Willows Found = '+IntToStr(Willows)+' .');
WriteLn('Waiting While Cutting');
WhileCutting;
Exit;
end;
end;
If InvFull then
begin
WriteLn('Inventory is full.');
AfterInvFull;
end;
if (WeFailed = 5) then
begin
WriteLn('We Failed Finding Willows wdf :(');//lol
if FindObjTPA(x, y, TreeColor[d], 30, 2, 15, 25, 10, ['Willow', 'Will', 'illo', 'llow']) then
begin
GetMousePos(x,y);
Mouse(x, y, 4, 4, True);
ResultX:=True;
WriteLn('Waiting While Cutting');
WhileCutting;
end else
NextPlayer(False);
LoginPlayer;
ResultX:=False;
end;
While ResultX do
begin
NewLevel;
AutoTalker;
AntiRandoms;
Antiban;
If FindEnt(x,y, True) then Inc(Ents);
end;
end;
until (FindBlackChatMessage('is too full')) or InvFull or (WeFailed = 5) or not LoggedIn;
end;
Procedure TheProggy;//This procedure is just spam (lol). SendReport will be available soon.
begin
TotalLogs:= TotalLogs + (WillowsDropped + WillowsBurned + WillowsBanked);
WriteLn('=========== Colluci Willow Chopper And Burner ==============');
WriteLn(Padr('|| Talked: ' + IntToStr(Talked), 49) + '||');
WriteLn(Padr('|| Switched Players: ' + IntToStr(PlayersSwitch), 49) + '||');
WriteLn(Padr('|| AntiBans: ' + IntToStr(AntiBans), 49) + '||');
WriteLn(Padr('|| Loads: ' + IntToStr(LoadsDone), 49) + '||');
WriteLn(Padr('|| Ran For: ' + TimeRunning, 49) + + '||');
WriteLn(Padr('|| Ents Found: ' + IntToStr(Ents), 49) + '||');
WriteLn(Padr('|| Willows Dropped: ' + IntToStr(WillowsDropped), 49) + '||');
WriteLn(Padr('|| Willows Burned: ' + IntToStr(WillowsBurned), 49) + '||');
WriteLn(Padr('|| Willows Banked: ' + IntToStr(WillowsBanked), 49) + '||');
WriteLn(Padr('|| Levels Up: ' + IntToStr(Level), 49) + '||');
WriteLn(Padr('|| Experience Gained: ' + FloatToStr(TotalLogs*65.5), 49) + '||');
WriteLn('==============================================================');
SRLRandomsReport;
Procedure SaveProggies;//Will get better in next version.
begin
Writeln('Saved the Proggy at '+(ScriptPath + 'Draynor Willow Chopper & Burner '+ ScriptVersion+ 'PROGGY.txt'));
Xfile := RewriteFile(ScriptPath + 'Draynor Willow Chopper & Burner '+ ScriptVersion+ ' @ PROGGY.txt', False);
WriteFileString(Xfile,'=============== Colluci Willow Chopper And Burner =============='+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Talked: ' + IntToStr(Talked) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Switched Players: ' + IntToStr(PlayersSwitch) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| AntiBans: ' + IntToStr(AntiBans) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Loads: ' + IntToStr(LoadsDone) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Ran For: ' + TimeRunning + + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Ents Found: ' + IntToStr(Ents) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Willows Dropped: ' + IntToStr(WillowsDropped) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Willows Burned: ' + IntToStr(WillowsBurned) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Willows Banked: ' + IntToStr(WillowsBanked) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'|| Levels Gained: ' + IntToStr(Level) + '||'+Chr(13)+chr(10));
WriteFileString(Xfile,'=============================================================='+Chr(13)+chr(10));
WriteFileString(Xfile,'Script stopped at ' + TheTime + ' ' + TheDate(3) + '.'+Chr(13)+chr(10));
CloseFile(Xfile);
end;
Procedure ScriptTerminate;
begin
TheProggy;
Writeln('Script will end.');
Writeln('Thanks for using this script!');
Writeln('Script stopped at ' + TheTime + ' ' + TheDate(3));
Writeln('Post Suggestions/Bugs/Proggies At Script Thread');
SaveProggies;
TerminateScript;
end;
Procedure AfterInvFull;
begin
If Not LoggedIn Then Exit;
If Not (InvFull) Then Exit;
If (InvFull) Then
begin
MakeCompass('N');
WriteLn('Getting what you want to do');
Case Players[CurrentPlayer].Strings[0] of
'Dropping':
begin
WriteLn('Dropping logs');
DropLogs;
Wait(100+random(500));
end;
'Banking':
begin
WriteLn('Banking Logs');
BankLogs;
Wait(100+random(500));
end;
'Burning':
begin
WriteLn('Banking Logs');
BankLogs;
Wait(100+random(500));
end;
end;
if (Players[CurrentPlayer].Strings[0] <> 'Banking')
or (Players[CurrentPlayer].Strings[0] <> 'Dropping')
or (Players[CurrentPlayer].Strings[0] <> 'Burning') then
begin
WriteLn(Capitalize(Players[CurrentPlayer].Name) +'- Error in DeclarePlayers Procedure:')
Writeln('Please Enter a Valid Option in Players[CurrentPlayer].Strings[0].(Banking, Dropping Or Burning). I shouldnt but ill be dropping the logs.');
DropLogs;
end;
end;
end;
Procedure Antiban;//You can add more if you know what you are doing
begin
If Not LoggedIn Then Exit;
Case Random(150) of
1:
begin
Boredhuman;
Inc(HowManyAntibans);;
WriteLn('Antiban - BoredHuman');
Exit;
end;
19:
begin
PickupMouse;
Inc(HowManyAntibans);;
WriteLn('Antiban - PickupMouse');
Exit;
end;
31:
begin
Inc(StupidX);
AddIgnore('Zezima'+IntToStr(StupidX));
Wait(100+random(900));
DeleteIgnore('Zezima'+IntToStr(StupidX));
Inc(HowManyAntibans);;
WriteLn('Antiban - Ignore(Add/Remove)');
Exit;
end;
41:
begin
Inc(StupidY);
AddFriend('tehnoobshow'+IntToStr(StupidY));
Wait(100+random(500));
DeleteFriend('tehnoobshow'+IntToStr(StupidY));
Inc(HowManyAntibans);;
WriteLn('Antiban - Friend(Add/Remove)');
Exit;
end;
125:
begin
Hoverskill('random', false)
Inc(HowManyAntibans);;
WriteLn('Antiban - HoverSkill->Random');
Exit;
end;
69,54,67:
begin
Makecompass('n');
wait(30+random(30));
Makecompass('s');
wait(30+random(30));
Makecompass('random');
Inc(HowManyAntibans);;
WriteLn('Antiban - Random Changing of Compass');
Exit;
end;
143:
begin
Hoverskill('Woodcutting', false);
Inc(HowManyAntibans);;
WriteLn('Antiban - HoverSkill->Woodcutting');
Exit;
end;
87:
begin
Gametab(1);
wait(250+random(350));
Gametab(2);
Wait(250+random(350));
Gametab(3);
Wait(250+random(350));
Gametab(4);
Wait(150+random(200));
Inc(HowManyAntibans);;
WriteLn('Antiban - Gametab');
Exit;
end;
48:
begin
Hoverskill('Firemaking', false);
Inc(HowManyAntibans);;
WriteLn('Antiban - Hoverskill->Firemaking');
Exit;
end;
186:
begin
SleepAndMoveMouse(1000+random(2000));
Inc(HowManyAntibans);;
WriteLn('Antiban - SleepAndMoveMouse');
Exit;
end;
201:
begin
Mouse(random(600),random(500),0,0,false)
Chooseoption('ancel');
Inc(HowManyAntibans);;
WriteLn('Antiban - Random Mouse Click and Cancel');
Exit;
end;
249:
begin
Mouse(random(600),random(500),0,0,false)
chooseoption('xamine')
Inc(HowManyAntibans);;
WriteLn('Random Mouse Click and Examine');
Exit;
end;
200:
begin
If QCOpen then Exit;
OpenQC;
Wait(10+random(100));
CloseQc ;
QCSayLevel('Woodcutting');
Inc(HowManyAntibans);;
WriteLn('Antiban - QuickChat(beta may not work)');;
Exit;
end;
end;
end;
Procedure FindAnAxe;
begin
If Not Loggedin Then Exit;
FindNormalRandoms;
If (FindAxe) Then
begin;
ClearDebug;
WriteLn('Found an axe. Checking if it is wielded or not');
end;
Gametab(4)
wait(200+random(200))
If FindDTM(AxeDTM,x,y,MIX1,MIY1,MIX2,MIY2) Then
begin
Writeln('The Axe is in the Inventory');
Writeln('***Warning***If the axe is not as the 1st place of the inventory, the script will Drop/Bank it');
Writeln('Please put it in the first place. This script will NOT detect if it is in the first place***Warning***');
IsAxeWield:= False;
FindWhereWeAre ;
Exit;
end;
If not FindDTM(AxeDTM,x,y,MIX1,MIY1,MIX2,MIY2) Then
begin
Gametab(5)
wait(200+random(200))
If FindDTM(AxeDTM,x,y,MIX1,MIY1,MIX2,MIY2)Then
begin
Writeln('The Axe is wielded.');
IsAxeWield := true ;
FindWhereWeAre;
Exit;
end;
If not FindDTM(AxeDTM,x,y,Mix1,miy1,mix2,miy2)then
begin
WriteLn('You dont have any axe. Go buy one and start the script again.')
WriteLn('Logging Out...')
Logout;
WriteLn('Setting Player not active. NextPlayer.')
NextPlayer(False);
end;
end;
end;
Procedure Welcome;
begin
GetApplication.Messagebox('Welcome To Colluci Script! ' + chr(13) + 'Have Fun!', 'Welcome', 0)
ClearDebug;
WriteLn('Welcome To The Script-> Draynor Willow Chopper & Burner')
WriteLn('Made By:')
wait(2500);
ClearDebug;
WriteLn(' _____ _____ _ _ _ _ _____ _ ')
WriteLn('/ ___| / _ \ | | | | | | | | / ___| | | ')
WriteLn('| | | | | | | | | | | | | | | | | |')
WriteLn('| | | | | | | | | | | | | | | | | |')
WriteLn('| |___ | |_| | | |___ | |___ | |_| | | |___ | | ')
WriteLn('\_____| \_____/ |_____| |_____| \_____/ \_____| |_| ')
wait(2500);
end;
function CheckAndDownload(ScriptVersionURL, ScriptURL, ExactFileName : string) : boolean;
var
FileNum : Integer;
begin
GetPage(ScriptVersionURL);
Result:=GetPage(ScriptVersionURL) = ScriptVersion
If Result = true then
WriteLn('Version is the newest');
if Result = false then
begin
case GetApplication.Messagebox('Version ' + GetPage(ScriptVersionURL) + ' is the newest Version' + chr(13) + 'Download the New Version?' , 'Download Latest Version Of Script', 4) of
0 : begin
FileNum := ReWriteFile(ScriptPath + ExactFileName, true);
WriteFileString(FileNum, GetPage(ScriptURL));
CloseFile(FileNum);
GetApplication.MessageBox('The current version of ' + ExactFileName + ' has been successfully downloaded.' + chr(13) + 'Please reopen this script.', 'Please Reopen the Script', 0);
WriteLn('Now opening the script page');
OpenWebPage('http://www.google.com');
TerminateScript;
end;
end;
end;
end;
procedure TurnOffPC;
begin
If (ShutDownPC = False) Then Exit;
If (ShutDownPC = True) then
WriteLn('Your PC will shutdown ...');
wait(2500+random(200));
KeyDown(92);
wait(200);
KeyDown(82);
wait(200);
KeyUp(82);
wait(200);
KeyUp(92);
wait(200);
WriteLn('Now!');
Sendkeys('shutdown -s -f -t 00'+chr(13));
end;
procedure AutoTalker;// Add More If you want..it's random soz..I took some TypeSends for others scripts. Thats not copying i think its just being lazy? :=)
Var Chat, Talked, l, d:Integer;
begin
If Not LoggedIn Then Exit;
MarkTime(Chat);
If TimeFromMark(Chat) <= 50000 Then exit;
Case random(150) of
0: TypeSend('Hey, hello...');
1: TypeSend('can i have free stuuf');
2: TypeSend('haha');
3: TypeSend('gotta lvl my wc soon');
4: TypeSend('im training my wc');
5: TypeSend('ure a noob');
6: TypeSend('begone newbs');
7: TypeSend('wc lvls');
8: TypeSend('fm lvls');
9: TypeSend('ilvy2 lol');
10: TypeSend('i hate skillers');
11: TypeSend('I own man');
12: TypeSend('chickens cant kill u');
13: TypeSend('we can say ass now :>');
14: TypeSend('stop it');
15: TypeSend('lol and dont spam me!');
16: TypeSend('get over it');
17: TypeSend('get lost noob');
18: TypeSend('dont be stupid');
19: TypeSend('I hate randoms');
20: TypeSend('i hate you');
21: TypeSend('i luv this game');
22: TypeSend('rofl');
23: TypeSend('Man im bored');
24: TypeSend('wc is sooo boring!');
25: TypeSend('hehe gime dem trees!');
26: TypeSend('so sleepy...');
27: TypeSend('arg cmon u stupid tree!');
28: TypeSend('haha im so nooby');
29: TypeSend('woot i own s0 much');
30: TypeSend('WIllows is all mine!');
31: TypeSend('arg Willows are so slooow coz many players here');
32: TypeSend('yay nerly lvl!');
33: TypeSend('im da man!');
34: TypeSend('omg i wish i was a mem...');
35: TypeSend('red: shake: mwuahahaha my willows');
36: TypeSend('white: have a good day all of you... =]');
37: TypeSend('red: shake: Im goin 2 eat ur souls mwuahahahahahahahahahaha');
38: TypeSend('what sorta music yall listen 2?');
38: TypeSend('red: shake: Leave These Woods and Never Return');
39: TypeSend('yay da simpsons is on =]');
40: TypeSend('arg nothin on tv =[');
41: TypeSend('mmm im hungry');
42: TypeSend('sweet cake!');
43: TypeSend('=p i get pavalova');
44: TypeSend('chooocolate');
45: TypeSend('mmmm donuts');
46: TypeSend('ow my cat scratched me!');
47: TypeSend('lool my cat is goin crazy');
48: TypeSend('yay nerly tea time');
49: TypeSend('hmph stupid parents');
50: TypeSend('ah mindless killing');
51: TypeSend('man something stinks');
52: TypeSend('so wats evrybody up 2?');
53: TypeSend('sup dog?');
54: TypeSend('eek laggy');
55: TypeSend('man i hate this lag');
57: TypeSend('laaaaag');
58: TypeSend('=[ lag');
59: TypeSend('stupid dial up');
60: TypeSend('i need broad band');
61: TypeSend('yaya awesome song');
62: TypeSend('woot this song totally rox');
63: TypeSend('ah peace at last... oh maybe not');
64: TypeSend('grrr i h8 bots now we cant trade gud');
65: TypeSend('stupid macros will destroy our economy');
66: TypeSend('bots r so obvious arent them..');
67: TypeSend('man it rox how theres no macros =]');
68: TypeSend('Fr33 St00f Pl0x');
69: TypeSend('Man the new update just roxs.');
70: TypeSend('Hehe i can say ass and suck now in RuneScape');
71: TypeSend('Finally Jagex killed wildy. I hate it');
72: TypeSend('I like Pie.');
73: TypeSend('My main has been banned wtf!');
74: TypeSend('I am so sleepy');
75: TypeSend('Can I throw some cookies?');
76: TypeSend('Obama for RuneScape President!');
77: TypeSend('Im on a bad day.');
78: TypeSend('I believe that i own');
79: TypeSend('Id rather try to focus in wc');
80: TypeSend('Imo i dont think so');
81: TypeSend('Ill go to GE');
82: TypeSend('I just went to forums to read some mod posts');
83: TypeSend('hey all noobs');
end;
Inc(Talked);
WriteLn( + (Players[CurrentPlayer].Name) + ' Talked Randomly');
if (InChat('Hi')) or (InChat('Hello')) or (InChat('Hey')) then
begin
case Random(4) of
0:
begin
TypeSend(AddMistakes('hello', 30));
Inc(Talked);
end;
1:
begin
TypeSend('I guess so..');
Inc(Talked);
end;
3:
begin
TypeSend('rofl rickrolled again3fsfs');
Inc(Talked);
end;
4:
begin
TypeSend(AddMistakes('Good day', 5));
Inc(Talked);
end;
end;
end;
if (InChat('lvl')) or (InChat('woodcutting')) or (InChat('wc')) or (InChat('level')) then
begin
case d of
0:
begin
TypeSend(AddMistakes(IntToStr(GetSkillLevel('woodcutting')) + ' yours?', 30));
Inc(Talked);
end;
1:
begin
TypeSend(IntToStr(GetSkillLevel('woodcutting')));
Inc(Talked);
end;
3:
begin
TypeSend(AddMistakes('My wc lvl is ' + IntToStr(GetSkillLevel('woodcutting')), 30));
Inc(Talked);
end;
end;
for d:= 0 to 3 do
Inc(Talked);
if (InChat(Players[CurrentPlayer].Name)) then
begin
case l of
0: TypeSend ('yaa?? srry im busy..');
1: TypeSend ('wat..cant talk too busy :)');
2: TypeSend ('wat? so bord here..dont feel like tlking');
3: TypeSend ('ye? too bord to talk sory');
4: TypeSend ('sup? this geting so boring..');
5: TypeSend ('ye? wat u want? sory so bordd..');
6: TypeSend ('wat up..');
7: TypeSend ('yep??');
8: TypeSend ('.....what?');
9: TypeSend ('what you mean my english is very bad');
10: TypeSend ('id know that but i s x that english bad');
11: TypeSend(' Who said my name!?');
end;
For l:= 0 to 11 do
Inc(Talked);
end;
end;
//Add more things...pretty easy :D. Dont forget the Inc(Talked).
end;
Procedure SmallSetupThing;
var I:Integer;
begin
If Not LoggedIn Then Exit;
SetRun(true);
SetAngle(True);
Wait(100+random(500))
MakeCompass('S');
SetGraphics(4, 'current', 'always', 'off', 'low', 'few', 'off', 'few', 'off');
WLvl:= GetSkillLevel('woodcutting');
FLvl:= GetSkillLevel('firemaking');
If GetCombatLevel < 15 Then
begin
I := GetApplication.MessageBox('***IN DANGER*** CB IS WAY TOO LOW','WANT TO CONTINUE THE SCRIPT?',4);
if I = 6 then Writeln('Right dont complain if you get killed. Continuing.');
if I = 7 then
begin
Writeln('Good you stopped. I have few words for you.');
Wait(6000);
WriteLn(' _______ _______ _______ _______ _______ _ _______ _______ ______ '+Chr(13)+chr(10));
WriteLn(' |\ /|( ___ )|\ /| ( ___ )( ____ )( ____ \ ( ___ ) ( ( /|( ___ )( ___ )( ___ \'+Chr(13)+chr(10));
WriteLn(' ( \ / )| ( ) || ) ( | | ( ) || ( )|| ( \/ | ( ) | | \ ( || ( ) || ( ) || ( ) )'+Chr(13)+chr(10));
WriteLn(' \ (_) / | | | || | | | | (___) || (____)|| (__ | (___) | | \ | || | | || | | || (__/ / '+Chr(13)+chr(10));
WriteLn(' \ / | | | || | | | | ___ || __)| __) | ___ | | (\ \) || | | || | | || __ ( '+Chr(13)+chr(10));
WriteLn(' ) ( | | | || | | | | ( ) || (\ ( | ( | ( ) | | | \ || | | || | | || ( \ \'+Chr(13)+chr(10));
WriteLn(' | | | (___) || (___) | | ) ( || ) \ \__| (____/\ | ) ( | | ) \ || (___) || (___) || )___) ) '+Chr(13)+chr(10));
WriteLn(' \_/ (_______)(_______) |/ \||/ \__/(_______/ |/ \| |/ )_)(_______)(_______)|/ \___/ '+Chr(13)+chr(10));
WriteLn('Loggin out..Reason-> Lower combat level of 15.');
NextPlayer(False);
LoginPLayer;
end;
end;
end;
begin
{$IFDEF FORM }
ClearDebug;
SetupSRL;
WriteLn('SRLPlayerForm loaded.');
SRLPlayerForm(True, [], [], ['Banking, Dropping or Burning,'], []);// You dont need to fill them but from armies its is great :>
WriteLn('Players in SRLPlayerForm: '+Players[CurrentPlayer].Name);
{$ENDIF}
wait(2400);
ClearDebug;
Disguise('@Colluci Willow Chopper & Burner');
Welcome;
ClearDebug;
WriteLn('Checking Version');
CheckAndDownload('http://colluciworld.freehostia.com/VersionChecker.txt', 'http://colluciworld.freehostia.com/TheScript.txt', 'Draynor Willow Chopper & Burner 1.0.scar') ;
Wait(1000);
WriteLn('Loading SMART');
wait(2000);
World:=SmartWorld;
SmartSetupEx(World, false, true, false);
SetTargetDC(SmartGetDC);
repeat
wait(100);
until(SmartGetColor(253, 233)<>1118604);
wait(1000);
ActivateClient;
WriteLn('SMART was loaded succesfully.')
SetupWoodCutting;
SRLID := TheSRLID;
SRLPassword := TheSRLPassword;
ScriptID := MyScriptID;
DeclarePlayers;
LoginPlayer;
AntiRandoms;
SmallSetupThing;
WriteLn('Current WC lvl: '+IntToStr(WLvl));
WriteLn('Current FM lvl: '+IntToStr(FLvl));
LoadDTMS;
Wait(100);
FindAnAxe;
FindWhereWeAre;
wait(1000+random(500));
repeat
{while (LoggedIn) do
begin
FindWillows;
MyOwnEntFinder;
AfterInvFull;
AntiRandoms;
Antiban;
NewLevel;
AutoTalker;
end;}
if not LoggedIn then
Begin
NextPlayer(False);
LoginPlayer;
If Not (LoggedIn) Or Not (Players[CurrentPlayer].Active) Then
Players[CurrentPlayer].Active := False;
If Not LoggedIn Then
Begin
Players[CurrentPlayer].Active := False;
Inc(PlayersSwitch);
NextPlayer(True);
end;
GameTab(4) ;
If FindDTM(AxeBroken,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
WriteLn('Axe is broken :(') ;
Inc(BrokenAxes);
BrokeAxe;
end;
If not FindDTM(AxeBroken,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
GameTab(5);
If FindDTM(AxeBroken,x,y,MIX1,MIY1,MIX2,MIY2) Then
begin
WriteLn('Checking if axe is broken.');
Mouse(x, y, 0, 0, False);
wait(100+random(500));
ChooseOption('Remove');
BrokeAxe;
end;
if LoadsDone >= LoadsPerPlayer then
begin
If LoadsDone mod LoadsPerPlayer = 0 Then //Just to be sure all loads are done
begin
WriteLn('All Loads done:'+IntToStr(LoadsDone)+' loads. Work is done.');
WriteLn('If you want to add more loads, just change the LoadsPerPlayers const');
Inc(PlayersSwitch);
NextPlayer(True);
LoginPlayer;
end;
if PlayersActive = 0 then
begin
NextPlayer(True);
WriteLn('Switching players, ' + Players[CurrentPlayer].Name +' going to ' + BoolToStr(LoggedIn));
Inc(PlayersSwitch);
end;
end;
end;
end;
until(AllPlayersInactive)
end.