Results 1 to 4 of 4

Thread: Out of range issue...

  1. #1
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default Out of range issue...

    [Runtime Error] : Out Of Range in line 151 in script ...

    I marked line 151. I can't see the error, maybe you can. I thought I set "c" right, but apparently I was wrong.

    SCAR Code:
    program PowerChopper;
      //{.Include SRL\SRL\Misc\SMART.SCAR}
      {.include SRL\SRL.scar}

    var
      HatchetDTM : Array of Integer;
      x, y, c, NumOfLogs, TotalProggies : Integer;
      TreeColor : TIntegerArray;
     
    procedure DeclarePlayers;
    begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;

      Players[0].Name := '';
      Players[0].Pass := '';
      Players[0].Nick := '';
      Players[0].Active := True;
      Players[0].Pin := '';
      Players[0].Strings[0] := 'normal';//Which tree to cut?
      Players[0].Integers[0] := 270;//How many logs to cut?
      Players[0].BoxRewards := ['Xp', 'mote', 'ostume'];
    end;

    procedure S_FindRandoms;
    begin
      LampSkill := 'woodcutting';
      FindNormalRandoms;
    end;

    procedure S_MyAntiBan;
    begin
      case Random(70) of
        0: RandomMovement;
        1: BoredHuman;
        2: HoverSkill('random', false);
        3: RandomRClick;
        4: begin
             case Random(2) of
               0: begin
                    KeyDown(VK_RIGHT);
                    Wait(50 + Random(1300));
                    KeyUp(VK_RIGHT);
                    Wait(60 + Random(2000));
                    KeyDown(VK_LEFT);
                    Wait(70 + Random(1100));
                    KeyUp(VK_LEFT);
                  end;
               1: begin
                    KeyDown(VK_LEFT);
                    Wait(50 + Random(1300));
                    KeyUp(VK_LEFT);
                    Wait(60 + Random(2000));
                    KeyDown(VK_RIGHT);
                    Wait(70 + Random(1100));
                    KeyUp(VK_RIGHT);
                  end;
              end;
           end;
        5: begin
             KeyDown(VK_LEFT);
             Wait(100 + Random(1200));
             KeyUp(VK_LEFT);
           end;
        6: begin
             KeyDown(VK_RIGHT);
             Wait(150 + Random(1100));
             KeyUp(VK_RIGHT);
           end;
        7..69:
      end;
    end;


    procedure S_HatchetDTMs;
    begin
     SetArrayLength(HatchetDTM, 7);//[0]:= Bronze, [6]:= Rune
       HatchetDTM[0] := DTMFromString('78DA630C646260D8C4C8800C7CAC9519F8813' +
           '44C94D113A86617AA1A982C5C8D1B50CD36026ABC816AD6125013' +
           '0C54B38E809A504C3763A80921EC1E00949107EF');
       HatchetDTM[1] := DTMFromString('78DA630C626260D8C4C8800C02BDBD19F8813' +
           '448F43F1030BA03D5EC47550391859140DA0DA8662B01355E4035' +
           '6B09A80906AA5947404D2850CD06026A42806AB6E157030033F30' +
           'C28');
       HatchetDTM[2] := DTMFromString('78DA630C626260D8C8C8800CCAF3F318F8813' +
           '448F43F10307A02D5EC40550391859140DA0DA8660B01355E4035' +
           '6B09A80904AA5947404D28A69BB1AAD98A5F0D0090050C8D');
       HatchetDTM[3] := DTMFromString('78DA63F4676260D8C0C8800C44454418F8813' +
           '448F43F1030BA03D5EC43550391859140DA05A8661701351E4035' +
           'EB09A80900AA5947404D28A69BB1AAD98A5F0D0095870B78');
       HatchetDTM[4] := DTMFromString('78DA630C646260D8C8C8800C1C1CE319F8813' +
           '44C94D10DA8E600AA1A982C5C8D2B50CD0E026A3C806A36105013' +
           '0054B38E809A504C3763A80901AAD9865F0D00C5940824');
       HatchetDTM[5] := DTMFromString('78DA63EC64626038C0C8800C9C829D18F8813' +
           '44C94B101A8E614AA1A982C8A9A7D04D4F402D5EC2742CD21026A' +
           '6A816AAEE05703006FA208C7');
       HatchetDTM[6] := DTMFromString('78DA630C606260D8C8C8800C5CA2531944803' +
           '44C94D11DA8662FAA1A982C5C8D1B50CD56026ABC806AD6125013' +
           '0C54B38E809A504C3763A80901AAD9865F0D00E749084A');
    end;

    procedure Cut_FindHatchet;
    var
      b: Boolean;
      i: Integer;
    begin
      for i:= 0 to 6 do
        if(FindDTM(HatchetDTM[i], x, y, MIX1, MIY1, MIX2, MIY2))then
          begin
            b:= True;// assign b:= True, now you know it's found.
            Break;// break the loop - once found, no need to keep going through.
          end;
          begin
            if(b = True)then// since it's only a check, = is needed, rather than :=
              Writeln('Found hatchet.')
            else
            begin
              Writeln('Didn''t find hatchet, logging out.');
              LogOut;
            end;
          end;
        FreeDTM(HatchetDTM[i]);
    end;

    procedure Cut_TreeColors;
    begin
      SetArrayLength(TreeColor, 4);
        TreeColor := [6266770, 1199164, 8497045, 1718835];
      case LowerCase(Players[CurrentPlayer].Strings[0]) of
        'normal': c := 0;
        'oak': c := 1;
        'willow': c := 2;
        'yew': c := 3;
      else
        begin
          Writeln('No tree specified, logging out.');
          Logout;
        end;
      end;
    end;

    procedure Cut_ChopTrees;
    var
      fx, fy, k : Integer;//fx, fy : Temp. coords.
      s, e : String;
      TPA : TPointArray;
      T2D : T2DPointArray;
    begin
      repeat
        FindColorsSpiralTolerance(fx, fy, TPA, TreeColor[c], MSX1, MSY1, MSX2, MSY2, 5);// Line 151 <<<<< :)
        T2D := SplitTPAEx(TPA, 3, 4);//Splits TPA into boxes.
        if Length(T2D) = 0 then exit;

        for k := 0 to High(T2D) do
        begin
          if MiddleTPAEx(T2D[k], fx, fy) then//Stores coords of the middle TPointArray to x, y.
          begin
            Wait(30 + Random(20));
            MMouse(fx, fy, 4, 4);
          end;
          s := RS_GetUpText;
          e := Players[CurrentPlayer].Strings[0];
          if((Pos('hop', s) > 0) and (Pos(Copy(e, 2, Length(e)), s) > 0))then
          begin
            GetMousePos(x, y);
            Wait(80 + Random(100));
            Mouse(x, y, 4, 4, True);
            repeat
              Wait(80 + Random(100));
              S_MyAntiBan;
            until(not(IsUpText('hop')) or (InvFull));
          end;
        end;
      until(InvFull or not(LoggedIn));
    end;

    procedure Cut_DropLogs;
    var a : Integer;
    begin
      if(InvFull)then
      begin
        Wait(80 + Random(100));
        for a := 2 to 28 do
          DropItem(a);
        NumOfLogs := NumOfLogs + 27;
        if(NumOfLogs >= Players[CurrentPlayer].Integers[0])then
        begin
          Writeln('Cut desired number of logs, logging out.');
          Wait(80 + Random(100));
          Logout;
        end;
      end;
      S_FindRandoms;
    end;

    procedure F_ProgReport;
    begin
      Inc(TotalProggies);
      Writeln(' _______________________________________________');
      Writeln(PadR('|            Coh3n''s Power Chopper', 48) + '|');
      Writeln('|_________________First Script__________________|');
      Writeln('|                                               |');
      Writeln(PadR('|  Time run: ' + TimeRunning, 48) + '|');
      Writeln(PadR('|  Loads: ' + IntToStr(NumOfLogs / 27), 48) + '|');
      Writeln(PadR('|  Logs: ' + IntToStr(NumOfLogs), 48) + '|');
      Writeln('|_______________________________________________|');
    end;

    procedure F_Setup;
    begin
      //SMARTSetupEx(152, False, True, False);
      //Wait(5000);
      //SetTargetDC(SmartGetDC);
      SetupSRL;
      ActivateClient;
      DeclarePlayers;
      LoginPlayer;
      SetAngle(True);
      S_HatchetDTMs;
      Cut_FindHatchet;
    end;


    begin
      F_Setup;
      repeat
        if(ExistsItem(1))then
        begin
          Cut_ChopTrees;
          Cut_DropLogs;
          F_ProgReport;
          S_FindRandoms;
        end else
          Logout;
      until(AllPlayersInactive);
    end.

    Thanks!

  2. #2
    Join Date
    Nov 2007
    Location
    Chile
    Posts
    1,901
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    You never set TreeColor with colors. Do it at the beginning of your mainloop:
    scar Code:
    TreeColor := [41651642, 82648, 264624684, 216816];
    It's giving you Out of range because its length is zero and it doesn't have any value.


  3. #3
    Join Date
    Aug 2007
    Location
    in a random little world
    Posts
    5,778
    Mentioned
    0 Post(s)
    Quoted
    7 Post(s)

    Default

    SCAR Code:
    procedure Cut_FindHatchet;
    var
      b: Boolean;
      i: Integer;
    begin
      for i:= 0 to 6 do
        if(FindDTM(HatchetDTM[i], x, y, MIX1, MIY1, MIX2, MIY2))then
          b:= True;// assign b:= True, now you know it's found.
      if(b = True)then// since it's only a check, = is needed, rather than :=
      begin
        Writeln('Found hatchet.')
        FreeDTM(HatchetDTM[i]);
        break;
      end else
      begin
        Writeln('Didn''t find hatchet, logging out.');
        LogOut;
      end;
    end;
    much better

    ~shut

  4. #4
    Join Date
    Apr 2008
    Location
    Marquette, MI
    Posts
    15,252
    Mentioned
    138 Post(s)
    Quoted
    680 Post(s)

    Default

    Quote Originally Posted by Cazax View Post
    You never set TreeColor with colors. Do it at the beginning of your mainloop:
    scar Code:
    TreeColor := [41651642, 82648, 264624684, 216816];
    It's giving you Out of range because its length is zero and it doesn't have any value.
    Thanks.

    Quote Originally Posted by Shuttleu View Post
    much better

    ~shut
    Thanks shut! But why's that much better than what I have?

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
  •