Results 1 to 16 of 16

Thread: [SRL][OSRS] Slacky's Runecrafter

  1. #1
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default [SRL][OSRS] Slacky's Runecrafter

    So, I wanted to get m RC level up.. And the best way to do that is to write a runecrafting bot, plus I had never written one, so there's that. Runs on the official client, does not use SMART, so it will take over your mouse.
    It has some on screen debugging, can be enabled by removing the dot `.` in the line `{.$I WindowOverlay/WindowOverlay.simba}`, keep in mind that this requires Olly's WindowOverlay.

    It probably lacks some security checks to ensure that everything goes as planned, so it could fail, but for the most part it's been running smoothly for me, but probably wont get the longest runtime. Be sure to have version 1.04 or later compatible version of RSWalker, since we need the alters map, and some other new stuff..

    Requirements:
    1. Follow normal procedures for setting up Simba if you haven't.
    2. Get the Simba 1.2RC-fixes found in my signature, place it inside your Simba folder and use that.
    3. Get the latest SRL from Github.
    4. Get RSWalker version 1.05 or later compatible version from Github.
    5. Alternatively: Grab WindowOverlay 1.01 or 1.02.

    Extract the last threee in the correct folders: That is inside Simba/Include/ folder.

    Features:
    • It supports five locations: Air altar, Mind altar, Water altar, Earth altar and Fire altar
    • You can start the bot just about anywhere "normal" (not a dungeon), it will find, or try to find it's path to whatever location.
    • Break-handling (between 5 min and 7 hours)
    • A number of Antiban measures, but could be better for the task.
    • Feels fatigue - Slows down the bot - Recharges with breaks

    Notes:
    • The XP counter will most likely be thrown off if you hit a new multiple while running the bot.
    • Only works with a tiara, so be sure to equip that before you start the bot.


    Simba Code:
    program Runecrafter_V004;
    {$I SRL/OSR.simba}
    {$I SRL/utils/rsclient.simba}
    {$I SRL/utils/rsclient_overrides.simba}
    {$I SRL/utils/slackdebug.simba}
    {$I RSWalker/Walker.simba}
    {.$I WindowOverlay/WindowOverlay.simba}
    {$H-}
    {==============================================================================]
    | Slacky's Runecrafter
    |
    | Steps to use:
    |   1. Declare user details bellow, set which Altar, and bankslot for essence.
    |   2. Start the script wherever
    |
    | Any issues starting it: Re-target RS, and try again, may help if you log in
    | manually before starting it at first.
    [==============================================================================}

    type
      ERuneAltar = (AirAltar, MindAltar, WaterAltar, EarthAltar, FireAltar);

    const
      LOGIN_NAME = '';
      LOGIN_PASS = '';
      RS_WORLD   = -1;           // preferred world, -1 = random world
      IS_MEMBER  = FALSE;        // TRUE or FALSE

      RUN_ALTAR  = FireAltar;   // Which altar?
      BANK_SLOT  = 0;           // Where's the essence?

    type
      TAltarLocations = record
        BankLocation: TPoint;
        BankerType: EBankLocation;

        RuinsWalkTo: TPoint;
        RuinsMiddle: TPoint;
        AltarPortal: TPoint;
        AltarMiddle: TPoint;
      end;

      TStatistics = record
        Count: Int32;
        StartInfo: TSkillInfo;
        PrcToNextLvl, Rem, CurrLvl, CurrXP, Gains, XPPer: Double;
        DismissedRandoms: Int32;
      end;

      TRunecrafter = record
        BotStats: TStatistics;
        StatsDebugTick: Int64;

        Antiban: TAntiban;
        Altar: TAltarLocations;
      end;

    var
      Bot: TRunecrafter;
      RSW: TRSWalker;
      RSWAltars: TRSWalker;

      {$ifdecl TWindowOverlay}
      Overlay: TWindowOverlay;
      Debug: TMufasaBitmap;
      {$endif}


    // -----------------------------------------------------------------------------
    // -----------------------------------------------------------------------------
    // OVERRIDES AND METHODS FOR FATIGUE

    procedure Wait(min, max:Double; weight:EWaitDir=wdMean); override;
    var t: Double;
    begin
      t := PerformanceTimer();
      inherited(min, max, weight);
      Bot.Antiban.WaitFatigue(PerformanceTimer()-t);
    end;

    procedure WaitEx(mean, dev:Double); override;
    var t: Double;
    begin
      t := PerformanceTimer();
      inherited(mean, dev);
      Bot.Antiban.WaitFatigue(PerformanceTimer()-t);
    end;


    // -----------------------------------------------------------------------------
    // -----------------------------------------------------------------------------
    // FISHER
    procedure TRunecrafter.DeclarePlayers();
    begin
      with Players.New()^ do
      begin
        LoginName  := LOGIN_NAME;
        Password   := LOGIN_PASS;
        IsActive   := True;
        IsMember   := IS_MEMBER;
        World      := RS_WORLD;
      end;
      Players.SetCurrent(0);
    end;

    procedure TRunecrafter.DoAntiban();
    begin
      srl.DismissRandom();
      if Self.Antiban.DoAntiban() then
        Players.GetCurrent()^.Login(); // if we got logged out, and not logged back in
    end;

    procedure TRunecrafter.PostAction(AntiBan:Boolean=True);
    begin
      Wait(250,2000, wdLeft);
      Self.Antiban.WaitFatigue(Random(700,1200));

      if AntiBan then Self.DoAntiban;
    end;


    procedure TRunecrafter.ProcessWhileWaiting();
    var
      n,atNextLvl,atCurrLvl:Int32;
    begin
      BotStats.Gains := BotStats.Count * BotStats.XPPer;
      BotStats.CurrXP  := BotStats.StartInfo.XP + BotStats.Gains;
      BotStats.CurrLvl := srl.GetLevelAtXP(Ceil(BotStats.CurrXP));
      atNextLvl := srl.GetXPAtLevel(Trunc(BotStats.CurrLvl)+1);
      atCurrLvl := srl.GetXPAtLevel(Trunc(BotStats.CurrLvl));
      BotStats.Rem := atNextLvl - BotStats.CurrXP;
      BotStats.PrcToNextLvl := 100 - Round((BotStats.Rem / (atNextLvl - atCurrLvl)) * 100);

      if GetTickCount() - StatsDebugTick > 2000 then
      begin
        ClearDebug();
        WriteLn('+---| STATS |----------------------------------------');
        WriteLn('|- Runes Made          : ', BotStats.Count);
        WriteLn('|- Experience Gained   : ', Round(BotStats.Gains,2));
        WriteLn('|- Experience Per Hour : ', Round(BotStats.Gains / (GetTimeRunning()/1000/60/60)) );
        WriteLn('|- Runecrafting Level  : ', Round(BotStats.CurrLvl,2));
        WriteLn('|- Dismissed Randoms   : ', BotStats.DismissedRandoms);
        WriteLn('|- Time Since Break    : ', SRL.MsToTime(Antiban.TimeSinceBreak, Time_Short));
        WriteLn('|- Energy Level        : ', Round(Antiban.EnergyLevel,2));
        WriteLn('|- Script Runtime      : ', SRL.MsToTime(GetTimeRunning, Time_Short));
        WriteLn('+----------------------------------------------------');

        {$ifdecl TWindowOverlay}
        Debug.DrawSkillReport([288,3], clProgBrown, Trunc(BotStats.CurrXP), Trunc(BotStats.Gains), BotStats.Count, 'Runecrafting');
        {$ENDIF}

        Self.StatsDebugTick := GetTickCount();
      end;
      Self.DoAntiban;
    end;

    function TRunecrafter.WalkGetRect(Loc: TPoint; Walker:TRSWalker; Height:Int32=0; UseWeb:Boolean=False): TRectangle;
    var
      me: TPoint := Walker.GetMyPos();
    begin
        Result := Walker.GetTileMSEx(me, Loc, Height);
        if (me.DistanceTo(loc) > 20) or (not MainScreen.GetBounds.Contains(Result.Bounds)) then
        begin
          if not UseWeb then
            Walker.WalkPath([Loc])
          else
            Walker.WebWalk(Loc,4,0.3);
          Result := Walker.GetTileMS(Loc, Height);
        end;
    end;

    function TRunecrafter.FindPortalNear(B: TBox): TRectangle;
    var
      TPA: TPointArray;
      ATPA: T2DPointArray;
    begin
      B.LimitTo(MainScreen.GetBounds);
      while Length(TPA) < 10 do
        TPA := SRL.GetPixelShiftTPA(B, 100, 4);
      ATPA := TPA.Cluster(3);
      ATPA.SortByMiddle(B.Middle);
      Result := ATPA[0].MinAreaRect;
      {$ifdecl TWindowOverlay}
      Debug.DrawTPA(ATPA[0], Random($FFFFFF));
      {$ENDIF}
    end;

    function TRunecrafter.EnterAltar(): Boolean;
    var
      rect: TRectangle;
      altarPoints: TPointArray;
    begin
      Self.WalkGetRect(Altar.RuinsWalkTo, RSW, 4, True);
      rect := RSW.GetTileMS(Altar.RuinsMiddle,4);
      Mouse.Move(rect, True);
      Wait(60,140);
      if MainScreen.IsUpText('Mysterious') then
        if not Mouse.Click(ctRed) then
          Exit(False);

      repeat
        Wait(60,120);
        Self.DoAntiban();
      until RSWAltars.GetMyPos.DistanceTo(Altar.AltarPortal) < 60;
      Wait(200,2000, wdLeft);

      for 0 to 3 do
      begin
        rect := Self.WalkGetRect(Altar.AltarMiddle, RSWAltars, 4);
        Mouse.Move(rect, True);
        Wait(30,500, wdLeft);
        if MainScreen.IsUpText('Altar') and Mouse.Click(ctRed) then
        begin
          repeat
            Wait(60,120);
            Self.DoAntiban();
          until (not Inventory.IsFull());

          Wait(500,1600, wdLeft);
          while srl.IsAnimating(MainScreen.GetPlayerBox, 900, 350, 3) do
            WaitEx(250,40);
          Break;
        end;
      end;
      Result := True;
      Self.PostAction();
    end;

    function TRunecrafter.Return(): Boolean;
    var
      me: TPoint;
      rect: TRectangle;
      t: TCountDown;
    begin
      for 0 to 3 do
      begin
        rect := Self.WalkGetRect(Altar.AltarPortal, RSWAltars);
        rect := Self.FindPortalNear(rect.Expand(18).Bounds);
        Mouse.Move(rect);
        Wait(30,500, wdLeft);
        if MainScreen.IsUpText(['Use ', 'Port']) then
        begin
          Mouse.Click(mouse_left);
          Result := True;
        end else
        begin
          Wait(400,4000,wdLeft);
          Continue;
        end;

        t.Init(Random(2700,3300));
        repeat
          Wait(120,220);
          Self.DoAntiban();
          if (RSW.GetMyPos.DistanceTo(Altar.RuinsMiddle) < 40) then
            Break(2);
        until t.IsFinished();

        {$ifdecl TWindowOverlay}
        Debug.Clear();
        {$ENDIF}
      end;

      {$ifdecl TWindowOverlay}
      Debug.Clear();
      {$ENDIF}
      Wait(100,1500, wdLeft);
      Self.PostAction();
    end;

    procedure TRunecrafter.DoBanking();
    begin
      RSW.WebWalk(Altar.BankLocation,4,0.3);

      for 0 to 3 do
        if BankScreen.Open(Altar.BankerType)
        then Break
        else Wait(100,400);

      if not BankScreen.IsOpen() then
        TerminateScript('The bank has failed us!');

      BankScreen.DepositAll();
      Wait(20,1000, wdLeft);
      if not BankScreen.Withdraw(BANK_SLOT, WITHDRAW_ALL, ['essence']) then
        TerminateScript('Cant withdraw item!');

      if Random() < 0.1 then
      begin
        Wait(20,1000, wdLeft);
        BankScreen.Close;
      end;

      Self.PostAction();
    end;


    // Runs the bot
    //
    procedure TRunecrafter.Run();
    var
      x: TSkillInfo;
    begin
      MainScreen.SetAngle(True);
      Self.BotStats.StartInfo := Stats.GetSkillInfo(SKILL_RUNECRAFTING);
      Self.ProcessWhileWaiting();

      while srl.IsLoggedIn() do
      begin
        if not Inventory.IsFull() then
        begin
          Self.BotStats.Count += srl.GetItemAmount(Inventory.GetSlotBox(0));
          if (Self.BotStats.XPPer <= 0) and (Self.BotStats.Count > 0) then
          begin
            x := Stats.GetSkillInfo(SKILL_RUNECRAFTING);
            Self.BotStats.XPPer := x.XP-BotStats.StartInfo.XP;
            Self.BotStats.XPPer := Self.BotStats.XPPer / Self.BotStats.Count;
          end;
          Self.DoBanking();
        end;
        Self.ProcessWhileWaiting();

        if not Self.EnterAltar() then
        begin
          Wait(600,2000, wdLeft);
          if not Self.EnterAltar() then
            TerminateScript('Failed to enter altar');
        end;
        Self.ProcessWhileWaiting();

        if not Self.Return() then
        begin
          Wait(600,2000, wdLeft);
          if not Self.Return() then
            TerminateScript('Failed to return from altar');
        end;

        Self.ProcessWhileWaiting();
      end;
    end;

    procedure TRunecrafter.WhileMoving(Sender: PRSWalker); static;
    begin
      Bot.DoAntiban();
    end;

    procedure TRunecrafter.SetupAntiban();
    begin
      Antiban.Init(SKILL_RUNECRAFTING, 4);

      Antiban.AddTask([@Antiban.LoseFocus,     ONE_MINUTE*6]);
      Antiban.AddTask([@Antiban.CheckSkill,    ONE_MINUTE*9]);
      Antiban.AddTask([@Antiban.CheckStats,    ONE_MINUTE*10]);
      Antiban.AddTask([@Antiban.OpenRandomTab, ONE_MINUTE*14]);
      Antiban.AddTask([@Antiban.HoverPlayers,  ONE_MINUTE*14]);
      Antiban.AddTask([@Antiban.VeryShortBreak,ONE_MINUTE*22]);
      Antiban.AddTask([@Antiban.RandomCompass, ONE_MINUTE*25]);
      Antiban.AddTask([@Antiban.DoMiscStuff,   ONE_MINUTE*27]);

      Antiban.AddBreak([01 * ONE_HOUR,   07 * ONE_MINUTE, 0.05, 0.25]);
      Antiban.AddBreak([04 * ONE_HOUR,   45 * ONE_MINUTE, 0.85, 0.15]);
      Antiban.AddBreak([17 * ONE_HOUR,   07 * ONE_HOUR,   0.99, 0.10]);
    end;

    procedure TRunecrafter.Init();
    begin
      {$ifdecl TWindowOverlay}
      Overlay := TWindowOverlay.Create();
      Overlay.PaintInterval(100);
      Debug := Overlay.ToMufasaBitmap();
      {$endif}

      RSW.Init('world.png');
      RSW.onMoveEvent := @Self.WhileMoving;
      RSWAltars.Init('Altars.png');
      RSWAltars.MemScanEnabled := False;

      self.DeclarePlayers();
      self.SetupAntiban();
      Players.GetCurrent()^.Login();

      case RUN_ALTAR of
        AirAltar:
          begin
            Altar.BankerType   := blFaladorEast;
            Altar.BankLocation := locFaladorEBank;
            Altar.RuinsWalkTo  := [3758, 3278];
            Altar.RuinsMiddle  := [3750, 3282];
            Altar.AltarPortal  := [1524, 257];
            Altar.AltarMiddle  := [1536, 232];
          end;
        MindAltar:
          begin
            Altar.BankerType   := blFaladorWest;
            Altar.BankLocation := locFaladorWBank;
            Altar.RuinsWalkTo  := [3730, 2400];
            Altar.RuinsMiddle  := [3738, 2392];
            Altar.AltarPortal  := [1330, 261];
            Altar.AltarMiddle  := [1302, 207];
          end;
        WaterAltar:
          begin
            Altar.BankerType   := blDrynor;
            Altar.BankLocation := locDrynorBank;
            Altar.RuinsWalkTo  := [4542, 3793];
            Altar.RuinsMiddle  := [4548, 3790];
            Altar.AltarPortal  := [1066, 241];
            Altar.AltarMiddle  := [1023, 225];
          end;
        EarthAltar:
          begin
            Altar.BankerType   := blVarrockEast;
            Altar.BankLocation := locVarrockEBank;
            Altar.RuinsWalkTo  := [5030, 2561];
            Altar.RuinsMiddle  := [5034, 2553];
            Altar.AltarPortal  := [778, 253];
            Altar.AltarMiddle  := [790, 205];
          end;
        FireAltar:
          begin
            Altar.BankerType   := blAlKharid;
            Altar.BankLocation := locAlkharidBank;
            Altar.RuinsWalkTo  := [5058, 3437];
            Altar.RuinsMiddle  := [5062, 3430];
            Altar.AltarPortal  := [455, 169];
            Altar.AltarMiddle  := [499, 217];
          end;
      end;
    end;

    procedure TRunecrafter.Free();
    begin
      RSW.Free();
      RSWAltars.Free();

      {$ifdecl TWindowOverlay}
      Overlay.Free();
      Debug.Free();
      {$endif}
    end;


    begin
      srl.SetupForClient([]);
      srl.Options := [soDebugAntiban];
      RSClient.SetFocus();

      bot.Init();
      AddOnTerminate(@bot.Free);
      bot.Run();
    end.

    WARNING: Use at your own risk.
    Last edited by slacky; 04-18-2018 at 04:28 AM.
    !No priv. messages please

  2. #2
    Join Date
    Mar 2018
    Posts
    6
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    Hey man I'm gonna test this out, looks amazing.

    Thank you for not using smart. I believe these are much ban proof than anything.
    Last edited by mrchefelias; 03-27-2018 at 06:48 PM.

  3. #3
    Join Date
    Mar 2018
    Posts
    6
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    When I run it I get this

    New window: 329076
    Error: Cannot find parent declaration at line 386
    Compiling failed.
    Error: Unknown declaration "srl" at line 261
    Compiling failed.
    Error: Cannot find parent declaration at line 386
    Compiling failed.
    Downloaded all latestest includes and such, have been using the minining bot earlier.

  4. #4
    Join Date
    Feb 2013
    Location
    Narnia
    Posts
    615
    Mentioned
    8 Post(s)
    Quoted
    252 Post(s)

    Default

    Quote Originally Posted by slacky View Post
    Notes:
    • The XP counter will most likely be thrown off if you hit a new multiple while running the bot.
    • Only works with a tiara, so be sure to equip that before you start the bot.

    XP is based on the number of essence used, not the number of runes produced, so the XP counter will not be thrown off.

    View my OSR Script Repository!


    Botted to max
    Guides: How to Report Bugs to the Scripter
    ~~~~ Moved to Java. Currently Lurking ~~~~

  5. #5
    Join Date
    Mar 2018
    Posts
    6
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    Hey, have you tried the script yet? Any clue what the problem is i get an error i posted it above\

    Update 1
    4 troubleshoots later on my behalf, i came to the conclusion i'm an idiot. testing now


    Update 2. Works/excellent job!
    Last edited by mrchefelias; 03-27-2018 at 07:44 PM.

  6. #6
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default

    Quote Originally Posted by Sk1nyNerd View Post
    XP is based on the number of essence used, not the number of runes produced, so the XP counter will not be thrown off.
    That is exactly why the XP counter should be thrown off. The variable `Count` counts how many runes are made, not how many essence are used, and XPPer, counts XP per rune (that value is calculated after the first trip). So when you hit a new multiple the XP per essence will be larger than what it should be.
    !No priv. messages please

  7. #7
    Join Date
    Mar 2018
    Posts
    6
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    I just wanted to provide some quick feedback from using this.

    I have tested the air runes for about 2 hours, worked perfectly.

    Then I switched to Fire runes, and it sometimes has difficulty finding the banker once at the bank in al kharid, also sometimes freezes and does nothing at all without a debug error or anthing of that kind. Thanks

  8. #8
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default

    Quote Originally Posted by mrchefelias View Post
    I just wanted to provide some quick feedback from using this.

    I have tested the air runes for about 2 hours, worked perfectly.

    Then I switched to Fire runes, and it sometimes has difficulty finding the banker once at the bank in al kharid, also sometimes freezes and does nothing at all without a debug error or anthing of that kind. Thanks
    Yeah, I do recall the fire runes being a bit more bitchy. I never had issues with doing ~1-3 hour runs at fire tho.
    Banking does rely on SRL's banking functionality which isn't particularly impressive, so ye.
    Last edited by slacky; 03-28-2018 at 01:43 AM.
    !No priv. messages please

  9. #9
    Join Date
    Mar 2018
    Posts
    6
    Mentioned
    0 Post(s)
    Quoted
    2 Post(s)

    Default

    Hey man, I know this is really offtopic, but hear me out.

    I got basic programming knowledge of general stuff such as if statements and whatnot. However I've never been able to actually program something worth a damn throghout the years ( C++ / Java, etc ). I've spent like 4 days trying to learn to make a basic script with so much god damn failures.

    Is there a way to pay someone to develop you a bot?

  10. #10
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default

    Quote Originally Posted by mrchefelias View Post
    Hey man, I know this is really offtopic, but hear me out.

    I got basic programming knowledge of general stuff such as if statements and whatnot. However I've never been able to actually program something worth a damn throghout the years ( C++ / Java, etc ). I've spent like 4 days trying to learn to make a basic script with so much god damn failures.

    Is there a way to pay someone to develop you a bot?
    When learning to script, even the basics takes time, but once that's down shit gets a lot simpler. You just have to go for something simple to begin with, and take it one step at a time.

    The community generally frowns upon buying / selling scripts, and on the forum itself it's not allowed to do sails, so you'd probably have to come in contact with someone outside the forums in order to make that happen, however it seems most people here don't take on "jobs", but idk.
    !No priv. messages please

  11. #11
    Join Date
    Jul 2017
    Posts
    30
    Mentioned
    0 Post(s)
    Quoted
    15 Post(s)

    Default

    Error: Unknown declaration "locFaladorEBank" at line 385 ( for each one)
    Compiling failed.

    Removing this code for each one made the script work perfectly but it won't locate the bank..
    Last edited by Grendal; 04-16-2018 at 09:31 AM.

  12. #12
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default

    Quote Originally Posted by Grendal View Post
    Error: Unknown declaration "locFaladorEBank" at line 385 ( for each one)
    Compiling failed.

    Removing this code for each one made the script work perfectly but it won't locate the bank..
    You need a newer release of RSWalker, <= 1.04 is just too old now, 1.05+ seems to be minimum. Alternatively, the old varnames was something like: `P_FALADOR_EBANK` and so if you wanna manually change it for now
    Last edited by slacky; 04-16-2018 at 09:35 PM.
    !No priv. messages please

  13. #13
    Join Date
    Jul 2017
    Posts
    30
    Mentioned
    0 Post(s)
    Quoted
    15 Post(s)

    Default

    Error: Can't assign "procedure(Pointer,record [0]X: Int32; [4]Y: Int32; end)" to "procedure(^record [0]WORLDMAP: array of array of Int32; [4]WORLDSAMPLE: array of array of Int32; [8]GRAPH: record [0]NODES: array of record [0]X: Int32; [4]Y: Int32; end; [4]PATHS: array of array of Int32; [8]NAMES: array of AnsiString; end; [20]SKIPCLOSE: Int32; [24]MINRUNENERGY: Int32; [28]KEEPMOUSEACTIVE: (False=0, True=1); [32]FINDER: record [0]SCANRATIO: UInt8; [4]SIMILARITY: Single; [8]PROCESS: Int32; [12]SCAN: record [0]PROC: UInt32; [4]SYSMEMLO: UInt32; [8]SYSMEMHI: UInt32; end; [24]ADDR: UInt32; [28]BUFFERW: Int32; [32]BUFFERH: Int32; [36]LOCALMAP: array of array of Int32; end; [72]MEMSCANENABLED: (False=0, True=1); [76]LOCALMAP: array of array of Int32; [80]GLOBAL: record [0]X: Int32; [4]Y: Int32; end; [88]FPATH: array of record [0]X: Int32; [4]Y: Int32; end; [92]FPATHIDX: Int32; )" at line 373
    Compiling failed.

    Line 373 RSW.onMoveEvent := @Self.WhileMoving;

    Currenly on 1.05 right now. Message didn't appear on 1.04.

    (P_drynor does not work)

  14. #14
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default

    Quote Originally Posted by Grendal View Post
    Error: Can't assign "procedure(Pointer,record [0]X: Int32; [4]Y: Int32; end)" to "procedure(^record [0]WORLDMAP: array of array of Int32; [4]WORLDSAMPLE: array of array of Int32; [8]GRAPH: record [0]NODES: array of record [0]X: Int32; [4]Y: Int32; end; [4]PATHS: array of array of Int32; [8]NAMES: array of AnsiString; end; [20]SKIPCLOSE: Int32; [24]MINRUNENERGY: Int32; [28]KEEPMOUSEACTIVE: (False=0, True=1); [32]FINDER: record [0]SCANRATIO: UInt8; [4]SIMILARITY: Single; [8]PROCESS: Int32; [12]SCAN: record [0]PROC: UInt32; [4]SYSMEMLO: UInt32; [8]SYSMEMHI: UInt32; end; [24]ADDR: UInt32; [28]BUFFERW: Int32; [32]BUFFERH: Int32; [36]LOCALMAP: array of array of Int32; end; [72]MEMSCANENABLED: (False=0, True=1); [76]LOCALMAP: array of array of Int32; [80]GLOBAL: record [0]X: Int32; [4]Y: Int32; end; [88]FPATH: array of record [0]X: Int32; [4]Y: Int32; end; [92]FPATHIDX: Int32; )" at line 373
    Compiling failed.

    Line 373 RSW.onMoveEvent := @Self.WhileMoving;

    Currenly on 1.05 right now. Message didn't appear on 1.04.

    (P_drynor does not work)
    Thank you for reporting. It's fixed now.
    !No priv. messages please

  15. #15
    Join Date
    Aug 2017
    Posts
    25
    Mentioned
    0 Post(s)
    Quoted
    9 Post(s)

    Default

    Hey man, I am yet to try this script and I am sure it will be awesome as I have tried your others. But I can see in code it banks at al kharid while doing fire runes. Why not add a simple ring of dueling option? The bank is always visible/near at castle wars, and the slot of ring of dueling can be put next to essence and specified in code. Minimal interaction in terms of clicks will be good too. Please add it.

  16. #16
    Join Date
    Feb 2012
    Location
    Norway
    Posts
    995
    Mentioned
    145 Post(s)
    Quoted
    596 Post(s)

    Default

    Quote Originally Posted by justforfun View Post
    Hey man, I am yet to try this script and I am sure it will be awesome as I have tried your others. But I can see in code it banks at al kharid while doing fire runes. Why not add a simple ring of dueling option? The bank is always visible/near at castle wars, and the slot of ring of dueling can be put next to essence and specified in code. Minimal interaction in terms of clicks will be good too. Please add it.
    I don't really do P2P related stuff, I am simply not that into the game, and the last thing I wanna do is to learn about them P2P stuff to write a script.
    !No priv. messages please

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
  •