SRL Archive - Archive

whacko999 - SRL Member Application


Jakkle

2011-05-14 10:56:53

How Long have You Played Runescape?
4 Year(s)


Are you affilated in anyway with Jagex LTD?
no

Were you Referred to SRL?
rogeruk


What is your general programming knowledge?
Pascal and HTML.


Are you a member of any other communities?
no


Tell us about yourself…
From: whacko999
Hi, I'm Whacko. I've been playing runescape since early 2007 and started using bot scripts around Aug 07, I got caught, banned, not good times lol. I built a small army of 11 bots and had a new main. I looked into scripting when it was colour, started doing a little then stopped as I was working alot and was doing loads in my life so I had no time for it. I played on and off on my new main over the years untill I got a 99 in wcing. At the begining of this year (2011) I looked to get back into botting and found powerbot witch was good untill they and every1 got hacked. I then came back to good old srl :) which i think is the best site by far. I've started to learn scripting since ive got back onto this site and im really enjoying doing it.

Interests:
Learning Computer Programing
Computing (XBOX360, PC).
Playing Poker.
Playing Football.



Please show us one (or multiple) of your scripts.
program F2P_RuneCrafter;
{$DEFINE SMART}
{$i srl\srl.scar}
{$i reflection\reflection.simba}

const
WORLD = 25;
MEMBERS = False;
SIGNED = True;
DETAIL = False;
MOUSE_SPEED = 14;
MOUSE_SPEED_RANDOMNESS = 8;
SWITCH_EVERY = 0; //))How many minutes to change player (Leave as 0 to disable)((

Var
Banked, RuneCraftingLevelStart, LoadsToDo, TLevels, TBanked, EssenceCount, TEssenceCount,
TRunesCount, RunesCount, Start, Every, SwitchChar: Integer;
EssenceIDs, KeepIDs, RunesIDs, TalismanIDs, TiaraIDs: TVariantArray;
TheItem : TInvItemArray;
SWITCH : Boolean;

Procedure DeclarePlayers;
Begin
HowManyPlayers := 3;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

With Players[0] Do
Begin
Name := '';
Pass := '';
Nick := '';
Active := True; // True or False ?
Pin := '';
Strings[0] := 'Tiara'; // 'Talisman', 'Tiara'.
Strings[1] := 'Air'; // 'Air', 'Water', 'Earth', 'Fire', 'Mind', 'Body'.
Integers[0] := 25; // How many loads you want the player to do.
BoxRewards := ['Xp'];
Skill := 'runecraft';
End;

With Players[1] Do
Begin
Name := '';
Pass := '';
Nick := '';
Active := False;
Pin := '';
Strings[0] := 'Talisman'; // 'Talisman', 'Tiara'.
Strings[1] := 'Air'; // 'Air', 'Water', 'Earth', 'Fire', 'Mind', 'Body'.
Integers[0] := 25; // How many loads you want the player to do.
BoxRewards := ['Xp'];
Skill := 'runecraft';
End;

With Players[2] Do
Begin
Name := '';
Pass := '';
Nick := '';
Active := False;
Pin := '';
Strings[0] := 'Talisman'; // 'Talisman', 'Tiara'.
Strings[1] := 'Earth'; // 'Air', 'Water', 'Earth', 'Fire', 'Mind', 'Body'.
Integers[0] := 25; // How many loads you want the player to do.
BoxRewards := ['Xp'];
Skill := 'runecraft';
End;

End;

///////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// DONT touch anything unless you know what your doing \\
//=======================================================\\
Function HaveTalismanEssence: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (R_ItemExistsEx(TalismanIDs, TheItem)) And (R_ItemExistsEx(EssenceIDs, TheItem)) Then
Result := True;
End;

Function HaveTiaraEssence: Boolean;
Var
TIDS: TIntegerArray;
Begin
If (Not (LoggedIn)) Then
Exit;
TIDS := [5527, 5549, 5533, 5543, 5539, 5547, 5535, 5537, 5545, 5529, 5541, 5531];
Result := FALSE;
If (R_ItemExistsEx(EssenceIDs, TheItem)) And (InIntArray(TIDS, GetEquippedIDAt(0))) Then
Result := True;
End;

Function HaveRunes: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (R_ItemExistsEx(RunesIDs, TheItem)) Then
Result := True;
End;

Function FindIf(What :String): Boolean;
Var
NPCSID: TVariantArray;
NPCs: TNPC;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := False
R_FindRandoms;
Case Lowercase(What) of
'banker' : NPCSID := [496, 497, 553, 2759, 6200];
'music' : NPCSID := [5442, 8699, 8698, 8700, 8707];
end;
NPCs := GetNPCMulti(NPCSID);
If(NPCs.Name <> '')Then
Result := TRUE;
End;

Function FindIt(What :String): Boolean;
Var
ObjectID: TIntegerArray;
TheObject: TRSObject;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := False
R_FindRandoms;
Case Lowercase(What) of
'portal' : ObjectID := [2468, 2469, 2467, 2465, 2466, 2470];
'alter' : ObjectID := [2481, 2482, 2480, 2478, 2479, 2483];
'rock' : ObjectID := [2455, 2456, 2454, 2452, 2453, 2457];
'random' : ObjectID := [38407, 35647, 35669, 21249, 43520, 43486];
end;
TheObject := GetObjectByIDEx(ObjectID, 0, 6);
If (TheObject.ID > 0) Then
Result := TRUE;
End;

Function ClickIt(What :String): Boolean;
Var
ObjectID: TIntegerArray;
TheObject: TRSObject;
MSPoint: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
R_FindRandoms;
Case Lowercase(What) of
'alter' : ObjectID := [2481, 2482, 2480, 2478, 2479, 2483];
'rock' : ObjectID := [2455, 2456, 2454, 2452, 2453, 2457];
end;
TheObject := GetObjectByIDEx(ObjectID, 0, 8);
If (TheObject.ID > 0) Then
Begin
MSPoint := TileToMS(TheObject.Tile, 1);
Mouse(MSPoint.X, MSPoint.Y - 10, 2, 2, TRUE);
Result := TRUE;
End;
TheObject := NULL_RSOBJECT;
End;

Function ClickPortal: Boolean;
Var
PortalIDs: TIntegerArray;
Portal: TRSObject;
MSPoint: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
R_FindRandoms;
PortalIDs := [2468, 2469, 2467, 2465, 2466, 2470];
Portal := GetObjectByIDEx(PortalIDs, 0, 8);
If(Portal.ID > 0)Then
Begin
MSPoint := TileToMS(Portal.Tile, 0);
Mouse(MSPoint.X, MSPoint.Y, 3, 3, TRUE);
Result := TRUE;
End;
Portal := NULL_RSOBJECT;
End;

Function DoISwitchChar: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (Banked >= LoadsToDo) Then
Begin
Writeln('Player has done all its loads!');
NextPlayer(FALSE);
Result := TRUE;
End;
If(SWITCH)Then
Begin
If(PlayersActive > 1)Then
Begin
If (TimeFromMark(Start) >= Every) Then
Begin
Writeln('Player has done its time!');
NextPlayer(TRUE);
Result := TRUE;
End;
End;
End;
End;

Procedure Antiban;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
Case Random(200) Of
150..155:
Begin
GameTab(RandomRange(tab_Combat, tab_Logout));
Wait(900 + Random(1000));
End;
110..115: PickUpMouse;
70..80:
Begin
MMouse(RandomRange(-100, 500), RandomRange(-100, 500), 100, 100);
Wait(RandomRange(200, 1000));
End;
40..42:
Begin
HoverSkill('Runecrafting', FALSE);
Wait(RandomRange(1000, 2000));
End;
1..5: SleepAndMoveMouse(1000 + Random(500));
End;
GameTab(tab_Inv);
R_FindRandoms;
End;

Procedure GoToAirRock;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to Air Rock');
R_findRandoms;
SetRun(TRUE);
R_WebWalk(Point(3170, 3428));
R_WebWalk(Point(3155, 3417));
R_WebWalk(Point(3143, 3413));
R_WebWalk(Point(3128, 3405));
Wait (2500 + Random(500));
R_findRandoms;
R_MakeCompass('N');
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Cant Find Air Rock, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3126, 3403));
Wait (500 + Random(500));
FindIt('rock');
R_findRandoms;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToEarthRock;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to Earth Rock');
R_findRandoms;
SetRun(TRUE);
R_WebWalk(Point(3262, 3428));
R_WebWalk(Point(3275, 3428));
Wait (2000 + Random(500));
R_WebWalk(Point(3279, 3440));
R_WebWalk(Point(3290, 3458));
R_MakeCompass('N');
R_WebWalk(Point(3305, 3472));
Wait (2500 + Random(500));
R_findRandoms;
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Cant Find Earth Rock, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3307, 3475));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToFireRock1;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to Fire Music');
R_findRandoms;
SetRun(TRUE);
R_WebWalk(Point(3279, 3180));
R_WebWalk(Point(3286, 3201));
R_WebWalk(Point(3291, 3213));
Wait (2000 + Random(1000));
SetAngle(True);
R_findRandoms;
End;
If (Not (FindIf('Music'))) Then
Begin
Writeln ('Cant Find Fire Music, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3293, 3213));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIf('Music')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToFireRock2;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('music')) Then
Begin
R_findRandoms;
Writeln ('Walking to Fire Rock');
R_WebWalk(Point(3302, 3236));
R_WebWalk(Point(3310, 3251));
R_WebWalk(Point(3313, 3254));
R_MakeCompass('N');
SetAngle(True);
R_findRandoms;
Wait (2500 + Random(500));
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Cant Find Fire Rock, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3314, 3256));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToWaterRock;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to Water Rock');
R_findRandoms;
SetRun(TRUE);
R_WebWalk(Point(3275, 3174));
Wait (1000 + Random(1000));
R_WebWalk(Point(3250, 3173));
R_WebWalk(Point(3241, 3169));
Wait (1000 + Random(1000));
R_WebWalk(Point(3226, 3162));
R_WebWalk(Point(3201, 3162));
R_WebWalk(Point(3186, 3162));
R_MakeCompass('N');
SetAngle(True);
R_findRandoms;
Wait (2500 + Random(500));
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Cant Find Water Rock, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3185, 3165));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToMindRock1;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to Music');
R_findRandoms;
SetRun(TRUE);
R_WebWalk(Point(2952, 3380));
Wait (1000 + Random(1000));
R_WebWalk(Point(2965, 3388));
Wait (1000 + Random(1000));
R_WebWalk(Point(2967, 3411));
Wait (2000 + Random(1000));
R_findRandoms;
End;
If (Not (FindIf('Music'))) Then
Begin
Writeln ('Cant Find Mind Music, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(2968, 3412));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIf('Music')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToMindRock2;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('music')) Then
Begin
Writeln ('Walking to Mind Rock');
R_FindRandoms;
R_WebWalk(Point(2988, 3422));
Wait (1000 + Random(1000));
R_WebWalk(Point(2984, 3438));
Wait (1000 + Random(1000));
R_WebWalk(Point(2977, 3453));
Wait (1000 + Random(1000));
R_WebWalk(Point(2973, 3471));
Wait (1000 + Random(1000));
R_WebWalk(Point(2974, 3487));
Wait (1000 + Random(1000));
R_WebWalk(Point(2978, 3502));
Wait (1000 + Random(1000));
R_WebWalk(Point(2980, 3513));
Wait (2000 + Random(1000));
R_findRandoms;
R_MakeCompass('N');
SetAngle(True);
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Cant Find Mind Rock, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(2982, 3515));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToBodyRock1;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to Music');
R_findRandoms;
R_WebWalk(Point(3082, 3503));
SetRun(TRUE);
Wait (1000 + Random(1000));
R_WebWalk(Point(3066, 3512));
Wait (1000 + Random(1000));
R_WebWalk(Point(3051, 3511));
Wait (1000 + Random(1000));
R_WebWalk(Point(3051, 3479));
Wait (1000 + Random(1000));
R_WebWalk(Point(3057, 3471));
Wait (2000 + Random(1000));
R_findRandoms;
End;
If (Not (FindIf('Music'))) Then
Begin
Writeln ('Cant Find Body Music, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3057, 3471));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIf('Music')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToBodyRock2;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('music')) Then
Begin
Writeln ('Walking to Mind Rock');
R_findRandoms;
R_WebWalk(Point(3050, 3456));
Wait (1000 + Random(1000));
R_WebWalk(Point(3051, 3447));
Wait (2000 + Random(1000));
R_findRandoms;
R_MakeCompass('N');
SetAngle(True);
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Cant Find Body Rock, Going to Try Again');
Tries := 0;
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3052, 3445));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
Exit;
End;
End;

Procedure FindRock;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('rock')) Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Rock');
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
Repeat
R_FindRandoms;
Wait (RandomRange(400, 800));
If (R_ItemExistsEx(TalismanIDs, TheItem)) Then
Begin
MouseItem(1, true);
Wait (RandomRange(400, 800));
End;
If (ClickIt ('rock')) Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Rock');
Wait (RandomRange(2800, 3200));
End;
If (Players[CurrentPlayer].Strings[1] = 'Body') Then
Exit;
Inc(Tries);
Until (FindIt ('portal')) Or (Tries > 3);
Writeln ('We Are Inside The ' + (Players[CurrentPlayer].Strings[1]) + ' Temple');
Exit;
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
Repeat
R_FindRandoms;
Wait (RandomRange(400, 800));
ClickIt ('rock');
Wait (RandomRange(1000, 1500));
If (Players[CurrentPlayer].Strings[1] = 'Body') Then
Exit;
Inc(Tries);
Until (FindIt ('portal')) Or (Tries > 3);
Exit;
End;
End;
If (Not (FindIt('rock'))) Then
Logout;
End;

Procedure GoToAirAlter;
Begin
If (Not (LoggedIn)) Then
Exit;
Wait (500 + Random(500));
If (FindIt('alter')) Then
Exit;
If (Not (FindIt('alter'))) Then
Begin
Writeln ('Walking To Air Alter');
R_WebWalk(Point(2842, 4832));
End;
End;

Procedure GoToEarthAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
R_findRandoms;
If (FindIt('portal')) Then
Begin
Writeln ('Walking to Earth Alter');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(2657, 4839));
Wait (2500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt ('alter')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToFireAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
R_findRandoms;
If (FindIt('portal')) Then
Begin
Writeln ('Walking to Earth Alter');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(2584, 4840));
Wait (2000 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt ('alter')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToWaterAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
R_findRandoms;
If (FindIt('portal')) Then
Begin
Writeln ('Walking to Water Alter');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3486, 4834));
Wait (1500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('alter')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToMindAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
R_findRandoms;
If (FindIt('portal')) Then
Begin
Writeln ('Walking to Mind Alter');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(2786, 4839));
Wait (2000 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('alter')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToBodyAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
R_findRandoms;
Begin
Writeln ('Walking to Body Alter');
Repeat
Wait (1000 + Random(500));
R_WebWalk(Point(2522, 4838));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('alter')) Or (Tries > 5);
Exit;
End;
End;

Procedure FindAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('alter')) Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Alter');
Repeat
Wait (RandomRange(500, 800));
If (ClickIt ('alter')) Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Alter');
Repeat
Wait (RandomRange(300, 800));
Antiban;
R_FindRandoms;
Wait (RandomRange(500, 800));
If (LevelUp) Then
Begin
Inc(TLevels);
Inc(Players[CurrentPlayer].Integers[2]);
End;
Inc(Tries);
Until (LevelUp) Or (Tries > 3);
End;
Inc(Tries);
Until (HaveRunes) Or (Tries > 5);
Writeln ('Got ' + (Players[CurrentPlayer].Strings[1]) + ' Runes');
Exit
End;
End;

Procedure GoToAirPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
If (HaveRunes) Then
Begin
Writeln ('Walking to Air Portal');
Repeat
R_WebWalk(Point(2842, 4828));
Wait (500 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('portal')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToEarthPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
If (HaveRunes) Then
Begin
Writeln ('Walking to Earth Portal');
Repeat
R_WebWalk(Point(2656, 4828));
Wait (2500 + Random(1000));
R_findRandoms;
Inc(Tries);
Until (FindIt('portal')) Or (Tries > 5);
Exit;
End;
End;

Procedure GoToFirePortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
If (HaveRunes) Then
Begin
Writeln ('Walking to Fire Portal');
Repeat
R_WebWalk(Point(2577, 4846));
Wait (2000 + Random(1000));
R_findRandoms;
Inc(Tries);
Until (FindIt('portal'));
Exit;
End;
End;

Procedure GoToWaterPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
If (HaveRunes) Then
Begin
Writeln ('Walking to Water Portal');
Repeat
R_WebWalk(Point(3495, 4832));
Wait (2000 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('portal'));
Exit;
End;
End;

Procedure GoToMindPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
If (HaveRunes) Then
Begin
Writeln ('Walking to Mind Portal');
Repeat
R_WebWalk(Point(2793, 4828));
Wait (2000 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('portal'));
Exit;
End;
End;

Procedure GoToBodyPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
Wait (500 + Random(500));
If (HaveRunes) Then
Begin
Writeln ('Walking to Body Portal');
Repeat
R_WebWalk(Point(2522, 4833));
Wait (2000 + Random(500));
R_findRandoms;
Inc(Tries);
Until (FindIt('portal'));
Exit;
End;
End;

Procedure FindPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Portal')) Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Portal');
Repeat
R_FindRandoms;
Wait (1000 + Random(1000));
If (ClickPortal) Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Portal');
Wait (500 + Random(500));
End;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
If (FindIt('rock')) Then
Writeln ('We Are Outside The ' + (Players[CurrentPlayer].Strings[1]) + ' Temple');
Exit;
End;
If (Not (FindIt('rock'))) Then
Logout;
End;

Procedure GoToAirRest;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Rock')) Then
Begin
Writeln ('Walking to Air Rest');
Repeat
R_findRandoms;
R_WebWalk(Point(3143, 3412));
R_WebWalk(Point(3153, 3422));
Wait (1000 + Random(500));
R_FindRandoms;
Inc(Tries);
Until (FindIf('music')) Or (Tries > 5);
Exit;
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Not Teleported, Finding Air Portal Again');
GoToAirPortal;
FindPortal;
GoToAirRest;
End;
End;

