SRL Archive - Help and Support

help with out of range error


omgh4x0rz

2007-05-19 10:54:52

I'm making a form where the user can click create/delete to create new players, but whenever I click create I get an annoying pop-up box that says "Out of Range"

I looked at star-blaster's powerskills because that does essentially the same thing I am trying to, but I get the pop-up on that as well when I click create player.

Any one know what is wrong?

If you really want to see the code here you go.

program New;
{.include SRL/SRL.scar}
var
main : TForm;
Memo1 : TMemo;
setup : TButton;
reportButton : TButton;
version : TButton;
update : TButton;
start : TButton;
news : TButton;
PlayerForm : TForm;
PlayerNoLabel : TLabel;
Label1 : TLabel;
Label2 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
Edit1 : TEdit;
Edit2 : TEdit;
treebox : TComboBox;
responderbox : TCheckBox;
Edit3 : TEdit;
CheckBox2 : TCheckBox;
create : TButton;
deletebutton : TButton;
next : TButton;
previous : TButton;
bankingbox : TComboBox;
Save : TButton;
report : TForm;
emailPrompt : TLabel;
errorPrompt : TLabel;
sig : TLabel;
error : TMemo;
email : TEdit;
send : TButton;
UsedPlayerForm:boolean;

const
VerNumber = '2.0';

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
CurrentPlayer := 0;
NumberOfPlayers(HowManyPlayers); // set arraylength

Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Loc :='';
Players[0].Active:=true;
Players[0].WaitTime:= 5;
Players[0].String1:='';
Players[0].String2:='';//Leave empty if there is no pin
Players[0].String3:='';
Players[0].Integer1:=2; //banking options: 1=power chopping (dropping), 2=draynor banking
end;

{ ---------------------------------------------------------------------------- ]
[ >> Main Form ]
[ >> loads the main form ]
[ ---------------------------------------------------------------------------- }
procedure safeinitform;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitMainForm', v);
end;

procedure ShowFormModal;
begin
main.ShowModal;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;

{ ---------------------------------------------------------------------------- ]
[ >> Player stuff ]
[ >> The procedures loading and saving players ]
[ ---------------------------------------------------------------------------- }
procedure safeinitplayerform;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitPlayerForm', v);
end;

procedure ShowPLayerFormModal;
begin
playerForm.ShowModal;
end;

procedure SafeShowPlayerFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowPlayerFormModal', v);
end;

procedure setupPlayers(sender: TObject);
begin
safeinitPlayerForm;
safeshowPlayerFormModal;
//UsedPlayerForm:=True;
end;

Procedure SavePlayersInForm(No: Integer);
Begin
Players[no].Name := Edit1.Text;
Players[no].Pass := Edit2.Text;
Players[no].Nick := 'ick' ;
Players[no].Active := True;
Players[no].String1:= Treebox.text;
Players[no].String2:= BankingBox.text;
Players[no].String3:= Edit3.text;
end;

Procedure LoadPlayersInForm(no: Integer);
Begin
try
Edit1.text:=Players[no].Name;
Edit2.text:=Players[no].Pass;
Treebox.text:=Players[no].String1;
Bankingbox.text:=Players[no].String2;
Edit3.text:=Players[no].String3;
except
end;
end;

procedure SaveUs2;
var
f, CharsFile: Integer;
begin
CharsFile := RewriteFile(ScriptPath + 'omnipotent chars.dat', False)
For f := 0 to HowManyPlayers - 1 do
begin
WriteFileString(CharsFile, 'name' +IntToStr(f)+ '=' +players[f].name+ Chr(13))
WriteFileString(CharsFile, 'pass' +IntToStr(f)+ '=' +players[f].pass+ Chr(13))
WriteFileString(CharsFile, 'nick' +IntToStr(f)+ '=' +players[f].nick+ Chr(13))
WriteFileString(CharsFile, 'treetype' +IntToStr(f)+ '=' +players[f].string1+ Chr(13))
WriteFileString(CharsFile, 'banking' +IntToStr(f)+ '=' +players[f].string2 + Chr(13))
WriteFileString(CharsFile, 'pin' +IntToStr(f)+ '=' +players[f].string3 + Chr(13))
//WriteFileString(CharsFile, 'active' +IntToStr(f)+ '=' +BoolToStr(players[f].Active) + Chr(13))
end;
CloseFile(charsfile)
end;

