Results 1 to 24 of 24

Thread: Help DISABLING SMART in a script.

  1. #1
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default Help DISABLING SMART in a script.

    I would like to bot in the browser but when i comment out smart at the begining of the script (i guess thats where most scripters put it) i start getting chain errors. . its the script for fleching called [AL]DroiFletch. its in the fleching section of this website.I have also attached it. The errors would tell me which line of code the error happened and i would go there and comment it out and kept on going but then stuck. Help please... Which lines do i need to comment out or delete?
    Attached Files Attached Files
    Last edited by tomjerry; 07-28-2014 at 12:58 AM.

  2. #2
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    Can someone help please..?

  3. #3
    Join Date
    Dec 2011
    Location
    United States
    Posts
    960
    Mentioned
    21 Post(s)
    Quoted
    504 Post(s)

    Default

    Comment out
    Code:
    {$DEFINE SMART}
    Then run it and comment out whatever causes an error. Then repeat.

  4. #4
    Join Date
    Jun 2012
    Posts
    4,867
    Mentioned
    74 Post(s)
    Quoted
    1663 Post(s)

    Default

    I don't have aerolib so I can't compile the script anyway, but I commented out all the smart graphics stuff so give this a try:
    Simba Code:
    program RUNME;
    {$DEFINE SPS}
    //{$DEFINE SMART}

    {$I AeroLib/AeroLib.Simba}
    {$I AeroLib/Profiles.Simba}

    Const
    //------------------------User setup-------------------------//
    // Color Setup
      bankBoothFrame    = 9610935;
      bankBoothWindow   = 11647686;

    // Info Needed
      //TODO: other logs but maple handling
      LogToCut        = 'Maple';    //willow, maple, yew, magic
      //TODO: shortbow handling
      WhatToCut       = 'Long';     //short, long
      CuttingLogs     = true;
      StringingBows   = false;

    // Player info
      P_USERNAME   = '';
      P_PASSWORD   = '';
      P_NICKNAME   = '';
      P_PIN        = '';
      P_LAMPSKILL  = SKILL_SLAYER;

    // Break settings
      fBREAK_IN     = 300;      // How long before we take a break? (minutes)
      fBREAK_FOR    = 60;       // How long will we break for? (minutes)
      fR_BREAK_IN   = 17;       // Random minutes to add/subtract from how long until we break
      fR_BREAK_FOR  = 18;        // Random minutes to add/subjtract from break duraction

    //----------------------End user setup----------------------//

    Type State = (BANKUNSTRUNG, FLETCHLOGS, GETMATERIALS, GETKNIFE, GETLOGS, LOST, GETUNSTRUNG, GETBOWSTRINGS, ATTACHSTRINGS, BANKBOWS);

    Var
      log, knife,
      unstrung,
      bowstring,
      strung          : TItem;
      timer_CS,
      timer_SP        : Timer;
      XPMod,
      one,two,
      cutLoads,
      cutLogsCount    : Integer;
      shortBox,
      longBox         : TBox;
      Obj_Bank        : TMSObject;
      DTM_MMBank      : TIntegerArray;
      chatboxArray    : Array of TChatOption;
      Terminate       : Boolean = False;
      terminateReason : String  = 'Error somewhere';
      nameMod         : String;
      optionList      : Array of TOptions;
      enterAmountBmp,
      fletchMenuBmp,
      stringMenuBmp   : Integer;
      testPt          : TPoint;
      //iGraphic        : TGraphics;
      MyProfile       : TPlayerProfile;

      _UNSTRUNGPT,
      _BOWSTRINGPT,
      _LOGPT,
      _STRUNGPT,
      _BANKPT         : TPoint;

    procedure declarePlayer();
    begin
      Me.Name      := P_USERNAME;
      Me.Pass      := P_PASSWORD;
      Me.Pin       := P_PIN;
      Me.Nick      := P_NICKNAME;
      Me.LampSkill := P_LAMPSKILL;
      Me.Active    := True;
    end;

    procedure loadVars();
    var
      A,B : Integer;
    begin
      MyProfile       := CreateProfile('me',18,140,190);
      cutLogsCount    := 0;
      enterAmountBmp  := BitmapFromString(97, 20, 'meJytmFFPGzEQhPP/3+kDdaUeT+' +
            '1foGlFEHmiqmiRqvBvutzcDcPs2jlRohVy7LXxfje79mW6fZzE2uF' +
            'PGBrsUYer42nssNGwji7yBvv4/QF/0fhPu9g/XFzfv1h8nW2qEGHn' +
            'EYUR0NGxhQ+mjxGVK6Px6e7UYxL24eaRPbQIR3vUJy/F9ck5pi/rK' +
            'KLre9s5/XXb+Io1dWVVUea5RUXxFxPZMGVqUAgZO8T+ERdNI4WP4V' +
            'VWEQgZqrMiuvz2MxrYjMZLSro+6enDtXBMGDleQxRLgcxAb0Uu7J/' +
            'lEUYyWSRlCCpRa+d0CzhUI9eMTiIqszt6SvHbE89hAoVKBY3oDyt5' +
            'ljm4hHA4KSKm2OXNL9Pb2HqINHPJQWns0mdAg8QG2WRkWKZIKXq+H' +
            'P9a9mVWmh0LosMpP01LLhXVWUSaRDY39GOINvKHMzY5oKTZpBAILR' +
            'ApNMLvCQkOMEO0/Wgjfw2Z9cSMEo3REpHO0kXgbMd3ryZ/PT7lymP' +
            '0EDWmID0HGQFQPLxK/WyxsSqoIovaGYrMlJI5l8VZyzJGkVyWfVly' +
            '1MkgOkqONfzdEWWRWBVSFPwEMUAzZxDQTiLSTks9mDmgyNvEHIv1A' +
            '5S65XZeJ3eW0HCi9UY15KUx56Y5v4wKK0NUnvKcxbbOYid7dFf6v3' +
            'pYLIqBz0BFWxDpZjQc6ifiUg69dlmydq8/ioijJaJBW9me9dFaYWe' +
            'EHf3qz6Etm8n5QiYarJ1lppwo6e+FSFfWnH0DIlywjQa/mlp6isqe' +
            'dilSRPlo4zpEZKk6QNRTSA/RIBd6iNp86D+/jOyLyryTUtCqWwHdj' +
            'BI/4GCIQEnlZLM0qIyIdwmdkkuiLjUoF1ZsDVqbD3RUIcgJfzXRnO' +
            'd6Q+AQHXoXyFyCVEjGKoam6sJplwcdVTh28WjrJdN82LYrX57OkPn' +
            'KnK/fdilCj/50oIgsQxVRj2Hr3DnZoEPmaYha5545uF8Z4dIH8TLR' +
            'jIZe79WBb9kQIR4H2hmRUsIQpKIhlKByYe+JswzNKPUQcXoGDgfGF' +
            'Sk2eMfXX2ba+rMMEVGKeJf5/OO36QQ9ba57WUXczFX6na3Hrb1+2+' +
            '2l1Vk7ixdPf1HR/CNJW09/zUQTj6YbEYEw3AgkGppfOQGn9fptJSL' +
            '754JWPvSBYLYb9sOv/wDMpT8X');
      fletchMenuBmp   := BitmapFromString(34, 20, 'meJyNVctOw0AM5P8PXFAQIqf+RC' +
            'UglXoEUaGV+CGczHoYz7ZRqz04Xr/GnnXnU3v9uExLm96/46xyCl2' +
            'OK5xNP58aDj6hf3y7xKE7fWcET01xzNOzL+35/Mv49F3lxV30PB2/' +
            'ND6ijYnCbLVMILAMjTqyklKbyATlLdKzRdBKzGbUXEXERAbkIX8Rn' +
            'AUQBWVedeDpjjFpkwt2jb9hCYEGmsU6oCmUM9BrBKQIoadIeyjVTC' +
            'lXOgZ9Eo8AmSUEBC9ZEt0Vet+eBfmgs9Y+IKBiIZC9sMr8ASkpjU8' +
            'GNyHMOAtOrZM8bdgKVSptjPCs3xJhQCVOVk68yhmdI1+xMge8YjEK' +
            'jRvGsthArc//Q1ka3+k4bs6LFers4EKlXmEoh/NP2Uhb97RjNiake' +
            'Dl+avc4Lwh8OxC4lBgTVdmPxvEEVGmVKGrjnr3ZgqLufFuJ1vOR7Y' +
            'VgN9Y1cOn7skRjwHuykGO2c6wz07C9tbCxYF6NkHceOxeXttpX5aA' +
            'kZ1iz7t6Sbil/EDuVWNIw+wM9tRRD');
      stringMenuBmp   := BitmapFromString(73, 26, 'meJylmN1rVFcUxSn4ZKTUKAhijY' +
            'ogE8GStmIeNMXPl4hiURBaCgoFUdqHGvwWWzXiZHRwIj7E2JgoCZr' +
            'UdFQIYqiU4r/gm3+M6941s7Jnn3NuRguLw7n3ngn7d9fe+5ybysx8' +
            'ZWb+zrN/KvnEafDpa06GnsxxhMqTL6nrj1/YUbo88dxe2vsU5tfGZ' +
            '//486+oLo1On7k/jTGukUmq5Vf3py7ce8z7mJy5O4FRFAw+hLLiGo' +
            'smcYHid1AAQVSXx2f5VCHhPmXjxLIkWpNLlyTCKDRdRs1Kia4NTr0' +
            'iF/DFiJuk0CRlGdHIyzF0sAjKcDkWATo05GQqLUPjiKDktLySuyxI' +
            '1GhOSg0HLVogiyZZLqLdmv0XKgakZVly5kQZ2pO5aNhiZDZmIGN11' +
            'RqNw50iv0ans/tNCtSRIwovHVqq0MKio1+cl/O5uFKABGl410w/Vl' +
            '82H6vboiuuMsfiSNlAhFarv2kTDSC4dLDlvLhwM2N8+jqVjZ50rJ7' +
            '5mLcX9RN513XsxBf9R6AWNGdik1dmgcuhgSuki24EhGqBRa1NvVIZ' +
            'Cq2YjnmYtZRYhyz9dnHF0Z/Bterwj5g0fDRoltcmIdFk4qJ9w9Uds' +
            'lGyUOotqQ5pOwlxohtc7+9lWvZ53z6O8ki52lKVsa7CBbbQ1EYcl0' +
            '1CcYWdczDvk8VoC4zc4wLLgAYccnV0b1m2eklqZ7e9RXP7FFENv3x' +
            '7+/l/oKglGuMCFxgDND7lltcOFJ1Sw9QdCCzIxqXfbIMwX9rRkYJa' +
            'svpLqGABBCJwgQ5c4dY2XKueHTjt9Mupk4e/PxRq1+5dfdu/lg7s2' +
            'wnt7+/H/a3f9liVuktaIGHZhpMDG3vX/HB8+a8DX2ECQMTf2bnMCU' +
            'QoQ7wErIGt2kd06GLS0i+3tUGIv3zj2qPxB3/PTGIycreC+fUrF0i' +
            'HSZvCD9vU8fPnEDCgHjz8rjq85tiJ5Sg6CK/CvjFo7fYdP9XnR969' +
            '79mzbnPPZ9HTGhPSosE+NkwCAgdcipOWpQSLo7J/QeJLs8JKGIHIL' +
            '109CECEjfYIis3d60ubuijMs8vu0qkXGRpdsweAaEJibOegtejWYO' +
            'uOc30d8NwS3R04BwhykoXGHqKnbithn0G6FpxCq/U3qrVP5ioW93R' +
            '9LyjIxmE7H3Uc3VsbVedfsXIlKsv+1p3f5FSUjlwhWnjq+J90iGQw' +
            'j1+fD0NNKC27Mz3n9jU46N6JzQF7AAiP2UCr5keR9l37WOTGV15OV' +
            '7BMTQzGocp4FIEsmuVyPjrjkJDqkJ+QkPwhvxQK6lRf6O28AU5QcV' +
            'TI5fJTc/VJAbo4FSpF8Gjkesr+4/YO64WLfFG0SvCfitCjFKZFQ2C' +
            'KUMIl24v6JyKs5juCdYpPK2ZPbPN7Vqo2dxn7W9XgkOkw6rSpszfu' +
            '3Jx4Zr0jCzuJnVvvBE4uPpWhbEHEL+aiL7ZUuV4j2oh1zXLJxNR2Y' +
            'CuOxpHIcUF4nxbKOquJFqvH1lpT15GqNxYkbViYqbSMbgcOTWLYQg' +
            'sT1RFZuzO0vNMqzlrzkOPowgYbvo2Fr/i8qUbpQlLnmixzjGoOugy' +
            '53K9q6W+HRaWcdN0m2kyijUWwrDglZJhdNmDnUXxZ8zu9uNzCbHTt' +
            '0eZkai+L/oNXUGomHwDBKTja');
      shortBox        := toBox(80,390,140,460);
      longBox         := toBox(220,390,290,460);
      Obj_Bank        := toObj('BankBooth', ['ank B','nk bo','booth'], [createColEx(bankBoothFrame, 8, 0.75, 0.90)], [createColEx(bankBoothWindow, 5, 0.11, 3.38)]);

      setLength(DTM_MMBank, 1);
      DTM_MMBank[0]  := DTMFromString('m6wAAAHic42ZgYGhiYmCYxQShq4C4BYq7gLgSiGuBuAaIO4A4DKg+Boi9odgAiE2A2BRKg7A+EBsC8cmjRxk+Aum3byH469MnKLilRhFMJ+qzM/wHqlMmEjMCMRORGAkAABAgIUc=');
      knife.DTM      := DTMFromString('mbQAAAHicY2VgYDjGzMCwG4hPA/ERKP0VKM7KyMDwEUj/A+JXQFxTXAwkGVEwO5BkQcNMGKqgAAD+bAlH');
      bowstring.DTM  := DTMFromString('mggAAAHicY2NgYPBlYWBwAmIXILYG4gAgtgTiDqBcDxA3AHE1EDdD2U1l4QwigoJAFiOcBmEOIMmKBTPBVaBiCAAAa5YGrg==');

      case lowercase(LogToCut) of
        'willow':
          begin
            //TODO
          end;
        'maple':
          begin
            log.DTM := DTMFromString('mggAAAHicY2NgYIhlYWAIBGI/IA4G4iggzgTiJ0C5Z0D8BojfAfEnIH4NxHlePAxdqQYMzYl6YJqBgRGMuYAkNswMxExImBGKIQAAJHUMDw==');
            case lowercase(WhatToCut) of
              'short':
                begin
                  //TODO
                end;
              'long':
                begin
                  unstrung.DTM  := DTMFromString('mWAAAAHicY2FgYEhnYmDIAeIkKL0OKLYbiFcD8VYg3jZrApBkhGMOIImMGdEwCAAAlBMGfg==');
                  strung.DTM    := DTMFromString('mggAAAHicY2NgYGhhYWBoAOIyIK4D4nYg7gXiP0C5/0D8BYrZGRkYuIB435LZQB4jBuYCkmxYMKZKCIYAAIz1CVE=');
                end;
            end;
          end;
        'yew':
          begin
            //TODO
          end;
        'magic':
          begin
            //TODO
          end;
      end;

      timer_CS.start();
      timer_SP.start();
      setupBreak(fBREAK_IN, fBREAK_FOR, fR_BREAK_IN, fR_BREAK_FOR);
    end;

    procedure freeGlobals();
    var
      i : Integer;
    begin
      for i:=0 to high(DTM_MMBank) do
        freeDTM(DTM_MMBank[i]);
      freeBitmap(enterAmountBmp);
      freeBitmap(fletchMenuBmp);
      freeBitmap(stringMenuBmp);
      freeDTM(log.DTM);
      freeDTM(unstrung.DTM);
      freeDTM(bowstring.DTM);
      freeDTM(strung.DTM);
      freeDTM(knife.DTM);
    end;

    procedure OpenBank();
    var
      T     : Timer;
      Pnt   : TPoint;
      i,c   : Integer;
      Slots : TIntegerArray;
    begin
      if not isLoggedIn() then
        Exit;

      BreakHandler();

      if (Me.Pin <> '') then
        inPin(Me.Pin);
      if isBankOpen() then begin
        Exit;
      end;

      if openBankPoint(_BANKPT, True) then Exit;

      for i:=1 to 3 do
      begin
        if findMSObject(Obj_Bank, 5, point(MSCX,MSCY), Pnt) then begin
          break;
        end;
        if (i=3) then
          if not findMSObject(Obj_Bank, 5, point(MSCX,MSCY), Pnt) then
            Exit;
      end;

      if not openBankPoint(Pnt, True) then begin
        Exit;
      end
      else begin
        _BANKPT.X := Pnt.x;
        _BANKPT.Y := Pnt.y;
        Exit;
      end;
    end;

    function HaveKnife() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      knifeFound      : Boolean;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();
      knifeFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (knife.FindIn(slotBox, itemPt)) then begin
            knifeFound := True;
            if not (i = 1) then begin
              MoveItemTo(i, 1);
            end;
          end
          else begin
            if (knife.FindIn(slotBox, itemPt)) then begin
              knifeFound := True;
              if not (i = 1) then begin
                MoveItemTo(i, 1);
              end;
            end;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (knifeFound) then break;
      end;
      if (knifeFound) then Exit(True);
      Exit(False);
    end;

    function HaveLogs() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      logFound        : Boolean;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();
      logFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (log.FindIn(slotBox, itemPt)) then begin
            logFound := True;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (logFound) then break;
      end;

      if (logFound) then Exit(True);
      Exit(False);
    end;

    function WithdrawKnife() : Boolean;
    var
      knifePt,
      itemPt     : TPoint;
    label
      WDKnife, Start;
    begin
      GoTo Start;
      WDKnife:
        WithdrawPointEx(knifePt, 1, ['nife', 'ife']);
        repeat
          sleep(50);
          if (MyProfile.ActAhead()) then begin
            Break;
          end;
        until(GetInvCount() = 1);
        Exit(True);

      Start:
      if (IsBankOpen()) then begin
        if (GetInvCount() > 0) then QuickDeposit('inv');
        if (FindDTM(knife.DTM, knifePt.x, knifePt.y, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDKnife;
        end
        else begin
          if (ScrollToItemDTM(knife.DTM, knifePt)) then begin
            repeat
              sleep(150);
              if (MyProfile.ActAhead()) then begin
                Break;
              end;
            until(GetInvCount() = 1);
            Exit(True);

          end
          else begin
            Terminate := True;
            terminateReason := 'No knife found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;

    function WithdrawLogs() : Boolean;
    var
      logPt,
      itemPt     : TPoint;
    label
      WDLog, Start;
    begin
      GoTo Start;
      WDLog:
        WithdrawPointEx(logPt, 27, ['log', 'og']);
        sleep(200+random(100));
        repeat
          sleep(250);
          if (MyProfile.ActAhead()) then begin
            Break;
          end;
          if not (FindDTM(log.DTM, logPt.x, logPt.y, MSX1,MSY1,MSX2,MSY2)) then break;
        until(GetInvCount() = 28);
        Exit(True);

      Start:
      if not (HaveKnife()) then Exit(False);
      if (IsBankOpen()) then begin
        if (FindDTM(log.DTM, logPt.x, logPt.y, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDLog;
        end
        else begin
          if (ScrollToItemDTM(log.DTM, logPt)) then begin
            GoTo WDLog;
          end
          else begin
            Terminate := True;
            terminateReason := 'No logs found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;

    function AllUnstrung(): Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();

      for i:= 2 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if not (unstrung.FindIn(slotBox, itemPt)) then begin
            Exit(False);
          end;
        end;
        if (itemsChecked = invCount - 1) then break;
      end;
      if (itemsChecked = 0) then Exit(False);
      Exit(True);
    end;

    procedure DepositUnstrung();
    var
      unstrungCount,
      i, randomSlot      : Integer;
      itemPt,
      logPt           : TPoint;
      unstrungSlots   : TIntegerArray;
    begin
      if (IsBankOpen()) then begin
        unstrungSlots := unstrung.GetSlots();
        unstrungCount := High(unstrungSlots);
        cutLogsCount := cutLogsCount + (unstrungCount + 1);
        if not (unstrungCount > 0) then begin
          Exit;
        end;
        DepositAllFrom(2);
      end;
    end;

    procedure CutLogs();
    var
      logsLeft,
      randomSlot  : Integer;
      itemPt      : TPoint;
      logSlots    : TIntegerArray;
    label
      FletchMenu;
    begin
      if (ItemInSlot(1) and knife.FindIn(InvBox(1), itemPt)) then begin
        if (InteractSlot(1, MOUSE_LEFT)) then begin
          repeat
            wait(50+random(50));
            if (MyProfile.ActAhead()) then begin
              Break;
            end;
          until (SlotActivated(1));
        end;
      end
      else begin
        Exit;
      end;

      logSlots := log.GetSlots();
      logsLeft := High(logSlots);
      case random(100) of
        0..75: begin
          if (ItemInSlot(2) and log.FindIn(InvBox(2), itemPt)) then begin
            InteractSlot(2, MOUSE_LEFT);
          end
          else begin
            InteractSlot(logSlots[1], MOUSE_LEFT)
          end;
        end;
        75..97: begin
          if (ItemInSlot(5) and log.FindIn(InvBox(5), itemPt)) then begin
            InteractSlot(5, MOUSE_LEFT);
          end
          else begin
            InteractSlot(logSlots[1], MOUSE_LEFT)
          end;
        end;
        98..100: begin
          randomSlot := random(logsLeft);
          if (ItemInSlot(randomSlot) and log.FindIn(InvBox(randomSlot), itemPt)) then begin
            InteractSlot(randomSlot, MOUSE_LEFT);
          end
          else begin
            InteractSlot(logSlots[1], MOUSE_LEFT)
          end;
        end;
      end;

      if (WaitChatChange()) then begin
        MyProfile.React();

        FletchMenu:

        case lowercase(WhatToCut) of
          'short':
          begin
            MouseBox(shortBox, MOUSE_RIGHT);
            if waitOptionMulti(['Make X', 'e X', 'X'], 1000) then begin
              if (WaitChatChange()) then begin
                sleep(175+random(350));
                MyProfile.React();
                TypeSend(IntToStr(33));
              end
              else begin
                if (FindBitmapToleranceIn(enterAmountBmp, one, two, MCX1, MCY1, MCX2, MCY2, 8)) then begin
                  MyProfile.React();
                  TypeSend(IntToStr(33));
                end;
              end;
            end
            else begin
              Exit;
            end;
          end;
          'long':
          begin
            MouseBox(longBox, MOUSE_RIGHT);
            if waitOptionMulti(['Make X', 'e X', 'X'], 1000) then begin
              if (WaitChatChange()) then begin
                MyProfile.React();
                TypeSend(IntToStr(33));
              end
              else begin
                if (FindBitmapToleranceIn(enterAmountBmp, one, two, MCX1, MCY1, MCX2, MCY2, 8)) then begin
                  MyProfile.React();
                  TypeSend(IntToStr(33));
                end;
              end;
            end
            else begin
              Exit;
            end;
          end;
        end;
      end
      else begin
        if (FindBitmapToleranceIn(fletchMenuBmp, one, two, MCX1, MCY1, MCX2, MCY2, 8)) then GoTo FletchMenu;
        MyProfile.React();
      end;

      sleep(150+random(150));
      if (MyProfile.ActAhead()) then begin
        MyProfile.MoveMouseSlow(_BANKPT);
      end;

      repeat
        //iGraphic.DrawBox(MSX1,0,MSX2,50,true,clSilver);
        //iGraphic.__Bmp.DrawText(('Time Running: ' + TimeRunning()),'UpChars07',Point(10,10),108750);
        //iGraphic.__Bmp.DrawText(('Cut Logs: ' + IntToStrEx(cutLogsCount)),'UpChars07',Point(30,30),108750);
        wait(100+random(100));
        if (LevelUp() or ClickToContinue()) then break;
      until(AllUnstrung());
      MyProfile.React();
    end;

    function HaveUnstrung() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      unstrungFound   : Boolean;
    begin
      itemsChecked  := 0;
      invCount      := GetInvCount();
      unstrungFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (unstrung.FindIn(slotBox, itemPt)) then begin
            unstrungFound := True;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (unstrungFound) then break;
      end;

      if (unstrungFound) then Exit(True);
      Exit(False);
    end;

    function HaveBowstrings() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      bowstringFound   : Boolean;
    begin
      itemsChecked  := 0;
      invCount      := GetInvCount();
      bowstringFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (bowstring.FindIn(slotBox, itemPt)) then begin
            bowstringFound := True;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (bowstringFound) then break;
      end;

      if (bowstringFound) then Exit(True);
      Exit(False);
    end;

    function WithdrawUnstrung() : Boolean;
    var
      i           : Integer;
      unstrungPt,
      itemPt      : TPoint;
      unstrungPts : TPointArray;
    label
      WDUnstrung, Start;
    begin
      GoTo Start;
      WDUnstrung:
        if (WithdrawPointEx(_UNSTRUNGPT, 14, ['u', 'u)','(u)', '(', '(u', ')'])) then begin
          //sleep(200+random(100));
          repeat
            sleep(50);
          until(HaveUnstrung());
          Exit(True);
        end
        else begin
          if (High(unstrungPts) >= 1) then begin
            for i:= 0 to High(unstrungPts) do begin
              if (WithdrawPointEx(unstrungPts[i], 14, ['u', 'u)','(u)', '(', '(u', ')'])) then begin
                result := True;
                _UNSTRUNGPT.X := unstrungPts[i].x;
                _UNSTRUNGPT.Y := unstrungPts[i].y;
                //sleep(200+random(100));
                repeat
                  sleep(50);
                until(HaveUnstrung());
                Exit;
              end;
            end;
          end;
        end;

      Start:
      if (IsBankOpen()) then begin
        if (FindDTMs(unstrung.DTM, unstrungPts, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDUnstrung;
        end
        else begin
          if (ScrollToItemDTM(unstrung.DTM, unstrungPt)) then begin
            GoTo WDUnstrung;
          end
          else begin
            Terminate := True;
            terminateReason := 'No unstrung bows found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;

    function WithdrawBowstrings() : Boolean;
    var
      bowstringPt,
      itemPt        : TPoint;
    label
      WDBowstring, Start;
    begin
      GoTo Start;
      WDBowstring:
        WithdrawPointEx(bowstringPt, 14, ['string', 'ow string']);
        sleep(200+random(100));
        repeat
          sleep(50);
          if not (FindDTM(bowstring.DTM, bowstringPt.x, bowstringPt.y, MSX1,MSY1,MSX2,MSY2)) then break;
        until(GetInvCount() = 28);
        Exit(True);

      Start:
      if (IsBankOpen()) then begin
        if (FindDTM(bowstring.DTM, bowstringPt.x, bowstringPt.y, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDBowstring;
        end
        else begin
          if (ScrollToItemDTM(bowstring.DTM, bowstringPt)) then begin
            GoTo WDBowstring;
          end
          else begin
            Terminate := True;
            terminateReason := 'No bow strings found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;


    function AllStrung() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();
      if (invCount = 0) then Exit(False);
      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if not (strung.FindIn(slotBox, itemPt)) then begin
            Exit(False);
          end;
        end;
        if (itemsChecked = invCount) then break;
      end;
      if (itemsChecked = invCount) then Exit(True);
      Exit(False);
    end;

    function ClickPieces(First, Second: Integer) : Boolean;
    var
      T         : Timer;
      itemPt    : TPoint;
      attempts  : Integer;
    label
      Attempt;
    begin
      attempts := 0;
      Attempt:

      attempts := attempts + 1;
      if (attempts = 5) then Exit(False);
      sleep(100+random(150));
      if (ItemInSlot(First) and unstrung.FindIn(InvBox(First), itemPt)) then begin
        writeln('found unstrung specified');
        if (ItemInSlot(Second) and bowstring.FindIn(InvBox(Second), itemPt)) then begin
          writeln('found bowstring specified');
          InteractSlot(First, MOUSE_LEFT);

          T.Start();
          repeat
            wait(50+random(150));
          until (SlotActivated(First) or (T.TimeElapsed() > 2000));
          if not (SlotActivated(First)) then GoTo Attempt;

          wait(75+random(200));
          InteractSlot(Second, MOUSE_LEFT);

          T.Start();
          repeat
            wait(50+random(150));
          until(FindBitmapToleranceIn(stringMenuBmp, one, two, MCX1, MCY1, MCX2, MCY2, 11) or (T.TimeElapsed() > 2000));
          if (FindBitmapToleranceIn(stringMenuBmp, one, two, MCX1, MCY1, MCX2, MCY2, 11)) then Exit(True);

        end
        else GoTo Attempt;
      end
      else GoTo Attempt;
    end;

    //14-15, 14-18, 13-17, 1-14, rand-rand
    procedure StringBows();
    var
      unstrungLeft,
      bowstringLeft,
      randomUnstrungSlot,
      randomBowstringSlot, i: Integer;
      itemPt                : TPoint;
      unstrungSlots,
      bowstringSlots        : TIntegerArray;
    label
      StringMenu;
    begin
      unstrungSlots   := unstrung.GetSlots();
      unstrungLeft    := High(unstrungSlots);
      bowstringSlots  := bowstring.GetSlots();
      bowstringLeft   := High(bowstringSlots);
      if not (unstrungLeft >= 0) then Exit;
      if not (bowstringLeft >= 0) then Exit;

      case random(100) of
        0..69: begin
        writeln('0-69 wrong');
          if (ItemInSlot(14) and unstrung.FindIn(InvBox(14), itemPt)) then begin
            if (ItemInSlot(15) and bowstring.FindIn(InvBox(15), itemPt)) then begin
              if(ClickPieces(14, 15)) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end
            else begin
              if (ClickPieces(14, bowstringSlots[0])) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end;
          end
          else begin
            if (ClickPieces(unstrungSlots[0], bowstringSlots[0])) then begin
              MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
            end
            else begin

            end;
          end;
        end;
        70..100: begin
        writeln('70-84 wrong');
          if (ItemInSlot(14) and unstrung.FindIn(InvBox(14), itemPt)) then begin
            if (ItemInSlot(18) and bowstring.FindIn(InvBox(18), itemPt)) then begin
              if (ClickPieces(14, 18)) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end
            else begin
              if (ClickPieces(14, bowstringSlots[0])) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end;
          end
          else begin
            if (ClickPieces(unstrungSlots[0], bowstringSlots[0])) then begin
              MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
            end
            else begin

            end;
          end;
        end;
      end;

      repeat
        wait(100+random(100));
        if (LevelUp() or ClickToContinue()) then break;
        for i:=1 to 28 do begin
          if (SlotActivated(i)) then InteractSlot(i, MOUSE_LEFT);
        end;
      until(AllStrung());
    end;

    function GetCutState(): State;
    begin
      result := LOST;
      if not isLoggedIn() then
        Exit;

      if (HaveKnife()) then begin
        write('have knife');
        if (HaveLogs()) then begin
          write(', have logs');
          writeln(', fletching logs');
          if (IsInterfaceOpen()) then CloseInterface();
          MyProfile.React();
          Exit(FLETCHLOGS);
        end
        else begin
          if (AllUnstrung()) then begin
            writeln(', depositing unstrung');
            MyProfile.React();
            Exit(BANKUNSTRUNG);
          end
          else begin
            writeln(', getting logs');
            Exit(GETLOGS);
          end;
        end;
      end
      else Exit(GETKNIFE);

    end;

    procedure CutScriptLoop();
    var
      curState : State;
    begin
      if not isLoggedIn() then Exit;

      curState := GetCutState();
      case curState of
        BANKUNSTRUNG     :
          begin
            OpenBank();
            DepositUnstrung();
          end;
        FLETCHLOGS       : CutLogs();
        GETKNIFE         :
          begin
            OpenBank();
            WithdrawKnife();
          end;
        GETLOGS          :
          begin
            OpenBank();
            WithdrawLogs();
          end;
        LOST             :
          begin
            Terminate := True;
          end;
      end;
    end;

    function GetStringState(): State;
    begin
      result := LOST;
      if not isLoggedIn() then
        Exit;


      if (AllStrung()) then begin
        MyProfile.React();
        Exit(BANKBOWS);
      end
      else begin
        if (HaveUnstrung()) then begin
          if (HaveBowstrings()) then begin
            write(', have bowstrings');
            if (IsInterfaceOpen()) then CloseInterface();
            writeln(', attaching bowstrings');
            MyProfile.React();
            Exit(ATTACHSTRINGS);
          end
          else begin
            Exit(GETBOWSTRINGS);
          end;
        end
        else begin
          Exit(GETUNSTRUNG);
        end;
      end;

      {
      if (HaveUnstrung()) then begin
        write('have unstrung bows');
        if (HaveBowstrings()) then begin
          write(', have bowstrings');
          if (IsInterfaceOpen()) then CloseInterface();
          writeln(', attaching bowstrings');
          Exit(ATTACHSTRINGS);
        end
        else begin
          if (AllStrung()) then begin
            writeln(', all strung');
            Exit(BANKBOWS);
          end
          else begin
            writeln(', getting bowstrings');
            Exit(GETBOWSTRINGS);
          end;
        end
      end
      else begin
        writeln('getting unstrung bows');
        Exit(GETUNSTRUNG);
      end;
      }

    end;

    procedure StringScriptLoop();
    var
      curState : State;
    begin
      if not isLoggedIn() then Exit;

      curState := GetStringState();
      case curState of
        BANKBOWS      :
          begin
            writeln('stuck bank');
            OpenBank();
            QuickDeposit('inv');
            repeat
              sleep(50+random(100));
            until(GetInvCount() = 0);
          end;
        ATTACHSTRINGS :
          begin
            writeln('stuck attach');
            StringBows();
          end;
        GETUNSTRUNG   :
          begin
            writeln('stuck get unstrung');
            OpenBank();
            WithdrawUnstrung();
          end;
        GETBOWSTRINGS :
          begin
            OpenBank();
            WithdrawBowstrings();
          end;
        LOST          :
          begin
            writeln('lost');
            Terminate := True;
          end;
      end;
    end;

    begin
      declarePlayer();
      initAL();

      //OS_Smart.Graphics.Clear;
      loadVars();
      addOnTerminate('freeGlobals');
      //iGraphic := OS_Smart.Graphics();



      mouseSpeed := 20;
      loginPlayer(true);
      //setCompass('N');
      setAngle(ANGLE_HIGH);

      if not (GetInvCount() = 0) then QuickDeposit('inv');
      if (CuttingLogs) then begin
        repeat
          CutScriptLoop();
          //iGraphic.Clear();
        until (Terminate);
      end;

      if not (GetInvCount() = 0) then QuickDeposit('inv');
      if (StringingBows) then begin
        Terminate := False;
        repeat
          StringScriptLoop();
        until(Terminate);
      end
      else writeln(terminateReason);

    end.

  5. #5
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    Quote Originally Posted by BMWxi View Post
    I don't have aerolib so I can't compile the script anyway, but I commented out all the smart graphics stuff so give this a try:
    Simba Code:
    program RUNME;
    {$DEFINE SPS}
    //{$DEFINE SMART}

    {$I AeroLib/AeroLib.Simba}
    {$I AeroLib/Profiles.Simba}

    Const
    //------------------------User setup-------------------------//
    // Color Setup
      bankBoothFrame    = 9610935;
      bankBoothWindow   = 11647686;

    // Info Needed
      //TODO: other logs but maple handling
      LogToCut        = 'Maple';    //willow, maple, yew, magic
      //TODO: shortbow handling
      WhatToCut       = 'Long';     //short, long
      CuttingLogs     = true;
      StringingBows   = false;

    // Player info
      P_USERNAME   = '';
      P_PASSWORD   = '';
      P_NICKNAME   = '';
      P_PIN        = '';
      P_LAMPSKILL  = SKILL_SLAYER;

    // Break settings
      fBREAK_IN     = 300;      // How long before we take a break? (minutes)
      fBREAK_FOR    = 60;       // How long will we break for? (minutes)
      fR_BREAK_IN   = 17;       // Random minutes to add/subtract from how long until we break
      fR_BREAK_FOR  = 18;        // Random minutes to add/subjtract from break duraction

    //----------------------End user setup----------------------//

    Type State = (BANKUNSTRUNG, FLETCHLOGS, GETMATERIALS, GETKNIFE, GETLOGS, LOST, GETUNSTRUNG, GETBOWSTRINGS, ATTACHSTRINGS, BANKBOWS);

    Var
      log, knife,
      unstrung,
      bowstring,
      strung          : TItem;
      timer_CS,
      timer_SP        : Timer;
      XPMod,
      one,two,
      cutLoads,
      cutLogsCount    : Integer;
      shortBox,
      longBox         : TBox;
      Obj_Bank        : TMSObject;
      DTM_MMBank      : TIntegerArray;
      chatboxArray    : Array of TChatOption;
      Terminate       : Boolean = False;
      terminateReason : String  = 'Error somewhere';
      nameMod         : String;
      optionList      : Array of TOptions;
      enterAmountBmp,
      fletchMenuBmp,
      stringMenuBmp   : Integer;
      testPt          : TPoint;
      //iGraphic        : TGraphics;
      MyProfile       : TPlayerProfile;

      _UNSTRUNGPT,
      _BOWSTRINGPT,
      _LOGPT,
      _STRUNGPT,
      _BANKPT         : TPoint;

    procedure declarePlayer();
    begin
      Me.Name      := P_USERNAME;
      Me.Pass      := P_PASSWORD;
      Me.Pin       := P_PIN;
      Me.Nick      := P_NICKNAME;
      Me.LampSkill := P_LAMPSKILL;
      Me.Active    := True;
    end;

    procedure loadVars();
    var
      A,B : Integer;
    begin
      MyProfile       := CreateProfile('me',18,140,190);
      cutLogsCount    := 0;
      enterAmountBmp  := BitmapFromString(97, 20, 'meJytmFFPGzEQhPP/3+kDdaUeT+' +
            '1foGlFEHmiqmiRqvBvutzcDcPs2jlRohVy7LXxfje79mW6fZzE2uF' +
            'PGBrsUYer42nssNGwji7yBvv4/QF/0fhPu9g/XFzfv1h8nW2qEGHn' +
            'EYUR0NGxhQ+mjxGVK6Px6e7UYxL24eaRPbQIR3vUJy/F9ck5pi/rK' +
            'KLre9s5/XXb+Io1dWVVUea5RUXxFxPZMGVqUAgZO8T+ERdNI4WP4V' +
            'VWEQgZqrMiuvz2MxrYjMZLSro+6enDtXBMGDleQxRLgcxAb0Uu7J/' +
            'lEUYyWSRlCCpRa+d0CzhUI9eMTiIqszt6SvHbE89hAoVKBY3oDyt5' +
            'ljm4hHA4KSKm2OXNL9Pb2HqINHPJQWns0mdAg8QG2WRkWKZIKXq+H' +
            'P9a9mVWmh0LosMpP01LLhXVWUSaRDY39GOINvKHMzY5oKTZpBAILR' +
            'ApNMLvCQkOMEO0/Wgjfw2Z9cSMEo3REpHO0kXgbMd3ryZ/PT7lymP' +
            '0EDWmID0HGQFQPLxK/WyxsSqoIovaGYrMlJI5l8VZyzJGkVyWfVly' +
            '1MkgOkqONfzdEWWRWBVSFPwEMUAzZxDQTiLSTks9mDmgyNvEHIv1A' +
            '5S65XZeJ3eW0HCi9UY15KUx56Y5v4wKK0NUnvKcxbbOYid7dFf6v3' +
            'pYLIqBz0BFWxDpZjQc6ifiUg69dlmydq8/ioijJaJBW9me9dFaYWe' +
            'EHf3qz6Etm8n5QiYarJ1lppwo6e+FSFfWnH0DIlywjQa/mlp6isqe' +
            'dilSRPlo4zpEZKk6QNRTSA/RIBd6iNp86D+/jOyLyryTUtCqWwHdj' +
            'BI/4GCIQEnlZLM0qIyIdwmdkkuiLjUoF1ZsDVqbD3RUIcgJfzXRnO' +
            'd6Q+AQHXoXyFyCVEjGKoam6sJplwcdVTh28WjrJdN82LYrX57OkPn' +
            'KnK/fdilCj/50oIgsQxVRj2Hr3DnZoEPmaYha5545uF8Z4dIH8TLR' +
            'jIZe79WBb9kQIR4H2hmRUsIQpKIhlKByYe+JswzNKPUQcXoGDgfGF' +
            'Sk2eMfXX2ba+rMMEVGKeJf5/OO36QQ9ba57WUXczFX6na3Hrb1+2+' +
            '2l1Vk7ixdPf1HR/CNJW09/zUQTj6YbEYEw3AgkGppfOQGn9fptJSL' +
            '754JWPvSBYLYb9sOv/wDMpT8X');
      fletchMenuBmp   := BitmapFromString(34, 20, 'meJyNVctOw0AM5P8PXFAQIqf+RC' +
            'UglXoEUaGV+CGczHoYz7ZRqz04Xr/GnnXnU3v9uExLm96/46xyCl2' +
            'OK5xNP58aDj6hf3y7xKE7fWcET01xzNOzL+35/Mv49F3lxV30PB2/' +
            'ND6ijYnCbLVMILAMjTqyklKbyATlLdKzRdBKzGbUXEXERAbkIX8Rn' +
            'AUQBWVedeDpjjFpkwt2jb9hCYEGmsU6oCmUM9BrBKQIoadIeyjVTC' +
            'lXOgZ9Eo8AmSUEBC9ZEt0Vet+eBfmgs9Y+IKBiIZC9sMr8ASkpjU8' +
            'GNyHMOAtOrZM8bdgKVSptjPCs3xJhQCVOVk68yhmdI1+xMge8YjEK' +
            'jRvGsthArc//Q1ka3+k4bs6LFers4EKlXmEoh/NP2Uhb97RjNiake' +
            'Dl+avc4Lwh8OxC4lBgTVdmPxvEEVGmVKGrjnr3ZgqLufFuJ1vOR7Y' +
            'VgN9Y1cOn7skRjwHuykGO2c6wz07C9tbCxYF6NkHceOxeXttpX5aA' +
            'kZ1iz7t6Sbil/EDuVWNIw+wM9tRRD');
      stringMenuBmp   := BitmapFromString(73, 26, 'meJylmN1rVFcUxSn4ZKTUKAhijY' +
            'ogE8GStmIeNMXPl4hiURBaCgoFUdqHGvwWWzXiZHRwIj7E2JgoCZr' +
            'UdFQIYqiU4r/gm3+M6941s7Jnn3NuRguLw7n3ngn7d9fe+5ybysx8' +
            'ZWb+zrN/KvnEafDpa06GnsxxhMqTL6nrj1/YUbo88dxe2vsU5tfGZ' +
            '//486+oLo1On7k/jTGukUmq5Vf3py7ce8z7mJy5O4FRFAw+hLLiGo' +
            'smcYHid1AAQVSXx2f5VCHhPmXjxLIkWpNLlyTCKDRdRs1Kia4NTr0' +
            'iF/DFiJuk0CRlGdHIyzF0sAjKcDkWATo05GQqLUPjiKDktLySuyxI' +
            '1GhOSg0HLVogiyZZLqLdmv0XKgakZVly5kQZ2pO5aNhiZDZmIGN11' +
            'RqNw50iv0ans/tNCtSRIwovHVqq0MKio1+cl/O5uFKABGl410w/Vl' +
            '82H6vboiuuMsfiSNlAhFarv2kTDSC4dLDlvLhwM2N8+jqVjZ50rJ7' +
            '5mLcX9RN513XsxBf9R6AWNGdik1dmgcuhgSuki24EhGqBRa1NvVIZ' +
            'Cq2YjnmYtZRYhyz9dnHF0Z/Bterwj5g0fDRoltcmIdFk4qJ9w9Uds' +
            'lGyUOotqQ5pOwlxohtc7+9lWvZ53z6O8ki52lKVsa7CBbbQ1EYcl0' +
            '1CcYWdczDvk8VoC4zc4wLLgAYccnV0b1m2eklqZ7e9RXP7FFENv3x' +
            '7+/l/oKglGuMCFxgDND7lltcOFJ1Sw9QdCCzIxqXfbIMwX9rRkYJa' +
            'svpLqGABBCJwgQ5c4dY2XKueHTjt9Mupk4e/PxRq1+5dfdu/lg7s2' +
            'wnt7+/H/a3f9liVuktaIGHZhpMDG3vX/HB8+a8DX2ECQMTf2bnMCU' +
            'QoQ7wErIGt2kd06GLS0i+3tUGIv3zj2qPxB3/PTGIycreC+fUrF0i' +
            'HSZvCD9vU8fPnEDCgHjz8rjq85tiJ5Sg6CK/CvjFo7fYdP9XnR969' +
            '79mzbnPPZ9HTGhPSosE+NkwCAgdcipOWpQSLo7J/QeJLs8JKGIHIL' +
            '109CECEjfYIis3d60ubuijMs8vu0qkXGRpdsweAaEJibOegtejWYO' +
            'uOc30d8NwS3R04BwhykoXGHqKnbithn0G6FpxCq/U3qrVP5ioW93R' +
            '9LyjIxmE7H3Uc3VsbVedfsXIlKsv+1p3f5FSUjlwhWnjq+J90iGQw' +
            'j1+fD0NNKC27Mz3n9jU46N6JzQF7AAiP2UCr5keR9l37WOTGV15OV' +
            '7BMTQzGocp4FIEsmuVyPjrjkJDqkJ+QkPwhvxQK6lRf6O28AU5QcV' +
            'TI5fJTc/VJAbo4FSpF8Gjkesr+4/YO64WLfFG0SvCfitCjFKZFQ2C' +
            'KUMIl24v6JyKs5juCdYpPK2ZPbPN7Vqo2dxn7W9XgkOkw6rSpszfu' +
            '3Jx4Zr0jCzuJnVvvBE4uPpWhbEHEL+aiL7ZUuV4j2oh1zXLJxNR2Y' +
            'CuOxpHIcUF4nxbKOquJFqvH1lpT15GqNxYkbViYqbSMbgcOTWLYQg' +
            'sT1RFZuzO0vNMqzlrzkOPowgYbvo2Fr/i8qUbpQlLnmixzjGoOugy' +
            '53K9q6W+HRaWcdN0m2kyijUWwrDglZJhdNmDnUXxZ8zu9uNzCbHTt' +
            '0eZkai+L/oNXUGomHwDBKTja');
      shortBox        := toBox(80,390,140,460);
      longBox         := toBox(220,390,290,460);
      Obj_Bank        := toObj('BankBooth', ['ank B','nk bo','booth'], [createColEx(bankBoothFrame, 8, 0.75, 0.90)], [createColEx(bankBoothWindow, 5, 0.11, 3.38)]);

      setLength(DTM_MMBank, 1);
      DTM_MMBank[0]  := DTMFromString('m6wAAAHic42ZgYGhiYmCYxQShq4C4BYq7gLgSiGuBuAaIO4A4DKg+Boi9odgAiE2A2BRKg7A+EBsC8cmjRxk+Aum3byH469MnKLilRhFMJ+qzM/wHqlMmEjMCMRORGAkAABAgIUc=');
      knife.DTM      := DTMFromString('mbQAAAHicY2VgYDjGzMCwG4hPA/ERKP0VKM7KyMDwEUj/A+JXQFxTXAwkGVEwO5BkQcNMGKqgAAD+bAlH');
      bowstring.DTM  := DTMFromString('mggAAAHicY2NgYPBlYWBwAmIXILYG4gAgtgTiDqBcDxA3AHE1EDdD2U1l4QwigoJAFiOcBmEOIMmKBTPBVaBiCAAAa5YGrg==');

      case lowercase(LogToCut) of
        'willow':
          begin
            //TODO
          end;
        'maple':
          begin
            log.DTM := DTMFromString('mggAAAHicY2NgYIhlYWAIBGI/IA4G4iggzgTiJ0C5Z0D8BojfAfEnIH4NxHlePAxdqQYMzYl6YJqBgRGMuYAkNswMxExImBGKIQAAJHUMDw==');
            case lowercase(WhatToCut) of
              'short':
                begin
                  //TODO
                end;
              'long':
                begin
                  unstrung.DTM  := DTMFromString('mWAAAAHicY2FgYEhnYmDIAeIkKL0OKLYbiFcD8VYg3jZrApBkhGMOIImMGdEwCAAAlBMGfg==');
                  strung.DTM    := DTMFromString('mggAAAHicY2NgYGhhYWBoAOIyIK4D4nYg7gXiP0C5/0D8BYrZGRkYuIB435LZQB4jBuYCkmxYMKZKCIYAAIz1CVE=');
                end;
            end;
          end;
        'yew':
          begin
            //TODO
          end;
        'magic':
          begin
            //TODO
          end;
      end;

      timer_CS.start();
      timer_SP.start();
      setupBreak(fBREAK_IN, fBREAK_FOR, fR_BREAK_IN, fR_BREAK_FOR);
    end;

    procedure freeGlobals();
    var
      i : Integer;
    begin
      for i:=0 to high(DTM_MMBank) do
        freeDTM(DTM_MMBank[i]);
      freeBitmap(enterAmountBmp);
      freeBitmap(fletchMenuBmp);
      freeBitmap(stringMenuBmp);
      freeDTM(log.DTM);
      freeDTM(unstrung.DTM);
      freeDTM(bowstring.DTM);
      freeDTM(strung.DTM);
      freeDTM(knife.DTM);
    end;

    procedure OpenBank();
    var
      T     : Timer;
      Pnt   : TPoint;
      i,c   : Integer;
      Slots : TIntegerArray;
    begin
      if not isLoggedIn() then
        Exit;

      BreakHandler();

      if (Me.Pin <> '') then
        inPin(Me.Pin);
      if isBankOpen() then begin
        Exit;
      end;

      if openBankPoint(_BANKPT, True) then Exit;

      for i:=1 to 3 do
      begin
        if findMSObject(Obj_Bank, 5, point(MSCX,MSCY), Pnt) then begin
          break;
        end;
        if (i=3) then
          if not findMSObject(Obj_Bank, 5, point(MSCX,MSCY), Pnt) then
            Exit;
      end;

      if not openBankPoint(Pnt, True) then begin
        Exit;
      end
      else begin
        _BANKPT.X := Pnt.x;
        _BANKPT.Y := Pnt.y;
        Exit;
      end;
    end;

    function HaveKnife() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      knifeFound      : Boolean;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();
      knifeFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (knife.FindIn(slotBox, itemPt)) then begin
            knifeFound := True;
            if not (i = 1) then begin
              MoveItemTo(i, 1);
            end;
          end
          else begin
            if (knife.FindIn(slotBox, itemPt)) then begin
              knifeFound := True;
              if not (i = 1) then begin
                MoveItemTo(i, 1);
              end;
            end;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (knifeFound) then break;
      end;
      if (knifeFound) then Exit(True);
      Exit(False);
    end;

    function HaveLogs() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      logFound        : Boolean;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();
      logFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (log.FindIn(slotBox, itemPt)) then begin
            logFound := True;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (logFound) then break;
      end;

      if (logFound) then Exit(True);
      Exit(False);
    end;

    function WithdrawKnife() : Boolean;
    var
      knifePt,
      itemPt     : TPoint;
    label
      WDKnife, Start;
    begin
      GoTo Start;
      WDKnife:
        WithdrawPointEx(knifePt, 1, ['nife', 'ife']);
        repeat
          sleep(50);
          if (MyProfile.ActAhead()) then begin
            Break;
          end;
        until(GetInvCount() = 1);
        Exit(True);

      Start:
      if (IsBankOpen()) then begin
        if (GetInvCount() > 0) then QuickDeposit('inv');
        if (FindDTM(knife.DTM, knifePt.x, knifePt.y, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDKnife;
        end
        else begin
          if (ScrollToItemDTM(knife.DTM, knifePt)) then begin
            repeat
              sleep(150);
              if (MyProfile.ActAhead()) then begin
                Break;
              end;
            until(GetInvCount() = 1);
            Exit(True);

          end
          else begin
            Terminate := True;
            terminateReason := 'No knife found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;

    function WithdrawLogs() : Boolean;
    var
      logPt,
      itemPt     : TPoint;
    label
      WDLog, Start;
    begin
      GoTo Start;
      WDLog:
        WithdrawPointEx(logPt, 27, ['log', 'og']);
        sleep(200+random(100));
        repeat
          sleep(250);
          if (MyProfile.ActAhead()) then begin
            Break;
          end;
          if not (FindDTM(log.DTM, logPt.x, logPt.y, MSX1,MSY1,MSX2,MSY2)) then break;
        until(GetInvCount() = 28);
        Exit(True);

      Start:
      if not (HaveKnife()) then Exit(False);
      if (IsBankOpen()) then begin
        if (FindDTM(log.DTM, logPt.x, logPt.y, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDLog;
        end
        else begin
          if (ScrollToItemDTM(log.DTM, logPt)) then begin
            GoTo WDLog;
          end
          else begin
            Terminate := True;
            terminateReason := 'No logs found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;

    function AllUnstrung(): Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();

      for i:= 2 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if not (unstrung.FindIn(slotBox, itemPt)) then begin
            Exit(False);
          end;
        end;
        if (itemsChecked = invCount - 1) then break;
      end;
      if (itemsChecked = 0) then Exit(False);
      Exit(True);
    end;

    procedure DepositUnstrung();
    var
      unstrungCount,
      i, randomSlot      : Integer;
      itemPt,
      logPt           : TPoint;
      unstrungSlots   : TIntegerArray;
    begin
      if (IsBankOpen()) then begin
        unstrungSlots := unstrung.GetSlots();
        unstrungCount := High(unstrungSlots);
        cutLogsCount := cutLogsCount + (unstrungCount + 1);
        if not (unstrungCount > 0) then begin
          Exit;
        end;
        DepositAllFrom(2);
      end;
    end;

    procedure CutLogs();
    var
      logsLeft,
      randomSlot  : Integer;
      itemPt      : TPoint;
      logSlots    : TIntegerArray;
    label
      FletchMenu;
    begin
      if (ItemInSlot(1) and knife.FindIn(InvBox(1), itemPt)) then begin
        if (InteractSlot(1, MOUSE_LEFT)) then begin
          repeat
            wait(50+random(50));
            if (MyProfile.ActAhead()) then begin
              Break;
            end;
          until (SlotActivated(1));
        end;
      end
      else begin
        Exit;
      end;

      logSlots := log.GetSlots();
      logsLeft := High(logSlots);
      case random(100) of
        0..75: begin
          if (ItemInSlot(2) and log.FindIn(InvBox(2), itemPt)) then begin
            InteractSlot(2, MOUSE_LEFT);
          end
          else begin
            InteractSlot(logSlots[1], MOUSE_LEFT)
          end;
        end;
        75..97: begin
          if (ItemInSlot(5) and log.FindIn(InvBox(5), itemPt)) then begin
            InteractSlot(5, MOUSE_LEFT);
          end
          else begin
            InteractSlot(logSlots[1], MOUSE_LEFT)
          end;
        end;
        98..100: begin
          randomSlot := random(logsLeft);
          if (ItemInSlot(randomSlot) and log.FindIn(InvBox(randomSlot), itemPt)) then begin
            InteractSlot(randomSlot, MOUSE_LEFT);
          end
          else begin
            InteractSlot(logSlots[1], MOUSE_LEFT)
          end;
        end;
      end;

      if (WaitChatChange()) then begin
        MyProfile.React();

        FletchMenu:

        case lowercase(WhatToCut) of
          'short':
          begin
            MouseBox(shortBox, MOUSE_RIGHT);
            if waitOptionMulti(['Make X', 'e X', 'X'], 1000) then begin
              if (WaitChatChange()) then begin
                sleep(175+random(350));
                MyProfile.React();
                TypeSend(IntToStr(33));
              end
              else begin
                if (FindBitmapToleranceIn(enterAmountBmp, one, two, MCX1, MCY1, MCX2, MCY2, 8)) then begin
                  MyProfile.React();
                  TypeSend(IntToStr(33));
                end;
              end;
            end
            else begin
              Exit;
            end;
          end;
          'long':
          begin
            MouseBox(longBox, MOUSE_RIGHT);
            if waitOptionMulti(['Make X', 'e X', 'X'], 1000) then begin
              if (WaitChatChange()) then begin
                MyProfile.React();
                TypeSend(IntToStr(33));
              end
              else begin
                if (FindBitmapToleranceIn(enterAmountBmp, one, two, MCX1, MCY1, MCX2, MCY2, 8)) then begin
                  MyProfile.React();
                  TypeSend(IntToStr(33));
                end;
              end;
            end
            else begin
              Exit;
            end;
          end;
        end;
      end
      else begin
        if (FindBitmapToleranceIn(fletchMenuBmp, one, two, MCX1, MCY1, MCX2, MCY2, 8)) then GoTo FletchMenu;
        MyProfile.React();
      end;

      sleep(150+random(150));
      if (MyProfile.ActAhead()) then begin
        MyProfile.MoveMouseSlow(_BANKPT);
      end;

      repeat
        //iGraphic.DrawBox(MSX1,0,MSX2,50,true,clSilver);
        //iGraphic.__Bmp.DrawText(('Time Running: ' + TimeRunning()),'UpChars07',Point(10,10),108750);
        //iGraphic.__Bmp.DrawText(('Cut Logs: ' + IntToStrEx(cutLogsCount)),'UpChars07',Point(30,30),108750);
        wait(100+random(100));
        if (LevelUp() or ClickToContinue()) then break;
      until(AllUnstrung());
      MyProfile.React();
    end;

    function HaveUnstrung() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      unstrungFound   : Boolean;
    begin
      itemsChecked  := 0;
      invCount      := GetInvCount();
      unstrungFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (unstrung.FindIn(slotBox, itemPt)) then begin
            unstrungFound := True;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (unstrungFound) then break;
      end;

      if (unstrungFound) then Exit(True);
      Exit(False);
    end;

    function HaveBowstrings() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
      bowstringFound   : Boolean;
    begin
      itemsChecked  := 0;
      invCount      := GetInvCount();
      bowstringFound := False;

      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if (bowstring.FindIn(slotBox, itemPt)) then begin
            bowstringFound := True;
          end;
        end;
        if (itemsChecked = invCount) then break;
        if (bowstringFound) then break;
      end;

      if (bowstringFound) then Exit(True);
      Exit(False);
    end;

    function WithdrawUnstrung() : Boolean;
    var
      i           : Integer;
      unstrungPt,
      itemPt      : TPoint;
      unstrungPts : TPointArray;
    label
      WDUnstrung, Start;
    begin
      GoTo Start;
      WDUnstrung:
        if (WithdrawPointEx(_UNSTRUNGPT, 14, ['u', 'u)','(u)', '(', '(u', ')'])) then begin
          //sleep(200+random(100));
          repeat
            sleep(50);
          until(HaveUnstrung());
          Exit(True);
        end
        else begin
          if (High(unstrungPts) >= 1) then begin
            for i:= 0 to High(unstrungPts) do begin
              if (WithdrawPointEx(unstrungPts[i], 14, ['u', 'u)','(u)', '(', '(u', ')'])) then begin
                result := True;
                _UNSTRUNGPT.X := unstrungPts[i].x;
                _UNSTRUNGPT.Y := unstrungPts[i].y;
                //sleep(200+random(100));
                repeat
                  sleep(50);
                until(HaveUnstrung());
                Exit;
              end;
            end;
          end;
        end;

      Start:
      if (IsBankOpen()) then begin
        if (FindDTMs(unstrung.DTM, unstrungPts, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDUnstrung;
        end
        else begin
          if (ScrollToItemDTM(unstrung.DTM, unstrungPt)) then begin
            GoTo WDUnstrung;
          end
          else begin
            Terminate := True;
            terminateReason := 'No unstrung bows found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;

    function WithdrawBowstrings() : Boolean;
    var
      bowstringPt,
      itemPt        : TPoint;
    label
      WDBowstring, Start;
    begin
      GoTo Start;
      WDBowstring:
        WithdrawPointEx(bowstringPt, 14, ['string', 'ow string']);
        sleep(200+random(100));
        repeat
          sleep(50);
          if not (FindDTM(bowstring.DTM, bowstringPt.x, bowstringPt.y, MSX1,MSY1,MSX2,MSY2)) then break;
        until(GetInvCount() = 28);
        Exit(True);

      Start:
      if (IsBankOpen()) then begin
        if (FindDTM(bowstring.DTM, bowstringPt.x, bowstringPt.y, MSX1,MSY1,MSX2,MSY2)) then begin
          GoTo WDBowstring;
        end
        else begin
          if (ScrollToItemDTM(bowstring.DTM, bowstringPt)) then begin
            GoTo WDBowstring;
          end
          else begin
            Terminate := True;
            terminateReason := 'No bow strings found';
            Exit(False);
          end;
        end;
      end
      else begin
        Exit(False);
      end;
    end;


    function AllStrung() : Boolean;
    var
      i,
      invCount,
      itemsChecked    : Integer;
      slotBox         : TBox;
      itemPt          : TPoint;
    begin
      itemsChecked := 0;
      invCount := GetInvCount();
      if (invCount = 0) then Exit(False);
      for i:= 1 to 28 do begin
        if (ItemInSlot(i)) then begin
          itemsChecked := itemsChecked + 1;
          slotBox := InvBox(i);
          if not (strung.FindIn(slotBox, itemPt)) then begin
            Exit(False);
          end;
        end;
        if (itemsChecked = invCount) then break;
      end;
      if (itemsChecked = invCount) then Exit(True);
      Exit(False);
    end;

    function ClickPieces(First, Second: Integer) : Boolean;
    var
      T         : Timer;
      itemPt    : TPoint;
      attempts  : Integer;
    label
      Attempt;
    begin
      attempts := 0;
      Attempt:

      attempts := attempts + 1;
      if (attempts = 5) then Exit(False);
      sleep(100+random(150));
      if (ItemInSlot(First) and unstrung.FindIn(InvBox(First), itemPt)) then begin
        writeln('found unstrung specified');
        if (ItemInSlot(Second) and bowstring.FindIn(InvBox(Second), itemPt)) then begin
          writeln('found bowstring specified');
          InteractSlot(First, MOUSE_LEFT);

          T.Start();
          repeat
            wait(50+random(150));
          until (SlotActivated(First) or (T.TimeElapsed() > 2000));
          if not (SlotActivated(First)) then GoTo Attempt;

          wait(75+random(200));
          InteractSlot(Second, MOUSE_LEFT);

          T.Start();
          repeat
            wait(50+random(150));
          until(FindBitmapToleranceIn(stringMenuBmp, one, two, MCX1, MCY1, MCX2, MCY2, 11) or (T.TimeElapsed() > 2000));
          if (FindBitmapToleranceIn(stringMenuBmp, one, two, MCX1, MCY1, MCX2, MCY2, 11)) then Exit(True);

        end
        else GoTo Attempt;
      end
      else GoTo Attempt;
    end;

    //14-15, 14-18, 13-17, 1-14, rand-rand
    procedure StringBows();
    var
      unstrungLeft,
      bowstringLeft,
      randomUnstrungSlot,
      randomBowstringSlot, i: Integer;
      itemPt                : TPoint;
      unstrungSlots,
      bowstringSlots        : TIntegerArray;
    label
      StringMenu;
    begin
      unstrungSlots   := unstrung.GetSlots();
      unstrungLeft    := High(unstrungSlots);
      bowstringSlots  := bowstring.GetSlots();
      bowstringLeft   := High(bowstringSlots);
      if not (unstrungLeft >= 0) then Exit;
      if not (bowstringLeft >= 0) then Exit;

      case random(100) of
        0..69: begin
        writeln('0-69 wrong');
          if (ItemInSlot(14) and unstrung.FindIn(InvBox(14), itemPt)) then begin
            if (ItemInSlot(15) and bowstring.FindIn(InvBox(15), itemPt)) then begin
              if(ClickPieces(14, 15)) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end
            else begin
              if (ClickPieces(14, bowstringSlots[0])) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end;
          end
          else begin
            if (ClickPieces(unstrungSlots[0], bowstringSlots[0])) then begin
              MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
            end
            else begin

            end;
          end;
        end;
        70..100: begin
        writeln('70-84 wrong');
          if (ItemInSlot(14) and unstrung.FindIn(InvBox(14), itemPt)) then begin
            if (ItemInSlot(18) and bowstring.FindIn(InvBox(18), itemPt)) then begin
              if (ClickPieces(14, 18)) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end
            else begin
              if (ClickPieces(14, bowstringSlots[0])) then begin
                MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
              end
              else begin

              end;
            end;
          end
          else begin
            if (ClickPieces(unstrungSlots[0], bowstringSlots[0])) then begin
              MouseBox(longBox, MOUSE_RIGHT);
                if waitOptionMulti(['Make All', 'e All', 'All'], 1000) then begin

                end
                else begin
                  Exit;
                end;
            end
            else begin

            end;
          end;
        end;
      end;

      repeat
        wait(100+random(100));
        if (LevelUp() or ClickToContinue()) then break;
        for i:=1 to 28 do begin
          if (SlotActivated(i)) then InteractSlot(i, MOUSE_LEFT);
        end;
      until(AllStrung());
    end;

    function GetCutState(): State;
    begin
      result := LOST;
      if not isLoggedIn() then
        Exit;

      if (HaveKnife()) then begin
        write('have knife');
        if (HaveLogs()) then begin
          write(', have logs');
          writeln(', fletching logs');
          if (IsInterfaceOpen()) then CloseInterface();
          MyProfile.React();
          Exit(FLETCHLOGS);
        end
        else begin
          if (AllUnstrung()) then begin
            writeln(', depositing unstrung');
            MyProfile.React();
            Exit(BANKUNSTRUNG);
          end
          else begin
            writeln(', getting logs');
            Exit(GETLOGS);
          end;
        end;
      end
      else Exit(GETKNIFE);

    end;

    procedure CutScriptLoop();
    var
      curState : State;
    begin
      if not isLoggedIn() then Exit;

      curState := GetCutState();
      case curState of
        BANKUNSTRUNG     :
          begin
            OpenBank();
            DepositUnstrung();
          end;
        FLETCHLOGS       : CutLogs();
        GETKNIFE         :
          begin
            OpenBank();
            WithdrawKnife();
          end;
        GETLOGS          :
          begin
            OpenBank();
            WithdrawLogs();
          end;
        LOST             :
          begin
            Terminate := True;
          end;
      end;
    end;

    function GetStringState(): State;
    begin
      result := LOST;
      if not isLoggedIn() then
        Exit;


      if (AllStrung()) then begin
        MyProfile.React();
        Exit(BANKBOWS);
      end
      else begin
        if (HaveUnstrung()) then begin
          if (HaveBowstrings()) then begin
            write(', have bowstrings');
            if (IsInterfaceOpen()) then CloseInterface();
            writeln(', attaching bowstrings');
            MyProfile.React();
            Exit(ATTACHSTRINGS);
          end
          else begin
            Exit(GETBOWSTRINGS);
          end;
        end
        else begin
          Exit(GETUNSTRUNG);
        end;
      end;

      {
      if (HaveUnstrung()) then begin
        write('have unstrung bows');
        if (HaveBowstrings()) then begin
          write(', have bowstrings');
          if (IsInterfaceOpen()) then CloseInterface();
          writeln(', attaching bowstrings');
          Exit(ATTACHSTRINGS);
        end
        else begin
          if (AllStrung()) then begin
            writeln(', all strung');
            Exit(BANKBOWS);
          end
          else begin
            writeln(', getting bowstrings');
            Exit(GETBOWSTRINGS);
          end;
        end
      end
      else begin
        writeln('getting unstrung bows');
        Exit(GETUNSTRUNG);
      end;
      }

    end;

    procedure StringScriptLoop();
    var
      curState : State;
    begin
      if not isLoggedIn() then Exit;

      curState := GetStringState();
      case curState of
        BANKBOWS      :
          begin
            writeln('stuck bank');
            OpenBank();
            QuickDeposit('inv');
            repeat
              sleep(50+random(100));
            until(GetInvCount() = 0);
          end;
        ATTACHSTRINGS :
          begin
            writeln('stuck attach');
            StringBows();
          end;
        GETUNSTRUNG   :
          begin
            writeln('stuck get unstrung');
            OpenBank();
            WithdrawUnstrung();
          end;
        GETBOWSTRINGS :
          begin
            OpenBank();
            WithdrawBowstrings();
          end;
        LOST          :
          begin
            writeln('lost');
            Terminate := True;
          end;
      end;
    end;

    begin
      declarePlayer();
      initAL();

      //OS_Smart.Graphics.Clear;
      loadVars();
      addOnTerminate('freeGlobals');
      //iGraphic := OS_Smart.Graphics();



      mouseSpeed := 20;
      loginPlayer(true);
      //setCompass('N');
      setAngle(ANGLE_HIGH);

      if not (GetInvCount() = 0) then QuickDeposit('inv');
      if (CuttingLogs) then begin
        repeat
          CutScriptLoop();
          //iGraphic.Clear();
        until (Terminate);
      end;

      if not (GetInvCount() = 0) then QuickDeposit('inv');
      if (StringingBows) then begin
        Terminate := False;
        repeat
          StringScriptLoop();
        until(Terminate);
      end
      else writeln(terminateReason);

    end.
    This works but it causes the script not to click enter. For example when withdrawing logs, the scripts enters withdraw x and types 33 but then it gets stuck there. it does not hit enter. Can someone help please.

  6. #6
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    help please?

  7. #7
    Join Date
    Jun 2012
    Posts
    4,867
    Mentioned
    74 Post(s)
    Quoted
    1663 Post(s)

    Default

    Quote Originally Posted by tomjerry View Post
    This works but it causes the script not to click enter. For example when withdrawing logs, the scripts enters withdraw x and types 33 but then it gets stuck there. it does not hit enter. Can someone help please.
    I'm not sure why that would happen, sorry. It's possible that Simba cannot type the enter key the same way it can type the other characters but I don't know. I don't usually use Simba without SMART

  8. #8
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    can somebody else? Its able to run in the browser now but the script is unable to hit enter ? please someone help?

  9. #9
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    helppppppp somebody please

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

    Default

    This may be a problem with how SMART runs in AL itself as I've never tried running any scripts on anything other than SMART. If I'm ever able to even load the OSRS client in the browser I might give it a whirl and run one of my scripts, testing your 'hit enter' problem.

    May I ask why it is you've decided to run a script in the normal browser as opposed to SMART?

    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..."


  11. #11
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    SMART is detectable. I botted tons using the browser and didnt get banned. I bot using SMART and i get banned. tried this with 5 accounts. and flight can you run the flecher script i mentioned in this thread. instead of your own script thanks very much

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

    Default

    You might have simply been running a script in a targeted area, such as Pest Control. That place is a very dangerous place to bot, manual bans occur frequently there.

    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..."


  13. #13
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    You might have simply been running a script in a targeted area, such as Pest Control. That place is a very dangerous place to bot, manual bans occur frequently there.
    So will you help me get this script to run in the browser? Since you made aerolib, you are the best person who could figure it out maybe?

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

    Default

    Quote Originally Posted by tomjerry View Post
    So will you help me get this script to run in the browser? Since you made aerolib, you are the best person who could figure it out maybe?
    Ok so I've been trying multiple times today to load OSRS via the browser and I'm still unable to (I believe it's just terrible internet, I'm not sure) but I'm nearly ready to release the next revision of AeroLib and I remember making some changes to the withdrawing in Bank.simba. It may change nothing or it may fix the issue you're having.... or it may just be the script itself.

    Have you ever tried running the script via SMART? If so did it perform correctly then?

    Edit:
    Just tried it with SMART disabled but still acting as the client, I see for myself it's a problem in the include rather than the script. Let me look over this for a while.

    Edit2:
    Fixed. Thanks very much for bringing this to my attention. I think I'll release this revision of AL as it has many bug fixes and couple new powerful tools for scripters. I'll try to tonight because I've plans tomorrow and I won't be at home.
    Last edited by Flight; 07-30-2014 at 02:50 PM.

    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..."


  15. #15
    Join Date
    Jan 2012
    Posts
    1,596
    Mentioned
    78 Post(s)
    Quoted
    826 Post(s)

    Default

    Quote Originally Posted by tomjerry View Post
    SMART is detectable. I botted tons using the browser and didnt get banned. I bot using SMART and i get banned. tried this with 5 accounts. and flight can you run the flecher script i mentioned in this thread. instead of your own script thanks very much
    Please tell this to the hundreds of users that have botted thousands of hours successfully without bans on SMART. (im not saying smart isnt detectable or that jagex isnt detecting it, but they arent banning because of it) Tell this to the people who have gotten countless 99s (as well as a few recorded max/comp capes) with simba. whats your record so far, @Ashaman88;? what makes you think that jagex cant just add a current process checker to their jaclib.dll/so? bam, they can see you running simba but youre in a browser. what do you do now? run RS in a vm and then run simba on the host computer? not a bad idea actually.
    Maybe you got banned because the script was poorly coded? maybe jagex bans by IP? maybe you transferred millions of GP to the accounts and linked them together? maybe you used the same registration email for them? maybe you paid for membership with the same credit card?

    If you want to put on your tinfoil hat, do it properly. VPN each account. Use a different credit card (with different name) for each one's membership. no account interaction. use VMs for simba, then another VM for the RS client. And dont forget to fill that second level VM with obscure programs and browsing data. give the computer realistic hardware. and i3 with 1 core and 1gb ram? they dont make those, sir. That VM's network adapter? emulated. Guess that VM idea is out of here. Oh, heres one. Build a computer, then connect to it remotely, run runescape on it and have the local computer running simba, doing the botting. Remote desktop? oh look theres a TSCLIENT computer on the network. Remote desktop specific display driver/adapter? Yup. Lets try VNC? (i dont know much about vnc's workings, so this may work, but im sure it would still be identifiable)

    Moral? If jagex wanted to determine you were botting (even without smart) and you took every single precaution you could take... they could still probably find out if you are.
    rant somewhat over.

  16. #16
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    turp, you need to calm down mate. I got flight to fix a bug in his AeroLib and he is thankful for it and i am thankful to him. Your rant does nothing constructive in this thread. I get your point but you could have said what you meant to say in 1 line. Relax please.

    To Flight: I am glad you found the problem. Looking forward to new version of AL tonight . Thank you
    Last edited by tomjerry; 07-30-2014 at 09:27 PM.

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

    Default

    Quote Originally Posted by tomjerry View Post
    To Flight: I am glad you found the problem. Looking forward to new version of AL tonight . Thank you
    V1.0 Rev0.3 is already release here.

    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..."


  18. #18
    Join Date
    Sep 2012
    Location
    Netherlands
    Posts
    2,752
    Mentioned
    193 Post(s)
    Quoted
    1468 Post(s)

    Default

    Quote Originally Posted by Turpinator View Post
    whats your record so far, @Ashaman88;
    :')

  19. #19
    Join Date
    Jun 2012
    Posts
    4,867
    Mentioned
    74 Post(s)
    Quoted
    1663 Post(s)

    Default

    Quote Originally Posted by Turpinator View Post
    what do you do now? run RS in a vm and then run simba on the host computer? not a bad idea actually
    Isn't it possible to detect that you're in a VM though? I guess it may not be against the rules, but it might make Jagex suspicious enough to ban. Not that I think they'd have any intention of doing this though.

  20. #20
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    the script puts out this error with new aero lib now.
    Exception in Script: Unknown declaration "ScrollToItemDTM" at line 347, column 11

    Anyone know how to fix this?

  21. #21
    Join Date
    Jan 2012
    Posts
    1,596
    Mentioned
    78 Post(s)
    Quoted
    826 Post(s)

    Default

    Quote Originally Posted by tomjerry View Post
    turp, you need to calm down mate. I got flight to fix a bug in his AeroLib and he is thankful for it and i am thankful to him. Your rant does nothing constructive in this thread. I get your point but you could have said what you meant to say in 1 line. Relax please.
    but you speak that SMART is the reason you have been banned. All im saying is that you have no idea that it actually was the reason, there are plenty of other ways that jagex could have determined you could have been botting/flagged you.


    Quote Originally Posted by BMWxi View Post
    Isn't it possible to detect that you're in a VM though? I guess it may not be against the rules, but it might make Jagex suspicious enough to ban. Not that I think they'd have any intention of doing this though.
    oh yes im sure they could detect is just as easily as they could your OS. see
    use VMs for simba, then another VM for the RS client. And dont forget to fill that second level VM with obscure programs and browsing data. give the computer realistic hardware. and i3 with 1 core and 1gb ram? they dont make those, sir. That VM's network adapter? emulated. Guess that VM idea is out of here. Oh, heres one.

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

    Default

    Quote Originally Posted by tomjerry View Post
    the script puts out this error with new aero lib now.
    Exception in Script: Unknown declaration "ScrollToItemDTM" at line 347, column 11

    Anyone know how to fix this?
    I just replied to your PM with the edited working version of this script. The problem is I changed the function 'ScrollToItemDTM' into 'ScrollToItem' and it now accepts a TItem rather than a DTM like before. You'll see the difference in the example script I sent to you. This update will also cause compile errors for my previous AL scripts so tonight when I return I'll quickly update those to compile and run with the new version.

    Quote Originally Posted by Turpinator View Post
    but you speak that SMART is the reason you have been banned. All im saying is that you have no idea that it actually was the reason, there are plenty of other ways that jagex could have determined you could have been botting/flagged you.
    While I wouldn't have worded it quite the same I agree with Turpinator, SMART surely is not the reason you were banned. There really are numerous ways you were banned, my guess is it was a manual ban because, I assume, you were running this script at the Pest Control bank which is notorious for random-dodging bots. It's not only obvious to normal players but also to Jagex mods. I'd never recommend running scripts there, take your chance with the random events and keep your account safe.

    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..."


  23. #23
    Join Date
    Jun 2012
    Posts
    4,867
    Mentioned
    74 Post(s)
    Quoted
    1663 Post(s)

    Default

    Quote Originally Posted by Turpinator View Post
    oh yes im sure they could detect is just as easily as they could your OS. see
    Whoops, forgot to read the 2nd paragraph

  24. #24
    Join Date
    Jun 2014
    Posts
    38
    Mentioned
    0 Post(s)
    Quoted
    20 Post(s)

    Default

    The script works fine on my computer but i tried the same exact setup on a older computer and the mouse moves to left top corner of the client and sticks there continuously. Any ideas? help?

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
  •