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

📄 unit_main.pas

📁 传奇3封外挂客户端+登陆器+配置器源码............................
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      exit;
    end ;
  end;
  Frm_EditPass.ShowModal;
end;

procedure TFrmMain.N6Click(Sender: TObject);
begin
  if Com_ServerList.ItemIndex<0 then exit;
  Reg_SvrIp:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrIp;
  Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
  if Trim(Reg_SvrIp)='' then
  begin
    if (Reg_SvrPort<>0)  then HostToIP(PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl,Reg_SvrIp)
    else
    begin
      Show_Message('无法找到注册服务器!',suiWarning);
      exit;
    end ;
  end;
  Frm_FindChar.ShowModal;
end;

procedure TFrmMain.N7Click(Sender: TObject);
begin
  if Com_ServerList.ItemIndex<0 then exit;
  Reg_SvrIp:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrIp;
  Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
  if Trim(Reg_SvrIp)='' then
  begin
    if (Reg_SvrPort<>0)  then HostToIP(PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl,Reg_SvrIp)
    else
    begin
      Show_Message('无法找到注册服务器!',suiWarning);
      exit;
    end ;
  end;
  Frm_FindStorage.ShowModal;
end;

procedure TFrmMain.N9Click(Sender: TObject);
begin
  if Com_ServerList.ItemIndex<0 then exit;
  Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
  ServerUrl:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl;
  Select_idx:=0;
  if (ServerUrl<>'') and (Reg_SvrPort<>0) then Frm_LevelIdx.ShowModal
  else
  begin
    Show_Message('无法找到注册服务器!',suiWarning);
    exit;
  end;
end;

procedure TFrmMain.N10Click(Sender: TObject);
begin
  if Com_ServerList.ItemIndex<0 then exit;
  Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
  ServerUrl:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl;
  Select_idx:=1;
  if (ServerUrl<>'') and (Reg_SvrPort<>0) then Frm_LevelIdx.ShowModal
  else
  begin
    Show_Message('无法找到注册服务器!',suiWarning);
    exit;
  end;
end;

procedure TFrmMain.N11Click(Sender: TObject);
begin
  if Com_ServerList.ItemIndex<0 then exit;
  Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
  ServerUrl:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl;
  Select_idx:=2;
  if (ServerUrl<>'') and (Reg_SvrPort<>0) then Frm_LevelIdx.ShowModal
  else
  begin
    Show_Message('无法找到注册服务器!',suiWarning);
    exit;
  end;
end;

procedure TFrmMain.N14Click(Sender: TObject);
begin
  Show_Message('此功能尚未开放!',suiInformation);
end;

procedure TFrmMain.WMSysCommand(var Message: TWMSysCommand);
begin
  Inherited;//调用先前的处理函数
  if (Message.CmdType and $FFF0 = SC_MINIMIZE) then FrmMain.Visible:=False;
end;
procedure TFrmMain.N18Click(Sender: TObject);
var
  S:String;
  Found:boolean;
  HProcess,HSnapshot:THandle;
  lpNumberOfBytesWritten: DWORD;
  appe:TProcessEntry32;
  iniFile:TiniFile;
begin
  HSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  appe.dwSize:= SizeOf(appe);
  found:= Process32First(HSnapshot, appe);
  while Integer(found) <> 0 do
  begin
    s:=ExtractFileName(appe.szExeFile);
    if (UpperCase(s)=UpperCase(ExtractFileName(Mir3ExeName))) or (UpperCase(s)=UpperCase('mir3.exe')) then
    begin
      HProcess:=OpenProcess(PROCESS_ALL_ACCESS,true,appe.th32ProcessID);
      TerminateProcess(HProcess,0);
    end;
    Found:=Process32Next(HSnapshot,appe);
  end;
  CloseHandle(HSnapshot);
  inifile:=TIniFile.create(ExtractFilePath(Mir3ExeName)+'Mir3.ini');
  inifile.WriteString('Initial','ServerAddr','127.0.0.1');
  IniFile.Free;
  Application.Terminate;
end;

procedure TFrmMain.N17Click(Sender: TObject);
begin
  FrmMain.Visible:=True;
end;

procedure TFrmMain.CreateParams(var Params:TCreateParams);
begin
//设置窗体类名
  Inherited CreateParams(Params);
  Params.WinClassName:=APPNAME;
end;

procedure TFrmMain.RestoreReaues(var message:TMessage);
begin
  Application.BringToFront;
  if IsIconic(Application.Handle) then
  begin
   Application.Restore;
  end
 else
 begin
  Application.BringToFront;
 end;
  FrmMain.Visible:=True;
end;




procedure TFrmMain.N16Click(Sender: TObject);
begin
  Frm_About.ShowModal;
end;

procedure TFrmMain.CSocketError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  suiStatusBar1.Panels[0].Text:='无法与游戏服务器连接';
  CSocket.Active:=False;
  VerCode:=0;
  ErrorCode:=0;
end;

procedure TFrmMain.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 TFrmMain.DecodeMessagePacket(data:String):integer;
var
  head, body: String;
  msg:TDefaultMessage;
  fq:T_SFindQuiz;
  fp:T_SFindPass;
  Eiinfo:TEiInfo;
  Path,ExeName:String;
