Double posting.. but I redid the walking. got it going:
{/////////////////////////////////////////
// ~Catacomber by Flight~ //
// //
// Version: 1.0 //
/////////////////////////////////////////}
program Catacomber;
{$define SMART}
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/magic.scar}
{$i SRL/SRL/Misc/stats.simba}
{$i Reflection/Reflection.simba}
{$i SRL/SRL/misc/paintsmart.scar}
//////////////////////////////-Begin setup-/////////////////////////////////////
Const
//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';
//Script settings
FightRegion = 10;
ChangeWorlds = True;
Member = True;
//Break settings
BreakIn = 135; //How long before we take a break? (minutes)
BreakFor = 13; //How long will we break for? (minutes)
Bir = 12; //Random minutes to add/subtract from how long until we break
Bfr = 7; //Random minutes to add/subjtract from break duraction
//////////////////////////////-End of setup-////////////////////////////////////
Var
BreakImg: TMufasaBitmap;
targetName,Version: String;
lastFightTime: Integer;
lastInteractedTile,Stairs1_Down,Stairs2_Down,
Stairs_Enter,RTile: TTile;
Deaths,CommitTime,ScreenTime,NewImg: Integer;
//Break variables
BreakRounds,TotalBreaks: Integer;
//Exp variables
AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
RngXP_Start,RngXP_Old,RngXP_New: Integer;
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
BoxRewards := ['XP','xp','lamp'];
LampSkill := 'hitpoints';
Active := True;
end;
end;
Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
mrYes:
begin
OpenWebPage('http://stats.villavu.com/register');
TerminateScript;
end;
mrNo:
begin
SetupSRLStats(165,'Anonymous','anon1337');
Exit;
end;
mrCancel: TerminateScript;
end;
end else
SetupSRLStats(165,SRLStats_Username,SRLStats_Password);
end;
type
TArea = record
Region: TBox;
DAnim: TIntegerArray;
targetName: String;
RTile: TTile;
fightArea: Boolean;
end;
TAreaArray = array of TArea;
var
currentArea: TArea;
Areas: TAreaArray;
Procedure DefineAreas;
Var
Zone: Integer;
begin
Zone := FightRegion;
setLength(Areas, 15);
// lumbridge:
with Areas[0] do
begin
Region := IntToBox(3217,3210,3226,3228);
fightArea := False;
end;
// grave:
with Areas[1] do
begin
Region := intToBox(3238, 3191, 3251, 3203);
fightArea := False;
end;
// room 1:
with Areas[2] do
begin
Region := intToBox(3875,5526,3879,5529);
fightArea := False;
end;
with Areas[3] do
begin
Region := intToBox(3863,5522,3869,5526);
fightArea := False;
end;
with Areas[4] do
begin
Region := intToBox(3970,5560,3974,5565);
fightArea := False;
end;
// region 1:
with Areas[5] do
begin
DAnim := [8878, 8878];
targetName := 'Warped cockroach';
RTile := Point(3972,5553);
Region := intToBox(3969,5550,3977,5557);
fightArea := True;
end;
with Areas[6] do
begin
DAnim := [12896,12896]
targetName := 'Corpse Spider';
RTile := Point(3986,5553);
Region := intToBox(3978, 5550, 3994, 5556);
fightArea := True;
end;
with Areas[7] do
begin
DAnim := [7244, 7244];
targetName := 'Warped fly';
RTile := Point(3995,5543);
Region.X1 := 3987;
Region.Y1 := 5539;
Region.X2 := 4003;
Region.Y2 := 5547;
fightArea := True;
end;
with Areas[8] do
begin
DAnim := [12893, 12893];
targetName := 'Crawling corpse torso';
RTile := Point(4010,5544);
Region.X1 := 4004;
Region.Y1 := 5542;
Region.X2 := 4015;
Region.Y2 := 5546;
fightArea := True;
end;
with Areas[9] do
begin
DAnim := [14860, 14860];
targetName := 'Warped rat';
RTile := Point(4023,5544);
Region.X1 := 4016;
Region.Y1 := 5538;
Region.X2 := 4029;
Region.Y2 := 5548;
fightArea := True;
end;
with Areas[10] do
begin
DAnim := [12869, 12870];
targetName := 'Skeleton';
RTile := Point(4024,5530);
Region.X1 := 4019;
Region.Y1 := 5523;
Region.X2 := 4028;
Region.Y2 := 5537;
fightArea := True;
end;
with Areas[11] do
begin
DAnim := [4917, 4917];
targetName := 'Warped bat';
RTile := Point(4020,5515);
Region.X1 := 4011;
Region.Y1 := 5504;
Region.X2 := 4027;
Region.Y2 := 5520;
fightArea := True;
end;
with Areas[12] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse archer';
RTile := Point(4017,5496);
Region.X1 := 4009;
Region.Y1 := 5489;
Region.X2 := 4021;
Region.Y2 := 5502;
fightArea := True;
end;
with Areas[13] do
begin
DAnim := [6182, 6282];
targetName := 'Skoblin';
RTile := Point(4000,5495);
Region.X1 := 3992;
Region.Y1 := 5492;
Region.X2 := 4009;
Region.Y2 := 5499;
fightArea := True;
end;
with Areas[14] do
begin
DAnim := [12869, 12870];
targetName := 'Corpse mage';
RTile := Point(3995,5481);
Region.X1 := 3988;
Region.Y1 := 5475;
Region.X2 := 4002;
Region.Y2 := 5489;
fightArea := True;
end;
currentArea := Areas[zone+4];
end;
{Skeleton by Brak, re-written with bitmaps, yay!}
Procedure TurnAidOff;
Var
x,y,BMP: Integer;
begin
BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7+Ri+' +
'9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
setbitmapname(BMP,'AidButton'); //Don't laugh
if TabExists(tab_Options) then
if GameTab(tab_Options) then
begin
if FindBitmapIn(BMP,x,y,570,410,605,450) then
begin
MMouse(x,y,5,5);
Wait(Random(100));
if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,True);
Wait(RandomRange(150,250));
Exit;
end;
end;
end;
Gametab(tab_Inv);
FreeBitmap(BMP);
end;
Procedure LoadVars;
Var
tempPic: TMufasaBitmap;
begin
Retaliate(True);
TurnAidOff;
Version := '1.0';
MarkTime(CommitTime);
MarkTime(ScreenTime);
MouseSpeed := RandomRange(17,20);
AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Start := R_GetSkillExp(SKILL_RANGE);
AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_Old := R_GetSkillExp(SKILL_RANGE);
Stairs_Enter := Point(3248,3198);
Stairs1_Down := Point(3874,5527);
Stairs2_Down := Point(3867,5524);
DefineAreas;
NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
'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' +
'19LSjL4WKie3+XHFTQvMzslJx96erKujYGVBAEilpTf20DdIWUVpZ' +
'LR3cOhJwAU7IHRktCsvL/P9cTMgFJxUl7JhSD9ZuRMqIiPNIyPDAx' +
'Gvu5sRK8tBAoEhM4WOTSaTUlJu5eTeSk0Nb2spe/y41MCA8vY2kPG' +
'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi18zM' +
'69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WXWZmx' +
'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCXzM27' +
'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ4GXH' +
'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom8uEM' +
'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtPCzUz' +
'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0krXzl' +
'731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL5vzy' +
'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
'37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
'7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
'8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
'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' +
'3wWJk5OX4rMzwoyNPIPmqrS15fxuUiqSsNJepEWpooBUCv6pHBW/+' +
'tGPHDikJbgtzQlJqeMadqMzMqMyMlf+mpkempEWkpV9JSYtMTAqLS' +
'wiNjb0cGubr7eNiamZAJ1lbS/BF0tIiFB1UatrV5KTYLS7gA0mxoB' +
'Avkajk4EDx9jIPD3NPSAzOyorOK7gNTNXXFzQ0luTmJlnbmG3iXfO' +
'QxSgryxro486eNQsJcUlJCS0qSayty2tvr+jqqEpOvo7FoXau8S4M' +
'+jp85BCZjEpODr9x4yrjhggWTySqXLjgWFCQ5uzs+EHeynfgwI8UC' +
'sHOlhIRcaa7pwo4jYujfdn89ttvtbXQGRk3zMxO/iMmu9IXHIKoqK' +
'CeHuGctxXERYkJl/LzYsvLkh89ygRIOzsednU9KinJsLe3PHyYobF' +
'Nbm4OElE++qpXSXFazLUQmtcKLi52Al46IsytID8x6mqQAD+NITJO' +
'TjYsWiI40Ole7u0rkYH8tLb5h2rHjs9ZWJgkJEVQaAUNEk6diFVBK' +
'YqKCa/1BocN6cCB/fCDKiohSJoEEokA+eAeuuOx/zgdPPSTvLyMtg' +
'5RW5v0Qc7YP0jgGmxszDIy4ni8iraOuiZZDYNRFpcQYWRhq79G/w+' +
'LKQil');
//Procedures taken from Iamadam's StrongHolder
tempPic := GetMufasaBitmap(NewImg);
BreakImg := TMufasaBitmap.create;
BreakImg.SetSize(tempPic.Width, tempPic.Height);
tempPic.FastDrawTransparent(0, 0, BreakImg);
end;
//Procedures taken from Iamadam's StrongHolder
Procedure BreakScreen;
Var
Canvas: TCanvas;
begin
Wait(500);
try
SmartSetDebug(True);
Canvas := TCanvas.Create;
Canvas.Handle := SmartGetDebugDC;
ClearRSCanvas(Canvas);
BreakImg.DrawToCanvas(235,200,Canvas);
except
writeln('error...');
end;
end;
Procedure Report;
Var
ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
begin
ClearDebug;
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpC := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;
WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
WriteLn('Time Running: '+TimeRunning);
WriteLn('Attack XP: '+IntToStr(ExpA));
WriteLn('Strength XP: '+IntToStr(ExpS));
WriteLn('Defence XP: '+IntToStr(ExpD));
WriteLn('Constitution XP: '+IntToStr(ExpC));
WriteLn('Ranged XP: '+IntToStr(ExpR));
WriteLn('Deaths: '+IntToStr(Deaths));
//WriteLn('Breaks: '+IntToStr(TotalBreaks));
WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
end;
Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;
Procedure OnScreen;
Var
ExpA,ExpS,ExpD,
ExpH,ExpR,XPH_A,XPH_S,
XPH_D,XPH_H,XPH_R: Integer;
begin
ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;
XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));
PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);
MarkTime(ScreenTime);
end;
Procedure Commit;
begin
AttXp_New := R_GetSkillExp(SKILL_ATTACK);
StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
RngXp_New := R_GetSkillExp(SKILL_RANGE);
stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
Stats_Commit;
AttXp_Old := AttXp_New;
StrXp_Old := StrXp_New;
DefXp_Old := DefXp_New;
HitXp_Old := HitXp_New;
RngXp_Old := RngXp_New;
Report;
MarkTime(CommitTime);
end;
Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Boolean);
Begin
AddOnTerminate('Report');
Smart_Server := World;
Smart_Members := Member;
Smart_Signed := Signed;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
CheckStats;
R_UpdateHooks;
if Clear then
ClearDebug;
LogInPlayer;
if SetCam then
SetAngle(true);
LoadVars;
OnScreen;
End;
Procedure humanWait(time : Integer);
begin
wait(time + random(time) + random(random(time)));
end;
Function DeathScreen: Boolean;
begin
Result := R_ValidInterface(18);
end;
Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
var
InterfaceID, X, Y: Integer;
Item: TInterfaceComponent;
begin
Result := False;
InterfaceID := R_GetInventoryInterfaceIndex;
if InterfaceID = NULL_INT then
begin
R_Debug('The Inventory interface doesn''t exist!', '');
Exit;
end;
if InterfaceID = INTERFACE_INVENTORY then
begin
R_GameTab(RTAB_INVENTORY);
end;
Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
if(Item.ID <= 0)then
Exit;
R_ClickInterface(Item, 3);
GetMousePos(X, Y);
wait(125+Random(55));
if(IsUpText(Action1) Or IsUpText(Action2))then
begin
Mouse(X, Y, 0, 0, True);
Result := True;
end;
end;
Function R_WindWalk_F(T: TTile): Boolean;
Var
I, Tries: Integer;
M, P: TPoint;
CTRLPoints: TPointArray;
begin
P := T;
repeat
M := R_GetMyPos;
CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
Inc(Tries);
if(Tries > 20)then
begin
R_Debug('Failed more than 20 times', 'R_WindWalk');
R_FindRandoms;
if Cast('lumbridge home teleport', False) then
Wait(RandomRange(9500,1175));
Exit;
end;
for I:= High(CtrlPoints) downto 0 do
if R_WalkToTile(CtrlPoints[i],0, 10) then
begin
Result := I = High(CtrlPoints);
Break;
end;
until(Result);
end;
Function inArea(Area : TBox) : boolean;
begin
result := PointInBox(R_GetMyPos, Area);
end;
function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
var
tilePoint : TPoint;
begin
result := False;
tilePoint := R_tileToMs(location, height);
MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
wait(100);
if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
begin
ClickMouse2(True);
if DidRedClick then
result := True
else
result := False;
end else if(isUpText('options')) then
begin
clickMouse2(False);
if ChooseOptionMulti(action) then
result := True;
end;
end;
Procedure Fight;
Var
inFightWith : TNPC;
npcs : TNPCArray;
index : Integer;
begin
if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
begin
lastInteractedTile := inFightWith.tile;
humanWait(1000);
exit;
end;
npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
if(GetArrayLength(npcs) = 0) then
begin
humanwait(500);
Exit;
end;
for index := 0 to high(npcs) do
begin
if((npcs[index].Interacting = -1)
and not((npcs[index].Tile = lastInteractedTile))
and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
begin
lastInteractedTile := npcs[index].tile;
if(not R_tileOnMS(npcs[index].Tile, 0)) then
exit;
if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
begin
case (Random(4)) of
1: MakeCompass('Random');
end;
lastFightTime := GetSystemTime;
humanWait(2000);
end;
break;
end;
end;
end;
Function AreaCheck(Where: String): Boolean;
begin
Result := False;
Case LowerCase(Where) of
'castle' : Result := inArea(Areas[0].region);
'grave' : Result := inArea(Areas[1].region);
'room1' : Result := inArea(Areas[2].region);
'room2' : Result := inArea(Areas[3].region);
'room3' : Result := inArea(Areas[4].region);
'region' : Result := inArea(currentArea.region);
end;
end;
// nava2
function FindTileOnPath(var Index: integer; Path: TTileArray; P: TTile; MaxDist: Integer): Boolean;
var {Find the closest tile in a path within MaxDist}
I, H, DistC, DistS, T: integer;
begin
T := GetTimeRunning;
H := High(Path);
Index := -1;
if (H < 0) then Exit;
DistS := Distance(P.x, P.y, Path[0].x, Path[0].y); //Distance from Current Tile
for I := 0 to H do //Looks for the Closest Tile
begin
DistC := Distance(P.x, P.y, Path[I].x, Path[I].y);
if DistC <= DistS then
begin
DistS := DistC;
Index := I;
end;
end;
Result := DistS <= MaxDist;
if not Result then Index := -1;
WriteLn('FindTileOnPath: Index = ' + IntToStr(Index) + ' Time: ' + IntToStr(GetTimeRunning - T) + ' ms');
end;
// nava2
function WalkToRoom(zone: Integer): Boolean;
var
i, t: Integer;
p: TTileArray;
begin
setLength(p, zone);
for i := 1 to zone do
p[i-1] := Areas[4+i].RTile;
writeln('path: ' + toStr(p));
writeln('Area tile: ' + toStr(currentArea.RTile));
FindTileOnPath(t, p, R_getMyPos, 7);
for i := t+1 to zone-1 do
if (not R_WindWalk_F(p[i])) then
break;
result := AreaCheck('region');
end;
Procedure ToLocation(Where: String);
Var
T1,T2,T3,T4: Integer;
begin
RunEnergy(50);
Case LowerCase(Where) of
'grave':
begin
R_WindWalk_F(Point(3246,3198));
Wait(RandomRange(1215,1325));
While R_Moving do
Wait(1);
end;
'room1':
begin
if(Not R_TileOnMS(Stairs_Enter,100)) then
begin
R_WalkToTile(Point(3246,3198),1,1);
SetAngle(True);
While R_Moving do
Wait(1);
end;
if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T1);
repeat
if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
Exit;
until (False)
end;
end;
'room2':
begin
if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T2);
repeat
if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
Exit;
until (False)
end;
end;
'room3':
begin
if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
begin
Wait(RandomRange(355,525));
While R_Moving do
Wait(1);
MarkTime(T3);
repeat
if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
Exit;
until (False)
end;
end;
'region':
begin
WalkToRoom(FightRegion);
Wait(RandomRange(355,525));
while R_Moving do
Wait(16);
MarkTime(T4);
repeat
if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
Exit;
until (False);
end;
end;
end;
Procedure CheckScreen;
Var
T,I: Integer;
S: TInterfaceChild;
Items,Items2: TInvItemArray;
begin
if DeathScreen then
begin
Inc(Deaths);
MarkTime(T);
Repeat
if(TimeFromMark(T) > 5000)then
Break;
S := R_GetInterfaceChild(18, 36);
R_ClickInterface(S, 1);
if Not DeathScreen then
Break;
Until(False)
end;
Wait(RandomRange(4375,5350));
Gametab(tab_Inv);
Wait(RandomRange(575,780));
if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items) then
begin
if(GetArrayLength(Items) = 0) then
begin
humanwait(500);
Exit;
end;
For I := 0 to high(Items) do
begin
R_ClickItem_F(Items[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;
Wait(RandomRange(575,780));
if R_ItemExistsEx([
'scimitar','blade','sling','Sling','shortbow',
'helm','platebody','kiteshield','defender','hide',
'Amulet of','bracelet'],Items2) then
begin
if(GetArrayLength(Items2) = 0) then
begin
humanwait(500);
Exit;
end;
For I := 0 to high(Items2) do
begin
R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
Wait(RandomRange(1150,1350));
end;
end;
SetAngle(True);
ToLocation('Grave');
end;
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
w,x,y,z,h,m,s,
RealBTime,
CurrentBTime: integer;
NPC: TNPC;
begin
if not LoggedIn then Exit;
w := (BreakIn * 60000);
x := (BreakFor * 60000);
y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);
if (HowManyPlayers = 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
if R_AreWeInteracting(NPC, False) then
Wait(RandomRange(4750,7535))
else
begin
Repeat
R_FindRandoms;
Logout;
Wait(RandomRange(435,675));
if Not LoggedIn then
break;
Until(False)
BreakScreen;
RealBTime := ((x+z)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(x+z));
Writeln('Logging in.');
OnScreen;
if ChangeWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(Member, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
SetAngle(True);
R_FindRandoms;
IncEx(BreakRounds, (w) + (x));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
end;
end;
end;
end;
Function NoAmmo: Boolean;
begin
Result := FindBlackChatMessage('no ammo');
end;
Begin
ScriptSetup(86,True,True,True);
Repeat
if (TimeFromMark(CommitTime)>=30000) then
Commit;
if (TimeFromMark(ScreenTime)>=5000) then
OnScreen;
BreakHandler(BreakIn,BreakFor,Bir,Bfr);
if NoAmmo then
begin
Writeln('Ran out of ammo!');
Report;
Logout;
TerminateScript;
end;
if not LoggedIn then LoginPlayer;
if AreaCheck('Castle') then
begin
CheckScreen;
ToLocation('Grave');
end
else if AreaCheck('Grave') then
ToLocation('Room1')
else if AreaCheck('Room1') then
ToLocation('Room2')
else if AreaCheck('Room2') then
ToLocation('Room3')
else if AreaCheck('Room3') then
ToLocation('Region')
else if AreaCheck('Region') then
Fight
else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
And Not AreaCheck('Room1') And Not AreaCheck('Room2')
And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
begin
R_FindRandoms;
CheckScreen;
end;
Until(False);
End.