SRL Archive - OSR Help

Error: Exception: Access violation at line 78


Alphatrazz

2013-03-04 02:57:07

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.GetTransparentColor)
else
SMART_CANVAS.FastDrawClear(0);
end;

YoHoJo

2013-03-04 03:00:57

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
^Like that

SlaveCooking

2013-03-04 03:05:43

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);


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;

Alphatrazz

2013-03-04 03:06:12

sry edited my post

YoHoJo

2013-03-04 03:08:08

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.

SlaveCooking

2013-03-04 03:12:59

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

{$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;

Alphatrazz

2013-03-04 03:18:50

 {$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

Alphatrazz

2013-03-04 03:22:28

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

YoHoJo

2013-03-04 03:26:21

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.

Alphatrazz

2013-03-04 03:40:14

ive done all of what you said.

Alphatrazz

2013-03-04 03:43:21

 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.

YoHoJo

2013-03-04 03:48:54

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

Alphatrazz

2013-03-04 03:53:02

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

Alphatrazz

2013-03-04 04:00:21

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

Alphatrazz

2013-03-04 04:13:31

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.

YoHoJo

2013-03-04 04:14:22

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!

Alphatrazz

2013-03-04 04:26:57

 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.

Scripts Pl0x

2013-03-04 23:20:34

From: Alphatrazz
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.GetTransparentColor)
else
SMART_CANVAS.FastDrawClear(0);
end;


Also experiencing this issue. Has the issue been resolved?

speedster

2013-03-05 03:07:39

From: Scripts Pl0x
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.

Nebula

2013-03-05 10:00:49

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

Sjoe

2013-03-05 10:04:22

From: Nebula
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 :(

Scripts Pl0x

2013-03-05 19:59:47

From: Nebula
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.

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

From: speedster
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

obi5

2013-03-06 10:00:41

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

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. :)

speedster

2013-03-06 10:09:31

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

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

obi5

2013-03-06 10:11:08

From: speedster
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

Sjoe

2013-03-06 10:13:46

From: obi5
Does that mean that I am forced to run this in my browser and not in the SMART window?


No

(message too short)