📄 cmain.pas
字号:
end;
m_sSockText := '';
m_sBufferText := '';
end;
procedure TfrmCMain.CSocketConnecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.Panels[0].Text := '正在连接服务器...';
end;
procedure TfrmCMain.CSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.Panels[0].Text := '已断开连接...';
g_boServerConnected := False;
if (g_ConnectionStep = cnsLogin) and not g_boSendLogin then begin
MessageDlg('Connection closed...', [mbOk]);
end;
if g_SoftClosed then begin
g_SoftClosed := False;
ActiveCmdTimer(tcReSelConnect);
end;
end;
procedure TfrmCMain.CSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
Socket.Close;
end;
procedure TfrmCMain.CSocketLookup(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.Panels[0].Text := '正在解析地址...';
end;
procedure TfrmCMain.CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
var
nIdx: Integer;
sData: string;
sData2: string;
begin
sData := Socket.ReceiveText;
nIdx := Pos('*', sData);
if nIdx > 0 then begin
sData2 := Copy(sData, 1, nIdx - 1);
sData := sData2 + Copy(sData, nIdx + 1, Length(sData));
CSocket.Socket.SendText('*');
end;
m_sSockText := m_sSockText + sData;
end;
procedure TfrmCMain.PanelUserLoginMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012; //$F020
begin
ReleaseCapture;
(Sender as TWinControl).Perform(WM_SysCommand, SC_DragMove, 0);
end;
procedure TfrmCMain.POPMENU_AUTOSCROLLClick(Sender: TObject);
begin
POPMENU_AUTOSCROLL.Checked := not POPMENU_AUTOSCROLL.Checked;
m_boChatAutoScroll := POPMENU_AUTOSCROLL.Checked;
end;
procedure TfrmCMain.EditAccountEnter(Sender: TObject);
begin
if Sender = EditAccount then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('您的帐号名称可以包括:');
MemoHelp.Lines.Add('字符、数字的组合。');
MemoHelp.Lines.Add('帐号名称长度必须为4或以上。');
MemoHelp.Lines.Add('登陆帐号并游戏中的人物名称。');
MemoHelp.Lines.Add('请仔细输入创建帐号所需信息。');
MemoHelp.Lines.Add('您的登陆帐号可以登陆游戏');
MemoHelp.Lines.Add('及我们网站,以取得一些相关信息。');
MemoHelp.Lines.Add('');
MemoHelp.Lines.Add('建议您的登陆帐号不要与游戏中的角');
MemoHelp.Lines.Add('色名相同,');
MemoHelp.Lines.Add('以确保你的密码不会被爆力破解。');
Exit;
end;
if Sender = EditPassword then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('您的密码可以是字符及数字的组合,');
MemoHelp.Lines.Add('但密码长度必须至少4位。');
MemoHelp.Lines.Add('建议您的密码内容不要过于简单,');
MemoHelp.Lines.Add('以防被人猜到。');
MemoHelp.Lines.Add('请记住您输入的密码,如果丢失密码');
MemoHelp.Lines.Add('将无法登录游戏。');
end;
if Sender = EditConfirm then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('再次输入密码');
MemoHelp.Lines.Add('以确认。');
end;
if Sender = EditYourName then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入您的全名.');
end;
if Sender = EditSSNo then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入你的身份证号');
MemoHelp.Lines.Add('例如: 720101-146720');
end;
if Sender = EditBirthDay then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入您的生日');
MemoHelp.Lines.Add('例如:1977/10/15');
end;
if Sender = EditQuiz1 then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入第一个密码提示问题');
MemoHelp.Lines.Add('这个提示将用于密码丢失后找');
MemoHelp.Lines.Add('回密码用。');
MemoHelp.Lines.Add('');
end;
if Sender = EditAnswer1 then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入上面问题的');
MemoHelp.Lines.Add('答案。');
MemoHelp.Lines.Add('');
end;
if Sender = EditQuiz2 then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入第二个密码提示问题');
MemoHelp.Lines.Add('这个提示将用于密码丢失后找');
MemoHelp.Lines.Add('回密码用。');
MemoHelp.Lines.Add('');
end;
if Sender = EditAnswer2 then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入上面问题的');
MemoHelp.Lines.Add('答案。');
MemoHelp.Lines.Add('');
end;
if Sender = EditPhone then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入您的电话');
MemoHelp.Lines.Add('号码。');
MemoHelp.Lines.Add('');
end;
if Sender = EditMobPhone then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入您的手机号码。');
MemoHelp.Lines.Add('');
end;
if Sender = EditEMail then begin
MemoHelp.Clear;
MemoHelp.Lines.Add('请输入您的邮件地址。您的邮件将被');
MemoHelp.Lines.Add('接收最近更新的一些信息');
MemoHelp.Lines.Add('');
end;
end;
function TfrmCMain.NewIdCheckBirthDay: Boolean;
var
str, t1, t2, t3, syear, smon, sday: string;
ayear, amon, aday, sex: Integer;
flag: Boolean;
begin
Result := True;
flag := True;
str := EditBirthDay.Text;
str := GetValidStr3(str, syear, ['/']);
str := GetValidStr3(str, smon, ['/']);
str := GetValidStr3(str, sday, ['/']);
ayear := Str_ToInt(syear, 0);
amon := Str_ToInt(smon, 0);
aday := Str_ToInt(sday, 0);
if (ayear <= 1890) or (ayear > 2101) then flag := False;
if (amon <= 0) or (amon > 12) then flag := False;
if (aday <= 0) or (aday > 31) then flag := False;
if not flag then begin
Beep;
EditBirthDay.SetFocus;
Result := False;
end;
end;
function TfrmCMain.CheckUserEntrys: Boolean;
begin
Result := False;
EditAccount.Text := Trim(EditAccount.Text);
EditQuiz1.Text := Trim(EditQuiz1.Text);
EditYourName.Text := Trim(EditYourName.Text);
if Length(EditAccount.Text) < 3 then begin
MessageBox(Handle, '登录帐号的长度必须大于3位。', '提示信息', MB_OK + MB_ICONINFORMATION);
Beep;
EditAccount.SetFocus;
Exit;
end;
if not NewIdCheckBirthDay then Exit;
if Length(EditPassword.Text) < 3 then begin
EditPassword.SetFocus;
Exit;
end;
if EditPassword.Text <> EditConfirm.Text then begin
EditConfirm.SetFocus;
Exit;
end;
if Length(EditQuiz1.Text) < 1 then begin
EditQuiz1.SetFocus;
Exit;
end;
if Length(EditAnswer1.Text) < 1 then begin
EditAnswer1.SetFocus;
Exit;
end;
if Length(EditQuiz2.Text) < 1 then begin
EditQuiz2.SetFocus;
Exit;
end;
if Length(EditAnswer2.Text) < 1 then begin
EditAnswer2.SetFocus;
Exit;
end;
if Length(EditYourName.Text) < 1 then begin
EditYourName.SetFocus;
Exit;
end;
Result := True;
end;
procedure TfrmCMain.ButtonPanelNewAccountOKClick(Sender: TObject);
var
ue: TUserEntry;
ua: TUserEntryAdd;
begin
if GetTickCount - dwOKTick < 5000 then begin
MessageBox(Handle, '请稍候再点确定!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
Exit;
end;
if CheckUserEntrys then begin
FillChar(ue, sizeof(TUserEntry), #0);
FillChar(ua, sizeof(TUserEntryAdd), #0);
ue.sAccount := LowerCase(EditAccount.Text);
ue.sPassWord := EditPassword.Text;
ue.sUserName := EditYourName.Text;
ue.sSSNo := '650101-1455111';
ue.sQuiz := EditQuiz1.Text;
ue.sAnswer := Trim(EditAnswer1.Text);
ue.sPhone := EditPhone.Text;
ue.sEMail := Trim(EditEMail.Text);
ua.sQuiz2 := EditQuiz2.Text;
ua.sAnswer2 := Trim(EditAnswer2.Text);
ua.sBirthday := EditBirthDay.Text;
ua.sMobilePhone := EditMobPhone.Text;
NewIdRetryUE := ue;
NewIdRetryUE.sAccount := '';
NewIdRetryUE.sPassWord := '';
NewIdRetryAdd := ua;
SendNewAccount(ue, ua);
ButtonPanelNewAccountOK.Enabled := False;
dwOKTick := GetTickCount();
end;
end;
procedure TfrmCMain.EditChatKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) and (Trim(EditChat.Text) <> '') then begin
SendSay(EditChat.Text);
EditChat.Text := '';
Key := #0;
end;
end;
procedure TfrmCMain.EditUserAccountKeyPress(Sender: TObject;
var Key: Char);
begin
if Sender = EditUserAccount then begin
if Key = #13 then begin
Key := #0;
EditUserPassword.SetFocus;
end;
end else
if Sender = EditUserPassword then begin
if Key = #13 then begin
Key := #0;
ButtonStartClick(ButtonStart);
end;
end;
end;
procedure TfrmCMain.ButtonStartClick(Sender: TObject);
begin
if (Sender = ButtonLoginClose) or
(Sender = ButtonSelectServerClose) or
(Sender = ButtonSelectChrClose) or
(Sender = ButtonPlayGameClose) then begin
Close;
end else
if Sender = ButtonPanelNewAccountClose then begin
ChangeScene(stLogin);
end else
if Sender = ButtonStart then begin
m_sLoginAccount := LowerCase(EditUserAccount.Text);
m_sLoginPasswd := EditUserPassword.Text;
if g_boSendLogin then begin
MessageDlg('正在登录,请稍候...', []);
Exit;
end;
if (m_sLoginAccount <> '') and (m_sLoginPasswd <> '') then begin
SendLogin(m_sLoginAccount, m_sLoginPasswd);
EditUserAccount.Text := '';
EditUserPassword.Text := '';
EditUserAccount.Enabled := False;
EditUserPassword.Enabled := False;
end else begin
EditUserAccount.Text := '';
EditUserPassword.Text := '';
EditUserAccount.SetFocus;
end;
end else
if Sender = ButtonNewAccount then begin
ChangeScene(st_NewAccount);
end else
if Sender = ButtonCreateNewChr then begin
PanelCreateNewChr.Visible := False;
end;
end;
procedure TfrmCMain.CheckBoxAutoLoginClick(Sender: TObject);
begin
if Sender = CheckBoxAutoLogin then begin
m_boAutoLogin := CheckBoxAutoLogin.Checked;
end else
if Sender = ButtonChr1 then begin
if ButtonChr1.Checked then m_nAutoChr := 0;
end else
if Sender = ButtonChr2 then begin
if ButtonChr2.Checked then m_nAutoChr := 1;
end;
end;
function TfrmCMain.MessageDlg(sMsg: string;
DlgButtons: TMsgDlgButtons): TModalResult;
begin
MsgBoxOK.Visible := False;
MsgBoxYes.Visible := False;
MsgBoxCancel.Visible := False;
MsgBoxNo.Visible := False;
PanelMessageDlg.Left := (Width - PanelMessageDlg.Width) div 2;
PanelMessageDlg.top := (Height - PanelMessageDlg.Height) div 2;
MsgBoxLabel.Caption := sMsg;
SetTopOrder(PanelMessageDlg);
PanelMessageDlg.Visible := True;
end;
procedure TfrmCMain.MsgBoxOKClick(Sender: TObject);
begin
if Sender = MsgBoxOK then begin
end else
if Sender = MsgBoxCancel then begin
end else
if Sender = MsgBoxYes then begin
end else
if Sender = MsgBoxNo then begin
end else
if Sender = MsgBoxClose then begin
PanelMessageDlg.Visible := False;
end;
end;
procedure TfrmCMain.ButtonServer1Click(Sender: TObject);
var
sSvrName: string;
begin
if Sender = ButtonServer1 then begin
sSvrName := g_ServerList.Strings[0];
end else
if Sender = ButtonServer2 then begin
sSvrName := g_ServerList.Strings[1];
end else
if Sender = ButtonServer3 then begin
sSvrName := g_ServerList.Strings[2];
end else
if Sender = ButtonServer4 then begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -