I am a member over on the SRL forums (villavu) and this is a Simba script I have released to the public over there.
You will need the latest Simba (991) and the latest SMART (v8.0) in order to run this script.
Any errors that pertain to you not having these installed and updated will simply be ignore. Try googling your error and "villavu" before posting your problem here.
Setup:
Have fire staff equipped/fire runes in inventory.
Have nature runes in inventory.
Have items to be alched at the same position as alchemy symbol.
Set ALCHTOTAL to the total number of High level alchemy you wish to cast.
Fill out player information in DeclarePlayers.
Press run.
Features:
- Uses DTM to find alchemy symbol.
- Accurate debug progress report.
- Will terminate on not enough runes/items.
- Quick alching procedure.
- Can work anywhere.
- Finds and handles randoms.
- Antiban.
- Supports almost any spellbook setup.
- High/low alch compatible.
- ~70k xp/hr
Progress Reports:
Script:
You will need the latest Simba (991) and the latest SMART (v8.0) in order to run this script.
Any errors that pertain to you not having these installed and updated will simply be ignore. Try googling your error and "villavu" before posting your problem here.
Setup:
Have fire staff equipped/fire runes in inventory.
Have nature runes in inventory.
Have items to be alched at the same position as alchemy symbol.
Set ALCHTOTAL to the total number of High level alchemy you wish to cast.
Fill out player information in DeclarePlayers.
Press run.
Features:
- Uses DTM to find alchemy symbol.
- Accurate debug progress report.
- Will terminate on not enough runes/items.
- Quick alching procedure.
- Can work anywhere.
- Finds and handles randoms.
- Antiban.
- Supports almost any spellbook setup.
- High/low alch compatible.
- ~70k xp/hr
Progress Reports:
|------->P1ngs Anywhere A1cher<--------|
|--------------------------------------|
# Of Alchs 11922
XP Gained: 774930
Breaks Taken: 11
Time running: 14h 26m 00s
|--------------------------------------|
Script:
Code:
program P1ngsAWA;
{$DEFINE SMART} // Comment out if not using SMART
{$i SRL\SRL.Simba}
//============================================================================//
//================================== Setup ===================================//
//============================================================================//
//===== Select # Of Alchs To Perform =====//
//===== Fill Out DeclarePlayers =====//
//===== Have Firestaff Equipped/Fire Runes In Inventory =====//
//===== Have Nature Runes In Inventory =====//
//============================================================================//
const
ALCHTOTAL = 21000; // Total # Of Alchs To Perform
var
Alchemy: Integer; // DTM
OriginalXP, Alch: Integer; // Progress Report
BreakTime, Breaks: Integer; // Breaking
P: TPoint;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := ''; // Username
Pass := ''; // Password
Active := True; // Is Player To Be Used
Integers[0] := 0; // 0 = High Alch, 1= Low Alch
Booleans[0] := True; // Take Breaks?
Integers[1] := 65; // Average Break Time (Mins)
end;
{with Players[1] do
begin
Name := ''; // Username
Pass := ''; // Password
Active := True; // Is Player To Be Used
Integers[0] := 0; // 0 = High Alch, 1= Low Alch
Booleans[0] := True; // Take Breaks?
Integers[1] := 65; // Average Break Time (Mins)
end;}
end;
procedure SetupLogin;
begin
ClearDebug;
{$IFDEF SMART}
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
SetupSRL;
Status('Setting up..');
ActivateClient;
DeclarePlayers;
if not LoggedIn then
LoginPlayer;
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('rand');
OriginalXP := GetXPBarTotal;
ExitSquealOfFortune;
WriteLn('Lets Get Alching!');
end;
procedure LoadDTMs;
begin
case Players[0].Integers[0] of
0: Alchemy := DTMFromString('mrAAAAHic42BgYHBgYmBwBGI3IHYFYk8gdgZicyC2BuIKRgaGHCguBOIyIK5Dwq9uhzAwMTLhxBwM+AEjAQwDAPa/CCg=');
1: Alchemy := DTMFromString('m6wAAAHic42ZgYOhgYmBoB+IeJgi7G4j7obgLiBuBuA6Im4FYjJGBgQeKBYFYiBEiJgnEskAsB8RSULFHP34xsAuxo2AmRiY4lkXCMGDEQBgwkoCRAACj1grw');
end;
end;
procedure ClickAlch;
var
x,y,ri,T: Integer;
begin
Status('ClickAlch');
ri := RandomRange(-4,4);
if not LoggedIn then
NextPlayer(False);
if GameTab(Tab_Magic) then
begin
if FindDTM(Alchemy,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
Mouse(x,y,ri,ri,mouse_Left);
WriteLn('Successfully clicked alch symbol');
GetMousePos(P.x,P.y);
MarkTime(T);
repeat
Wait(RandomRange(20,40));
until(GameTab(Tab_Inv)) or (TimeFromMark(T) > 8000);
end else
begin
WriteLn('Didn''t find the alch symbol');
NextPlayer(False);
end;
end else
WriteLn('Not in magic tab @ClickAlch');
end;
procedure ClickItem;
var
x,y,T: Integer;
begin
Status('ClickItem');
if not LoggedIn then
NextPlayer(False);
if GameTab(Tab_Inv) then
begin
GetMousePos(x,y);
if ExistsItem(CoordsToItem(x,y)) then
begin
ClickMouse2(mouse_Left);
Inc(Alch);
WriteLn('Successfully clicked the item');
MarkTime(T);
repeat
Wait(RandomRange(20,40));
if FindDTM(Alchemy,x,y,MIX1,MIY1,MIX2,MIY2) then
Break;
until(TimeFromMark(T) > 8000);
end else
begin
WriteLn('Item not found @ClickItem');
NextPlayer(False);
end;
end else
WriteLn('Not in inventory @ClickItem');
end;
procedure AntiBan;
var
ri,GMS: integer;
begin
Status('AntiBan');
if not LoggedIn then
Exit;
FindNormalRandoms;
FindNonInventoryRandoms;
begin
GMS := MouseSpeed;
MouseSpeed := 10 + Random(3);
case Random(400) Of
1:
begin
WriteLn('Performing antiban');
GameTab(Tab_Stats);
HoverSkill('magic', False);
Wait(RandomRange(2000,2500));
GameTab(Tab_Magic);
ClickAlch;
end;
2:
begin
WriteLn('Performing antiban');
HoverSkill('random', False);
Wait(RandomRange(1500,2500));
GameTab(Tab_Magic);
ClickAlch;
end;
3:
begin
WriteLn('Performing antiban');
PickUpMouse;
ri := RandomRange(-3,3);
MMouse(P.x,P.y,ri,ri);
end;
4:
begin
WriteLn('Performing antiban');
RandomMovement;
ri := RandomRange(-3,3);
MMouse(P.x,P.y,ri,ri);
end;
6:
begin
WriteLn('Performing antiban');
BoredHuman;
ClickAlch;
end;
7:
begin
WriteLn('Performing antiban');
MakeCompass('rand');
end;
end;
MouseSpeed := GMS;
end;
end;
procedure ProgressReport;
var
XP,CurrentXP,Alchs: integer;
begin
CurrentXP := GetXPBarTotal;
XP := (CurrentXP - OriginalXP);
case Players[CurrentPlayer].Integers[0] of
0: Alchs := (XP / 65);
1: Alchs := (XP / 31);
end;
//ClearDebug;
WriteLn('|--------------------------------------|');
WriteLn('|------->P1ngs Anywhere A1cher<--------|');
WriteLn('|--------------------------------------|');
WriteLn('# Of Alchs ' + IntToStr(Alchs));
WriteLn('XP Gained: ' + IntToStr(XP));
if Players[CurrentPlayer].Booleans[0] then
WriteLn('Breaks Taken: ' + IntToStr(Breaks));
WriteLn('Time running: ' + (MsToTime(GetTimeRunning, Time_Short)));
WriteLn('|--------------------------------------|');
end;
procedure TimeStamp(WaitTime: Integer);
var
T: Integer;
Ticker: String;
begin
MarkTime(T);
while (WaitTime > TimeFromMark(T)) do
begin
Wait(500);
Ticker := MsToTime(WaitTime - TimeFromMark(T), Time_Short);
Status('Break remaining: ' + Ticker);
end;
end;
procedure ResetBreakTimer;
begin
BreakTime := GetSystemTime + ((Players[CurrentPlayer].Integers[1] * 60000) + RandomRange(-5 * 60000,5 * 60000));
end;
procedure TakeBreak;
var
BreakT,BreakLength: integer;
begin
if (GetSystemTime >= BreakTime) and Players[CurrentPlayer].Booleans[0] then
begin
Inc(Breaks);
ProgressReport;
ExitToLobby;
BreakLength := RandomRange(30000,1200000);
WriteLn('Taking a break for ' + (MsToTime(BreakLength, Time_Short)));
MarkTime(BreakT);
TimeStamp(BreakLength);
repeat
Wait(100);
until (BreakLength < TimeFromMark(BreakT));
Status('Logging back in..');
if not LoggedIn then
LoginPlayer;
ToggleXPBar(True);
ResetBreakTimer;
Status('');
end;
end;
procedure QuickSet;
begin
if not LoggedIn then
NextPlayer(True);
SetAngle(SRL_ANGLE_HIGH);
ToggleXPBar(True);
ExitSquealOfFortune;
end;
procedure ScriptEnd;
begin
if LoggedIn then
Logout;
WriteLn('Thank you for using P1ng''s AWA');
FreeDTM(Alchemy);
end;
begin
Disguise('P1ngs AWA v3');
AddOnTerminate('ScriptEnd');
SetupLogin;
LoadDTMs;
ResetBreakTimer;
repeat
QuickSet;
ClickAlch;
Antiban
ClickItem;
ProgressReport;
TakeBreak;
if Alch >= ALCHTOTAL then
begin
WriteLn('Player ' + IntToStr(CurrentPlayer) + ' has completed their alchs.');
NextPlayer(False);
Alch := 0;
end;
until(AllPlayersInactive);;
end.




