Page 55 of 90 FirstFirst ... 545535455565765 ... LastLast
Results 1,351 to 1,375 of 2238

Thread: [C][SRL5]ZMI-Extreme

  1. #1351
    Join Date
    Feb 2012
    Location
    Toronto Ontario, Canada
    Posts
    331
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    lol, it's too bad about the teleporting loop, I was happy I was making back some of the money spent on the pure essence from the gain in astrals/laws ='(
    118/120 Dungeoneering

  2. #1352
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Agh the map colors are changing SO much now. Seems like every time we change surfaces the road color shifts, I don't remember the map changing this often, it's really aggravating...

    For now, use this version: it has fixed Prayers and uses a static coordinate walking for above-ground. Until I can find a solution to this TPA map-walking, we'll just have to use this.

    Simba Code:
    {/////////////////////////////////////////
                      //       ~ZMI-Extreme by Flight~        //
                      //                                      //
                      //            Version: 1.71             //
                      /////////////////////////////////////////}


    program ZMIExtreme;
      {$DEFINE SMART}

      {$i SRL/srl.simba}
      {$i SPS/sps.simba}
      {$i SRL/SRL/misc/reports.simba}
      {$i SRL/SRL/misc/paintsmart.simba}

    Const

    //SRL Stats
      SRLStats_Username = '';
      SRLStats_Password = '';

    //General settings
      HPLevel      = 99;          //Your (max) Constitution/Hitpoints level
      Food         = 'monkfish';  //Trout, Tuna, Lobster, Swordfish, Monkfish, Shark
      EatAt        = 70;          //Eat at this health percent or less
      UsePrayer    = True;        //Use ranged protection prayers?
      RuneType     = 'mind';      //Type of rune to use for bank payment (20 runes per session)
      RestAt       = 60;          //Run energy % to rest at (after banking)
      SwitchWorlds = True;        //Switch worlds after a break?

    //Pouch settings
      SS            = 7;           //Which slot # has your small pouch (0 for not using)
      MS            = 6;           //Which slot # has your medium pouch (0 for not using)
      LS            = 5;           //Which slot # has your large pouch (0 for not using)
      GS            = 4;           //Which slot # has your giant pouch (0 for not using)
      RepairMethod  = 'spell';     //Spell or Contact

    //Break settings
      BreakIn      = 180;          //How long before we take a break? (minutes)
      BreakFor     = 25;           //How long will we break for? (minutes)
      Bir          = 13;           //Random minutes to add/subtract from how long until we break
      Bfr          = 7;            //Random minutes to add/subjtract from break duration


      Fill  = 0;       //Ignore
      Empty = 1;       //Ignore

    Var
      MPoint: TPoint;
      Version: String;
      Exp,Exp_C,ReportTime,Runs,
      CommitTime,FoodC,RepairC,
      XPToLvl,OldXP,AC: Integer;
      PP1,PP2,OptionsSet,AddRun: Boolean;
      Path_ToAltar: TPointArray;
      LCols: TIntegerArray;

    //Import painting
      Prog: Integer;
      PaintArray: TStringArray;

    //Break variables
      w,x,y,z,RealBTime,CurrentBTime,
      BreakRounds,TotalBreaks: Integer;


      Procedure DeclarePlayers;
      begin
        HowManyPlayers := 1;
        NumberOfPlayers(HowManyPlayers);
        CurrentPlayer := 0;
        with Players[0] do
        begin
          Name        := '';
          Pass        := '';
          Pin         := '';
          Level[SKILL_HITPOINTS] := HPLevel;
          BoxRewards  := ['XP','xp','lamp'];
          LampSkill   := Skill_Runecrafting;
          Active      := True;
        end;
      end;

      //By Dgby714
      function DownloadToFile(const URL, Filename: string): boolean;
      var
        FileI: LongInt;
        FileC, FileH: string;
      begin
        Result := False;

        FileI := InitializeHTTPClient(False,False);
        try
          FileC := GetHTTPPage(FileI, URL);
          FileH := GetRawHeaders(FileI);

          if ((FileC = '') or (FileH = '')) then
          begin
            WriteLn('Error downloading "' + URL + '".');
            Exit;
          end;

          FileH := Copy(GetRawHeaders(FileI), 10, Pos(#13, FileH) - 10);

          if (FileH <> '200 OK') then
          begin
            WriteLn('Couldn''t download "' + URL + '", Error Code: ' + FileH + '.');
            Exit;
          end;

        finally
          FreeHTTPClient(FileI);
        end;

        try
          if not FileExists(Filename) then
            FileI := CreateFile(Filename)
          else
            FileI := OpenFile(Filename, False);

          CloseFile(FileI);

          FileI := RewriteFile(Filename, False);
          Result := WriteFileString(FileI, FileC);
        finally
          CloseFile(FileI);
        end;
      end;

      Procedure LoadVars;
      begin

        Version := '1.71';
        //http://flight.clawz.com/imgs/ZMIImg.png
        DownloadToFile('http://i.imgur.com/6RN9F.png', AppPath + '/Scripts/ZMIImg.png');

        w := (BreakIn * 60000);
        x := (BreakFor * 60000);
        y := RandomRange(-Bir * 60000, Bir * 60000);
        z := RandomRange(-Bfr * 60000, Bfr * 60000);

        Path_ToAltar := [Point(160, 550), Point(160, 580), Point(160, 605), Point(160, 645),
                        Point(165, 675), Point(175, 710), Point(205, 725), Point(240, 715),
                        Point(275, 715), Point(305, 720), Point(330, 720)];

        LCols := [789517, 921102, 1052689];   //Ladder colors

        Case Lowercase(RuneType) of
          'fire': MPoint := Point(340, 125);
          'body': MPoint := Point(105, 170);
          'mind': MPoint := Point(200, 80);
          'air': MPoint := Point(300, 85);
          'water': MPoint := Point(152, 128);
        end;

        PP1 := (not (GS = 0));
        PP2 := (not (LS = 0));
        AddRun := False;

      end;

      Procedure Report;
      begin
        ClearDebug;

        SRLRandomsReport;
        SRLProgressReport(ResultDebugBox, 'ZMI-Extreme', 'Flight', Version,
          ['Run time', 'Exp gained', 'Loads completed', Capitalize(Food)+' ate',
          'Pouches repaired', 'Breaks'],
        [MsToTime(GetTimeRunning, Time_Abbrev), Exp, Runs, FoodC, RepairC, TotalBreaks]);

        MarkTime(ReportTime);
      end;

      Procedure Commit;
      begin
        stats_IncVariable('Runecrafting EXP (Gained)', Exp_C);
        Stats_Commit;
        Exp_C := 0;
        MarkTime(CommitTime);
      end;

      Procedure Shutdown(Reason: String);
      begin
        ClearDebug;
        Writeln('');
        WriteLn('{{{==Script shutdown==}}}');
        Writeln('----Reason: '+Reason+'----');
        Writeln('');
        Wait(RandomRange(1000,1300));
        CloseBank;
        Report;
        Logout;
        ShowMessage('[Shutdown] Reason: '+Reason);
        TerminateScript;
      end;

      procedure OnScreen(Force: boolean);
      var
       XPH,TTB,Portion,I: Integer;
       TP: TPoint;
       V: string;
      begin

        if (Exp < 1) then
          Exp := 1;

        XPH := Round((Exp * 3600) / (GetTimeRunning / 1000));
        TTB := (((w) + (y) + BreakRounds)-GetTimeRunning);

        for I := 0 to 6 do
        begin
          case I of
            0:
            begin
              V  := 'V.'+Version;
              TP := Point(397, 25);
            end;

            1:
            begin
              V  := MsToTime(GetTimeRunning, Time_Abbrev);
              TP := Point(130, 50);
            end;

            2:
            begin
              V  := IntToStr(Exp);
              TP := Point(130, 70);
            end;

            3:
            begin
              V  := IntToStr(XPH);
              TP := Point(131, 92);
            end;

            4:
            begin
              V  := IntToStr(Runs);
              TP := Point(342, 67);
            end;

            5:
            begin
              V  := IntToStr(XPToLvl-Exp);
              TP := Point(342, 88);
            end;

            6:
            begin
              V  := 'TTB: '+MsToTime(TTB,Time_Bare);
              TP := Point(204, 107);
            end;
          end;

          if V = PaintArray[I] then
            Continue;

          Portion := GetMufasaBitmap(Prog).Copy(TP.x, TP.y, TP.x + 76, TP.y + 17).Index;
          SMART_DrawBitmap(False, Portion, Point(MCX1 + TP.x, MCY1 + TP.y));
          FreeBitmap(Portion);
          SMART_DrawTextEx(False, MCX1 + TP.x, MCY1 + TP.y, SmallCharsNS, V, clWhite);
        end;
        PaintArray := ['V.'+Version, MsToTime(GetTimeRunning, Time_Abbrev), IntToStr(Exp), IntToStr(XPH),
          IntToStr(Runs), IntToStr(XPToLvl-Exp), 'TTB: '+MsToTime(TTB,Time_Bare)];
      end;

      procedure LoadImg;
      begin
        Prog := LoadBitmap(AppPath + '/Scripts/ZMIImg.png');
        SMART_DrawBitmap(True, Prog, Point(MCX1, MCY1));
        SetLength(PaintArray, 7);
      end;

      Procedure DestroyImg;
      begin
        FreeBitmap(Prog);
      end;

      Procedure UpdateSPSMap;
      begin
        Writeln('Checking SPS map & tolerance...');

        if not FileExists(AppPath + '/Includes/SPS/img/runecrafting_altars/0_1.png') then
          DownloadToFile('http://i.imgur.com/ktZ1K.png', AppPath + '/Includes/SPS/img/runecrafting_altars/0_1.png');

        SPS_Setup(Runecrafting_Altars, ['0_1']);
        if (not (SPS_Surface.Tolerance = 0.5)) then
        begin
          Writeln('Adjust SPS map tolerance...');
          SPS_Surface.Tolerance := 0.5
        end;
        SPS_Continue := True;
      end;

      Function IsMoving_F: Boolean;
      begin
        Result := PixelShift(IntToBox(MMCX-30, MMCY-30, MMCX+30, MMCY+30), 200) > 200;
      end;

      Function RunesMenu: Boolean;
      var
        X,Y: Integer;
      begin
        Result := FindText(x, y, 'light', UpCharsEx, 145, 275, 360, 315);
      end;

      Function UsingQuickPrayers: Boolean;
      Var
        X,Y: Integer;
      begin
        Result := FindColorTolerance(X, Y, 9154193, 710, 75, 730, 85, 20);
      end;

      //By Bandland100, modified to shift mouse speeds after every step
      procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
      var
        veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist,step: extended;
        lastX,lastY,MSP,W: integer;
        sqrt2,sqrt3,sqrt5: extended;
      begin
        MSP  := MouseSpeed;
        sqrt2:= sqrt(2);
        sqrt3:= sqrt(3);
        sqrt5:= sqrt(5);
        while hypot(xs - xe, ys - ye) > 1 do
        begin
          dist:= hypot(xs - xe, ys - ye);
          wind:= minE(wind, dist);
          if dist >= targetArea then
          begin
            windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
            windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
          end else
          begin
            windX:= windX / sqrt2;
            windY:= windY / sqrt2;
            if (maxStep < 3) then
            begin
              maxStep:= random(3) + 3.0;
            end else
            begin
              maxStep:= maxStep / sqrt5;
            end;
          end;
          veloX:= veloX + windX;
          veloY:= veloY + windY;
          veloX:= veloX + gravity * (xe - xs) / dist;
          veloY:= veloY + gravity * (ye - ys) / dist;
          if hypot(veloX, veloY) > maxStep then
          begin
            randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
            veloMag:= sqrt(veloX * veloX + veloY * veloY);
            veloX:= (veloX / veloMag) * randomDist;
            veloY:= (veloY / veloMag) * randomDist;
          end;
          lastX:= Round(xs);
          lastY:= Round(ys);
          xs:= xs + veloX;
          ys:= ys + veloY;

          case Random(50) of
            1..25: W := (MSP + (Random((MSP/4))));
            26..50: W := (MSP - (RandomRange((MSP/2), MSP-1)));
          end;
          if (W < 1) then
            W := 1;

          if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
            MoveMouse(Round(xs), Round(ys));

          step:= hypot(xs - lastX, ys - lastY);
          //W := round((maxWait - minWait) * (step / maxStep) + minWait);
          wait(W);
          lastdist:= dist;
        end;

        if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
          MoveMouse(Round(xe), Round(ye));

        MouseSpeed := MSP;
      end;

      Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
      var
        randSpeed: extended;
        X,Y,X2,Y2,A,Dist,MP: integer;
      begin
        A := MouseSpeed;
        GetMousePos(X, Y);
        Dist := Distance(X, Y, eX, eY);
        MP := Round(Dist/150);
        if MP < 0 then
          MP := 1;

        randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
        X2 := RandomRange(eX-(A*MP), eX+(A*MP));
        Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
        SuperWindMouse(X, Y, X2, Y2, 9, 5, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
        GetMousePos(X, Y);
        MMouse(eX, eY, ranX, ranY);
        MouseSpeed := A;
      end;

      Procedure ActivateQuickPrayer;
      begin
        if UsingQuickPrayers then Exit;

        HumanMMouse(723, 70, 10, 10);
        ClickMouse2(True);
      end;

      Function LowPrayer: Boolean;
      begin
        Result := FindColorTolerance(X, Y, 255, 740, 70, 760, 80, 10)
      end;

      Procedure SetNorth;
      begin
        Mouse(542, 24, 15, 15, mouse_left);
        KeyDown(38);
        Wait(850 + Random(100));
        KeyUp(38);
      end;

      Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
      var
        B: TBox;
        TPA: TPointArray;
        L,i,CTS: Integer;
        ATPA,ATPA2: T2DPointArray;
      begin
        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);

        if ((Ident = 1) or (Ident = 2) or (Ident = 5) or (Ident = 6)) then
          FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMCX+10, MMY2, 10)
        else
        FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 10);

        if Length(TPA) < 1 then
        begin
          ColorToleranceSpeed(CTS);
          Exit;
        end;

        ATPA := TPAtoATPAEx(TPA, 10, 10);
        L := High(ATPA);
        SetArrayLength(ATPA2, L+1);
        for i := 0 to L do
        begin
          B := GetTPABounds(ATPA[i]);
          with B do
          begin
            if (Ident = 1) then
              FindColorsTolerance(ATPA2[i], 16514299, B.X1, B.Y1, B.X2, B.Y2, 5)  //Altar (white)
            else if (Ident = 2) then
              FindColorsTolerance(ATPA2[i], 1244922, B.X1, B.Y1, B.X2, B.Y2, 5)   //Altar (yellow)
            else if (Ident = 3) then
              FindColorsTolerance(ATPA2[i], 2413294, B.X1, B.Y1, B.X2, B.Y2, 5)   //Bank
            else if (Ident = 4) then
              FindColorsTolerance(ATPA2[i], 2370858, B.X1, B.Y1, B.X2, B.Y2, 5)   //Hunter
            else if (Ident = 5) then
              FindColorsTolerance(ATPA2[i], 200951, B.X1, B.Y1, B.X2, B.Y2, 5)    //RC symbol
            else if (Ident = 6) then
              FindColorsTolerance(ATPA2[i], 2763504, B.X1, B.Y1, B.X2, B.Y2, 5)   //Dungeon
            else if (Ident = 7) then
              FindColorsTolerance(ATPA2[i], 254, B.X1, B.Y1, B.X2, B.Y2, 5);      //Big arrow
            Result := (Length(ATPA2[i]) > 0);
            if Result then
            begin
              ColorToleranceSpeed(CTS);
              MiddleTPAEx(ATPA2[i], X, Y);
              Dist := Distance(MMCX, MMCY, X, Y);
              Exit;
            end;
          end;
        end;
      end;

      Function NearSymbol(Which: Integer): Boolean;
      var
        X,Y,D: Integer;
      begin
        Result := FoundSymbol(Which, X, Y, D);
      end;

      Function AboveGround: Boolean;
      begin
        Result := (PercentBlackMM < 20);
      end;

      Function NearLadder: Boolean;
      var
        X,Y,D: Integer;
      begin
        Result := False;

        if (FoundSymbol(5, X, Y, D) or FoundSymbol(6, X, Y, D)) then
          Result := (D < 20);

      end;

      Procedure ReturnValues(colors: TIntegerArray; var HueMods, SatMods: Extended; var color, Tolerance: Integer);
      Var
        h, s, t: Extended;
        I,II : integer;
        HSLColor : Array[1..3] of Extended;
        HSL : Array[0..1] of Array[1..3] of Extended;
      begin;
        For I:= 1 to 3 do
        begin;
          HSL[0][i] := 255;
        end;

        For I:= 0 to High(Colors) do
        begin;
          ColortoHSL(Colors[i],HSLColor[1],HSLColor[2],HSLColor[3]);
          For II:= 1 to 3 do
          begin;
            HSL[0][II] := MinE(HSLColor[II],HSL[0][II]);
            HSL[1][II] := MaxE(HSLColor[II],HSL[1][II]);
          end;
        end;

        H := (HSL[1][1] - HSL[0][1]);
        S := (HSL[1][2] - HSL[0][2]);
        T := (HSL[1][3] - HSL[0][3]);

        try
          HueMods := (H/T);
          SatMods := (S/T);
          Tolerance := Round(t);
        except
          HueMods := 0;
          SatMods := 0;
          Tolerance := Round(0.0);
        end;

        Color := HSLToColor((HSL[1][1] + HSL[0][1]) div 2,(HSL[1][2] + HSL[0][2]) div 2,(HSL[1][3] + HSL[0][3]) div 2);
      end;

      Procedure SetPrayers;
      var
        X,Y,X2,Y2,T,T2: Integer;
        PPoint: TPoint;
      label
        MoveM;
      begin
      {Right-click prayer icon}
        HumanMMouse(724, 70, 8, 8);
        ClickMouse2(False);
        WaitOption('elect', 400);

      {Wait for the quick-prayer selection menu}
        MarkTime(T);
        repeat
          if TimeFromMark(T) > 5000 then
            Exit;
          if FindColorTolerance(X, Y, 8499692, 610, 445, 630, 465, 10) then
            break;
        until(false);

      {Determine the player's prayer type & choose the right protection prayer}
        if (FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) or FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230)) then
        begin
          if FindText(X, Y, 'urses', StatChars, 630, 200, 690, 230) then
            PPoint := Point(671, 274)
          else if FindText(X, Y, 'rayers', StatChars, 630, 200, 690, 230) then
            PPoint := Point(670, 343);

      {Check if prayers are already set}
          if not FindColorTolerance(X2, Y2, 461806, PPoint.X-10, PPoint.Y-10, PPoint.X+10, PPoint.Y+10, 10) then
          begin
            MoveM:
            if not LoggedIn then Exit;

            HumanMMouse(671, 274, 4, 4);

            if WaitUpText('elect', 400) then
            begin
              ClickMouse2(True);
              Wait(RandomRange(175, 350));
            end else
              goto MoveM;
          end else
            Writeln('Prayers already selected');

      {Hit confirm}
          HumanMMouse(645, 456, 15, 5);
          ClickMouse2(True);
        end;

      {Wait for the prayer selection to be confirmed}
        MarkTime(T2);
        repeat
          if TimeFromMark(T2) > 5000 then
            Exit;
          if (not FindText(x, y, 'urses', StatChars, 630, 200, 690, 230) and (not FindText(x, y, 'rayers', StatChars, 630, 200, 690, 230))) then
            break;
        until(false);

        OptionsSet := True;
        Gametab(Tab_Inv);

        Writeln('Quick-prayers set');

      end;

      Function TeleportOut: Boolean;
      var
        X,Y,I,DTM: Integer;
      label
        Start;
      begin
        Result := False;

        Start:
        if NearSymbol(4) then Exit;
        if not LoggedIn then Exit;

        DTM := DTMFromString('mWAAAAHicY2FgYNjGxMCwhQlCbwZiRkYGhj9AcQ4g/R9IW1tbMRjqnmS4eMiT4fXrVwz8QDFkzISGQQAAddcLnQ==');
        Gametab(tab_Magic);
        Wait(RandomRange(365, 410));

        if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
        begin
          I := 0;
          HumanMMouse(X, Y, 7, 7);
          ClickMouse2(True);
          Gametab(tab_Inv);
          HumanMMouse(580, 115, 15, 15);
          Wait(RandomRange(2000, 2250));
          FindNormalRandoms;

          if not WaitFunc(@AboveGround, 100, 4000) then
            goto Start;

        end else
        begin
          Inc(I);
          if (I > 3) then
            Shutdown('Failed to find spell DTM')
          else
          begin
            Writeln('Failed to find spell '+IntToStr(I)+' time');
            FindNormalRandoms;
            Gametab(tab_Magic);
            Wait(RandomRange(125, 275));
            goto Start;
          end;
        end;

        Result := AboveGround;
        SetRun(True);

        FreeDTM(DTM);
      end;

      Function FindLadder(Var X, Y: Integer): Boolean;
      var
        B: TBox;
        Loop: Boolean;
        TPA,TPA2,PBox: TPointArray;
        i,CTS: Integer;
        ATPA: T2DPointArray;
        label
          Start;
      begin
        Result := False;
        Loop := False;
        PBox := TPAFromBox(IntToBox(240, 130, 275, 185));

        Start:
        FindNormalRandoms;
        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
        FindColorsSpiralTolerance(130, 170, TPA, 3029573, MSX1, MSY1, MSCX, MSY2, 15)
        TPA := ClearTPAFromTPA(TPA, PBox);

        if Length(TPA) < 1 then
        begin
          ColorToleranceSpeed(CTS);
          Exit;
        end;

        ATPA := TPAtoATPAEx(TPA, 20, 20);

        for i := 0 to High(ATPA) do
        begin
          B := GetTPABounds(ATPA[i]);
          with B do
          begin
            FindColorsSpiralTolerance(130, 170, TPA2, 921102, B.X1, B.Y1, B.X2, B.Y2, 15);
            TPA2 := ClearTPAFromTPA(TPA2, PBox);

            if Length(TPA2) > 0 then
            begin
              ColorToleranceSpeed(CTS);
              MiddleTPAEx(TPA2, X, Y);
              HumanMMouse(X, Y, 5, 5);
              Result := True;
              Exit;
            end;

          end;
        end;
        ColorToleranceSpeed(CTS);
        if Loop then
          goto Start;

      end;

      Function FindChaosAltar(Var X, Y: Integer): Boolean;
      var
        B: TBox;
        TPA: TPointArray;
        L,i,CTS: Integer;
        ATPA,ATPA2: T2DPointArray;
      begin
        Result := False;

        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
        FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3685505, MSX1, MSY1, MSX2, MSY2, 20)

        if Length(TPA) < 1 then
        begin
          ColorToleranceSpeed(CTS);
          Exit;
        end;

        ATPA := TPAtoATPAEx(TPA, 30, 30);
        L := High(ATPA);
        SetArrayLength(ATPA2, L+1);

        for i := 0 to L do
        begin

          B := GetTPABounds(ATPA[i]);
          with B do
          begin
            FindColorsSpiralTolerance(MSCX, MSCY, ATPA2[i], 11908541, B.X1, B.Y1, B.X2, B.Y2, 20)
            if Length(ATPA2[i]) > 0 then
            begin
              ColorToleranceSpeed(CTS);
              MiddleTPAEx(ATPA2[i], X, Y);
              HumanMMouse(X, Y, 5, 5);
              Result := True;
              Exit;
            end;
          end;

        end;
      end;

      Function FindRoad: boolean;
      Var
        i,x,y,CTS: integer;
        TPA: TPointArray;
        Cols: TIntegerArray;
        HMods,SMods: Array of Extended;
      begin
        result := false;
        if not LoggedIn then Exit;
        FindNormalRandoms;
        CTS := GetColorToleranceSpeed;

        Cols := [4083800, 3623510, 4148053, 4018779, 4215390, 3886425];
        HMods := [0.08, 0.08, 0.16, 0.08, 0.12, 0.09];
        SMods := [0.15, 0.11, 0.20, 0.09, 0.12, 0.09];

        for i := 0 to High(Cols) do
        begin
          ColorToleranceSpeed(2);
          SetColorSpeed2Modifiers(HMods[i], SMods[i]);
          FindColorsSpiralTolerance(575, 130, TPA, Cols[i], MMX1, MMY1, MMX2, MMY2, 8);
          ColorToleranceSpeed(CTS);

          if (Length(TPA) > 0) then break;
        end;

        if (Length(TPA) > 0) then
        begin
          ColorToleranceSpeed(CTS);
          sortTPAFrom(TPA, Point(575, 135));

          for i := 0 to high(TPA) do
          begin
            x := TPA[i].x;
            y := TPA[i].y;

            if (not rs_OnMinimap(x, y)) then
              continue;

            mouse(x, y, 3, 3, mouse_left);

            if (waitFunc(@flag, 50, 3000)) then
            begin
              result := true;
              exit;
            end;
          end;
        end;
        ColorToleranceSpeed(CTS);
      end;

      Function WalkToLadder: Boolean;
      var
        X,Y,B,T,Dist: Integer;
        SH: Boolean;
      label
        Start;
      begin
        Result := False;
        SH := False;

        if AddRun then
        begin
          B := Round(GetXPBarTotal);
          Inc(Runs);
          IncEx(Exp, (B-OldXP));
          IncEx(Exp_C, (B-OldXP));
          OnScreen(False);
          AddRun := False;
          AC := 0;
        end;

        Start:
        if not LoggedIn then Exit;
        if not AboveGround then Exit;
        FindNormalRandoms;
        MakeCompass('N');

        if (NearLadder and (not LowPrayer)) then
        begin
          if FindLadder(X, Y) then
          begin
            Result := True;
            Exit;
          end;
        end;

        if (FoundSymbol(6, X, Y, Dist) or FoundSymbol(7, X, Y, Dist)) then   //Dungeon
        begin

          HumanMMouse(X, Y, 2, 2);
          ClickMouse2(True);
          if not WaitFunc(@IsMoving_F, 10, 3000) then
            goto Start;

          HumanMMouse(127, 319, 15, 15);

          While IsMoving_F do
          begin
            if not LowPrayer then
            begin
              if IsUpTextMultiCustom(['limb', 'mb L', 'adder']) then
              begin
                GetMousePos(X, Y);
                MMouse(X, Y-(RandomRange(15, 25)), 0, 0);
                ClickMouse2(True);
                if DidRedClick then
                  SH := True;
                Break;
              end;
            end else
              Wait(1);
          end;

          While IsMoving_F do
            Wait(1);

          if SH then
          begin
            MarkTime(T);
            repeat
              FindNormalRandoms;

              if NearSymbol(3) then
                Exit;
            until(TimeFromMark(T) > 5000)
          end;

          if NearLadder then
          begin
            Result := True;
            Exit;
          end else
            goto Start;

        end else if (FoundSymbol(1, X, Y, Dist) or FoundSymbol(2, X, Y, Dist)) then  //Altar
        begin

          HumanMMouse(X, Y, 2, 2);
          ClickMouse2(True);

          if not WaitFunc(@IsMoving_F, 10, 3000) then
            goto Start;

          HumanMMouse(127, 319, 15, 15);

          While IsMoving_F do
          begin
            if not LowPrayer then
            begin
              if IsUpTextMultiCustom(['limb', 'mb L', 'adder']) then
              begin
                GetMousePos(X, Y);
                MMouse(X, Y-(RandomRange(15, 25)), 0, 0);
                ClickMouse2(True);
                if DidRedClick then
                  SH := True;
                Break;
              end;
            end else
              Wait(1);
          end;

          While IsMoving_F do
            Wait(1);

          if SH then
          begin
            MarkTime(T);
            repeat
              FindNormalRandoms;

              if NearSymbol(3) then
                Exit;
            until(TimeFromMark(T) > 5000)
          end;

          if NearLadder then
          begin
            Result := True;
            Exit;
          end else
            goto Start;

        end else if ((not NearSymbol(6)) and (not NearSymbol(1))) then
        begin
          Writeln('Failed to find symbols, attempting to TPA-walk');

          //if FindRoad then
          //begin
            Mouse(567, 120, 3, 3, Mouse_Left);
            HumanMMouse(127, 319, 15, 15);

            While IsMoving_F do
            begin
              if not LowPrayer then
              begin
                if IsUpTextMultiCustom(['limb', 'mb L', 'adder']) then
                begin
                  GetMousePos(X, Y);
                  MMouse(X, Y-(RandomRange(15, 25)), 0, 0);
                  ClickMouse2(True);
                  if DidRedClick then
                    SH := True;
                  Break;
                end;
              end else
                Wait(1);
            end;

            While IsMoving_F do
              Wait(1);

            if SH then
            begin
              MarkTime(T);
              repeat
                FindNormalRandoms;

                if NearSymbol(3) then
                  Exit;
              until(TimeFromMark(T) > 5000)
            end;

            if NearLadder then
            begin
              Result := True;
              Exit;
            end else
              goto Start;
          //end else
          //begin
            //TeleportOut;
            //goto Start;
          //end;
        end;

      end;

      Function HandleAltar: Boolean;
      var
        A,B: Boolean;
        X,Y,T,I: Integer;
      label
        Start;
      begin
        Result := False;

        if not LowPrayer then
        begin
          Result := True;
          Exit;
        end;

        A := False;
        B := False;

        if FlagPresent then
          FFlag(1)
        else
          While IsMoving_F do
            Wait(1);

        Start:
        MarkTime(T);
        repeat
          if not LoggedIn then Exit;
          FindNormalRandoms;

          if FindChaosAltar(X, Y) then
          begin

            if WaitUpTextMulti(['ay-at', 'aos alt'], 400) then
            begin

              ClickMouse2(True);

              if DidRedClick then
              begin
                if FlagPresent then
                  FFlag(1)
                else
                  While IsMoving_F do
                    Wait(1);

                B := True;
                break;
              end;

            end else
            begin

              ClickMouse2(False);
              if WaitOption('ray-at', 500) then
              begin
                if FlagPresent then
                  FFlag(1)
                else
                  While IsMoving_F do
                    Wait(1);

                B := True;
                break;
              end;

            end;
          end;

          if (TimeFromMark(T) > 7000) then
          begin
            A := True;
            break;
          end;

        until(false)

        if A then
        begin
          Inc(I);

          Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
          FFlag(0);
          While IsMoving_F do
            Wait(1);

          if (I > 3) then
          begin
            if not FindChaosAltar(X, Y) then
            begin
              if TeleportOut then
              begin
                Wait(RandomRange(2100, 2600));
                I := 0;
                Exit;
              end;
            end;
          end;

          Wait((RandomRange(600, 775)));
          goto Start;

        end;

        if B then
        begin
          While IsMoving_F do
            Wait(1);

          ActivateQuickPrayer;

          Result := True;
          Exit;
        end;

      end;

      Function HandleLadder: Boolean;
      var
        A,B,C: Boolean;
        X,Y,T,T2,I: Integer;
      label
        Start;
      begin
        Result := False;
        A := False;
        B := False;
        C := False;

        if FlagPresent then
          FFlag(1)
        else
          While IsMoving_F do
            Wait(1);

        Start:
        MarkTime(T);
        repeat
          FindNormalRandoms;

          if NearSymbol(3) then
          begin
            Result := True;
            Exit;
          end;

          if FindLadder(X, Y) then
          begin

            if WaitUpTextMulti(['limb', 'mb L', 'adder'], 400) then
            begin

              ClickMouse2(True);

              if DidRedClick then
              begin
                if FlagPresent then
                  FFlag(1)
                else
                  While IsMoving_F do
                    Wait(1);
                B := True;
                break;
              end else
              begin
                C := True;
                break;
              end;

            end else
            begin

              ClickMouse2(False);
              if WaitOptionMulti(['Clim','limb','imb','b L'], 500) then
              begin
                if FlagPresent then
                  FFlag(1)
                else
                  While IsMoving_F do
                    Wait(1);
                B := True;
                break;
              end else
              begin
                C := True;
                break;
              end;

            end;
          end;

          if (TimeFromMark(T) > 7000) then
          begin
            A := True;
            break;
          end;

        until(false)

        if A then
        begin
          if NearSymbol(3) then
          begin
            Result := True;
            Exit;
          end;

          Inc(I);

          Mouse(MMCX, MMCY+10, 2, 2, mouse_left);
          FFlag(0);
          While IsMoving_F do
            Wait(1);

          if (I > 3) then
          begin
            if not FindLadder(X, Y) then
            begin
              if TeleportOut then
              begin
                Wait(RandomRange(2100, 2600));
                I := 0;
                Exit;
              end;
            end;
          end;

          Wait((RandomRange(600, 775)));
          goto Start;

        end;

        if B then
        begin

          MarkTime(T2);
          repeat
            FindNormalRandoms;
            if (TimeFromMark(T2) > 5000) then
              Exit;
            if ((not AboveGround) or NearSymbol(3)) then
              break;
          until(false)

          Result := ((not AboveGround) or NearSymbol(3));
        end;

        if C then
          goto Start;

      end;

      Function SPS_WalkPath_F(Path: TPointArray): boolean;
      var
        I, H, T, D: integer;
        P, MM: TPoint;
      begin
        H := High(Path);
        T := GetSystemTime + 20000 + Random(5000);
        while (not Result) and (GetSystemTime < T) do
        begin
          RunEnergy(20);

          P := SPS_GetMyPos;
          for I := H downto 0 do
          begin
            MM.X := MMCX + Path[I].X - P.X;
            MM.Y := MMCY + Path[I].Y - P.Y;

            D := Distance(MM.X, MM.Y, MMCX, MMCY);

            if (D < 10) then
              break
            else begin
              if (D < 70) then
              begin
                //Integer(I<>H)*15;
                HumanMMouse(MM.X, MM.Y, 0, 0);
                ClickMouse2(True);
                WaitFunc(@IsMoving_F, 10, 2500);
                if (I = H) then
                  FFlag(25)
                else
                  FFlag(15);
                T := getSystemTime + 20000 + Random(1000);
                  Break;
              end;
            end;
          end;
          Result := (I = H);
        end;
      end;

      Function BankToAltar: Boolean;
      begin
        Result := False;

      //No more walking east!
        if not InvFull then Exit;
        if NearSymbol(4) then Exit;

        SetRun(True);
        SPS_WalkPath_F(Path_ToAltar);

        HumanMMouse(435, 140, 15, 15);

        While IsMoving_F do
        begin
          if IsUpTextMultiCustom(['-rune', 'unec', 'rafting']) then
            break;
        end;

        Result := True;

      end;

      Function FindBanker(Var X,Y: Integer): Boolean;
      var
        TPA,PBox: TPointArray;
        i,a,CTS,F: Integer;
        ATPA: T2DPointArray;
        Cols,Tols: TIntegerArray;
        HMods,SMods: Array of Extended;
      begin
        Result := False;
        if not LoggedIn then Exit;

        for F := 0 to 3 do
        begin

          PBox := TPAFromBox(IntToBox(240, 130, 275, 185));
          CTS := GetColorToleranceSpeed;

          if BankScreen then
          begin
            Result := True;
            Exit;
          end;

          Cols := [5929086, 5992822, 5995648, 6585989, 6453887, 5273721];
          Tols  := [9, 7, 10, 7, 7, 6];
          HMods := [0.15, 0.06, 0.19, 0.09, 0.10, 0.7];
          SMods := [0.46, 0.11, 0.39, 0.17, 0.11, 0.11];

          for i := 0 to High(Cols) do
          begin
            ColorToleranceSpeed(2);
            SetColorSpeed2Modifiers(HMods[i], SMods[i]);
            FindColorsSpiralTolerance(MSCX, MSCY, TPA, Cols[i], MSX1, MSY1, MSX2, MSY2, Tols[i]);
            ColorToleranceSpeed(CTS);

            TPA := ClearTPAFromTPA(TPA, PBox);
            if (Length(TPA) > 0) then break;

          end;

          if (Length(TPA) < 1) then Continue;

          ATPA := TPAToATPAEx(TPA, 40, 40);
          SortATPAFrom(ATPA, Point(MSCX,MSCY));

          for a := 0 to High(ATPA) do
          begin

            MiddleTPAEx(ATPA[a], X, Y);
            HumanMMouse(X, Y, 15, 15);

            if WaitUpTextMulti(['niola'], 400) then
            begin
              Result := True;
              GetMousePos(X, Y);
              Exit;
            end;

          end;

        end;

      end;

      Function FindBanker2(Var X,Y: Integer): Boolean;
      var
        TPA,PBox: TPointArray;
        HMod,SMod: Extended;
        L,i,CTS,MSP,Col,
        CType,Tol: Integer;
        ATPA: T2DPointArray;
      label
        Start;
      begin
        Result := False;
        if not LoggedIn then Exit;

        PBox := TPAFromBox(IntToBox(240, 130, 275, 185));

        CTS := GetColorToleranceSpeed;

        Start:
        if BankScreen then
        begin
          Result := True;
          Exit;
        end;

        if (CType = 2) then
        begin
          Col := 6453887;
          Tol := 7;
          HMod := 0.10;
          SMod := 0.11;
        end else if (CType = 3) then
        begin
          Col := 5273721;
          Tol := 6;
          HMod := 0.07;
          SMod := 0.11;
        end;

        if (CType = 0) then
        begin
          ColorToleranceSpeed(3);
          FindColorsSpiralTolerance(MSCX, MSCY, TPA, 6848905, MSX1, MSY1, 510, 330, 4);
          ColorToleranceSpeed(CTS);
        end else if (CType = 1) then
        begin
          ColorToleranceSpeed(3);
          FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5800071, MSX1, MSY1, 510, 330, 4);
          ColorToleranceSpeed(CTS);
        end else if ((CType = 2) or (CType = 3)) then
        begin
          ColorToleranceSpeed(2);
          SetColorSpeed2Modifiers(Hmod, SMod);
          FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MSX1, MSY1, MSX2, MSY2, Tol);
          ColorToleranceSpeed(CTS);
        end;

        TPA := ClearTPAFromTPA(TPA, PBox);

        if (Length(TPA) < 1) then
        begin
          Inc(CType);
          if (CType > 3) then
            Exit;
          goto Start;
        end;

        ATPA := TPAToATPAEx(TPA, 40, 40);
        SortATPAFrom(ATPA, Point(MSCX,MSCY));
        L := High(ATPA);
        SetArrayLength(ATPA, L+1);

        for i := 0 to L do
        begin

          MiddleTPAEx(ATPA[i], X, Y);
          MSP := MouseSpeed;
          MouseSpeed := (RandomRange(26, 33));
          HumanMMouse(X, Y, 15, 15);
          MouseSpeed := MSP;

          if WaitUpTextMulti(['niola'], 400) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end;

        end;

      end;

      Function OpenBankEniola: Boolean;
      var
        X,Y,T,T2,F,B: Integer;
        GoOn,AC: Boolean;
      label
        Start;
      begin
        Result := False;
        GoOn := False;
        AC := False;

        Start:
        if BankScreen then
        begin
          Result := True;
          Exit;
        end;

        FindNormalRandoms;
        if not LoggedIn then Exit;

        if (FindBanker(X, Y) or FindBanker2(X, Y)) then
        begin
          GoOn := True
        end else
        begin
          if (F < 1) then
          begin
            MakeCompass('W');
            AC := True;
          end;

          if (F > 4) then
            TeleportOut;

          if (F > 1) then
          begin
            if SPS_PosOnMM(Point(160, 535)) then
              SPS_WalkToPos(Point(160, 535));

            While IsMoving_F do
              Wait(1);
          end;

          Inc(F);

          goto Start;
        end;

        if GoOn then
        begin

          ClickMouse2(False);
          if not WaitOptionMulti(['Bank','ank','nk E'], 500) then
          begin
            Inc(B);

            if (B > 5) then
            begin
              Writeln('Error finding Banker text, teleporting...');
              TeleportOut;
              Exit;
            end;

            goto Start;
          end;

          if AC then
          begin
            SetNorth;
            HumanMMouse(MPoint.X, MPoint.Y, 25, 25);
          end;

          While IsMoving_F do
            Wait(1);

          MarkTime(T);
          repeat
            FindNormalRandoms;
            if (TimeFromMark(T) > 3000) then
              Exit;
            if RunesMenu then
              break;
          until(false);

          if RunesMenu then
          begin
            HumanMMouse(MPoint.X, MPoint.Y, 7, 7);
            ClickMouse2(True);

            MarkTime(T2);
            repeat
              FindNormalRandoms;
              if (TimeFromMark(T2) > 5000) then
                Exit;
              if (BankScreen) or (PinScreen) then
                break;
              Wait(100);
            until(false)

            if PinScreen then
              if (Players[CurrentPlayer].Pin <> '') then
                InPin(Players[CurrentPlayer].Pin)
              else
                Shutdown('No PIN # given');

            Wait(RandomRange(175, 350));

          end;
        end;

        Result := BankScreen;
      end;

      Procedure Eat;
      var
        DTM,X,Y,X2,
        Y2,T: Integer;
      begin
        if not LoggedIn then Exit;
        if not BankScreen then Exit;

        Case lowercase(Food) of
          'trout'   : DTM := DTMFromString('mlwAAAHicY2dgYCgD4kIgzgbiAiCuAOJaIG4EYhUgVgRiTSDWBWJtqJg8EGfERAJJJqxYDkjiwox4MBQAALdhBks=');
          'tuna'    : DTM := DTMFromString('mlwAAAHicY2dgYFAAYikgFgFiCShfHYh1gFgFiOWBWA2I9YBYFyonC8QpEWFAkgkrFoGahw0z4sFQAABkyQOa');
          'lobster' : DTM := DTMFromString('mbQAAAHicY2VgYOgB4g4g7gPiyUA8FYjPA/F1IL4CxHeA+DQQrw+TAJJMKJiLARMwYsFgAACaUQgl');
          'swordfish' : DTM := DTMFromString('mlwAAAHicY2dgYGhmZGDoBuKJQNwHxJ2MELFyIJZhgGAFIFYCYmUglofSzTFdQJIJK+YCknI4MCMeDAUA/+8G2A==');
          'monkfish': DTM := DTMFromString('mggAAAHicY2NgYJjEyMAwEYgXQPE8IJ4GxB+Bct+A+A0DhP0diH8AsbejJcP8miogiwkFcwFJEEYHjDgwBAAAZ90L0w==');
          'shark'   : DTM := DTMFromString('mggAAAHicY2NgYLBjZGAwB2JHIHYHYg8g1gfiEqBcAxBXA3EzEJcCcQsQd+RHAUkmDMzFgB0w4sAQAAAltwXX');
        end;

        if FindDTM(DTM, X, Y, MSX1, MSY1, MSX2, MSY2) then
        begin
          HumanMMouse(X, Y, 5, 5);
          ClickMouse2(False);
          WaitOption('Withdraw-5', 300);

          MarkTime(T);
          repeat
            FindNormalRandoms;

            if (TimeFromMark(T) > 5000) then
              Exit;

            if (HPPercent >= 90) then
              break;

            if FindDTM(DTM, X2, Y2, MIX1, MIY1, MIX2, MIY2) then
            begin
              HumanMMouse(X2, Y2, 5, 5);
              ClickMouse2(False);
              if WaitOption('Eat', 300) then
              begin
                Wait(RandomRange(705, 815));
                MarkTime(T);
                Inc(FoodC);
              end;
            end;

          until(false)

        end;

        if FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2) then
        begin
          HumanMMouse(X, Y, 5, 5);
          ClickMouse2(False);
          WaitOption('Deposit-All', 400);
          Wait(RandomRange(425, 675));
        end;

        FreeDTM(DTM);
      end;

      Function WithdrawEss: Boolean;
      var
        X,Y,Ess,ItemFail: Integer;
      label
        Start;
      begin
        Start:
        if not BankScreen then
          Exit;

        ColorToleranceSpeed(1);
        FixBank;

        Ess := BitmapFromString(9, 11, 'meJx1zNEKgCAQRNGfDBMRERHbysq' +
            'I/r+BIQmWYN7O3RXZRLZlObBaz32/sNZurJQVkzeAMgDlPGM6gMaY' +
            'U5owBt/nISQog64MvI9Ufetc+FPQV/tnkLVeK8kYp5U/h2GkMoDyJ' +
            '+gB5qx01w==');

        if BankScreen then
        begin
          if FindBitmapToleranceIn(Ess, X, Y, 35, 85, 480, 295, 20) then
          begin
            HumanMMouse(X, Y, 5, 5);
            ClickMouse2(False);
            Result := WaitOptionMulti(['Withdraw-All', 'w-A'], 300)
          end else
          begin
            if (ItemFail > 3) then
              Shutdown('Out of essence');

            Inc(ItemFail);
            if (ItemFail = 0) then
              Writeln('Failed finding essence '+IntToStr(ItemFail)+' time')
            else if (ItemFail > 0) then
              Writeln('Failed finding essence '+IntToStr(ItemFail)+' times');
            Wait(RandomRange(1750, 2205));
            goto Start;
          end;
        end;

        FreeBitmap(Ess);
      end;

      Function DepositEss: Boolean;
      var
        T,Slot: Integer;
      begin
        if not BankScreen then exit;

        Slot := RandomRange(9, 20);
        MouseItem(Slot, mouse_right);
        Wait(RandomRange(50, 115));
        WaitOption('Deposit-5', 300);

        MarkTime(T);
        repeat
          FindNormalRandoms;
          if (TimeFromMark(T) > 3000) then
            Result := False;
          if not InvFull then
            break;
        until(False)

        Result := (not InvFull);
      end;

      Function WithdrawRunes(Method: String): Boolean;
      var
        ABMP,CBMP,X,Y: Integer;
      begin
        Result := False;
        if not LoggedIn then Exit;

        if InvFull then
        begin
          if not BankScreen then
            OpenBankEniola
          else if BankScreen then
              DepositEss;
          Wait(RandomRange(350, 625));
        end;

        ColorToleranceSpeed(1);

        ABMP := BitmapFromString(7, 7, 'meJy7efPxzZuPCwvLiosrSkurboK5' +
              'EJSfXwIRh4tk5xTk5hUhq8nIyMnKykMWAaK0tCw0EWRDIAhoDtBwN' +
              'HMgggArDGec');
        CBMP := BitmapFromString(7, 5, 'meJyTvXBJFoaKiytKS6sg7Ny8IiDK' +
              'zy8pLCyDiGRk5GRl5WXnFEDEIYJpaVlwcbg5KSkZEHEgggsCAOmnNDQ=');

        if FindBitmapToleranceIn(CBMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) then
        begin
          HumanMMouse(X, Y, 5, 5);
          Wait(RandomRange(25, 75));
          ClickMouse2(True);
          Wait(RandomRange(350, 675));
        end;

        if (Lowercase(Method) = 'contact') then
        begin
          if FindBitmapToleranceIn(ABMP, X, Y, MSX1, MSY1, MSX2, MSY2, 20) then
          begin
            HumanMMouse(X, Y, 5, 5);
            Wait(RandomRange(25, 75));
            ClickMouse2(True);
            Wait(RandomRange(275, 475));
            ClickMouse2(True);
            Wait(RandomRange(275, 475));
          end;
        end;

        CloseBank;

        Result := True;
        FreeBitmap(ABMP);
        FreeBitmap(CBMP);

      end;

      Function HandlePouches(Method, Seq: Integer): Boolean;
      begin
        Result := False;

        if (Method = 1) then
        begin
          //Small pouch
          if not (SS = 0) then
          begin
            MouseItem(SS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

          //Medium pouch
          if not (MS = 0) then
          begin
            MouseItem(MS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

          //Large pouch
          if not (LS = 0) then
          begin
            MouseItem(LS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

          //Giant pouch
          if not (GS = 0) then
          begin
            MouseItem(GS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

        end else if (Method = 2) then
        begin
          //Small pouch
          if not (SS = 0) then
          begin
            MouseItem(SS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

          //Medium pouch
          if not (MS = 0) then
          begin
            MouseItem(MS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

          //Large pouch
          if not (LS = 0) then
          begin
            MouseItem(LS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

        end else if (Method = 3) then
        begin
          //Small pouch
          if not (SS = 0) then
          begin
            MouseItem(SS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

          //Medium pouch
          if not (MS = 0) then
          begin
            MouseItem(MS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

        end else if (Method = 4) then
        begin

          //Large pouch
          if not (LS = 0) then
          begin
            MouseItem(LS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

        end else if (Method = 5) then
        begin

          //Giant pouch
          if not (GS = 0) then
          begin
            MouseItem(GS, mouse_move);
            Wait(RandomRange(20, 75));
            if (Seq = Fill) then
            begin
              ClickMouse2(False);
              WaitOptionMulti(['ill', 'Fill'], 400)
            end else
              ClickMouse2(True);
          end;

        end;

        Result := True;
      end;

      Function FindDecayedPouch(Var Slot: Integer): Boolean;
      var
        B: TBox;
        TPA: TPointArray;
        Hmod,Smod: Extended;
        L,i,Tol,CTS,Col,X,Y: Integer;
        ATPA: T2DPointArray;
      begin
        Result := False;

        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
        ReturnValues([3422525, 3619647, 3751234], Hmod, Smod, Col, Tol);
        SetColorSpeed2Modifiers(Hmod, SMod);
        FindColorsSpiralTolerance(MSCX, MSCY, TPA, Col, MIX1, MIY1, MIX2, MIY2, Tol);
        ColorToleranceSpeed(CTS);

        if (Length(TPA) < 1) then
          Exit;
        ATPA := TPAToATPAEx(TPA, 18, 18);
        SortATPAFrom(ATPA, Point(650, 330));
        L := High(ATPA);
        SetArrayLength(ATPA, L+1);
        for i := 0 to L do
        begin
          B := GetTPABounds(ATPA[i]);
          if (GetArrayLength(ATPA[i])>10) then
          begin
            MiddleTPAEx(ATPA[i], X, Y);
            Slot := CoordsToItem(X, Y);
            Result := True;
          end;
        end;

      end;

      Function CheckPouches: Boolean;
      var
        S: Integer;
      begin
        Result := FindDecayedPouch(S);
      end;

      Function ContactScreen: Boolean;
      var
        X, Y: Integer;
      begin
        Result := FindText(x, y, 'onest', StatChars, 30, 50, 110, 80);
      end;

      Function ContactRepair: Boolean;
      var
        T,T2,T3: Integer;
      begin

        MarkTime(T);
        repeat
          FindNormalRandoms;
          if (TimeFromMark(T) > 4000) then
            Exit;
          if ContactScreen then
            break;
        until(false)

        if ContactScreen then
        begin
          MouseBox(483, 240, 491, 290, 1);
          Wait(RandomRange(275, 480));
          MouseBox(410, 110, 450, 150, 1);
        end;

        MarkTime(T2);
        repeat
          FindNormalRandoms;
          if (TimeFromMark(T2) > 6000) then
            Exit;
          if ClickToContinue then
            MarkTime(T2);
          Wait(RandomRange(125, 275));
          if FindNPCChatTextMulti(['Repa', 'epai'], ClickLeft) then
            break;
        until(false)

        MarkTime(T3);
        repeat
          FindNormalRandoms;
          if (TimeFromMark(T3) > 2000) then
            Exit;
          if ClickToContinue then
            MarkTime(T3);
          Wait(RandomRange(125, 275));
        until(false)

        Result := True;

      end;

      Function RepairPouches(Method: String): Boolean;
      var
        X,Y,Slot,Spell: Integer;
      label
        Start;
      begin
        ColorToleranceSpeed(1);

        Start:
        FindNormalRandoms;
        if not LoggedIn then Exit;

        Case Lowercase(Method) of
          'spell':
            Spell := BitmapFromString(6, 6, 'meJybsPnUqr2nmQVNHMtXAMni7mUT' +
                    'Np8CIiAbLgjh6vgXQRgQQSC3Yf46IEIWhIgADQEiZDMjihc6JbYBA' +
                    'DJlKvQ=');

          'contact':
            Spell := BitmapFromString(7, 5, 'meJx79fr1K3LRr6cHMUU+HarHFGFk' +
                    'YAAA0ZFcCA==');
        end;

        if FindDecayedPouch(Slot) then
        begin
          Writeln('Decayed pouch detected in slot '+IntToStr(Slot));
          GameTab(tab_Magic);
          Wait(Random(100));
          if FindBitmapIn(Spell, X, Y, 550, 200, 720, 435) then
          begin
            MMouse(X, Y, 5, 5);
            Wait(Random(100));
            if (Lowercase(Method) = 'spell') then
            begin
              if WaitUpText('epair',RandomRange(250,350)) then
              begin
                ClickMouse2(True);
                Wait(RandomRange(20, 75));
                MouseItem(Slot, mouse_left);
                Wait(RandomRange(1575, 2150));
                Inc(RepairC);
                Writeln('Pouch repaied');
              end;
            end else if (Lowercase(Method) = 'contact') then
            begin
              if WaitUpText('Contact',RandomRange(250,350)) then
              begin
                ClickMouse2(True);
                if ContactRepair then
                begin
                  Inc(RepairC);
                  Writeln('Pouches repaied');
                end;
              end;
            end;
          end;
        end;

        if not FindDecayedPouch(Slot) then
          Result := True
        else
          goto Start;

        FreeBitmap(Spell);
      end;

      Procedure HandleBank;
      var
        S: String;
        T: Integer;
      label
        Bank_End;
      begin

        if BankScreen then
        begin

          Mouse(370, 305, 6, 6, True);

          if (HPPercent <= EatAt) then
            Eat;

          WithdrawEss;

          if (InvCount = 23) then
            GoTo Bank_End;

          if PP1 then
          begin
            if HandlePouches(5, Fill) then
              WithdrawEss;
            if HandlePouches(2, Fill) then
              WithdrawEss;
          end else
            if HandlePouches(2, Fill) then
              WithdrawEss;

          Bank_End:
          MarkTime(T);
          repeat
            FindNormalRandoms;
            if (TimeFromMark(T) > 5000) then
              Exit;
            if InvFull then
              break;
          until(false)

          if InvFull then
          begin
            if CheckPouches then
              if WithdrawRunes(Lowercase(RepairMethod)) then
                if RepairPouches(Lowercase(RepairMethod)) then
                  if OpenBankEniola then
                    if WithdrawEss then
                      if CloseBank then
                        Exit;

            if (GetMMLevels('run',S) <= RestAt) then
              RestUntil(RandomRange(90, 100));

          end;

        end;

      end;

      Function FindAltar(Var X,Y: Integer): Boolean;
      var
        TPA,PBox: TPointArray;
        i,a,CTS: Integer;
        ATPA: T2DPointArray;
        Cols,Tols: TIntegerArray;
        HMods,SMods: Array of Extended;
      begin
        Result := False;
        if not LoggedIn then Exit;

        if IsUpTextMultiCustom(['-rune', 'unec', 'rafting']) then
        begin
          Result := True;
          Exit;
        end;

        PBox := TPAFromBox(IntToBox(240, 130, 275, 185));
        CTS := GetColorToleranceSpeed;

        if BankScreen then
        begin
          Result := True;
          Exit;
        end;

        Cols := [6514550];
        Tols  := [9];
        HMods := [0.23];
        SMods := [0.20];

        for i := 0 to High(Cols) do
        begin
          ColorToleranceSpeed(2);
          SetColorSpeed2Modifiers(HMods[i], SMods[i]);
          FindColorsSpiralTolerance(MSCX, MSCY, TPA, Cols[i], MSX1, MSY1, MSX2, MSY2, Tols[i]);
          ColorToleranceSpeed(CTS);

          TPA := ClearTPAFromTPA(TPA, PBox);
          if (Length(TPA) > 0) then break;

        end;

        if (Length(TPA) < 1) then Exit;

        ATPA := TPAToATPAEx(TPA, 30, 30);
        SortATPAFrom(ATPA, Point(MSCX,MSCY));

        for a := 0 to High(ATPA) do
        begin

          MiddleTPAEx(ATPA[a], X, Y);
          HumanMMouse(X, Y, 15, 15);

          if WaitUpTextMulti(['-rune', 'unec', 'rafting'], 500) then
          begin
            Result := True;
            GetMousePos(X, Y);
            Exit;
          end;

        end;

      end;

      Function CraftRunes: Boolean;
      var
        X,Y,F,Seq: Integer;
      label
        ClickAltar;
      begin
        Seq := 0;
        OldXP := Round(GetXPBarTotal);

        ClickAltar:
        if not LoggedIn then Exit;

        if (AC > 4) then
          Seq := 4;

        if (Seq < 4) then
        begin
          if FindAltar(X, Y) then
          begin
            ClickMouse2(True);
            Inc(AC);
            if not DidRedClick then
              goto ClickAltar;

            While IsMoving_F do
              Wait(1);

            if (Seq < 3) then
            begin
              HumanMMouse(640, 220, 15, 15);
              Wait(RandomRange(875, 1125));

              While IsMoving_F do
                Wait(1);

              Wait(RandomRange(105, 165));
            end else if (Seq = 3) then
              GameTab(tab_Magic);

          end else
          begin
            if (F > 4) then
            begin
              TeleportOut;
              Exit;
            end;

            Inc(F);
            SetRun(True);
            BankToAltar;
            FindNormalRandoms;
            SetRun(True);

            goto ClickAltar;
          end;
        end;

      {Handle first set of pouches}
        if (Seq = 0) then
        begin
          if PP1 then                        //Giant pouch
          begin
            if HandlePouches(5, Empty) then
              Seq := 1;

            goto ClickAltar;
          end;

          if PP2 then                        //Large pouch only
          begin
            if HandlePouches(4, Empty) then
              Seq := 2;

            goto ClickAltar;
          end;

          if ((not PP1) and (not PP2)) then  //No Giant/Large pouches
          begin
            if HandlePouches(3, Empty) then
              Seq := 3;

            goto ClickAltar;
          end;

        end;

      {Handle second set of pouches}
        if (Seq = 1) then
        begin
          if PP2 then                          //Large pouch
          begin
            if HandlePouches(4, Empty) then
              Seq := 2
          end;

          if not PP2 then                      //No large pouch
          begin
            if HandlePouches(3, Empty) then
              Seq := 3;
          end;

          goto ClickAltar;

        end;

      {Handle third set of pouches}
        if (Seq = 2) then
        begin
          if HandlePouches(3, Empty) then
            Seq := 3;

          goto ClickAltar;
        end;

      {Exit pouch-handling}
        if ((Seq = 3) or (Seq = 4)) then
        begin
          AddRun := True;
          Result := True;
        end;

      end;

      Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
      Var
        h,m,s: integer;
      begin
        if not LoggedIn then Exit;

        if (HowManyPlayers = 1) then
        begin
          if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
          else
            if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
            begin
              if NearSymbol(3) then
              begin
                RealBTime := ((x+z)/60000);
                Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
                CloseBank;
                Logout;
                MarkTime(CurrentBTime);
                repeat
                  Wait(21000);
                  ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                  ClearDebug;
                  Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
                until(TimeFromMark(CurrentBTime)>(x+z));
                Writeln('Logging in.');
                if SwitchWorlds then
                  if LoginPlayerToLob then
                    ChangeWorld(RandomWorld(True, False))
                else
                  LoginPlayer;
                Wait(4000);
                Result := LoggedIn;
                ClickNorth(SRL_ANGLE_HIGH);
                OnScreen(False);
                IncEx(BreakRounds, (w) + (x));
                Inc(TotalBreaks);
                Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
                w := (BreakIn * 60000);
                x := (BreakFor * 60000);
                y := RandomRange(-Bir * 60000, Bir * 60000);
                z := RandomRange(-Bfr * 60000, Bfr * 60000);
              end;
            end;
        end;
      end;

      Procedure SuperDuperLooper;
      begin
        if not LoggedIn then Exit;
        FindNormalRandoms;
        MouseSpeed := (RandomRange(15, 21));

        if AboveGround then
        begin

        {At ladder}
          if NearLadder then
          begin
            if UsePrayer then
            begin
              if HandleAltar then
                HandleLadder;
            end else
              HandleLadder;
          end else if (NearSymbol(4) and (not NearLadder)) then
          begin
            if WalkToLadder then
            begin
              if FlagPresent then
                FFlag(1)
              else
                While IsMoving_F do
                  Wait(1);
              if UsePrayer then
              begin
                if HandleAltar then
                  HandleLadder;
              end else
                HandleLadder;
            end;
          end;

        end else
        begin

        {Bank}
          if NearSymbol(3) then
          begin
            if not InvFull then
            begin
              if OpenBankEniola then
                HandleBank
              else
                Exit;
            end else if InvFull then
            begin
              if BankToAltar then
                if CraftRunes then
                  TeleportOut
                else
                  While IsMoving_F do
                    Wait(1)
              else
                While IsMoving_F do
                  Wait(1);
            end;
          end else
          begin
            CraftRunes;
            TeleportOut;
          end;

        end;

      end;

      procedure FoundARandom;
      begin
        Writeln('Found a random!');
        PlaySound(ScriptPath+'evilaugh.wav');
        Wait(RandomRange(10000, 20000));
      end;

    begin
      Smart_Server := 86;
      Smart_Members := True;
      Smart_Signed := True;
      Smart_SuperDetail := False;

      Writeln('Loading script...');
      setupSRL();
      DeclarePlayers;

      LoginPlayer;
      SetNorth;
      Smart_ClearCanvas;

      UpdateSPSMap;
      LoadVars;
      LoadImg;

      //SRL_Procs[SRL_OnFindRandom] := @FoundARandom;
      SetupSRLStats(157, SRLStats_Username, SRLStats_Password);
      Writeln('Script loaded!');

      ToggleXPBar(True);
      XPToLvl := XPTillNextLevel(Skill_Runecrafting);

      if UsePrayer then
      begin
        SetPrayers;
        ActivateQuickPrayer;
      end;

      OnScreen(False);
      AddOnTerminate('DestroyImg');

      Repeat

        if not LoggedIn then
        begin
          LoginPlayer;
          ClickNorth(SRL_ANGLE_HIGH);
        end;

        BreakHandler(BreakIn,BreakFor,Bir,Bfr);

        if (TimeFromMark(CommitTime)>=30000) then
          Commit;

        if (TimeFromMark(ReportTime)>=5000) then
          Report;

        SuperDuperLooper;

      Until(AllPlayersInactive)

    end.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  3. #1353
    Join Date
    Feb 2012
    Location
    Toronto Ontario, Canada
    Posts
    331
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Has 1.71 also fixed the teleporting loop, Flight?
    118/120 Dungeoneering

  4. #1354
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by ashihtaka View Post
    Has 1.71 also fixed the teleporting loop, Flight?
    Yes it should.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  5. #1355
    Join Date
    Feb 2012
    Location
    Toronto Ontario, Canada
    Posts
    331
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Something goes wrong with 1.71, it gets stuck RIGHT at the stairs, just hovers over a couple times but never clicks in.
    118/120 Dungeoneering

  6. #1356
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by ashihtaka View Post
    Something goes wrong with 1.71, it gets stuck RIGHT at the stairs, just hovers over a couple times but never clicks in.
    Yep, I noticed that as well. I removed that and I'll upload V1.71 now.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  7. #1357
    Join Date
    Mar 2012
    Posts
    16
    Mentioned
    0 Post(s)
    Quoted
    3 Post(s)

    Default

    93 Runecrafting. Estimated number of hours till 99?

  8. #1358
    Join Date
    Feb 2012
    Posts
    63
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Please flight still fails to find spell DTM!

  9. #1359
    Join Date
    Jan 2012
    Posts
    29
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by newy1 View Post
    Basket of orange, strawberry, banana, apple etc.
    Also get all books from your POH bookcase. That should get you like 60 additional bank spots filled.

  10. #1360
    Join Date
    Jan 2012
    Posts
    83
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    Flawless now, thanks very much Fight.

  11. #1361
    Join Date
    Jan 2012
    Posts
    121
    Mentioned
    0 Post(s)
    Quoted
    3 Post(s)

    Default

    got 99 runecrafting flight))


    Thanks once again flight.

  12. #1362
    Join Date
    Feb 2012
    Location
    Toronto Ontario, Canada
    Posts
    331
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    lol, it kept me logged in all night, just standing at the stairs - i think SIMBA update caused script to stop, but keep me in game (lots of reports) - 1.71 works fine so far though
    118/120 Dungeoneering

  13. #1363
    Join Date
    Feb 2012
    Posts
    2
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Sometimes the script clicks on the nearby mining spot in 1.71, but it's a small problem tho

  14. #1364
    Join Date
    Mar 2012
    Posts
    7
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Yea mine was standing at one place all night as well, hopefully it wasn't a problem since I was just at the banker...

    And I'm not sure if anyone told you this or you noticed, but in the older versions my character would run off exploring towards observatory/castle wars and get stuck until the script was restarted. Not sure if thats still an issue.

    1.71 is working fine so far for me though, thanks flight

  15. #1365
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by rol prodigy View Post
    got 99 runecrafting flight))


    Thanks once again flight.
    Wonderful, I'll add you to the list.

    Quote Originally Posted by mutikainen View Post
    Sometimes the script clicks on the nearby mining spot in 1.71, but it's a small problem tho
    Yes, I've seen this happen once before, very rarely, but I watched it as well. I think I might know why it happens, but just a theory. Like you said, it's a small problem. Either way the script will detect it's lost, should it get lost, and teleport back to start over.

    Quote Originally Posted by lvbot View Post
    Yea mine was standing at one place all night as well, hopefully it wasn't a problem since I was just at the banker...

    And I'm not sure if anyone told you this or you noticed, but in the older versions my character would run off exploring towards observatory/castle wars and get stuck until the script was restarted. Not sure if thats still an issue.

    1.71 is working fine so far for me though, thanks flight
    The running off-course was due to the previous static coordinate-walking (which I've unfortunately had to re-apply in V1.71). I chose a more realistic coordinate for your player to walk to get to the ladder; it should hold steady, atleast until I can work out and accurate road color-finding walking system.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  16. #1366
    Join Date
    Dec 2011
    Location
    Berlin
    Posts
    795
    Mentioned
    0 Post(s)
    Quoted
    5 Post(s)

    Default

    Quote Originally Posted by Dairiun View Post
    How are you even supposed to max your bank? D: I bought every set of armor from bronze through adamant, tried to have every dose of all my potion and I'm still only at 368/468... Can anyone help? What junk do you guys fill your bank with?
    A good way to fill you bank are "team capes" there are 50 different capes and they just cost like 2k ea. Then you got 50 more things in bank. make sure you got every single rune in bank. Then if its not filled up yet buy raw and cooked food. If its not filled yet you can buy all types of arrows (g, g+ , g++)

    After that your bank should definietly filled up =)

    I will try to answer all Runescape related questions!

  17. #1367
    Join Date
    Dec 2011
    Location
    Toronto, Ontario
    Posts
    6,424
    Mentioned
    84 Post(s)
    Quoted
    863 Post(s)

    Default

    Flight, why not SPS walking..?
    I'll add that in my version and tell you how it goes

  18. #1368
    Join Date
    Dec 2011
    Location
    Berlin
    Posts
    795
    Mentioned
    0 Post(s)
    Quoted
    5 Post(s)

    Default

    Quote Originally Posted by Jerith View Post
    93 Runecrafting. Estimated number of hours till 99?
    Are you serious? Check you average of xp/h. Then check how much exp till 99 left. Exp till 99 : xp/h and you got your hours till 99.

    I will try to answer all Runescape related questions!

  19. #1369
    Join Date
    Feb 2012
    Location
    Toronto Ontario, Canada
    Posts
    331
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Hm, still has the problem after a while of getting to the ladder, but not going down.
    It's fine for a couple runs in the beginning, but in the end, gets stuck above ground at the ladder.
    118/120 Dungeoneering

  20. #1370
    Join Date
    Mar 2012
    Posts
    3
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by ashihtaka View Post
    Hm, still has the problem after a while of getting to the ladder, but not going down.
    It's fine for a couple runs in the beginning, but in the end, gets stuck above ground at the ladder.
    having the same exact problem

  21. #1371
    Join Date
    Jan 2012
    Posts
    537
    Mentioned
    1 Post(s)
    Quoted
    16 Post(s)

    Default

    yep it is getting stuck when he goes south of ladder instead of north, meaning it is impossible to use script for more than a couple runs, the v1.71

  22. #1372
    Join Date
    Dec 2011
    Location
    Berlin
    Posts
    795
    Mentioned
    0 Post(s)
    Quoted
    5 Post(s)

    Default

    Quote Originally Posted by wister1 View Post
    yep it is getting stuck when he goes south of ladder instead of north, meaning it is impossible to use script for more than a couple runs, the v1.71
    That should be really easy to fix for you flight. It seems that the reason for the bug is that if it goes south of ladder instead of north of the ledder it cant find the color anymore. If i rotate the camera for just a millisecond it works flawless for another couple of runs again untill it goes south of ladder instead of north again.


    * Something like
    If not finding ledder
    rotate camera



    First proggy of v 1.71 so far
    Last edited by Imanoobbot; 03-14-2012 at 10:04 PM.

    I will try to answer all Runescape related questions!

  23. #1373
    Join Date
    Mar 2012
    Posts
    10
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    171 is almost flawless except the occasional ladder problem, but with supervision its not a big issue.

    one problem i have since 165 is that the xp gain stays at 1 if the player has Lots! on the first xp counter. Nothing serious, just pointing it out. doesnt really affect the script other than not showing xp gains

  24. #1374
    Join Date
    Dec 2011
    Posts
    70
    Mentioned
    0 Post(s)
    Quoted
    26 Post(s)

    Default

    cant find the image I need to get this script started. can someone give me the link?

  25. #1375
    Join Date
    Feb 2012
    Location
    Denver, CO
    Posts
    863
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Dairiun View Post
    How are you even supposed to max your bank? D: I bought every set of armor from bronze through adamant, tried to have every dose of all my potion and I'm still only at 368/468... Can anyone help? What junk do you guys fill your bank with?
    Go to every shop and buy things until it's full. General store, armor shops, fletchers, hunting shops, pet stores, herblore stores, etc.

Page 55 of 90 FirstFirst ... 545535455565765 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •