📄 unit_main.pas
字号:
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 + -