📄 introscn.pas
字号:
var
key: char;
begin
key := #13;
EdLoginPasswdKeyPress (self, key);
end;
procedure TLoginScene.ChgPwClick;
begin
ChangeLoginState (lsChgPw);
end;
function TLoginScene.CheckUserEntrys: Boolean;
begin
Result := FALSE;
m_EdNewId.Text := Trim(m_EdNewId.Text);
m_EdQuiz1.Text := Trim(m_EdQuiz1.Text);
m_EdYourName.Text := Trim(m_EdYourName.Text);
if not NewIdCheckNewId then exit;
if not EnglishVersion then begin
if not NewIdCheckSSNo then
exit;
end;
if not NewIdCheckBirthday then exit;
if Length(m_EdNewId.Text) < 3 then begin
m_EdNewId.SetFocus;
exit;
end;
if Length(m_EdNewPasswd.Text) < 3 then begin
m_EdNewPasswd.SetFocus;
exit;
end;
if m_EdNewPasswd.Text <> m_EdConfirm.Text then begin
m_EdConfirm.SetFocus;
exit;
end;
if Length(m_EdQuiz1.Text) < 1 then begin
m_EdQuiz1.SetFocus;
exit;
end;
if Length(m_EdAnswer1.Text) < 1 then begin
m_EdAnswer1.SetFocus;
exit;
end;
if Length(m_EdQuiz2.Text) < 1 then begin
m_EdQuiz2.SetFocus;
exit;
end;
if Length(m_EdAnswer2.Text) < 1 then begin
m_EdAnswer2.SetFocus;
exit;
end;
if Length(m_EdYourName.Text) < 1 then begin
m_EdYourName.SetFocus;
exit;
end;
if not EnglishVersion then begin
if Length(m_EdSSNo.Text) < 1 then begin
m_EdSSNo.SetFocus;
exit;
end;
end;
Result := TRUE;
end;
procedure TLoginScene.NewAccountOk;
var
ue: TUserEntry;
ua: TUserEntryAdd;
begin
if CheckUserEntrys then begin
FillChar (ue, sizeof(TUserEntry), #0);
FillChar (ua, sizeof(TUserEntryAdd), #0);
ue.sAccount := LowerCase(m_EdNewId.Text);
ue.sPassword := m_EdNewPasswd.Text;
ue.sUserName := m_EdYourName.Text;
if not EnglishVersion then
ue.sSSNo := m_EdSSNo.Text
else
ue.sSSNo := '650101-1455111';
ue.sQuiz := m_EdQuiz1.Text;
ue.sAnswer := Trim(m_EdAnswer1.Text);
ue.sPhone := m_EdPhone.Text;
ue.sEMail := Trim(m_EdEMail.Text);
ua.sQuiz2 := m_EdQuiz2.Text;
ua.sAnswer2 := Trim(m_EdAnswer2.Text);
ua.sBirthday := m_EdBirthDay.Text;
ua.sMobilePhone := m_EdMobPhone.Text;
m_NewIdRetryUE := ue;
m_NewIdRetryUE.sAccount := '';
m_NewIdRetryUE.sPassword := '';
m_NewIdRetryAdd := ua;
if not m_boUpdateAccountMode then
FrmMain.SendNewAccount (ue, ua)
else
FrmMain.SendUpdateAccount (ue, ua);
m_boUpdateAccountMode := FALSE;
NewAccountClose;
end;
end;
procedure TLoginScene.NewAccountClose;
begin
if not m_boUpdateAccountMode then
ChangeLoginState (lsLogin);
end;
procedure TLoginScene.ChgpwOk;
var
uid, passwd, newpasswd: string;
begin
if m_EdChgNewPw.Text = m_EdChgRepeat.Text then begin
uid := m_EdChgId.Text;
passwd := m_EdChgCurrentpw.Text;
newpasswd := m_EdChgNewPw.Text;
FrmMain.SendChgPw (uid, passwd, newpasswd);
ChgpwCancel;
end else begin
FrmDlg.DMessageDlg ('二次输入的密码不匹配!', [mbOk]);
m_EdChgNewPw.SetFocus;
end;
end;
procedure TLoginScene.ChgpwCancel;
begin
ChangeLoginState (lsLogin);
end;
{-------------------- TSelectChrScene ------------------------}
constructor TSelectChrScene.Create;
begin
CreateChrMode := FALSE;
FillChar (ChrArr, sizeof(TSelChar)*3, #0);
ChrArr[0].FreezeState := TRUE;
ChrArr[1].FreezeState := TRUE;
ChrArr[2].FreezeState := TRUE;
NewIndex := 0;
EdChrName := TEdit.Create (FrmMain.Owner);
with EdChrName do begin
Parent := FrmMain;
Height := 16;
Width := 137;
BorderStyle := bsNone;
Color := clBlack;
Font.Color := clWhite;
ImeMode := LocalLanguage;
MaxLength := 14;
Visible := FALSE;
OnKeyPress := EdChrnameKeyPress;
end;
SoundTimer := TTimer.Create (FrmMain.Owner);
with SoundTimer do begin
OnTimer := SoundOnTimer;
Interval := 1;
Enabled := FALSE;
end;
inherited Create (stSelectChr);
end;
destructor TSelectChrScene.Destroy;
begin
inherited Destroy;
end;
procedure TSelectChrScene.OpenScene;
begin
FrmDlg.DSelectChr.Visible := TRUE;
SoundTimer.Enabled := TRUE;
SoundTimer.Interval := 1;
m_boNowLoading := FALSE;
end;
procedure TSelectChrScene.CloseScene;
begin
SilenceSound;
// m_boNowLoading := FALSE;
FrmDlg.DSelectChr.Visible := FALSE;
SoundTimer.Enabled := FALSE;
end;
procedure TSelectChrScene.SoundOnTimer (Sender: TObject);
begin
PlayBGM (bmg_select);
SoundTimer.Enabled := FALSE;
//SoundTimer.Interval := 38 * 1000;
end;
procedure TSelectChrScene.SelChrSelect1Click;
begin
if (not ChrArr[0].Selected) and (ChrArr[0].Valid) then begin
OldIndex := 0;
FrmMain.SelectChr(ChrArr[0].UserChr.Name);
ChrArr[0].Selected := TRUE;
ChrArr[1].Selected := FALSE;
ChrArr[2].Selected := FALSE;
ChrArr[0].Unfreezing := TRUE;
ChrArr[0].AniIndex := 0;
ChrArr[0].DarkLevel := 0;
ChrArr[0].EffIndex := 0;
ChrArr[0].StartTime := GetTickCount;
ChrArr[0].MoreTime := GetTickCount;
ChrArr[0].StartEffTime := GetTickCount;
PlaySound (s_meltstone);
end;
end;
procedure TSelectChrScene.SelChrSelect2Click;
begin
if (not ChrArr[1].Selected) and (ChrArr[1].Valid) then begin
OldIndex := 1;
FrmMain.SelectChr(ChrArr[1].UserChr.Name);
ChrArr[0].Selected := FALSE;
ChrArr[1].Selected := TRUE;
ChrArr[2].Selected := FALSE;
ChrArr[1].Unfreezing := TRUE;
ChrArr[1].AniIndex := 0;
ChrArr[1].DarkLevel := 0;
ChrArr[1].EffIndex := 0;
ChrArr[1].StartTime := GetTickCount;
ChrArr[1].MoreTime := GetTickCount;
ChrArr[1].StartEffTime := GetTickCount;
PlaySound (s_meltstone);
end;
end;
procedure TSelectChrScene.SelChrSelect3Click;
begin
if (not ChrArr[2].Selected) and (ChrArr[2].Valid) then begin
OldIndex := 2;
FrmMain.SelectChr(ChrArr[2].UserChr.Name);
ChrArr[0].Selected := FALSE;
ChrArr[1].Selected := FALSE;
ChrArr[2].Selected := TRUE;
ChrArr[2].Unfreezing := TRUE;
ChrArr[2].AniIndex := 0;
ChrArr[2].DarkLevel := 0;
ChrArr[2].EffIndex := 0;
ChrArr[2].StartTime := GetTickCount;
ChrArr[2].MoreTime := GetTickCount;
ChrArr[2].StartEffTime := GetTickCount;
PlaySound (s_meltstone);
end;
end;
procedure TSelectChrScene.SelChrStartClick;
var
chrname: string;
begin
chrname := '';
if ChrArr[0].Valid and ChrArr[0].Selected then chrname := ChrArr[0].UserChr.Name;
if ChrArr[1].Valid and ChrArr[1].Selected then chrname := ChrArr[1].UserChr.Name;
if ChrArr[2].Valid and ChrArr[2].Selected then chrname := ChrArr[2].UserChr.Name;
if chrname <> '' then begin
SelectChrScene.OpenLoading;
FrmDlg.DSelectChr.Visible := FALSE;
FrmMain.SendSelChr (chrname);
end else
FrmDlg.DMessageDlg ('还没创建游戏角色!\点击<NEW CHARACTER>按钮创建一个游戏角色。', [mbOk]);
end;
procedure TSelectChrScene.SelChrNewChrClick;
begin
if not ChrArr[0].Valid or not ChrArr[1].Valid or not ChrArr[2].Valid then begin
if not ChrArr[0].Valid then MakeNewChar (0)
else if not ChrArr[1].Valid then MakeNewChar (1)
else MakeNewChar (2);
end else
FrmDlg.DMessageDlg ('一个帐号最多只能创建三个游戏角色!', [mbOk]);
end;
procedure TSelectChrScene.SelChrEraseChrClick;
var
n: integer;
begin
n := 0;
if ChrArr[0].Valid and ChrArr[0].Selected then n := 0;
if ChrArr[1].Valid and ChrArr[1].Selected then n := 1;
if ChrArr[2].Valid and ChrArr[2].Selected then n := 2;
if (ChrArr[n].Valid) and (not ChrArr[n].FreezeState) and (ChrArr[n].UserChr.Name <> '') then begin
if mrYes = FrmDlg.DMessageDlg ('"' + ChrArr[n].UserChr.Name + '" 角色删除后不能恢复,\' +
'你将不能使用同样的角色名字,\'+
'你真的要删除你的角色吗?', [mbYes, mbNo, mbCancel]) then
FrmMain.SendDelChr (ChrArr[n].UserChr.Name);
end;
end;
procedure TSelectChrScene.SelChrCreditsClick;
var
msgStr: String;
begin
msgStr := '';
msgStr := msgStr+'Lom2开发团队\';
msgStr := msgStr+'----------\';
msgStr := msgStr+'lom2\';
msgStr := msgStr+'----------\';
msgStr := msgStr+'http://www.lom2.net\';
msgStr := msgStr+'----------\';
FrmDlg.DialogSize := 2;
FrmDlg.DMessageDlg(msgstr, [mbOk])
end;
procedure TSelectChrScene.SelChrExitClick;
begin
FrmMain.Close;
end;
procedure TSelectChrScene.ClearChrs;
begin
FillChar (ChrArr, sizeof(TSelChar)*3, #0);
ChrArr[0].FreezeState := FALSE;
ChrArr[1].FreezeState := TRUE;
ChrArr[2].FreezeState := TRUE;
ChrArr[0].Selected := TRUE;
ChrArr[1].Selected := FALSE;
ChrArr[2].Selected := FALSE;
ChrArr[0].UserChr.Name := '';
ChrArr[1].UserChr.Name := '';
ChrArr[2].UserChr.Name := '';
end;
procedure TSelectChrScene.AddChr (uname: string; job, hair, level, sex: integer);
var
n: integer;
begin
if not ChrArr[0].Valid then n := 0
else if not ChrArr[1].Valid then n := 1
else if not ChrArr[2].Valid then n := 2
else exit;
ChrArr[n].UserChr.Name := uname;
ChrArr[n].UserChr.Job := job;
ChrArr[n].UserChr.Hair := hair;
ChrArr[n].UserChr.Level := level;
ChrArr[n].UserChr.Sex := sex;
ChrArr[n].Valid := TRUE;
end;
procedure TSelectChrScene.MakeNewChar (index: integer);
begin
CreateChrMode := TRUE;
NewIndex := index;
{ if index = 0 then begin
FrmDlg.DCreateChr.Left := 415;
FrmDlg.DCreateChr.Top := 15;
end else begin}
FrmDlg.DCreateChr.Left := 75;
FrmDlg.DCreateChr.Top := 15;
{ end;}
FrmDlg.DCreateChr.Visible := TRUE;
ChrArr[NewIndex].Valid := TRUE;
ChrArr[NewIndex].IsCreating := True;
ChrArr[NewIndex].FreezeState := FALSE;
EdChrName.Left := FrmDlg.DCreateChr.Left + 387;
EdChrName.Top := FrmDlg.DCreateChr.Top + 140;
EdChrName.Visible := TRUE;
EdChrName.SetFocus;
SelectChr (NewIndex);
FillChar (ChrArr[NewIndex].UserChr, sizeof(TUserCharacterInfo), #0);
end;
procedure TSelectChrScene.EdChrnameKeyPress (Sender: TObject; var Key: Char);
begin
end;
procedure TSelectChrScene.SelectChr (index: integer);
begin
ChrArr[index].Selected := TRUE;
ChrArr[index].DarkLevel := 30;
ChrArr[index].StartTime := GetTickCount;
ChrArr[index].Moretime := GetTickCount;
ChrArr[0].Selected := (index = 0);
ChrArr[1].Selected := (index = 1);
ChrArr[2].Selected := (index = 2);
end;
procedure TSelectChrScene.SelChrNewClose;
begin
ChrArr[NewIndex].Valid := FALSE;
CreateChrMode := FALSE;
FrmDlg.DCreateChr.Visible := FALSE;
EdChrName.Visible := FALSE;
ChrArr[0].Selected := (oldindex = 0);
ChrArr[0].FreezeState := not (oldindex = 0);
ChrArr[1].Selected := (oldindex = 1);
ChrArr[1].FreezeState := not (oldindex = 1);
ChrArr[2].Selected := (oldindex = 2);
ChrArr[2].FreezeState := not (oldindex = 2);
end;
procedure TSelectChrScene.SelChrNewOk;
var
chrname, shair, sjob, ssex: string;
begin
chrname := Trim(EdChrName.Text);
if chrname <> '' then begin
ChrArr[NewIndex].IsCreating := False;
ChrArr[NewIndex].Valid := FALSE;
CreateChrMode := FALSE;
FrmDlg.DCreateChr.Visible := FALSE;
EdChrName.Visible := FALSE;
ChrArr[0].Selected := (oldindex = 0);
ChrArr[0].FreezeState := not (oldindex = 0);
ChrArr[1].Selected := (oldindex = 1);
ChrArr[1].FreezeState := not (oldindex = 1);
ChrArr[2].Selected := (oldindex = 2);
ChrArr[2].FreezeState := not (oldindex = 2);
shair := IntToStr(1 + Random(5)); //////****IntToStr(ChrArr[NewIndex].UserChr.Hair);
sjob := IntToStr(ChrArr[NewIndex].UserChr.Job);
ssex := IntToStr(ChrArr[NewIndex].UserChr.Sex);
FrmMain.SendNewChr (FrmMain.LoginId, chrname, shair, sjob, ssex);
end;
end;
procedure TSelectChrScene.SelChrNewJob (job: integer);
begin
if (job in [0..2]) and (ChrArr[NewIndex].UserChr.Job <> job) then begin
ChrArr[NewIndex].UserChr.Job := job;
SelectChr (NewIndex);
end;
end;
procedure TSelectChrScene.SelChrNewm_btSex (sex: integer);
begin
if sex <> ChrArr[NewIndex].UserChr.Sex then begin
ChrArr[NewIndex].UserChr.Sex := sex;
SelectChr (NewIndex);
end;
end;
procedure TSelectChrScene.SelChrNewPrevHair;
begin
end;
procedure TSelectChrScene.SelChrNewNextHair;
begin
end;
procedure TSelectChrScene.OpenLoading;
begin
m_boNowLoading := TRUE;
m_LoadingWaitTime := GetTickCount;
m_LoadingTime := GetTickCount;
HideSelectChrBox;
LoadHelp1;
LoadHelp2;
end;
procedure TSelectChrScene.LoadHelp1;
var
indexHelp1: Integer;
begin
Randomize;
indexHelp1 := Random(25);
if m_boNowLoading then begin
case indexHelp1 of
0: begin
Help1 := 0;
exit;
end;
1: begin
Help1 := 1;
exit;
end;
2: begin
Help1 := 2;
exit;
end;
3: begin
Help1 := 3;
exit;
end;
4: begin
Help1 := 4;
exit;
end;
5: begin
Help1 := 5;
exit;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -