Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

784 lines (728 sloc) 22.816 kb
(**
* This extension was developed by Shuttleu. If you have any questions
* concerning this extension, please post in the MSI Forums here:
* http://villavu.com/forum/showthread.php?t=66074
*
* - Shuttleu
*
* - This extension was last updated 16 August 2011 by Shuttleu
*)
program New;
const
Extension = '.ini';
type
ThePlayer = record
User, Pass, Nick, Loc, Pin: string;
Strings: array of string;
Integers: TIntegerArray;
Booleans: array of Boolean;
Active: Boolean;
end;
var
MyMenu, SRLRemoteMenuItem: TMenuItem;
ThePlayers: Array of ThePlayer;
Remote : TForm;
UserLabel, PassLabel, NickLabel, PinLabel, ActiveLabel, PlayerLabel : TLabel;
Active : TCheckBox;
User, Pass, Nick, Pin : TEdit;
SetButton1, SetButton2, CloseButton2, PreviousButton : TButton;
AddButton, DeleteButton, NextButton : TButton;
IntegersLabel, StringsLabel, BooleansLabel : array of TLabel;
Strings : array of TComboBox;
Booleans : array of TCheckBox;
Integers : array of TEdit;
HowManyPlayerss, PlayerNumber: Integer;
INIPath, TheScriptName: string;
IntegerNames, BooleanNames, StringNames: TStringArray;
TheStrings: Array of Array of string;
InstanceArray: TIntegerArray;
OpenInstance : TForm;
Label1 : TLabel;
InstanceNumber : TComboBox;
SetButton : TButton;
CloseButton : TButton;
OpenMain: Boolean;
ScriptNames: array of string;
procedure LoadVars;
var
i, j: Integer;
begin
HowManyPlayerss:= StrToInt(ReadINI('Players', 'HowMany', INIPath));
SetArrayLength(IntegerNames, StrToInt(ReadINI('Players', 'Integers', INIPath)));
SetArrayLength(StringNames, StrToInt(ReadINI('Players', 'Strings', INIPath)));
SetArrayLength(BooleanNames, StrToInt(ReadINI('Players', 'Booleans', INIPath)));
SetArrayLength(TheStrings, Length(StringNames));
for i:=0 to High(TheStrings) do
SetArrayLength(TheStrings[i], StrToInt(ReadINI('Strings', '('+IntToStr(i)+')HowMany', INIPath)));
for i:=0 to High(TheStrings) do
for j:=0 to High(TheStrings[i]) do
TheStrings[i][j]:= ReadINI('Strings', '('+IntToStr(i)+')('+IntToStr(j)+')', INIPath);
for i:=0 to High(IntegerNames) do
IntegerNames[i]:= ReadINI('Integers', IntToStr(i), INIPath);
for i:=0 to High(StringNames) do
StringNames[i]:= ReadINI('Strings', IntToStr(i), INIPath);
for i:=0 to High(BooleanNames) do
BooleanNames[i]:= ReadINI('Booleans', IntToStr(i), INIPath);
SetArrayLength(ThePlayers, HowManyPlayerss);
for i:=0 to HowManyPlayerss-1 do
begin
SetArrayLength(ThePlayers[i].Integers, StrToInt(ReadINI('Players', 'Integers', INIPath)));
SetArrayLength(ThePlayers[i].Strings, StrToInt(ReadINI('Players', 'Strings', INIPath)));
SetArrayLength(ThePlayers[i].Booleans, StrToInt(ReadINI('Players', 'Booleans', INIPath)));
ThePlayers[i].User:= ReadINI(IntToStr(i), 'User', INIPath);
ThePlayers[i].Pass:= ReadINI(IntToStr(i), 'Pass', INIPath);
ThePlayers[i].Nick:= ReadINI(IntToStr(i), 'Nick', INIPath);
ThePlayers[i].Pin:= ReadINI(IntToStr(i), 'Pin', INIPath);
for j:=0 to High(ThePlayers[i].Integers) do
ThePlayers[i].Integers[j]:= StrToInt(ReadINI(IntToStr(i), 'Integer'+IntToStr(j), INIPath));
for j:=0 to High(ThePlayers[i].Strings) do
ThePlayers[i].Strings[j]:= ReadINI(IntToStr(i), 'String'+IntToStr(j), INIPath);
for j:=0 to High(ThePlayers[i].Booleans) do
ThePlayers[i].Booleans[j]:= StrToBool(ReadINI(IntToStr(i), 'Boolean'+IntToStr(j), INIPath));
ThePlayers[i].Active:= StrToBool(ReadINI(IntToStr(i), 'Active', INIPath));
end;
end;
procedure SaveVars;
var
i, j: Integer;
begin
ThePlayers[PlayerNumber].User:= User.Text;
ThePlayers[PlayerNumber].Pass:= Pass.Text;
ThePlayers[PlayerNumber].Nick:= Nick.Text;
ThePlayers[PlayerNumber].Pin:= Pin.Text;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
ThePlayers[PlayerNumber].Integers[j]:= StrToInt(Integers[j].Text);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
ThePlayers[PlayerNumber].Strings[j]:= Strings[j].Text;
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
ThePlayers[PlayerNumber].Booleans[j]:= Booleans[j].Checked;
ThePlayers[PlayerNumber].Active:= Active.Checked;
WriteINI('Main', 'Changed', 'True', INIPath);
WriteINI('Players', 'HowMany', IntToStr(Length(ThePlayers)), INIPath);
WriteINI('Players', 'Integers', IntToStr(Length(ThePlayers[0].Integers)), INIPath);
WriteINI('Players', 'Strings', IntToStr(Length(ThePlayers[0].Strings)), INIPath);
WriteINI('Players', 'Booleans', IntToStr(Length(ThePlayers[0].Booleans)), INIPath);
for i:=0 to High(ThePlayers) do
begin
WriteINI(IntToStr(i), 'User', ThePlayers[i].User, INIPath);
WriteINI(IntToStr(i), 'Pass', ThePlayers[i].Pass, INIPath);
WriteINI(IntToStr(i), 'Nick', ThePlayers[i].Nick, INIPath);
WriteINI(IntToStr(i), 'Pin', ThePlayers[i].Pin, INIPath);
for j:=0 to High(ThePlayers[i].Integers) do
WriteINI(IntToStr(i), 'Integer'+IntToStr(j), IntToStr(ThePlayers[i].Integers[j]), INIPath);
for j:=0 to High(ThePlayers[i].Strings) do
WriteINI(IntToStr(i), 'String'+IntToStr(j), ThePlayers[i].Strings[j], INIPath);
for j:=0 to High(ThePlayers[i].Booleans) do
WriteINI(IntToStr(i), 'Boolean'+IntToStr(j), BoolToStr(ThePlayers[i].Booleans[j]), INIPath);
WriteINI(IntToStr(i), 'Active', BoolToStr(ThePlayers[i].Active), INIPath);
end;
end;
Procedure Click(Sender: TObject);
Begin
if ((Sender = SetButton1) or (Sender = SetButton2)) then
SaveVars;
Remote.ModalResult:= mrOk;
End;
Procedure PreviousPlayer(Sender: TObject);
var
j: Integer;
Begin
if (PlayerNumber = 0) then Exit;
ThePlayers[PlayerNumber].User:= User.Text;
ThePlayers[PlayerNumber].Pass:= Pass.Text;
ThePlayers[PlayerNumber].Nick:= Nick.Text;
ThePlayers[PlayerNumber].Pin:= Pin.Text;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
ThePlayers[PlayerNumber].Integers[j]:= StrToInt(Integers[j].Text);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
ThePlayers[PlayerNumber].Strings[j]:= Strings[j].Text;
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
ThePlayers[PlayerNumber].Booleans[j]:= Booleans[j].Checked;
ThePlayers[PlayerNumber].Active:= Active.Checked;
Dec(PlayerNumber);
User.Text:= ThePlayers[PlayerNumber].User;
Pass.Text:= ThePlayers[PlayerNumber].Pass;
Nick.Text:= ThePlayers[PlayerNumber].Nick;
Pin.Text:= ThePlayers[PlayerNumber].Pin;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
Integers[j].Text:= IntToStr(ThePlayers[PlayerNumber].Integers[j]);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
Strings[j].Text:= ThePlayers[PlayerNumber].Strings[j];
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
Booleans[j].Checked:= ThePlayers[PlayerNumber].Booleans[j];
Active.Checked:= ThePlayers[PlayerNumber].Active;
PlayerLabel.Caption:= 'User '+IntToStr(PlayerNumber+1)+' of '+IntToStr(HowManyPlayerss);
End;
Procedure AddPlayer(Sender: TObject);
var
j: Integer;
Begin
ThePlayers[PlayerNumber].User:= User.Text;
ThePlayers[PlayerNumber].Pass:= Pass.Text;
ThePlayers[PlayerNumber].Nick:= Nick.Text;
ThePlayers[PlayerNumber].Pin:= Pin.Text;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
ThePlayers[PlayerNumber].Integers[j]:= StrToInt(Integers[j].Text);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
ThePlayers[PlayerNumber].Strings[j]:= Strings[j].Text;
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
ThePlayers[PlayerNumber].Booleans[j]:= Booleans[j].Checked;
ThePlayers[PlayerNumber].Active:= Active.Checked;
Inc(HowManyPlayerss)
SetArrayLength(ThePlayers, HowManyPlayerss);
SetArrayLength(ThePlayers[HowManyPlayerss-1].Integers, Length(ThePlayers[HowManyPlayerss-2].Integers));
SetArrayLength(ThePlayers[HowManyPlayerss-1].Strings, Length(ThePlayers[HowManyPlayerss-2].Strings));
SetArrayLength(ThePlayers[HowManyPlayerss-1].Booleans, Length(ThePlayers[HowManyPlayerss-2].Booleans));
PlayerNumber:= HowManyPlayerss-1;
User.Text:= 'User';
Pass.Text:= 'Pass';
Nick.Text:= 'Nick';
Pin.Text:= '0000';
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
Integers[j].Text:= '0';
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
Strings[j].Text:= ReadINI('Strings', '('+IntToStr(j)+')(0)', INIPath);
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
Booleans[j].Checked:= True;
Active.Checked:= True;
PlayerLabel.Caption:= 'User '+IntToStr(PlayerNumber+1)+' of '+IntToStr(HowManyPlayerss);
End;
Procedure DeletePlayer(Sender: TObject);
var
i, j: Integer;
TempPlayers: Array of ThePlayer;
Begin
if (HowManyPlayerss = 1) then Exit;
ThePlayers[PlayerNumber].User:= User.Text;
ThePlayers[PlayerNumber].Pass:= Pass.Text;
ThePlayers[PlayerNumber].Nick:= Nick.Text;
ThePlayers[PlayerNumber].Pin:= Pin.Text;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
ThePlayers[PlayerNumber].Integers[j]:= StrToInt(Integers[j].Text);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
ThePlayers[PlayerNumber].Strings[j]:= Strings[j].Text;
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
ThePlayers[PlayerNumber].Booleans[j]:= Booleans[j].Checked;
ThePlayers[PlayerNumber].Active:= Active.Checked;
SetArrayLength(TempPlayers, HowManyPlayerss);
for i:=0 to (HowManyPlayerss-1) do
TempPlayers[i]:= ThePlayers[i];
SetArrayLength(ThePlayers, HowManyPlayerss-1);
for i:=0 to (PlayerNumber-1) do
ThePlayers[i]:= TempPlayers[i];
for i:=(PlayerNumber+1) to (High(TempPlayers)) do
ThePlayers[i-1]:= TempPlayers[i];
Dec(HowManyPlayerss);
if (PlayerNumber = HowManyPlayerss) then
Dec(PlayerNumber);
User.Text:= ThePlayers[PlayerNumber].User;
Pass.Text:= ThePlayers[PlayerNumber].Pass;
Nick.Text:= ThePlayers[PlayerNumber].Nick;
Pin.Text:= ThePlayers[PlayerNumber].Pin;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
Integers[j].Text:= IntToStr(ThePlayers[PlayerNumber].Integers[j]);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
Strings[j].Text:= ThePlayers[PlayerNumber].Strings[j];
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
Booleans[j].Checked:= ThePlayers[PlayerNumber].Booleans[j];
Active.Checked:= ThePlayers[PlayerNumber].Active;
PlayerLabel.Caption:= 'User '+IntToStr(PlayerNumber+1)+' of '+IntToStr(HowManyPlayerss);
End;
Procedure NextPlayerButton(Sender: TObject);
var
j: Integer;
Begin
if (PlayerNumber = (HowManyPlayerss-1)) then Exit;
ThePlayers[PlayerNumber].User:= User.Text;
ThePlayers[PlayerNumber].Pass:= Pass.Text;
ThePlayers[PlayerNumber].Nick:= Nick.Text;
ThePlayers[PlayerNumber].Pin:= Pin.Text;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
ThePlayers[PlayerNumber].Integers[j]:= StrToInt(Integers[j].Text);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
ThePlayers[PlayerNumber].Strings[j]:= Strings[j].Text;
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
ThePlayers[PlayerNumber].Booleans[j]:= Booleans[j].Checked;
ThePlayers[PlayerNumber].Active:= Active.Checked;
Inc(PlayerNumber);
User.Text:= ThePlayers[PlayerNumber].User;
Pass.Text:= ThePlayers[PlayerNumber].Pass;
Nick.Text:= ThePlayers[PlayerNumber].Nick;
Pin.Text:= ThePlayers[PlayerNumber].Pin;
for j:=0 to High(ThePlayers[PlayerNumber].Integers) do
Integers[j].Text:= IntToStr(ThePlayers[PlayerNumber].Integers[j]);
for j:=0 to High(ThePlayers[PlayerNumber].Strings) do
Strings[j].Text:= ThePlayers[PlayerNumber].Strings[j];
for j:=0 to High(ThePlayers[PlayerNumber].Booleans) do
Booleans[j].Checked:= ThePlayers[PlayerNumber].Booleans[j];
Active.Checked:= ThePlayers[PlayerNumber].Active;
PlayerLabel.Caption:= 'User '+IntToStr(PlayerNumber+1)+' of '+IntToStr(HowManyPlayerss);
End;
procedure RemoteForm;
var
i, j: Integer;
begin
LoadVars;
PlayerNumber:= 0;
Remote := TForm.Create(nil);
with Remote do
begin
BorderStyle := bsSingle;
BorderIcons := [];
FormStyle := fsStayOnTop;
Left := 376;
Top := 438;
Width := 192;
Height := (236+((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Caption := 'Players Remote for '+TheScriptName;
Color := clBtnFace;
Font.Color := clWindowText;
Font.Height := -11;
Font.Name := 'MS Sans Serif';
Font.Style := [];
PixelsPerInch := 96;
end;
PlayerLabel := TLabel.Create(Remote);
with PlayerLabel do
begin
Parent := Remote;
Left := 60;
Top := 16;
Width := 22;
Height := 13;
Caption := 'User '+IntToStr(PlayerNumber+1)+' of '+IntToStr(HowManyPlayerss);
end;
UserLabel := TLabel.Create(Remote);
with UserLabel do
begin
Parent := Remote;
Left := 16;
Top := 16+24;
Width := 22;
Height := 13;
Caption := 'User';
end;
PassLabel := TLabel.Create(Remote);
with PassLabel do
begin
Parent := Remote;
Left := 16;
Top := 40+24;
Width := 23;
Height := 13;
Caption := 'Pass';
end;
NickLabel := TLabel.Create(Remote);
with NickLabel do
begin
Parent := Remote;
Left := 16;
Top := 64+24;
Width := 22;
Height := 13;
Caption := 'Nick';
end;
PinLabel := TLabel.Create(Remote);
with PinLabel do
begin
Parent := Remote;
Left := 16;
Top := 88+24;
Width := 15;
Height := 13;
Caption := 'Pin';
end;
SetArrayLength(IntegersLabel, Length(IntegerNames));
for i:=0 to High(IntegersLabel) do
begin
IntegersLabel[i] := TLabel.Create(Remote);
with IntegersLabel[i] do
begin
Parent := Remote;
Left := 16;
Top := 112+24+(i*24);
Width := 38;
Height := 13;
Caption := IntegerNames[i];
end;
end;
SetArrayLength(StringsLabel, Length(StringNames));
for i:=0 to High(StringsLabel) do
begin
StringsLabel[i] := TLabel.Create(Remote);
with StringsLabel[i] do
begin
Parent := Remote;
Left := 16;
Top := 112+24+((Length(IntegerNames)+i)*24);
Width := 32;
Height := 13;
Caption := StringNames[i];
end;
end;
SetArrayLength(BooleansLabel, Length(BooleanNames));
for i:=0 to High(BooleansLabel) do
begin
BooleansLabel[i] := TLabel.Create(Remote);
with BooleansLabel[i] do
begin
Parent := Remote;
Left := 16;
Top := 112+24+(((Length(IntegerNames)+(Length(StringNames))+i)*24));
Width := 44;
Height := 13;
Caption := BooleanNames[i];
end;
end;
ActiveLabel := TLabel.Create(Remote);
with ActiveLabel do
begin
Parent := Remote;
Left := 16;
Top := (136+(Length(IntegerNames)+Length(StringNames)+i)*24);
Width := 30;
Height := 13;
Caption := 'Active';
end;
SetArrayLength(Strings, Length(ThePlayers[0].Strings));
for i:=0 to High(Strings) do
begin
Strings[i] := TComboBox.Create(Remote);
with Strings[i] do
begin
Parent := Remote;
Left := 112;
Top := 112+24+((Length(IntegerNames)+i)*24);
Width := 70;
Height := 21;
ItemHeight := 13;
TabOrder := 8;
Text := ThePlayers[0].Strings[i];
with Items do
for j:=0 to High(TheStrings[i]) do
Add(TheStrings[i][j]);
end;
end;
SetArrayLength(Booleans, Length(ThePlayers[0].Booleans));
for i:=0 to High(Booleans) do
begin
Booleans[i] := TCheckBox.Create(Remote);
with Booleans[i] do
begin
Parent := Remote;
Left := 112;
Top := 112+24+(((Length(IntegerNames)+(Length(StringNames))+i)*24));
Width := 16;
Height := 16;
Checked := ThePlayers[0].Booleans[i];
TabOrder := 9;
end;
end;
User := TEdit.Create(Remote);
with User do
begin
Parent := Remote;
Left := 112;
Top := 16+24;
Width := 70;
Height := 21;
TabOrder := 10;
Text := ThePlayers[0].User;
end;
Pass := TEdit.Create(Remote);
with Pass do
begin
Parent := Remote;
Left := 112;
Top := 40+24;
Width := 70;
Height := 21;
PasswordChar := '*';
TabOrder := 11;
Text := ThePlayers[0].Pass;
end;
Nick := TEdit.Create(Remote);
with Nick do
begin
Parent := Remote;
Left := 112;
Top := 64+24;
Width := 70;
Height := 21;
TabOrder := 12;
Text := ThePlayers[0].Nick;
end;
Pin := TEdit.Create(Remote);
with Pin do
begin
Parent := Remote;
Left := 112;
Top := 88+24;
Width := 70;
Height := 21;
TabOrder := 13;
Text := ThePlayers[0].Pin;
end;
Active := TCheckBox.Create(Remote);
with Active do
begin
Parent := Remote;
Left := 112;
Top := (136+(Length(IntegerNames)+Length(StringNames)+i)*24);
Width := 16;
Height := 16;
Checked := ThePlayers[0].Active;
TabOrder := 14;
end;
SetArrayLength(Integers, Length(ThePlayers[0].Integers));
for i:=0 to High(Integers) do
begin
Integers[i] := TEdit.Create(Remote);
with Integers[i] do
begin
Parent := Remote;
Left := 112;
Top := 112+24+(i*24);;
Width := 70;
Height := 21;
TabOrder := 15;
Text := IntToStr(ThePlayers[0].Integers[i]);
end;
end;
SetButton2 := TButton.Create(Remote);
with SetButton2 do
begin
Parent := Remote;
Left := 15;
Top := 197+(((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Width := 60;
Height := 25;
Caption := 'Set';
TabOrder := 9;
OnClick := @Click;
end;
CloseButton2 := TButton.Create(Remote);
with CloseButton2 do
begin
Parent := Remote;
Left := 100;
Top := 197+(((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Width := 60;
Height := 24;
Caption := 'Close';
TabOrder := 10;
OnClick := @Click;
end;
PreviousButton := TButton.Create(Remote);
with PreviousButton do
begin
Parent := Remote;
Left := 7;
Top := 165+(((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Width := 35;
Height := 25;
Caption := '<--';
TabOrder := 9;
OnClick := @PreviousPlayer;
end;
AddButton := TButton.Create(Remote);
with AddButton do
begin
Parent := Remote;
Left := 52;
Top := 165+(((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Width := 35;
Height := 24;
Caption := 'Add';
TabOrder := 10;
OnClick := @AddPlayer;
end;
DeleteButton := TButton.Create(Remote);
with DeleteButton do
begin
Parent := Remote;
Left := 97;
Top := 165+(((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Width := 35;
Height := 25;
Caption := 'Del';
TabOrder := 9;
OnClick := @DeletePlayer;
end;
NextButton := TButton.Create(Remote);
with NextButton do
begin
Parent := Remote;
Left := 142;
Top := 165+(((Length(BooleanNames)+Length(IntegerNames)+Length(StringNames))*24));
Width := 35;
Height := 24;
Caption := '-->';
TabOrder := 10;
OnClick := @NextPlayerButton;
end;
end;
procedure MainRemote;
begin
RemoteForm;
Remote.ShowModal;
end;
Procedure ClickButton(Sender: TObject);
Begin
if (Sender = CloseButton) then
OpenInstance.ModalResult:= mrOk;
if (Sender = SetButton) then
begin
INIPath:= INIPath+between('Instance ', '.', InstanceNumber.TEXT)+Extension;
OpenInstance.ModalResult:= mrOk;
OpenMain:= True;
end;
End;
procedure OpenInstanceForm;
var
i : Integer;
begin
OpenInstance := TForm.Create(nil);
with OpenInstance do
begin
BorderStyle := bsSingle;
BorderIcons := [];
FormStyle := fsStayOnTop;
Left := 483;
Top := 281;
Width := 305;
Height := 90;
Caption := 'Open Instance';
Color := clBtnFace;
Font.Color := clWindowText;
Font.Height := -11;
Font.Name := 'MS Sans Serif';
Font.Style := [];
PixelsPerInch := 96;
end;
Label1 := TLabel.Create(OpenInstance);
with Label1 do
begin
Parent := OpenInstance;
Left := 12;
Top := 16;
Width := 119;
Height := 17;
Caption := 'Open remote for instance';
end;
InstanceNumber := TComboBox.Create(OpenInstance);
with InstanceNumber do
begin
Parent := OpenInstance;
Left := 140;
Top := 16;
Width := 160;
Height := 21;
ItemHeight := 13;
TabOrder := 8;
Text := ScriptNames[0]+': Instance '+IntToStr(InstanceArray[0])+'.';
with Items do
for i:=0 to High(InstanceArray) do Add(ScriptNames[i]+': Instance '+IntToStr(InstanceArray[i])+'.');
end;
SetButton := TButton.Create(OpenInstance);
with SetButton do
begin
Parent := OpenInstance;
Left := 40;
Top := 48;
Width := 81;
Height := 25;
Caption := 'Open';
TabOrder := 9;
OnClick := @ClickButton;
end;
CloseButton := TButton.Create(OpenInstance);
with CloseButton do
begin
Parent := OpenInstance;
Left := 168;
Top := 48;
Width := 80;
Height := 24;
Caption := 'Close';
TabOrder := 10;
OnClick := @ClickButton;
end;
end;
procedure MainOpenInstance;
begin
OpenInstanceForm;
OpenInstance.ShowModal;
end;
function FileNotEmpty(FilePath: string): Boolean;
begin
Result:= False;
if (FileExists(FilePath)) then
Result:= StrToBool(ReadINI('Main', 'Running', FilePath));
end;
function HowManyInstances: TIntegerArray;
var
i: Integer;
begin
InstanceArray:= [];
ScriptNames:= [];
for i:=0 to 50 do
if FileNotEmpty(INIPath+InttoStr(i)+Extension) then
begin
SetArrayLength(Result, Length(Result)+1);
Result[High(Result)]:= i;
SetArrayLength(ScriptNames, Length(ScriptNames)+1);
ScriptNames[High(ScriptNames)]:= ReadINI('Main', 'Name', INIPath+InttoStr(i)+Extension);
end;
end;
procedure LoadForm;
begin
InstanceArray:= HowManyInstances;
If (Length(InstanceArray) > 0) then
if (Length(InstanceArray) > 1) then
begin
MainOpenInstance
if OpenMain then
MainRemote;
end else
begin
INIPath:= INIPath+IntToStr(InstanceArray[0])+Extension;
MainRemote;
end;
end;
procedure SRLRemote(Sender: TObject);
begin
if (not(Sender = SRLRemoteMenuItem)) then Exit;
INIPath:= AppPath+'Scripts/SRLRemote';
TheScriptName:= 'SRL Player';
Loadform;
end;
procedure Init;
begin
MyMenu := TMenuItem.Create(Simba_MainMenu);
MyMenu.Caption := 'SRL Remote';
MyMenu.Visible := False;
Simba_MainMenu.Items.Add(MyMenu);
SRLRemoteMenuItem := TMenuItem.Create(MyMenu);
SRLRemoteMenuItem.Caption := 'Open';
SRLRemoteMenuItem.OnClick := @SRLRemote;
MyMenu.Add(SRLRemoteMenuItem);
end;
procedure Attach;
begin;
MyMenu.Visible := True;
end;
Procedure Detach;
begin
MyMenu.Visible := False;
end;
function GetName : string;
begin;
result := 'SRL Player Remote';
end;
function GetVersion : string;
begin;
result := '1.0';
end;
begin
end.
Jump to Line
Something went wrong with that request. Please try again.