Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

Discussion in 'Outdated RS Scripts' started by Sp0rk eh, Oct 3, 2007.

Sp0rk-eh's Mage Arena Enchanter (M.A.E.)
  1. Unread #1 - Oct 3, 2007 at 10:33 PM
  2. Sp0rk eh
    Joined:
    May 17, 2007
    Posts:
    217
    Referrals:
    0
    Sythe Gold:
    0

    Sp0rk eh Active Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Sp0rk-eh Proudly Presents:

    M.A.E.

    Current Version: v0.2

    Big fat credits to SantaClause for the beautiful form on v1. Really appreciated it. Unfortunately the form didn't work for alot of people, and it's been taken out. I loved it though =( <3

    The benefits of this script:

    Is faster and better experience than alching.
    Is cheaper than alching.
    You get free blood runes and death runes.
    There are no randoms in the enchant arena.


    This script is designed for use within the mage training arena (enchant chamber).

    Specifically located behind the Al-karid Duel Arena.

    It is runescape members only.

    This script will run from the center of the arena, to the bonus shape. Collect a full inventory of shapes, enchant them all, then deposit the orbs and repeat.

    Start at the middle of the arena, logged in, with your minimap facing as north as possible.

    [​IMG]

    Testing this script got my friend and I both 94 mage.

    Possible bugs:


    Code:
    ------------------------------------------
    -Sp0rk-ehs Mage Arena Enchanter-
    -Trips Done : 510
    -TimeRunning : 17 Hours, 14 Minutes and 49 Seconds
    -Enchanted : 12914 Shapes.
    -Gained approx. : 939595 Magic Exp.
    -Logged back in : 0 times.
    ------------------------------------------
    
    Thank you koukero for this excellent progress report!

    Please Test the latest 0.2 version and give me your feedback.

    Fixes:
    * Minimap Re-calibration when color not found
    * Full buymode upgrade and fix
    * New Srl Stats entirely
    * Fix of srl stats
    * Faster Enchanting
    * More Antiban
    * Smoother Script. Should be pretty flawless.

    As always, please post progress reports. Thank you.

    Code:
    {.Script Info:
    # ScriptName  = Mage Arena Enchanter
    # Author      = Sp0rk-eh
    # Description = Enchants in the mage training arena (near the dueling arena)
    # Version     = 0.2
    # Date        = 31 October 2007
    # Comments    = N/A
    /Script Info}
    
    
    {Make sure your minimap is as perfect north as possible!}
    {!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
                                                                   {|}{|}
        {|}{O.Start the Arena mode in the center of the Enchant Arena}{|}
    {|}{O.Have cosmics in the first inventory slot, and no other items}{|}
       {|}{O.Start the Buy mode next to the Rewards Guardian}{|}
                                                                   {|}{|}
    {!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
    //Please post progress reports. They make me happy.
    
    {Credits:
    Pwnaz0r - providing some functions + chatter on msn
    Dave - testing
    Hy71194 - antiban
    King Of Knives - inspiration of mm walls/procedure}
    
    program MageArenaEnchanterBySp0rky;
    {.include SRL\SRL.scar}
    
    const
     //You may edit this
     Mode = 'Arena'; //Arena or Buy
    
    var
     Cube, Cylinder, Ico, Pentamid, ShapeColor, TripsDone, iX, iY, x, y: Integer;
     CurrentBonusShape, PlayerLocation, Chat, Namez, Spell, Experience, ExperienceThisTrip: string;
     SrlStatsID, SrlStatsPassword, WhichSpellToCast: string;
     DragonStones: Boolean;
     ShapesEnchanted, TimesLogged, MageLevel, NumberOfCosmics, CosmicsToBuy, CosmicsBought: Integer;
     RelativeEnchantAmount: Extended;
     S2X1, S2X2, S2Y1, S2Y2, Nine, Number1, Number2, Number3, Number4, Number5, Zero, One, Two, Three, Four, Five, Six, Seven, Eight: Integer;
     S1X1, S1X2, S1Y1, S1Y2, FixedTimes: Integer;
     S3X1, S3X2, S3Y1, S3Y2: Integer;
     S4X1, S4X2, S4Y1, S4Y2: Integer;
     S5X1, S5X2, S5Y1, S5Y2: Integer;
     PizPointString: string;
     PizPoints, ShapesEnchanted2, WorldsHopped: Integer;
    
    
    //And edit this
    
    procedure DeclarePlayers;
    begin
     NumberOfPlayers(1);
     CurrentPlayer := 0;
    
     Players[0].Name := ''; // RS UserName
     Players[0].Pass := ''; // RS Password
     Players[0].Nick := '';
    
     NumberOfCosmics := 10000; //Number of cosmics you have in your inventory
     CosmicsToBuy := 10000; //Number of cosmics to buy (5 enchant points per cosmic)
     WhichSpellToCast := 'Auto' //Accepted = Auto, Lvl1, Lvl2, Lvl3, Lvl4, Lvl5, Lvl6
    
     Players[0].Active := True; // Don't change
    
     SrlStatsID := ''; //If you dont have these, just leave them blank.
     SrlStatsPassword := ''; //If you dont have these, just leave them blank.
    
    end;
    
    //-------Do not edit beyond this point unless you know what you're doing!-------------
    //------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------
    //------------------------------------------------------------------------------------
    
    procedure LoadBitmaps;
    begin
     Cube := BitmapFromString2(False, 'aA598978DA7DD04B0EC330080' +
      '4D02B61FE5E5227B9FF910A4DD4A6A2EAE6098D18191900203C01' +
      '590945A4AA5AC12B11AF199D3FC951896295D828B525957845FAA' +
      '8796C5B692CC03448778931BBCEBA103C0CBF1561FDD3523D72B3' +
      '79B66CC83ED6DDEB95E60C3B502438DEADA9F4CB09664877AF96E' +
      '8C89DA66FC648DD7EDB7561FB81D3C84BD19EF4D');
     Cylinder := BitmapFromString2(False, 'a690AD78DAC5913B0EC42' +
      '00C44AF34FC0C9410C2FD8FB41E570959A495526CF3341AFC2C4B' +
      '00C03C14E845115A534A3D95E964933AB32032676B8AB009B47CB' +
      '13E31A769BDE7B29883B2A02AB3E7AB4CCBD1B6355AD2139B4AC1' +
      '8DC16D72606471C028DE0514C918DA78365B9E0BEF966CF8C2B2D' +
      'BBE5DB8B12EF377EB87DBAEAEF4D7565BF9B8ED7FD6637EFDA30F' +
      'DAB');
     Ico := BitmapFromString2(False, 'a6BB6D78DA9DD2498E03210C05' +
      'D02B19F067581A07EE7FA4368322A24ABA53BD792A996F0B28888' +
      '84A30886184DE4C4431A3F3A6CF3C2AD0618FA3EE67FC51C6F7EC' +
      '4DE8239946C68B40A08A17154DE5D4918BE58DA8B69AB60555C3D' +
      '25643B9213244DD7254B2FE4F306295253B0EB9CF7AB92B3C420D' +
      '4B8E9C8A6C2BAB303D2CE3BF911B48743B7BB9C34BBB6A7B46CDD' +
      '64549AEEEDEE94A9EBEB90720579D7BC09CE0979C381775CD45B4' +
      '99ECBF8B8852B79FCE7877CE731AA576FAC70BB9BED2E5FC47E75' +
      'DCD97199F7E3B27802BCE73FD0092C');
     Pentamid := BitmapFromString2(False, 'aD40BE78DA6D8E4112C42' +
      '00804BF0428A0C710E3FF9FB40E6EED7AC8A5996A0121229AF702' +
      '455BA886A80DC5A8820AAFF50127BC46668797861ED5FBF76A921' +
      'B14B440F19CF5C86DCEC86520CF0E5EF034400E7161A3E1F6671F' +
      '424C5F7FF0EA52B8BCF87501177B9037B779F1357DD282CB3284B' +
      'F4E6EBF6F38F90141C');
     Status('Loaded Bitmaps');
    end;
    
    function FindFastRandoms: Boolean; // By WT-Fakawi.
    
    var
     i: Integer;
    
    begin
     for I := 1 to 10 do
      begin
       case I of
        1: if FindDead then
          Result := True;
    
        2: if FindMod then
          begin
           Result := True;
           Writeln('Mod Found');
          end;
        3: if FindMime then
          Result := True;
    
        4: if FindMaze then
          Result := True;
    
        5: if FindQuiz then
          Result := True;
    
        6: if FindDemon then
          Result := True;
    
        7: begin
          if NoGameTab then
           begin
            Result := True;
            Players[CurrentPlayer].loc := 'No GameTab';
            Logout;
            Exit;
           end;
         end;
    
        8: if RC then
          Result := True;
    
        9: if FindFight then
          begin
           Result := True;
           Mouse(625 + random(10), 35 + random(10), 1, 1, True);
           Flag;
          end;
    
        10: if FindTalk then
          Result := True;
    
       end;
       Wait(1);
      end;
    end;
    
    
    function FindUnSolvableRandom: boolean;
    var
     c: integer;
    begin
     if not LoggedIn then exit;
     for c := 0 to 6 do
      begin
       case c of
        0: if FindDead then
          begin
           result := true;
           Players[CurrentPlayer].Active := False;
           Players[CurrentPlayer].Loc := 'Dead';
           Writeln(Players[CurrentPlayer].Rand);
           LogOut;
          end;
        1: if FindMime then
          begin
           result := true;
           Players[CurrentPlayer].Active := False;
           Players[CurrentPlayer].Rand := 'Mime';
           Writeln(Players[CurrentPlayer].Rand);
           LogOut;
          end;
        2: if FindMaze then
          begin
           result := true;
           Players[CurrentPlayer].Active := False;
           Players[CurrentPlayer].Rand := 'Maze';
           Writeln(Players[CurrentPlayer].Rand);
           LogOut;
          end;
        3: FindTalk; //if FindScapeRune then                       <-----
                      //begin                                       <-----
                      //  result:= true;                            <----- No ScapeRune Finding?
                      //  Players[CurrentPlayer].Rand:= 'ScapeRune';<-----
                      //end;                                        <-----
        4: //if InBlack then
         begin
               {result:= true;
               Players[CurrentPlayer].Active := False;
               Players[CurrentPlayer].Loc:= 'InBlack';
               Writeln(Players[CurrentPlayer].loc);
               LogOut;}//Upstairs is detected as inblack.
         end;
        5: if NoGametab then
          begin
           result := true;
           Players[CurrentPlayer].Active := False;
           Players[CurrentPlayer].Loc := 'No Gametab';
           Writeln(Players[CurrentPlayer].loc);
           LogOut;
          end;
        6: FindTalk; //Optional. Some Talking are unsolvable.
       end;
       if result then exit;
      end;
    end;
    
    procedure Randoms;
    begin
     FindUnSolvableRandom;
     FindNormalRandoms;
    end;
    
    
    procedure LoadUp;
    begin
     S1X1 := 464;
     S1Y1 := 38;
     S1X2 := 470;
     S1Y2 := 52;
    
     S2X1 := 467;
     S2Y1 := 38;
     S2X2 := 476;
     S2Y2 := 52;
    
     S3X1 := 470;
     S3Y1 := 38;
     S3X2 := 482;
     S3Y2 := 52;
    
     S4X1 := 480;
     S4Y1 := 38;
     S4X2 := 490;
     S4Y2 := 52;
    
     S5X1 := 487;
     S5Y1 := 38;
     S5X2 := 496;
     S5Y2 := 52;
    end;
    
    function InEnchantArena: Boolean;
    begin
     if (SimilarColors(GetColor(462, 253), 26265, 4)) and
      (SimilarColors(GetColor(487, 257), 26265, 4)) then
      Result := True
     else
      begin
       Writeln('Not in the enchant arena. Go place yourself there.');
       Logout;
       TerminateScript;
      end;
    end;
    
    procedure GetPizPoints;
    begin
     Zero := BitmapFromString(6, 9, 'beNrLzcnOzTmTxgBBQDaECyQZGBCCQ' +
      'BII4CohUhASLkskiWw4splwcYgbGGAgGwDk5i0l');
     One := BitmapFromString(5, 10, 'beNpjYMjNz8VEZ9IYkNlABATIIlTh' +
      'QkxGtosBAgAPNTO1');
     Two := BitmapFromString(6, 10, 'beNpjYMjNz8VEZ9IYIAjOBZIMYAAX' +
      'BLLhsnA2smIyuMhWIzuAARkAAEZqOw8=');
     Three := BitmapFromString(5, 9, 'beNrLz83Nzz2TxgBEQAaEDSQZG' +
      'BAiQDZEHM6Aq4ErgCuGG4IsiF8viA0AW3or0Q==');
     Four := BitmapFromString(5, 10, 'beNrLz83NR0Fn0hjQuECAnwvXA' +
      'udC1AAZcARRAJeFG4JmIERNLgDnQjI+');
     Five := BitmapFromString(6, 10, 'beNrLz83NR0dn0hjgCC6CDOAiW' +
      'HUhC0LUowkia0ezAtkoiHY0o0BsAAYFPFg=');
     Six := BitmapFromString(7, 10, 'beNrLz80ryMNEufm5EHQmjQGIgA' +
      'y4IITLwAAVRxaBcCEMoCBEDVwZsmlo2iEAzkZmYLKRDYGbzAADuQC' +
      '+rEZz');
     Seven := BitmapFromString(5, 10, 'beNrLz80ryENGZ9IY4AjIzc3P' +
      'ZQADIBcIgFwgArIh4nAuhVIQhOACAEPjMn4=');
     Eight := BitmapFromString(6, 9, 'beNrLz83Nzz2TxgBBQDaECyQZw' +
      'ADCBpJAAJeFsJF1wVXi10WMORBZBhjIBQCeEjBr');
     Nine := BitmapFromString(8, 10, 'beNrLz83Nx4fOpDFAEJogkGQAA2Qp' +
      'IBsIMNlwLZjiyFagiUOswCqO1Rz84hDTcgEdRldV');
     LoadUp;
     if FindBitmapToleranceIn(Zero, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 0;
     if FindBitmapToleranceIn(One, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 1;
     if FindBitmapToleranceIn(Two, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 2;
     if FindBitmapToleranceIn(Three, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 3;
     if FindBitmapToleranceIn(Four, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 4;
     if FindBitmapToleranceIn(Five, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 5;
     if FindBitmapToleranceIn(Six, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 6;
     if FindBitmapToleranceIn(Seven, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 7;
     if FindBitmapToleranceIn(Eight, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 8;
     if FindBitmapToleranceIn(Nine, x, y, S1X1, S1Y1, S1X2, S1Y2, 100)
      then Number1 := 9;
    
    
     if FindBitmapToleranceIn(Zero, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 0;
     if FindBitmapToleranceIn(One, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 1;
     if FindBitmapToleranceIn(Two, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 2;
     if FindBitmapToleranceIn(Three, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 3;
     if FindBitmapToleranceIn(Four, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 4;
     if FindBitmapToleranceIn(Five, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 5;
     if FindBitmapToleranceIn(Six, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 6;
     if FindBitmapToleranceIn(Seven, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 7;
     if FindBitmapToleranceIn(Eight, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 8;
     if FindBitmapToleranceIn(Nine, x, y, S2X1, S2Y1, S2X2, S2Y2, 100)
      then Number2 := 9;
    
     if FindBitmapToleranceIn(Zero, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 0;
     if FindBitmapToleranceIn(One, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 1;
     if FindBitmapToleranceIn(Two, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 2;
     if FindBitmapToleranceIn(Three, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 3;
     if FindBitmapToleranceIn(Four, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 4;
     if FindBitmapToleranceIn(Five, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 5;
     if FindBitmapToleranceIn(Six, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 6;
     if FindBitmapToleranceIn(Seven, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 7;
     if FindBitmapToleranceIn(Eight, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 8;
     if FindBitmapToleranceIn(Nine, x, y, S3X1, S3Y1, S3X2, S3Y2, 100)
      then Number3 := 9;
    
     if FindBitmapToleranceIn(Zero, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 0;
     if FindBitmapToleranceIn(One, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 1;
     if FindBitmapToleranceIn(Two, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 2;
     if FindBitmapToleranceIn(Three, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 3;
     if FindBitmapToleranceIn(Four, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 4;
     if FindBitmapToleranceIn(Five, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 5;
     if FindBitmapToleranceIn(Six, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 6;
     if FindBitmapToleranceIn(Seven, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 7;
     if FindBitmapToleranceIn(Eight, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 8;
     if FindBitmapToleranceIn(Nine, x, y, S4X1, S4Y1, S4X2, S4Y2, 100)
      then Number4 := 9;
    
     if FindBitmapToleranceIn(Zero, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 0;
     if FindBitmapToleranceIn(One, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 1;
     if FindBitmapToleranceIn(Two, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 2;
     if FindBitmapToleranceIn(Three, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 3;
     if FindBitmapToleranceIn(Four, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 4;
     if FindBitmapToleranceIn(Five, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 5;
     if FindBitmapToleranceIn(Six, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 6;
     if FindBitmapToleranceIn(Seven, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 7;
     if FindBitmapToleranceIn(Eight, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 8;
     if FindBitmapToleranceIn(Nine, x, y, S5X1, S5Y1, S5X2, S5Y2, 100)
      then Number5 := 9;
     PizPointString := (IntToStr(Number1) + IntToStr(Number2) + IntToStr(Number3) + IntToStr(Number4) + IntToStr(Number5));
     PizPoints := StrToInt(PizPointString);
     FreeBitmap(Zero);
     FreeBitmap(One);
     FreeBitmap(Two);
     FreeBitmap(Three);
     FreeBitmap(Four);
     FreeBitmap(Five);
     FreeBitmap(Six);
     FreeBitmap(Seven);
     FreeBitmap(Eight);
     FreeBitmap(Nine);
    end;
    
    procedure FreeBitmaps;
    begin
     FreeBitmap(Cube);
     FreeBitmap(Cylinder);
     FreeBitmap(Ico);
     FreeBitmap(Pentamid);
     Status('Bitmaps Free');
    end;
    
    function BonusShape: string;
    var
     ix, iy, ShapeColor: Integer;
    begin
     LoadBitmaps;
     if FindBitmapToleranceIn(Cube, ix, iy, 450, 250, 510, 320, 10) then
      Result := 'Cube';
     if FindBitmapToleranceIn(Cylinder, ix, iy, 450, 250, 510, 320, 10) then
      Result := 'Cylinder';
     if FindBitmapToleranceIn(Ico, ix, iy, 450, 250, 510, 320, 10) then
      Result := 'Ico';
     if FindBitmapToleranceIn(Pentamid, ix, iy, 450, 250, 510, 320, 10) then
      Result := 'Pentamid';
     FreeBitmaps;
     if Result = '' then
      begin
       Writeln('Gone to backup shape finding');
       ShapeColor := GetColor(491, 291);
       if SimilarColors(ShapeColor, 1056410, 10) then
        Result := 'Pentamid';
       if SimilarColors(ShapeColor, 1461854, 10) then
        Result := 'Cube';
       if SimilarColors(ShapeColor, 13984609, 10) then
        Result := 'Ico';
       if SimilarColors(ShapeColor, 1279245, 10) then
        Result := 'Cylinder';
      end;
     Status('Bonus Shape was: ' + Result + ' when last at center');
     CurrentBonusShape := Result;
    end;
    
    procedure GetExp;
    begin
     if Spell = 'Lvl1' then
      RelativeEnchantAmount := 13.125;
     if Spell = 'Lvl2' then
      RelativeEnchantAmount := 27.75;
     if Spell = 'Lvl3' then
      RelativeEnchantAmount := 44.25;
     if Spell = 'Lvl4' then
      RelativeEnchantAmount := 50.25;
     if Spell = 'Lvl5' then
      RelativeEnchantAmount := 58.5;
     if Spell = 'Lvl6' then
      RelativeEnchantAmount := 72.75;
    end;
    
    
    procedure GetMageLevelAndSetSpell;
    begin
     MageLevel := GetSkillLevel('Magic');
     Writeln('Your magic level is ' + IntToStr(MageLevel));
     if MageLevel <= 6 then
      begin
       Writeln('Go train mage, nub. You cant even enchant!');
       Logout;
       TerminateScript;
      end;
     if (MageLevel <= 26) and (MageLevel > 5) then
      begin
       Writeln('Using Level 1 Enchant');
       Spell := 'Lvl1';
       RelativeEnchantAmount := 13.125;
      end;
     if (MageLevel <= 48) and (MageLevel > 26) then
      begin
       Writeln('Using Level 2 Enchant');
       Spell := 'Lvl2';
       RelativeEnchantAmount := 27.75;
      end;
     if (MageLevel <= 56) and (MageLevel > 48) then
      begin
       Writeln('Using Level 3 Enchant');
       Spell := 'Lvl3';
       RelativeEnchantAmount := 44.25;
      end;
     if (MageLevel <= 67) and (MageLevel > 56) then
      begin
       Writeln('Using Level 4 Enchant');
       Spell := 'Lvl4';
       RelativeEnchantAmount := 50.25;
      end;
     if (MageLevel <= 86) and (MageLevel > 67) then
      begin
       Writeln('Using Level 5 Enchant');
       Spell := 'Lvl5';
       RelativeEnchantAmount := 58.5;
      end;
     if (MageLevel > 86) then
      begin
       Writeln('Using Level 6 Enchant');
       Spell := 'Lvl6';
       RelativeEnchantAmount := 72.75;
      end;
    end;
    
    procedure StraightWallsPlease;
    var
     PerfectWall,PerfectWall2, x, y, I: Integer;
    begin
     PerfectWall := BitmapFromString(17, 5, 'beNrLzmagCyjKziYVvX' +
      'jznVREsi0Ag+ZbDA==');
       PerfectWall2 := BitmapFromString2(False, 'a5765A78DAB58ECB11C' +
           '02008445BE2AF1E23D1FE4B4A96831DC86161DEB00B44C44E7F31' +
           'DBAF1698BDA38526E66187783CE0DEB19902620BBAFA519970492' +
           'F9757C2AE34A9E4BA1513AD0DA0C838248682CFF26603690C2279' +
           '541D2EE589A08D8B972ACC5FCF1BBA72D9A61B7AEFE70F27D');
     MakeCompass('E');
     Wait(500 + random(500));
     SendArrowWait(1, 620 + random(80))
      repeat
      SendArrowWait(1, 10 + random(10))
       Wait(200 + random(200))
       I := I + 1;
     until FindBitmapToleranceIn(PerfectWall, x, y, MMX1, MMY1, MMX2, MMY2, 100) or (I = 40) or FindBitmapToleranceIn(PerfectWall2, x, y, MMX1, MMY1, MMX2, MMY2, 100)
      if FindBitmapToleranceIn(PerfectWall, x, y, MMX1, MMY1, MMX2, MMY2, 100) or FindBitmapToleranceIn(PerfectWall2, x, y, MMX1, MMY1, MMX2, MMY2, 100) then
      begin
       ReportVars[5] := ReportVars[5] + 1;
       Writeln('Fixed MM Walls');
       exit;
      end;
     if I = 40 then
      begin
       Writeln('Not fixed...Trying again');
      end;
     MakeCompass('E');
     Wait(500 + random(500));
     SendArrowWait(1, 620 + random(80))
      I := 0;
     repeat
      SendArrowWait(1, 10 + random(10))
       Wait(200 + random(200))
       I := I + 1;
     until FindBitmapToleranceIn(PerfectWall, x, y, MMX1, MMY1, MMX2, MMY2, 150) or (I = 40)
      if FindBitmapToleranceIn(PerfectWall, x, y, MMX1, MMY1, MMX2, MMY2, 150) then
      Writeln('Fixed MM Walls');
     if I = 40 then
      begin
       Writeln('Not fixed...Using Make Compass');
       MakeCompass('N');
      end;
     FreeBitmap(PerfectWall)
     FreeBitmap(PerfectWall2);
    end;
    
    procedure GoToPentamids;
    begin
     Writeln('Walking to Pentamids');
     Status('Walking to Pentamids');
     x := 604 + random(2);
     y := 125 + random(2);
     Mouse(x, y, 1, 1, True);
     flag;
     GetPizPoints;
     x := 614 + random(2);
     y := 103 + random(2);
     Mouse(x, y, 1, 1, True);
     flag;
     Status('At Pentamids');
     PlayerLocation := 'Pentamids';
    end;
    
    procedure GoToCubes;
    begin
     Writeln('Walking to Cubes');
     Status('Walking to Cubes');
     x := 599 + random(3);
     y := 36 + random(3);
     Mouse(x, y, 1, 1, True);
     flag;
     GetPizPoints;
     x := 628 + random(3);
     y := 67 + random(3);
     Mouse(x, y, 1, 1, True);
     flag;
     Status('At Cubes');
     PlayerLocation := 'Cubes';
    end;
    
    procedure GoToIcos;
    begin
     Writeln('Walking to Icos');
     Status('Walking to Icos');
     x := 684 + random(2);
     y := 123 + random(2);
     Mouse(x, y, 1, 1, True);
     flag;
     GetPizPoints;
     x := 659 + random(2);
     y := 116 + random(2);
     Mouse(x, y, 1, 1, True);
     flag;
     Status('At Icos');
     PlayerLocation := 'Icos';
    end;
    
    procedure AntiBan; //Hy71194's because im laze-E
    var
     a, b: Integer;
    begin
     if (not LoggedIn) then exit;
     b := Random(100);
     case b of
      0: MMouse(random(MSX2), random(MSY2), 0, 0);
      1: MouseSpeed := 9 + Random(3);
      2: HoverSkill('random', false);
      5: PickupMouse;
      6: MouseSpeed := 9 + Random(3);
      7: MouseSpeed := 9 + Random(3);
      8: MMouse(random(MSX2), random(MSY2), 0, 0);
      9: Wait(1 + Random(100));
      10: begin
        GameTab(1 + random(12));
        for a := 0 to 6 do
         begin
          Wait(300 + Random(200));
         end;
        GameTab(4);
       end;
     end;
    end;
    
    
    procedure GoToCylinders;
    begin
     Writeln('Walking to Cylinders');
     Status('Walking to Cylinders');
     x := 690 + random(3);
     y := 35 + random(3);
     Mouse(x, y, 1, 1, True);
     flag;
     GetPizPoints;
     x := 655 + random(3);
     y := 71 + random(3);
     Mouse(x, y, 1, 1, True);
     flag;
     Status('At Cylinders');
     PlayerLocation := 'Cylinders';
    end;
    
    procedure GoToRandom;
    begin
     case random(4) of
      0:
       begin
        GoToCubes;
        CurrentBonusShape := 'Cube';
       end;
      1:
       begin
        GoToIcos;
        CurrentBonusShape := 'Ico';
       end;
      2:
       begin
        GoToPentamids;
        CurrentBonusShape := 'Pentamid';
       end;
      3:
       begin
        GoToCylinders;
        CurrentBonusShape := 'Cylinder';
       end;
     end;
     Status('Bonus Shape: ' + CurrentBonusShape);
    end;
    
    function ShopOutOfStock: Boolean;
    begin
     if (SimilarColors(GetColor(282, 193), 65535, 2)) and
      (SimilarColors(GetColor(286, 194), 65535, 2)) and
      (SimilarColors(GetColor(285, 198), 65535, 2)) and
      (SimilarColors(GetColor(284, 191), 65535, 2)) then
      begin
       Status('Detected the stock of cosmics at 0');
       Result := True
        Writeln('The Shop is outa stock fool');
      end
     else
      Result := False;
    end;
    
    function NotEnoughEnchantPoints: Boolean;
    begin
    end;
    
    procedure Endme;
    begin
     Writeln('       All finished =P      ');
     Writeln(' Thanks for using Sp0rk-ehs ');
     Writeln('    Mage Arena Enchanter    ');
     wait(2000);
     Writeln('Please post progress reports!');
     Writeln('http://www.srl-forums.com/forum/sp0rkys-mage-arena-t20212.html');
    end;
    
    
    procedure WalkToShapeFromCenter;
    begin
     Status('Walking To Shape');
     if BonusShape = 'Cube' then
      begin
       GoToCubes;
       Exit;
      end;
     if BonusShape = 'Cylinder' then
      begin
       GoToCylinders;
       Exit;
      end;
     if BonusShape = 'Ico' then
      begin
       GoToIcos;
       Exit;
      end;
     if BonusShape = 'Pentamid' then
      begin
       GoToPentamids;
       Exit;
      end;
     if BonusShape = '' then
      begin
       Writeln('Fuckit, cant find a shape. Going random');
       GoToRandom;
      end;
    end;
    
    procedure TakeShapesBac;
    var
     ShapeText: string;
     CouldntFindColor, TimesClickedShape: Integer;
    begin
     Status('Taking Shapes from the Pile');
     TimesClickedShape := 0;
     if (not (LoggedIn)) then exit;
     if CurrentBonusShape = 'Cylinder' then
      begin
       ShapeText := 'linder';
       ShapeColor := 1144589;
      end;
     if CurrentBonusShape = 'Cube' then
      begin
       ShapeText := 'ube';
       ShapeColor := 1550786;
      end;
     if CurrentBonusShape = 'Ico' then
      begin
       ShapeText := 'cosa';
       ShapeColor := 11752531;
      end;
     if CurrentBonusShape = 'Pentamid' then
      begin
       ShapeText := 'tami';
       ShapeColor := 1716197;
      end;
     repeat
      begin
       if (not (LoggedIn)) then exit;
       wait(100 + random(50));
       if FindColorSpiralTolerance(x, y, ShapeColor, 5, 70, 515, 249, 4)
        then
        begin
         MMouse(x, y, 1, 1);
         wait(50 + random(25));
         if IsUpText(ShapeText) then
          Mouse(x, y, 1, 1, True)
           TimesClickedShape := TimesClickedShape + 1;
         Status('Clicked Shape Pile: ' + IntToStr(TimesClickedShape) + ' times');
         flag;
         wait(50 + random(50));
        end
       else
        begin
         CouldntFindColor := CouldntFindColor + 1;
         Writeln('Cant Find Color');
         if CouldntFindColor > 2 then
          begin
           Writeln('Really cant find color! It must not be in the middle of the screen')
            Writeln('Tried to fix too many times, Giving up');
           Logout;
           TerminateScript;
           Exit;
          end;
        end;
      end;
     until InvFull;
    end;
    
    
    
    {*******************************************************************************
    function FindMMColorTol(var x, y: Integer; color, tol: Integer): Boolean;
    By: Stupid3ooo
    Description: Finds color on Minimap with tolerance
    *******************************************************************************}
    
    function FindMMColorTol(var x, y: Integer; color, tol: Integer): Boolean;
    begin
     Result := FindColorTolerance(x, y, color, MMX1, MMY1, MMX2, MMY2, tol);
    end;
    
    
    function FindCenter: Boolean;
    begin
     if (not (LoggedIn)) then exit;
     if FindMMColorTol(x, y, 9011075, 7) then
      begin
       Status('Center Found... Walking Back')
        Result := True;
       Mouse(x + random(2), y + random(10), 1, 1, True);
       Flag;
       PlayerLocation := 'At Center';
      end
     else
      begin
       Result := False;
       Writeln('Center Not Found... Logging')
        Logout;
       Status('Center Not Found... Logged Character Out')
      end;
    end;
    
    procedure WalkBackToCenter;
    begin
     if PlayerLocation = 'Cylinders' then
      begin
       Status('Walking from Cylinders to center')
        Mouse(615 + random(2), 113 + random(2), 1, 1, True);
       flag;
       GetPizPoints;
       if (not (FindCenter)) then
        begin
         Status('Didnt find center. Walking then trying again')
          Mouse(601 + random(2), 118 + random(2), 1, 1, True);
         flag;
         FindCenter
        end;
      end;
     if PlayerLocation = 'Cubes' then
      begin
       Status('Walking from Cubes to center')
        Mouse(678 + random(2), 110 + random(2), 1, 1, True);
       flag;
       GetPizPoints;
       if (not (FindCenter)) then
        begin
         Status('Didnt find center. Walking then trying again')
          Mouse(671 + random(2), 125 + random(2), 1, 1, True);
         flag;
         FindCenter;
        end;
      end;
     if PlayerLocation = 'Pentamids' then
      begin
       Status('Walking from Pentamids to center')
        Mouse(669 + random(2), 49 + random(2), 1, 1, True);
       flag;
       GetPizPoints;
       if (not (FindCenter)) then
        begin
         Status('Didnt find center. Walking then trying again')
          Mouse(690 + random(2), 38 + random(2), 1, 1, True);
         flag;
         FindCenter;
        end;
      end;
     if PlayerLocation = 'Icos' then
      begin
       Status('Walking from Icos to center');
       Mouse(607 + random(2), 55 + random(2), 1, 1, True);
       flag;
       GetPizPoints;
       if (not (FindCenter)) then
        begin
         Status('Didnt find center. Walking then trying again')
          Mouse(611 + random(2), 50 + random(2), 1, 1, True);
         flag;
         FindCenter;
        end;
      end;
    end;
    
    procedure BuyProg;
    begin
     ClearDebug;
     Writeln('------------------------------------------');
     Writeln('-     Sp0rk-ehs Mage Arena Enchanter     -');
     Writeln('-                Buy  Mode               -');
     Writeln('-  Worlds Hopped : ' + IntToStr(WorldsHopped));
     Writeln('-  Cosmics Bought: ' + IntToStr(CosmicsBought));
     Writeln('------------------------------------------');
    end;
    
    function CheckPoints: Boolean;
    begin
     if FindBlackChatMessage('cannot afford that ite') then
      begin
    
       LogOut;
       BuyProg;
       Writeln('All out of points - Bought max amount');
       TerminateScript;
      end;
    end;
    
    function MageTrainingArenaShopScreen: Boolean;
    var
     ArenaShop,iix,iiy : Integer;
    begin
       ArenaShop := BitmapFromString2(False, 'a730CD78DAED985DAE83' +
           '201085B70422033EA2A9FB5FD26530B9B1B1D883E05FA50F27649' +
           'CA2CE5798438510524AE13FC3E845D997575283576D89C7A2E571' +
           'CBF1D63A1EF79C4EB26165118D0D393A7C6BA4FF78AB7966D385C' +
           'C5EF338CC434686F9158F5F96E39AEF6E8C172906CE6C3BD7374E' +
           '13EDA8DA1932B751E33AB285E72C5549E914695CDDE824A9492BE' +
           '583F454D6F8FC3EB5517DA5BCD4A932735DCFDC9BEC0785F9BEBD' +
           '45A53CA7B61A8FD23F92F5A6B59CC0FA617C6357A3F997DFB121D' +
           '68FA49C9CBFF7BAAE94CFA27CA41FCBF65D31FA506F82DDCB3207' +
           '713BA9EE28DF77A53EFF362FB48C7FC8CF765FC8D32678CE03E36' +
           '529E7F7657C8744584F4C7328A75EC557598EABC1D9955ACB65DF' +
           'EB2DBE89723413A68C74DE5294B7552FF5B77169CAAB67EA28E54' +
           '5173E813290839FCBF00A24EC72D7A4BC7068D05A4EA49C5A79A8' +
           '9E897D3FFF5EB13973286F7383882BFBE218F1BA659CA47E566FF' +
           'B1FF8971554293F81F29C75A5FCDB94AB56CA95FB4D2843DDB932' +
           'BD2D655CFF00A09');
    
     if SimilarColors(GetColor(483, 35), 39423, 15) or FindBitmapToleranceIn(ArenaShop,iix,iiy,MSX1,MSY1,MSX2,MSY2,30)  then
      begin
       Result := True;
      end
     else
      begin
       Writeln('Mage Training Arena Shop Window Not Found.');
       Status('Mage Training Arena Shop Window Not Found.');
       Result := False
      end;
    FreeBitmap(ArenaShop);
    end;
    
    procedure AntiBan2; //Hy71194's because im laze-E
    var
     a, b: Integer;
    begin
     if (not LoggedIn) then exit;
     b := Random(100);
     case b of
      0: MMouse(random(MSX2), random(MSY2), 0, 0);
      1:
       begin
        HoverSkill('magic', false);
        GameTab(4);
       end;
      2:
       begin
        HoverSkill('random', false);
        GameTab(4);
       end;
      5: PickupMouse;
      6: MouseSpeed := 20 + Random(3);
      7: MouseSpeed := 22 + Random(3);
      8: MMouse(random(MSX2), random(MSY2), 0, 0);
      9: Wait(1 + Random(100));
      10: begin
        GameTab(1 + random(12));
        begin
         Wait(300 + Random(200));
        end;
        GameTab(4);
       end;
     end;
    end;
    
    procedure BuyCosmics;
    var
     Bought, CosmicRune, ix, iy: Integer;
    begin
     if (not (LoggedIn)) then exit;
     wait(2000 + random(1000));
     if MageTrainingArenaShopScreen then
      begin
       CosmicRune := BitmapFromString(12, 9, 'beNptzmsKgzAQBOBzeMk' +
        'qIhobX/HRNFUrpSi9nPQqDowsgRbmxzL7keweLMOAfPfgfbfI+nDb' +
        'NCKf54yScU0tM/DLWoRY+luhZR6NmbuOL1Oy76+5GDJf+qvfgFH+3' +
        'dqqxJEIHmSj49gH+BoXglGyzKNIQJ2mrVJglNJn4UXmMknIKM/+AP' +
        'QJtrA=');
       if FindBitmapToleranceIn(CosmicRune, x, y, MSX1, MSY1, MSX2, MSY2, 100) then
        begin
        MMouse(x, y, 1, 1);
        Writeln('Found Cosmic Bitmap');
        end;
       FreeBitmap(CosmicRune);
       wait(250 + random(50));
       if IsUpText('osmic') then
        repeat
         begin
          if (not (LoggedIn)) then exit;
          if random(4) > 2 then
           begin
            AntiBan2;
           end;
          ix := x;
          iy := y;
          ix := ix + random(15);
          iy := iy + random(15);
          Mouse(ix, iy, 1, 1, False);
          wait(40 + random(20));
          ChooseOption('uy');
          wait(30 + random(20));
          Bought := Bought + 1;
          CosmicsBought := CosmicsBought + 1;
          Status('Bought: ' + IntToStr(Bought) + ' cosmics');
          CheckPoints;
          ReportVars[3] := Bought;
         end
        until (bought = 105) or ShopOutOfStock or (not (MageTrainingArenaShopScreen)) or FindBlackChatMessage('stock');
       mousespeed := 10;
      end
     else
      begin
       Writeln('Mage screen or guardian fuckup.');
       Logout;
      end;
    end;
    
    procedure TakeShapes;
    var
     ShapeText: string;
     CouldntFindColor, TimesClickedShape: Integer;
    begin
     Status('Taking Shapes from the Pile');
     TimesClickedShape := 0;
     if (not (LoggedIn)) then exit;
     if CurrentBonusShape = 'Cylinder' then
      begin
       ShapeText := 'linder';
       ShapeColor := 1144589;
      end;
     if CurrentBonusShape = 'Cube' then
      begin
       ShapeText := 'ube';
       ShapeColor := 1550786;
      end;
     if CurrentBonusShape = 'Ico' then
      begin
       ShapeText := 'cosa';
       ShapeColor := 11752531;
      end;
     if CurrentBonusShape = 'Pentamid' then
      begin
       ShapeText := 'tami';
       ShapeColor := 1716197;
      end;
     repeat
      begin
       if (not (LoggedIn)) then exit;
       wait(100 + random(50));
       if FindColorSpiralTolerance(x, y, ShapeColor, 5, 70, 515, 249, 4)
        then
        begin
         MMouse(x, y, 1, 1);
         wait(50 + random(25));
         if IsUpText(ShapeText) then
          Mouse(x, y, 1, 1, True)
           TimesClickedShape := TimesClickedShape + 1;
         Status('Clicked Shape Pile: ' + IntToStr(TimesClickedShape) + ' times');
         flag;
         wait(50 + random(50));
        end
       else
        begin
         CouldntFindColor := CouldntFindColor + 1;
         Writeln('Cant Find Color');
         if CouldntFindColor > 2 then
          begin
           Writeln('Really cant find color! It must not be in the middle of the screen')
            Writeln('Walking back and re-calibrating Minimap Walls');
           InEnchantArena;
           WalkBackToCenter;
           InEnchantArena;
           StraightWallsPlease;
           InEnchantArena;
           WalkToShapeFromCenter;
           InEnchantArena;
           TakeShapesBac;
           FixedTimes := FixedTimes + 1;
           if FixedTimes > 4 then
            begin
             Writeln('Tried to fix too many times, Giving up');
             Logout;
             TerminateScript;
             Exit;
            end;
          end;
        end;
      end;
     until InvFull;
    end;
    
    procedure AssignXandY;
    begin
     if Spell = 'Lvl1' then
      begin
       x := 685 + random(8);
       y := 234 + random(8);
      end;
     if Spell = 'Lvl2' then
      begin
       x := 613 + random(8);
       y := 281 + random(8);
      end;
     if Spell = 'Lvl3' then
      begin
       x := 566 + random(8);
       y := 329 + random(8);
      end;
     if Spell = 'Lvl4' then
      begin
       x := 589 + random(8);
       y := 353 + random(8);
      end;
     if Spell = 'Lvl5' then
      begin
       x := 612 + random(8);
       y := 400 + random(8);
      end;
    
     if Spell = 'Lvl6' then
      begin
       x := 685 + random(8);
       y := 425 + random(8);
      end;
    end;
    
    procedure CheckCosmics;
    begin
     if Spell = 'Lvl1' then
      begin
       if SimilarColors(GetColor(691, 235), 71705, 4) then
        begin
         Writeln('Youve run out of cosmics');
         LogOut;
         TerminateScript;
        end;
      end;
     if Spell = 'Lvl2' then
      begin
       if SimilarColors(GetColor(619, 282), 71705, 4) then
        begin
         Writeln('Youve run out of cosmics');
         LogOut;
         TerminateScript;
        end;
      end;
     if Spell = 'Lvl3' then
      begin
       if SimilarColors(GetColor(570, 330), 71705, 4) then
        begin
         Writeln('Youve run out of cosmics');
         LogOut;
         TerminateScript;
        end;
      end;
     if Spell = 'Lvl4' then
      begin
       if SimilarColors(GetColor(594, 354), 71705, 4) then
        begin
         Writeln('Youve run out of cosmics');
         LogOut;
         TerminateScript;
        end;
      end;
     if Spell = 'Lvl5' then
      begin
       if SimilarColors(GetColor(618, 400), 71705, 4) then
        begin
         Writeln('Youve run out of cosmics');
         LogOut;
         TerminateScript;
        end;
      end;
     if Spell = 'Lvl6' then
      begin
       if SimilarColors(GetColor(690, 426), 71961, 4) then
        begin
         Writeln('Youve run out of cosmics');
         LogOut;
         TerminateScript;
        end;
      end;
    end;
    
    procedure EnchantInventory;
    var
     ShapeColorInInvent: Integer;
    begin
     if (not (LoggedIn)) then exit;
     if CurrentBonusShape = 'Cube' then
      ShapeColorInInvent := 2921394;
     if CurrentBonusShape = 'Pentamid' then
      ShapeColorInInvent := 1319850;
     if CurrentBonusShape = 'Ico' then
      ShapeColorInInvent := 9848132;
     if CurrentBonusShape = 'Cylinder' then
      ShapeColorInInvent := 1344269;
     GameTab(7);
     repeat
      if (not (LoggedIn)) then exit;
      AssignXandY;
      wait(900 + random(100));
      if (not GameTab(7)) then
       begin
        GameTab(7);
       end;
      CheckCosmics;
      MMouse(x, y, 0, 0);
      if IsUpText('ant') then
       begin
        Mouse(x, y, 1, 1, True);
        wait(100 + random(50))
         if FindColorSpiralTolerance(x, y, ShapeColorInInvent, 694, 434, 717, 454, 4) then
         begin
          x := 693 + random(20)
           y := 435 + random(20)
           Mouse(x, y, 1, 1, True);
          ShapesEnchanted := ShapesEnchanted + 1;
          ShapesEnchanted2 := ShapesEnchanted2 + 1;
          ReportVars[1] := ShapesEnchanted2;
          Status('Shapes enchanted this trip:' + IntToStr(ShapesEnchanted2));
         end
       end
     until FindColorSpiralTolerance(x, y, 16316664, 694, 434, 717, 454, 4)
      GameTab(4);
     Status('All shapes in inventory enchanted!');
    end;
    
    procedure DepositOrbs;
    var
     Found: Boolean;
    begin
     if (not (LoggedIn)) then exit;
     repeat
      if (not (LoggedIn)) then exit;
      wait(100 + random(100));
      GetPizPoints;
      if FindColorSpiralTolerance(x, y, 8685966, 5, 6, 511, 332, 4) then
       MMouse(x, y, 1, 1);
      if IsUpText('ole') then
       begin
        Found := True;
        Status('Found orb deposit hole');
        Mouse(x, y, 1, 1, True);
        flag;
        wait(500 + random(100));
        Status('Orbs deposited');
        ClickToContinue;
        wait(400 + random(100));
        ClickToContinue;
       end;
     until Found;
     TripsDone := TripsDone + 1;
     ReportVars[0] := ReportVars[0] + 1;
    end;
    
    procedure CloseCosmicWindow;
    begin
     if (not (LoggedIn)) then exit;
     Status('Closing mage arena buy screen');
     x := 475 + random(9);
     y := 30 + random(9);
     MMouse(x, y, 1, 1)
      wait(500 + random(200));
     if IsUpText('lose') then
      begin
       Mouse(x, y, 1, 1, True);
       Status('Mage Arena buy screen closed.');
       wait(500 + random(200));
      end;
    end;
    
    procedure FindPortal;
    var
     Tries: Integer;
     Clicked: Boolean;
    begin
     Status('Trying to find enchant arena portal. Tried: ' + IntToStr(Tries) + ' times');
     repeat
      if (not (LoggedIn)) then exit;
      if FindColorSpiralTolerance(x, y, 1842975, 20, 20, 338, 333, 3) then
       begin
        wait(250 + random(100))
         MMouse(x, y, 1, 1)
         Tries := Tries + 1;
        Status('Trying to find enchant arena portal. Tried: ' + IntToStr(Tries) + ' times');
        if IsUpText('chant') then
         begin
          Mouse(x, y, 1, 1, True)
           Flag;
          wait(1000 + random(1000));
          Clicked := True;
          Status('Enchant Arena Re-Entered');
         end;
       end;
     until (Clicked) or (Tries > 20);
    end;
    
    procedure WalkToEnchantChamber;
    begin
     if (not (LoggedIn)) then exit;
     SetRun(True);
     if FindSymbol(x, y, 'minigame') then
      begin
       Status('Found minigame symbol');
       Mouse(x - 40, y, 1, 1, True)
        Flag;
      end
     else
      begin
       Writeln('Didnt find minigame symbol. Co-ords.');
       Status('Using co-ords to walk to portal');
       Mouse(620 + random(1), 15 + random(1), 1, 1, True)
        wait(2000 + random(100));
       flag;
      end;
     FindPortal;
    end;
    
    {*******************************************************************************
    procedure OrderBy(Which, UpDown: string);
    By: WT-Fakawi
    Description: Orders Display.
    *******************************************************************************}
    
    procedure OrderBy(Which, UpDown: string);
    var
     Origin, OBx, OBy: Integer;
    begin
     case Which of
      'world':
       begin
        case UpDown of
         'up': Origin := 284;
         'down': Origin := 297;
        end
       end;
      'players':
       begin
        case UpDown of
         'up': Origin := 393;
         'down': Origin := 409;
        end
       end;
      'location':
       begin
        case UpDown of
         'up': Origin := 503;
         'down': Origin := 519;
        end
       end;
      'type':
       begin
        case UpDown of
         'up': Origin := 613;
         'down': Origin := 629;
        end
       end;
     end;
    
     MMouse(Origin, 7, 7, 7)
      GetMousePos(OBx, OBy);
     repeat
      Mouse(OBx, OBy, 0, 0, True);
      Wait(500);
     until FindColorSpiralTolerance(OBx, OBy, 2851375, Origin, 7, Origin + 7, 7 + 7, 50);
    end;
    
    procedure TradeWithRewardsGuardian;
    var
     tries: Integer;
    begin
     if (not (LoggedIn)) then exit;
     repeat
      if (not (LoggedIn)) then exit;
      wait(100 + random(100));
      if FindColorSpiralTolerance(x, y, 5479603, 5, 6, 511, 332, 4) then
       begin
        Status('Moving mouse to rewards guardian');
        MMouse(x, y, 1, 1);
        tries := tries + 1;
        if IsUpText('ewa') then
         begin
          Status('Rewards guardian found');
          Mouse(x, y, 1, 1, False);
          ChooseOption('rade')
           flag;
          Status('Chose to trade with guardian');
          wait(1000 + random(500));
          Exit;
         end;
       end;
     until tries > 10;
     Writeln('Couldnt find guardian');
     Logout;
    end;
    
    procedure ChooseRandomWorld;
    begin
     Status('Choosing a random world');
     case random(28) of
      0: Mouse(388, 343, 2, 2, True)
       1: Mouse(388, 366, 2, 2, True)
       2: Mouse(388, 390, 2, 2, True)
       3: Mouse(393, 411, 2, 2, True)
       4: Mouse(393, 436, 2, 2, True)
       5: Mouse(395, 459, 2, 2, True)
       6: Mouse(394, 481, 2, 2, True)
       7: Mouse(484, 44, 2, 2, True)
       8: Mouse(489, 68, 2, 2, True)
       9: Mouse(484, 90, 2, 2, True)
       10: Mouse(493, 115, 2, 2, True)
       11: Mouse(488, 135, 2, 2, True)
       12: Mouse(493, 159, 2, 2, True)
       13: Mouse(488, 181, 2, 2, True)
       14: Mouse(489, 204, 2, 2, True)
       15: Mouse(487, 227, 2, 2, True)
       16: Mouse(494, 250, 2, 2, True)
       17: Mouse(488, 272, 2, 2, True)
       18: Mouse(490, 293, 2, 2, True)
       19: Mouse(501, 324, 2, 2, True)
       20: Mouse(486, 345, 2, 2, True)
       21: Mouse(487, 367, 2, 2, True)
       22: Mouse(486, 391, 2, 2, True)
       23: Mouse(489, 386, 2, 2, True)
       24: Mouse(481, 412, 2, 2, True)
       25: Mouse(478, 438, 2, 2, True)
       26: Mouse(486, 456, 2, 2, True)
       27: Mouse(478, 481, 2, 2, True)
     end;
    end;
    
    procedure ClickWorldSwitchButton;
    begin
     MMouse(8, 466, 90, 25);
     GetMousePos(x, y);
     Mouse(x, y, 0, 0, True);
     repeat
      Wait(10);
     until (GetColor(17, 477) = 0);
    end;
    
    //Ty pwnaz0r
    
    function ExToStr(i: integer; e: extended): string;
    begin
     result := FloatToStr(i * e);
    end;
    //Ty pwnaz0r
    
    function NumToStr(i: integer; e: extended): string;
    begin
     result := IntToStr(Ceil(i * e));
    end;
    
    procedure Report;
    begin
     ClearReport;
     AddToReport('/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\');
     AddToReport('|     Visit srl-forums.com     |');
     AddToReport('|      for script updates      |');
     AddToReport('|           ~Sp0rky~           |');
     if (SrlStatsID = '') or (SrlStatsPassword = '') then
      begin
       AddToReport('|Please register for srl stats!|');
      end;
     AddToReport('|     Thank you for using:     |');
     AddToReport('|         M.A.E. v0.2          |');
     AddToReport('\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/');
    end;
    
    
    
    
    
    procedure ProgressReport;
    begin
     ClearDebug;
     Writeln('------------------------------------------');
     Writeln('-Sp0rk-ehs Mage Arena Enchanter-');
     Writeln('-Trips Done : ' + IntToStr(TripsDone));
     WriteLn('-TimeRunning : ' + TimeRunning);
     Writeln('-Enchanted : ' + IntToStr(ShapesEnchanted) + ' Shapes.');
     Experience := NumToStr(ShapesEnchanted, RelativeEnchantAmount);
     ExperienceThisTrip := NumToStr(ShapesEnchanted2, RelativeEnchantAmount);
     Writeln('-Gained approx. : ' + Experience + ' Magic Exp.');
     Writeln('-Pizzaz points : ' + IntToStr(PizPoints));
     ReportVars[2] := StrToInt(ExperienceThisTrip);
     Writeln('-Logged back in : ' + IntToStr(TimesLogged) + ' times.');
     Writeln('------------------------------------------');
     ShapesEnchanted2 := 0;
    end;
    
    begin
     ClearDebug;
     SetupSRL;
     ActivateClient;
     mousespeed := 10;
     wait(1000);
     DeclarePlayers;
     if (SrlStatsID = '') or (SrlStatsPassword = '') then
      begin
       Writeln('Reverting to default Srl Stats Id + Password');
       SrlStatsID := '2733';
       SrlStatsPassword := '1337';
      end;
     ScriptID := '437';
     SRLID := SrlStatsID;
     SRLPassword := SrlStatsPassword;
     wait(5000);
     if Mode = 'Arena' then
      begin
       LoginPlayer;
       Writeln('Arena Mode Initiated...');
       if InEnchantArena then
        begin
         if (WhichSpellToCast = ('Auto')) or (WhichSpellToCast = ('auto')) then
          begin
           GetMageLevelAndSetSpell;
          end
         else
          begin
           Spell := WhichSpellToCast;
           Writeln('Casting ' + Spell + ' Spell.');
           GetExp;
          end;
         repeat
          LoginPlayer;
          WalkToShapeFromCenter;
          InEnchantArena;
          TakeShapes;
          AntiBan;
          InEnchantArena;
          EnchantInventory;
          AntiBan;
          WalkBackToCenter;
          InEnchantArena;
          DepositOrbs;
          AntiBan;
          ProgressReport;
          SrlRandomsReport;
          Report;
          if (not (LoggedIn)) then
           begin
            if TimesLogged > 2 then
             begin
              Writeln('Logged in too many times. Terminating for the safety of the user');
              Players[CurrentPlayer].Active := False;
              break;
             end;
            Writeln('Logging Player Back In');
            Players[CurrentPlayer].Active := True;
            wait(15000 + random(5000));
            LoginPlayer;
            Randoms;
            TimesLogged := TimesLogged + 1;
            WalkToEnchantChamber;
            Randoms;
            FindCenter;
           end;
         until (false) or (ShapesEnchanted >= NumberOfCosmics);
        end;
      end;
    
     if Mode = 'Buy' then
      begin
       Writeln('Buy Mode Initiated...');
       repeat
        if (not (LoggedIn)) then
         begin
          Status('Clicking the worldswitch button');
          ClickWorldSwitchButton;
          Status('Ordering by players and type');
          OrderBy('players', 'down');
          OrderBy('type', 'down');
          ChooseRandomWorld;
          wait(2000);
          Status('Logging player');
          LoginPlayer;
          WorldsHopped := WorldsHopped + 1;
          ReportVars[4] := ReportVars[4] + 1;
         end;
        HighestAngle;
        Randoms;
        if (not (InBlack)) then
          begin
          Writeln('Go put yourself next to the rewards guardian');
          TerminateScript;
          end;
          TradeWithRewardsGuardian;
          Wait(2000+random(500));
        BuyCosmics;
        CloseCosmicWindow;
        Randoms;
        Logout;
        BuyProg;
        SrlRandomsReport;
        Report;
       until (CosmicsToBuy <= CosmicsBought);
      end;
     Endme;
    end.
    
     
  3. Unread #2 - Oct 3, 2007 at 10:43 PM
  4. E School
    Joined:
    Jul 20, 2007
    Posts:
    927
    Referrals:
    0
    Sythe Gold:
    0

    E School Apprentice
    Banned

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    seems like a very good idea
    not big on mage arena tho and dont use bots
    but if it works as well as u say it does then good on ya m8
     
  5. Unread #3 - Oct 3, 2007 at 10:49 PM
  6. Sp0rk eh
    Joined:
    May 17, 2007
    Posts:
    217
    Referrals:
    0
    Sythe Gold:
    0

    Sp0rk eh Active Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Thanks. You shud test it :p

    Undetectable...

    And pretty flawless.
     
  7. Unread #4 - Oct 9, 2007 at 3:29 PM
  8. Phising
    Joined:
    Jan 21, 2007
    Posts:
    178
    Referrals:
    0
    Sythe Gold:
    0

    Phising Active Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Is this safe?? Can someone test it?
     
  9. Unread #5 - Oct 16, 2007 at 1:14 PM
  10. kefco
    Referrals:
    0

    kefco Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Line 974: [Hint] (15669:10): Variable 'Result' never used in script C:\Documents and Settings\J.W Bor\Bureaublad\Mage Arena Enchanter - (M.A.E.) .scar
    Line 1204: [Error] (15899:9): Unknown identifier 'Decode' in script C:\Documents and Settings\J.W Bor\Bureaublad\Mage Arena Enchanter - (M.A.E.) .scar

    this is what it say at me, what i gotta do?
     
  11. Unread #6 - Oct 17, 2007 at 12:59 PM
  12. lefty
    Referrals:
    0

    lefty Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    so will how many runes should we start with? and recomennded magic lvl?
     
  13. Unread #7 - Oct 17, 2007 at 11:52 PM
  14. Sp0rk eh
    Joined:
    May 17, 2007
    Posts:
    217
    Referrals:
    0
    Sythe Gold:
    0

    Sp0rk eh Active Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Read the original post..

    @lefty: 10k cosmics if running through the night? and any magic level.
     
  15. Unread #8 - Oct 19, 2007 at 5:12 AM
  16. eggyrange
    Referrals:
    0

    eggyrange Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Hi, could you please host on file front or something? I can't get it on either forums or otherwise you could send it to me over msn which is [email protected] thanks, .:Eggy:.
     
  17. Unread #9 - Oct 22, 2007 at 10:47 AM
  18. crosshood
    Referrals:
    0

    crosshood Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    U ask its safe? lol yeah its 100% scam safe :D but not 100% ban safe lol
     
  19. Unread #10 - Oct 22, 2007 at 2:49 PM
  20. Mike_The_FireCaper
    Joined:
    Oct 15, 2007
    Posts:
    754
    Referrals:
    2
    Sythe Gold:
    0

    Mike_The_FireCaper Apprentice
    Banned

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Use scarscape, stops runescape rotating.

    Ill test this once back from hols, might be pretty useful. The only other MTA "bot" I know of is one that costs $20, although it does all and has very advanced antiban.
     
  21. Unread #11 - Nov 1, 2007 at 4:56 PM
  22. Sp0rk eh
    Joined:
    May 17, 2007
    Posts:
    217
    Referrals:
    0
    Sythe Gold:
    0

    Sp0rk eh Active Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Majour update, v0.2

    Fixes:
    * Minimap Re-calibration when color not found
    * Full buymode upgrade and fix
    * New Srl Stats entirely
    * Fix of srl stats
    * Faster Enchanting
    * More Antiban
    * Smoother Script. Should be pretty flawless.
     
  23. Unread #12 - Nov 4, 2007 at 11:58 AM
  24. Goatsie
    Referrals:
    0

    Goatsie Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    EDIT: Scratch that. It's dying now for some odd reason. It goes to one of the corners, pauses, then logs out. Says it can't find the colors... is this outdated? Has there been an update to the Mage Training arena or something?
     
  25. Unread #13 - Nov 10, 2007 at 10:13 AM
  26. Oni punk
    Joined:
    Aug 2, 2005
    Posts:
    63
    Referrals:
    0
    Sythe Gold:
    0

    Oni punk Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    fffffffffffuuuuuuuuu
     
  27. Unread #14 - Nov 14, 2007 at 2:49 AM
  28. gtdarkpunisher
    Joined:
    Apr 15, 2007
    Posts:
    2,498
    Referrals:
    1
    Sythe Gold:
    199
    Discord Unique ID:
    607294774269050910
    Discord Username:
    gtdarkpunisher

    gtdarkpunisher Grand Master

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Mines cant even start the thing. It says it cant find the colors going to cylinders etc then logs.
     
  29. Unread #15 - Nov 17, 2007 at 3:01 PM
  30. heywassup?
    Referrals:
    0

    heywassup? Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Doesn't it worK?
    Maybe was gonna try it out.
     
  31. Unread #16 - Nov 25, 2007 at 10:13 AM
  32. ancheryay
    Joined:
    Jun 4, 2007
    Posts:
    766
    Referrals:
    0
    Sythe Gold:
    0

    ancheryay Apprentice
    Banned

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    WoW! this one reeeeaallllly rocks! GOO JOOB! ;) keep it going !

    unfortunley i was so fast to close scar i didnt get time to copy and paste progress report into here :p but anyways good jobb! :D
     
  33. Unread #17 - Nov 25, 2007 at 11:12 AM
  34. ancheryay
    Joined:
    Jun 4, 2007
    Posts:
    766
    Referrals:
    0
    Sythe Gold:
    0

    ancheryay Apprentice
    Banned

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    I just let it run for about 50min and look here im using the lvl 57 enchant.

     
  35. Unread #18 - Nov 28, 2007 at 6:21 AM
  36. Freshy15
    Referrals:
    0

    Freshy15 Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    Works fine ;] but slowly.
    And is it possible to get banned for this?
     
  37. Unread #19 - Nov 28, 2007 at 8:11 AM
  38. XXX Emma XXX
    Joined:
    Nov 25, 2007
    Posts:
    68
    Referrals:
    0
    Sythe Gold:
    0

    XXX Emma XXX Member

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    looks good i might use
     
  39. Unread #20 - Nov 30, 2007 at 5:51 AM
  40. Freshy15
    Referrals:
    0

    Freshy15 Guest

    Sp0rk-eh's Mage Arena Enchanter (M.A.E.)

    It Logs me out so often.. It max enchant to 50k xp and log out.. - and the mini map is moving playing runescape and then it doesn't find the right color and again logged out - fix the problems please if its possible.
     
< Hello all, Particles(Flash Game) | my first script =) >

Users viewing this thread
1 guest


 
 
Adblock breaks this site