begin
  Result:=0;
  head := Copy (data, 1, DEFBLOCKSIZE);
  body := Copy (data, DEFBLOCKSIZE+1, Length(data)-DEFBLOCKSIZE);
  msg  := DecodeMessage (head);
  path:=ExtractFilePath(Mir3ExeName);
  ExeName:=ExtractFileName(Mir3ExeName);
  if Check_Win.Checked then
  begin
    ShellExecute(Handle,'open',Pchar(ExeName),'-u -c -m',Pchar(path),SW_SHOW);
  end
  else ShellExecute(Handle,'open',Pchar(ExeName),'-u -c',Pchar(path),SW_SHOW) ;
  if msg.Comm=SM_GetMirServer_Succed then//查找版本号成功
  begin
    if msg.param=0 then
    begin
      suiStatusBar1.Panels[0].Text:='封脱机、封外挂。';
      DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
      VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
      WgName:=Eiinfo.WgName;
      Timer_SetMir3.Enabled:=True;
      Time_SetWg.Enabled:=True;
    end;
    if msg.param=1 then
    begin
      suiStatusBar1.Panels[0].Text:='封脱机。';
      DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
      VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
      WgName:='';
      Timer_SetMir3.Enabled:=True;
      Time_SetWg.Enabled:=False;
    end;
    if msg.param=2 then
    begin
      suiStatusBar1.Panels[0].Text:='封外挂,不封脱机';
      DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
      VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
      WgName:=Eiinfo.WgName;
      Sleep(500);
      VerCode:=20030704;
      Timer_SetMir3.Enabled:=True;
      Time_SetWg.Enabled:=True;
    end;
    if msg.param=3 then
    begin
      suiStatusBar1.Panels[0].Text:='不封外挂,不封脱机';
      DecodeBuffer(body,@EiInfo,Sizeof(TEiInfo));
      VerCode:=Eiinfo.ServerCode xor SM_GetMirServer_Succed;
      Sleep(500);
      VerCode:=20030704;
      WgName:='';
      Timer_SetMir3.Enabled:=True;
      Time_SetWg.Enabled:=False;
    end;
  end;
  if msg.Comm=SM_GetMirServer_Fail then//查找版本号失败
  begin
    suiStatusBar1.Panels[0].Text:='接收版本号失败。';
    VerCode:=0;
    VerCode:=20030704;
    WgName:='';
    Timer_SetMir3.Enabled:=True;
  end;
end;


procedure TFrmMain.Time_SetWgTimer(Sender: TObject);
begin
  SetWg(WgName);
end;

procedure TFrmMain.Timer2Timer(Sender: TObject);
var
  msg:TDefaultMessage;
begin
  msg:=MakeDefaultMsg(CM_GetMirServer,0);
  SendSocket(CSocket.Socket,EncodeMessage(msg));
  Timer2.Enabled:=False;
end;

procedure TFrmMain.Timer_SetMir3Timer(Sender: TObject);
var
  h:hwnd;
begin
  h:=FindWindow('WH GEngine',nil);
  if h>0 then
  begin
    Sleep(500);
    SetMir3(VerCode);
//    if not SetMir3(VerCode) then suiStatusBar1.Panels[0].Text:='暂不支持该客户端,请到本站下载。' else suiStatusBar1.Panels[0].Text:='正常游戏';
    Timer_SetMir3.Enabled:=False;
  end;
end;

procedure TFrmMain.suiImageButton2Click(Sender: TObject);
var
  iniFile:TIniFile;
  Tmp_Ip:string;
  Msg:TDefaultMessage;
  h:hwnd;
  path:String;
begin
  if Com_ServerList.ItemIndex<0 then Exit;
  if Mir3ExeName='' then
  begin
    OpenDialog1.Filter:='*.exe|*.exe';
    if OpenDialog1.Execute then Mir3ExeName:=OpenDialog1.FileName;
  end;
  path:=ExtractFilePath(Mir3ExeName);
  NoticeMemo.SaveToFile(Path+'notice.ntc');
  CmlistMemo.SaveToFile(Path+'Cmlist.dat');
  inifile:=TIniFile.create(path+'Mir3.ini');
  if PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerIp<>'' then
    inifile.WriteString('Initial','ServerAddr',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerIp)
  else
  begin
    HostToIP(PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerUrl,Tmp_Ip);
    inifile.WriteString('Initial','ServerAddr',Tmp_Ip)
  end;
  inifile.WriteInteger('Initial','Param1',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerPort);
  inifile.WriteInteger('Server','ServerCount',1);
  inifile.WriteString('Server','server1caption',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerCaption);
  inifile.WriteString('Server','server1name',PServerInfo(Servers[Com_ServerList.ItemIndex]).ServerName);
  iniFile.Free;
  FrmMain.Visible:=False;
  h:=FindWindow('WH GEngine',nil);
  if h>0 then CloseHwnd(h);
  Reg_SvrIp:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrIp;
  Reg_SvrPort:=PServerInfo(ServerS[Com_ServerList.ItemIndex]).RegSvrPort;
  if (Reg_SvrPort<>0) and (Trim(Reg_SvrIp)='') then HostToIP(PServerInfo(ServerS[Com_ServerList.ItemIndex]).ServerUrl,Reg_SvrIp);
  CSocket.Active:=False;
  CSocket.Address:=Reg_SvrIp;
  CSocket.Port:=Reg_SvrPort;
  Try
    CSocket.Active:=True;
    suiStatusBar1.Panels[0].Text:='正在查询验证码';
  except end;
  Timer2.Enabled:=True;
end;

procedure TFrmMain.suiImageButton1Click(Sender: TObject);
begin
  N2.Click;
end;

procedure TFrmMain.SysTray1IconDblClick(Sender: TObject);
begin
  FrmMain.Visible:=True;
end;

end.

⌨️ 快捷键说明

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