I reworked an old teleporter script by Joulaha and been using it for a while to train my mage up for alching.

Nothing ground breaking just a basic script.

Stops if you don't have Law runes in your inventory or after finishing the specific tele times indicated by the user(somewhat).

Simba Code:
program PythiusF2pTeleTrainer;
{$DEFINE SRL_USE_REMOTEINPUT} //{$DEFINE SRL_DISABLE_REMOTEINPUT}
{$I SRL/osr.Simba}

{** Reworked Joulaha's teleporter script into my own simple script **}

const
  LOGIN_NAME = '';
  LOGIN_PASS = '';
  IS_MEMBER  = False;

  teleLoc = 1; { 1:Lumby | 2:Varrock | 3:Falador }
  teleTimes = 2000; { Amount of Law Runes }

var
  xpFromSkill: integer;
  tLoc: string;
  F2PWorlds: TIntegerArray = [301, 308, 316, 335, 337, 379, 380, 382, 383, 384, 394, 397, 398, 399, 417, 418, 426, 430, 431, 433, 434, 435, 436, 437, 451, 452, 453, 454, 455, 456, 470, 471, 472, 473, 475, 476, 483, 497, 498, 499, 500, 501, 536, 537, 542, 543, 544, 545, 546, 547, 552, 553, 554, 555, 556, 557, 562, 563, 564, 565, 566, 567, 571, 573, 574, 575, 576];
  P2PWorlds: TIntegerArray = [302, 303, 304, 305, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 320, 321, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 340, 341, 343, 344, 346, 347, 348, 350, 351, 352, 354, 355, 356, 367, 358, 359, 360, 362, 367, 368, 369, 370, 374, 375, 376, 377, 378, 386, 387, 388, 389, 395, 421, 422, 424, 443, 44, 445, 463, 464, 465, 466, 477, 478, 479, 480, 481, 482, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 505, 506, 4507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 531, 532, 534, 535];

{** From Lazy's Script **}
procedure declarePlayers();
begin
  WriteLn([(Time)], 'SCRIPT: Checking if DeclarePlayers() procedure needs to run');
  if (login.IsOpen = False) then
    exit;
  WriteLn([(Time)], 'SCRIPT: Starting DeclarePlayers() procedure');
  Login.AddPlayer(LOGIN_NAME, LOGIN_PASS, '', []);
  if Login.Players[0].Password <> '' then
      begin
        WriteLn([(Time)], 'SCRIPT: Checking if player is a member');
        WriteLn([(Time)], 'SCRIPT: Switching to a user defined world');
        if IS_MEMBER = False then
          Login.SwitchToWorld(F2PWorlds[Random(0, High(F2PWorlds))])
        else
          Login.SwitchToWorld(P2PWorlds[Random(0, High(P2PWorlds))]);
        WriteLn([(Time)], 'SCRIPT: Logging player in');
        Login.LoginPlayer;
        WriteLn([(Time)], 'SCRIPT: DeclarePlayers() procedure has finished');
      end
    else
    begin
      WriteLn([(Time)], 'SCRIPT: No player details found');
      TerminateScript;
    end;
end;

{** Random basic excuse of an antiban **}
procedure doAB();
begin
  case random(100) of
    0..5: antiban.HoverSkill(ERSSkill.MAGIC, 2000, true);
    6..10: antiban.SmallRandomMouse();
    11..15: antiban.LoseFocus();
    16..20: antiban.RandomMouse();
    21..25: begin
              antiban.RandomMouse();
              wait(3000, 5000);
            end;
  end;
end;

procedure castTele();
var
  tele: integer;
  MS: Int32;
begin
  {** Tried to put mouse speed randomization
      but I don't even know if it even works **}

  MS := Mouse.Speed;
  Mouse.Speed := 30;
  Mouse.Speed := MS;
  if RSClient.IsLoggedIn then
    repeat
      case random(50) of
        0..20: begin
                Mouse.Speed := Random(24, 50);
                Mouse.Speed := MS;
               end;
      end;
      antiban.DismissRandom();
      case teleLoc of
        1: begin
            xpFromSkill := 41;
            magic.CastSpell(ERSSpell.LUMBRIDGE_TELEPORT);
          end;
        2: begin
            xpFromSkill := 35;
            magic.CastSpell(ERSSpell.VARROCK_TELEPORT);
       end;
        3: begin
            xpFromSkill := 48;
            magic.CastSpell(ERSSpell.FALADOR_TELEPORT);
          end;
      end;
      wait(50, 250);
      antiban.SmallRandomMouse();
      doAB();
      wait(3000, 3500);
      inc(tele);
      clearDebug();
      WriteLn('Teleport times (' + IntToStr(tele) + ')');
      WriteLn('XP gained (' + IntToStr(tele*xpFromSkill) + ')');
    until (tele = teleTimes)
  else login.LoginPlayer();
end;

begin
clearDebug();
declarePlayers();
castTele();
end.