TsterT
2012-02-28 04:22:17
How Long have You Played Runescape?
1 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Java, VB,
Are you a member of any other communities?
Powerbot, EpicBot, couple others that I don't remember
Tell us about yourself…
Please show us one (or multiple) of your scripts.
Not the best script, but it shows a lot of what I know how to do, and everything a previous mod told me to work on.
Work with DTMs:
1 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Java, VB,
Are you a member of any other communities?
Powerbot, EpicBot, couple others that I don't remember
Tell us about yourself…
From: TsterT
I've taken an interest on programming at a young age. Around 9 or 10 I believe. I started playing around with Visual Basics then, mainly because it was so easy to pick up on the basics. At 11 or 12, I picked up on Java. My brother was getting his degree in Computer Science at the time, and he was learning Java. He showed me some of his work, and I was making my own Java programs before I knew it. At the moment, I am creating apps for the Android Market and loving it. I heard of Simba through a friend, although I don't know his username, like most others after the Bot Nuke. I'm one who if given the opportunity to code, will take it. Simba was perfect for me. I could create my own scripts for a game I enjoy playing. I am currently 15. I browse these forums on a regular bases, reading the Scripting Tutorials when there are no other interesting threads going on. Although enjoying Runescape, and creating scripts for Simba, I also enjoy playing League of Legends, obviously while I'm botting. On top of that, I am pretty outgoing I'd say. I play soccer, and have been since I was 5 or so. Soccer, programming, and gaming are really my 3 main interests. It's getting a bit long now, I think I'll stop :P
Please show us one (or multiple) of your scripts.
Not the best script, but it shows a lot of what I know how to do, and everything a previous mod told me to work on.
program new;
{$DEFINE SMART}
{$DEFINE CRASHSMART}
{$i srl/srl.simba}
{$i srl/srl/skill/fighting.simba}
{$i srl/srl/misc/paintsmart.simba}
Const
Version = '0.2 ';
scriptName = 'Fire Giant Safe Spotter ';
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name :=''; // Username
Pass :=''; // Password
Active := True;
Booleans[0] := True; //Use Ranging potions
Booleans[1] := False; //Pick items
Arrays[0] := ['une arrow', 'ragon stone', 'lood rune', 'ire rune', 'yew', 'rune scim', 'rune']; //upText to pick
end;
end;
Var
giantKilled, xpEnd, xpStart, boneColor, RangeTime, T: Integer;
BoundaryX, BoundaryY: Array [0..3] of Integer;
HPBar: Array [0..2] of Integer;
HPBarX, HPBarY: Array [0..3] of Integer;
giantColor: Array [0..5] of Integer;
BCX, BCY: Integer;
PlayerLoc: String;
ItemsUptext: TStringArray;
UsePotion, PickItems: Boolean;
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,8388736);
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 PaintIt;
begin
xpEnd := (GetXPBarTotal - xpStart);
PrintOnSmart([scriptName + Version + ' by TsterT',
'Fire Giants Killed: ' + IntToStr(giantKilled),
'Fire Giants/Hour: ' + FloatToStr(Round(giantKilled * 3600) / (GetTimeRunning / 1000)),
'Experience Gained: ' + IntToStr(xpEnd),
'Experience/Hour: ' + FloatToStr(Round(xpEnd * 3600) / (GetTimeRunning / 1000))],Point(30,30),clWhite);
end;
procedure AntiBan;
begin
case Random(300) of
1: ExamineInv;
2: HoverSkill('random', false);
3: HoverSkill('ranged', false);
4: PickUpMouse;
end;
end;
function proggy(Reason: String): Boolean;
begin
xpEnd := (GetXPBarTotal - xpStart);
Writeln('[-------------------------------------------------]');
Writeln('[ ' + PadR(ScriptName + Version + ' By TsterT', 50) + ']');
Writeln('[ ' + PadR('Fire Giants killed: ' + IntToStr(giantKilled), 50) + ']');
Writeln('[ ' + PadR('Fire Giants/Hour: ' + FloatToStr(Round(giantKilled * 3600) / (GetTimeRunning / 1000)), 50) + ']');
Writeln('[ ' + PadR('XP Gained: ' + IntToStr(xpEnd), 50) + ' ]');
Writeln('[ ' + PadR('XP Gained/Hour: ' + FloatToStr(Round(xpEnd * 3600) / (GetTimeRunning / 1000)), 50) + ']');
if not(Reason = '') then
begin
Writeln('[ ' + PadR('Reason Stopped: ' + Reason, 50) + ']');
end;
Writeln('[ ' + PadR('Time Ran: ' + TimeRunning, 50) + ']');
Writeln('[-------------------------------------------------]');
if not(Reason = '') then
TerminateScript;
end;
procedure DeclareVars;
Var
i: Integer;
begin
UsePotion := players[CurrentPlayer].Booleans[0];
PickItems := players[CurrentPlayer].Booleans[1];
SetLength(ItemsUptext, Length(players[CurrentPlayer].Arrays[0]));
for i := 0 to High(ItemsUptext) do
ItemsUptext[i] := players[CurrentPlayer].Arrays[0][i];
if UsePotion then
Writeln(Capitalize(players[CurrentPlayer].Name) + ' is using Ranging Potions');
if PickItems then
Writeln('Uptext to pick: ' + ToStr(ItemsUptext));
giantColor[0] := 4550044;
giantColor[1] := 2042182;
giantColor[2] := 3822979;
giantColor[3] := 3495031;
giantColor[4] := 7786464;
giantColor[5] := 2836364;
BoneColor := 14869485;
HPBar[0] := 132923;
HPBar[1] := 51867;
HPBar[2] := 524465;
HPBarX[0] := 116;
HPBarY[0] := 132;
HPBarX[1] := 164;
HPBarY[1] := 132;
HPBarX[2] := 73;
HPBarY[2] := 134;
HPBarX[3] := 121;
HPBarY[3] := 136;
BoundaryX[0] := 12;
BoundaryY[0] := 129;
BoundaryX[1] := 160;
BoundaryY[1] := 312;
BoundaryX[2] := 171;
BoundaryY[2] := 232;
BoundaryX[3] := 21;
BoundaryY[3] := 312;
BCX := 101;
BCY := 232;
end;
function isInFight: Boolean;
Var
i: Integer;
HpPosX, HpPosY: Integer;
begin
for i := 0 to High(HPBar) do
begin
if FindColorSpiralTolerance(HpPosX, HpPosY, HPBar[i], BoundaryX[0], BoundaryY[0], BoundaryX[1], BoundaryY[1], 3) or FindColorSpiralTolerance(HpPosX, HpPosY, HPBar[i], BoundaryX[0], BoundaryY[0], BoundaryX[1], BoundaryY[1], 3) or OthersInFight then
begin
Result := True;
end else
Result := False;
end;
if FindBlackChatMessage('no ammo') then
proggy('Out of arrows!');
if InFight then
//proggy('We were attacked!');
if not(Result) then
Status('In Fight!');
end;
procedure MakeDots;
Var
TPA: TPointArray;
begin
TPA := [Point(BoundaryX[0], BoundaryY[0]), Point(BoundaryX[1], BoundaryY[1]), Point(BoundaryX[2], BoundaryY[2]), Point(BoundaryX[3], BoundaryY[3])];
SMART_DrawDotsEx(True, TPA, clRed);
end;
procedure BackToSpot;
begin
Mouse(584, 74, 0, 0, mouse_left);
Wait(4000);
Mouse(648, 91, 0, 0, mouse_left);
Wait(4000);
PlayerLoc := 'FindMob';
end;
procedure RangePots;
Var
i: Integer;
begin
MarkTime(RangeTime);
Status('Using Ranging Potion');
for i := 1 to 28 do
begin
if ExistsItem(i) then
begin
MouseItem(i, mouse_move);
if WaitUptext('anging', 300) then
begin
MouseItem(i, mouse_left);
PlayerLoc := 'FindMob';
Break;
end;
if i = 28 then
begin
Writeln('Out of Ranging Potions!');
UsePotion := False;
PlayerLoc := 'FindMob';
end;
end;
end;
end;
procedure PickupItems;
Var
x, y, i, ii: Integer;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
if not(isInFight) then
begin
MarkTime(T);
FindColorsSpiralTolerance(BCX, BCY, TPA, BoneColor, BoundaryX[0], BoundaryY[0], BoundaryX[1], BoundaryY[1], 3);
ATPA := TPAToATPAEx(TPA, 15, 15);
if (Length(ATPA) <= 0) then
PlayerLoc := 'FindMob';
for i := 0 to High(ATPA) do
begin
MiddleTPAEx(TPA, x, y);
MMouse(x, y, 2, 2);
Wait(RandomRange(300,400));
if WaitUpText('ake', 300) then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, mouse_right);
if OptionsExist([ItemsUptext], True) then
begin
for ii := 0 to High(ItemsUptext) do
begin
if OptionsExist([ItemsUptext[i]], True) then
ChooseOption(ItemsUptext[i]);
if ii = High(ItemsUptext) then
PlayerLoc := 'BackToSpot';
end;
end;
end;
end;
if (TimeFromMark(T) > 15000) then
PlayerLoc := 'FindMob';
end;
end;
procedure StillInFight;
begin
Wait(RandomRange(10000,15000));
MarkTime(T);
repeat
isInFight;
until(TimeFromMark(T) > 60000) or (not(isInFight));
if (TimeFromMark(T) > 60000) then
begin
Writeln('Taking to long, finding another Fire Giant');
PlayerLoc := 'FindMob';
end;
if (not(isInFight)) then
PlayerLoc := 'PickUpItems';
end;
function FindMob: Boolean;
Var
x, y, i, NPC: Integer;
TP: TPoint;
NPCs, TPA: TPointArray;
ATPA: T2DPointArray;
BoxArr: TBoxArray;
begin
Result := False;
Status('Searching for Fire Giant');
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
MarkTime(T);
NPCs := GetMMDotsOnMS('npc');
NPC := Length(NPCs);
SetLength(BoxArr, NPC);
for i := 0 to NPC-1 do
begin
TP := MMtoMS(NPCs[i]);
BoxArr[i] := IntToBox(Max(TP.x-40, MSX1), Max(TP.y-40, MSY1), Min(TP.x+40, MSX2), Min(TP.y+40, MSY2));
end;
repeat
for i := 0 to High(giantColor) do
begin
Writeln('Trying color number: ' + IntToStr(i));
Writeln('Trying color: ' + IntToStr(giantColor[i]));
FindColorsSpiralTolerance(BCX, BCY, TPA, giantColor[i], BoundaryX[0], BoundaryY[0], BoundaryX[1], BoundaryY[1], 5);
if (Length(TPA) > 0) then
begin
Writeln('Found Fire Giant');
PaintIt;
Proggy('');
Result := True;
Break;
end;
Wait(RandomRange(300,400));
end;
until(Result);
ATPA := TPAtoATPAEx(TPA, 15, 15);
for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 3, 3);
if WaitUpTextMulti(['alk', 'ere', '2 more', 'ptions'], 400) then
begin
//SMART_DrawBoxEx(False, BoxArr[i], clBlue);
GetMousePos(x, y);
Mouse(x, y, 0, 0, mouse_right);
Wait(RandomRange(300,400));
if OptionsExist(['tack', 'ire', 'iant', '86', 'evel: 86'], True) then
begin
Writeln('Attacking Fire Giant');
ChooseOption('tack');
Inc(giantKilled);
if PickItems then
StillInFight;
Break;
end;
end;
end;
if (TimeFromMark(T) > 180000) then
proggy('Failed to find Giant after 3 minutes');
end;
procedure NextStep;
begin
Status(PlayerLoc);
if not(isInFight) then
begin
case PlayerLoc of
'BackToSpot': BackToSpot;
'FindMob': FindMob;
'PickUpItems': PickupItems;
end;
end;
end;
begin
SMART_Server := 30;
SMART_Signed := True;
SMART_Members := True;
SetupSRL;
DeclarePlayers;
DeclareVars;
LogInPlayer;
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
MakeDots;
xpStart := GetXPBarTotal;
PlayerLoc := 'FindMob';
repeat
if (TimeFromMark(RangeTime) > 300000) and (UsePotion) and (not(isInFight)) then
RangePots;
if (RangeTime = 0) and (UsePotion) and (not(isInFight)) then
RangePots;
if FindNormalRandoms then
proggy('Random!');
NextStep;
until(false);
end.Work with DTMs:
program new;
{$DEFINE SMART}
{$DEFINE CRASHSMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
{$i srl/srl/misc/paintsmart.simba}
Const
Version = 'v0.1 ';
scriptName = 'Barbarian Basic ';
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name :=''; // Username
Pass :=''; // Password
Active := True;
end;
end;
Var
ropeDTM, logDTM, netDTM, plankDTM, wall1DTM, wall2DTM: Integer;
laps, xpStart, xpEnd: Integer;
PlayerLoc: String;
PosStart, PosWall1: TPoint;
aFound: Extended;
procedure Antiban;
begin
case Random(999) of
1: HoverSkill('Agility', False);
2: ExamineInv;
3: Wait(RandomRange(3000,5000));
4: PickUpMouse;
end;
end;
procedure DeclareVars;
begin
PosStart := Point(2047, 2426);
PosWall1 := Point(1988, 2432);
ropeDTM := DTMFromString('mggAAAHicY2NgYMhlYWCIBuJgIC4H4logzgLi04wMDJeA+BQQnwTii1C+thovQ1W2C0NVURwEg9hAzA80CxtmxIEhAAChqQ4+');
logDTM := DTMFromString('mrAAAAHic42BgYLgKxAeA+BoQv4fid1D+ISCWY2RgEINiCSBWAmJNKFYHYid9VQZVWUkGOTFBBitNBYbO2nIGfRV5Bht9DQYrXXUGfqAZ+DAjAQwDAFraDSY=');
netDTM := DTMFromString('mlwAAAHicY2cAAhYGhvvMDAy/gFgCyBYC4h9A9i0gDmZkYLCFYjsgjgLiJCgdE27HkOhrxpAbbstQGGXPYG2pxxDoZ8cQ6KjLwA80FhdmxIOhAADr6wyr');
plankDTM := DTMFromString('mrAAAAHic42BgYOBiYWBgA+LvzAwMX4D4KxBzA/niQCwMxLWMDAwtQNwOxPVAXA7FdVAxBwMxhngvBQZXE0mGZF95hgA7aQZdZX4GewNhBmcjEQYukB14MCMBDAMAqa4MaA==');
wall1DTM := DTMFromString('mlwAAAHicY2dgYGBkhOD3QPZbIP4OxLxAvigQ3weyrwLxFQYI+zEQP4GKhYcGM3R3tDLMmz2dwd3VmcHQUB+M49y1GPiB8rgwIx4MBQBsLxCd');
wall2DTM := DTMFromString('mggAAAHicY2NgYGBlZGB4zwDBnEC2KBCzAPFDIP86ED8B4qdAfA2Ko6PCGSb0dTFYWZoz6GhrMSyYO5OhvbWRgR8ohw0z4sAQAADD6A7f');
end;
procedure FreeDTMs;
begin
FreeDTM(ropeDTM);
FreeDTM(logDTM);
FreeDTM(netDTM);
FreeDTM(plankDTM);
FreeDTM(wall1DTM);
FreeDTM(Wall2DTM);
end;
procedure LoginProc;
begin
SMART_Server := 38;
SMART_Members := False;
SMART_Signed := True;
SetupSRL;
SPS_Setup(RUNESCAPE_SURFACE,['4_5']);
DeclarePlayers;
DeclareVars;
LoginPlayer;
end;
function proggy(Reason: String): Boolean;
begin
xpEnd := GetXPBarTotal - xpStart;
Writeln('[' + PadR('----------------- ' + scriptName + Version + ' by TsterT -----------------', 50) + ']');
Writeln('[' + PadR('Xp Gained: ' + IntToStr(xpEnd), 50) + ']');
Writeln('[' + PadR('XP Gained/Hour: ' + FloatToStr(Round(xpEnd * 3600) / (GetTimeRunning / 1000)), 50) + ']');
if not(Reason = '') then
Writeln('[' + PadR('Reason Stopped: ' + Reason, 50) + ']');
Writeln('[' + PadR('Time Ran: ' + TimeRunning, 50) + ']');
Writeln('[' + PadR('----------------- ' + scriptName + Version + ' by TsterT -----------------', 50) + ']');
if not(Reason = '') then
begin
Logout;
TerminateScript;
end;
end;
function FindFails: Boolean;
begin
case PlayerLoc of
'DoRope':
begin
if not(FindBlackChatMessage('skilfully swing across.')) then
PlayerLoc := 'FailedRope';
end;
'DoLog':
begin
if FindBlackChatMessage('Something in the water bites you.') then
PlayerLoc := 'DoLog';
end;
'DoNet':
begin
if not(FindBlackChatMessage('climb the netting.')) then
PlayerLoc := 'DoNet';
end;
'DoPlank':
begin
if not(FindBlackChatMessage('edge across the gap.')) then
PlayerLoc := 'DoNet';
end;
'DoWall1':
begin
if not(FindBlackChatMessage('climb the low wall...')) then
PlayerLoc := 'ToWall1';
end;
'DoWall2':
begin
if not(FindBlackChatMessage('climb the low wall...')) or FindBlackChatMessage('You cannot climb from that side') then
begin
Mouse(623, 110, 0, 0, mouse_left);
PlayerLoc := 'DoWall2';
end;
end;
end;
end;
function FailedRope: Boolean;
begin
end;
function DoRope: Boolean;
Var
x, y, T, i, TimesFailed: Integer;
begin
MarkTime(T);
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
Status('Rope');
repeat
if FindDTMRotated(ropeDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUptext('swing', 400) then
begin
Mouse(x, y, 2, 2, mouse_left);
Wait(RandomRange(2500,3500));
if not(FindFails) then
begin
Result := True;
PlayerLoc := 'DoLog';
end;
end;
end else
begin
Inc(TimesFailed);
Writeln('Failed ' + IntToStr(TimesFailed) + ' times');
end;
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Rope swing.');
end;
function DoLog: Boolean;
Var
x, y, T, TimesFailed: Integer;
begin
MarkTime(T);
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
Status('Log');
repeat
if FindDTMRotated(logDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUptext('alance', 400) then
begin
Mouse(x, y, 2, 2, mouse_left);
Wait(RandomRange(5000,6000));
if not(FindFails) then
begin
Result := True;
PlayerLoc := 'DoNet';
end;
end;
end else
begin
Inc(TimesFailed);
Writeln('Failed ' + IntToStr(TimesFailed) + ' times');
end;
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Log Balance.');
end;
function DoNet: Boolean;
Var
x, y, T, TimesFailed: Integer;
begin
MarkTime(T);
MakeCompass('W');
SetAngle(SRL_ANGLE_LOW);
Status('Net');
repeat
if FindDTMRotated(netDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUptext('bstacle', 400) then
begin
Mouse(x, y, 2, 2, mouse_left);
Wait(RandomRange(500,1000));
if not(FindFails) then
begin
Result := True;
PlayerLoc := 'DoPlank';
end;
end;
end else
begin
Inc(TimesFailed);
Writeln('Failed ' + IntToStr(TimesFailed) + ' times');
end;
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Obstacle Net.');
end;
function DoPlank: Boolean;
Var
x, y, T, i, TimesFailed: Integer;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
MarkTime(T);
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
Status('Ledge');
repeat
//if FindDTMRotated(plankDTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1718601, MSX1, MSY1, MSX2, MSY2, 5);
ATPA := TPAToATPAEx(TPA, 15, 15);
for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
if WaitUptext('ledge', 400) then
begin
Mouse(x, y, 2, 2, mouse_left);
Wait(RandomRange(500,1000));
if not(FindFails) then
begin
Result := True;
PlayerLoc := 'DoLadder';
end;
Break;
end else
begin
Inc(TimesFailed);
Writeln('Failed ' + IntToStr(TimesFailed) + ' times');
end;
end;
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Balancing Ledge.');
end;
function DoLadder: Boolean;
Var
x, y, T, TimesFailed: Integer;
begin
MarkTime(T);
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
Status('Ladder');
repeat
Mouse(659, 61, 3, 3, mouse_left);
Wait(RandomRange(300,400));
Mouse(262, 132, 2, 2, mouse_left);
Result := True;
PlayerLoc := 'ToWall1';
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Ladder.');
end;
procedure ToWall1;
begin
SPS_WalkToPos(PosWall1);
PlayerLoc := 'DoWall1';
end;
function DoWall1: Boolean;
Var
x, y, T, TimesFailed: Integer;
begin
MarkTime(T);
MakeCompass('W');
SetAngle(SRL_ANGLE_HIGH);
Status('Wall 1');
repeat
if FindDTMRotated(wall1DTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUptext('rumbling wall', 400) then
begin
Mouse(x, y, 2, 2, mouse_left);
Wait(RandomRange(2000,3000));
Mouse(623, 110, 0, 0, mouse_left);
Wait(RandomRange(500,1000));
if not(FindFails) then
begin
Result := True;
PlayerLoc := 'DoWall2';
end;
end;
end else
begin
Inc(TimesFailed);
Writeln('Failed ' + IntToStr(TimesFailed) + ' times');
end;
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Crumbling Wall 1.');
end;
function DoWall2: Boolean;
Var
x, y, T, TimesFailed: Integer;
begin
MarkTime(T);
MakeCompass('W');
SetAngle(SRL_ANGLE_HIGH);
Status('Wall 2');
repeat
if FindDTMRotated(wall2DTM, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound) then
begin
MMouse(x, y, 2, 2);
if WaitUptext('rumbling wall', 400) then
begin
Mouse(x, y, 2, 2, mouse_left);
Wait(RandomRange(500,1000));
if not(FindFails) then
begin
Result := True;
PlayerLoc := 'ToStart';
end;
end;
end else
begin
Inc(TimesFailed);
Writeln('Failed ' + IntToStr(TimesFailed) + ' times');
end;
until(TimeFromMark(T) > 30000) or (TimesFailed > 15) or (Result);
if (TimeFromMark(T) > 30000) or (TimesFailed > 15) then
proggy('Failed Crumbling Wall 2.');
end;
procedure ToStart;
begin
SPS_WalkToPos(PosStart);
FreeDTMs;
DeclareVars;
proggy('');
FindNormalRandoms;
PlayerLoc := 'DoRope';
end;
procedure NextStep;
begin
case PlayerLoc of
'DoRope': DoRope;
'DoLog': DoLog;
'DoNet': DoNet;
'DoPlank': DoPlank;
'DoLadder': DoLadder;
'ToWall1': ToWall1;
'DoWall1': DoWall1;
'DoWall2': DoWall2;
'FailedRope': FailedRope;
'ToStart': ToStart;
end;
end;
begin
LoginProc;
xpStart := GetXPBarTotal;
PlayerLoc := 'ToStart';
repeat
NextStep;
Antiban;
until(false);
end.