⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_findid.pas

📁 传奇3封外挂客户端+登陆器+配置器源码............................
💻 PAS
字号:
unit Unit_FindID;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, SUIForm, StdCtrls, SUIEdit, SUIButton, SUIDlg,
  ComCtrls, SUIStatusBar, ScktComp;

type
  TFrm_FindID = class(TForm)
    suiForm1: TsuiForm;
    Label2: TLabel;
    Edit_ID: TsuiEdit;
    Label13: TLabel;
    Edit_Quz1: TsuiEdit;
    Label14: TLabel;
    Edit_Answer1: TsuiEdit;
    Label15: TLabel;
    Label16: TLabel;
    Edit_Quz2: TsuiEdit;
    Edit_Answer2: TsuiEdit;
    Bt_Find: TsuiButton;
    Bt_Close: TsuiButton;
    Label1: TLabel;
    suiMessageDialog1: TsuiMessageDialog;
    suiStatusBar1: TsuiStatusBar;
    CSocket: TClientSocket;
    Timer1: TTimer;
    Edit_Pass: TsuiEdit;
    procedure Show_Message(text:String;Icon:TsuiIconType);
    procedure Bt_CloseClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure CSocketError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure Timer1Timer(Sender: TObject);
    procedure CSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    function DecodeMessagePacket(data:String):integer;
    procedure Edit_IDExit(Sender: TObject);
    procedure Edit_IDKeyPress(Sender: TObject; var Key: Char);
    procedure Bt_FindClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_FindID: TFrm_FindID;
  Step:String;
implementation

uses Unit_Main, Unit_Msg, Unit_MyPro;

{$R *.dfm}

procedure TFrm_FindID.Show_Message(text:String;Icon:TsuiIconType);
begin
  suiMessageDialog1.Caption:='提示信息';
  suiMessageDialog1.Text:=text;
  suiMessageDialog1.IconType:=Icon;
  suiMessageDialog1.ShowModal;
end;


procedure TFrm_FindID.Bt_CloseClick(Sender: TObject);
begin
  Close;
end;

procedure TFrm_FindID.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  CSocket.Active:=False;
  Edit_ID.Text:='';
  Edit_Pass.Text:='';
  Edit_Quz1.Text:='';
  Edit_Answer1.Text:='';
  Edit_Quz2.Text:='';
  Edit_Answer2.Text:='';
  Bt_Find.Enabled:=False;
  Edit_ID.Enabled:=True;
end;

procedure TFrm_FindID.CSocketError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
  suiStatusBar1.Panels[0].Text:='连接失败,可能未开启注册服务。';
  CSocket.Active:=False;
  ErrorCode:=0;
end;

procedure TFrm_FindID.Timer1Timer(Sender: TObject);
var
  Fq:T_SFindQuiz;
  Fp:T_CFindPass;
  msg:TDefaultMessage;
begin
  if Step='FINDQUZ' then
  begin
    fq.LoginId:=Edit_ID.Text;
    msg:=MakeDefaultMsg(CM_FindQuiz,0);
    SendSocket(CSocket.Socket,EncodeMessage(msg)+EncodeBuffer(@fq,sizeof(T_SFindQuiz)));
    Step:='';
  end;
  if Step='FINDPASS' then
  begin
    Fp.LoginId:=Edit_ID.Text;
    fp.Quz1:=Edit_Quz1.Text;
    fp.Answer1:=Edit_Answer1.Text;
    fp.Quz2:=Edit_Quz2.Text;
    fp.Answer2:=Edit_Answer2.Text;
    msg:=MakeDefaultMsg(Cm_FindPass,0);
    SendSocket(CSocket.Socket,EncodeMessage(msg)+EncodeBuffer(@fp,sizeof(T_CFindPass)));
    Step:='';
  end;
  Timer1.Enabled:=False;

end;

procedure TFrm_FindID.CSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  str,data:string;
begin
  suiStatusBar1.Panels[0].Text:='连接成功。';
  str:=Socket.ReceiveText;
  str:=ArrestStringEx(str,'#','!',data);
  DecodeMessagePacket(data);
end;

function TFrm_FindID.DecodeMessagePacket(data:String):integer;
var
  head, body: String;
  msg:TDefaultMessage;
  fq:T_SFindQuiz;
  fp:T_SFindPass;
begin
  Result:=0;
  head := Copy (data, 1, DEFBLOCKSIZE);
  body := Copy (data, DEFBLOCKSIZE+1, Length(data)-DEFBLOCKSIZE);
  msg  := DecodeMessage (head);
  if msg.Comm=SM_FindQuiz_Success then//查找密码提示问题成功
  begin
    suiStatusBar1.Panels[0].Text:='查找帐号成功。';
    DecodeBuffer(body,@fq,sizeof(T_SFindQuiz));
    Edit_ID.Text:=fq.LoginId;
    Edit_Quz1.Text:=fq.Quz1;
    Edit_Quz2.Text:=fq.Quz2;
    Edit_ID.Enabled:=False;
    Bt_Find.Enabled:=True;
  end;
  if msg.Comm=SM_FindQuiz_Fail then
  begin
    if msg.param=1 then
    begin
      show_message('查找帐号失败,帐号不能为空!',suiWarning);
      Edit_ID.Enabled:=True;
      Edit_ID.SetFocus;
      Bt_Find.Enabled:=False;
    end;
    if msg.param=2 then
    begin
      show_message('查找帐号失败,帐号不存在!',suiWarning);
      Edit_ID.Enabled:=True;
      Edit_ID.SetFocus;
      Bt_Find.Enabled:=False;
    end;
  end;
  if msg.Comm=SM_FindPass_Success then
  begin
    show_message('查找密码结束,请妥善保管',suiInformation);
    DecodeBuffer(body,@fp,Sizeof(T_SFindPass));
    Edit_Pass.Text:=fp.PassWord;
  end;
  if msg.Comm=SM_FindPass_Fail then
  begin
    if msg.param=1 then
    begin
      show_message('查找密码失败,你输入的内容中有空值!',suiWarning);
      Edit_ID.Enabled:=True;
      Edit_ID.SetFocus;
      Bt_Find.Enabled:=False;
    end;
    if msg.param=1 then
    begin
      show_message('查找密码失败,你输入的内容中有非法字符!',suiWarning);
      Edit_ID.Enabled:=True;
      Edit_ID.SetFocus;
      Bt_Find.Enabled:=False;
    end;
    DecodeBuffer(body,@fp,Sizeof(T_SFindPass));
    Edit_Pass.Text:=fp.PassWord;
  end;
  CSocket.Close;
  suiStatusBar1.Panels[0].Text:='断开连接。';
end;



procedure TFrm_FindID.Edit_IDExit(Sender: TObject);
begin
  if (ActiveControl=Bt_Close) then exit;
  suiStatusBar1.Panels[0].Text:='正在从服务器查询帐号。';
  CSocket.Active:=False;
  CSocket.Address:=Reg_SvrIp;
  CSocket.Port:=Reg_SvrPort;
  Try
    CSocket.Active:=True;
  except end;
  Step:='FINDQUZ';
  Timer1.Enabled:=True;

end;

procedure TFrm_FindID.Edit_IDKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then Edit_Answer1.SetFocus;
end;

procedure TFrm_FindID.Bt_FindClick(Sender: TObject);
begin
  suiStatusBar1.Panels[0].Text:='正在向服务器发送查找密码请求!';
  CSocket.Active:=False;
  CSocket.Address:=Reg_SvrIp;
  CSocket.Port:=Reg_SvrPort;
  Try
    CSocket.Active:=True;
  except end;
  Step:='FINDPASS';
  Timer1.Enabled:=True;

end;

procedure TFrm_FindID.FormCreate(Sender: TObject);
begin
  SetForm_Style(suiForm1,ExeType);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -