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

📄 gmain.pas

📁 传奇服务端代码 GameCenter.rar通讯部分
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    procedure ButtonNext7Click(Sender: TObject);
    procedure ButtonPrv4Click(Sender: TObject);
    procedure ButtonPrv5Click(Sender: TObject);
    procedure ButtonPrv6Click(Sender: TObject);
    procedure ButtonPrv7Click(Sender: TObject);
    procedure ButtonPrv8Click(Sender: TObject);
    procedure ButtonNext8Click(Sender: TObject);
    procedure ButtonPrv9Click(Sender: TObject);
    procedure EditRunGate_ConntChange(Sender: TObject);
    procedure ButtonLoginServerConfigClick(Sender: TObject);
    procedure ButtonAdvClick(Sender: TObject);
    procedure CheckBoxDynamicIPModeClick(Sender: TObject);
    procedure CheckBoxAutoBackupHumDataClick(Sender: TObject);
    procedure ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    procedure ServerSocketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure TimerTimer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure EditNoticeUrlChange(Sender: TObject);
    procedure EditClientFormChange(Sender: TObject);
    procedure MemoGameListChange(Sender: TObject);
    procedure ButtonRunGateDefaultClick(Sender: TObject);
    procedure ButtonGeneralDefalultClick(Sender: TObject);
    procedure ButtonLoginGateDefaultClick(Sender: TObject);
    procedure ButtonSelGateDefaultClick(Sender: TObject);
    procedure ButtonLoginSrvDefaultClick(Sender: TObject);
    procedure ButtonDBServerDefaultClick(Sender: TObject);
    procedure ButtonLogServerDefaultClick(Sender: TObject);
    procedure ButtonM2ServerDefaultClick(Sender: TObject);
    procedure ButtonSearchLoginAccountClick(Sender: TObject);
    procedure CkFullEditModeClick(Sender: TObject);
    procedure ButtonLoginAccountOKClick(Sender: TObject);
    procedure EditLoginAccountChange(Sender: TObject);
    procedure CheckBoxboLoginGate_GetStartClick(Sender: TObject);
    procedure CheckBoxboSelGate_GetStartClick(Sender: TObject);
    procedure TimerCheckDebugTimer(Sender: TObject);
    procedure ButtonM2SuspendClick(Sender: TObject);
    procedure EditM2Server_TestLevelChange(Sender: TObject);
    procedure EditM2Server_TestGoldChange(Sender: TObject);
    procedure CheckBoxboLoginServer_GetStartClick(Sender: TObject);
    procedure CheckBoxDBServerGetStartClick(Sender: TObject);
    procedure CheckBoxLogServerGetStartClick(Sender: TObject);
    procedure CheckBoxM2ServerGetStartClick(Sender: TObject);
    procedure EditBackupTimeChange(Sender: TObject);
  private
    m_boOpen:Boolean;
    m_nStartStatus:Integer;
    m_dwShowTick:LongWord;
    procedure RefGameConsole();
    procedure GenGameConfig();
    procedure GenDBServerConfig();
    procedure GenLoginServerConfig();
    procedure GenLogServerConfig();
    procedure GenM2ServerConfig();
    procedure GenLoginGateConfig();
    procedure GenSelGateConfig();
    procedure GenRunGateConfig;
    procedure StartGame();
    procedure StopGame();
    procedure MainOutMessage(sMsg:string);
    procedure ProcessDBServerMsg(wIdent:Word;sData:String);
    procedure ProcessLoginSrvMsg(wIdent:Word;sData:String);
    procedure ProcessLoginSrvGetUserAccount(sData:String);
    procedure ProcessLoginSrvChangeUserAccountStatus(sData:String);
    procedure UserAccountEditMode(boChecked:Boolean);
    procedure ProcessLogServerMsg(wIdent:Word;sData:String);

    procedure ProcessLoginGateMsg(wIdent:Word;sData:String);
    procedure ProcessLoginGate1Msg(wIdent:Word;sData:String);

    procedure ProcessSelGateMsg(wIdent:Word;sData:String);
    procedure ProcessSelGate1Msg(wIdent:Word;sData:String);

    procedure ProcessRunGateMsg(wIdent:Word;sData:String);
    procedure ProcessRunGate1Msg(wIdent:Word;sData:String);
    procedure ProcessRunGate2Msg(wIdent:Word;sData:String);
    procedure ProcessRunGate3Msg(wIdent:Word;sData:String);
    procedure ProcessRunGate4Msg(wIdent:Word;sData:String);
    procedure ProcessRunGate5Msg(wIdent:Word;sData:String);
    procedure ProcessRunGate6Msg(wIdent:Word;sData:String);
    procedure ProcessRunGate7Msg(wIdent:Word;sData:String);


    procedure ProcessM2ServerMsg(wIdent:Word;sData:String);
    procedure GetMutRunGateConfing(nIndex:Integer);


    procedure ProcessClientPacket();
    procedure SendGameList(Socket:TCustomWinSocket);
    procedure SendSocket(Socket:TCustomWinSocket;SendMsg: String);
    function StartService():Boolean;
    procedure StopService();
    procedure RefGameDebug();
    procedure GenMutSelGateConfig(nIndex: Integer);
    { Private declarations }
  public
    procedure ProcessMessage(var Msg: TMsg; var Handled: Boolean);
    procedure MyMessage(var MsgData:TWmCopyData);message WM_COPYDATA;

    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

