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

📄 unit_main.pas

📁 一款传奇登陆器的源代码,使用DELPHI写的,大家可以参考下
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit Unit_main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp,Unit_Msg, ExtCtrls, DB, ADODB, StdCtrls, SUIURLLabel,IniFiles,
  ComCtrls, ShellApi, Buttons, Menus, SysTray;

type
  TMsg=Record
    Socket:TCustomWinSocket;
    Str:String;
  end;
  PTMsg=^TMsg;
  TFrmMain = class(TForm)
    SSocket: TServerSocket;
    Timer_Recv: TTimer;
    ADOConnection1: TADOConnection;
    Panel1: TPanel;
    Edit_ServPort: TEdit;
    Edit_Accountdata: TEdit;
    StaticText3: TStaticText;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit_Accountuser: TEdit;
    Label8: TLabel;
    Edit_Accountpass: TEdit;
    Panel2: TPanel;
    StoredProc_Add_User: TADOStoredProc;
    StoredProc_Find_Quiz: TADOStoredProc;
    StoredProc_FindPass: TADOStoredProc;
    StoredProc_Edit_Pass: TADOStoredProc;
    ADOQuery1: TADOQuery;
    Memo_DElProc: TMemo;
    Memo_AddUser: TMemo;
    Memo_FindPass: TMemo;
    Memo_EditPass: TMemo;
    Memo_FindQuiz: TMemo;
    Timer_Backup: TTimer;
    ADOQuery2: TADOQuery;
    Memo_Backup: TMemo;
    ADOConnection2: TADOConnection;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Edit_GameData: TEdit;
    Edit_GameUser: TEdit;
    Edit_GamePass: TEdit;
    ADOQuery_Game: TADOQuery;
    Memo_DelProcGame: TMemo;
    Memo_FindChar: TMemo;
    Timer2: TTimer;
    Timer_Send: TTimer;
    StaticText1: TStaticText;
    Label1: TLabel;
    Edit_indexPath: TEdit;
    Button2: TButton;
    Label2: TLabel;
    Edit_Level: TEdit;
    UpDown1: TUpDown;
    Label3: TLabel;
    Edit_Gold: TEdit;
    UpDown2: TUpDown;
    Label4: TLabel;
    Edit_Guilds: TEdit;
    UpDown3: TUpDown;
    Check_LevelIndex: TCheckBox;
    Label14: TLabel;
    Label15: TLabel;
    Edit_indexTime: TEdit;
    Bt_Level: TButton;
    Memo_EditChar: TMemo;
    ADOStoredProc_Editchar: TADOStoredProc;
    Memo_FindStorage: TMemo;
    Timer_BuildIdx: TTimer;
    Button4: TButton;
    Label17: TLabel;
    Check_GoldIndex: TCheckBox;
    Check_Guildindex: TCheckBox;
    Label18: TLabel;
    Label19: TLabel;
    Bt_Gold: TButton;
    Bt_Guild: TButton;
    Label20: TLabel;
    Edit_GuildPath: TEdit;
    Button7: TButton;
    Label_Warining: TLabel;
    List_Guild: TListBox;
    Label21: TLabel;
    Edit_HeroData: TEdit;
    Edit_HeroUser: TEdit;
    Label22: TLabel;
    Label23: TLabel;
    Edit_HeroPass: TEdit;
    ADOConnection3: TADOConnection;
    ADOQuery_Hero: TADOQuery;
    Panel3: TPanel;
    Button1: TButton;
    suiURLLabel1: TsuiURLLabel;
    Button3: TButton;
    BitBtn1: TBitBtn;
    Image1: TImage;
    Image2: TImage;
    SysTray1: TSysTray;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    CheckBox_VerCode: TCheckBox;
    Edit_VerCode: TEdit;
    Label9: TLabel;
    CheckBox_Wg: TCheckBox;
    Button5: TButton;
    procedure FormCreate(Sender: TObject);
    procedure SSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure SSocketClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Timer_RecvTimer(Sender: TObject);
    function DecodeMessagePacket(Socket:TCustomWinSocket;data:String):integer;
    procedure SSocketClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure Button1Click(Sender: TObject);
    function EncodeStr(temp:string):String;
    procedure RunScript(const sSQL: String);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer_BackupTimer(Sender: TObject);
    procedure Timer_SendTimer(Sender: TObject);
    procedure Bt_LevelClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    Procedure Build_Mir3idx(Selected:integer);
    procedure Button3Click(Sender: TObject);
    procedure Timer_BuildIdxTimer(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure WMSysCommand(var Message: TWMSysCommand);message WM_SYSCOMMAND;
    procedure Button5Click(Sender: TObject);
    procedure SysTray1IconDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmMain: TFrmMain;
  ServerIp:String;
  ServerPort:integer;
  MsgRecv_List,MsgSend_List:TList;
  DataConnectStr:String;
  Result_FindQuiz:T_SFindQuiz;
  Result_FindPass:T_SFindPass;
  Result_EditPass:T_SEditPass;
  Result_Chars:TList;
  Result_FindStorage:T_SFindStorage;
  Tmp_soCket_Char:TCustomWinSocket;
  Tmp_Msg_Char:TDefaultMessage;
implementation

uses Unit_MyPro, Unit_CharIndex, Unit_Eywg;


{$R *.dfm}

procedure TFrmMain.FormCreate(Sender: TObject);
var
  inifile:TIniFile;
begin
  MsgRecv_List:=TList.Create;
  MsgSend_List:=TList.Create;
  inifile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'RegSvr.ini');
  Edit_ServPort.Text:=IntToStr(inifile.ReadInteger('RegSvr','Port',8500));
  Edit_Accountdata.Text:=inifile.ReadString('RegSvr','AccountDSN','Account');
  Edit_Accountuser.Text:=EncodeStr(inifile.ReadString('RegSvr','Accountid','N\'));
  Edit_Accountpass.Text:=EncodeStr(inifile.ReadString('RegSvr','AccountPass',''));
  Edit_GameData.Text:=inifile.ReadString('RegSvr','GameDSN','Game1');
  Edit_GameUser.Text:=EncodeStr(inifile.ReadString('RegSvr','Gameid','N\'));
  Edit_GamePass.Text:=EncodeStr(inifile.ReadString('RegSvr','GamePass',''));
  Edit_HeroData.Text:=inifile.ReadString('RegSvr','HeroDSN','HeroCommon1');
  Edit_HeroUser.Text:=EncodeStr(inifile.ReadString('RegSvr','Heroid','N\'));
  Edit_HeroPass.Text:=EncodeStr(inifile.ReadString('RegSvr','HeroPass',''));
  Edit_indexTime.Text:=IntToStr(inifile.ReadInteger('RegSvr','BuildIdxTime',1));
  Edit_indexPath.Text:=inifile.ReadString('RegSvr','IISPath','');
  Edit_GuildPath.Text:=inifile.ReadString('RegSvr','GuildPath','');
  if inifile.ReadInteger('RegSvr','Check_Level',0)=0 then Check_LevelIndex.Checked:=False else Check_LevelIndex.Checked:=True;
  if inifile.ReadInteger('RegSvr','Check_Gold',0)=0 then Check_GoldIndex.Checked:=False else Check_GoldIndex.Checked:=True;
  if inifile.ReadInteger('RegSvr','Check_Guilds',0)=0 then Check_Guildindex.Checked:=False else Check_Guildindex.Checked:=True;
  Edit_Level.Text:=IntToStr(inifile.ReadInteger('RegSvr','Level',0));
  Edit_Gold.Text:=IntToStr(inifile.ReadInteger('RegSvr','Gold',0));
  Edit_Guilds.Text:=IntToStr(inifile.ReadInteger('RegSvr','Guilds',0));
  inifile.Free;
end;

procedure TFrmMain.SSocketClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  FrmMain.Caption:='传奇3私服 帐号注册服务端 Ver1.0 (CopyRight By bbs.91go.net)  '+'连接数:'+IntToStr(SSocket.Socket.ActiveConnections-1);
end;

procedure TFrmMain.SSocketClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  FrmMain.Caption:='传奇3私服 帐号注册服务端 Ver1.0 (CopyRight By bbs.91go.net)  '+'连接数:'+IntToStr(SSocket.Socket.ActiveConnections-1);
end;

procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  inifile:TiniFile;
begin
  MsgRecv_List.Free;
  MsgSend_List.Free;
  SSocket.Close;
  inifile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'RegSvr.ini');
  inifile.WriteInteger('RegSvr','Port',StrToInt(Edit_ServPort.Text));
  inifile.WriteString('RegSvr','AccountDSN',Edit_Accountdata.Text);
  inifile.WriteString('RegSvr','Accountid',EncodeStr(Edit_Accountuser.Text));
  inifile.WriteString('RegSvr','AccountPass',EncodeStr(Edit_Accountpass.Text));
  inifile.WriteString('RegSvr','GameDSN',Edit_GameData.Text);
  inifile.WriteString('RegSvr','Gameid',EncodeStr(Edit_GameUser.Text));
  inifile.WriteString('RegSvr','GamePass',EncodeStr(Edit_GamePass.Text));
  inifile.WriteString('RegSvr','HeroDSN',Edit_HeroData.Text);
  inifile.WriteString('RegSvr','Heroid',EncodeStr(Edit_HeroUser.Text));
  inifile.WriteString('RegSvr','HeroPass',EncodeStr(Edit_HeroPass.Text));
  inifile.WriteInteger('RegSvr','BuildIdxTime',StrToInt(Edit_indexTime.Text));
  inifile.WriteString('RegSvr','IISPath',Edit_indexPath.Text);
  inifile.WriteString('RegSvr','GuildPath',Edit_GuildPath.Text);
  if Check_LevelIndex.Checked then inifile.WriteInteger('RegSvr','Check_Level',1) else inifile.WriteInteger('RegSvr','Check_Level',0);
  if Check_GoldIndex.Checked then inifile.WriteInteger('RegSvr','Check_Gold',1) else inifile.WriteInteger('RegSvr','Check_Gold',0);
  if Check_Guildindex.Checked then inifile.WriteInteger('RegSvr','Check_Guilds',1) else inifile.WriteInteger('RegSvr','Check_Guilds',0);
  inifile.WriteInteger('RegSvr','Level',StrToInt(Edit_Level.Text));
  inifile.WriteInteger('RegSvr','Gold',StrToInt(Edit_Gold.Text));
  inifile.WriteInteger('RegSvr','Guilds',StrToInt(Edit_Guilds.Text));
  inifile.Free;
end;

procedure TFrmMain.SSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  Recv_msg:PTMsg;
begin
  New(Recv_Msg);
  Recv_msg.Socket:=Socket;
  Recv_msg.Str:=Socket.ReceiveText;
  MsgRecv_List.Add(Recv_msg);
end;

procedure TFrmMain.Timer_RecvTimer(Sender: TObject);
var
  C_Socket:TCustomWinSocket;
  Soc_Str,Send_Str:String;
  msg:TDefaultMessage;
  ue:TUserInfo;
  se:TEiInfo;
  data:String;
  Send_Msg:PTMsg;
  i:integer;
  Sc:T_SFindChar;
  Busy:boolean;
begin
  if (MsgRecv_List.Count>0)then
  begin
    Timer_Recv.Enabled:=False;
    C_Socket:=PTMsg(MsgRecv_List[0]).Socket;
    Soc_Str:=PTMsg(MsgRecv_List[0]).Str;
    Soc_Str:=ArrestStringEx(Soc_Str,'#','!',data);
    Try MsgRecv_List.Delete(0) except end;
    try
      case DecodeMessagePacket(C_Socket,data) of
        10:
        begin
          msg.Comm:=SM_AddNewId_Success;
          msg.param:=0;
          Send_Str:=EncodeMessage(msg);
        end ;
        11:
        begin
          msg.Comm:=SM_AddNewId_Fail;
          msg.param:=1;//帐号、密码不能少于5位
          Send_Str:=EncodeMessage(msg);
        end ;
        12:
        begin
          msg.Comm:=SM_AddNewId_Fail;
          msg.param:=2;//帐号已经存在
          Send_Str:=EncodeMessage(msg);
        end ;
        13:
        begin
          msg.Comm:=SM_AddNewId_Fail;
          msg.param:=3;//建立帐号失败,可能有非法字符
          Send_Str:=EncodeMessage(msg);
        end ;
        20:
        begin
          msg.Comm:=SM_FindQuiz_Success;
          msg.param:=0;//查找提示问题成功
          Send_Str:=EncodeMessage(msg)+EncodeBuffer(@Result_FindQuiz,Sizeof(T_SFindQuiz));
        end;
        21:
        begin
          msg.Comm:=SM_FindQuiz_Fail;
          msg.param:=1;//查找提示问题失败,帐号不能为空
          Send_Str:=EncodeMessage(msg);
        end;
        22:
        begin
          msg.Comm:=SM_FindQuiz_Fail;
          msg.param:=2;//查找提示问题失败,帐号不存在
          Send_Str:=EncodeMessage(msg);
        end;
        30:
        begin
          msg.Comm:=SM_FindPass_Success;
          msg.param:=0;//查找密码成功
          Send_Str:=EncodeMessage(msg)+EncodeBuffer(@Result_FindPass,sizeof(T_SFindPass));
        end;
        31:
        begin
          msg.Comm:=SM_FindPass_Fail;
          msg.param:=1;//查找密码失败,有数值为空
          Send_Str:=EncodeMessage(msg);
        end;
        32:
        begin
          msg.Comm:=SM_FindPass_Fail;
          msg.param:=2;//查找密码失败,有非法字符
          Send_Str:=EncodeMessage(msg);
        end;
        40:
        begin
          msg.Comm:=SM_EditPass_Success;
          msg.param:=0;//修改密码成功
          Send_Str:=EncodeMessage(msg)+EncodeBuffer(@Result_EditPass,Sizeof(T_SEditPass));
        end;
        41:
        begin
          msg.Comm:=SM_EditPass_Fail;
          msg.param:=1;//修改密码失败。密码不能少于5位
          Send_Str:=EncodeMessage(msg);
        end;
        42:
        begin
          msg.Comm:=SM_EditPass_Fail;
          msg.param:=2;//修改密码失败。帐号不存在
          Send_Str:=EncodeMessage(msg);
        end;
        43:
        begin
          msg.Comm:=SM_EditPass_Fail;
          msg.param:=2;//修改密码失败。旧密码错误
          Send_Str:=EncodeMessage(msg);
        end;
        44:
        begin
          msg.Comm:=SM_EditPass_Fail;
          msg.param:=3;//修改密码失败。可能有非法字符
          Send_Str:=EncodeMessage(msg);
        end;
        50:
        begin
          msg.Comm:=SM_GetMirServer_Succed;
          if CheckBox_VerCode.Checked and CheckBox_Wg.Checked then
          begin
            msg.param:=0;
            se.ServerCode:=StrToInt64(Edit_VerCode.Text) xor SM_GetMirServer_Succed;
            se.WgName:='';
            with Frm_Eywg do
            begin
              if Check_Bp.Checked then se.WgName:=se.WgName+'/'+'icesoul.dll';
              if check_king.Checked then se.WgName:=se.WgName+'/'+'king.dll';
              if Check_dbt.Checked then se.WgName:=se.WgName+'/'+'mir3.dll';
              if Check_dscq.Checked then se.WgName:=se.WgName+'/'+'dasheng.dll';
              if Check_007.Checked then
              begin
                se.WgName:=se.WgName+'/'+'gameadd.dll';
                se.WgName:=se.WgName+'/'+'utrack.dll';
                se.WgName:=se.WgName+'/'+'extfunc.dll';
                se.WgName:=se.WgName+'/'+'gameshell.dll';
              end;
              if Check_wj.Checked then se.WgName:=se.WgName+'/'+'wuji.dll';
            end;
          end;
          if CheckBox_VerCode.Checked and (not CheckBox_Wg.Checked) then
          begin
            msg.param:=1;
            se.ServerCode:=StrToInt64(Edit_VerCode.Text) xor SM_GetMirServer_Succed;
            se.WgName:='';
          end;
          if (not CheckBox_VerCode.Checked) and CheckBox_Wg.Checked then
          begin
            msg.param:=2;
            se.ServerCode:=0;
            se.WgName:='';
            with Frm_Eywg do
            begin
              if Check_Bp.Checked then se.WgName:=se.WgName+'/'+'icesoul.dll';
              if check_king.Checked then se.WgName:=se.WgName+'/'+'king.dll';
              if Check_dbt.Checked then se.WgName:=se.WgName+'/'+'mir3.dll';
              if Check_dscq.Checked then se.WgName:=se.WgName+'/'+'dasheng.dll';
              if Check_007.Checked then
              begin
                se.WgName:=se.WgName+'/'+'gameadd.dll';
                se.WgName:=se.WgName+'/'+'utrack.dll';
                se.WgName:=se.WgName+'/'+'extfunc.dll';
                se.WgName:=se.WgName+'/'+'gameshell.dll';
              end;
              if Check_wj.Checked then se.WgName:=se.WgName+'/'+'wuji.dll';
            end;
          end;
          if (not CheckBox_VerCode.Checked) and (not CheckBox_Wg.Checked) then
          begin
            msg.param:=3;
            se.ServerCode:=0;
            se.WgName:='';
          end;
          Send_Str:=EncodeMessage(msg)+EncodeBuffer(@se,Sizeof(TEiinfo));
        end;
        51:
        begin
          msg.Comm:=SM_GetMirServer_Succed;
          msg.param:=0;
          Send_Str:=EncodeMessage(msg);
        end;
        60:
        begin
          Tmp_Msg_Char.Comm:=SM_FindChar_Success;
          Tmp_Msg_Char.param:=0;
          Tmp_soCket_Char:=C_Socket;
          Timer2.Enabled:=True;
          Exit;
        end;
        61:
        begin
          msg.Comm:=SM_FindChar_Fail;
          msg.param:=1;                      //未知错误
          Send_Str:=EncodeMessage(msg);
        end;
        62:
        begin
          msg.Comm:=SM_FindChar_Fail;                  //没找到
          msg.param:=2;
          Send_Str:=EncodeMessage(msg);
        end;
        70:
        begin
          msg.Comm:=SM_EditChar_Success;                  //修改角色成功
          msg.param:=0;
          Send_Str:=EncodeMessage(msg);
        end;
        71:
        begin
          msg.Comm:=SM_EditChar_Fail;                  //没找到
          msg.param:=1;
          Send_Str:=EncodeMessage(msg);
        end;
        72:
        begin

⌨️ 快捷键说明

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