Well, I want to create my own multiplayer from, but I'm having a problem which I don't know how handle:
SCAR Code:
program New;
{.include srl/srl.scar}
var
cUser : Integer;
frmDesign : TForm;
Label2 : TLabel;
Label8 : TLabel;
GroupBox1 : TGroupBox;
Label1 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
Label5 : TLabel;
Label6 : TLabel;
Label7 : TLabel;
NameEd : TEdit;
PassEd : TEdit;
NickEd : TEdit;
PinEd : TEdit;
LoadEd : TEdit;
ActiveEd : TComboBox;
GroupBox2 : TGroupBox;
ButtonBack : TButton;
ButtonNext : TButton;
ButtonDelete : TButton;
ButtonNew : TButton;
ButtoOkay : TButton;
procedure AddUser;
begin
SetArrayLength(Players, GetArrayLength(Players) + 1);
Players[GetArrayLength(Players) - 1].Name := '>>Your Username Here<<';
Players[GetArrayLength(Players) - 1].Pass := '>>Your Password Here<<';
Players[GetArrayLength(Players) - 1].Nick := '>>Your Nickname Here<<';
Players[GetArrayLength(Players) - 1].Strings[0] := '0';{Out Of Range Error Here}
Players[GetArrayLength(Players) - 1].Active := True;
end;
procedure Inititate(Sender: TObject);
begin
Players[cUser].Nick := Nicked.Text;
Players[cUser].Name := NameEd.Text;
Players[cUser].Pass := Passed.Text;
Players[cUser].Strings[0] := LoadEd.Text;
if (ActiveEd.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
cUser := GetArrayLength(Players) - 1;
end;
procedure CreateUser(Sender: TObject);
begin
Players[cUser].Nick := Nicked.Text;
Players[cUser].Name := NameEd.Text;
Players[cUser].Pass := Passed.Text;
Players[cUser].Strings[0] := LoadEd.Text;
if (ActiveEd.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
AddUser;
Nicked.Text := Players[cUser].Nick;
NameEd.Text := Players[cUser].Name;
Passed.Text := Players[cUser].Pass;
LoadEd.Text := Players[cUser].Strings[0];
if (Players[cUser].Active) then
ActiveEd.Text := 'True'
else
ActiveEd.Text := 'False';
end;
procedure ForwardUser(Sender: TObject);
begin
Players[cUser].Nick := Nicked.Text;
Players[cUser].Name := NameEd.Text;
Players[cUser].Pass := Passed.Text;
Players[cUser].Strings[0] := LoadEd.Text;
if (ActiveEd.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
if (cUser + 1 > GetArrayLength(Players) - 1) then
cUser := 0
else
cUser := cUser + 1;
Nicked.Text := Players[cUser].Nick;
NameEd.Text := Players[cUser].Name;
Passed.Text := Players[cUser].Pass;
LoadEd.Text := Players[cUser].Strings[0];
if (Players[cUser].Active) then
ActiveEd.Text := 'True'
else
ActiveEd.Text := 'False';
end;
procedure BackUser(Sender: TObject);
begin
Players[cUser].Nick := Nicked.Text;
Players[cUser].Name := NameEd.Text;
Players[cUser].Pass := Passed.Text;
Players[cUser].Strings[0] := LoadEd.Text;
if (ActiveEd.Text = 'True') then
Players[cUser].Active := True
else
Players[cUser].Active := False;
if (cUser - 1 < 0) then
cUser := GetArrayLength(Players) - 1
else
cUser := cUser - 1;
Nicked.Text := Players[cUser].Nick;
NameEd.Text := Players[cUser].Name;
Passed.Text := Players[cUser].Pass;
LoadEd.Text := Players[cUser].Strings[0];
if (Players[cUser].Active) then
ActiveEd.Text := 'True'
else
ActiveEd.Text := 'False';
end;
procedure DeleteUser(Sender: TObject);
var
na, ni, lo: string;
ac: Boolean;
begin
na := Players[GetArrayLength(Players) - 1].Name;
ni := Players[GetArrayLength(Players) - 1].Nick;
ac := Players[GetArrayLength(Players) - 1].Active;
lo := Players[GetArrayLength(Players) - 1].Strings[0];
Players[cUser].Name := na;
Players[cUser].Nick := ni;
Players[cUser].Active := ac;
Players[cUser].Strings[0]:= lo;
SetArrayLength(Players, GetArrayLength(Players) - 1);
if (cUser + 1 > GetArrayLength(Players) - 1) then
cUser := 0
else
cUser := cUser + 1;
Nicked.Text := Players[cUser].Nick;
NameEd.Text := Players[cUser].Name;
Passed.Text := Players[cUser].Pass;
LoadEd.Text := Players[cUser].Strings[0];
if (Players[cUser].Active) then
ActiveEd.Text := 'True'
else
ActiveEd.Text := 'False';
end;
procedure Start(Sender: TObject);
begin
NickEd.Text := Players[cUser].Nick;
NameEd.Text := Players[cUser].Name;
PassEd.Text := Players[cUser].Pass;
LoadEd.Text := Players[cUser].Strings[0];
if (Players[cUser].Active) then
ActiveEd.Text := 'True'
else
ActiveEd.Text := 'False';
end;
procedure FinishForm(Sender: TObject);
begin
frmDesign.ModalResult:= mrOk;
end;
procedure MiningInitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 114;
frmDesign.Width := 696;
frmDesign.Height := 480;
frmDesign.Caption := 'frmDesign';
frmDesign.Color := clSkyBlue;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
Label2 := TLabel.Create(frmDesign);
Label2.Parent := frmDesign;
Label2.Left := 32;
Label2.Top := 160;
Label2.Width := 4;
Label2.Height := 20;
Label2.Font.Color := clWindowText;
Label2.Font.Height := -16;
Label2.Font.Name := 'MS Sans Serif';
Label2.Font.Style := [];
Label2.ParentFont := False;
Label8 := TLabel.Create(frmDesign);
Label8.Parent := frmDesign;
Label8.Left := 64;
Label8.Top := 16;
Label8.Width := 540;
Label8.Height := 34;
Label8.Caption := 'Pure1993'#39's Guild Miner';
Label8.Font.Color := clWindowText;
Label8.Font.Height := -29;
Label8.Font.Name := 'Neurochrome';
Label8.Font.Style := [fsBold];
Label8.ParentFont := False;
GroupBox1 := TGroupBox.Create(frmDesign);
GroupBox1.Parent := frmDesign;
GroupBox1.Left := 16;
GroupBox1.Top := 72;
GroupBox1.Width := 281;
GroupBox1.Height := 369;
GroupBox1.Caption := 'Player Options';
GroupBox1.TabOrder := 0;
Label1 := TLabel.Create(GroupBox1);
Label1.Parent := GroupBox1;
Label1.Left := 16;
Label1.Top := 32;
Label1.Width := 155;
Label1.Height := 20;
Label1.Caption := 'Enter Your Username';
Label1.Font.Color := clWindowText;
Label1.Font.Height := -16;
Label1.Font.Name := 'MS Sans Serif';
Label1.Font.Style := [];
Label1.ParentFont := False;
Label3 := TLabel.Create(GroupBox1);
Label3.Parent := GroupBox1;
Label3.Left := 16;
Label3.Top := 88;
Label3.Width := 150;
Label3.Height := 20;
Label3.Caption := 'Enter Your Password';
Label3.Font.Color := clWindowText;
Label3.Font.Height := -17;
Label3.Font.Name := 'MS Sans Serif';
Label3.Font.Style := [];
Label3.ParentFont := False;
Label4 := TLabel.Create(GroupBox1);
Label4.Parent := GroupBox1;
Label4.Left := 16;
Label4.Top := 144;
Label4.Width := 151;
Label4.Height := 20;
Label4.Caption := 'Enter Your Nickname';
Label4.Font.Color := clWindowText;
Label4.Font.Height := -17;
Label4.Font.Name := 'MS Sans Serif';
Label4.Font.Style := [];
Label4.ParentFont := False;
Label5 := TLabel.Create(GroupBox1);
Label5.Parent := GroupBox1;
Label5.Left := 16;
Label5.Top := 200;
Label5.Width := 235;
Label5.Height := 20;
Label5.Caption := 'Enter Your Pin (If You Have One)';
Label5.Font.Color := clWindowText;
Label5.Font.Height := -17;
Label5.Font.Name := 'MS Sans Serif';
Label5.Font.Style := [];
Label5.ParentFont := False;
Label6 := TLabel.Create(GroupBox1);
Label6.Parent := GroupBox1;
Label6.Left := 16;
Label6.Top := 256;
Label6.Width := 131;
Label6.Height := 20;
Label6.Caption := 'How Many Loads?';
Label6.Font.Color := clWindowText;
Label6.Font.Height := -17;
Label6.Font.Name := 'MS Sans Serif';
Label6.Font.Style := [];
Label6.ParentFont := False;
Label7 := TLabel.Create(GroupBox1);
Label7.Parent := GroupBox1;
Label7.Left := 16;
Label7.Top := 312;
Label7.Width := 52;
Label7.Height := 20;
Label7.Caption := 'Active?';
Label7.Font.Color := clWindowText;
Label7.Font.Height := -17;
Label7.Font.Name := 'MS Sans Serif';
Label7.Font.Style := [];
Label7.ParentFont := False;
NameEd := TEdit.Create(GroupBox1);
NameEd.Parent := GroupBox1;
NameEd.Left := 16;
NameEd.Top := 56;
NameEd.Width := 153;
NameEd.Height := 21;
NameEd.TabOrder := 0;
NameEd.Text := '>>Your Username Here<<';
PassEd := TEdit.Create(GroupBox1);
PassEd.Parent := GroupBox1;
PassEd.Left := 16;
PassEd.Top := 112;
PassEd.Width := 153;
PassEd.Height := 21;
PassEd.TabOrder := 1;
PassEd.Text := '>>Your Password Here<<';
NickEd := TEdit.Create(GroupBox1);
NickEd.Parent := GroupBox1;
NickEd.Left := 16;
NickEd.Top := 168;
NickEd.Width := 153;
NickEd.Height := 21;
NickEd.TabOrder := 2;
NickEd.Text := '>>Your Nickname Here<<';
PinEd := TEdit.Create(GroupBox1);
PinEd.Parent := GroupBox1;
PinEd.Left := 16;
PinEd.Top := 224;
PinEd.Width := 153;
PinEd.Height := 21;
PinEd.TabOrder := 3;
PinEd.Text := '>>Pin Number Here<<';
LoadEd := TEdit.Create(GroupBox1);
LoadEd.Parent := GroupBox1;
LoadEd.Left := 16;
LoadEd.Top := 280;
LoadEd.Width := 153;
LoadEd.Height := 21;
LoadEd.TabOrder := 4;
LoadEd.Text := '>>Number of Loads Here<<';
ActiveEd := TComboBox.Create(GroupBox1);
ActiveEd.Parent := GroupBox1;
ActiveEd.Left := 16;
ActiveEd.Top := 336;
ActiveEd.Width := 153;
ActiveEd.Height := 21;
ActiveEd.ItemHeight := 13;
ActiveEd.TabOrder := 5;
ActiveEd.Text := 'True';
ActiveEd.Items.Add('True');
ActiveEd.Items.Add('False');
GroupBox2 := TGroupBox.Create(frmDesign);
GroupBox2.Parent := frmDesign;
GroupBox2.Left := 328;
GroupBox2.Top := 160;
GroupBox2.Width := 337;
GroupBox2.Height := 121;
GroupBox2.Caption := 'Player Controls';
GroupBox2.TabOrder := 1;
ButtonBack := TButton.Create(GroupBox2);
ButtonBack.Parent := GroupBox2;
ButtonBack.Left := 8;
ButtonBack.Top := 48;
ButtonBack.Width := 49;
ButtonBack.Height := 25;
ButtonBack.Caption := '<---';
ButtonBack.TabOrder := 0;
ButtonBack.OnClick := @BackUser;
ButtonNext := TButton.Create(GroupBox2);
ButtonNext.Parent := GroupBox2;
ButtonNext.Left := 280;
ButtonNext.Top := 48;
ButtonNext.Width := 49;
ButtonNext.Height := 25;
ButtonNext.Caption := '--->';
ButtonNext.TabOrder := 1;
ButtonNext.OnClick := @ForwardUser;
ButtonDelete := TButton.Create(GroupBox2);
ButtonDelete.Parent := GroupBox2;
ButtonDelete.Left := 64;
ButtonDelete.Top := 48;
ButtonDelete.Width := 81;
ButtonDelete.Height := 25;
ButtonDelete.Caption := 'Delete Player';
ButtonDelete.TabOrder := 2;
ButtonDelete.OnClick := @DeleteUser;
ButtonNew := TButton.Create(GroupBox2);
ButtonNew.Parent := GroupBox2;
ButtonNew.Left := 193;
ButtonNew.Top := 48;
ButtonNew.Width := 80;
ButtonNew.Height := 25;
ButtonNew.Caption := 'New Player';
ButtonNew.TabOrder := 3;
ButtonNew.OnClick := @CreateUser;
ButtoOkay := TButton.Create(GroupBox2);
ButtoOkay.Parent := GroupBox2;
ButtoOkay.Left := 152;
ButtoOkay.Top := 48;
ButtoOkay.Width := 33;
ButtoOkay.Height := 25;
ButtoOkay.Caption := 'OK';
ButtoOkay.TabOrder := 4;
ButtoOkay.OnClick := @FinishForm;
end;
procedure TheForm;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('MiningInitForm', v);
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure TehForm;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
begin
cUser := 0;
if (GetArrayLength(Players) = 0) then
AddUser;
TheForm;
TehForm;
end.
As I already mentioned in the script, the error is in this line: Players
SCAR Code:
[GetArrayLength(Players) - 1].Strings[0] := '0';
and the error is [Runtime Error] : Out Of Range in line 34 in script C:\Program Files\SCAR 3.14\Scripts\123.scar. Can anyone help?
(btw: please don't tell me to just use the srl-player-form, because I want to create something like this myself and not use something which has already been created.)
Thanks a lot,
-Pure1993