Page 1 of 2 12 LastLast
Results 1 to 25 of 26

Thread: Error: Exception: Access violation at line 78

  1. #1
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default Error: Exception: Access violation at line 78

    Error: Exception: Access violation at line 78
    The following DTMs were not freed: [0, 1, 2, 3, SRL - Lamp bitmap, 5, 6, 7, 8, 9]
    The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap, 5]

    help please?
    trying to rune essence miner

    begin
    if (not SMART_DebugSetup) then
    SMART_SetupDebug;

    If (SMART_CANVAS.TransparentColorSet) then
    SMART_CANVAS.FastDrawClear(SMART_CANVAS.GetTranspa rentColor)
    else
    SMART_CANVAS.FastDrawClear(0);
    end;
    Last edited by Alphatrazz; 03-04-2013 at 08:05 AM.

  2. #2
    Join Date
    Feb 2006
    Location
    Tracy/Davis, California
    Posts
    12,631
    Mentioned
    135 Post(s)
    Quoted
    418 Post(s)

    Default

    Would help to tell us what script you are trying to run.

    Or even to post your exact code in simba tags
    [simba] code here[/simba]
    ^Like that

  3. #3
    Join Date
    Feb 2013
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    4 Post(s)

    Default

    It's the when you try to use the Ess miner with SMART8.
    The SmartGraphics comes up when you try to run the Ess miner and gives the Access Violation.
    Specifically at SMART_CANVAS.FastDrawClear(0);


    Simba Code:
    procedure SMART_ClearCanvas;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      If (SMART_CANVAS.TransparentColorSet) then
        SMART_CANVAS.FastDrawClear(SMART_CANVAS.GetTransparentColor)
      else
        SMART_CANVAS.FastDrawClear(0);
    end;

  4. #4
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    sry edited my post

  5. #5
    Join Date
    Feb 2006
    Location
    Tracy/Davis, California
    Posts
    12,631
    Mentioned
    135 Post(s)
    Quoted
    418 Post(s)

    Default

    Put it in Simba tags please as I explained above, it should look like how post #3 looks.
    Posting the entire script would also help, or linking to it maybe.

  6. #6
    Join Date
    Feb 2013
    Posts
    13
    Mentioned
    0 Post(s)
    Quoted
    4 Post(s)

    Default

    Its the SmartGraphics, not even the script itself. It happens with every single Smart_canvas.

    Simba Code:
    {$DEFINE SMART_GRAPHICS}
    {*
    Smart Grahpics
    ==============

    The Smart Grahpics include contains functions that will paint graphics on to the
    SMART screen.  Used to make scripts look nicer and sometimes to display
    progress reports.  Also used as a useful debugging tool. This is for Simba 0.99 and above.

    *}


    var
      SMART_Canvas: TMufasaBitmap;
      SMART_DebugSetup, SMART_Reset: Boolean;

    {*
      Authors: Coh3n, Brandon.

      Declares everything needed for setting up SmartDebug.
      There is no need to call this in scripts.
    *}

    procedure SMART_SetupDebug;
    begin
      SmartSetDebug(True);
      SMART_Canvas := TMufasaBitmap.Create;
      SMART_Canvas.SetPersistentMemory(SmartDebugArray, 765, 553);
      SMART_DebugSetup := true;
      if not SMART_Reset then
        AddOnTerminate('SMART_FreeDebug');
    end;

    {*
      Author: Brandon.

      Creates an array of specific colours for use with FastSetPixels.
    *}

    Function ColorsFromTPA(TPA: TPointArray; Color: Integer): TIntegerArray;
    var
      I, L: Integer;
    begin
      SetLength(Result, Length(TPA));
      L:= High(TPA);
      For I:= 0 To L Do
        Result[I]:= Color;
    end;

    {*
      Authors: Coh3n, Brandon.

      Clears an Area of the canvas Specified by the box.
    *}

    procedure SMART_ClearCanvasArea(Area: TBox);
    {$IFDEF SMART}
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      SMART_Canvas.Rectangle(Area, 0);

    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: Coh3n, Brandon.

      Clears the entire Smart Canvas.
    *}

    procedure SMART_ClearCanvas;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      If (SMART_CANVAS.TransparentColorSet) then
        SMART_CANVAS.FastDrawClear(SMART_CANVAS.GetTransparentColor)
      else
        SMART_CANVAS.FastDrawClear(0);
    end;

    {*
      Author: Mormanman.
      Clears the MainScreen of Smart.
    *}

    procedure SMART_ClearMS;
    begin
      SMART_ClearCanvasArea(IntToBox(MSBox.X1 + SRL_NAVBAR_INGAME_X,
        MSBox.Y1 + SRL_NAVBAR_INGAME_Y, MSBox.X2, MSBox.Y2 + SRL_NAVBAR_INGAME_Y));
    end;

    {*
      Authors: Sir R. Magician, Brandon.

      Draws a TPA with a specified Colour onto Smart's Canvas.
      Clears the Canvas first if Clear is set to true.
    *}

    procedure SMART_DrawDotsEx(Clear: boolean; Pixels: TPointArray; Color: TColor);
    {$IFDEF SMART}
    var
      P: TPointArray;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if Clear then SMART_ClearCanvas;
      P := CopyTPA(Pixels);
      OffsetTPA(P, Point(SRL_NAVBAR_INGAME_X, SRL_NAVBAR_INGAME_Y));
      SMART_Canvas.DrawTPA(P, Color);
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Authors: Sir R. Magician, mormanman, Brandon.

      Draws a 2-Dimensional Array of Pixels on Smart.
      Clears the Canvas first if Set to True.
    *}

    procedure SMART_DrawDotsMulti(Clear: boolean; pixels : T2DPointArray);
    {$IFDEF SMART}
    var
      h, color : integer;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if Clear then SMART_ClearCanvas;

      for h := 0 to High(pixels) do
      begin

        color := h div 10 + h mod 10;
        case color of
          0 : color := clWhite;
          1 : color := clYellow;
          2 : color := clBlue;
          3 : color := clLime;
          4 : color := 26367;//orange
          5 : color := clPurple;
          6 : color := clAqua;
          7 : color := clFuchsia;
          8 : color := clGreen;
          9 : color := clRed;
        end;

        SMART_DrawDotsEx(False, pixels[h], color);
      end;
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman.

      Draws the box of each TPA in the ATPA and write the index number in the top
      left corner and a cross at the point found by MiddleTPA.
    *}

    procedure SMART_DebugATPA(Clear: Boolean; ATPA: T2DPointArray);
    {$IFDEF SMART}
    var
      i, h, len: Integer;
      B: TBox;
      MP: TPoint;
      TPA: TPointArray;
      Points: T2DPointArray;
    begin
      len := Length(ATPA);
      if (len < 1) then
        Exit;
      SetLength(Points, len);

      for i := 0 to High(ATPA) do
      begin
        B := GetTPABounds(ATPA[i]);
        len := Length(ATPA[i]);
        if (len > 0) then
        begin
          TPA := LoadTextTPA(ToStr(i), SmallChars, h);
          OffsetTPA(TPA, Point(B.X1+1, B.Y1+1));
        end;
        CombineTPAWrap(FindTPAEdges(TPAFromBox(B)), TPA, Points[i]);
        MP := MiddleTPA(ATPA[i]);
        TPA := [Point(MP.x-1, MP.y), Point(MP.x+1, MP.y), Point(MP.x, MP.y-1),
                Point(MP.x, MP.y+1), Point(MP.x-2, MP.y), Point(MP.x, MP.y),
                Point(MP.x+2, MP.y), Point(MP.x, MP.y-2), Point(MP.x, MP.y+2)];
        CombineTPAWrap(Points[i], TPA, Points[i]);
      end;

      SMART_DrawDotsMulti(Clear, Points);
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman

      Draws the TPA bounds and puts a cross at the point created by MiddleTPA.
    *}

    procedure SMART_DebugTPA(Clear: Boolean; TPA: TPointArray);
    begin
      SMART_DebugATPA(Clear, [TPA]);
    end;

    {*
      Author: Sir R. Magician

      Clears the SMART canvas, then draws a red TPA (Dots).
    *}

    procedure SMART_DrawDots(Dots: TPointArray);
    begin
      SMART_DrawDotsEx(True, Dots, clRed);
    end;

    {*
      Author: Coh3n

      Draws a single colored dot (Color) at the set point (Point) on the SMART canvas.
      Will clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawDot(Clear: Boolean; Point: TPoint; Color: TColor);
    begin
      SMART_DrawDotsEx(Clear, [Point], Color);
    end;

    {*
      Authors: mormonman, Brandon.

      Draws an array of boxes onto the SMART canvas. Set Color to -1 for it to use
      different colors (like in SMART_DrawDotsMulti).
      Fill will fill each box with a color.
    *}

    procedure SMART_DrawBoxes(Clear, Fill: Boolean; TBA: TBoxArray; Color: Integer);
    {$IFDEF SMART}
    var
      i, colour, temp: Integer;
      Box: TBox;
      TPAEdges: TPointArray;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if Clear then SMART_ClearCanvas;

      if (Length(TBA) < 1) then Exit;
      for i := 0 to High(TBA) do
      begin
        Box := TBA[i];
        if (Color > 0) then
        begin
          Temp := color;
        end else
        begin
          colour := i div 5 + i mod 5;
          case colour of
            0 : Temp := clWhite;
            1 : Temp := clYellow;
            2 : Temp := clBlue;
            3 : Temp := clLime;
            4 : Temp := clGreen;
          end;
        end;

        if Fill then
        begin
          Box := IntToBox(Min(TBA[i].X1, TBA[i].X2), Min(TBA[i].Y1, TBA[i].Y2) + SRL_NAVBAR_INGAME_Y,
            Max(TBA[i].X1, TBA[i].X2), Max(TBA[i].Y1, TBA[i].Y2) + SRL_NAVBAR_INGAME_Y);
          if (Box.X1 < 0) then  Box.X1 := 0;
          if (Box.X2 < 0) then  Box.X2 := 0;
          if (Box.Y1 < 0) then  Box.Y1 := 0;
          if (Box.Y2 < 0) then  Box.Y2 := 0;
          SMART_Canvas.Rectangle(Box, Temp)
        end else
        begin
          FindTPAEdgesWrap(TPAFromBox(Box), TPAEdges);
          SMART_DrawDotsEx(False, TPAEdges, Temp);
        end;

      end;

    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman, Brandon.

      Draws a single colored (color) box (Box) on the SMART canvas.  Will clear the
      canvas if set to do so (Clear).
      Fill will fill in the box with the specified Color.
    *}

    procedure SMART_DrawBoxEx(Clear, Fill: boolean; Box: TBox; color: TColor);
    begin
      SMART_DrawBoxes(Clear, Fill, [Box], color);
    end;

    {*
      Author: mormonman

      Clears the SMART canvas, then draws a single red box, specified by 'Box'.
    *}

    procedure SMART_DrawBox(Box: TBox);
    begin
      SMART_DrawBoxEx(True, False, Box, clRed);
    end;

    {*
      Author: Coh3n

      Draws a box on the RS mainscreen, even if the coordinates are outside client
      boundaries.
      Fill will Fill in the box with the specified Color.
    *}

    procedure SMART_DrawBoxMS(Clear, Fill: Boolean; Box: TBox; Color: TColor);
    begin
      if (Box.X1 < MSX1) then Box.X1 := MSX1;
      if (Box.Y1 < MSY1) then Box.Y1 := MSY1;
      if (Box.X2 > MSX2) then Box.X2 := MSX2;
      if (Box.Y2 > MSY2) then Box.Y2 := MSY2;
      SMART_DrawBoxEx(Clear, Fill, Box, Color);
    end;

    {*
      Author: mormonman

      Draws a line a set color (Color) from point 1 (TP1) to point 2 (TP2).  Will
      clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawLine(Clear: Boolean; TP1, TP2: TPoint; Color: TColor);
    var
      TempMufasa: TMufasaBitmap;
      TempTBitmap: TBitmap;
    begin
    {$IFDEF SMART}
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if (Clear) then
        SMART_ClearCanvas;

      TempTBitmap := TBitmap.Create;
      TempTBitmap.Width := Max(1, iAbs(TP2.X - TP1.X));
      TempTBitmap.Height := Max(1, iAbs(TP2.Y - TP1.Y));
      TempTBitmap.Canvas.Pen.COLOR := Color;

      TempTBitmap.Canvas.moveto(0, 0);
      TempTBitmap.Canvas.LineTo(iAbs(TP2.X - TP1.X), iAbs(TP2.Y - TP1.Y));

      TempMufasa := TMufasaBitmap.Create;
      TempMufasa.LoadFromTBitmap(TempTBitmap);
      if (SMART_Canvas.TransparentColorSet) then
        TempMufasa.SetTransparentColor(SMART_Canvas.GetTransparentColor);

      FastDrawTransparent(Min(TP1.X, TP2.X), Min(TP1.Y, TP2.Y) + SRL_NAVBAR_INGAME_Y, TempMufasa.Index, SMART_Canvas.Index);

      TempMufasa.Free;
      TempTBitmap.Free;
    {$ENDIF}
    end;

    {*
      Author: mormonman

      Draws an ellipse on the SMART canvas defined by 'Center', 'XRadius', and
      'YRadius'. If 'Fill' is true it will fill the ellipse, otherwise it draws just
      the border.  Will clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawEllipse(Clear: Boolean; Center: TPoint; XRadius, YRadius: Integer; Fill: Boolean; Color: TColor);
    {$IFDEF SMART}
    var
      TPA: TPointArray;
      TempMufasa: TMufasaBitmap;
      TempTBitmap: TBitmap;
    begin
      if Fill then
      begin
       if (not SMART_DebugSetup) then
        SMART_SetupDebug;

        if Clear then
          SMART_ClearCanvas;

        TempTBitmap := TBitmap.Create;
        TempTBitmap.Canvas.Brush.COLOR := Color;

        TempTBitmap.Width := (XRadius * 2);
        TempTBitmap.Height := (YRadius * 2);

        TempTBitmap.Canvas.Ellipse(Center.X - XRadius, Center.Y - YRadius, Center.X + XRadius, Center.Y + YRadius);

        TempMufasa := TMufasaBitmap.Create;
        TempMufasa.LoadFromTBitmap(TempTBitmap);
        if (SMART_Canvas.TransparentColorSet) then
          TempMufasa.SetTransparentColor(SMART_Canvas.GetTransparentColor);

        FastDrawTransparent(0, SRL_NAVBAR_INGAME_Y, TempMufasa.Index, SMART_Canvas.Index);
        TempMufasa.Free;
        TempTBitmap.Free;
      end else
      begin
        TPA := TPAFromEllipse(Center.X, Center.Y, XRadius, YRadius);

        if (Length(TPA) >= 1) then
          SMART_DrawDotsEx(Clear, TPA, Color);
      end;
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman

      Draws a circle on the SMART canvas defined by 'Center' and 'Radius'. If 'Fill'
      is true it will fill the circle, otherwise it draws just the border.  Will
      clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawCircle(Clear: Boolean; Center: TPoint; Radius: Integer; Fill: Boolean; Color: TColor);
    begin
      SMART_DrawEllipse(Clear, Center, Radius, Radius, Fill, Color);
    end;

    {*
      Author: mormonman

      Draws an array of polygons on the SMART canvas in the set color.  Will clear the
      SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawPolygons(Clear: Boolean; Polygons: T2DPointArray; color: TColor);
    {$IFDEF SMART8}
    var
      i, h, Hi: Integer;
    begin
      if (Clear) then
        SMART_ClearCanvas;

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

      for h := 0 to High(Polygons) do
      begin
        Hi := High(Polygons[h]);
        if (Hi < 2) then Exit;

        for i := 0 to Hi - 1 do
          SMART_DrawLine(False, Polygons[h][i], Polygons[h][i+1], color);

        SMART_DrawLine(False, Polygons[h][Hi], Polygons[h][0], color);
      end;
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Authors: Flight & Coh3n

      Draws text on the SMART canvas.  Used mainly for progress reports.  Parameters
      are as follows:
        * Clear: Clear the SMART canvas before drawing
        * Shadow: if set to true, will add a shadow to the text
        * TSA: the string array of what to be printed; each element is a different line
        * Placement: the point to start the text drawing
        * Font: the font to use (see Simba/Fonts/)
        * Colour: the color of the font
    *}

    procedure SMART_DrawTextMulti(Clear, Shadow: Boolean; TSA: TStringArray; Placement: TPoint; Font: string; Colour: TColor);
    var
      i, h, TPH: Integer;
      TTP, SArr: TPointArray;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if (Clear) then
        SMART_ClearCanvas;

      TPH := High(TSA);

      for i := 0 to TPH do
      begin
        TTP := LoadTextTPA(TSA[i], Font, h);
        OffsetTPA(TTP, Point(Placement.x, Placement.y+(i*h)));
        SMART_DrawDotsEx(False, TTP, Colour);
        if Shadow then
        begin
          SArr := CopyTPA(TTP);
          OffsetTPA(SArr, Point(1, 1));
          ClearTPAFromTPAWrap(SArr, TTP, SArr);
          SMART_DrawDotsEx(False, SArr, 65536);
        end;
      end;
    end;

    {*
      Author: Coh3n

      Draws shadowed line of text on the SMART canvas.  Parameters are as follows:
        * Clear: Clear the SMART canvas before drawing
        * x, y: the coords of where to place the text
        * font: the font to use (see Simba/Fonts/)
        * Text: the text to draw to the SMART canvas
        * Colour: the color of the font
    *}

    procedure SMART_DrawTextEx(Clear: Boolean; x, y: Integer; font, Text: string; Color: TColor);
    begin
      SMART_DrawTextMulti(Clear, true, [Text], Point(x, y), font, Color);
    end;

    {*
      Author: Coh3n

      Same as SMART_DrawTextEx, except clears the canvas before drawing.
    *}

    procedure SMART_DrawText(x, y: Integer; font, Text: string; Color: TColor);
    begin
      SMART_DrawTextEx(False, x, y, font, Text, Color);
    end;

    {*
      Author: Coh3n

      Draws a bitmap (Bitmap) on the SMART canvas at given coordinates (Placement).
      Will clear the canvas beforehand if specified to do so (Clear).
    *}

    procedure SMART_DrawBitmap(Clear: Boolean; Bitmap: Integer; Placement: TPoint);
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if (Clear) then
        SMART_ClearCanvas;

      FastDrawTransparent(Placement.X, Placement.Y + SRL_NAVBAR_INGAME_Y, Bitmap, SMART_Canvas.Index);
    end;

    {*
      Authors: Coh3n, Brandon.

      Frees the SMART_Canvas bitmap.
    *}

    procedure SMART_FreeDebug;
    begin
      try
        if (SMART_DebugSetup) then
        begin
          SMART_Canvas.ResetPersistentMemory;
          SMART_Canvas.Free;
          SMART_DebugSetup := False;
          SMART_Reset := True;
        end;
      except
        Writeln('Failed to free SMART_Canvas bitmap: '+ExceptionToString(ExceptionType, ExceptionParam));
      end;
    end;
    Last edited by SlaveCooking; 03-04-2013 at 08:24 AM.

  7. #7
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Simba Code:
    {$DEFINE SMART_GRAPHICS}
    {*
    Smart Grahpics
    ==============

    The Smart Grahpics include contains functions that will paint graphics on to the
    SMART screen.  Used to make scripts look nicer and sometimes to display
    progress reports.  Also used as a useful debugging tool. This is for Simba 0.99 and above.

    *}


    var
      SMART_Canvas: TMufasaBitmap;
      SMART_DebugSetup, SMART_Reset: Boolean;

    {*
      Authors: Coh3n, Brandon.

      Declares everything needed for setting up SmartDebug.
      There is no need to call this in scripts.
    *}

    procedure SMART_SetupDebug;
    begin
      SmartSetDebug(True);
      SMART_Canvas := TMufasaBitmap.Create;
      SMART_Canvas.SetPersistentMemory(SmartDebugArray, 765, 553);
      SMART_DebugSetup := true;
      if not SMART_Reset then
        AddOnTerminate('SMART_FreeDebug');
    end;

    {*
      Author: Brandon.

      Creates an array of specific colours for use with FastSetPixels.
    *}

    Function ColorsFromTPA(TPA: TPointArray; Color: Integer): TIntegerArray;
    var
      I, L: Integer;
    begin
      SetLength(Result, Length(TPA));
      L:= High(TPA);
      For I:= 0 To L Do
        Result[I]:= Color;
    end;

    {*
      Authors: Coh3n, Brandon.

      Clears an Area of the canvas Specified by the box.
    *}

    procedure SMART_ClearCanvasArea(Area: TBox);
    {$IFDEF SMART}
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      SMART_Canvas.Rectangle(Area, 0);

    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: Coh3n, Brandon.

      Clears the entire Smart Canvas.
    *}

    procedure SMART_ClearCanvas;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      If (SMART_CANVAS.TransparentColorSet) then
        SMART_CANVAS.FastDrawClear(SMART_CANVAS.GetTransparentColor)
      else
        SMART_CANVAS.FastDrawClear(0);
    end;

    {*
      Author: Mormanman.
      Clears the MainScreen of Smart.
    *}

    procedure SMART_ClearMS;
    begin
      SMART_ClearCanvasArea(IntToBox(MSBox.X1 + SRL_NAVBAR_INGAME_X,
        MSBox.Y1 + SRL_NAVBAR_INGAME_Y, MSBox.X2, MSBox.Y2 + SRL_NAVBAR_INGAME_Y));
    end;

    {*
      Authors: Sir R. Magician, Brandon.

      Draws a TPA with a specified Colour onto Smart's Canvas.
      Clears the Canvas first if Clear is set to true.
    *}

    procedure SMART_DrawDotsEx(Clear: boolean; Pixels: TPointArray; Color: TColor);
    {$IFDEF SMART}
    var
      P: TPointArray;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if Clear then SMART_ClearCanvas;
      P := CopyTPA(Pixels);
      OffsetTPA(P, Point(SRL_NAVBAR_INGAME_X, SRL_NAVBAR_INGAME_Y));
      SMART_Canvas.DrawTPA(P, Color);
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Authors: Sir R. Magician, mormanman, Brandon.

      Draws a 2-Dimensional Array of Pixels on Smart.
      Clears the Canvas first if Set to True.
    *}

    procedure SMART_DrawDotsMulti(Clear: boolean; pixels : T2DPointArray);
    {$IFDEF SMART}
    var
      h, color : integer;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if Clear then SMART_ClearCanvas;

      for h := 0 to High(pixels) do
      begin

        color := h div 10 + h mod 10;
        case color of
          0 : color := clWhite;
          1 : color := clYellow;
          2 : color := clBlue;
          3 : color := clLime;
          4 : color := 26367;//orange
          5 : color := clPurple;
          6 : color := clAqua;
          7 : color := clFuchsia;
          8 : color := clGreen;
          9 : color := clRed;
        end;

        SMART_DrawDotsEx(False, pixels[h], color);
      end;
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman.

      Draws the box of each TPA in the ATPA and write the index number in the top
      left corner and a cross at the point found by MiddleTPA.
    *}

    procedure SMART_DebugATPA(Clear: Boolean; ATPA: T2DPointArray);
    {$IFDEF SMART}
    var
      i, h, len: Integer;
      B: TBox;
      MP: TPoint;
      TPA: TPointArray;
      Points: T2DPointArray;
    begin
      len := Length(ATPA);
      if (len < 1) then
        Exit;
      SetLength(Points, len);

      for i := 0 to High(ATPA) do
      begin
        B := GetTPABounds(ATPA[i]);
        len := Length(ATPA[i]);
        if (len > 0) then
        begin
          TPA := LoadTextTPA(ToStr(i), SmallChars, h);
          OffsetTPA(TPA, Point(B.X1+1, B.Y1+1));
        end;
        CombineTPAWrap(FindTPAEdges(TPAFromBox(B)), TPA, Points[i]);
        MP := MiddleTPA(ATPA[i]);
        TPA := [Point(MP.x-1, MP.y), Point(MP.x+1, MP.y), Point(MP.x, MP.y-1),
                Point(MP.x, MP.y+1), Point(MP.x-2, MP.y), Point(MP.x, MP.y),
                Point(MP.x+2, MP.y), Point(MP.x, MP.y-2), Point(MP.x, MP.y+2)];
        CombineTPAWrap(Points[i], TPA, Points[i]);
      end;

      SMART_DrawDotsMulti(Clear, Points);
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman

      Draws the TPA bounds and puts a cross at the point created by MiddleTPA.
    *}

    procedure SMART_DebugTPA(Clear: Boolean; TPA: TPointArray);
    begin
      SMART_DebugATPA(Clear, [TPA]);
    end;

    {*
      Author: Sir R. Magician

      Clears the SMART canvas, then draws a red TPA (Dots).
    *}

    procedure SMART_DrawDots(Dots: TPointArray);
    begin
      SMART_DrawDotsEx(True, Dots, clRed);
    end;

    {*
      Author: Coh3n

      Draws a single colored dot (Color) at the set point (Point) on the SMART canvas.
      Will clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawDot(Clear: Boolean; Point: TPoint; Color: TColor);
    begin
      SMART_DrawDotsEx(Clear, [Point], Color);
    end;

    {*
      Authors: mormonman, Brandon.

      Draws an array of boxes onto the SMART canvas. Set Color to -1 for it to use
      different colors (like in SMART_DrawDotsMulti).
      Fill will fill each box with a color.
    *}

    procedure SMART_DrawBoxes(Clear, Fill: Boolean; TBA: TBoxArray; Color: Integer);
    {$IFDEF SMART}
    var
      i, colour, temp: Integer;
      Box: TBox;
      TPAEdges: TPointArray;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if Clear then SMART_ClearCanvas;

      if (Length(TBA) < 1) then Exit;
      for i := 0 to High(TBA) do
      begin
        Box := TBA[i];
        if (Color > 0) then
        begin
          Temp := color;
        end else
        begin
          colour := i div 5 + i mod 5;
          case colour of
            0 : Temp := clWhite;
            1 : Temp := clYellow;
            2 : Temp := clBlue;
            3 : Temp := clLime;
            4 : Temp := clGreen;
          end;
        end;

        if Fill then
        begin
          Box := IntToBox(Min(TBA[i].X1, TBA[i].X2), Min(TBA[i].Y1, TBA[i].Y2) + SRL_NAVBAR_INGAME_Y,
            Max(TBA[i].X1, TBA[i].X2), Max(TBA[i].Y1, TBA[i].Y2) + SRL_NAVBAR_INGAME_Y);
          if (Box.X1 < 0) then  Box.X1 := 0;
          if (Box.X2 < 0) then  Box.X2 := 0;
          if (Box.Y1 < 0) then  Box.Y1 := 0;
          if (Box.Y2 < 0) then  Box.Y2 := 0;
          SMART_Canvas.Rectangle(Box, Temp)
        end else
        begin
          FindTPAEdgesWrap(TPAFromBox(Box), TPAEdges);
          SMART_DrawDotsEx(False, TPAEdges, Temp);
        end;

      end;

    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman, Brandon.

      Draws a single colored (color) box (Box) on the SMART canvas.  Will clear the
      canvas if set to do so (Clear).
      Fill will fill in the box with the specified Color.
    *}

    procedure SMART_DrawBoxEx(Clear, Fill: boolean; Box: TBox; color: TColor);
    begin
      SMART_DrawBoxes(Clear, Fill, [Box], color);
    end;

    {*
      Author: mormonman

      Clears the SMART canvas, then draws a single red box, specified by 'Box'.
    *}

    procedure SMART_DrawBox(Box: TBox);
    begin
      SMART_DrawBoxEx(True, False, Box, clRed);
    end;

    {*
      Author: Coh3n

      Draws a box on the RS mainscreen, even if the coordinates are outside client
      boundaries.
      Fill will Fill in the box with the specified Color.
    *}

    procedure SMART_DrawBoxMS(Clear, Fill: Boolean; Box: TBox; Color: TColor);
    begin
      if (Box.X1 < MSX1) then Box.X1 := MSX1;
      if (Box.Y1 < MSY1) then Box.Y1 := MSY1;
      if (Box.X2 > MSX2) then Box.X2 := MSX2;
      if (Box.Y2 > MSY2) then Box.Y2 := MSY2;
      SMART_DrawBoxEx(Clear, Fill, Box, Color);
    end;

    {*
      Author: mormonman

      Draws a line a set color (Color) from point 1 (TP1) to point 2 (TP2).  Will
      clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawLine(Clear: Boolean; TP1, TP2: TPoint; Color: TColor);
    var
      TempMufasa: TMufasaBitmap;
      TempTBitmap: TBitmap;
    begin
    {$IFDEF SMART}
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if (Clear) then
        SMART_ClearCanvas;

      TempTBitmap := TBitmap.Create;
      TempTBitmap.Width := Max(1, iAbs(TP2.X - TP1.X));
      TempTBitmap.Height := Max(1, iAbs(TP2.Y - TP1.Y));
      TempTBitmap.Canvas.Pen.COLOR := Color;

      TempTBitmap.Canvas.moveto(0, 0);
      TempTBitmap.Canvas.LineTo(iAbs(TP2.X - TP1.X), iAbs(TP2.Y - TP1.Y));

      TempMufasa := TMufasaBitmap.Create;
      TempMufasa.LoadFromTBitmap(TempTBitmap);
      if (SMART_Canvas.TransparentColorSet) then
        TempMufasa.SetTransparentColor(SMART_Canvas.GetTransparentColor);

      FastDrawTransparent(Min(TP1.X, TP2.X), Min(TP1.Y, TP2.Y) + SRL_NAVBAR_INGAME_Y, TempMufasa.Index, SMART_Canvas.Index);

      TempMufasa.Free;
      TempTBitmap.Free;
    {$ENDIF}
    end;

    {*
      Author: mormonman

      Draws an ellipse on the SMART canvas defined by 'Center', 'XRadius', and
      'YRadius'. If 'Fill' is true it will fill the ellipse, otherwise it draws just
      the border.  Will clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawEllipse(Clear: Boolean; Center: TPoint; XRadius, YRadius: Integer; Fill: Boolean; Color: TColor);
    {$IFDEF SMART}
    var
      TPA: TPointArray;
      TempMufasa: TMufasaBitmap;
      TempTBitmap: TBitmap;
    begin
      if Fill then
      begin
       if (not SMART_DebugSetup) then
        SMART_SetupDebug;

        if Clear then
          SMART_ClearCanvas;

        TempTBitmap := TBitmap.Create;
        TempTBitmap.Canvas.Brush.COLOR := Color;

        TempTBitmap.Width := (XRadius * 2);
        TempTBitmap.Height := (YRadius * 2);

        TempTBitmap.Canvas.Ellipse(Center.X - XRadius, Center.Y - YRadius, Center.X + XRadius, Center.Y + YRadius);

        TempMufasa := TMufasaBitmap.Create;
        TempMufasa.LoadFromTBitmap(TempTBitmap);
        if (SMART_Canvas.TransparentColorSet) then
          TempMufasa.SetTransparentColor(SMART_Canvas.GetTransparentColor);

        FastDrawTransparent(0, SRL_NAVBAR_INGAME_Y, TempMufasa.Index, SMART_Canvas.Index);
        TempMufasa.Free;
        TempTBitmap.Free;
      end else
      begin
        TPA := TPAFromEllipse(Center.X, Center.Y, XRadius, YRadius);

        if (Length(TPA) >= 1) then
          SMART_DrawDotsEx(Clear, TPA, Color);
      end;
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Author: mormonman

      Draws a circle on the SMART canvas defined by 'Center' and 'Radius'. If 'Fill'
      is true it will fill the circle, otherwise it draws just the border.  Will
      clear the SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawCircle(Clear: Boolean; Center: TPoint; Radius: Integer; Fill: Boolean; Color: TColor);
    begin
      SMART_DrawEllipse(Clear, Center, Radius, Radius, Fill, Color);
    end;

    {*
      Author: mormonman

      Draws an array of polygons on the SMART canvas in the set color.  Will clear the
      SMART canvas if set to do so (Clear).
    *}

    procedure SMART_DrawPolygons(Clear: Boolean; Polygons: T2DPointArray; color: TColor);
    {$IFDEF SMART}
    var
      i, h, Hi: Integer;
    begin
      if (Clear) then
        SMART_ClearCanvas;

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

      for h := 0 to High(Polygons) do
      begin
        Hi := High(Polygons[h]);
        if (Hi < 2) then Exit;

        for i := 0 to Hi - 1 do
          SMART_DrawLine(False, Polygons[h][i], Polygons[h][i+1], color);

        SMART_DrawLine(False, Polygons[h][Hi], Polygons[h][0], color);
      end;
    {$ELSE}
    begin
    {$ENDIF}
    end;

    {*
      Authors: Flight & Coh3n

      Draws text on the SMART canvas.  Used mainly for progress reports.  Parameters
      are as follows:
        * Clear: Clear the SMART canvas before drawing
        * Shadow: if set to true, will add a shadow to the text
        * TSA: the string array of what to be printed; each element is a different line
        * Placement: the point to start the text drawing
        * Font: the font to use (see Simba/Fonts/)
        * Colour: the color of the font
    *}

    procedure SMART_DrawTextMulti(Clear, Shadow: Boolean; TSA: TStringArray; Placement: TPoint; Font: string; Colour: TColor);
    var
      i, h, TPH: Integer;
      TTP, SArr: TPointArray;
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if (Clear) then
        SMART_ClearCanvas;

      TPH := High(TSA);

      for i := 0 to TPH do
      begin
        TTP := LoadTextTPA(TSA[i], Font, h);
        OffsetTPA(TTP, Point(Placement.x, Placement.y+(i*h)));
        SMART_DrawDotsEx(False, TTP, Colour);
        if Shadow then
        begin
          SArr := CopyTPA(TTP);
          OffsetTPA(SArr, Point(1, 1));
          ClearTPAFromTPAWrap(SArr, TTP, SArr);
          SMART_DrawDotsEx(False, SArr, 65536);
        end;
      end;
    end;

    {*
      Author: Coh3n

      Draws shadowed line of text on the SMART canvas.  Parameters are as follows:
        * Clear: Clear the SMART canvas before drawing
        * x, y: the coords of where to place the text
        * font: the font to use (see Simba/Fonts/)
        * Text: the text to draw to the SMART canvas
        * Colour: the color of the font
    *}

    procedure SMART_DrawTextEx(Clear: Boolean; x, y: Integer; font, Text: string; Color: TColor);
    begin
      SMART_DrawTextMulti(Clear, true, [Text], Point(x, y), font, Color);
    end;

    {*
      Author: Coh3n

      Same as SMART_DrawTextEx, except clears the canvas before drawing.
    *}

    procedure SMART_DrawText(x, y: Integer; font, Text: string; Color: TColor);
    begin
      SMART_DrawTextEx(False, x, y, font, Text, Color);
    end;

    {*
      Author: Coh3n

      Draws a bitmap (Bitmap) on the SMART canvas at given coordinates (Placement).
      Will clear the canvas beforehand if specified to do so (Clear).
    *}

    procedure SMART_DrawBitmap(Clear: Boolean; Bitmap: Integer; Placement: TPoint);
    begin
      if (not SMART_DebugSetup) then
        SMART_SetupDebug;

      if (Clear) then
        SMART_ClearCanvas;

      FastDrawTransparent(Placement.X, Placement.Y + SRL_NAVBAR_INGAME_Y, Bitmap, SMART_Canvas.Index);
    end;

    {*
      Authors: Coh3n, Brandon.

      Frees the SMART_Canvas bitmap.
    *}

    procedure SMART_FreeDebug;
    begin
      try
        if (SMART_DebugSetup) then
        begin
          SMART_Canvas.ResetPersistentMemory;
          SMART_Canvas.Free;
          SMART_DebugSetup := False;
          SMART_Reset := True;
        end;
      except
        Writeln('Failed to free SMART_Canvas bitmap: '+ExceptionToString(ExceptionType, ExceptionParam));
      end;
    end

  8. #8
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Simba Code:
    SMART_CANVAS.FastDrawClear(0);
    thats line 78 thats getting the error

  9. #9
    Join Date
    Feb 2006
    Location
    Tracy/Davis, California
    Posts
    12,631
    Mentioned
    135 Post(s)
    Quoted
    418 Post(s)

    Default

    Simba> SRL > Update
    Also try getting SMART 8 if you don't already have it by following this:
    http://www.youtube.com/watch?v=IqukGefbw48

    The OP of the script says to follow this guide too, might help:
    http://villavu.com/forum/showthread.php?t=97599

    Not sure what else do to do help one/a combination of those should fix it.

  10. #10
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    ive done all of what you said.

  11. #11
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Simba Code:
    program TestScript;
    {$DEFINE SMART8} //Using SMART8 Instead of SMART is very important
    {$I SRL/SRL.Simba}

    procedure DeclarePlayers;
    begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;

      with Players[0] do
      begin
        Name       := ''; // Player username
        Pass       := ''; // Player password
        Active     := True;
      end;
    end;

    procedure SetupSmartClient;
    begin
      SRL_SixHourFix := True;
      SMART_FixSpeed := True;

      ClearDebug;
      SetupSRL;
      ActivateClient;
      DeclarePlayers;
      LoginPlayer;
    end;

    begin
      SetupSmartClient;

      WriteLn('Finished, exiting ...');
    end.
    i used that and it said successfully executed so i know i installed smart8 correclty.

  12. #12
    Join Date
    Feb 2006
    Location
    Tracy/Davis, California
    Posts
    12,631
    Mentioned
    135 Post(s)
    Quoted
    418 Post(s)

    Default

    Just comment out all of the canvas/debug related lines by putting a // in font of them, and then try.

  13. #13
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    now i get
    [FATAL] terminal error, cant see bank or rune shop ending script now
    Successfully executed.



    which i dont understand because is never even loaded runescape
    Last edited by Alphatrazz; 03-04-2013 at 09:09 AM.

  14. #14
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    idk if this has anything to do with it, but in the cmd prompt theirs a message saying " The automaticallay split characters are too wide. Try decreasing minspacing

  15. #15
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    well either im retarted, which im coming the the conclusion of, but i started runescape in chrome then selected it as a client, i thought it was supposed to start its own window, idk, but it works now.

  16. #16
    Join Date
    Feb 2006
    Location
    Tracy/Davis, California
    Posts
    12,631
    Mentioned
    135 Post(s)
    Quoted
    418 Post(s)

    Default

    Okay so the script itself is working now, just messing up.
    I think you need to load RS in your browser, drag the crosshairs, and let the script run on there (using your own mouse and keyboard)
    Or figure how to get SMART8 working on it.

    Paste the entire script in simba tags please, and don't forgot to remove your user/pass!

  17. #17
    Join Date
    Apr 2012
    Posts
    14
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Simba Code:
    program EssenceHarvester;
    {$DEFINE SMART8}
    {$i srl/srl.simba}
    {$I P07Include.Simba}
    {$I SRL/srl/misc/SmartGraphics.simba}
    //***********************************************************\\
    //                   2007 EssenceHarvester                   \\
    //                Released by wthomas 3/3/13                 \\
    // Coming Soon:                                              \\
    //    AntiBan                                                \\
    //    more AntiRandoms(golem next)                           \\
    //                                                           \\
    //   version 1.06                                            \\
    //       fixedBug ismoving                                   \\
    //       Bixed other small bugs                              \\
    //                                                           \\
    //                                                           \\
    //  Version 1.05                                             \\
    //      Bug fixes                                            \\
    //      Abiss dection and solving                            \\
    //      Paint Proggy                                         \\
    //                                                           \\
    //  Version 1.04                                             \\
    //      Using findSymbol, colors and DTMs                    \\
    //      Fixed Banking issues                                 \\
    //      Updated Essence finding- less bot like               \\
    //                                                           \\
    //  Version 1.03                                             \\
    //     updated DTM's and demoved old unused color            \\
    //                                                           \\
    // Version 1.02Qfx                                           \\
    //    using DTM's and bruting paths                          \\
    //                                                           \\
    // Version 1.02                                              \\
    //    Added in a Proggy                                      \\
    //                                                           \\
    // Version 1.01                                              \\
    //    Fixed a few minor issues with getstate()               \\
    //    Added nice debug notices.                              \\
    //                                                           \\
    //***********************************************************\\


    const
      DEBUG = true;
      PicInInvent =1;
      CostPerEssence = 25;
      WALKBANK = 1;
      BANK = 2;
      WALKESS = 3;
      MINEESS = 4;
      AUBURY = 5;
      PORTAL = 6;
      Version = 1.05;
    type
      tStatus = record
        ID: Integer;
        Name: string;
      end;
      tPointerSet = record
        proc:
    procedure; name: string;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  end;
    var
      RuneShopDTM, BankDTM, TreeDTM, PortalDTM: integer;
      BankSymbolColor, BankTreesColor, RuneShopSymbolColor, PortalColor, BankSymbolTolerance, BankTreeTolerance, RuneShopTolerance, PortalTolerance, banked, StartTime, LastProg: integer;
      Pointers: tPointerSet;
      logTime:integer;

    procedure SetupDTMs;
    begin
      P07_PlayerName := '';
      P07_PlayerPass := '';
      BankSymbolColor := 4965868;       BankSymbolTolerance := 5;
      BankTreesColor := 1586544;        BankTreeTolerance := 10;
      RuneShopSymbolColor := 2265855;   RuneShopTolerance := 50;
      PortalColor := 1792734;           PortalTolerance := 100;
      RuneShopDTM := DTMFromString('mWAAAAHicY2FgYChkQuA8IG4AilUDcTMDhP1/khLDDxkVhkOMLGBaAyiGjBnRMAgAAP+kCVo=');
      BankDTM := DTMFromString('mWAAAAHicY2FgYFjAxsCwFIhns0HYMowQLAvESkD85qg3w6HN+8AYxJYD6kHGjGgYBABx2gvy');
      TreeDTM := DTMFromString('mggAAAHicY2NgYJjExMDQCcRNQNwIxB1A3AoSA8rVQnElFNcBsX+KE4M3FBeYSoDx91evGESActgwIw4MAQBqog3L');
      PortalDTM := DTMFromString('mQwAAAHicY2ZgYChhYmDIBeJyIDZlgGBLILb29WK4FyUNxm5APgwzImEgAAD34wZS');

      SetupSRLStats(1324, 'Anonymous', 'anon1337');
      SRL_SixHourFix := True;
      SMART_FixSpeed := True;
      AddonTerminate('freeMyDTMs');
      MarkTime(LastProg);
      MarkTime(StartTime);
      MarkTime(logTime);
      banked := 0;
      SetUpSRL;
      SetupP07Include;
    end;


    function P07_IsMoving: boolean;
    begin
      Result := Animating(IntToBox(P07_MMCX - 30, P07_MMCY - 30, P07_MMCX + 30, P07_MMCY + 30), 50, 100);
    end;

    function P07_NotMoving: boolean;
    begin
      Result := not P07_IsMoving;
    end;

    function P07_PercentColorMMEx(Color, Tol, StartRadial, EndRadial, StartRadius, EndRadius: Integer): integer;
    var
      TPA: TPointArray;
    begin
      FindColorsTolerance(TPA, Color, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, Tol);
      FilterPointsPie(TPA, StartRadial, EndRadial, StartRadius, EndRadius, P07_MMCX, P07_MMCY);
      Result := ceil((Length(TPA) * 100) / ((Pi * (EndRadius * EndRadius)) * ((EndRadial - StartRadial) / 360.0) - ((Pi * (StartRadius * StartRadius)) * ((EndRadial - StartRadial) / 360.0))));

    end;

    function P07_PercentColorMM(Color, Tol: Integer): Integer;
    begin
      Result := P07_PercentColorMMEx(Color, Tol, 0, 360, 0, 76);
    end;

    function P07_PercentBlackMM: Integer;
    begin
      Result := P07_PercentColorMM(0, 5);
    end;

    procedure P07_SetRun(Run: Boolean);
    begin
      if not P07_TabInventoryTab(12) then
        Writeln('cannot set run');
      if CountColorTolerance(1711220, 626, 414, 656, 445, 5) < 10 then
        MouseBox(626, 414, 656, 445, MOUSE_LEFT);
      P07_TabInventoryTab(4)
    end;

    procedure DebugStr(Str: string);
    begin
      if Debug then
        Writeln(MSToTime(TimeFromMark(StartTime), Time_Bare) + Str);
    end;

    function InEssMine: boolean;
    begin
      Result := (P07_PercentBlackMM > 25);
    end;

    function seeMMSymbol(var x: integer; var y: integer; DTM, color, tolerance: integer; name: string): boolean;
    begin
      SymbolAccuracy := 0.7;
      if findsymbol(x, y, name) then
      begin
        SMART_DrawBoxEx(false,false,inttobox(x-5,y-5,x+5,y+5),clGreen);
        debugstr('  [INFO]    symbol found: ' + name);
        result := true;
        exit;
      end;
      if findDTM(DTM, x, y, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2) then
      begin
        result := true;
        SMART_DrawBoxEx(false,false,inttobox(x-5,y-5,x+5,y+5),clGreen);
        debugstr('  [INFO]    DTM found: ' + name);
        exit;
      end
      else
      begin
        if FindColorTolerance(x, y, color, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, tolerance) then
        begin
          result := true;
          SMART_DrawBoxEx(false,false,inttobox(x-5,y-5,x+5,y+5),clGreen);
          debugstr('  [INFO]    Color found: ' + name);
        end
        else
        begin
          result := false;
        end;
      end;
    end;

    function FindColorMinimap(color: integer; tolerance: integer): TpointArray;
    var
      TPA: TpointArray;
    begin
      if FindColorsTolerance(TPA, Color, P07_MMX1, P07_MMY1, P07_MMX2, P07_MMY2, Tolerance) then
        Result := TPA;
    end;

    function InRuneShop: Boolean;
    var
      j: TPoint;
      x, y: integer;
    begin
      if not seeMMSymbol(x, y, RuneShopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop') then
        result := false;
      j := IntToPoint(P07_MMCX, P07_MMCY);
      Result := (Abs(x - j.x) < 20) and (Abs(y - j.y) < 10);
    end;

    function InBank: Boolean;
    var
      j: TPoint;
      x, y: integer;
    begin
      if not seeMMSymbol(x, y, BankDTM, BankSymbolColor, BankSymboltolerance, 'bank') then
        result := false;
      j := IntToPoint(P07_MMCX, P07_MMCY);
      Result := (Abs(x - j.x) < 20) and (Abs(y - j.y) < 20);
    end;

    function AtPortal: boolean;
    var
      j: TPoint;
      x, y: integer;
    begin
      if not seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
        result := false;
      j := IntToPoint(P07_MMCX, P07_MMCY);
      Result := (Abs(x - j.x) < 20) and (Abs(y - j.y) < 20);
    end;

    procedure WalktoAubury;
    var
      x, y: integer;
      angle: extended;
    begin
      P07_makeCompassNorth;
      if seeMMSymbol(x, y, RuneshopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop') then
      begin
        debugstr('  [INFO] Found shop ');
        Mouse(x, y, 2, 2, mouse_left);
        wait(5000);
        P07_setRun(TRUE);
        P07_FFlag;
        waitfunc(@ P07_NotMoving, 100, 20000);
        P07_FFlag;
        DebugStr('  [INFO] Should be in the shop now');
      end
      else
      begin
        if FindDTMRotatedSE(TreeDTM, x, y, MMX1, MMY1, MMX2, MMY2, - pi()/4, pi()/4, pi()/16, angle) then
        begin
          debugstr('  [INFO] Found tree DTM');
          Mouse(x, y, 2, 2, mouse_left);
          P07_FFlag;
          waitfunc(@ P07_NotMoving, 100, 20000);
          P07_FFlag;
          debugstr('  [INFO] Should be south of the bank');
        end
        else
        begin
          writeln('***[WARINING]*** bad things, cant see shop or trees forcing path');
          Mouse(MMCX, MMCY + 30, 2, 2, mouse_left);
          P07_FFlag;
          waitfunc(@ P07_NotMoving, 100, 20000);
          P07_FFlag;
          debugstr('  [INFO] Should be south of the bank');
        end;
      end;
    end;

    procedure BankEssence;
    var
      CTS, I, x, y: Integer;
      TPA: TPointArray;
      ATPA: array of TPointArray;
    begin
      if P07_BankScreen then
      begin
        P07_Deposit(2, 28, TRUE);
        exit;
      end;
      P07_MakeCompassNorth;
      P07_MakeCameraAngleHigh;
      begin
        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
        SetColorSpeed2Modifiers(0.06, 0.85);
        FindColorsSpiralTolerance(MSCX, MSCY, TPA, 4663862, MSX1, MSY1, MSX2, MSY2, 8);
        ColorToleranceSpeed(CTS);
        wait(100);
        SMART_DrawDotsEx(false,TPA,clred);
        ATPA := SplitTPA(TPA, 5);
        if length(ATPA) < 5 then
        begin
          Mouse(P07_MMCX, P07_MMCY + 15, 0, 0, mouse_left);
          exit;
        end;
        for I := 0 to High(ATPA) do
        begin
          if Length(ATPA[i]) < 20 then
            Continue;
          wait(100);
          MiddleTPAEx(ATPA[i], x, y);
          MMouse(x, y, 2, 2);
          wait(50);
          if (P07_IsUpTextMultiCustom(['alk-to', 'anker'])) then
          begin
            clickMouse2(MOUSE_RIGHT);
            wait(300);
            if P07_ChooseOptionMulti(['Bank Banker']) then
            begin
             SMART_DrawBoxEx(false,false,getTPABounds(ATPA[i]),clGreen);
              writeln('bank is open');
              wait(300);
              P07_Deposit(2, 28, TRUE);
              banked := banked + 28 - PicInInvent;
              Stats_IncVariable('Pure Essence (Mined)', 28-PicInInvent);
              //writeln(banked);
              debugstr('  [INFO] updated banked ess log');
            end;
            Break;
          end;
          wait(100);
        end;
      end;
    end;

    procedure WalktoBank;
    var
      x, y: integer;
      angle: extended;
    begin
      P07_makeCompassdegree(randomrange( - 20, 20));
      if seeMMSymbol(x, y, BankDTM, BankSymbolColor, BankSymboltolerance, 'bank') then
      begin
        debugstr('  [INFO] Found bank');
        Mouse(x, y, 2, 2, mouse_left);
        P07_setRun(TRUE);
        waitfunc(@ P07_NotMoving, 100, 20000);
        P07_FFlag;
      end
      else
      begin
        if FindDTMRotatedSE(TreeDTM, x, y, MMX1, MMY1, MMX2, MMY2, - pi()/4, pi()/4, 0.1, angle) then
        begin
          debugstr('  [INFO] Found tree colors');
          Mouse(x, y, 2, 2, mouse_left);
          waitfunc(@ P07_NotMoving, 100, 20000);
          P07_FFlag;
          debugstr('  [INFO] Should be south of the bank');
        end
        else
        begin
          writeln('***[WARINING]*** bad things, cant see bank or trees forcing path');
          writeln('UPDATE your bank and tree DTM''s and colors');
          Mouse(MMCX + 30, MMCY - 30, 2, 2, mouse_left);
          waitfunc(@ P07_NotMoving, 100, 20000);
          P07_FFlag;
          debugstr('  [INFO] Should be south of the bank');
        end;
      end;
    end;

    procedure teleportAubury;
    var
      CTS, I, x, y: Integer;
      TPA: TPointArray;
      ATPA: array of TPointArray;
    begin
      P07_MakeCompassNorth;
      P07_MakeCameraAngleHigh;
      begin
        if CountColorTolerance(5923683, MSX1, MSY1, MSX2, MSY2, 20) > 20000 then
        begin
          debugstr('  [INFO] Outside ess shop trying to re-enter');
          if seeMMSymbol(x, y, RuneshopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop') then
            Mouse(x, y + 15, 5, 10, mouse_left);
          P07_FFlag;
        end;
        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
        SetColorSpeed2Modifiers(0.19, 0.92);
        FindColorsSpiralTolerance(MSCX, MSCY, TPA, 1226735, MSX1, MSY1, MSX2, MSY2, 10);
        ColorToleranceSpeed(CTS);
        SMART_DrawDotsEx(false,TPA,clred);
        ATPA := SplitTPA(TPA, 5);
        for I := 0 to High(ATPA) do
        begin
          if length(ATPA[i]) < 5 then
            continue;
          MiddleTPAEx(ATPA[i], x, y);
          MMouse(x, y, 2, 2);
          wait(50);
          SMART_DrawBoxEx(false,false,getTPABounds(ATPA[i]),clGreen);
          if (P07_IsUpTextMultiCustom(['alk-to', 'bury'])) then
          begin
            clickMouse2(mouse_right);
            wait(300);
            if P07_ChooseOptionMulti(['Teleport']) then
              debugstr('  [INFO] Chose Option Teleport');
              P07_FFlag;
            Break;
          end;
          wait(100);
        end;
      end;
    end;

    procedure startMining;
    var
      i, c, x, y: integer;
    begin
      //writeln(GetBlackChatMessage);
      if P07_Containstext(GetBlackChatMessage, ['rock', 'ine', 'axe', 'pic']) and not P07_InvFull then
        exit;
      P07_makeCompassdegree(60);
      c := 0;
      if seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
      begin
        debugstr('  [INFO] Found portal on MM');
        Mouse(round((x + P07_MMCX) / 2), round((y + P07_MMCY) / 2), 2, 2, MOUSE_LEFT);
        P07_FFlag;
        debugstr('  [INFO] Correcting position');
        MiddleTPAEx(FindColorMinimap(11513529, 200), x, y);
        Mouse(x, y, 2, 2, MOUSE_LEFT);
        P07_FFlag;
        P07_MakeCameraAngleLow;
        MMouse(MSCX + randomrange( - 100, 100), MSCY + randomrange( - 150, 0), 0, 0);
        repeat
          inc(c);
          P07_makeCompassdegree(P07_getcompassangle + 30);
          wait(50);
          if P07_Containstext(P07_getUptext, ['Mine', 'Rune', 'Essence']) then
          begin
            clickmouse2(mouse_left);
            debugstr('  [INFO] Mining Essence');
            wait(500);
            break;
          end;
        until (C > 12);
      end
      else
      begin
        debugstr('  [INFO] We are not at an ess node, trying to find one');
        c := 45 + 90 * randomrange(0, 3);
        for i := 0 to 2 do
        begin
          Mouse(MMCX + round(50 * cos(c)), MMCY - round(50 * sin(c)), 5, 5, mouse_left);
          P07_FFlag;
          if seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
          begin
            debugstr('  [INFO] We are almost at an ess node');
            exit;
          end;
        end;
      end;
    end;

    procedure findPortal;
    var
      MTPA: TpointArray;
      CTS, I, x, y: Integer;
      TPA: TPointArray;
    begin
      if seeMMSymbol(x, y, PortalDTM, PortalColor, PortalTolerance, 'underground') then
      begin
        debugstr('  [INFO] Found portal color on MM');
        if not atportal then
          Mouse(x, y, 5, 5, mouse_left);
        P07_FFlag;
        debugstr('  [INFO] Standing by portal');
        P07_makeCameraAngleHigh;
        P07_makeCompassDegree(P07_getCompassAngle + randomrange( - 40, 40));
        CTS := GetColorToleranceSpeed;
        ColorToleranceSpeed(2);
        SetColorSpeed2Modifiers(0.20, 3.19);
        FindColorsSpiralTolerance(MSCX, MSCY, TPA, 10868705, MSX1, MSY1, MSX2, MSY2, 11);
        ColorToleranceSpeed(CTS);
        SMART_DrawDotsEx(false,TPA,clBlue);
        wait(100);
        x := MiddleTPA(TPA).x;
        y := MiddleTPA(TPA).y;
        MMouse(x, y, 2, 2);
        if (P07_IsUpTextMultiCustom(['use', 'ortal'])) then
        begin
          SMART_DrawBoxEx(false,false,getTPABounds(TPA),clGreen);
          wait(100);
          clickMouse2(MOUSE_LEFT);
          wait(200);
          if not InessMine then
            debugstr('  [INFO] Teleported to Varrock');
          exit;
        end;
        wait(100);
      end
      else
      begin
      end;
    end;
    procedure Random_Abiss;
    var c,d:integer;
    begin
    c:=0; d:=0;
    if P07_PercentBlackMM<75 then exit;
    writeln('[WARNING] Random Found: Abiss Attempting to Solve');
    P07_makeCompassNorth;
    P07_MakeCameraAngleLow;
    MMouse(250,106,5,5);
          P07_makeCompassdegree(P07_getcompassangle + 10);
          wait(50);
          if P07_Containstext(P07_getUptext, ['Operate', 'Appendage']) then
          begin
            repeat
            inc(d);
            if P07_Containstext(P07_getUptext, ['Operate', 'Appendage']) then
            clickmouse2(mouse_left);
            wait(700);
            until (P07_PercentBlackMM<75) or (d>15);
          end;

    end;
    function getState(): Integer;
    var
      angle: extended;
      x, y: integer;
    begin
    P07_TabInventoryTab(4);
    Random_abiss;  //check for abiss random
      if not InEssMine then
        if not (seeMMSymbol(x, y, BankDTM, BankSymbolColor, BankSymboltolerance, 'bank') or seeMMSymbol(x, y, RuneShopDTM, RuneShopSymbolColor, RuneShopTolerance, 'magic shop')) then
          if not FindDTMRotatedSE(TreeDTM, x, y, MMX1, MMY1, MMX2, MMY2, - 180, 180, 1, angle) then
          begin
            writeln('[FATAL] terminal error, cant see bank or rune shop ending script now');
            terminatescript;
          end;
      if P07_invFull then
      begin
        if InEssMine then
        begin
          result := PORTAL;
          exit;
        end
        else if not inbank then
        begin
          result := WALKBANK;
          exit;
        end
        else
        begin
          result := BANK;
          exit;
        end;
      end;
      if not InEssMine then
      begin
        if not inruneshop then
        begin
          result := WALKESS;
          exit;
        end
        else
        begin
          result := AUBURY;
          exit;
        end;
      end
      else
      begin
        result := MINEESS;
        exit;
      end;
    end;

    procedure Loop();
    begin
      with Pointers do
      begin
        case getState() of
          WALKBANK:
            begin
              name := 'Walk:Bank';
              Proc := @ WalktoBank;
            end;
          BANK:
            begin
              name := 'Bank Essence';
              Proc := @ BankEssence;
            end;
          WALKESS:
            begin
              name := 'Walk:Aubury';
              Proc := @ walktoAubury;
            end;
          MINEESS:
            begin
              name := 'Mine essence';
              Proc := @ startMining;
            end;
          AUBURY:
            begin
              name := 'Teleport:Essence';
              Proc := @ teleportAubury;
            end;
          PORTAL:
            begin
              name := 'Teleport:Varrock';
              Proc := @ findPortal;
            end;
        end;
      end;
    end;

    procedure proggy;
    var
      t: integer;
      timestr:string;
    begin
     // markTime(lastProg);
      wait(10);
      //moneyG := round(t * CostPerEssence * 3600000 / TimeFromMark(StartTime));
      t := banked + P07_invCount - PicInInvent;
      //writeln('Time Running: ' + MSToTime(TimeFromMark(StartTime), Time_Bare));
      //writeln('Essence Mined: ' + inttostr(t) + ' (' + inttostr(round(t * 3600000 / TimeFromMark(StartTime))) + ')');
      //writeln('Experience: ' + inttostr(t * 5) + ' (' + inttostr(round(5 * t * 3600000 / TimeFromMark(StartTime))) + ')');
      //writeln('Money Gained : ' + inttostr(t * CostPerEssence) + ' (' + floattostr(moneyG) + ')');
      SMART_ClearCanvas;
      SMART_DrawText(360,360,'smallchars','Essence Mined: ' + inttostr(t),clBlack);
      SMART_DrawTextEx(false,360,380,'smallchars','Exp earned: ' + inttostr(t * 5),clBlack);
      SMART_DrawTextEx(false,360,400,'smallchars','Money Gained : ' + inttostr(t * CostPerEssence),clBlack)
      SMART_DrawTextEx(false,360,420,'smallchars','Time Running : '+Copy(MSToTime(TimeFromMark(StartTime),Time_Bare),0,5),clBlack)

      if TimeFromMark(LogTime) > (5*60000) then begin
      marktime(LogTime);
      Stats_Commit;
      end;
    end;

    procedure freeMyDTMs;
    begin
      freeDTM(RuneShopDTM);
      freeDTM(BankDTM);
      freeDTM(TreeDTM);
      freeDTM(PortalDTM);
      //MMouse(240,105,10,10);
    end;

    begin
      SetupDTMs;
      writeln('script Version '+floattostr(Version)+ ' Starting');
      P07_loginPlayer;
      wait(1000);
      while P07_LoggedIN do
      begin
        //if TimeFromMark(lastProg) > 60000 then
          proggy;
        Loop();
        with Pointers do
        begin
         // writeLn(MSToTime(TimeFromMark(StartTime), Time_Bare) + ' Entering ' + name + ' cycle.');
          Proc() wait(1000);
        end;
      end;
      if TimefromMark(lastprog)<20000 then begin
      writeln('Do not post about this Error in the thread');
      writeln('You have not read the thread and updated globals.simba');
      end;
    end.

  18. #18
    Join Date
    Dec 2011
    Posts
    4
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Quote Originally Posted by Alphatrazz View Post
    Error: Exception: Access violation at line 78
    The following DTMs were not freed: [0, 1, 2, 3, SRL - Lamp bitmap, 5, 6, 7, 8, 9]
    The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap, 5]

    help please?
    trying to rune essence miner

    begin
    if (not SMART_DebugSetup) then
    SMART_SetupDebug;

    If (SMART_CANVAS.TransparentColorSet) then
    SMART_CANVAS.FastDrawClear(SMART_CANVAS.GetTranspa rentColor)
    else
    SMART_CANVAS.FastDrawClear(0);
    end;
    Also experiencing this issue. Has the issue been resolved?
    Last edited by Scripts Pl0x; 03-05-2013 at 05:39 AM.

  19. #19
    Join Date
    Jan 2012
    Posts
    369
    Mentioned
    6 Post(s)
    Quoted
    91 Post(s)

    Default

    Quote Originally Posted by Scripts Pl0x View Post
    Also experiencing this issue. Has the issue been resolved?
    yes as Yohojo told you all, you need to remove all the SMART_ painting functions from the script in order for your script to work with SMART8, if not try installing SMART7.2 which supports canvas drawing.

  20. #20
    Join Date
    Dec 2011
    Location
    New York, USA
    Posts
    1,242
    Mentioned
    12 Post(s)
    Quoted
    193 Post(s)

    Default

    The script would have worked just fine if you read the instructions on the essence miner thread

  21. #21
    Join Date
    Mar 2006
    Location
    Belgium
    Posts
    3,564
    Mentioned
    111 Post(s)
    Quoted
    1475 Post(s)

    Default

    Quote Originally Posted by Nebula View Post
    The script would have worked just fine if you read the instructions on the essence miner thread
    80% of the threads here could be fixed if they read the instructions.
    U gotta give in eventually

    Creds to DannyRS for this wonderful sig!

  22. #22
    Join Date
    Dec 2011
    Posts
    4
    Mentioned
    0 Post(s)
    Quoted
    1 Post(s)

    Default

    Quote Originally Posted by Nebula View Post
    The script would have worked just fine if you read the instructions on the essence miner thread
    I have done that, and the issue still remains.

    Quote Originally Posted by YoHoJo View Post
    Just comment out all of the canvas/debug related lines by putting a // in font of them, and then try.
    Quote Originally Posted by speedster View Post
    yes as Yohojo told you all, you need to remove all the SMART_ painting functions from the script in order for your script to work with SMART8, if not try installing SMART7.2 which supports canvas drawing.
    Could you be more specific as to the lines of code i am removing pls? I'm trying to use a script only supported by SMART8

  23. #23
    Join Date
    Mar 2013
    Posts
    2
    Mentioned
    0 Post(s)
    Quoted
    4 Post(s)

    Default

    I have read every word in the instructions for this "[Essence Miner][2007] Essence Harvester" and I still receive the error:

    Simba Code:
    Error: Exception: Access violation at line 78
    The following DTMs were not freed: [0, 1, 2, 3, SRL - Lamp bitmap, 5, 6, 7, 8, 9]
    The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap, 5]

    Speedster,
    How do I remove all of the "SMART_painting" functions? Do I just search for the text "SMART_painting" and every line with those words in it should I delete?

    Thanks for those who care enough to help.

  24. #24
    Join Date
    Jan 2012
    Posts
    369
    Mentioned
    6 Post(s)
    Quoted
    91 Post(s)

    Default

    Quote Originally Posted by obi5 View Post
    I have read every word in the instructions for this "[Essence Miner][2007] Essence Harvester" and I still receive the error:

    Simba Code:
    Error: Exception: Access violation at line 78
    The following DTMs were not freed: [0, 1, 2, 3, SRL - Lamp bitmap, 5, 6, 7, 8, 9]
    The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Flag bitmap, SRL - NavBar Bitmap, SRL - Options Bitmap, 5]

    Speedster,
    How do I remove all of the "SMART_painting" functions? Do I just search for the text "SMART_painting" and every line with those words in it should I delete?

    Thanks for those who care enough to help.
    Remove all the SMart_* Stuff, it is SMART_ClearCanvas, Smart_Debug... , Smart_Draw, SMart_Drawtext.


    Do not delete these :
    Smart_Server
    Smart_Members
    Smart_Signed
    Smart_SuperDetail
    Smart_FixSpeed

  25. #25
    Join Date
    Mar 2013
    Posts
    2
    Mentioned
    0 Post(s)
    Quoted
    4 Post(s)

    Default

    Quote Originally Posted by speedster View Post
    Remove all the SMart_* Stuff, it is SMART_ClearCanvas, Smart_Debug... , Smart_Draw, SMart_Drawtext.


    Do not delete these :
    Smart_Server
    Smart_Members
    Smart_Signed
    Smart_SuperDetail
    Smart_FixSpeed
    Does that mean that I am forced to run this in my browser and not in the SMART window?

    Also, there are MANY things with SMART in them.... do I really delete them all except the ones specifically mentioned?

    Remember, there are no stupid questions!

    Thanks
    Last edited by obi5; 03-06-2013 at 09:40 PM.

Page 1 of 2 12 LastLast

Thread Information

Users Browsing this Thread

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

Posting Permissions

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