Alright, I got the first error out, any idea on how to fix the loadplayers error? also, if you look at my code, i modified it with another form, but for some reason, i cant get it to open another form OnClick.
Code:
program New;
{.include SRL/SRL.scar}
var
MineForm : TForm;
Banner : TImage;
Labels: Array[0..10] of TLabel;
Edit: Array[0..5] Of TEdit;
ComboBox : Array[0..1] of TComboBox;
ListBox1 : TListBox;
Button: Array[0..7] Of TButton;
Memo1 : TMemo;
NoP,PlaySel,LoadsToDo,CP: integer;
RockType: String;
MainForm1 : TForm;
Label1 : TLabel;
MainButton:Array[0..4] of TButton;
Procedure FirstSetup;
begin
HowManyPlayers:=NoP;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= CP;
end;
Function CheckThaForm: Boolean;
var
i: integer;
begin
For i:=0 to 5 do
begin
if Edit[i].text= '' then
begin
Writeln('Please Fill Out the Whole Form!!!');
Result:= False;
Exit;
end;
end;
Result:=true;
end;
Procedure CheckButtonEnable;
begin
if NoP>0 then
begin
Button[0].enabled:=true;
Button[2].enabled:=true;
end;
if NoP>1 then
begin
Button[3].enabled:=true;
end;
if NoP<1 then
begin
Button[0].enabled:=false;
Button[2].enabled:=false;
end;
if NoP<2 then
begin
Button[3].enabled:=false;
end;
if PlaySel=0 then
begin
Button[0].enabled:=false;
end;
If PlaySel= NoP then
begin
Button[3].enabled:=false;
end;
end;
Procedure MakeList;
var
i: integer;
begin
ListBox1.Clear;
For i:=0 to NoP-1 do
begin
ListBox1.Items.Add(inttostr(i)+': '+Players[i].name);
end;
Labels[0].Caption:=('You Currently have '+IntToStr(NoP)+' Player(s)');
Labels[6].Caption:=(IntToStr(PlaySel)+': ');
end;
Procedure SavePlayers;
var
i: integer;
SaveFile: TStringList;
begin
SaveFile:= TStringList.Create;
SaveFile.Add(IntToStr(NoP));
For i:=0 to NoP-1 do
begin
SaveFile.Add(Players[i].Name);
SaveFile.Add(Players[i].Pass);
SaveFile.Add(Players[i].Nick);
SaveFile.Add(booltostr(Players[i].Active));
SaveFile.Add(Players[i].Strings[0]);
SaveFile.Add(IntToStr(Players[i].Integers[0]));
end;
SaveToFile(SaveFile,AppPath+'Superbatmans_Forms\Players');
end;
Procedure LoadPlayers;
var
LoadFile: TSTringList;
i: integer;
begin
if fileexists(AppPath+'Superbatmans_Forms\Players') then
begin
LoadFile:= TStringList.Create;
if LoadFromFile(LoadFile,AppPath+'Superbatmans_Forms\Players') then
begin
NoP:=StrToInt(LoadFile.Strings[0]);
For i:=0 to NoP-1 do
begin
Players[i].name:=LoadFile.Strings[(i*6)+1];
Players[i].pass:=LoadFile.Strings[(i*6)+2];
Players[i].nick:=LoadFile.Strings[(i*6)+3];
Players[i].active:=StrToBool(LoadFile.Strings[(i*6)+4]);
Players[i].Strings[0]:=LoadFile.Strings[(i*6)+5];
Players[i].Integers[0]:=StrToInt(LoadFile.Strings[(i*6)+6]);
end;
Edit[0].text:= Players[0].Name;
Edit[1].text:= Players[0].Pass;
Edit[2].text:= Players[0].Nick;
For i:=0 to NoP-1 do
begin
ListBox1.Items.Add(IntToStr(i)+': '+Players[i].Name);
end;
PlaySel:=0;
end;
end;
end;
Procedure SaveAndStartClick(Sender: TObject);
begin
If CheckThaForm then
begin
SavePlayers;
MineForm.ModalResult:= mrOk;
end;
end;
Procedure SaveAndExitclick(Sender:Tobject);
begin
If CheckThaForm then
begin
SavePlayers;
MineForm.ModalResult:= mrOk;
TerminateScript;
end;
end;
Procedure AddClick(Sender: TObject);
begin
if CheckThaForm then
begin
NoP:=NoP+1;
firstSetup;
SetArrayLength(Players,NoP);
Players[NoP-1].Name:=Edit[0].text;
Players[NoP-1].Pass:=Edit[1].text;
Players[NoP-1].Nick:=Edit[2].text;
Players[NoP-1].Active:=StrToBool(ComboBox[0].text);
Players[NoP-1].Strings[0]:=ComboBox[1].text;
Players[NoP-1].Integers[0]:=StrToInt(Edit[5].text);
CheckButtonEnable;
MakeList;
PlaySel:=PlaySel+1;
end;
end;
Procedure PrevPlayer(Sender: TObject);
begin
Playsel:=PlaySel-1;
Labels[6].Caption:=(IntToStr(PlaySel)+': ');
Edit[0].text:=Players[PlaySel].Name;
Edit[1].text:=Players[PlaySel].Pass;
Edit[2].text:=Players[PlaySel].Nick;
ComboBox[0].text:=BoolToStr(Players[PlaySel].active);
ComboBox[1].text:= Players[PlaySel].Strings[0];
Edit[5].text:=IntToStr(Players[PlaySel].Integers[0]);
CheckButtonEnable;
end;
Procedure NextPlayers(Sender: TObject);
begin
Playsel:=PlaySel+1;
Labels[6].Caption:=(IntToStr(PlaySel)+': ');
Edit[0].text:=Players[PlaySel].Name;
Edit[1].text:=Players[PlaySel].Pass;
Edit[2].text:=Players[PlaySel].Nick;
ComboBox[0].text:=BoolToStr(Players[PlaySel].active);
ComboBox[1].text:= Players[PlaySel].Strings[0];
Edit[5].text:=IntToStr(Players[PlaySel].Integers[0]);
CheckButtonEnable;
end;
Procedure DeletePlayer(Sender: TObject);
var
i: integer;
begin
NoP:=NoP-1;
SetArrayLength(Players,NoP)
for i:=PlaySel to High(Players) do
begin
Players[i].Name:=Players[i+1].Name;
Players[i].Pass:=Players[i+1].Pass;
Players[i].Nick:=Players[i+1].Nick;
Players[i].Active:=Players[i+1].Active;
Players[i].Strings[0]:=Players[i+1].Strings[0];
Players[i].Integers[0]:=Players[i+1].Integers[0];
end;
PlaySel:=PlaySel-1;
MakeList;
CheckButtonEnable;
end;
Procedure ExitForm(Sender: TObject);
begin
MineForm.ModalResult:= mrOk;
TerminateScript;
end;
procedure SafeInitForm(WF: integer);
var
v: TVariantArray;
begin
setarraylength(V, 0);
if WF=0 then
begin
ThreadSafeCall('InitForm', v);
end;
if WF=1 then
begin
ThreadSafeCall('InitForm1',v);
end;
end;
procedure ShowFormModal1;
begin
MineForm.ShowModal;
end;
Procedure ShowFormModal2;
begin
MainForm1.ShowModal;
end;
procedure SafeShowFormModal(WhatForm: string);
var
v: TVariantArray;
begin
setarraylength(V, 0);
Case WhatForm Of
'Mine': ThreadSafeCall('ShowFormModal1', v);
'MainForm1': ThreadSafeCall('ShowFormModal2',v);
end;
end;
Procedure OpenForm(WF: integer;WhatForm: String);
begin
SafeInitForm(WF);
SafeShowFormModal(WhatForm);
end;
Procedure OpenMineForm(Sender:TObject);
begin
OpenForm(0,'mine');
MainForm1.ModalResult:= mrOk;
end;
procedure InitForm;
var
i: integer;
begin
MineForm := CreateForm;
MineForm.Left := 250;
MineForm.Top := 114;
MineForm.Width := 555;
MineForm.Height := 570;
MineForm.Caption := 'frmDesign';
MineForm.Color := clWhite;
MineForm.Font.Color := clWindowText;
MineForm.Font.Height := -11;
MineForm.Font.Name := 'MS Sans Serif';
MineForm.Font.Style := [];
MineForm.Visible := false;
MineForm.PixelsPerInch := 96;
Banner := TImage.Create(MineForm);
Banner.Parent := MineForm;
Banner.Left := 0;
Banner.Top := 0;
Banner.Width := 537;
Banner.Height := 81;
For i:=0 to 10 do
begin
Labels[i]:=Tlabel.Create(MineForm);
Labels[i].Parent:=MineForm;
end;
For i:=1 to 5 do
begin
Labels[i].Width :=52;
Labels[i].Height:=13;
Labels[i].Left:=16;
Labels[i].Top:=104+(32*i);
end;
For i:=7 to 9 do
begin
Labels[i].Width:=76;
Labels[i].Height:=13;
Labels[i].Left:=368;
Labels[i].Top:=72+(56*(i-6));
end;
Labels[0].Left := 88;
Labels[0].Top := 88;
Labels[0].Width := 142;
Labels[0].Height := 13;
Labels[0].Caption := 'You Currently have Player[s] ';
Labels[1].Caption := 'Username: ';
Labels[2].Caption := 'Password: ';
Labels[3].Caption := 'Nick: ';
Labels[4].Caption := 'Active: ';
Labels[5].Caption := 'Rock: ';
Labels[6].Left := 80;
Labels[6].Top := 112;
Labels[6].Width := 9;
Labels[6].Height := 13;
Labels[6].Caption := '0:';
Labels[7].Caption := 'SRL ID: ';
Labels[8].Caption := 'SRL Password: ';
Labels[9].Caption := 'Loads To Do: ';
Labels[10].Left := 56;
Labels[10].Top := 344;
Labels[10].Width := 278;
Labels[10].Height := 13;
Labels[10].Caption := 'Best Progress Report For Superbatman'#39's Power Miner V1.0';
For i:=0 to 5 do
begin
Edit[i]:=TEdit.Create(MineForm);
Edit[i].Parent:= MineForm;
Edit[i].Width:=121;
Edit[i].Height:=21;
end;
For i:=0 to 2 do
begin
Edit[i].Left:=72;
Edit[i].Top:=104+((i+1)*32);
Edit[i].TabOrder:=8+i;
end;
For i:=3 to 5 do
begin
Edit[i].Left:=368;
Edit[i].TabOrder:=14+(i-3);
Edit[i].Top:=96+(56*(i-2));
end;
Edit[1].PasswordChar:='*';
Edit[4].PasswordChar:='*';
// LoadPlayers;
For i:=0 to 1 do
begin
ComboBox[i]:=TComboBox.Create(MineForm);
ComboBox[i].Parent:= MineForm;
ComboBox[i].Width:=121;
ComboBox[i].Height:=21;
ComboBox[i].ItemHeight:=13;
ComboBox[i].Left:=72;
ComboBox[i].Top:=232+(32*i);
ComboBox[i].TabOrder:=11+i;
end;
ComboBox[0].Text:='True';
ComboBox[0].Items.Add('True');
ComboBox[0].Items.Add('False');
ComboBox[1].Text:='Copper';
ComboBox[1].Items.Add('Copper');
ComboBox[1].Items.Add('Tin');
ComboBox[1].Items.Add('Iron');
ComboBox[1].Items.Add('Coal');
ComboBox[1].Items.Add('Mithril');
ComboBox[1].Items.Add('Adamantite');
ComboBox[1].Items.Add('Runite');
ListBox1 := TListBox.Create(MineForm);
ListBox1.Parent := MineForm;
ListBox1.Left := 224;
ListBox1.Top := 136;
ListBox1.Width := 113;
ListBox1.Height := 153;
ListBox1.ItemHeight := 13;
ListBox1.TabOrder := 13;
For i:=0 to 7 do
begin
Button[i]:= TButton.Create(MineForm);
Button[i].Parent:= MineForm;
Button[i].TabOrder:=17+i;
Button[i].Width:=81;
Button[i].Height:=25;
end;
For i:=0 to 3 do
begin
Button[i].Top:=296;
Button[i].Left:=40+(i*104);
end;
For i:=4 to 7 do
begin
Button[i].Top:=488;
Button[i].Left:=40+((i-4)*104);
end;
CheckButtonEnable;
Button[0].Caption := '<---------';
Button[0].OnClick:=@PrevPlayer;
Button[1].Caption := 'Add Player';
Button[1].OnClick:=@AddClick;
Button[2].Caption := 'Delete Player';
Button[2].OnClick:=@DeletePlayer;
Memo1 := TMemo.Create(MineForm);
Memo1.Parent := MineForm;
Memo1.Left := 32;
Memo1.Top := 360;
Memo1.Width := 425;
Memo1.Height := 121;
Memo1.Lines.Add('######################################');
Memo1.Lines.Add('#SuperBatmans''s Miner Thing');
Memo1.Lines.Add('#Xp gained: 60480');
Memo1.Lines.Add('#Time Running: 3 Hours, 16 Minutes and 0 Seconds');
Memo1.Lines.Add('#');
Memo1.Lines.Add('#Terminated For: Demon Random Event');
Memo1.TabOrder := 20;
Button[3].Caption := '--------->';
Button[3].OnClick:=@NextPlayers;
Button[4].Caption := 'Exit';
Button[4].OnClick:=@ExitForm;
Button[5].Caption := 'Save and Exit';
Button[5].OnClick:=@SaveAndExitClick;
Button[6].Caption := 'Save and Start';
Button[5].OnClick:=@SaveAndStartClick;
Button[7].Caption := 'Back To Menu';
end;
Procedure Initform1;
var
i: integer;
begin
MainForm1 := CreateForm;
MainForm1.Left := 250;
MainForm1.Top := 114;
MainForm1.Width := 281;
MainForm1.Height := 436;
MainForm1.Caption := 'SuperBatman'#39's Script Pack';
MainForm1.Color := clWhite;
MainForm1.Font.Color := clWindowText;
MainForm1.Font.Height := -11;
MainForm1.Font.Name := 'MS Sans Serif';
MainForm1.Font.Style := [];
MainForm1.Visible := False;
MainForm1.PixelsPerInch := 96;
Label1 := TLabel.Create(MainForm1);
Label1.Parent := MainForm1;
Label1.Left := 24;
Label1.Top := 32;
Label1.Width := 217;
Label1.Height := 23;
Label1.Caption := 'SuperBatman'#39's Script Pack!';
Label1.Font.Color := clRed;
Label1.Font.Height := -16;
Label1.Font.Name := 'Comic Sans MS';
Label1.Font.Style := [fsBold];
Label1.ParentFont := False;
For i:=0 to 4 do
begin
MainButton[i]:= TButton.Create(MainForm1);
MainButton[i].Parent:=MainForm1;
MainButton[i].Left:=24;
MainButton[i].Width:=217;
MainButton[i].Height:=41;
MainButton[i].Top:=72+(64*i);
MainButton[i].TabOrder:=8+i;
end;
MainButton[0].OnClick:=@OpenMineForm;
{MainButton0 := TButton.Create(MainForm1);
MainButton0.Parent := MainForm1;
MainButton0.Left := 24;
MainButton0.Top := 72;
MainButton0.Width := 217;
MainButton0.Height := 41;}
MainButton[0].Caption := 'Super Miner';
//MainButton0.TabOrder := 8;}
//MainButton1 := TButton.Create(MainForm1);
{MainButton1.Parent := MainForm1;
MainButton1.Left := 24;
MainButton1.Top := 136;
MainButton1.Width := 217;
MainButton1.Height := 41; }
MainButton[1].Caption := 'Super Cooker';
{MainButton1.Font.Color := clWindowText;
MainButton1.Font.Height := -11;
MainButton1.Font.Name := 'Main';
MainButton1.Font.Style := [];
MainButton1.ParentFont := False;
MainButton1.TabOrder := 9;
MainButton2 := TButton.Create(MainForm1);
MainButton2.Parent := MainForm1;
MainButton2.Left := 24;
MainButton2.Top := 200;
MainButton2.Width := 217;
MainButton2.Height := 41; }
MainButton[2].Caption := 'Super Fisher';
{MainButton2.TabOrder := 10;
MainButton3 := TButton.Create(MainForm1);
MainButton3.Parent := MainForm1;
MainButton3.Left := 24;
MainButton3.Top := 264;
MainButton3.Width := 217;
MainButton3.Height := 41; }
MainButton[3].Caption := 'Super WoodCutter';
{MainButton3.TabOrder := 11;
MainButton4 := TButton.Create(MainForm1);
MainButton4.Parent := MainForm1;
MainButton4.Left := 24;
MainButton4.Top := 328;
MainButton4.Width := 217;
MainButton4.Height := 41; }
MainButton[4].Caption := 'Next Page';
//MainButton4.TabOrder := 12;
end;
begin
FirstSetup;
OpenForm(1,'MainForm1');
end.