Procedure GoToEarthRest;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Rock')) Then
Begin
Writeln ('Walking to Earth Rest');
Repeat
R_FindRandoms;
R_WebWalk(Point(3292, 3463));
R_WebWalk(Point(3290, 3455));
Wait (1000 + Random(500));
R_FindRandoms;
Inc(Tries);
Until (FindIf('music')) Or (Tries > 5);
Exit;
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Not Teleported, Finding Earth Portal Again');
GoToEarthPortal;
FindPortal;
GoToEarthRest;
End;
End;

Procedure GoToFireRest;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Rock')) Then
Begin
Writeln ('Walking to Fire Rest');
Repeat
R_FindRandoms;
R_WebWalk(Point(3304, 3238));
R_WebWalk(Point(3297, 3223));
R_WebWalk(Point(3292, 3212));
Wait (1000 + Random(500));
R_FindRandoms;
Inc(Tries);
Until (FindIf('music')) Or (Tries > 5);
Exit;
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Not Teleported, Finding Fire Portal Again');
GoToFirePortal;
FindPortal;
GoToFireRest;
End;
End;

Procedure GoToMindRest;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Rock')) Then
Begin
Writeln ('Walking to Earth Rest');
Repeat
R_FindRandoms;
R_WebWalk(Point(2976, 3492));
Wait (1000 + Random(500));
R_WebWalk(Point(2973, 3473));
Wait (1000 + Random(500));
R_WebWalk(Point(2976, 3450));
Wait (1000 + Random(500));
R_WebWalk(Point(2989, 3421));
Wait (1000 + Random(500));
R_WebWalk(Point(2968, 3408));
Wait (1000 + Random(500));
R_FindRandoms;
Inc(Tries);
Until (FindIf('music')) Or (Tries > 5);
Exit;
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Not Teleported, Finding Mind Portal Again');
GoToMindPortal;
FindPortal;
GoToMindRest;
End;
End;

Procedure GoToBodyRest;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Rock')) Then
Begin
Writeln ('Walking to Body Rest');
Repeat
R_FindRandoms;
R_WebWalk(Point(3047, 3456));
R_WebWalk(Point(3056, 3472));
Wait (1000 + Random(500));
R_FindRandoms;
Inc(Tries);
Until (FindIf('music')) Or (Tries > 5);
Exit;
End;
If (Not (FindIt('rock'))) Then
Begin
Writeln ('Not Teleported, Finding Body Portal Again');
GoToBodyPortal;
FindPortal;
GoToBodyRest;
End;
End;

Procedure FindMusic;
Var
MusicIDs: TVariantArray;
Energy: Integer;
NPCs: TNPC;
NPC_Tile: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Music');
MusicIDs := [5442, 8699, 8698, 8700, 8707];
R_Flag;
NPCs := GetNPCMulti(MusicIDs);
NPC_Tile := TileToMS(NPCs.Tile, NPCs.Height);
If(NPCs.Name <> '')Then
Begin
Mouse(NPC_Tile.x, NPC_Tile.y, 1, 1, FALSE);
If(WaitOptionMultiEx(['isten'], 'action', ClickLeft, 1000))Then
Begin
Writeln ('Clicked on Music');
Repeat
Wait (RandomRange(700, 1100));
Antiban;
R_GetMMLevels('run');
Energy := R_GetMMLevels('run');
Until(Energy >= 100);
Writeln ('Health is Full');
Exit;
End;
If (Not (Energy >= 100)) Then
FindMusic;
End;
End;

Procedure GoToAirBank;
Begin
If (Not (LoggedIn)) Then
Exit;
SetRun(TRUE);
Writeln ('Walking to Bank');
R_WebWalk(Point(3169, 3425));
Wait (1000 + Random(500));
R_WebWalk(Point(3186, 3429));
Wait (1000 + Random(500));
R_WebWalk(Point(3183, 3436));
If (FindIf('banker')) Then
Writeln ('Found Air banker');
Exit;
If (Not (FindIf('banker'))) Then
Begin
Writeln ('Cant Find Air banker');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3184, 3438));
Wait (500 + Random(500));
R_findRandoms;
Until (FindIf('banker'));
Exit;
End;
End;

Procedure GoToEarthBank;
Begin
If (Not (LoggedIn)) Then
Exit;
SetRun(TRUE);
Writeln ('Walking to Bank');
R_WebWalk(Point(3281, 3428));
Wait (1000 + Random(500));
R_WebWalk(Point(3253, 3428));
Wait (1000 + Random(500));
R_WebWalk(Point(3254, 3418));
Wait (1000 + Random(500));
R_FindRandoms;
If (FindIf('banker')) Then
Writeln ('Found Earth banker');
Exit;
If (Not (FindIf('banker'))) Then
Begin
Writeln ('Cant Find Earth banker');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3252, 3418));
Wait (500 + Random(500));
R_findRandoms;
Until (FindIf('banker'));
Exit;
End;
End;

Procedure GoToFireBank;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
SetRun(TRUE);
Writeln ('Walking to Bank');
R_WebWalk(Point(3284, 3199));
Wait (1000 + Random(500));
R_WebWalk(Point(3279, 3180));
Wait (1000 + Random(500));
R_WebWalk(Point(3269, 3167));
Wait (1000 + Random(500));
R_FindRandoms;
If (FindIf('banker')) Then
Writeln ('Found Fire banker');
Exit;
If (Not (FindIf('banker'))) Then
Begin
Writeln ('Cant Find Fire banker');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3269, 3167));
Wait (500 + Random(500));
R_findRandoms;
Until (FindIf('banker'));
Exit;
End;
End;

Procedure GoToWaterBank;
Var
Energy: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
SetRun(TRUE);
Writeln ('Walking to Bank');
R_WebWalk(Point(3201, 3162))
Wait (1000 + Random(500));
R_WebWalk(Point(3226, 3162));
Wait (1000 + Random(500));
R_WebWalk(Point(3241, 3169));
Wait (1000 + Random(500));
R_WebWalk(Point(3255, 3173));
Wait (1000 + Random(1000));
R_WebWalk(Point(3276, 3176));
Wait (1000 + Random(1000));
R_WebWalk(Point(3269, 3167));
Wait (1000 + Random(1000));
Begin
Writeln('About to Rest');
R_Rest(100)
Repeat
R_FindRandoms;
Wait (1000 + Random(500));
Antiban;
R_GetMMLevels('run');
Energy := R_GetMMLevels('run');
Until(Energy >= 100);
Writeln ('Health is Full');
R_WebWalk(Point(3269, 3167));
End;
End;

Procedure GoToMindBank;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
SetRun(TRUE);
Writeln ('Walking to Bank');
R_WebWalk(Point(2964, 3383));
Wait (1000 + Random(500));
R_WebWalk(Point(2943, 3374));
Wait (1000 + Random(500));
R_WebWalk(Point(2947, 3366));
Wait (1000 + Random(500));
R_FindRandoms;
If (FindIf('banker')) Then
Writeln ('Found Mind banker');
Exit;
If (Not (FindIf('banker'))) Then
Begin
Writeln ('Cant Find Mind banker');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(2947, 3365));
Wait (500 + Random(500));
R_findRandoms;
Until (FindIf('banker'));
Exit;
End;
End;

Procedure GoToBodyBank;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
SetRun(TRUE);
Writeln ('Walking to Bank');
R_WebWalk(Point(3051, 3484));
Wait (1000 + Random(500));
R_WebWalk(Point(3052, 3512));
Wait (1000 + Random(500));
R_WebWalk(Point(3071, 3511));
Wait (1000 + Random(500));
R_WebWalk(Point(3082, 3503));
Wait (1000 + Random(500));
R_WebWalk(Point(3094, 3491));
Wait (1000 + Random(1000));
R_FindRandoms;
If (FindIf('banker')) Then
Writeln ('Found Body banker');
Exit;
If (Not (FindIf('banker'))) Then
Begin
Writeln ('Cant Find Body banker');
Repeat
Wait (500 + Random(500));
R_WebWalk(Point(3094, 3491));
Wait (500 + Random(500));
R_findRandoms;
Until (FindIf('banker'));
Exit;
End;
End;

