Runehack123
2013-02-09 10:55:25
How Long have You Played Runescape?
3 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
No
What is your general programming knowledge?
C/C++, PascalSimba
Are you a member of any other communities?
No
Tell us about yourself…
Please show us one (or multiple) of your scripts.
3 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
No
What is your general programming knowledge?
C/C++, PascalSimba
Are you a member of any other communities?
No
Tell us about yourself…
From: Runehack123
Hi there,
I'm Philip.
When I started to get into this community, it was after my account was banned for goldfarming on Runescape. An account, which I had played on for about 6 months and legitimately trained almost half-way to max with a quest cape, 90 slayer and turmoil without 'cheating'/botting or buying gold! Over 1500 playing hours in a timespan of less than 6 months! Runescape at that time was a game from my childhood that came back to haunt me at the wrong time in life. I was depressed, extremely addicted and playing more than 10 hours a day in my little boarding school dorm. On weekends even more!
After my Runescape ban I have been on a journey of self-discovery and if anything SRL has brought me away from the game. Thank you.
I had lost a lot of weight (bad sleeping habits and eating was less important than playing!). Now that I'm feeling better about myself again and started exercising I feel like I owe you all a great big deal in getting me there (counseling also helped). 19 years old, lives with parents and works part-time jobs (mainly in Video Broadcasting). No, my parents had nothing to do in getting me those jobs.
Previously, seeing all these discussions about Runescape on the forum used to be very upsetting and I took it out on the Simba community the wrong way so I'm sorry for that. I'm not a botter nor am I a Runescape player, but I understand now that not everyone who plays/bots Runescape is an addict. In the end it's up to you what you do with your time. So far I've met so many nice people here. Thank you so much for that second chance and being a stepping stone for quitting my addiction.
Please show us one (or multiple) of your scripts.
program Lummyfire;
//{$Define SMART8}
{$I SRL/SRL.Simba}
{
Lumbridge Firemaker by Runehack123
Big thanks to the sexy The_Killer and luffs
for taking their time and looking at things when I just
didn't know the answer myself anymore.
Also, Bart, Kevin and many others on skype/IRC!
Thanks for all the help.
++INSTRUCTIONS++
++Fill in username/password/pin/worldinfo/breakinfo below
++Have logs ready in BankTab_2 and start near LumbridgeCastle banker
++Collapse any other tabs and have nothing else in tab 2 but your logs
++XP Pop-up ---> Turn it off
++Standard SRL graphics settings
++Waiting timer currently set for maple log burning speed (See function Waiting)
}
const
TakeBreaks = False; // ++Put False and ignore rest for no breaks
BreakIn = 540; // ++Next break in X minutes
BreakFor = 15; // ++Break for X minutes
Bir = 19; // ++Adds/Subtracts random minutes from time until break
Bfr = 7; // ++Adds/Subtracts random minutes for the break duration
Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Pin := '';
Players[0].WorldInfo := []
Players[0].Active := True;
End;
//GLOBAL VARIABLES AND CONSTANTS
var
NoBurn, LogLoad, InitialXP: Integer;
W,A,B,C,RealBTime,CurrentBTime,BreakRounds,TotalBreaks: Integer;
LogDTM: Integer;
const
Debug = True; //Set True for debug
Version = '2.1';
//Credits to Echo_ for breakhandler
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
H,M,S: Integer;
Begin
If Not LoggedIn Then
Exit;
If (HowManyPlayers = 1) Then
Begin
If (GetTimeRunning < ((W) + (B) + BreakRounds)) Then
Begin
Exit;
End
Else
If (GetTimeRunning > ((W) + (B) + BreakRounds)) Then
Begin
RealBTime := ((A+C)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
Repeat
Wait(21000);
ConvertTime((A+C)-TimeFromMark(CurrentBTime),H,M,S);
Writeln('Breaktime left: '+IntToStr(H)+':'+IntToStr(M)+':'+IntToStr(S));
Until(TimeFromMark(CurrentBTime)>(A+C));
Writeln('Logging in.');
LoginPlayer;
Wait(4000);
MarkTime(NoBurn);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (W) + (A));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
W := (BreakIn * 60000);
A := (BreakFor * 60000);
B := RandomRange(-BIR * 60000, BIR * 60000);
C := RandomRange(-BFR * 60000, BFR * 60000);
End;
End;
End;
//Credits to Benland100 and Flight for mouse movements modified by Ashaman88
Procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
Var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
lastX,lastY,MSP,W: integer;
sqrt2,sqrt3,sqrt5: extended;
Begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
While hypot(xs - xe, ys - ye) > 1 Do
Begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
If dist >= targetArea Then
Begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
End Else
Begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
If (maxStep < 3) Then
Begin
maxStep:= random(3) + 3.0;
End Else
Begin
maxStep:= maxStep / sqrt5;
End;
End;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
Begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
End;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
Case Random(50) Of
1..25: W := (MSP + (Random((MSP/4))));
26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
End;
If (W < 1) Then
W := 1;
If (lastX <> Round(xs)) Or (lastY <> Round(ys)) Then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
//W := round((maxWait - minWait) * (step / maxStep) + minWait);
wait(W);
lastdist:= dist;
end;
If (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) Then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
End;
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
Var
randSpeed: extended;
X,Y,X2,Y2,j,Dist,MP: integer;
Begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
If MP < 0 Then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(j*MP), eX+(j*MP));
Y2 := RandomRange(eY-(j*MP), eY+(j*MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
End;
//By Shay/Sin
Function WaitInvCountDec(Time:Integer):Boolean;
Var
Inv1,Inv2,T:Integer;
Begin
If Not(LoggedIn) Or (InvEmpty) Then
Begin
Result:=False;
Exit;
End;
MarkTime(T);
Inv1 := InvCount;
Repeat
Wait(20);
Inv2 := InvCount;
If TimeFromMark(T) > Time Then
Begin
Result := False;
Exit;
End;
Until (Inv2 < Inv1) Or InvEmpty;
Result := True;
End;
//Credits and Thank you go to i luffs yeww for 100% support on IRC for this... :)
Function FindLummyBanker: Boolean;
{GetMMDotsOnMS returns a TPA of the Minimap dots*red,yellow etc..* that,
if you were to use MMToMS on them,
would actually be visible on the main screen}
Var
DotTPA: TPointArray;
i, H, q, w: Integer;
NPCPoint: TPoint;
Begin
If (BankScreen) Or (PinScreen) Then
Exit;
Result := False;
DotTPA := GetMMDotsOnMS('npc'); //Stores results of GetMMDotsOnMS in DotTPA
If (Length(DotTPA) < 1) Then
Begin
If Debug Then
Writeln('FindLummyBanker - No yellow dots found on MM.');
Exit;
End;
H := High(DotTPA);
For i := 0 To H Do
Begin
NPCPoint := MMtoMS(DotTPA[i]); //Pass all points of DotTPA to MMtoMS
Begin
If NPCPoint.y <= 310 Then
HumanMMouse(NPCPoint.x, NPCPoint.y, 3, 3); //Moves mouse to all the NPCPoint values
End
If WaitUpTextMulti(['alk','to Ban','anker'],2000) Then //If get NPC name
Begin
ClickMouse2(False);
Wait(RandomRange(200, 300));
ChooseOptionMulti(['ank B','k Ban']);
Wait(RandomRange(700, 1000));
If (FindFlag(q, w)) Or (FindFlag2(q, w)) Then
Begin
If Debug Then
Writeln('Clicked on Bank Banker option.');
Result := True; //Found and clicked
Break;
End;
End;
End;
SetLength(DotTPA, 0);
Exit;
End;
Function FindFloorLogs: Boolean;
Var
ItemBox: TBox;
LogColours, RDots: TPointArray;
ATPA: T2DPointArray;
i, H, CTS, count: Integer;
MSItem, ItemPoint: TPoint;
Begin
Result := False;
RDots := GetMMDotsOnMS('red');
If Length(RDots)<1 Then
Exit;
If Debug Then
Begin
count := Length(RDots);
WriteLn(IntToStr(count) + ' = Number of red dots on the minimap');
End;
H := High(RDots);
For i := 0 To H Do
Begin
ItemPoint := MMtoMS(RDots[i]); //Pass all points of RDots to MMtoMS and assign to TPoints
If (ItemPoint.x = -1) And (ItemPoint.y = -1) Then
Continue;
If Debug Then
Writeln('MMtoMS RedDot x: '+IntToStr(ItemPoint.x)+', MMtoMS RedDot y:'+IntToStr(ItemPoint.y));
MMouse(ItemPoint.x,ItemPoint.y,0,0);
With ItemPoint Do
ItemBox := IntToBox(Max(X - 20, MSX1), Max(Y - 20, MSY1), Min(X + 40, MSX2), Min(Y + 40, MSY2)); //Create TBox around item
End;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.23, 0.70);
FindColorsSpiralTolerance(MSCX, MSCY, LogColours, 2967378, ItemBox.X1, ItemBox.Y1, ItemBox.X2, ItemBox.Y2, 30);
SetColorSpeed2Modifiers(0.2, 0.2);
ColorToleranceSpeed(CTS);
ATPA := TPAtoATPAEx(LogColours, 10, 7);
SortATPASize(ATPA, True);
If (Length(LogColours) < 1) Then
Begin
If Debug Then
Writeln('Logs on floor colours not found.');
Exit;
End;
H := High(ATPA);
for i := 0 to H do
Begin
MSItem := MiddleTPA(ATPA[i]);
If Debug Then
Writeln('Log x:'+IntToStr(MSItem.x)+' ,Log y:'+IntToStr(MSItem.y));
HumanMMouse(MSItem.X, MSItem.Y, 2, 2);
If WaitUpTextMulti(['ke Lo','Logs','ake L','Take'], RandomRange(2000,2500)) Then
Begin
Result := True;
Break;
End;
If WaitUpTextMulti(['alk','limb'], RandomRange(2000,2500)) Then
Break;
End;
SetLength(ATPA,0);
SetLength(LogColours,0);
End;
Function LightFire: Boolean;
var
x, y: Integer;
Begin
Result:=False;
ClickMouse2(False);
If Not(OptionsExist(['Use','se Fi'],False)) Then
Begin
If ChooseOptionMulti(['ight L','t Log','Light']) Then
Begin
If Debug Then
Writeln('Found ChooseOption light logs');
Wait(RandomRange(3300,4500));
If FindDTM(LogDTM, x, y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(x, y, 3, 3);
ClickMouse2(True);
Wait(RandomRange(100,200));
HumanMMouse(359, 182, 5, 5);
If WaitUpTextMulti(['ect','Sele'], 5000) Then
Begin
ClickMouse2(True);
Wait(RandomRange(200,300));
If WaitUpTextMulti(['ect','Sele'], 5000) Then
ClickMouse2(True);
If WaitInvCountDec(RandomRange(2000,3000)) Then
Result:=True;
Exit;
End;
End
Else
Exit;
End;
End
Else
Begin
If ChooseOptionMulti(['Use','se Fi']) Then
Begin
HumanMMouse(309, 183, 5, 5);
If WaitUpTextMulti(['ect','Sele'], 5000) Then
Begin
ClickMouse2(True);
Wait(RandomRange(200,300));
If WaitUpTextMulti(['ect','Sele'], 5000) Then
ClickMouse2(True);
If WaitInvCountDec(RandomRange(2000,3000)) Then
Result:=True;
Exit;
End;
End;
End;
End;
Function LogsExist: Boolean;
var
x, y, T: Integer;
Begin
Result := False;
MarkTime(T);
repeat
If FindDTM(LogDTM, x, y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Result := True;
Exit;
End;
Wait(20);
until TimeFromMark(T)<1000
End;
Procedure AntiBan;
Var
I: Integer;
Begin
I := Random(232);
Case I Of
1..5:
Begin
HoverSkill('Firemaking', False);
GameTab(Tab_Inv);
End;
6..63:
Begin
SleepAndMoveMouse(RandomRange(400,500));
End;
64..200:
Begin
Wait(RandomRange(1000, 2000));
End;
201..205:
Begin
RandomRClick;
End;
206..210:
Begin
PickUpMouse;
End;
211..215:
Begin
RandomTab(True);
End;
216..220:
Begin
HoverMovingObject;
End;
221..230:
Begin
SmallRandomMouse;
End;
231..233:
Begin
HoverSkill('Random',False);
GameTab(Tab_Inv);
End;
End;
End;
Function Waiting: Boolean;
var
P: Integer;
Begin
If Not(LoggedIn) Or InvEmpty Or Not(LogsExist) Then
Exit;
Begin
MarkTime(P);
While WaitInvCountDec(RandomRange(4000,4400)) And (TimeFromMark(P)<120000) Do
Begin
Result:=True;
If FindSpinTicket Then
Break;
Antiban;
Wait(RandomRange(600,700));
End;
End;
Begin
Result := False;
If Debug Then
Writeln('Waiting is returning false');
End;
End;
Function BurnEmAll: Boolean;
var
x, y, T: Integer;
Begin
If (Waiting) Or Not(LoggedIn) Or (InvCount<1) Or (Not(LogsExist)) Then
Exit;
Result := False;
MarkTime(T);
repeat
Wait(RandomRange(50,100));
If FindFloorLogs Then
Begin
If LightFire Then
Begin
Result := True;
If Debug Then
Writeln('1We are now burning logs!');
Exit;
End;
End;
until TimeFromMark(T) > RandomRange(2200,2500)
If TimeFromMark(T) > (RandomRange(2500,3000)) Then
Begin
If FindDTM(LogDTM, x, y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(x, y, 3, 3);
ClickMouse2(True);
Wait(RandomRange(100,200));
HumanMMouse(359, 182, 5, 5);
If WaitUpTextMulti(['ect','Sele'], 5000) Then
ClickMouse2(True);
Begin;
If WaitInvCountDec(RandomRange(4000,5000)) Then
Begin
Result := True;
If Debug Then
Writeln('2We are now burning logs!');
Exit;
End
Else
Begin
If FindDTM(LogDTM, x, y, MIX1, MIY1, MIX2, MIY2) Then
Begin
Mouse(x, y, 3, 3, False);
ChooseOption('ight');
Wait(RandomRange(1800,2500));
If FindDTM(LogDTM, x, y, MIX1, MIY1, MIX2, MIY2) Then
Begin
HumanMMouse(x, y, 3, 3);
ClickMouse2(True);
Wait(RandomRange(100,200));
HumanMMouse(359, 182, 5, 5);
End;
If WaitUpTextMulti(['ect','Sele'], 5000) Then
Begin
ClickMouse2(True);
If WaitInvCountDec(RandomRange(2000,3000)) Then
Begin
Result := True;
If Debug Then
Writeln('3We are now burning logs!');
Exit;
End;
End;
End;
End;
End;
End
Else
Exit;
End;
End;
Procedure SetAllDTM;
Begin
LogDTM := DTMFromString('mggAAAHicY2NgYGhhYmAoAeJ6IO4B4kogngzE0xkheDEQdwFxHxDPBmJPMwWgLiYM/J8BO2DEgSEAABmtCFo=');
End;
Procedure FreeAllDTM;
Begin
If DTMExists(LogDTM) Then
FreeDTM(LogDTM);
End;
Function AtLogLocation: Boolean;
var
NPCBanker: TPointArray;
BankerPoint, LogPoint, MapPoint: TPoint;
H, i: Integer;
Begin
If Not(LoggedIn) Then
Exit;
Result := False;
NPCBanker := GetMMDotsOnMS('y');
If (Length(NPCBanker) < 1) Then
Begin
If Debug Then
Writeln('AtLogLocation - Banker YDot not found on MM.');
Exit;
End;
Begin
SortTPAFrom(NPCBanker, Point(MMCX, MMCY));
H := High(NPCBanker);
For i := 0 To H Do
BankerPoint := (NPCBanker[i]);
If (BankScreen) Then
Begin
HumanMMouse((BankerPoint.x - 7),(BankerPoint.y - 11),2,2);
ClickMouse2(True);
If FFlag(2) Then
Begin
Result := True;
Exit;
End;
End
Else
Begin
MapPoint.x := (BankerPoint.x - 7);
MapPoint.y := (BankerPoint.y - 7);
LogPoint := MMtoMS(MapPoint);
HumanMMouse(LogPoint.x, LogPoint.y, 3, 2);
ClickMouse2(True);
If FFlag(2) Then
Begin
Result := True;
Exit;
End;
End;
SetLength(NPCBanker,0);
End;
End;
Function SearchingBanker: Boolean; //Opens bank via NPC. If fails moves position through MM and retries
Var
I, H, q, w, a, b: Integer;
YPoint: Tpoint;
YdotTPA: TPointArray;
Begin
Result := True; //Is looking for banker
If FindLummyBanker Then
Begin
Result := False;
Exit;
End
Else
YdotTPA := GetMiniMapDots('y');
If (Length(YdotTPA) < 1) Then
Begin
If Debug Then
Writeln('SearchingBanker - YDots not found on MM.');
Exit;
End;
H := High(YdotTPA);
For I := 0 To H Do
YPoint := YdotTPA[i];
HumanMMouse(YPoint.x, YPoint.y, 3, 3);
ClickMouse2(True);
Wait(1000);
If (FindFlag(q, w)) Or (FindFlag2(q, w)) Then
Begin
Wait(3000 + Random(1000));
SetLength(YdotTPA, 0)
If FindLummyBanker Then
Begin
GetMousePos(a, b);
HumanMMouse(a, b, 2, 2);
Mouse(a, b, 0, 0, False);
Wait(RandomRange(300, 600));
ChooseOptionMulti(['ank B','k Ban']);
Wait(RandomRange(700, 1000));
Result := False; ////Found and clicked banker
End;
End;
SetLength(YdotTPA, 0);
End;
Procedure Banking;
Var
x, y, T, MaxT: Integer;
Begin
If Not(LoggedIn) Then
Exit;
MaxT := RandomRange(7000, 10000);
T := GetSystemTime + MaxT;
While (SearchingBanker) And (GetSystemTime < T) And (Not (BankScreen)) And (Not (PinScreen)) Do
Begin
If (BankScreen) or (PinScreen) Then
Begin
If Debug Then
Writeln('1 - Bank interface is open.');
If PinScreen Then
Begin
InPin(Players[CurrentPlayer].Pin);
Wait(RandomRange(600,700));
End;
Exit;
End;
Wait(RandomRange(200, 400));
End;
If (GetSystemTime > T) And (Not (BankScreen)) And (Not (PinScreen)) Then
Begin
If FindSymbol(x, y,'bank') Then
Begin
HumanMMouse(x, y, 3, 3);
ClickMouse2(True);
If (FFlag(0)) Then
Wait(RandomRange(300, 400));
OpenBankFast('lb');
If (BankScreen) or (PinScreen) Then
Begin
If Debug Then
Writeln('2 - Bank interface is now open.');
Exit;
End;
End
Else
Begin
Writeln('FATAL ERROR: Can not find bank icon or banker on minimap!');
Logout;
TerminateScript;
End;
End;
End;
function WaitExistsBankTab: Boolean;
var
T: Integer;
Begin
Result := False;
MarkTime(T)
repeat
Wait(RandomRange(20,100));
If ExistsBankTab(2) Then
Begin
Result := True;
Exit;
End;
until TimeFromMark(T) > 4000
End;
procedure Withdrawlogs;
var
I: Integer;
Begin
If Not(LoggedIn) Then
Exit;
If WaitFunc(@BankScreen, 100, 20000) Or WaitFunc(@PinScreen, 100, 20000) Then
Begin
If PinScreen Then
InPin(Players[CurrentPlayer].Pin);
If InvCount > 0 Then
DepositAll;
Begin
If WaitExistsBankTab Then
Begin
If BankTab(2) Then
Begin
WithdrawEx(0, 0, 0, []);
Wait(RandomRange(50,100));
I := Random(20);
Case I Of
1..8:
Begin
CloseBank;
Exit;
End;
9..20:
Exit;
End;
End;
End
Else
Begin
Writeln('Banktab 2 not found. Terminating');
Logout;
TerminateScript();
End;
End;
End;
End;
Procedure ProgressInfo;
var
Totalxp, XPhour, LogsHour: Integer;
Begin
If Not(LoggedIn) Then
Exit;
MarkTime(NoBurn);
ClearDebug;
Totalxp := (GetXPBarTotal - InitialXP);
XPhour := Round((Totalxp)/(GetTimeRunning/3600000.0));
LogsHour := Round((LogLoad*28)/(GetTimeRunning/3600000.0));
Writeln('*****************************************************************************');
Writeln('Lumbridge Firemaker v'+Version+' by Runehack123');
Writeln('*****************************************************************************');
Writeln('Time Running: ' + TimeRunning);
Writeln('Est. Logs Total: ' + IntToStr(LogLoad*28));
Writeln('Est. Total Experience: ' + IntToStr(Totalxp));
Writeln('Est. Experience/Hour: ' + IntToStr(XPhour));
Writeln('Est. Logs/Hour: ' + IntToStr(LogsHour));
Writeln('*****************************************************************************');
End;
Procedure FixSettings;
Begin
ExitSquealOfFortune;
ClickNorth(SRL_ANGLE_HIGH);
ToggleXPBar(True);
ToggleActionBar(False);
SetAllChats('filter','off','off','off','off','off','off');
End;
Procedure SetUp;
Begin
{$IFDEF SMART8}
SMART_FIXSPEED := True;
SRL_SixHourFix:= True;
{$ENDIF}
SetupSRL;
Wait(2000);
AddOnTerminate('FreeAllDTM')
SetAllDTM;
W := (BreakIn * 60000);
A := (BreakFor * 60000);
B := RandomRange(-BIR * 60000, BIR * 60000);
C := RandomRange(-BFR * 60000, BFR * 60000);
Wait(RandomRange(5000,6000));
ClearDebug;
DeclarePlayers;
LoginPlayer;
Wait(RandomRange(2000,4000));
ToggleXPBar(True);
InitialXP := GetXPBarTotal;
FixSettings;
MarkTime(NoBurn);
End;
Procedure MainLoop;
var
B: Integer;
Begin
repeat
If Not(LoggedIn) Then
Begin
repeat
LogInPlayer;
Wait(RandomRange(2000,4000));
until LoggedIn
End;
If (TimeFromMark(NoBurn) > 300000) Then
Begin
LoginPlayer;
Wait(RandomRange(2000,3000));
FixSettings;
End;
If AtLogLocation Then
Begin
MarkTime(B);
While (BurnEmAll) And (LogsExist) And (TimeFromMark(B)<160000) Do
Begin
If Debug Then
Writeln('Starting to burn logs');
While Waiting And Not(InvEmpty) And LogsExist And LoggedIn Do
Begin
Wait(RandomRange(500,600));
End;
If Debug Then
Writeln('Stopped burning logs');
End;
MarkTime(B);
While (TimeFromMark(B) < (RandomRange(14000, 17000))) And (InvCount<10) Do
Begin
Banking;
Wait(RandomRange(100,300));
WithdrawLogs;
Wait(RandomRange(300,400));
End;
End;
Inc(LogLoad);
ProgressInfo;
If TakeBreaks Then
BreakHandler(BreakIn,BreakFor,Bir,Bfr);
until TimeFromMark(NoBurn) > 520000;
Writeln('Nothing happened since NoBurn - Logging out');
Logout;
TerminateScript();
End;
Begin
SetUp;
Mainloop;
End.