• Log in or sign up for an account here: https://www.sythe.org/login

P1ng's Anywhere Alcher

P1ng

Newcomer
Joined
Aug 24, 2012
Sythe Gold
0
Messages
18
Location
Australia
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:
|------->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.
 
Potamus
Hey P1ng nice to see you here. As you can probably guess, J J from Villavu :P Good alching script :)
 
Good scripting :)
 
Nice script you have here, this will really come in handy as I really need 99 mage, but am getting pretty tired of using an autoclicker.
 
Runescape Gamblingrunescape gambling
Back
Top