SRL Archive - OSR Help

Invalid number of parameters at line 292 Compiling failed.


Yearly

2013-03-17 03:51:16

Hey guys. I can't seem to get any of the 2007 bots to work.
I've installed everything, all of the includes, etc.
When I try to load the 2007 pest control bot, it says this:

[Error] C:\Simba\Includes\SRL/SRL/misc/SmartParams.Simba(293:131): Invalid number of parameters at line 292
Compiling failed.

The entire thing says this:

(*
Smart Params
============

.. contents::

*)

{$DEFINE SRL_SMART}
{$DEFINE SMART}
{$loadlib libsmartremote}

(*
GetSmartParams
~~~~~~~~~~~~~~

.. code-block:: pascal

function GetSmartParams: TStringArray;

Grabs The Correct Parameters For passing to the SmartClient.

.. note::

By: Brandon.
Modified By: Mormanman, Benland100.

Example:

.. code-block:: pascal

*)
function GetSmartParams: TStringArray;
var
Params: TStringArray;
Page: String;
begin
Page := 'http://oldschool33.runescape.com/,j1';
Params := Explode(',', Page);
Result := Params;
end;

(*
FixSmartSpeed
~~~~~~~~~~~~~

.. code-block:: pascal

procedure FixSmartSpeed;

Fixes Smart's Loading Speed.
Moves the Mouse & Adjusting the Canvas Refresh rate.

.. note::

By: Brandon.

Example:

.. code-block:: pascal

*)
procedure FixSmartSpeed;
var
T: Integer;
begin
T:= GetSystemTime + 2000;
While (Not SmartEnabled) Do
begin
if (GetSystemTime >= T) Then
Break;
Wait(500);
end;

While (GetColor(382, 252) = 0) Do
begin
If RSReady then
Break;
SmartSetRefresh(SmartGetRefresh + 1);
MMouse(4, 4, 0, 0);
SmartSetRefresh(SmartGetRefresh - 1);
if (GetSystemTime >= T) Then
Break;
Wait(500);
end;
end;

(*
SmartGetClientIDs
~~~~~~~~~~~~~~~~~

.. code-block:: pascal

function SmartGetClientIDs: TIntegerArray;

Grabs All Client ID's of the current remote.

.. note::

By: Mormanman.

Example:

.. code-block:: pascal

*)
function SmartGetClientIDs: TIntegerArray;
var
I, Count: Integer;
begin
Count := SmartGetClients(True);
SetLength(Result, Count);
If (Count > 0) then
For I:= 0 to (Count - 1) do
Result := SmartClientID(I);
end;

(*
SmartKillClients
~~~~~~~~~~~~~~~~

.. code-block:: pascal

procedure SmartKillClients;

Kills all Smart clients.

.. note::

By: Mormanman.

Example:

.. code-block:: pascal

*)
procedure SmartKillClients;
var
IDs: TIntegerArray;
I: Integer;
begin
IDs := SmartGetClientIDs;
For I := High(IDs) DownTo 0 Do
If SmartKillClient(IDs) Then
Writeln('Killed Client: ' + ToStr(IDs))
else
Writeln('Failed To Kill Client: ' + ToStr(IDs));
end;

(*
SixHourFix
~~~~~~~~~~

.. code-block:: pascal

procedure SixHourFix;

Kills The Current Smart Client and Restarts it.
Fixes the 6 hour login.

.. note::

By: Brandon.

Example:

.. code-block:: pascal

*)
procedure FreeSRL; Forward;
procedure SetupSRL; Forward;
procedure SixHourFix;
var
Trash: TVariantArray;
Refresh: Integer;
begin
FreeSRL;
Refresh := SmartGetRefresh;
SmartKillClient(SmartCurrentClient);
SetupSRL;

try
CallProc('SMART_FreeDebug', Trash);
CallProc('SMART_SetupDebug', Trash);
except
end;

SmartSetRefresh(Refresh);

try
if (not LoginPlayer) then
srl_Warn('SixHourFix', 'Could not log in player', warn_Terminate);
except
srl_Warn('SixHourFix', 'Players not declared', warn_Terminate);
end;
end;


(*
PairSmart
~~~~~~~~~

.. code-block:: pascal

function PairSmart(ID: Integer): Boolean;

Pairs A Client To The Current Controller.

.. note::

By: Benland100, Brandon.

Example:

.. code-block:: pascal

*)
function PairSmart(ID: Integer): Boolean;
var
I, Count: Integer;
IDs: TIntegerArray;
begin
IDs := SmartGetClientIDs;
Count := Length(IDs);
If (Count > 0) then
For I:= 0 To (Count - 1) Do
If (IDs = ID) and SmartPairClient(ID) then
begin
SetEIOSTarget('libsmartremote', ToStr(ID));
Writeln('Paired with SMART[' + ToStr(ID) + ']');
Result := True;
Exit;
end;
Writeln('** Failed To Pair Client: ' + ToStr(ID) + '; Client Does Not exist **');
end;

(*
InitSmart
~~~~~~~~~

.. code-block:: pascal

function InitSmart(ForceNew: Boolean): Integer;

Initializes A Smart Remote Client.
Terminates the current script upon failure.
Terminates all clients of the current remote upon failure.
ForceNew Creates a new client.

.. note::

By: Benland100, Mormanman, Brandon.

Example:

.. code-block:: pascal

*)
function InitSmart(ForceNew: Boolean): Integer;
var
I, Count: Integer;
IDs: TIntegerArray;
Params: TStringArray;
begin
If (Not ForceNew) then
begin
Ids := SmartGetClientIDs;
Count := Length(IDs);
If (Count > 0) then
For I:= 0 To (Count - 1) Do
begin
If SmartPairClient(IDs) then
begin
Result := IDs;
SetEIOSTarget('libsmartremote', ToStr(Result));
Writeln('Paired with SMART[' + ToStr(Result) + ']');
Exit;
end;
end;
end;

Params := GetSmartParams;
If (Length(Params) <> 2) then
begin
Writeln('** Failed To Grab Smart Parameters **');
Writeln('** Please check your internet connection/firewall **');
TerminateScript;
Exit;
end;

{$IFDEF SMART8}
Result := SmartSpawnClient(ReplaceWrap(PluginPath, '\', '/', [rfReplaceAll]), Params[0], ',' + Params[1], 765, 503, 's', '', '');
{$ELSE} (this is line 292)
Result := SmartSpawnClient(ReplaceWrap(PluginPath, '\', '/', [rfReplaceAll]), Params[0], ',' + Params[1], 765, 503, 's', '', '', -1);
{$ENDIF}

If (Result > 0) Then
begin
try
SetEIOSTarget('libsmartremote', ToStr(Result));
Writeln('Loading SMART: ' + Params[0] + Params[1]);
except
WriteLn('** Fatal Error: Pairing Clients; Terminating Script **');
TerminateScript;
end;
end else
begin
Writeln('** Smart Cannot Spawn Clients **');
TerminateScript;
end;
end;

(*
SetupSmart
~~~~~~~~~~

.. code-block:: pascal

procedure SetupSmart(ForceNewClient: Boolean);

Sets Up a new Smart Client and waits until it's on screen.
Terminates The current script upon failure.

.. note::

By: Mormanman.
Modified By: Brandon.

Example:

.. code-block:: pascal

*)
procedure SetupSmart(ForceNewClient: Boolean);
var
T: Integer;
begin
T:= GetSystemTime + 120000;
Smart_CurrentClient:= InitSmart(ForceNewClient);
if (Smart_CurrentClient <= 0) then
begin
writeln('*** Smart Failed To Load ***');
TerminateScript;
end;

if (SRL_SixHourFix) then
SRL_Procs[SRL_OnRSUpdate]:= @SixHourFix;

While (GetColor(382, 252) <> 0) Do
begin
if RSReady then
break;

Wait(100);
if (GetTimeRunning >= 120000) then
begin
Writeln('*** Failed To Detect Clients ***');
TerminateScript;
end;
end;
end;





{* Functions Below Here are From the Original Smart.Simba *}


{*
By: Unknown Author.
Finds a Windows by partial title and Sets it as the target.
*}
function FindAndSetTarget(TitlePrefix: String; SetAsTarget: Boolean): Boolean;
var
T : TSysProcArr;
I : Integer;
begin
T := GetProcesses;
for I := High(T) downto 0 do
if Pos(TitlePrefix, T.Title) <> 0 then
begin
Result := True;
if SetAsTarget then SetTarget(T);
Exit;
end;
end;

{*
By: Unknown Author.
Gets the position of the actual mouse (Not Smart's Mouse).
*}
procedure GetRealMousePos(var X, Y : Integer);
var
KMTarget, ITarget: Integer;
begin
{$IFDEF LAPE}
writeln('GetRealMousePos not implemented yet in SRL-5 Lape!');
TerminateScript;
{$ELSE}
KMTarget := GetKeyMouseTarget;
ITarget := GetImageTarget;
FindAndSetTarget('SMART', True);
GetTClient.IOManager.GetMousePos(X, Y);
FreeTarget(GetImageTarget);
SetKeyMouseTarget(KMTarget);
SetImageTarget(ITarget);

// These are not universial offsets, but works somewhat for some Windows themes.
X := X - 8;
Y := Y - 25;
{$ENDIF}
end;

{*
By: Unknown Author.
Returns if the "Real Mouse" (Not Smart's Mouse) Is Within a given Box.
*}
function IsRealMouseInBox(B : TBox): Boolean;
var
P : TPoint;
begin
GetRealMousePos(P.X, P.Y);
Result := PointInBox(P, B);
end;

So uhh. What do I do?

Justin

2013-03-17 04:22:42

Make sure you have the SMART8 plugin and make sure you have {$DEFINE SMART8} at the top of the script

azaghul

2013-03-25 15:34:15

I have the same error I followed Yoho's guide and put 8 infront of the smart? Plz help

The Bot

2013-03-25 15:48:37

From: azaghul
I have the same error I followed Yoho's guide and put 8 infront of the smart? Plz help


SMART is completely acting up for me at the moment. If there's a script you'd like to use, just remove the {$define SMART} at the top of the script and add ActivateClient; to the main loop. Then use the green crosshairs to target your browser with Runescape open.