:S I'd expect include problems from guys with the green name but not guys with the orange ones.. Oh well.
If I edit the include, I get complaints about "not being able to install the include", "too many changes to the include", "too hard to figure out", "too many files to replace", "too many changes for SRL-6", "Not working in Lape". If I don't edit the include, I get complaints about "not loading", "compiling error at: 'some line here'", "Can't load plugins anymore", "Old include was better".
All of the above is going to confuse me. I can't please devs and I can't please users and I can't please everyone at the same time.
Now don't get me wrong. I have no problem replying to each and every problem or solving them at all. As shown previously. However, I don't like being confused.
But here goes:
If you want to load Smart v8.1, change SmartParams.simba LINE 294 to:
Simba Code:
Result := SmartSpawnClient(ReplaceWrap(PluginPath, '\', '/', [rfReplaceAll]), Params[0], ',' + Params[1], 765, 553, 's', '', '', '');
If you want to load OpenGL or any plugin in Smart v8.1, change SmartParams.simba LINE 294 to:
Simba Code:
Result := SmartSpawnClient(ReplaceWrap(PluginPath, '\', '/', [rfReplaceAll]), Params[0], ',' + Params[1], 765, 553, 's', '', '', 'OpenGL32.dll');
If you want to load multiple plugins in Smart v8.1, change SmartParams.simba LINE 294 to:
Simba Code:
Result := SmartSpawnClient(ReplaceWrap(PluginPath, '\', '/', [rfReplaceAll]), Params[0], ',' + Params[1], 765, 553, 's', '', '', 'OpenGL32.dll, DirectX.dll, SomePlugin.dll, etc.dll');
So on and so forth. These were already mentioned by Benland100 and myself :l exactly 11 months ago..
If you want the easy way out, then copy the following.. I only changed 1 line in Smart.Simba and added 2 variables; In SRL.Simba I only added a break.
SmartParams.Simba:
Simba Code:
(*
Smart Params
============
.. contents::
*)
{$DEFINE SRL_SMART}
{$DEFINE SMART}
{$loadlib libsmartremote}
var
Smart_Plugins: String;
{$IFDEF GLHOOK}
const InitSeq = '';
{$ELSE}
const InitSeq = 's';
{$ENDIF}
(*
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 := Between('<iframe id="game" src="', '"', GetPage('http://www.runescape.com/game.ws?j=1'));
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
{$IFDEF GLHOOK}
break;
{$ENDIF}
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[I] := 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[I]) Then
Writeln('Killed Client: ' + ToStr(IDs[I]))
else
Writeln('Failed To Kill Client: ' + ToStr(IDs[I]));
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[I] = 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[I]) then
begin
Result := IDs[I];
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, 553, InitSeq, '', '');
{$ELSE}
Result := SmartSpawnClient(ReplaceWrap(PluginPath, '\', '/', [rfReplaceAll]), Params[0], ',' + Params[1], 765, 553, InitSeq, '', '', Smart_Plugins);
{$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
{$IFDEF GLHOOK}
break;
{$ENDIF}
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[I].Title) <> 0 then
begin
Result := True;
if SetAsTarget then SetTarget(T[I]);
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;
SRL.Simba:
Simba Code:
//----------------------------------------------------------------------------//
//-- SRL Resource Library --//
//----------------------------------------------------------------------------//
//-- by: Azeroth, Bebe, BenLand100, benleegt, Boreas, c0de, Cheesehunk --//
//-- Coh3n, dakota, Dankness, driger1592, EvilChicken!, Flyboy, --//
//-- Freddy1990, Hobbit, IceFire908, inferno, Kernel Klink, Knightstreak, --//
//-- Krazy_Meerkat, Krichevskoy, Liquid, Lorax, lordsaturn, Mad Cow, --//
//-- marpis, Markus, masquerader, mastaraymond, moparisthebest, --//
//-- Mutant Squirrle, n3ss3s, N1ke, Naum, Nava2, NCDS, nielsie95, --//
//-- phantombmx, pups, Pyro, RAM, Rasta Magician, realrune, Renax, Ron, --//
//-- RsN, SKy Scripter, solemn wishes, Spky, SRL, Starblaster100, --//
//-- Stupid3ooo,Sumilion, tarajunky, The Claw, The_Rs_Monkey, TRiLeZ, --//
//-- Wizzup?, WT-Fakawi, XxKanexX, Yakman, YoHoJo, ZephyrsFury, _ChArMz, --//
//-- --//
//-- ....... and the SRL Community. --//
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
//-- SRL Level 1 Includes --//
//-- --//
//-- Low Level SCAR Math, Mouse Movement and Color routines. --//
//----------------------------------------------------------------------------//
// For development:
//{$DEFINE CompileSRL}
{$DEFINE SRL5}
{$IFDEF Lape}
{$include SRLLape.simba}
{$ENDIF}
{$IFDEF SMART8}
{$IFNDEF SMART}
{$DEFINE SMART}
{$ENDIF}
{$ENDIF}
{$IFDEF SMART}
{$IFNDEF SRL_SMART}
{$IFDEF SIMBAMAJOR980}
{$I SRL/SRL/Misc/Smart.Simba}
{$ELSE}
Procedure ActivateClient; {$IFDEF LAPE}override;{$ENDIF} begin end;
{$ENDIF}
{$ENDIF}
{$ENDIF}
//{$include SRL/SRL/core/defines.simba}
{$ifdef Simba}
{$i SRL/SRL/core/simba.simba}
{$endif}
{$include SRL/SRL/core/globals.simba}
{$include SRL/SRL/core/math.simba}
{$include SRL/SRL/core/mouse.simba}
{$include SRL/SRL/core/color.simba}
{$include SRL/SRL/core/players.simba}
//----------------------------------------------------------------------------//
//-- SRL Level 2 Includes --//
//-- --//
//-- Interface and OCR routines. --//
//----------------------------------------------------------------------------//
{$include SRL/SRL/core/text.simba}
{$include SRL/SRL/core/timing.simba}
{$include SRL/SRL/core/SRLlog.simba}
{$include SRL/SRL/core/chat.simba}
{$include SRL/SRL/core/bitmaps.simba}
{$include SRL/SRL/core/amount.simba}
{$include SRL/SRL/core/gametab.simba}
//----------------------------------------------------------------------------//
//-- SRL Level 3 Includes --//
//-- --//
//-- MapWalking, AntiRandoms, Objects, Bank, Symbol and many more... --//
//----------------------------------------------------------------------------//
{$include SRL/SRL/core/animation.simba}
{$include SRL/SRL/core/flag.simba}
{$include SRL/SRL/core/worldswitcher.simba}
{$include SRL/SRL/core/login.simba}
{$include SRL/SRL/core/autocolor.simba}
{$include SRL/SRL/core/mapwalk.simba}
{$include SRL/SRL/core/object.simba}
{$include SRL/SRL/core/inventory.simba}
{$include SRL/SRL/core/bank.simba}
{$include SRL/SRL/core/symbol.simba}
{$include SRL/SRL/core/rc.simba}
{$include SRL/SRL/core/cautorespond.simba}
{$include SRL/SRL/core/antiban.simba}
{$include SRL/SRL/core/globalstats.simba}
{$include SRL/SRL/core/antirandoms/antirandoms.simba}
{$IFDEF LoadExtraFonts}
{$include SRL/SRL/misc/fontupdater.simba}
{$ENDIF}
{$IFNDEF SIMBAMAJOR980}
{$IFDEF SMART}
{$IFNDEF SRL_SMART}
{$include SRL/SRL/misc/SmartParams.Simba}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$DEFINE SRL_OPENDEV}
{*******************************************************************************
procedure FreeSRL;
by: SRL Dev Team
Description: Tries to free all the variables it allocated during runtime.
*******************************************************************************}
procedure FreeSRL;
begin
FreeSRLBitmaps;
FreeSRLFonts;
end;
{*******************************************************************************
procedure SetupSRL;
by: SRL Dev Team
Last Edit: 22 June 2010 -- Nava2
Description: Sets up all variables needed to run SRL.
*******************************************************************************}
procedure SetupSRL;
var
t: Integer;
begin
{$IFNDEF SMART}
{$IFDEF SIMBA}
if (not IsTargetValid) then
srl_Warn('SetUpSRL', 'Target client is not valid! ' +
'Drag the crosshairs over the target client.', warn_Terminate);
{$ENDIF}
{$ENDIF}
SetupBoxes; //Sets up box variables in globals.simba
t := GetTimeRunning;
MouseSpeed := 15;
{$IFDEF UseLaptopMouse}LMouse_MissChance := 75;{$ENDIF}
CheckHPFirst := True;
Reincarnate := False;
TalkAfterRandoms := False;
RoadColor := 0;
WaterColor := 0;
BankColor := 0;
// these need to be removed eventually (no longer used)
SRL_OnFindRandomCall := nil;
LampSkill := 'mining';
//SetUpSRLReport;
LoadCosineArrays;
SymbolAccuracy:= 0.8;
LoadSRLBitMaps;
LoadSRLFonts;
{$IFNDEF SRL_RANDOMS_TEST}
_SetRandoms();
{$ENDIF}
SetupSRLAutoResponder;
SRL_RandomScreenShot := False;
UseFindMod := True;
LogoutOnMod := True;
UseFindTrade := True;
UseAutoResponder := True;
GraphicsSet := False;
AllowPVP := False;
SRL_DisableIPLog := false;
SRL_SavePath := includePath + 'SRL/logs/';
SRL_StartTime := theDate(DATE_MONTH)+' at '+theTime;
WarnSensitivity := -2;
SetupAutoColors;
{$IFDEF LoadExtraFonts}
srl_UpdateFonts(srl_FontsUp2date);
{$ENDIF}
AddOnTerminate('FreeSRL');
SetSupressExceptions(true);
Writeln ('SRL Compiled in '+ IntToStr(GetTimeRunning - t) + ' msec');
{$IFDEF SRL_SMART}
{$IFDEF SIMBAMAJOR980}
if (Smart_Server = 0) then
begin
Smart_Server := RandomWorld(Smart_Members, False);
Smart_Signed := True;
Smart_SuperDetail := False;
end;
Writeln('SMART Initialized.' + #10 + 'Loaded: Server ' + IntToStr(Smart_Server) + ', Members: ' + BoolToStr(Smart_Members)
+ ', Signed: ' + BoolToStr(Smart_Signed) + ', Super Detail: ' + BoolToStr(Smart_SuperDetail) + '.');
SmartSetupEx(Smart_Server, Smart_Members, Smart_Signed, Smart_SuperDetail);
SetTargetArray(SmartImageArray, 765, 553);
{$ELSE}
SetupSmart(Smart_ForceNew);
if (SRL_SixHourFix) then
SRL_Procs[srl_OnRSUpdate] := @SixHourFix;
{$ENDIF}
repeat
{$IFDEF GLHOOK}
break;
{$ENDIF}
{$IFNDEF SIMBAMAJOR980}
{$IFDEF SMART}
If Smart_FixSpeed then
FixSmartSpeed;
{$ENDIF}
{$ENDIF}
Wait(100);
if (GetTimeRunning - t) > 120000 then
Break;
until(RSReady);
{$ENDIF}
SetupGauss;
SRL_ResetNavBar;
Proc_WorldSwitcherEnabled
end;
{$ifdef CompileSRL}
begin
SetupSRL;
end.
{$endif}
{$ifdef LAPE}
begin
SetupSRL;
end.
{$endif}
You can use the same old test scripts as before.