Procedure BankRunes;
Var
Tries, EssenceID, MindTalisman, AirTalisman, EarthTalisman, FireTalisman,
WaterTalisman, BodyTalisman, EarthTiara, FireTiara, WaterTiara, AirTiara,
MindTiara, BodyTiara: Integer;
ID: TVariantArray;
NPCs: TNPC;
NPC_Tile: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
R_MakeCompass('N');
SetAngle(True);
Writeln ('About to bank');
Tries := 0;
//Talisman
EarthTalisman := 1440;
FireTalisman := 1442;
WaterTalisman := 1444;
AirTalisman := 1438;
MindTalisman := 1448;
BodyTalisman := 1446;
//Tiara
EarthTiara := 5535;
FireTiara := 5537;
WaterTiara := 5531;
AirTiara := 5527;
MindTiara := 5529;
BodyTiara := 5533;
EssenceID := 1436;
ID := [496, 497, 553, 2759, 6200];
R_Flag;
NPCs := GetNPCMulti(ID);
NPC_Tile := TileToMS(NPCs.Tile, NPCs.Height);
If(NPCs.Name <> '')Then
Begin
Mouse(NPC_Tile.x, NPC_Tile.y, 0, 0, FALSE);
If(WaitOptionMultiEx(['ank'], 'action', ClickLeft, 1000))Then
Begin
Writeln ('Clicked Banker');
Repeat
R_FindRandoms;
Wait(500 + Random(500));
If (R_PinScreen) Then
InPin(Players[CurrentPlayer].Pin);
Inc(Tries);
Until (R_BankScreen) Or (Tries > 10);
If (Tries > 10) Then
BankRunes;
Wait(300 + Random(200));
If (R_BankScreen) Then
Begin
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
RunesCount := GetItemStackSizeAt(2);
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
RunesCount := GetItemStackSizeAt(1);
End;
IncEx(TRunesCount, RunesCount);
IncEx(Players[CurrentPlayer].Integers[3], RunesCount);
R_DepositAllButEx(KeepIDs);
Writeln ('Deposited ' + (Players[CurrentPlayer].Strings[1]) + ' Runes');
Inc(TBanked);
Inc(Players[CurrentPlayer].Integers[1]);
End;
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
If (Not(R_ItemExistsEx(TalismanIDs, TheItem))) Then
Begin
Writeln ('Withdrawing ' + (Players[CurrentPlayer].Strings[1]) + ' Talisman');
Case Players[CurrentPlayer].Strings[1] Of
'Air' : R_WithdrawItem(AirTalisman, 1);
'Water' : R_WithdrawItem(WaterTalisman, 1);
'Earth' : R_WithdrawItem(EarthTalisman, 1);
'Fire' : R_WithdrawItem(FireTalisman, 1);
'Mind' : R_WithdrawItem(MindTalisman, 1);
'Body' : R_WithdrawItem(BodyTalisman, 1);
End;
End;
If (Not(R_ItemExistsEx(EssenceIDs, TheItem))) Then
Begin
R_WithdrawItem(EssenceID, 27);
Writeln ('Got Essence');
EssenceCount := R_CountItem(EssenceID);
IncEx(TEssenceCount, EssenceCount);
IncEx(Players[CurrentPlayer].Integers[6], EssenceCount);
End;
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
If (Not(R_ItemExistsEx(EssenceIDs, TheItem))) Then
Begin
Writeln ('Withdrawing Essence');
R_WithdrawItem(EssenceID, 28);
Writeln ('Got Essence');
EssenceCount := R_CountItem(EssenceID);
IncEx(TEssenceCount, EssenceCount);
IncEx(Players[CurrentPlayer].Integers[6], EssenceCount);
End;
End;
Case Random(1) of
0 : CloseWindow;
End;
If (Not (R_ItemExistsEx(EssenceIDs, TheItem))) Then
Begin
Writeln ('No More Essence, Logging Out');
Logout;
End;
Writeln ('Finished Banking');
R_FindRandoms;
End;
Wait(300 + Random(300));
If (R_ItemExistsEx(RunesIDs, TheItem)) Then
BankRunes;
End;
End;

Procedure ProgressReport;
Var
I, RunesPerHour, RuneCraftingLevelNow : Integer;

Begin
RunesPerHour := ((RunesCount * 3600) / (GetTimeRunning / 1000));
RuneCraftingLevelNow := R_GetSkillLevel(Skill_RuneCrafting);
Players[CurrentPlayer].Integers[5] := RuneCraftingLevelNow;
SRLRandomsReport;
Writeln('[=====================================================]');
Writeln('[---------(Whacko999s: F2P RuneCrafter V1.10)---------]');
Writeln('[=====================================================]');
Writeln('[= Overall ');
Writeln('[= Running For ' + MsToTime(GetTimeRunning, Time_Formal));
Writeln('[= Banked ' + IntToStr(TBanked) + ' times.');
Writeln('[= Essence Used ' + IntToStr(TEssenceCount));
Writeln('[= Crafted ' + IntToStr(TRunesCount) + ' Runes.');
Writeln('[= Levels Gained ' + IntToStr(TLevels));
Writeln('[=====================================================]');
For i := 0 To High(Players) Do
Begin
RunesPerHour := 0;
If(PlayerWorked(i) > 0)Then
Begin
RunesPerHour := ((Players[i].Integers[3] * 3600) / (PlayerWorked(i) / 1000));
Writeln('[= Player ' + IntToStr(i));
Writeln('[= Crafting ' + (Players[CurrentPlayer].Strings[0]) + ' Runes.');
Writeln('[= Active ' + BoolToStr(Players[i].Active));
Writeln('[= Worked ' + MsToTime(PlayerWorked(i), Time_Formal));
Writeln('[= Start RC Level: ' + IntToStr(Players[i].Integers[4]));
Writeln('[= Current RC Level: ' + IntToStr(Players[i].Integers[5]));
Writeln('[= Levels Gained ' + IntToStr(Players[i].Integers[2]));
Writeln('[= Loads ' + IntToStr(Players[i].Integers[1]));
Writeln('[= Essence Used ' + IntToStr(Players[i].Integers[6]));
Writeln('[= ' + (Players[CurrentPlayer].Strings[0]) + ' Runes Crafted ' + IntToStr(Players[i].Integers[3]));
Writeln('[= ' + (Players[CurrentPlayer].Strings[0]) + ' Runes Crafted Per Hour ' + IntToStr(RunesPerHour));
Writeln('[=====================================================]');
End;
End;
End;

Procedure EarthLoop;
Begin
Banked := Players[CurrentPlayer].Integers[1];
GoToEarthRock;
FindRock;
GoToEarthAlter;
FindAlter;
GoToEarthPortal;
FindPortal;
GoToEarthRest;
FindMusic;
GoToEarthBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
End;

Procedure FireLoop;
Begin
Banked := Players[CurrentPlayer].Integers[1];
GoToFireRock1;
FindMusic;
GoToFireRock2;
FindRock;
GoToFireAlter;
FindAlter;
GoToFirePortal;
FindPortal;
GoToFireRest;
FindMusic;
GoToFireBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
End;

Procedure WaterLoop;
Begin
Banked := Players[CurrentPlayer].Integers[1];
GoToWaterRock;
FindRock;
GoToWaterAlter;
FindAlter;
GoToWaterPortal;
FindPortal;
GoToWaterBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
End;

Procedure AirLoop;
Begin
Banked := Players[CurrentPlayer].Integers[1];
GoToAirRock;
FindRock;
GoToAirAlter;
FindAlter;
GoToAirPortal;
FindPortal;
GoToAirRest;
FindMusic;
GoToAirBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
End;

Procedure MindLoop;
Begin
Banked := Players[CurrentPlayer].Integers[1];
GoToMindRock1;
FindMusic;
GoToMindRock2;
FindRock;
GoToMindAlter;
FindAlter;
GoToMindPortal;
FindPortal;
GoToMindRest;
FindMusic;
GoToMindBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
End;

Procedure BodyLoop;
Begin
Banked := Players[CurrentPlayer].Integers[1];
GoToBodyRock1;
FindMusic;
GoToBodyRock2;
FindRock;
GoToBodyAlter;
FindAlter;
GoToBodyPortal;
FindPortal;
GoToBodyRest;
FindMusic;
GoToBodyBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
End;

Procedure Mainloop;
Begin
If (Not (LoggedIn)) Then
Exit;
Writeln ('Script Started');
Repeat
LampSkill := Players[CurrentPlayer].Skill;
LoadsToDo := Players[CurrentPlayer].Integers[0];
If(Players[CurrentPlayer].Integers[4] = 0)Then
Begin
RuneCraftingLevelStart := R_GetSkillLevel(Skill_RuneCrafting);
Players[CurrentPlayer].Integers[4] := RuneCraftingLevelStart;
End;
MarkTime(Start);
If(SWITCH_EVERY > 0)Then
Begin
SWITCH := TRUE;
SwitchChar := SWITCH_EVERY + RandomRange(1, 9);
Every := RandomRange(SWITCH_EVERY * 60000, SwitchChar * 60000);
WRiteln('Switching Every(MS): ' + IntToStr(Every));
WRiteln('Switching Every(Mins): ' + IntToStr(Every / 60000));
End;
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
If (Not (HaveTalismanEssence)) Then
Begin
BankRunes;
End;
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
If (R_ItemExistsEx(TiaraIDs, TheItem)) Then
Begin
R_ClickItemBy(TiaraIDs, False, 'wear');
End;
If (Not (HaveTiaraEssence)) Then
Begin
BankRunes;
End;
End;
Banked := 0;
Repeat
Case Players[CurrentPlayer].Strings[1] Of
'Air' : AirLoop;
'Water' : WaterLoop;
'Earth' : EarthLoop;
'Fire' : FireLoop;
'Mind' : MindLoop;
'Body' : BodyLoop;
End;
Until (Not LoggedIn) Or (DoISwitchChar);
Wait(1000 + Random(1200));
If (Not LoggedIn) Then
NextPlayer(FALSE);
Until(AllPlayersInactive);
TerminateScript;
End;

