Results 1 to 11 of 11

Thread: Is scar still used?

  1. #1
    Join Date
    Oct 2009
    Posts
    30
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default Is scar still used?

    I have problem downloading SRL, has scar been abadonded? Latest release cant download it..

    Would appericate if anybody can zip his/her old scar and send me. 3.12 - 3.22 are all fine.

    I made a script for privateserver while ago and it uses SRL, I also tried to use simba but it's missing functions such as intToPoint and movemousesmooth and problaby many more, I really dont want to rewrite it.

    Thanks,
    negaal

  2. #2
    Join Date
    Jul 2008
    Location
    Canada
    Posts
    1,612
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Scar isn't abandoned currently, but SRL 5 which is coming soon will not support Scar so i suggest you use that Simba. Read some tut's ask for help, there are many people more than willing to help you with anything.

    Edit: For private servers, there is no need for many SRL functions as they don't really have a anti-macro banning system thingy and the scripts are fairly easy to make.
    Last edited by Smarter Child; 06-28-2011 at 01:41 AM.

  3. #3
    Join Date
    Jan 2010
    Posts
    5,227
    Mentioned
    6 Post(s)
    Quoted
    60 Post(s)

    Default

    Note that "soon" isn't really a certain amount of time. It's been "soon" for quite some time.

  4. #4
    Join Date
    Mar 2006
    Location
    Behind you
    Posts
    3,193
    Mentioned
    61 Post(s)
    Quoted
    63 Post(s)

    Default

    Code:
    Marktime := GetsystemTime/1000;
    
    if Marktime > 31536000 then \\31536000 amount of seconds in a year
      if (Random(2000000) = 12345) then
        SRL5Release;
    The chance of release. Freddy did just release a Final of Scar 3.25 though.

    ~BraK

    E: Also please don't post questions in the "Tutorial Section."

    E2: I'll be moving this into the Scar Section for organization purposes.
    Last edited by BraK; 06-28-2011 at 06:52 AM.

    "Sometimes User's don't need the Answer spelled out with Code. Sometimes all they need is guidance and explanation of the logic to get where they are going."

  5. #5
    Join Date
    Oct 2009
    Posts
    30
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Smarter Child View Post
    Scar isn't abandoned currently, but SRL 5 which is coming soon will not support Scar so i suggest you use that Simba. Read some tut's ask for help, there are many people more than willing to help you with anything.

    Edit: For private servers, there is no need for many SRL functions as they don't really have a anti-macro banning system thingy and the scripts are fairly easy to make.
    I just need scar with SRL 4 installed. And the script depends mostly on wizzyplugin, as i now recall.

    Can you tell me why are scripts fairly easy to make?
    Autotalker is needed there too..


  6. #6
    Join Date
    Mar 2006
    Location
    Behind you
    Posts
    3,193
    Mentioned
    61 Post(s)
    Quoted
    63 Post(s)

    Default

    Auto Talker is pretty hard to Make depending. Are you talking about an Auto-Typer or Auto-Responder. Also there might be more information on the Scar divi 3.25 thread about getting SRL4 with Scar.

    ~BraK

    "Sometimes User's don't need the Answer spelled out with Code. Sometimes all they need is guidance and explanation of the logic to get where they are going."

  7. #7
    Join Date
    Oct 2006
    Posts
    1,190
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    welcome back neG



  8. #8
    Join Date
    Feb 2006
    Location
    Amsterdam
    Posts
    13,692
    Mentioned
    146 Post(s)
    Quoted
    130 Post(s)

    Default

    Quote Originally Posted by Neg_ View Post
    I just need scar with SRL 4 installed. And the script depends mostly on wizzyplugin, as i now recall.

    Can you tell me why are scripts fairly easy to make?
    Autotalker is needed there too..

    Wizzyplugin has been updated and integrated in Simba, so you won't need it for Simba.



    The best way to contact me is by email, which you can find on my website: http://wizzup.org
    I also get email notifications of private messages, though.

    Simba (on Twitter | Group on Villavu | Website | Stable/Unstable releases
    Documentation | Source | Simba Bug Tracker on Github and Villavu )


    My (Blog | Website)

  9. #9
    Join Date
    Oct 2006
    Location
    Netherlands
    Posts
    3,285
    Mentioned
    105 Post(s)
    Quoted
    494 Post(s)

    Default

    Quote Originally Posted by Neg_ View Post
    Can you tell me why are scripts fairly easy to make?
    Autotalker is needed there too..
    Autotalker is near impossible. No bot does it with a reason.

    The script is easy cause the banning system of runescape nowadays is more complicated as at a private server. No one will flag you if you haven't got any breaks, no one will ban you if the script got a bug and keeps clicking a NPC it can't reach for over an hour.

  10. #10
    Join Date
    May 2007
    Location
    England
    Posts
    4,140
    Mentioned
    11 Post(s)
    Quoted
    266 Post(s)

    Default

    Quote Originally Posted by masterBB View Post
    Autotalker is near impossible.
    I wouldn't say that. A well constructed, thought out one with many responses, reasonable triggers, and failsafes wouldn't be impossible; just time consuming.
    <3

    Quote Originally Posted by Eminem
    I don't care if you're black, white, straight, bisexual, gay, lesbian, short, tall, fat, skinny, rich or poor. If you're nice to me, I'll be nice to you. Simple as that.

  11. #11
    Join Date
    Oct 2009
    Posts
    30
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by masterBB View Post
    Autotalker is near impossible. No bot does it with a reason.

    The script is easy cause the banning system of runescape nowadays is more complicated as at a private server. No one will flag you if you haven't got any breaks, no one will ban you if the script got a bug and keeps clicking a NPC it can't reach for over an hour.
    Well, its essminer. You get banned if your char acts weird or doesn't respond(mine just finds name and says something random).
    Character needs to have breaks, if you run it like 10h straight, someone will notice and you get banned.

    Script is well constructed I think, never gets stuck, ran it 16h straight like year ago..

    I wouldn't say it was fairly easy, just "easier" than normal rs.

    SCAR Code:
    program EssMiner;// 1.0 public

    var

    respondTime, t, name, teleport, storetxt, nopickaxe, nocoins,
    shopMM, BankMM, BankText, ShopFloor, AuburyText, PortalMM,
    GF, essmined, Responded, Ess, EssHill, trade, EssCountLast, EssCount: integer;

    shopCalibrate, BankCalibrate, runes : boolean;

    p : TPointArray;

    const

         Debug = false;
         
         BuyRunes = true;

        Aubury = 7048893; // colorcode of aubury, no need to change
        BankBooth = 7048860; //2710899;
        Portal = 10866646;
        BankTrees = 2312569;
        Shop = 5141898;
       
       
        // minimap edgepoints
       
        MMX1 = 554;
        MMY1 = 37;
        MMX2 = 700;
        MMY2 = 188;
       
        // mainscreen edgepoints

        MSX1 = 8;
        MSY1 = 33;
        MSX2 = 518;
        MSY2 = 366;
       
        // minimap centre
       
        MMCX = 628;
        MMCY = 112;

    function intToPoint(x, y : integer) : TPoint;
    var tp : TPoint;
    begin
     tp.x := x;
     tp.y := y;
     Result := tp;
    end;

    procedure load;
    begin

         setArrayLength(p, 7);// Remember to set array length
         p := [
               intToPoint(332, 113), //chaos
               intToPoint(380, 113), //death
               intToPoint(428, 113), //blood
               intToPoint(100, 115), //air
               intToPoint(145, 112), //water
               intToPoint(191, 113), //earth
               intToPoint(239, 113), //fire
               intToPoint(144, 161), //nature
               intToPoint(191, 160)  //law

              ];

      trade := DTMFromString('78DA638C636460600262342002C4305146901' +
           'A56026A12812C76026A9230CD890A754255130F64311350930564' +
           'FD67C06F572611EEC9C6548361570E11EEC921220C2712A166129' +
           '0C542C02E901A3622CC21E4AFA9401617013553802C4EDC76FD07' +
           '0200DC0E14C5');

      nocoins := DTMFromString('78DA8D91310A8430104593EBBA6027082E081' +
           '60A76961612040B41502C3C8EBA0ADEC358D82DFC97E217E131F3' +
           '66C67E8C31AB35FFDEFB6B031F8760421F276036C1443E76C1C43' +
           'E7E8249C05C5FE093029F0CCC9E833A25F02940AF12DCEB612EC1' +
           '54C0B9067BAE81730B6EEA40AF06387790513E0364D44D7BC038B' +
           '0C319EC6782CC0E7A1146398F805934730367AE31B4');

      name := DTMFromString('78DA632C60606038C8C8800AFE83499828631' +
           'E903882A94604590DC89C6304D454E2378709449703895304D494' +
           '02899304D4D461F7178A9A1A207194809A5A207198809A0622D4B' +
           '412A1A69D08356DF8C319ACA68B08BF83D4EC25229C0F11505386' +
           'DFAEFF4000001F302BAF');

       teleport := DTMFromString('78DA633CCCC0C060C3C8800EB8801826CA780' +
           '448981350730C481813618E0901354731D544853A61AAB126A0E6' +
           '0C90B02260D75922FC7E92483584C2E71490B020E0E6E344F8EB2' +
           '590B02460D73322EC7A4184BF5E62AAC130E72D11E1FC0ED3CD18' +
           'E6BC27C2CDEF8808E76B44AA2164D70D22C2F926A6DF31CCB9893' +
           'F9CFF0301007F10291F');
           
       storeTxt := DTMFromString('78DA633466606028644001FFFFFF07D38C503' +
           'E23484D3E0135E640A280012B403187909A6822D4C460BA07434D' +
           '1CA639E86E0600C4160DFA');
           
       noPickaxe := DTMFromString('78DA631462606068656440075C400C12FD0F0' +
           '48C2240461F6E3520C02886DF1CB01A2F20D149841A4276F90289' +
           '1E026A8E1361CE2120D14D40CD4122DC7C8408357B89704F01116' +
           'A8E61AAB9767A29AA9AB598EEB9771C4DCD124CBF9F3B3C0725DE' +
           '016F991F0C');
       
       shopMM  := DTMFromString('78DA630C626260E86100035608C5F07C12038' +
           '306906604E2FF40C0188950C3C2800022503520C0E84D580D0075' +
           '880879');
       
       BankMM := DTMFromString('78DA63CC676260C86100032E08C5F0FEBE178' +
           '332906604E2FF40C0580654930D916381AA61E061601081AA0101' +
           'C60CC26A00AD420925');

       BankText := DTMFromString('78DA6334656060D06640011CF7AF318800694' +
           '620FE0F048C9608352C58D48000A33D90D027A0C6890835EE44A8' +
           'F126428D3F116EB600123AA86A04800A50D40462AAE1104055030' +
           '0FFB31538');
           
       AuburyText := DTMFromString('78DA8D91CD0AC230108437C543110F7927D1F' +
           'A8BBEB3500F422F5541A1050F5AF1152AEAFA73C9CECA269710E6' +
           '6366B3E37609519F3E27F95E546C88BA7CBBDFDBBD9941C8A41D8' +
           '5190926154CC9CAC4C8DAB232337C8EAC4C43C6F7047360250B99' +
           '7C25982A82A99181796AFC173027DC4FBE5698A1B19FB3E22367B' +
           'E2003FBB946F8DC58191BBD37117D35D85721FFDE6216ECE7AEF4' +
           'EE7DC83C589987CCBEF4E8B388C85A1A592DF6A56665FF7D9E7C5' +
           'E41B23900');
           
       PortalMM := DTMFromString('78DA63F4636260C8674001E74239187481342' +
           '394CFE809549343849A22DC6AFE03010071550A3E');

           
       EssHill := DTMFromString('78DA63DCCBC0C03083010C982014434B6D358' +
           '308906684F21977008949A86AAA0BB351D56C0512B351D52C9D36' +
           '0555CD6E20B11055CD94AE1E54358780C40274BB8A51D51C03123' +
           '351D5448506A1AA390A2426A3AA31343044557310484CC06DCE7F' +
           '2000006E7F19B1');
       Ess := DTMFromString('78DA635CC0C4C0C0C0C8800CA222A318F8914' +
           '4191702D5FC4251C2505D588CAA66361673028350D5CC00AAE144' +
           '5563696189AA6609500D07AA9A205F2F5435AB806AFEA3BAA7383' +
           '31B55CD72A09A1FA86A7A9A5A50D54C07AAF9CB80DFEFB331FD8E' +
           '61D73CA01A6E54373BD95862BA8705554D32BA5D73806A9808F87' +
           'D11A61A0C3783D4FC437573766232A65D5F193000869BF918F1AB' +
           '990454C34A40CD1AA09A3FB8EDFA0F04002D4427C7');
    end;

    function loggedIn() : boolean;
    begin
         Result := similarColors(getColor(536, 103), 3951443, 10);
         status('Logged in - '+booltostr(Result));
    end;

    procedure Click(x , y : Integer; Left : Boolean);
    var mx, my : integer;
    begin
         GetMousepos(mx, my);
         if ((x <> mx) or (y <> my)) then
         begin
             repeat
                   MoveMouseSmooth(x, y);
                   wait(1);
                   GetMousepos(mx, my);
             until((x = mx) and (y = my));
         end;
         wait(10);
         HoldMouse(x, y, Left);
         wait(random(50)+50);
         ReleaseMouse(x, y, Left);
    end;

    procedure mMove(x , y : Integer);
    var mx, my : integer;
    begin
          repeat
              MoveMouseSmooth(x, y);
              wait(1);
              GetMousepos(mx, my);
          until((x = mx) and (y = my));
    end;

    procedure mFlag();
    var x, y, f : integer;
    begin
              Wait(500);
              F := GetSystemTime();
              repeat
                    wait(10);
                    Status('Waiting for Flag');
              until (not findcolor(x, y, 255, 555, 33, 701, 185)) or (getSystemTime - F > 30000);
              Status('Flag ended');
    end;

    function isSpecCol(col: integer): boolean;
    begin
      case col of
        1310462: result := true;    //NPCs
        982782: result := true;
        195836: result := true;
        62965: result := true;
        56797: result := true;
        60909: result := true;
        52428: result := true;      //End of NPCs
        16711422: result := true;   //Players
        15527148: result := true;
        13816530: result := true;
        14869218: result := true;
        12961221: result := true;   //End of Players
        3553023: result := true;    //Drops
        789758: result := true;
        2105598: result := true;
        395004: result := true;
        233: result := true;
        241: result := true;
        206: result := true;
        217: result := true;
        188: result := true;        //End of Drops
        16777215: result := true;   //Your player
        65536: result := true;      //Bottom of drop dots
        255: result := true;        //Flag
        284358: result := true;
        1127261: result := true;    //End of flag
      end;
    end;
    //dan cardin or danrox 2006
    function isMoving: boolean;
    var
      NumOfPoints: integer;
      numDone: integer;
      Points: array of record
                x, y, color: integer;
              end;
      x, y: integer;
      color: integer;
      i: integer;
    begin
      NumOfPoints := 20;
      numDone := 0;
      setLength(points, NumOfPoints);
      repeat
        wait(1);
        x := random(MMX2 - MMX1) + MMX1;
        y := random(MMY2 - MMY1) + MMY1;
        if distance(x, y, MMCX, MMCY) > 72 then
          continue;
        color := getColor(x, y);
        if(isSpecCol(color)) then
          continue;
        points[numDone].x := x;
        points[numDone].y := y;
        points[numDone].color := color;
        numDone := numDone + 1;
        if(numDone = NumOfPoints) then
          break;
      until(false)
      wait(100);
      for i := 0 to NumOfPoints - 1 do
      begin
        wait(1);
        color := getColor(points[i].x, points[i].y);
        if(color <> points[i].color) then
        begin
          if(not isSpecCol(color)) then
          begin
            result := true;
            exit;
          end;
        end;
      end;
    end;

    function mIsUpText(text : string) : boolean;
    var x, y : integer;
    begin
         wait(100);
         Result := (findcolortolerance(x, y, 56286, 0, 0, 300, 60, 35) or
                   findcolortolerance(x, y, 13555472, 0, 0, 300, 60, 35)) and
                   (not findcolortolerance(x, y, 53000, 0, 0, 300, 60, 30));
        // writeln(booltostr(Result));
    end;

    procedure Terminate;
    begin
        PlaySound(ScriptPath+'/4.wav');
        TerminateScript;
    end;

    procedure autorespond;
    var x, y : integer;
    var t : string;
    begin
         if not LoggedIn then Exit;
         if ((getSystemTime - RespondTime) < 15000) and(RespondTime > 0) then
         begin
            status('Skipping autorespond');
            exit;
         end;
         status('Looking for name mask to autorespond');
         //exit;// doesnt work since every name needs its own maskcode
         //writeln(booltostr(findDtm(name, x, y, 13, 375, 497, 487))+' - '+booltostr(rt = 0));
        if findDtm(name, x, y, 13, 375, 497, 487) then
        begin
            case random(10) of
               0 : t := '?';
               1 : t := '???';
               2 : t := 'poland?';
               3 : t := 'jes dobre?';
               4 : t := 'pl';
               5 : t := 'nop';
               6 : t := 'hello';
               7 : t := 'pl?';
               8 : t := ':D';
               9 : t := 'nah';
            end;
            writeln('Name mask came up, lets say: '+t);
            sendKeysWait(t+chr(13), 10, 100);
            inc(responded);
            RespondTime := getSystemTime;
        end;
    end;

    function BankOpen : boolean; forward;

    procedure Inv();
    begin
       if similarColors(getColor(634, 206), 7638426, 10) and not BankOpen then
       begin
          Click(648, 214, true);
          wait(500);
       end;
    end;

    function InvCount : integer;
    var i, j, x, y, isx1, isy1, isx2, isy2, c : integer;
    begin
         Inv();
         for i := 0 to 3 do
             for j := 0 to 6 do
             begin
                  isx1 := 570 + (i * 41);
                  isy1 := 240 + (j * 36);
                  isx2 := 570 + ((i + 1) * 41);
                  isy2 := 240 + ((j + 1) * 36);
                  //mMove((isx1 + isx2) / 2, (isy1 + isy2) / 2);
                  //wait(500);
                  if FindColor(x, y, 0, isx1, isy1, isx2, isy2) then inc(C);
             end;
         //writeln(inttostr(c));
         result := C;
    end;

    function mInvFull() : boolean;
    begin
         Result := InvCount = 28;
    end;

    function MFindObj(var x, y : integer; Color, textDTM, Tol, Fails : integer) : boolean;
    var tx, ty, F : integer;
    begin
      repeat
            x := random(516);
            y := random(365);
            if FindColorSpiralTolerance(x, y, Color, msx1, msy1, msx2, msy2, Tol) then
            begin
                 mMove(x, y);
                 if(textDTM > 0) then
                 begin
                      Result := FindDTM(textDTM, tx, ty, 6, 34, 515, 364);
                 end else Result:= mIsUpText('...');
            end;
            wait(100);
            inc(F);
      until (F = Fails) Or (Result);
    end;

    function atEssMine : boolean;
    var C : integer;
    begin
        C :=  CountColorTolerance(0, mmx1, mmy1, mmx2, mmy2, 2);
        Result := C > 10000;
        if Debug then writeln('At mine - '+booltostr(Result)+' ('+inttostr(C)+')');
    end;

    Function DebugTPA(Points: TPointArray; BmpName: String): Boolean;//wizzup

    Var
       Width, Height, ClientBMP, I : Integer;
       xs, ys, xe, ye: Integer;

    Begin
      Try
      Begin
        xe := xs xor xs;
        ye := ys xor ys;
        xs := 1 shl 20;
        ys := 1 shl 20;

        For I := 0 To High(Points) Do
        Begin
          xs := Min(xs, Points[i].X);
          ys := Min(ys, Points[i].Y);

          xe := Max(xe, Points[i].X);
          ye := Max(ye, Points[i].Y);
        End;

        Width := xe - xs;
        Height := ye - ys;

        DisplayDebugImgWindow(0, 0);
        DisplayDebugImgWindow(Width, Height);
        ClientBMP := BitmapFromString(Width, Height, '');

        CopyClientToBitmap(ClientBMP, xs, ys, xe, ye);
        For I := 0 To High(Points) Do
          FastSetPixel(ClientBMP, Points[i].X - xs, Points[i].Y - ys, 255);
        If BmpName <> '' Then
          SaveBitmap(ClientBMP, ScriptPath + BmpName + '.bmp');
        SafeDrawBitmap(ClientBMP, GetDebugCanvas, 0, 0);
        DisplayDebugImgWindow(Width, Height);

        FreeBitmap(ClientBMP);
      End
      Except
        FreeBitmap(ClientBMP);
      End;
      Result := True;
    End;

    function FindBank(var x, y : integer) : boolean;
    var TPA : TPointArray;
        ATPA : T2DPointArray;
        MinLength : integer;
        p : string;
        B : TBox;
    begin
       MinLength := 5
       FindColorsTolerance(TPA, BankTrees, MmX1, MmY1, MmX2, MmY2, 0);
       TPA := RemoveDistTPointArray( MMCX, MMCY, 73, TPA, true);
       if(Length(TPA) >= MinLength) then
       begin
         ATPA := SplitTPAEx(TPA, 65, 40);
         SortATPASize(ATPA, True);
         TPA := ATPA[0];
         if(Length(TPA) >= MinLength) then
         begin
              if Debug then
              begin
                  DebugTPA(TPA, 'banktrees');
                  wait(500);
              end;
              B := GetTPABounds(TPA);
              FindColorsTolerance(TPA, 7565691, B.X1 - 5, B.Y1 - 10, B.X2 + 5, B.Y2 + 5, 60);
              TPA := RemoveDistTPointArray( MMCX, MMCY, 73, TPA, true);
              if(Length(TPA) > 500) then
              begin
                if Debug then DebugTPA(TPA, 'bank');
                MiddleTPAEx(TPA, x, y);
                y := y - 7;
                //mmove(x, y -7)
                Result := True;
              end;
         end;
       end;
       if Length(TPA) > 0 then p := ' ('+inttostr(Length(TPA))+')';
       if Debug then writeln('FindBank - '+booltostr(result) + p);
    end;

    function AutoColorShopFloor : integer;
    var x, y, i, Temp, F, T, ax, ay : integer;
    begin
         F := GetSystemTime();
         writeln('Trying to autocolor shopfloor');
         repeat
           wait(100);
           if (FindDTM(ShopMM, x, y, MMX1, MMY1, MMX2, MMY2)) then
           begin
               if(Distance(x, y, MMCX, MMCY)) > 65 then exit;
               repeat
                   ax := x;
                   ay := y;
                   i := 0;
                   Inc(T);
                   status('Shop icon found! Starting autocoloring..');
                   repeat
                      Inc(i);
                      case T of
                          1: ay := ay + 1;
                          2: ax := ax - 1;
                          3: ax := ax + 1;
                          4: ay := ay - 1;
                      end;
                      if (Distance(MMCX, MMCY, ax, ay) > 74) then Break;
                      wait(5);
                      Temp := getColor(ax, ay);
                      mmove(ax, ay);
                      if SimilarColors(Temp, 3756387, 50) then
                      begin
                         Result := Temp;
                         writeln('Shop floor color = '+inttostr(Result));
                         status('Autocoloring successful!');
                         Exit;
                      end;
                   until (i = 20);
               until (getSystemTime() - F > 15000)
           end else status('Can''t find shopicon');
         until (getSystemTime() - F > 15000);
    end;

    function FindShop(var x, y : integer) : boolean;
    var TPA : TPointArray;
        ATPA : T2DPointArray;
        MinLength : integer;
        p : string;
    begin
       //if(ShopFloor = 0) then ShopFloor := AutoColorShopFloor;
       //if(ShopFloor = 0) then Exit;
       ShopFloor := Shop;
       MinLength := 90
       FindColorsTolerance(TPA, ShopFloor, MMX1, 90, MMX2, MMY2, 10);
       TPA := RemoveDistTPointArray( MMCX, MMCY, 73, TPA, true);
       if(Length(TPA) >= MinLength) then
       begin
         ATPA := SplitTPAEx(TPA, 20, 10);
         SortATPASize(ATPA, True);
         TPA := ATPA[0];
         if(Length(TPA) >= MinLength) then
         begin
              if Debug then DebugTPA(TPA, 'shop');
              MiddleTPAEx(TPA, x, y);
              Result := True;
         end;
       end;
       if Length(TPA) > 0 then p := ' ('+inttostr(Length(TPA))+')';
       if Debug then writeln('FindShop - '+booltostr(result) + p);
    end;

    function atShop : boolean;
    var x, y : integer;
    begin
        Result := FindShop(x, y) and (Distance(x, y, MMCX, MMCY) < 15)
        if Debug then writeln('At shop - '+booltostr(result));
    end;


    function atBank : boolean;
    var x, y : integer;
    begin
        Result := FindBank(x, y) and (Distance(x, y, MMCX, MMCY) < 20)
        if Debug then writeln('At bank - '+booltostr(result));
    end;

    procedure SetRun; forward;

    Function toShop() : boolean;
    var x, y, dx, dy, F, TSF, dd : integer;
    begin
         if not LoggedIn then Exit;
         
         if not shopCalibrate then
            if AtShop then Exit;
           
         ShopCalibrate := false;
           
         Writeln('Going to Shop');
         
         repeat
               if AtBank and FindBank(x, y) then
               begin
                   Writeln('Click to shop based on bankhouse location');
                   Click(x + 20, y + 42, true); //from bank
                   Status('On move..');
                   SetRun;
                   TSF := getSystemTime();
                   repeat
                         wait(10);
                         if findBank(dx, dy) then
                         begin
                            dd := distance(MMCX, MMCY, dx+20, dy+42);
                            status('Distance to destination - '+inttostr(dd));
                            if dd <= 15 then Break;
                         end;
                   until (GetSystemTime()-TSF > 20000) (*or (not IsMoving) and (not findcolor(x, y, 255, 555, 33, 701, 185))*);
                   mFlag;
                   Status('Stopped');
               end;

               if FindShop(x, y) then
               begin
                    Writeln('Shop found *click*');
                    click(x, y, true);
                    mFlag;
                    //Wait(500);
                    Result := AtShop;
                    if Result then Break;
               end;
               inc(F);
               Wait(1000);
         until (F = 30);
         if not Result then begin
            writeln('Could not find way to shop') ;
            Terminate;
         end else writeln('Arrived at shop');
    end;

    Function toBank() : boolean;
    var x, y, F : integer;
    begin
         if not LoggedIn then Exit;

         if not BankCalibrate then if AtBank then Exit;
         BankCalibrate := false;

         Writeln('Going to bank');

         repeat
               if AtShop and FindShop(x, y) then
               begin
                    Writeln('Click to bank based on shop location');
                    MMove(x + 23, y - 42);
                    wait(50+random(50));
                    Click(x + 23, y - 42, true); //from shop
                    mFlag;
                    wait(500);
               end;
               if FindBank(x, y) then
               begin
                    Writeln('Bankhouse found *click*');
                    click(x, y, true);
                    wait(2000);
                    mFlag;
                    Wait(500);
                    Result := AtBank;
                    if Result then Break;
               end;
               inc(F);
               wait(1000);
         until (F = 60);
         if not Result then begin
            writeln('Could not find way to bank') ;
            Terminate;
         end else writeln('Arrived at Bank');
    end;

    procedure Store();
    var x, y, c, rx, ry, dx, dy : integer;
        b : boolean;
    begin
      if not LoggedIn then Exit;
      C := InvCount();
      if runes then C := C - (length(p) + 1);
      incEx(essmined,  C);
      while ((FindColor(rx, ry, 0, 569, 239, 729, 490) and (Runes = False)) or FindDTM(Ess, dx, dy, 569, 239, 729, 493)) do
      begin
          //writeln(inttostr(dx)+', '+inttostr(dy)+' : '+inttostr(rx)+', '+inttostr(ry));
          if (rx + ry > 0) and (Runes = False) then
          begin  x := rx; y := ry; end
          else if( dx + dy > 0) then
          begin  x := dx; y := dy; end;
         
          Click(x, y, false);
          wait(100);
         
          rx := 0; ry := 0 dx := 0; dy := 0;
         
          if FindDtm(StoreTxt, x, y, 550, 279, 735, 491) then
          begin
               Click(x, y, true);
               wait(1000);
               b := true;
          end else mMove(random(600), random(400));
      end;
      if b then
      begin
           writeln('Stored some stuff at bank');
      end;
    end;

    function BankOpen : boolean;
    begin
         Result := similarColors(getColor(189, 65), 2070783, 10);
    end;

    procedure Bank;
    var x, y, F, BF : integer;
    begin
      if not LoggedIn then Exit;
      repeat
            Writeln('Looking for banker')
            if mFindObj(x, y, BankBooth, BankText, 10, 10) then
            begin
                 Writeln('BankBooth found!');
                 wait(300);
                 Click(x, y, true);
                 mFlag;
                 BF := 0;
                 repeat
                       if BankOpen then //bank booth open
                       begin
                           Writeln('Bank opened');
                           wait(100);
                           Store();
                           Exit;
                       end;
                       wait(100);
                       Inc(BF)
                 until (BF = 20)
            end;
            wait(1000);
            inc(F);
            Writeln('Bank booth hard to find, calibrating..');
            BankCalibrate := true;
            toBank();
      until (F = 10);
    end;

    function moneyError : boolean; forward;

    procedure Buy(x, y : integer);
    var F : integer;
    begin
        repeat
              inc(F);
              //wait(100);
              click(x, y, false);
              //wait(100);
              click(x, y + 85, true);
             // writeln(inttostr(CountColorTolerance(65535, x-20, y-20, x, y, 5)));
        until (F=100) or (MoneyError) or (CountColorTolerance(65535, x-20, y-20, x, y, 5) <= 20);
    end;

    function shopopen : boolean;
    begin
        Result := similarcolors(getColor(231, 62), 1612543, 2);
        //writeln(booltostr(result));
    end;

    function closeShop: boolean;
    var F : integer;
    begin
         if not ShopOpen then Exit;
         Click(452, 68, true);
         repeat
           Inc(F);
           Wait(100);
         until(not ShopOpen) or (F = 100);
         if F = 100 then CloseShop;
         Result := not ShopOpen;
    end;

    function OpenShop() : boolean;
    var x, y, F, SF : integer;
    begin
         if ShopOpen then
         begin
             Result := true;
             exit;
         end;
      repeat
            x := random(516);
            y := random(365);
            if FindColorSpiralTolerance(x, y, Aubury, 9, 34, 516, 365, 5) then
            mMove(x, y);
            if mIsUpText('Aubury') then
            begin
                 Click(x, y, false);
                 wait(300);
               if FindDTM(trade, x, y, 6, 34, 515, 364) then
               begin
                    Click(x, y, true);
                    wait(1000);
                    SF := 0;
                    repeat
                      wait(100);
                      inc(SF);
                      if ShopOpen then
                      begin
                           wait(100);
                           Result := True;
                           Exit;
                      end;
                    until SF = 50;
               end else mMove(random(600), random(400));
            end;
            wait(100);
            inc(F);
      until (F = 300);
    end;

    function TeleToMine() : boolean;
    var x, y, F, TF, WF : integer;
    begin
         if not LoggedIn then Exit;
         writeln('Trying to find Aubury..')
      repeat
            x := random(516);
            y := random(365);
            if MFindObj(x, y, Aubury, 0{AuburyText}, 10, 10) then
            begin
                 writeln('Aubury found');
                 Click(x, y, false);
                 wait(300);
               if FindDTM(teleport, x, y, 6, 34, 515, 364) then
               begin
                    wait(100);
                    Click(x + 30, y - 5, true);
                    WF := 0;
                    repeat
                          wait(100);
                          if(getColor(206, 392) = 8650752) then
                          begin
                               mMove(251, 425);
                               Click(251, 425, true);
                               writeln('Teleporting to Mine');
                               wait(2000);
                               TF := 0;
                               repeat
                                    wait(100);
                                    inc(TF);
                                    Result := AtEssMine;
                               until (Result) or (TF = 50)
                          end;
                          Inc(WF);
                    until (Result) or (WF = 30)

               end else mMove(random(600), random(400));
            end;
            if not Result then Result := AtEssMine;
            if (F >= 5) and (F mod 5 = 0) and (not Result) then
            begin
                 Writeln('Aubury hard to find, calibrating..');
                 ShopCalibrate := true;
                 toShop();
            end;
            inc(F);
            wait(200);
      until (F = 30) or (Result);
      if not Result then
      begin
           writeln('Could not find Aubury');
           Terminate;
      end;
    end;

    Function TeleToShop() : boolean;
    var x, y, F, TF : integer;
    begin
         if not LoggedIn then Exit;
         if not AtEssMine then Exit;
         Writeln('Looking for portal');
         repeat
               if FindDtm(PortalMM, x, y, mmx1, mmy1, mmx2, mmy2) and (distance(MMCX, MMCY, x, y) > 15) then
               begin
                    writeln('PortalMM found *click*');
                    click(x, y, true);
                    mFlag;
                    Wait(500);
               end else writeln('PortalMM not found');
               //if FindDtm(PortalMM, x, y, mmx1, mmy1, mmx2, mmy2) and (Distance(x, y, MMCX, MMCY) < 15) then
                 if MFindObj(x, y, Portal, 0, 10, 10) then
                 begin
                    click(x, y, true);
                    writeln('Teleporting to shop');
                    mFlag();
                    Wait(1000);
                    TF := 0;
                    repeat
                          wait(100);
                          inc(TF);
                          Result := FindShop(x, y);
                    until(Result) or (TF = 50)
                 end;
                 
               if not Result then Result := FindShop(x, y);
               inc(F);
               wait(100);
         until (F = 60) or (Result) or (not LoggedIn);
         if not Result then begin
            writeln('Could not find way out from mine') ;
            Terminate;
         end;
    end;

    function Mine() : boolean;
    var F, x, y : integer;
    begin
         if not AtEssMine or not LoggedIn then Exit;
         EssCount :=  InvCount();
         if (EssCount > EssCountLast) and
            (similarColors(getColor(508, 480), 1582121, 10)){no new level message, blocks reading chat} then
            begin
                 GF := 0;
                 EssCountLast := EssCount;
                 wait(400);
                 Status(inttostr(28 - EssCount) + ' more to go');
                 wait(600);
                 Exit;
            end;
        repeat
            if FindDTM(EssHill, x, y, msx1, msy1, msx2, msy2) then
            begin
                 mMove(x, y);
                 wait(100);
                 if mIsUpText('...') then
                 begin
                     GF := 0;
                     Result := true;
                     EssCountLast := InvCount();
                     Click(x, y, True);
                     Status('Mining...');
                     wait(2000);
                 end;
            end;
            Inc(F);
            wait(500);
      until (F = 10) or (Result);
      if (not Result) then inc(GF);
    end;


    function PickaxeError : boolean;
    var x, y : integer;
    begin
        result := findDtm(nopickaxe, x, y, 13, 375, 497, 487);
        if Result then writeln('We dont have pickaxe :(') ;
    end;

    function moneyError : boolean;
    var x, y : integer;
    begin
        Result := FindDtm(nocoins, x, y, 13, 375, 497, 487);
    end;

    procedure SetRun;
    begin
        if SimilarColors(getColor(719, 139), 10860221, 10) then
        begin
            Click(712, 512, true);
            wait(300);
            if(not similarColors(getColor(628, 287), 2698372, 30)) then
            begin
              wait(300);
              Click(628, 296, true);
            end;
            Inv();
        end;
    end;

    function isNorth : boolean;
    begin
        Result := (getColor(533, 50) = 527516) and
                  (getColor(547, 63) = 527516) and
                  (getColor(561, 49) = 527516);
    end;

    procedure SetNorth;
    var TPA : TPointArray;
        x, y : integer;
        k : byte;
        F : LongInt;
    begin
         if not LoggedIn or isNorth then Exit;
         SendArrowWait(0, 1000);
         repeat
           FindColorsTolerance(TPA, 11866120, 536, 42, 559, 61, 40);
           MiddleTPAEx(TPA, x, y);
           if(x >= 547) then k := VK_Right else k := VK_Left;
           KeyDown(k);
           F := getSystemTime;
           repeat
             if isNorth then break;
             wait(10);
           until (GetSystemTime - F > 10000);
           KeyUp(k);
           wait(500);
         until (isNorth) or (not LoggedIn);
    end;

    procedure Proggy;
    var H, M, S: Integer;
    begin
        ClearReport;
        ClearDebug;
        ConvertTime(GetTimeRunning(), H, M, S);
        AddToReport('------ '+IntToStr(H)+' H '+IntToStr(M)+' min '+IntToStr(S)+' s ------');
        AddToReport('------ Banked ~'+inttostr(essmined)+' ess ------');
        AddToReport('------ Responded: ~'+inttostr(responded)+' ------');
    end;

    var i, j : integer;

    begin
         load();
         ActivateClient;
         Wait(1000);
         t := getSystemTime();
         runes := BuyRunes;
         SetNorth;
         repeat
                if AtBank and mInvFull then
                begin
                   Bank;
                end;
               
                Proggy;
                Autorespond();
                if not atEssMine then
                begin
                     ToShop;
                     Autorespond();
                     if (Runes = true) and (not mInvFull) then
                     if OpenShop then
                     begin
                       for j := 1 to 1 do
                       for i := 0 to high(p) do
                       begin
                         wait(200);
                         Buy(p[i].x, p[i].y);
                         if(MoneyError) then
                         begin
                            runes := false;
                            writeln('We''re out of money :(')
                            break;
                         end;
                       end;
                       CloseShop;
                       Autorespond();
                     end;
                     TeleToMine;
                end;
               
                writeln('Going to fill bag with rune essence')
                EssCount := 0;
                EssCountLast := 0;
                repeat
               
                      Mine();
                      Autorespond();
                     
                      if PickAxeError then Terminate;

                      if (mInvFull) then
                      begin
                          writeln('Inventory full, back to bank');
                          break;
                      end;
                     
                      if (GF = 3) then
                      begin
                          writeln('Didn''t find any rune ess to mine :(');
                          break;
                      end;
                     
                      Wait(100);
                     
                until (not LoggedIn);
               
                TeleToShop;
                Autorespond();
                if mInvFull then ToBank;
                Autorespond();

         until (not loggedIn);
         Terminate;
    end.

    lol. Thats my script.

    Anybody helpful, please don't waste your time making in compatible with simba. It's old version, I have newer version somewhere..

    Still need scar..

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
  •