procedure LoadUs2;
var
f, CharsFile, Temp: Integer;
begin
CharsFile := OpenFile(ScriptPath + 'omnipotent chars.dat', False)
if (CharsFile < 0) then
begin
WriteLn('Error Loading Chars');
Exit;
end;
ReadFileString(CharsFile, CharsFileString, FileSize(CharsFile))
CloseFile(CharsFile)
Temp := CountPlayers;
If (Temp <= 0) then Temp:= 1;
SetArrayLength(players, Temp);
HowManyPlayers := GetArrayLength(players)
for f := 0 to HowManyPlayers - 1 do
begin
players[f].Name := GetFileData(f, 'name')
players[f].Pass := GetFileData(f, 'pass')
players[f].Nick := GetFileData(f, 'nick')
players[f].String1 := GetFileData(f, 'treetype')
players[f].String2 := GetFileData(f, 'banking')
players[f].String3 := GetFileData(f, 'pin')
players[f].Active := True;
end
CloseFile(CharsFile);
end;

Procedure CreateNewUser(sender: Tobject);
begin
SavePlayersInForm(CurrentPlayer);
SetArrayLength(Players, GetArrayLength(Players) + 1)
CurrentPlayer := GetArrayLength(Players) - 1;
PlayerNoLabel.Caption:='Player ['+inttostr(CurrentPlayer)+']';
LoadPlayersInForm(CurrentPlayer);
end;

procedure erasePlayer(sender:TObject);
begin
HowManyPlayers:=HowManyPlayers-1;
Numberofplayers(HowManyPlayers);
CurrentPlayer:=CurrentPlayer-1;
end;


{ ---------------------------------------------------------------------------- ]
[ >> errorstuff ]
[ >> The procedures for the bug report service ]
[ ---------------------------------------------------------------------------- }
procedure safeiniterrorform;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitErrorForm', v);
end;

procedure ShowErrorFormModal;
begin
report.ShowModal;
end;

procedure SafeShowErrorFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowErrorFormModal', v);
end;

procedure openReport(sender: TObject);
begin
safeinitErrorForm;
safeshowErrorFormModal;
end;

procedure sendError(sender: TObject);
begin
report.ModalResult:=mrOK;
end;

procedure quickStart(sender: TObject);
begin
main.modalResult:=mrOK;
end;

{ ---------------------------------------------------------------------------- ]
[ >> Script Info ]
[ >> Checks version# and Retrieves the most recent news ]
[ ---------------------------------------------------------------------------- }
procedure getNews(sender: TObject);
var
news:string;
c:integer;
begin
news:=GetPage('http://omgh4x0rz.freehostia.com/news.txt');
memo1.LINES.add('>>Downloading most recent news....');
if (news=' ') then
begin
memo1.Lines.add('Error connecting to site.');
end else
begin
while (1=1)do
begin
c:=pos('>',news);
if (c = 0) then
begin
memo1.Lines.add(news);
break;
end;
memo1.LINES.add(copy(news, 0, c-1));
news:=copy(news, c+1, length(news)-c);
end;
memo1.Lines.add(' ');
memo1.Lines.add(' ');
end;
end;

procedure versionCheck(sender: TObject);
var
text,curVer:string;
begin
Memo1.LINES.add('>>checking version number....');
curVer:=GetPage('http://omgh4x0rz.freehostia.com/version.txt');
if (curVer = VerNumber) then
begin
memo1.Lines.add('Your script is up-to-date!');
memo1.Lines.add(' ');
memo1.Lines.add(' ');
end else
begin
memo1.Lines.add('WARNING: You do not have the newest version!');
memo1.Lines.add('There may have been changes to runescape which will cause your version to funciton improperly.');
memo1.Lines.add('To get the new release click the update script button.');
memo1.lines.add(' ');
memo1.lines.add(' ');
end;
end;

{ ---------------------------------------------------------------------------- ]
[ >> Initializes the main form ]
[ ]
[ ---------------------------------------------------------------------------- }
procedure initMainform;
begin
main := CreateForm;
main.Left := 249;
main.Top := 114;
main.Width := 465;
main.Height := 344;
main.Caption := 'omgh4x0rz- Omnipotent Chopper';
main.Color := clBtnFace;
main.Font.Color := clWindowText;
main.Font.Height := -11;
main.Font.Name := 'MS Sans Serif';
main.Font.Style := [];
main.Visible := false;
main.PixelsPerInch := 96;
Memo1 := TMemo.Create(main);
Memo1.Parent := main;
Memo1.Left := 155;
Memo1.Top := 37;
Memo1.Width := 267;
Memo1.Height := 180;
Memo1.TabOrder := 8;
setup := TButton.Create(main);
setup.Parent := main;
setup.OnClick:=@setupPlayers;
setup.Left := 31;
setup.Top := 37;
setup.Width := 75;
setup.Height := 25;
setup.Caption := 'Player Setup';
setup.TabOrder := 9;
reportButton := TButton.Create(main);
reportButton.onClick:=@openReport;
reportButton.Parent := main;
reportButton.Left := 31;
reportButton.Top := 79;
reportButton.Width := 75;
reportButton.Height := 25;
reportButton.Caption := 'Report Bug';
reportButton.TabOrder := 10;
version := TButton.Create(main);
version.Parent := main;
Version.onClick:=@versioncheck;
version.Left := 31;
version.Top := 123;
version.Width := 75;
version.Height := 25;
version.Caption := 'Version Check';
version.TabOrder := 11;
update := TButton.Create(main);
update.Parent := main;
update.Left := 30;
update.Top := 166;
update.Width := 75;
update.Height := 25;
update.Caption := 'Update Script';
update.TabOrder := 12;
start := TButton.Create(main);
start.onClick:=@quickStart;
start.Parent := main;
start.Left := 236;
start.Top := 240;
start.Width := 85;
start.Height := 42;
start.Caption := 'Quick Start!';
start.TabOrder := 13;
news := TButton.Create(main);
news.Parent := main;
news.OnClick:=@getNews;
news.Left := 30;
news.Top := 210;
news.Width := 75;
news.Height := 25;
news.Caption := 'Get News';
news.TabOrder := 14;
end;

{ ---------------------------------------------------------------------------- ]
[ >> initializes the player forms ]
[ >> ]
[ ---------------------------------------------------------------------------- }
procedure initPlayerform;
begin
PlayerForm := CreateForm;
PlayerForm.Left := 291;
PlayerForm.Top := 30;
PlayerForm.Width := 404;
PlayerForm.Height := 325;
PlayerForm.Caption := 'Player Setup';
PlayerForm.Color := clBtnFace;
PlayerForm.Font.Color := clWindowText;
PlayerForm.Font.Height := -11;
PlayerForm.Font.Name := 'MS Sans Serif';
PlayerForm.Font.Style := [];
PlayerForm.Visible := false;
PlayerForm.PixelsPerInch := 96;
PlayerNoLabel:= TLabel.Create(PlayerForm);
PlayerNoLabel.Parent := PlayerForm;
PlayerNoLabel.Left := 15;
PlayerNoLabel.Top := 10;
PlayerNoLabel.Width := 48;
PlayerNoLabel.Height := 13;
Label1 := TLabel.Create(PlayerForm);
Label1.Parent := PlayerForm;
Label1.Left := 8;
Label1.Top := 24;
Label1.Width := 48;
Label1.Height := 13;
Label1.Caption := 'Username';
Label2 := TLabel.Create(PlayerForm);
Label2.Parent := PlayerForm;
Label2.Left := 8;
Label2.Top := 58;
Label2.Width := 46;
Label2.Height := 13;
Label2.Caption := 'Password';
Label3 := TLabel.Create(PlayerForm);
Label3.Parent := PlayerForm;
Label3.Left := 12;
Label3.Top := 96;
Label3.Width := 3;
Label3.Height := 13;
Label4 := TLabel.Create(PlayerForm);
Label4.Parent := PlayerForm;
Label4.Left := 72;
Label4.Top := 94;
Label4.Width := 121;
Label4.Height := 13;
Label4.Caption := 'Pin# (leave blank if none)';
Edit1 := TEdit.Create(PlayerForm);
Edit1.Parent := PlayerForm;
Edit1.Left := 64;
Edit1.Top := 17;
Edit1.Width := 121;
Edit1.Height := 21;
Edit1.TabOrder := 8;
Edit1.Text := 'Edit1';
Edit2 := TEdit.Create(PlayerForm);
Edit2.Parent := PlayerForm;
Edit2.Left := 64;
Edit2.Top := 54;
Edit2.Width := 121;
Edit2.Height := 21;
Edit2.PasswordChar := '*';
Edit2.TabOrder := 9;
treebox := TComboBox.Create(PlayerForm);
treebox.Parent := PlayerForm;
treebox.Left := 207;
treebox.Top := 17;
treebox.Width := 145;
treebox.Height := 21;
treebox.ItemHeight := 13;
treebox.TabOrder := 10;
treebox.Text := 'Regular Tree';
responderbox := TCheckBox.Create(PlayerForm);
responderbox.Parent := PlayerForm;
responderbox.Left := 70;
responderbox.Top := 120;
responderbox.Width := 97;
responderbox.Height := 17;
responderbox.Caption := 'Auto-Responder';
responderbox.TabOrder := 11;
Edit3 := TEdit.Create(PlayerForm);
Edit3.Parent := PlayerForm;
Edit3.Left := 207;
Edit3.Top := 92;
Edit3.Width := 121;
Edit3.Height := 21;
Edit3.TabOrder := 12;
CheckBox2 := TCheckBox.Create(PlayerForm);
CheckBox2.Parent := PlayerForm;
CheckBox2.Left := 210;
CheckBox2.Top := 119;
CheckBox2.Width := 97;
CheckBox2.Height := 17;
CheckBox2.Caption := 'Random Talker';
CheckBox2.TabOrder := 13;
create := TButton.Create(PlayerForm);
create.Parent := PlayerForm;
create.onClick:=@CreateNewUser;
create.Left := 223;
create.Top := 146;
create.Width := 78;
create.Height := 35;
create.Caption := 'Create Player';
create.TabOrder := 14;
deletebutton := TButton.Create(PlayerForm);
deletebutton.Parent := PlayerForm;
//deletebutton.onClick:=@erasePlayer;
deletebutton.Left := 73;
deletebutton.Top := 149;
deletebutton.Width := 76;
deletebutton.Height := 33;
deletebutton.Caption := 'Delete Player';
deletebutton.TabOrder := 15;
next := TButton.Create(PlayerForm);
next.Parent := PlayerForm;
next.Left := 223;
next.Top := 185;
next.Width := 75;
next.Height := 17;
next.Caption := 'Next ---->';
next.TabOrder := 16;
previous := TButton.Create(PlayerForm);
previous.Parent := PlayerForm;
previous.Left := 74;
previous.Top := 185;
previous.Width := 75;
previous.Height := 17;
previous.Caption := '<----Previous';
previous.TabOrder := 17;
bankingbox := TComboBox.Create(PlayerForm);
bankingbox.Parent := PlayerForm;
bankingbox.Left := 207;
bankingbox.Top := 54;
bankingbox.Width := 145;
bankingbox.Height := 21;
bankingbox.ItemHeight := 13;
bankingbox.TabOrder := 18;
bankingbox.Text := 'Power Chopping';
Save := TButton.Create(PlayerForm);
Save.Parent := PlayerForm;
Save.Left := 150;
Save.Top := 217;
Save.Width := 75;
Save.Height := 35;
Save.Caption := 'Save';
Save.TabOrder := 20;
end;

{ ---------------------------------------------------------------------------- ]
[ >> Initializes the error report form ]
[ >> sends an error report to my website ]
[ ---------------------------------------------------------------------------- }
procedure initerrorform;
begin
report := CreateForm;
report.Left := 250;
report.Top := 114;
report.Width := 326;
report.Height := 383;
report.Caption := 'Error Report';
report.Color := clBtnFace;
report.Font.Color := clWindowText;
report.Font.Height := -11;
report.Font.Name := 'MS Sans Serif';
report.Font.Style := [];
report.Visible := false;
report.PixelsPerInch := 96;
emailPrompt := TLabel.Create(report);
emailPrompt.Parent := report;
emailPrompt.Left := 55;
emailPrompt.Top := 209;
emailPrompt.Width := 66;
emailPrompt.Height := 21;
emailPrompt.Caption := 'Your email:';
emailPrompt.Font.Color := clWindowText;
emailPrompt.Font.Height := -13;
emailPrompt.Font.Name := 'Papyrus';
emailPrompt.Font.Style := [];
emailPrompt.ParentFont := False;
errorPrompt := TLabel.Create(report);
errorPrompt.Parent := report;
errorPrompt.Left := 49;
errorPrompt.Top := 81;
errorPrompt.Width := 142;
errorPrompt.Height := 21;
errorPrompt.Caption := 'Describe the error here:';
errorPrompt.Font.Color := clWindowText;
errorPrompt.Font.Height := -13;
errorPrompt.Font.Name := 'Papyrus';
errorPrompt.Font.Style := [];
errorPrompt.ParentFont := False;
sig := TLabel.Create(report);
sig.Parent := report;
sig.Left := 26;
sig.Top := 17;
sig.Width := 251;
sig.Height := 30;
sig.Caption := 'Omgh4x0rz error report service';
sig.Font.Color := clWindowText;
sig.Font.Height := -19;
sig.Font.Name := 'Papyrus';
sig.Font.Style := [];
sig.ParentFont := False;
error := TMemo.Create(report);
error.Parent := report;
error.Left := 50;
error.Top := 101;
error.Width := 185;
error.Height := 89;
error.TabOrder := 8;
email := TEdit.Create(report);
email.Parent := report;
email.Left := 54;
email.Top := 230;
email.Width := 121;
email.Height := 21;
email.TabOrder := 9;
send := TButton.Create(report);
send.Parent := report;
send.onClick:=@senderror;
send.Left := 96;
send.Top := 269;
send.Width := 85;
send.Height := 42;
send.Caption := 'Send Report';
send.TabOrder := 11;
end;




begin
safeinitform;
safeshowformmodal;
end.