uses GShare, HUtil32, Grobal2, GLoginServer, GCertServerSet, EDcode, Share;

{$R *.dfm}

procedure TfrmMain.MainOutMessage(sMsg: string);
begin
  sMsg:='[' + DateTimeToStr(Now) + '] ' + sMsg;
  MemoLog.Lines.Add(sMsg);
end;

procedure TfrmMain.ButtonNext1Click(Sender: TObject);
var
  sGameDirectory:String;
  sHeroDBName:String;
  sM2Server_Reg,sRunGate_Reg,sDBServer_Reg:String;
  sGameName:String;
  sExtIPAddr:String;  
begin
  sGameDirectory:=Trim(EditGameDir.Text);
  sHeroDBName:=Trim(EditHeroDB.Text);
  sM2Server_Reg:=Trim(EditM2ServerRegKey.Text);
  sDBServer_Reg:=Trim(EditDBServerRegKey.Text);
  sRunGate_Reg:=Trim(EditRunGateRegKey.Text);

  sGameName:=Trim(EditGameName.Text);
  sExtIPAddr:=Trim(EditGameExtIPaddr.Text);
  if sGameName = '' then begin
    Application.MessageBox('游戏服务器名称输入不正确!!!','提示信息',MB_OK + MB_ICONEXCLAMATION);
    EditGameName.SetFocus;
    exit;
  end;
  if (sExtIPAddr = '') or not IsIPaddr(sExtIPAddr) then begin
    Application.MessageBox('游戏服务器外部IP地址输入不正确!!!','提示信息',MB_OK + MB_ICONEXCLAMATION);
    EditGameExtIPaddr.SetFocus;
    exit;
  end;

  if (sGameDirectory = '') or not DirectoryExists(sGameDirectory) then begin
    Application.MessageBox('游戏目录输入不正确!!!','提示信息',MB_OK + MB_ICONEXCLAMATION);
    EditGameDir.SetFocus;
    exit;
  end;
  if not (sGameDirectory[length(sGameDirectory)] = '\') then begin
    Application.MessageBox('游戏目录名称最后一个字符必须为"\"!!!','提示信息',MB_OK + MB_ICONEXCLAMATION);
    EditGameDir.SetFocus;
    exit;
  end;
  if sHeroDBName = '' then begin
    Application.MessageBox('游戏数据库名称输入不正确!!!','提示信息',MB_OK + MB_ICONEXCLAMATION);
    EditHeroDB.SetFocus;
    exit;
  end;
  g_sM2Server_RegKey:=sM2Server_Reg;
  g_sRunGate_RegKey:=sRunGate_Reg;
  g_sDBServer_Config_RegKey:=sDBServer_Reg;
  g_sGameDirectory:=sGameDirectory;
  g_sHeroDBName:=sHeroDBName;
  g_sGameName:=sGameName;
  g_sExtIPaddr:=sExtIPAddr;
  g_boDynamicIPMode:=CheckBoxDynamicIPMode.Checked;

    
  PageControl3.ActivePageIndex:=1;
end;

procedure TfrmMain.ButtonPrv2Click(Sender: TObject);
begin
  PageControl3.ActivePageIndex:=0;
end;

procedure TfrmMain.ButtonNext2Click(Sender: TObject);
var
  nPort:Integer;
begin
  nPort:=Str_ToInt(Trim(EditLoginGate_GatePort.Text),-1);
  if (nPort < 0) or (nPort > 65535) then begin
    Application.MessageBox('网关端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditLoginGate_GatePort.SetFocus;
    exit;
  end;
  g_nLoginGate_GatePort:=nPort;
  PageControl3.ActivePageIndex:=2;
end;

procedure TfrmMain.ButtonPrv3Click(Sender: TObject);
begin
  PageControl3.ActivePageIndex:=1;
end;
procedure TfrmMain.ButtonNext3Click(Sender: TObject);
var
  nPort:Integer;
begin
  nPort:=Str_ToInt(Trim(EditSelGate_GatePort.Text),-1);
  if (nPort < 0) or (nPort > 65535) then begin
    Application.MessageBox('网关端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditSelGate_GatePort.SetFocus;
    exit;
  end;
  g_nSeLGate_GatePort:=nPort;

  nPort:=Str_ToInt(Trim(EditSelGate_GatePort1.Text),-1);
  if (nPort < 0) or (nPort > 65535) then begin
    Application.MessageBox('网关端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditSelGate_GatePort1.SetFocus;
    exit;
  end;
  g_nSeLGate_GatePort1:=nPort;
  PageControl3.ActivePageIndex:=3;
end;

procedure TfrmMain.ButtonNext4Click(Sender: TObject);
var
  nPort1,nPort2,nPort3,nPort4,nPort5,nPort6,nPort7,nPort8:Integer;
begin
  nPort1:=Str_ToInt(Trim(EditRunGate_GatePort1.Text),-1);
  nPort2:=Str_ToInt(Trim(EditRunGate_GatePort2.Text),-1);
  nPort3:=Str_ToInt(Trim(EditRunGate_GatePort3.Text),-1);
  nPort4:=Str_ToInt(Trim(EditRunGate_GatePort4.Text),-1);
  nPort5:=Str_ToInt(Trim(EditRunGate_GatePort5.Text),-1);
  nPort6:=Str_ToInt(Trim(EditRunGate_GatePort6.Text),-1);
  nPort7:=Str_ToInt(Trim(EditRunGate_GatePort7.Text),-1);
  nPort8:=Str_ToInt(Trim(EditRunGate_GatePort8.Text),-1);

  if (nPort1 < 0) or (nPort1 > 65535) then begin
    Application.MessageBox('网关一端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort1.SetFocus;
    exit;
  end;
  if (nPort2 < 0) or (nPort2 > 65535) then begin
    Application.MessageBox('网关二端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort2.SetFocus;
    exit;
  end;
  if (nPort3 < 0) or (nPort3 > 65535) then begin
    Application.MessageBox('网关三端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort3.SetFocus;
    exit;
  end;
  if (nPort4 < 0) or (nPort4 > 65535) then begin
    Application.MessageBox('网关四端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort4.SetFocus;
    exit;
  end;
  if (nPort5 < 0) or (nPort5 > 65535) then begin
    Application.MessageBox('网关五端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort5.SetFocus;
    exit;
  end;
  if (nPort6 < 0) or (nPort6 > 65535) then begin
    Application.MessageBox('网关六端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort6.SetFocus;
    exit;
  end;
  if (nPort7 < 0) or (nPort7 > 65535) then begin
    Application.MessageBox('网关七端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort7.SetFocus;
    exit;
  end;
  if (nPort8 < 0) or (nPort8 > 65535) then begin
    Application.MessageBox('网关八端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditRunGate_GatePort8.SetFocus;
    exit;
  end;

  g_nRunGate_GatePort:=nPort1;
  g_nRunGate1_GatePort:=nPort2;
  g_nRunGate2_GatePort:=nPort3;
  g_nRunGate3_GatePort:=nPort4;
  g_nRunGate4_GatePort:=nPort5;
  g_nRunGate5_GatePort:=nPort6;
  g_nRunGate6_GatePort:=nPort7;
  g_nRunGate7_GatePort:=nPort8;


  PageControl3.ActivePageIndex:=4;
end;

procedure TfrmMain.ButtonNext5Click(Sender: TObject);
var
  nGatePort,nServerPort:Integer;
begin
  nGatePort:=Str_ToInt(Trim(EditLoginServerGatePort.Text),-1);
  nServerPort:=Str_ToInt(Trim(EditLoginServerServerPort.Text),-1);

  if (nGatePort < 0) or (nGatePort > 65535) then begin
    Application.MessageBox('网关端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditLoginServerGatePort.SetFocus;
    exit;
  end;
  if (nServerPort < 0) or (nServerPort > 65535) then begin
    Application.MessageBox('通讯端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditLoginServerServerPort.SetFocus;
    exit;
  end;
  g_nLoginServer_GatePort         := nGatePort;
  g_nLoginServer_ServerPort       := nServerPort;
  PageControl3.ActivePageIndex:=5;
end;

procedure TfrmMain.ButtonNext6Click(Sender: TObject);
var
  nGatePort,nServerPort:Integer;
begin
  nGatePort:=Str_ToInt(Trim(EditDBServerGatePort.Text),-1);
  nServerPort:=Str_ToInt(Trim(EditDBServerServerPort.Text),-1);

  if (nGatePort < 0) or (nGatePort > 65535) then begin
    Application.MessageBox('网关端口设置错误!!!','错误信息',MB_OK + MB_ICONERROR);
    EditDBServerGatePort.SetFocus;

⌨️ 快捷键说明

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