Begin
Smart_Members := MEMBERS;
Smart_Server := WORLD;
Smart_Signed := SIGNED;
SetupSRL;
SetUpReflection;
DeclarePlayers;
LoginPlayer;
ClearDebug;
R_FindRandoms;
R_MakeCompass('N');
SetAngle(True);
EssenceIDs := [1436, 7936];
TalismanIDs := [1438, 1450, 1446, 1452, 1454, 1456, 1440, 1442, 1458, 1448, 1462, 1444];
TiaraIDs := [5527, 5549, 5533, 5543, 5539, 5547, 5535, 5537, 5545, 5529, 5541, 5531];
RunesIDs := [556, 557, 554, 555, 565, 559, 562, 564, 560, 563, 558, 561];
KeepIDs := [1438, 1450, 1446, 1452, 1454, 1456, 1440, 1442, 1458, 1448, 1462, 1444, 1436];
Mainloop;
End.

Bobzilla69

2011-05-14 11:09:13

WOW that's alot of code.

what i have seen looks good so far, will keep reading and get back to you :)

Jakkle

2011-05-14 11:23:23

From: Bobzilla69
WOW that's alot of code.

what i have seen looks good so far, will keep reading and get back to you :)


Yeah it is and could be shortened with another walk procedure but i quite like webwalk it works and low cpu usage. Thanks for looking, hear from you soon :)

Rich

2011-05-14 12:46:31

Perhaps make a walking procedure?
function R_WebWalkPath(Points : TPointArray; WaitTime, RandWait : Integer) : Boolean
var
I : Integer;

begin
Result:= False;
for I:= 0 to High(Points) do
begin
if not R_WebWalk(Points[I]) then
begin
WriteLn('Could not walk to point (' + IntToStr(Points[I].X) + ', ' + IntToStr(Points[I].Y) + ')');
Exit;
end;
Wait(WaitTime + Random(RandWait));
end;
Result:= True;
end;
Will read over the rest of the code later and vote.

Jakkle

2011-05-14 13:23:41

From: Rich
Perhaps make a walking procedure?
function R_WebWalkPath(Points : TPointArray; WaitTime, RandWait : Integer) : Boolean
var
I : Integer;

begin
Result:= False;
for I:= 0 to High(Points) do
begin
if not R_WebWalk(Points[I]) then
begin
WriteLn('Could not walk to point (' + IntToStr(Points[I].X) + ', ' + IntToStr(Points[I].Y) + ')');
Exit;
end;
Wait(WaitTime + Random(RandWait));
end;
Result:= True;
end;
Will read over the rest of the code later and vote.


Yeah good idea, I was thinking something along them lines, will look more into this tomorrow as I'm off out now.

Thanks for showing me that function :) big help.

Echo_

2011-05-14 15:22:42

Amazing script, yes from me ;)

Magiic

2011-05-14 17:08:20

I'm not going to vote; having not been back for that long, I don't think I should have the arrogance to place myself above others in that sense. If I were to, it would be a yes. I would like however, to see some more complicated colour methods, for instance, you could try learning to walk with colour. If that was in there I would have voted yes regardless. Please note, I don't comment on this because I at all doubt reflection's abilities, rather because I believe (and I don't see how anyone could disagree) that colour is much more complicated, and would show a higher level of intelligence, in that sense.

I also wonder, why did you change the DeclarePlayers procedure so much? It just looks ugly to me. :p

Awkwardsaw

2011-05-14 17:24:26

i'm not familier with you, as your not to active. although the script is really nice :)

ill vote later

cycrosism

2011-05-14 19:34:57

From what I can see the whole script relies on reflection.

There is nothing here that uses colour.

To find the bank npc, to find the portal, even to detect the talismans its all reflection. Walking also relies on WebWalk, you should try some colour procedures and some procedures from SRL (Because that's what we test people on) and not base the whole script on reflection.

Sorry, no from me.

Griff

2011-05-14 20:03:42

Yes from me. Try to become a bit more active if you want others' votes.

Jakkle

2011-05-14 22:58:02

From: Echo_
Amazing script, yes from me ;)


Thanks alot :)

From: SandoS
I would like however, to see some more complicated colour methods, for instance, you could try learning to walk with colour.


I will go and see what I can do with colour next. Glad to hear what you think :)

From: Awkwardsaw
i'm not familier with you, as your not to active. although the script is really nice :)

ill vote later


I know i only started coming back on this site in the last 3 months. Thank you :)

From: cycrosism
From what I can see the whole script relies on reflection.

There is nothing here that uses colour.


I started with reflection because that is fairly easy and its getting me to understand how to script, I will be moving on to learning colour.

From: Griff
Yes from me. Try to become a bit more active if you want others' votes.


Thanks :) I will be on as much as I can but obviously work comes first :P

Floor66

2011-05-15 05:51:33

Sorry, no.

I won't mention anything about the use of reflection because that would make me a hypocrite :P But I will say that I'd like to see you do some TPA stuff.

But one thing is that your functions are so inefficient. You need to use loops and arrays properly for all your walking.

Jakkle

2011-05-15 11:34:29

From: Floor66
Sorry, no.

I won't mention anything about the use of reflection because that would make me a hypocrite :P But I will say that I'd like to see you do some TPA stuff.

But one thing is that your functions are so inefficient. You need to use loops and arrays properly for all your walking.


I have used TPA befor with walkpath, wasn't sure if I could use it with webwalk but Rich has shown me how to. I'm still in early learning so I will pick up how to make things better as I go along ?.. Thanks for the reply, all replys help me see what to do and where I should improve :)

MylesMadness

2011-05-15 12:11:46

I was under the impression that with webwalk, you just picked the final tile, and it made the path for you.

I don't know how to vote this. I am always a strong supporter of of well writen reflection code, which this is. But based on recent trends pure reflections scripts are not liked. I'm holding my vote

Rich

2011-05-15 13:07:42

From: MylesMadness
I was under the impression that with webwalk, you just picked the final tile, and it made the path for you.
I actually don't know how it works, but the function I made up there stops the need of having many r_WebWalks.

After looking over the script, most of it is walking. Although I support the use of Reflection, I still like to see some colour in scripts, so it's a no from me.

Jakkle

2011-05-15 20:15:57

From: MylesMadness
I was under the impression that with webwalk, you just picked the final tile, and it made the path for you.

I don't know how to vote this. I am always a strong supporter of of well writen reflection code, which this is. But based on recent trends pure reflections scripts are not liked. I'm holding my vote


WebWalk: if you was to set a final tile only would cause you problems when walls and other things are in the way so setting an array is best. I also use waits to make sure it has past the obsticle befor clicking the next point or it can walk into a wall. Fair enough dude :)

From: Rich
I actually don't know how it works, but the function I made up there stops the need of having many r_WebWalks.

After looking over the script, most of it is walking. Although I support the use of Reflection, I still like to see some colour in scripts, so it's a no from me.


Thanks for taking the time and giving your opinion :)

ReEDIT:
This is the script updated (Released version).

program F2P_RuneCrafter;
{$DEFINE SMART}
{$i srl\srl.scar}
{$i reflection\reflection.simba}

Var
Banked, RuneCraftingLevelStart, LoadsToDo, TLevels, TBanked, EssenceCount, TEssenceCount,
TRunesCount, RunesCount, Start, Every, SwitchChar, BreakRounds, TotalBreaks: Integer;
EssenceIDs, KeepIDs, RunesIDs, TalismanIDs, TiaraIDs: TVariantArray;
TIDS: TIntegerArray;
TheItem : TInvItemArray;
SWITCH : Boolean;

const
WORLD = 25;
MEMBERS = False;
SIGNED = True;
DETAIL = False;
SWITCH_EVERY = 0; //How many minutes to switch to the next active player.
//(Leave as 0 to disable) for single player breaking.
//// For breaking: Time is in mins.
Run_Time = 120; //Time you want script to run befor breaking.
Break_Time = 30; //Time you want script to break for.
Rand_RT = 10; //Random Run Time
Rand_BT = 10; //Random Break Time
//(Leave Run_Time as 0 to disable) If multiplayer use Switch_Every.
Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

With Players[0] Do
Begin
Name := '';
Pass := '';
Nick := '';
Active := True; // Use player, True or False ?
Pin := '';
Strings[0] := 'Talisman'; // 'Talisman', 'Tiara' ?
Strings[1] := 'Air'; // 'Air', 'Water', 'Earth', 'Fire', 'Mind', 'Body' ?
Integers[0] := 25; // How many loads you want the player to do ?
BoxRewards := ['Xp'];
Skill := 'runecraft';
End;

{ With Players[1] Do //Remove { befor (with) and after (end;) to add players
Begin
Name := '';
Pass := '';
Nick := '';
Active := True;
Pin := '';
Strings[0] := 'Talisman'; // 'Talisman', 'Tiara' ?
Strings[1] := 'Air'; // 'Air', 'Water', 'Earth', 'Fire', 'Mind', 'Body' ?
Integers[0] := 25; // How many loads you want the player to do ?
BoxRewards := ['Xp'];
Skill := 'runecraft';
End; }

{ With Players[2] Do
Begin
Name := '';
Pass := '';
Nick := '';
Active := True;
Pin := '';
Strings[0] := 'Talisman'; // 'Talisman', 'Tiara' ?
Strings[1] := 'Air'; // 'Air', 'Water', 'Earth', 'Fire', 'Mind', 'Body' ?
Integers[0] := 25; // How many loads you want the player to do ?
BoxRewards := ['Xp'];
Skill := 'runecraft';
End; }

End;

///////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// DONT touch anything unless you know what your doing \\
//=======================================================\\

