KingKong
2011-04-03 06:31:54
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No way!
Were you Referred to SRL?
does google count? :P
What is your general programming knowledge?
Pascal and Python
Are you a member of any other communities?
http://xsellize.com/ and http://www.icheats.org/
Tell us about yourself…
Im 17, studying last year of highschool. I usually play badminton, soccer and handball and read books and hang out with friends. In the whatever time I have left i hack my iphone games and make scripts for botting on RS.
Please show us one (or multiple) of your scripts.
For some reason the system wont let me attach the files, and the scripts are long so it might be a bit hard to read them. Also please don't release this yet, i still want to do some stuff to it.
Script1:
Script2(not complete):
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No way!
Were you Referred to SRL?
does google count? :P
What is your general programming knowledge?
Pascal and Python
Are you a member of any other communities?
http://xsellize.com/ and http://www.icheats.org/
Tell us about yourself…
Im 17, studying last year of highschool. I usually play badminton, soccer and handball and read books and hang out with friends. In the whatever time I have left i hack my iphone games and make scripts for botting on RS.
Please show us one (or multiple) of your scripts.
For some reason the system wont let me attach the files, and the scripts are long so it might be a bit hard to read them. Also please don't release this yet, i still want to do some stuff to it.
Script1:
program PrinceAliRescue;
{=========================================================================]
[ Instructions ]
[=========================================================================]
[1. Fill out DeclarePlayers. ]
[2. Make sure you have all these items in your inventory: ]
[ 3 ball of wool, ash, water, redberries, pinkskirt, softclay, bronzebar, 3 beer, ]
[40 coins, yellow dye or 2 onions + 5 coins and rope or 15 coins ]
[3.If this a new account make sure you finish the goblin Intervention task]
[because it will stuff up the walking ]
[4.Stand in the lumbridge courtyard and click play. ]
[=========================================================================}
{$DEFINE SMART}
{$i SRL\SRL.scar}
{$i reflection\reflection.simba}
const
SMARTSERVER = 123;
procedure DeclarePlayers;
var
a : Integer;
Ar_Name, Ar_Pass : Array of string;
Ar_Active : Array of Boolean;
begin
HowManyPlayers := 2; // How many players declared?
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Ar_Name := ['username1', 'username2']; //use multiplayer like this
Ar_Pass := ['password1', 'password2'];
Ar_Active := [True, True];
for a := 0 to HowManyPlayers - 1 do
with Players[a] do
begin
Name := Ar_Name[a];
Pass := Ar_Pass[a];
Active := Ar_Active[a];
end;
end;
function StepFuncs(Functions: Array of String; Conditions: Array of Boolean): Boolean;
{will progress through the list of Functions with no parameters if Condition is met eg:
if this then
if that then
if thisandthat then
blahblahblah
Also, if Conditions are the same then just use it once in an array eg:
StepFuncs(['func1', 'func2', 'func3'], [True]) is the same as
StepFuncs(['func1', 'func2', 'func3'], [True, True, True])
}
var
a, b: Integer;
c: TVariantArray;
begin
b:= High(Functions);
if Length(Functions) <> Length(Conditions) then
begin
SetLength(Conditions, b + 1);
for a:= 1 to b do
Conditions[a]:= Conditions[0];
end;
for a:= 0 to b do
begin
if CallProc(Functions[a], c) <> Conditions[a] then
begin
writeln('An error has occured while trying to execute:' + Functions[a]);
break;
end;
end;
Result:= True;
end;
function ChatTextOptions(Text: Array of String; Action: fnct_ActionOptions; Continue: Boolean): Boolean;
//will wait for Text to show up and do Action
var
a, b, c: Integer;
begin
Result:= False;
b:= High(Text);
for c:= 0 to b do
begin
while (a < 6) and (not FindNPCChatText(Text[c], Nothing)) do
begin
wait(600 + RandomRange(250, 380));
Inc(a);
end;
if Continue then
begin
if FindNPCChatText(Text[c], Action) and ClickContinue(True, True) then
Result:= True;
end else
if FindNPCChatText(Text[c], Action) then
Result:= True;
if Result = False then
begin
writeln('An error has occured while trying to click:' + Text[c]);
break;
end;
wait(300 + RandomRange(200, 300));
end;
end;
function ChatTextOption(Text: String; Action: fnct_ActionOptions; Continue: Boolean): Boolean;
begin
Result:= ChatTextOptions([Text], Action, Continue);
end;
function ChatboxExists: Boolean;
//looks for the username-black color
begin
if InIntArray(GetColorsBox(9, 461, 29, 470, True), 0) then
Result:= True
else
Result:= False;
end;
function CheckPlayer: Boolean;
var
a: Integer;
coins: TInvItem;
IDs, Amount: TIntegerArray;
begin
{wool, ash, water, redberries, pinkskirt, softclay, bronzebar, beer, dye, onion, rope, coins}
IDs:= [1759, 592, 1929, 1951, 1013, 1761, 2349, 1917, 1765, 1957, 954, 995];
Amount:= [3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 60];
for a:= 0 to 7 do
if R_CountItem(IDs[a]) < Amount[a] then
begin
writeln('Could not find item ID: ' + IntToStr(IDs[a]));
TerminateScript;
end;
R_ItemExists(IDs[11], coins);
if coins.StackSize < Amount[11] then
begin
writeln('Failed to find coins in the inventory');
TerminateScript;
end;
Result:= True;
end;
function InteractNPC(Name, Text: String; UseTile: boolean): Boolean;
var
ID, Height, a, b: Integer;
NPC: TNPC;
NPC_Point: TPoint;
NPC_Tile: TTile;
begin
Result := False;
case Name of
'guardl': NPC_Tile:= Tile(3266, 3229);
'guardr': NPC_Tile:= Tile(3269, 3229);
'hassan': ID := 923;
'osman': NPC_Tile:= Tile(3286, 3180);
'leela': NPC_Tile:= Tile(3113, 3263);
'ned': ID := 918;
'aggie': ID := 922;
'keli': ID:= 919;
'joe': ID:= 916;
'ali': ID:= 920;
end;
case Name of
'guardl', 'guardr': Height := 1151;
'hassan': Height := 811;
'osman': Height := 808;
'leela': Height := 796;
'ned': Height := 817;
'aggie': Height := 893;
'keli': Height:= 800;
'joe': Height:= 803;
'ali': Height:= 821;
end;
while (a < 6) and (CharacterMoving) do
begin
wait(700 + RandomRange(-50, 200));
Inc(a);
end;
a:= 0;
while (b < 11) and (Result = False) do
begin
if not ChatboxExists then
begin
Result := True;
break;
end;
if UseTile then
begin
NPC_Point := TileToMS(NPC_Tile, Height);
end else
begin
NPC := GetNullNPCMulti([ID]);
NPC_Point := TileToMS(NPC.Tile, Height);
end;
Mouse(NPC_Point.x, NPC_Point.y, 0, 0, False);
WaitOption(Text, 1500);
if DidRedClick then
while (a < 6) and (IsMoving) do
begin
wait(700 + RandomRange(-50, 200));
Inc(a);
end;
a:= 0;
while (a < 6) and (ChatboxExists) do
begin
wait(700 + RandomRange(-50, 200));
Inc(a);
end;
if InteractingWithMe(NPC) or (not ChatboxExists) then
Result := True;
Inc(b);
end;
end;
function Walk(Place: String): Boolean;
var
a: Integer;
begin
Result:= False;
RunEnergy(50);
case Place of
'lum-ak':
if WalkPath([Tile(3226, 3217), Tile(3237, 3224), Tile(3252, 3224), Tile(3266, 3226)]) then
Result:= True
else
writeln('Failed while trying to walk from Lum to Ak');
'ak-hassan':
if WalkPath([Tile(3278, 3214), Tile(3287, 3206), Tile(3289, 3195), Tile(3294, 3183),
Tile(3295, 3171), Tile(3299, 3163)]) then
Result:= True
else
writeln('Failed while trying to walk from Ak to Hassan');
'hassan-osman':
if Walkpath([Tile(3295, 3167), Tile(3293, 3181), Tile(3286, 3181)]) then
Result:= True
else
writeln('Failed while trying to walk from Hassan to Osman');
'osman-ak':
if WalkPath([Tile(3283, 3194), Tile(3275, 3205), Tile(3274, 3219), Tile(3271, 3225)]) then
Result:= True
else
writeln('Failed while trying to walk from Osman to Ak');
'ak-leela':
if WalkPath([Tile(3253, 3224), Tile(3239, 3224), Tile(3228, 3232), Tile(3221, 3242),
Tile(3208, 3245), Tile(3194, 3245), Tile(3181, 3246), Tile(3173, 3253),
Tile(3160, 3256), Tile(3148, 3259), Tile(3134, 3261), Tile(3120, 3261),
Tile(3116, 3261)]) then
Result:= True
else
writeln('Failed while trying to walk from Ak to Leela');
'aggie-keli':
if WalkPath([Tile(3102, 3263), Tile(3111, 3253), Tile(3124, 3249), Tile(3128, 3247)]) then
Result:= True
else
writeln('Failed while trying to walk from Aggie to Keli');
'keli-ak':
if WalkPath([Tile(3141, 3249), Tile(3155, 3253), Tile(3169, 3256), Tile(3182, 3253),
Tile(3194, 3246), Tile(3207, 3246), Tile(3218, 3246), Tile(3226, 3234),
Tile(3237, 3225), Tile(3251, 3224), Tile(3266, 3226)]) then
Result:= True
else
writeln('Failed while trying to walk from Keli to Ak');
'ak-osman':
if WalkPath([Tile(3275, 3213), Tile(3279, 3201), Tile(3283, 3188), Tile(3286, 3181)]) then
Result:= True
else
writeln('Failed while trying to walk from Ak to Osman');
'leela-keli':
if WalkPath([Tile(3119, 3251), Tile(3128, 3248)]) then
Result:= True
else
writeln('Failed while trying to walk from Leela to Keli');
end;
if Result = False then
TerminateScript;
while (a < 6) and (CharacterMoving) do
begin
wait(500 + randomrange(100, 300));
Inc(a);
end;
end;
function OpenDoor(Which: String): Boolean;
var
a, b, c, d, x, y: Integer;
Colors: TIntegerArray;
TL, DR: TPoint;
TPA, TPA2: TPointArray;
ATPA : T2DPointArray;
begin
case Which of
'ned':
begin
Colors:= [2117479, 2184046];
TL:= TileToMSEx(Tile(3101, 3259), 0, 0, 0);
DR:= TileToMSEx(Tile(3102, 3257), 1, 1, 0);
end;
'aggie':
begin
Colors:= [2117479, 2184046];
TL:= TileToMSEx(Tile(3088, 3259), 0, 0, 0);
DR:= TileToMSEx(Tile(3089, 3257), 1, 1, 0);
end;
'prisonout':
begin
Colors:= [6716292, 6716292];
TL:= TileToMSEx(Tile(3128, 3248), 0, 0, 0);
DR:= TileToMSEx(Tile(3129, 3246), 1, 1, 0);
end;
'prisonin':
begin
Colors:= [4934735, 5789788];
TL:= TileToMSEx(Tile(3123, 3245), 0, 0, 0);
DR:= TileToMSEx(Tile(3124, 3243), 1, 1, 0);
end;
end;
while(a < 6) and (Result = False) do
begin
Result:= False;
while (Length(TPA) < 1) or ( b < 6) do
begin
//using ref and col to find the door faster
FindColorsSpiralTolerance(MSCX, MSCY, TPA, Colors[0], TL.x, TL.y, DR.x, DR.y, 15);
FindColorsSpiralTolerance(MSCX, MSCY, TPA2, Colors[1], TL.x, TL.y, DR.x, DR.y, 15);
TPA:= CombineTPA(TPA, TPA2);
Inc(b);
if Length(TPA) > 0 then
break;
end;
b:= 0;
ATPA := TPAtoATPA(TPA, 15);
c := High(ATPA);
for d:= 0 to c do
begin
MiddleTPAEx(ATPA[d], x, y);
MMouse(x, y, 0, 0);
Wait(400 + RandomRange(80, 120));
if IsUpTextMultiCustom(['Open Door', 'Open Prison Door']) then
begin
Wait(400 + RandomRange(80, 120));
if IsUpTextMultiCustom(['Open Door', 'Open Prison Door']) then
begin
ClickMouse2(True); //checks the uptext twice to double check
Result:= True; //incase someone messes with it while its waiting
end else
if IsUpTextMultiCustom(['Close Door']) then
Result:= True;
if Result = True then
break;
end else
if IsUpTextMultiCustom(['Close Door']) then
begin
Result:= True;
break;
end;
end;
while (b < 6) and (CharacterMoving) do
begin
wait(500 + RandomRange(100, 150));
Inc(b);
end;
b:= 0;
if Result = True then
break;
Inc(a);
end;
wait(500 + RandomRange(-50, 310));
end;
function GetPastGuard(Guard: String): Boolean;
var
a: Integer;
CurTile: TTile;
begin
Result:= False;
CurTile:= GetMyPos;
if InteractNPC(Guard, 'alk-', True) then
begin
ChatTextOptions(['come', 'toll'], Nothing, True);
ChatTextOption('pay', ClickLeft, False);
if ChatTextOption('kay', Nothing, True) then
begin
while (a < 6) and (GetMyPos = CurTile) do
begin
wait(400 + RandomRange(-50, 200));
Inc(a);
end;
if GetMyPos <> CurTile then
Result:= True;
end;
end else
writeln('Failed while trying to get past Guards');
end;
function TalktoHassan: Boolean;
begin
if Walk('lum-ak') and GetPastGuard('guardl') then
begin
if Walk('ak-hassan') and InteractNPC('hassan', 'alk-', False) then
begin
ClickContinue(True, True);
ChatTextOption('help', ClickLeft, False);
ChatTextOption('help', Nothing, True);
if ChatTextOption('need', Nothing, True) then
Result:= True;
end;
end else
begin
writeln('Failed while trying to reach Hassan');
TerminateScript;
end;
end;
function TalktoOsman: Boolean;
begin
if Walk('hassan-osman') and InteractNPC('osman', 'alk-', True) then
begin
ChatTextOptions(['chanc', 'reeti', 'princ'], Nothing, True);
ChatTextOption('first', ClickLeft, False);
ChatTextOptions(['first', 'princ', 'coil', 'good', 'dista', 'blond', 'daugh'], Nothing, True);
if ChatTextOption('lurking', Nothing, True) then
Result:= True;
end else
begin
writeln('Failed while trying to reach Osman');
TerminateScript;
end;
end;
function TalktoLeela: Boolean;
begin
if Walk('osman-ak') and GetPastGuard('guardr') then
begin
if Walk('ak-leela') and InteractNPC('leela', 'alk-', True) then
begin
ChatTextOptions(['help', 'free', 'emplo'], Nothing, True);
if ChatTextOption('rest', Nothing, False) then
Result:= True;
end;
end else
begin
writeln('Failed while trying to reach Leela');
TerminateScript;
end;
end;
function TalktoNed: Boolean;
var
a: Integer;
begin
WalkPath([Tile(3105, 3258)]);
while (a < 6) and (CharacterMoving) do
begin
wait(500 + randomrange(100, 300));
Inc(a);
end;
if OpenDoor('ned') and InteractNPC('ned', 'alk-', False) then
begin
if R_CountItem(954) < 1 then
begin
ChatTextOption('somet', ClickLeft, False);
ChatTextOption('rope', Nothing, True);
ChatTextOption('rope', ClickLeft, False);
ChatTextOptions(['like', 'sell', 'from', 'cours', 'hemp', 'want'], Nothing, True);
ChatTextOption('rope', ClickLeft, False);
ChatTextOptions(['sell', 'fines', 'coil'], Nothing, True);
end;
if InteractNPC('ned', 'alk-', False) then
begin
ChatTextOption('somet', ClickLeft, False);
ChatTextOption('rope', Nothing, True);
ChatTextOption('other', ClickLeft, False);
ChatTextOptions(['other', 'thinki'], Nothing, True);
ChatTextOption('wig', ClickLeft, False);
ChatTextOptions(['wig', 'inter'], Nothing, True);
ChatTextOption('make', ClickLeft, False);
ChatTextOptions(['have', 'will', 'hand', 'you', 'prett'], Nothing, True);
ChatTextOption('more', Nothing, False);
end;
if (R_CountItem(2421) >= 1) and OpenDoor('ned') then
Result:= True;
end else
begin
writeln('Failed while trying to reach Ned');
TerminateScript;
end;
end;
function TalkToAggie: Boolean;
var
a: Integer;
begin
WalkPath([Tile(3090, 3258)]);
while (a < 6) and (CharacterMoving) do
begin
wait(500 + randomrange(100, 300));
Inc(a);
end;
if OpenDoor('aggie') and InteractNPC('aggie', 'ake-', False) then
begin
if R_CountItem(1765) < 1 then
begin
ChatTextOption('onion', ClickLeft, False);
ChatTextOptions(['yello', 'hand'], Nothing, True);
end;
if InteractNPC('aggie', 'alk-', False) then
begin
ChatTextOption('help', Nothing, True);
ChatTextOption('escue', ClickLeft, False);
ChatTextOptions(['skin', 'alrea'], Nothing, True);
ChatTextOption('pleas', ClickLeft, False);
ChatTextOptions(['pleas', 'simpl', 'ash', 'hands', 'deari'], Nothing, True);
end;
if R_CountItem(1765) > 0 then
begin
R_ClickItemBy(1765, True, '');
wait(300 + random(200));
R_ClickItemBy(2421, True, '');
wait(300 + random(200));
if (R_CountItem(2424) > 0)then
if OpenDoor('aggie') then
Result:= True;
end;
end else
begin
writeln('Failed while trying to reach Aggie');
TerminateScript;
end;
end;
function TalkToKeli: Boolean;
begin
if Walk('aggie-keli') and OpenDoor('prisonout') then
begin
if (InteractNPC('keli', 'alk-', False)) then
begin
ChatTextOptions(['famou', 'heard'], Nothing, True);
ChatTextOption('famou', ClickLeft, False);
ChatTextOptions(['great', 'very'], Nothing, True);
ChatTextOption('plan', ClickLeft, False);
ChatTextOptions(['plan', 'valua', 'rewar'], Nothing, True);
ChatTextOption('get', ClickLeft, False);
ChatTextOptions(['try', 'relea', 'world'], Nothing, True);
ChatTextOption('key', ClickLeft, False);
ChatTextOptions(['key', 'put', 'shows'], Nothing, True);
ChatTextOption('touch', ClickLeft, False);
ChatTextOptions(['key', 'momen', 'piece', 'great', 'welco'], Nothing, True);
if OpenDoor('prisonout') then
Result:= True;
end;
end else
begin
writeln('Failed while trying to reach Keli');
TerminateScript;
end;
end;
function MakeKey: Boolean;
begin
if Walk('keli-ak') and GetPastGuard('guardl') then
begin
if Walk('ak-osman') and InteractNPC('osman', 'alk-', True) then
begin
if ChatTextOptions(['key', 'impri', 'from'], Nothing, True) then
Result:= True;
end;
end else
begin
writeln('Failed while trying to reach Osman(2)');
TerminateScript;
end;
end;
function ObtainKey: Boolean;
begin
if Walk('osman-ak') and GetPastGuard('guardr') then
begin
if Walk('ak-leela') and InteractNPC('leela', 'alk-', True) then
begin
ChatTextOptions(['caref', 'copy'], Nothing, True);
if ChatTextOptions(['guard', 'basic'], Nothing, False) then
Result:= True;
end;
end else
begin
writeln('Failed while trying to reach Leela(2)');
TerminateScript;
end;
end;
function RescuePrince: Boolean;
begin
if Walk('leela-keli') then
begin
if OpenDoor('prisonout') and InteractNPC('joe', 'alk-', False) then
begin
ChatTextOption('beer', ClickLeft, False);
ChatTextOptions(['beer', 'lovel', 'cours', 'beer', 'perfe', 'too', 'care',
'bette', 'keep', 'two', 'wash', 'drunk'], Nothing, True);
if R_CountItem(1917) = 0 then
begin
if R_ClickItemBy(954, True, '') and InteractNPC('keli', 'ope', False) then
if ChatTextOption('overp', Nothing, True) then
WalkPath([Tile(3122, 3245)]);
if not OpenDoor('prisonin') then
begin
writeln('Failed to open prison door');
TerminateScript;
end;
if InteractNPC('ali', 'alk-', False) then
begin
ChatTextOptions(['rescu', 'kind', 'disgu', 'key', 'hand', 'pay', 'close'], Nothing, True);
if ChatTextOption('frien', Nothing, True) then
Result:= True;
end;
end;
end;
end else
begin
writeln('Failed while trying to Rescue Prince');
TerminateScript;
end;
end;
function ObtainReward: Boolean;
var
a: Integer;
CurTile: TTile;
begin
if OpenDoor('prisonin') and WalkPath([Tile(3130, 3246)]) then
begin
if OpenDoor('prisonout') and Walk('keli-ak') then
begin
InteractNPC('guardl', 'alk-', True);
if ChatTextOptions(['come', 'free'], Nothing, True) then
while (a < 6) and (GetMyPos = CurTile) do
begin
wait(500 + RandomRange(-50, 200));
Inc(a);
end;
if GetMyPos <> CurTile then
Walk('ak-hassan');
if InteractNPC('hassan', 'alk-', False) then
if ChatTextOption('etern', Nothing, True) then
Result:= True;
end;
end else
begin
writeln('Almost finished the quest, but failed to get the reward :(');
TerminateScript;
end;
end;
function SetUpPlayer: Boolean;
begin
if not LoggedIn then
LogInPlayer;
ClickNorth(true);
ChatsOff;
if GetCurrentTab <> 25 then
GameTab(25);
Result:= CheckPlayer;
end;
function PrinceAliRescue: Boolean;
begin
if StepFuncs(['SetUpPlayer', 'TalktoHassan', 'TalktoOsman', 'TalktoLeela',
'TalktoNed', 'TalkToAggie', 'TalkToKeli', 'MakeKey', 'ObtainKey',
'RescuePrince', 'ObtainReward'], [True]) then
Result:= True;
end;
procedure SetUpScript;
begin
Smart_Members := False;
Smart_Server := SMARTSERVER;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
SetUpReflectionEx(True);
MouseSpeed := 18;
DeclarePlayers;
end;
procedure MainLoop;
var
a: Integer;
begin
SetUpScript;
repeat
ClearDebug;
if PrinceAliRescue then
Players[CurrentPlayer].Status:= 'Quest successfully completed!'
else
Players[CurrentPlayer].Status:= 'Failed to complete the quest :(';
NextPlayer(False);
until (PlayersActive = 0);
for a:= 0 to HowManyPlayers do
writeln(Players[a].Name + ': ' + Players[a].Status);
end;
begin
MainLoop;
end.
Script2(not complete):
program FaladorSmith;
{$DEFINE SMART}
{$i SRL\SRL.scar}
{$i reflection\reflection.simba}
procedure WaitRand;
begin
case random(3) of
0: wait(600 + randomrange(-30, 60));
1: wait(800 + randomrange(-30, 80));
2: wait(700 + randomrange(-30, 70));
end;
end;
procedure ClickTile(WhichTile: TTile; Height, rx, ry, ClickType: Integer);
{clicks the given tile if its on the screen
0-Move
1-Left click
2-Right click}
var
coords: TPoint;
begin
coords:= TileToMS(WhichTile, Height);
case ClickType of
0:MMouse(coords.x, coords.y, rx, ry);
1:Mouse(coords.x, coords.y, rx, ry, True);
2:Mouse(coords.x, coords.y, rx, ry, False);
end;
end;
function InterfaceUp: boolean;
//returns true if interface is up
begin
if InIntArray(GetColorsBox(385, 359, 389, 366, True), 0) then
Result:= True
else
Result:= False;
end;
function ChatboxExists: boolean;
//returns true if chatbox exists
begin
if InIntArray(GetColorsBox(9, 461, 14, 471, True), 0) then
Result:= True
else
Result:= False;
end;
function WithdrawIngots: Boolean;
begin
//20503
Result:= False;
ClickTile(Tile(3061, 9705 + random(2)), 100, 10, 10, 2);
WaitOptionMultiEx(['ake'], 'action', ClickLeft, 1000);
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
Mouse(RandomRange(233, 285), RandomRange(400, 441), 0, 0, True)
else
WithdrawIngots;
while not invfull do
begin
wait(300 + randomrange(-100, 300));
if invfull then
begin
Result:= True;
break;
end;
end;
WaitRand;
end;
function ClickAnvil: Boolean;
begin
Result:= False;
ClickTile(Tile(3061, 9709), 80, 0, 0, 2);
WaitOptionMultiEx(['mith'], 'action', ClickLeft, 1000);
if DidRedClick then
Result:= True;
WaitRand;
end;
procedure Track;
begin
if ClickAnvil then
MMouse(RandomRange(221, 298), RandomRange(399, 452), 0, 0);
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
ClickMouse2(True);
while ExistsItem(28) do
begin
R_FindRandoms;
wait(500);
end;
WaitRand;
//20525-40
//20526-60
//20527-80
//20528-100
end;
procedure Rails;
begin
//20515
if WithdrawIngots and ClickAnvil then
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
Mouse(RandomRange(70, 134), RandomRange(399, 452), 0, 0, True);
while GetItemIDAt(14) <> 20515 do
begin
R_FindRandoms;
wait(250);
if GetItemIDAt(14) = 20515 then
break;
wait(250);
end;
end;
procedure BasePlate;
begin
//20516
if ClickAnvil then
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
Mouse(RandomRange(150, 211), RandomRange(399, 452), 0, 0, True);
while GetItemIDAt(28) <> 20516 do
begin
R_FindRandoms;
wait(500);
end;
WaitRand;
end;
procedure Spikes;
begin
//20517
if WithdrawIngots and ClickAnvil then
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
Mouse(RandomRange(227, 292), RandomRange(399, 452), 0, 0, True);
while GetItemIDAt(28) <> 20517 do
begin
R_FindRandoms;
wait(500);
end;
WaitRand;
end;
procedure Joint;
begin
//20518
if WithdrawIngots and ClickAnvil then
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
Mouse(RandomRange(307, 369), RandomRange(399, 452), 0, 0, True);
while GetItemIDAt(28) <> 20518 do
begin
R_FindRandoms;
wait(500);
end;
WaitRand;
end;
procedure Ties;
begin
//20519
if WithdrawIngots and ClickAnvil then
while ChatBoxExists do
begin
wait(300);
if InterfaceUp then
break;
end;
if InterfaceUp then
Mouse(RandomRange(386, 448), RandomRange(399, 452), 0, 0, True);
while GetItemIDAt(28) <> 20519 do
begin
R_FindRandoms;
wait(500);
end;
WaitRand;
end;
procedure LayTrack;
begin
WalkToTile(Tile(3064, 9715), 0, 3);
ClickTile(Tile(3067, 9716), 220, 0, 0, 0);
end;
procedure MainLoop;
var
loads: Integer;
begin
ClearDebug;
repeat
Rails;
BasePlate;
Track; //40
Spikes;
Track; //60
Joint;
Track; //80
Ties;
Track; //100
LayTrack;
Inc(loads);
writeln('Running for: ' + TimeRunning);
writeln('Loads done: ' + IntToStr(loads));
writeln('Smithing exp: ' + ToStr(1365 * loads));
until(False);
end;
begin
Smart_Members := false;
Smart_Server := 123;
Smart_Signed := true;
Smart_SuperDetail := false;
SetupSRL;
SetupReflectionEx(True);
SetupRandomTool(1000, 5, 'alarm.wav');
MouseSpeed := 15;
MainLoop;
end.