Function HaveTalismanEssence: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (R_ItemExistsEx(TalismanIDs, TheItem)) And (R_ItemExistsEx(EssenceIDs, TheItem)) Then
Result := True;
End;

Function HaveTiaraEssence: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (InIntArray(TIDS, GetEquippedIDAt(0))) And (R_ItemExistsEx(EssenceIDs, TheItem)) Then
Result := True;
End;

Function HaveRunes: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (R_ItemExistsEx(RunesIDs, TheItem)) Then
Result := True;
End;

Function RockPath1: TPointArray;
Begin
Case Players[CurrentPlayer].Strings[1] Of
'Air' : Result := [Point(3170, 3428), Point(3155, 3417), Point(3143, 3413), Point(3128, 3405)];
'Water' : Result := [Point(3275, 3174), Point(3250, 3173), Point(3241, 3169), Point(3226, 3162), Point(3201, 3162), Point(3186, 3162)];
'Earth' : Result := [Point(3262, 3428), Point(3275, 3428), Point(3279, 3440), Point(3290, 3458), Point(3305, 3472)];
'Fire' : Result := [Point(3279, 3180), Point(3286, 3201), Point(3291, 3213)];
'Mind' : Result := [Point(2952, 3380), Point(2965, 3388), Point(2967, 3411)];
'Body' : Result := [Point(3082, 3503), Point(3066, 3512), Point(3051, 3511), Point(3051, 3479), Point(3057, 3471)];
End;
End;

Function RockPath2: TPointArray;
Begin
Case Players[CurrentPlayer].Strings[1] Of
'Air' : Exit;
'Water' : Exit;
'Earth' : Exit;
'Fire' : Result := [Point(3302, 3236), Point(3310, 3251), Point(3313, 3254)];
'Mind' : Result := [Point(2988, 3422), Point(2984, 3438), Point(2977, 3453), Point(2973, 3471), Point(2974, 3487), Point(2978, 3502), Point(2980, 3513)];
'Body' : Result := [Point(3050, 3456), Point(3051, 3447)];
End;
End;

Function MusicPath: TPointArray;
Begin
Case Players[CurrentPlayer].Strings[1] Of
'Air' : Result := [Point(3143, 3412), Point(3153, 3422)];
'Water' : Exit;
'Earth' : Result := [Point(3292, 3463), Point(3290, 3455)];
'Fire' : Result := [Point(3304, 3238), Point(3297, 3223), Point(3292, 3212)];
'Mind' : Result := [Point(2976, 3492), Point(2973, 3473), Point(2976, 3450), Point(2989, 3421), Point(2968, 3408)];
'Body' : Result := [Point(3047, 3456), Point(3056, 3472)];
End;
End;

Function BankPath: TPointArray;
Begin
Case Players[CurrentPlayer].Strings[1] Of
'Air' : Result := [Point(3169, 3425), Point(3186, 3429), Point(3183, 3436)];
'Water' : Result := [Point(3201, 3162), Point(3226, 3162), Point(3241, 3169), Point(3255, 3173), Point(3276, 3176), Point(3269, 3167)];
'Earth' : Result := [Point(3281, 3428), Point(3253, 3428), Point(3254, 3418)];
'Fire' : Result := [Point(3284, 3199), Point(3279, 3180), Point(3269, 3167)];
'Mind' : Result := [Point(2964, 3383), Point(2943, 3374), Point(2947, 3366)];
'Body' : Result := [Point(3051, 3484), Point(3052, 3512), Point(3071, 3511), Point(3082, 3503), Point(3094, 3491)];
End;
End;

///////////////////////////////////////
// Thanks to Rich for this function. //
// R_WebWalkPath. //
///////////////////////////////////////
function R_WebWalkPath(Points : TPointArray; WaitTime, RandWait : Integer) : Boolean;
var
I : Integer;
begin
Result:= False;
for I:= 0 to High(Points) do
begin
if not R_WebWalk(Points[I]) then
begin
WriteLn('Could not walk to point (' + IntToStr(Points[I].X) + ', ' + IntToStr(Points[I].Y) + ')');
Exit;
end;
Wait(WaitTime + Random(RandWait));
end;
Result:= True;
end;

{*******************************************************************************
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
By: Echo_
Description: Takes brakes according to the minute values entered
*******************************************************************************}
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
var
w, x, y, z: Integer;
begin
if not LoggedIn then Exit;
If (Run_Time = 0) 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
Writeln('Taking a break for about ' + IntToStr(BreakFor) + ' minutes.');
Logout;
Wait((x) + (z));
Writeln('Logging in.');
LoginPlayer;
Result := LoggedIn;
FindNormalRandoms;
IncEx(BreakRounds, (w) + (x));
IncEx(TotalBreaks, 1);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
end;
end;

if (HowManyPlayers > 1) then
begin
if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
begin
Writeln('Taking a break for about ' + IntToStr(BreakFor) + ' minutes.');
Logout;
IncEx(BreakRounds, (w));
IncEx(TotalBreaks, 1);
NextPlayer(True);
Exit;
while (LoggedIn) do Wait((x) + (z));
NextPlayer(True);
end;
end;
end;

Function FindIf(What :String): Boolean;
Var
NPCSID: TVariantArray;
NPCs: TNPC;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := False
R_FindRandoms;
Case Lowercase(What) of
'banker' : NPCSID := [496, 497, 553, 2759, 6200];
'music' : NPCSID := [5442, 8699, 8698, 8700, 8707];
end;
NPCs := GetNPCMulti(NPCSID);
If(NPCs.Name <> '')Then
Result := TRUE;
NPCs := NULL_NPC;
End;

Function FindIt(What :String): Boolean;
Var
ObjectID: TIntegerArray;
TheObject: TRSObject;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := False
R_FindRandoms;
Case Lowercase(What) of
'portal' : ObjectID := [2468, 2469, 2467, 2465, 2466, 2470];
'alter' : ObjectID := [2481, 2482, 2480, 2478, 2479, 2483];
'rock' : ObjectID := [2455, 2456, 2454, 2452, 2453, 2457];
'random' : ObjectID := [38407, 35647, 35669, 21249, 43520, 43486];
end;
TheObject := GetObjectByIDEx(ObjectID, 0, 6);
If (TheObject.ID > 0) Then
Result := TRUE;
TheObject := NULL_RSOBJECT;
End;

Function ClickIt(What :String): Boolean;
Var
ObjectID: TIntegerArray;
TheObject: TRSObject;
MSPoint: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
R_FindRandoms;
Case Lowercase(What) of
'alter' : ObjectID := [2481, 2482, 2480, 2478, 2479, 2483];
'rock' : ObjectID := [2455, 2456, 2454, 2452, 2453, 2457];
end;
TheObject := GetObjectByIDEx(ObjectID, 0, 8);
If (TheObject.ID > 0) Then
Begin
MSPoint := TileToMS(TheObject.Tile, 1);
Mouse(MSPoint.X, MSPoint.Y - 10, 2, 2, TRUE);
Result := TRUE;
End;
TheObject := NULL_RSOBJECT;
End;

Function ClickPortal: Boolean;
Var
PortalIDs: TIntegerArray;
Portal: TRSObject;
MSPoint: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
R_FindRandoms;
PortalIDs := [2468, 2469, 2467, 2465, 2466, 2470];
Portal := GetObjectByIDEx(PortalIDs, 0, 8);
If(Portal.ID > 0)Then
Begin
MSPoint := TileToMS(Portal.Tile, 0);
Mouse(MSPoint.X, MSPoint.Y, 1, 1, TRUE);
Result := TRUE;
End;
Portal := NULL_RSOBJECT;
End;

Function DoISwitchChar: Boolean;
Begin
If (Not (LoggedIn)) Then
Exit;
Result := FALSE;
If (Banked >= LoadsToDo) Then
Begin
Writeln('Player has done all its loads!');
NextPlayer(FALSE);
Result := TRUE;
End;
If(SWITCH)Then
Begin
If(PlayersActive > 1)Then
Begin
If (TimeFromMark(Start) >= Every) Then
Begin
Writeln('Player has done its time!');
NextPlayer(TRUE);
Result := TRUE;
End;
End;
End;
End;

Procedure Antiban;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
Case Random(200) Of
150..155:
Begin
GameTab(RandomRange(tab_Combat, tab_Logout));
Wait(800 + Random(1000));
End;
110..115: PickUpMouse;
70..80:
Begin
MMouse(RandomRange(-100, 500), RandomRange(-100, 500), 100, 100);
Wait(RandomRange(200, 1000));
End;
40..42:
Begin
HoverSkill('Runecrafting', FALSE);
Wait(RandomRange(800, 1000));
End;
1..5: SleepAndMoveMouse(700 + Random(500));
End;
GameTab(tab_Inv);
R_FindRandoms;
End;

Procedure GoToRock1;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('banker')) Then
Begin
Writeln ('Walking to ' + (Players[CurrentPlayer].Strings[1]) + ' Rock')
Tries := 0;
Repeat
R_findRandoms;
SetRun(TRUE);
R_WebWalkPath(RockPath1, 1000, 1000);
R_findRandoms;
R_MakeCompass('N');
Wait(RandomRange(2000, 2500));
Inc(Tries);
Until (FindIt('rock')) Or (FindIf('music')) Or (Tries > 3);
If (Tries >= 3) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' rock, logging out');
Logout;
NextPlayer(False);
Exit;
End;
Exit;
End;
If (Not (FindIf('banker'))) Then
Begin
Writeln ('Banker not found!! Walking to ' + (Players[CurrentPlayer].Strings[1]) + ' Rock anyway')
Tries := 0;
Repeat
R_findRandoms;
R_WebWalkPath(RockPath1, 1000, 1000);
R_findRandoms;
R_MakeCompass('N');
Wait(RandomRange(2000, 2500));
Inc(Tries);
Until (FindIt('rock')) Or (FindIf('music')) Or (Tries > 3);
If (Tries >= 3) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' rock, logging out');
Logout;
NextPlayer(False);
End;
End;
End;

Procedure GoToRock2;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIf('music')) Then
Begin
Repeat
R_findRandoms;
SetRun(TRUE);
R_WebWalkPath(RockPath2, 1000, 1000);
R_findRandoms;
R_MakeCompass('N');
Wait(RandomRange(2000, 2500));
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 5);
If (Tries >= 5) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' rock, logging out');
Logout;
NextPlayer(False);
End;
End;
End;

Procedure FindRock;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('rock')) Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Rock');
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
Repeat
R_FindRandoms;
If (R_ItemExistsEx(TalismanIDs, TheItem)) Then
Begin
MouseItem(1, true);
Wait (RandomRange(400, 800));
End;
If (ClickIt ('rock')) Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Rock');
Wait(RandomRange(2000, 2500));
End;
If (Players[CurrentPlayer].Strings[1] = 'Body') Then
Exit;
Inc(Tries);
Until (FindIt ('portal')) Or (Tries > 10);
If (FindIt ('portal')) Then
Begin
Writeln ('We Are Inside The ' + (Players[CurrentPlayer].Strings[1]) + ' Temple');
Exit;
End;
If (Tries >= 10) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Rock, logging out');
Logout;
NextPlayer(False);
Exit;
End;
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
Repeat
R_FindRandoms;
ClickIt ('rock');
Wait (RandomRange(1500, 2000));
If (Players[CurrentPlayer].Strings[1] = 'Body') Then
Exit;
Inc(Tries);
Until (FindIt ('portal')) Or (Tries > 10);
If (FindIt ('portal')) Then
Begin
Writeln ('We Are Inside The ' + (Players[CurrentPlayer].Strings[1]) + ' Temple');
Exit;
End;
If (Tries >= 10) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Rock, logging out');
Logout;
NextPlayer(False);
End;
End;
End;
End;

Procedure GoToAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (Not (FindIt('alter'))) Then
Begin
Writeln ('Walking To ' + (Players[CurrentPlayer].Strings[1]) + ' Alter');
Repeat
R_findRandoms;
Case Players[CurrentPlayer].Strings[1] Of
'Air' : R_WebWalk(Point(2842, 4832));
'Water' : R_WebWalk(Point(3486, 4834));
'Earth' : R_WebWalk(Point(2657, 4839));
'Fire' : R_WebWalk(Point(2584, 4840));
'Mind' : R_WebWalk(Point(2786, 4839));
'Body' : R_WebWalk(Point(2522, 4838));
End;
Wait (500 + Random(500));
R_findRandoms;
Until (FindIt('alter')) Or (Tries > 3);
If (Tries >= 3) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Alter, logging out');
Logout;
NextPlayer(False);
End;
End;
End;

Procedure FindAlter;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('alter')) Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Alter');
Repeat
Wait (RandomRange(500, 800));
If (ClickIt ('alter')) Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Alter');
Repeat
Wait (RandomRange(300, 800));
Antiban;
R_FindRandoms;
Wait (RandomRange(500, 800));
If (LevelUp) Then
Begin
Inc(TLevels);
Inc(Players[CurrentPlayer].Integers[2]);
End;
Inc(Tries);
Until (LevelUp) Or (Tries > 3);
End;
Inc(Tries);
Until (HaveRunes) Or (Tries > 5);
If (HaveRunes) Then
Begin
Writeln ('Got ' + (Players[CurrentPlayer].Strings[1]) + ' Runes');
Exit;
End;
If (Tries >= 5) Then
Begin
Writeln ('Not Got ' + (Players[CurrentPlayer].Strings[1]) + ' Runes, logging out');
Logout;
NextPlayer(False);
End;
End;
End;

Procedure GoToPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Wait (500 + Random(500));
Tries := 0;
If (Players[CurrentPlayer].Strings[1] = 'Air') Then
begin
Writeln ('Walking To Air Portal');
Repeat
R_WebWalk(Point(2842, 4828));
Wait (1000 + Random(500));
Until (FindIt('portal')) Or (Tries > 3);
If (Tries >= 3) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Portal, logging out');
Logout;
NextPlayer(FALSE);
Exit;
End;
End;
If (Not (FindIt('Portal'))) Then
Begin
Writeln ('Walking To ' + (Players[CurrentPlayer].Strings[1]) + ' Portal');
Repeat
R_findRandoms;
Case Players[CurrentPlayer].Strings[1] Of
'Air' : R_WebWalk(Point(2842, 4828));
'Water' : R_WebWalk(Point(3495, 4832));
'Earth' : R_WebWalk(Point(2656, 4828));
'Fire' : R_WebWalk(Point(2577, 4846));
'Mind' : R_WebWalk(Point(2793, 4828));
'Body' : R_WebWalk(Point(2522, 4833));
End;
Wait (1000 + Random(500));
R_findRandoms;
Until (FindIt('portal')) Or (Tries > 3);
If (Tries >= 3) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Portal, logging out');
Logout;
NextPlayer(FALSE);
End;
End;
End;

Procedure FindPortal;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
Tries := 0;
If (FindIt('Portal')) Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Portal');
Repeat
R_FindRandoms;
Wait (500 + Random(500));
If (ClickPortal) Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Portal');
Wait (500 + Random(500));
End;
Inc(Tries);
Until (FindIt('rock')) Or (Tries > 10);
If (Tries >= 10) Then
Begin
Writeln ('Cant find ' + (Players[CurrentPlayer].Strings[1]) + ' rock, Logging out');
Logout;
NextPlayer(FALSE);
End;
End;
End;

Procedure GoToMusic;
Var
Tries: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIt('rock')) Then
Begin
Writeln ('Walking To ' + (Players[CurrentPlayer].Strings[1]) + ' Music');
Repeat
R_findRandoms;
SetRun(TRUE);
R_WebWalkPath(MusicPath, 1000, 1000);
R_findRandoms;
R_MakeCompass('N');
Wait(RandomRange(1000, 1500));
Inc(Tries);
Until (FindIf('music')) Or (Tries > 3);
If (Tries >= 3) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Music');
Logout;
NextPlayer(FALSE);
End;
End;
End;

Procedure FindMusic;
Var
MusicIDs: TVariantArray;
Energy: Integer;
NPCs: TNPC;
NPC_Tile: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
MusicIDs := [5442, 8699, 8698, 8700, 8707];
R_Flag;
NPCs := GetNPCMulti(MusicIDs);
NPC_Tile := TileToMS(NPCs.Tile, NPCs.Height);
If(NPCs.Name <> '')Then
Begin
Writeln ('Found ' + (Players[CurrentPlayer].Strings[1]) + ' Music');
Mouse(NPC_Tile.x, NPC_Tile.y, 1, 1, FALSE);
If(WaitOptionMultiEx(['isten'], 'action', ClickLeft, 1000))Then
Begin
SleepAndMoveMouse(200 + Random(500));
Writeln ('Clicked on Music');
Repeat
Wait (RandomRange(700, 1100));
Antiban;
Energy := R_GetMMLevels('run');
Until(Energy >= 100);
Writeln ('Health is Full');
Exit;
End;
End;
NPCs := NULL_NPC;
End;

Procedure GoToBank;
Var
Energy: Integer;
Begin
If (Not (LoggedIn)) Then
Exit;
If (FindIf('music')) Or (FindIt('rock')) Then
Begin
R_findRandoms;
SetRun(TRUE);
R_WebWalkPath(BankPath, 1000, 1000);
R_findRandoms;
R_MakeCompass('N');
If (Players[CurrentPlayer].Strings[1] = 'water') Then
Begin
Writeln('About to Rest');
R_Rest(100)
Repeat
R_FindRandoms;
Wait (1000 + Random(500));
Antiban;
R_GetMMLevels('run');
Energy := R_GetMMLevels('run');
Until(Energy >= 100);
Writeln ('Health is Full');
R_WebWalk(Point(3269, 3167));
End;
Wait(RandomRange(1000, 1500));
If (FindIf('banker')) Then
Exit;
End;
End;

Procedure BankRunes;
Var
Tries, EssenceID, MindTalisman, AirTalisman, EarthTalisman, FireTalisman,
WaterTalisman, BodyTalisman, EarthTiara, FireTiara, WaterTiara, AirTiara,
MindTiara, BodyTiara: Integer;
ID: TVariantArray;
NPCs: TNPC;
NPC_Tile: TPoint;
Begin
If (Not (LoggedIn)) Then
Exit;
R_FindRandoms;
R_MakeCompass('N');
SetAngle(True);
Writeln ('About to bank');
Banked := 0;
Tries := 0;
//Talisman
EarthTalisman := 1440;
FireTalisman := 1442;
WaterTalisman := 1444;
AirTalisman := 1438;
MindTalisman := 1448;
BodyTalisman := 1446;
//Tiara
EarthTiara := 5535;
FireTiara := 5537;
WaterTiara := 5531;
AirTiara := 5527;
MindTiara := 5529;
BodyTiara := 5533;
EssenceID := 1436;
ID := [496, 497, 553, 2759, 6200];
R_Flag;
NPCs := GetNPCMulti(ID);
NPC_Tile := TileToMS(NPCs.Tile, NPCs.Height);
If(NPCs.Name <> '')Then
Begin
Mouse(NPC_Tile.x, NPC_Tile.y, 0, 0, FALSE);
If(WaitOptionMultiEx(['ank'], 'action', ClickLeft, 1000))Then
Begin
Writeln ('Clicked ' + (Players[CurrentPlayer].Strings[1]) + ' Banker');
Repeat
R_FindRandoms;
Wait(500 + Random(500));
If (R_PinScreen) Then
InPin(Players[CurrentPlayer].Pin);
Inc(Tries);
Until (R_BankScreen) Or (Tries > 10);
If (Tries > 10) Then
Begin
Writeln ('Could not find ' + (Players[CurrentPlayer].Strings[1]) + ' Banker, Logging out');
Logout;
NextPlayer(False);
Exit;
End;
Wait(300 + Random(200));
If (R_BankScreen) Then
Begin
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
RunesCount := GetItemStackSizeAt(2);
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
RunesCount := GetItemStackSizeAt(1);
End;
IncEx(TRunesCount, RunesCount);
IncEx(Players[CurrentPlayer].Integers[3], RunesCount);
R_DepositAllButEx(KeepIDs);
Writeln ('Deposited ' + (Players[CurrentPlayer].Strings[1]) + ' Runes');
Inc(TBanked);
Inc(Players[CurrentPlayer].Integers[1]);
End;
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
If (Not(R_ItemExistsEx(TalismanIDs, TheItem))) Then
Begin
Writeln ('Withdrawing ' + (Players[CurrentPlayer].Strings[1]) + ' Talisman');
Case Players[CurrentPlayer].Strings[1] Of
'Air' : R_WithdrawItem(AirTalisman, 1);
'Water' : R_WithdrawItem(WaterTalisman, 1);
'Earth' : R_WithdrawItem(EarthTalisman, 1);
'Fire' : R_WithdrawItem(FireTalisman, 1);
'Mind' : R_WithdrawItem(MindTalisman, 1);
'Body' : R_WithdrawItem(BodyTalisman, 1);
End;
End;
If (Not(R_ItemExistsEx(EssenceIDs, TheItem))) Then
Begin
Writeln ('Withdrawing Essence');
R_WithdrawItem(EssenceID, 27);
EssenceCount := R_CountItem(EssenceID);
IncEx(TEssenceCount, EssenceCount);
IncEx(Players[CurrentPlayer].Integers[6], EssenceCount);
End;
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
If (Not(R_ItemExistsEx(EssenceIDs, TheItem))) Then
Begin
Writeln ('Withdrawing Essence');
R_WithdrawItem(EssenceID, 28);
EssenceCount := R_CountItem(EssenceID);
IncEx(TEssenceCount, EssenceCount);
IncEx(Players[CurrentPlayer].Integers[6], EssenceCount);
End;
End;
Case Random(1) of
0 : CloseWindow;
End;
If (Not (R_ItemExistsEx(EssenceIDs, TheItem))) Then
Begin
Writeln ('No More Essence, Logging Out');
Logout;
NextPlayer(False)
End;
Writeln ('Finished Banking');
R_FindRandoms;
End;
Wait(300 + Random(300));
If (R_ItemExistsEx(RunesIDs, TheItem)) Then
BankRunes;
End;
If (Not (Loggedin)) Then
NextPlayer(False);
NPCs := NULL_NPC;
End;

Procedure ProgressReport;
Var
I, RunesPerHour, RuneCraftingLevelNow : Integer;

Begin
RunesPerHour := ((RunesCount * 3600) / (GetTimeRunning / 1000));
RuneCraftingLevelNow := R_GetSkillLevel(Skill_RuneCrafting);
Players[CurrentPlayer].Integers[5] := RuneCraftingLevelNow;
SRLRandomsReport;
Writeln('[=====================================================]');
Writeln('[---------(Whacko999s: F2P RuneCrafter V1.20)---------]');
Writeln('[=====================================================]');
Writeln('[= Overall ');
Writeln('[= Running For ' + MsToTime(GetTimeRunning, Time_Formal));
Writeln('[= Banked ' + IntToStr(TBanked) + ' times.');
Writeln('[= Essence Used ' + IntToStr(TEssenceCount));
Writeln('[= Crafted ' + IntToStr(TRunesCount) + ' Runes.');
Writeln('[= Levels Gained ' + IntToStr(TLevels));
Writeln('[=====================================================]');
For i := 0 To High(Players) Do
Begin
RunesPerHour := 0;
If(PlayerWorked(i) > 0)Then
Begin
RunesPerHour := ((Players[i].Integers[3] * 3600) / (PlayerWorked(i) / 1000));
Writeln('[= Player ' + IntToStr(i));
Writeln('[= Crafting ' + (Players[CurrentPlayer].Strings[1]) + ' Runes.');
Writeln('[= Active ' + BoolToStr(Players[i].Active));
Writeln('[= Worked ' + MsToTime(PlayerWorked(i), Time_Formal));
Writeln('[= Start RC Level: ' + IntToStr(Players[i].Integers[4]));
Writeln('[= Current RC Level: ' + IntToStr(Players[i].Integers[5]));
Writeln('[= Levels Gained ' + IntToStr(Players[i].Integers[2]));
Writeln('[= Loads ' + IntToStr(Players[i].Integers[1]));
Writeln('[= Essence Used ' + IntToStr(Players[i].Integers[6]));
Writeln('[= ' + (Players[i].Strings[1]) + ' Runes Crafted ' + IntToStr(Players[i].Integers[3]));
Writeln('[= ' + (Players[i].Strings[1]) + ' Runes Crafted Per Hour ' + IntToStr(RunesPerHour));
Writeln('[=====================================================]');
End;
End;
End;

Procedure Mainloop;
Begin
If (Not (LoggedIn)) Then
Exit;
Writeln ('Script Started');
Repeat
LampSkill := Players[CurrentPlayer].Skill;
LoadsToDo := Players[CurrentPlayer].Integers[0];
If(Players[CurrentPlayer].Integers[4] = 0)Then
Begin
RuneCraftingLevelStart := R_GetSkillLevel(Skill_RuneCrafting);
Players[CurrentPlayer].Integers[4] := RuneCraftingLevelStart;
End;
MarkTime(Start);
If(SWITCH_EVERY > 0)Then
Begin
SWITCH := TRUE;
SwitchChar := SWITCH_EVERY + RandomRange(1, 9);
Every := RandomRange(SWITCH_EVERY * 60000, SwitchChar * 60000);
WRiteln('Switching Every(MS): ' + IntToStr(Every));
WRiteln('Switching Every(Mins): ' + IntToStr(Every / 60000));
End;
If (Players[CurrentPlayer].Strings[0] = 'Talisman') Then
Begin
If (Not (HaveTalismanEssence)) Then
Begin
BankRunes;
End;
End;
If (Players[CurrentPlayer].Strings[0] = 'Tiara') Then
Begin
If (Not (HaveTiaraEssence)) Then
Begin
BankRunes;
End;
End;
Repeat
Banked := Players[CurrentPlayer].Integers[1];
BreakHandler(Run_Time, Break_Time, Rand_RT, Rand_BT);
GoToRock1;
FindMusic;
GoToRock2;
FindRock;
GoToAlter;
FindAlter;
GoToPortal;
FindPortal;
GoToMusic;
FindMusic;
GoToBank;
BankRunes;
ProgressReport;
Writeln(IntToStr(Players[CurrentPlayer].Integers[1]) + '/' + IntToStr(LoadsToDo));
Until (Not LoggedIn) Or (DoISwitchChar);
Wait(1000 + Random(1200));
Until(AllPlayersInactive);
TerminateScript;
End;

Begin
Smart_Members := MEMBERS;
Smart_Server := WORLD;
Smart_Signed := SIGNED;
MouseSpeed := RandomRange(8, 18);
SetupSRL;
SetUpReflection;
DeclarePlayers;
LoginPlayer;
ClearDebug;
R_FindRandoms;
R_MakeCompass('N');
SetAngle(True);
EssenceIDs := [1436, 7936];
TalismanIDs := [1438, 1450, 1446, 1452, 1454, 1456, 1440, 1442, 1458, 1448, 1462, 1444];
TIDS := [5527, 5549, 5533, 5543, 5539, 5547, 5535, 5537, 5545, 5529, 5541, 5531];
TiaraIDs := [5527, 5549, 5533, 5543, 5539, 5547, 5535, 5537, 5545, 5529, 5541, 5531];
RunesIDs := [556, 557, 554, 555, 565, 559, 562, 564, 560, 563, 558, 561];
KeepIDs := [1438, 1450, 1446, 1452, 1454, 1456, 1440, 1442, 1458, 1448, 1462, 1444, 1436];
Mainloop;
End.

WT-Fakawi

2011-05-19 15:46:43

In. Welcome!