Есть Игра, Age Of Empires II Conquerrors Expansion
Она использует DirectPlay для соединения между клиентами.
Тип соединения Peer-to-peer
Мы с ребятами, любителями поиграть в эту игру, собрались в ХАМАЧЕ и хотим написать свой клиент для этой игры.
Я нашёл чуток информации и пример кода с использованием DirectPlay, немного видоизменил код,
Я узнал GUID самой игры, создаю в игре хост, как обычно, другая игра этот же хост видит,
но при попытке поиска хоста из своей проги ничего не происходит, тоесть хост просто не находиться,
хотя я знаю, что моя прога хост ищет и ищет правильно, так как когда я пробовал создавать хост при помощи второй программы на VB(пример кода тоже нашёл в интернете), то моя первая программа находит Хост, созданный моей второй программой и подключается к ней.
Тоесть, мне кажется что программа работает правильно. Но видимо чего-то не хватает
Очень прошу, вас, всех знающих людей, помогите пожалуйста. Вы принесёте радость не только мне а ещё многим, в нашей сети
Вот мой код:
- Код: Выделить всё
Option Explicit
Public dx As New DirectX8
Public dpp As DirectPlay8Peer
Public dpAddres As DirectPlay8Address
Private mEnumAsync As Byte
Implements DirectPlay8Event
-------------------------------------------------------------------------------------------------------------------
Private Sub Form_Load()
Dim I As Integer
Dim dpnSPInfo As DPN_SERVICE_PROVIDER_INFO
Dim Desc As DPN_APPLICATION_DESC
Set dpp = dx.DirectPlayPeerCreate
dpp.RegisterMessageHandler frmConnect
For I = 1 To dpp.GetCountServiceProviders
dpnSPInfo = dpp.GetServiceProvider(I)
List1.AddItem dpnSPInfo.Name
List2.AddItem dpnSPInfo.Guid
Next
Set dpAddres = dx.DirectPlayAddressCreate
dpAddres.SetSP dpp.GetServiceProvider(List1.ListIndex + 4).Guid
Desc.guidApplication = "{5DE93F3F-FC90-4ee1-AE5A-63DAFA055950}"
mEnumAsync = dpp.EnumHosts(Desc, Nothing, dpAddres, INFINITE, 0, INFINITE, DPNENUMHOSTS_OKTOQUERYFORADDRESSING, ByVal 0&, 0)
End Sub
-------------------------------------------------------------------------------------------------------------------
Private Sub DirectPlay8Event_EnumHostsResponse(dpNotify As DxVBLibA.DPNMSG_ENUM_HOSTS_RESPONSE, fRejectMsg As Boolean)
AddHostsToListBox dpNotify
dpp.CancelAsyncOperation mEnumAsync, 0
End Sub
-------------------------------------------------------------------------------------------------------------------
Private Sub AddHostsToListBox(fHost As DPNMSG_ENUM_HOSTS_RESPONSE)
stop
End Sub
-------------------------------------------------------------------------------------------------------------------
Public Sub DirectPlay8Event_AddRemovePlayerGroup(ByVal lMsgID As Long, ByVal lPlayerID As Long, ByVal lGroupID As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_AppDesc(fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_AsyncOpComplete(dpNotify As DxVBLibA.DPNMSG_ASYNC_OP_COMPLETE, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_ConnectComplete(dpNotify As DxVBLibA.DPNMSG_CONNECT_COMPLETE, fRejectMsg As Boolean)
End Sub
Private Sub DirectPlay8Event_CreateGroup(ByVal lGroupID As Long, ByVal lOwnerID As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_CreatePlayer(ByVal lPlayerID As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_DestroyGroup(ByVal lGroupID As Long, ByVal lReason As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_DestroyPlayer(ByVal lPlayerID As Long, ByVal lReason As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_EnumHostsQuery(dpNotify As DxVBLibA.DPNMSG_ENUM_HOSTS_QUERY, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_HostMigrate(ByVal lNewHostID As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_IndicateConnect(dpNotify As DxVBLibA.DPNMSG_INDICATE_CONNECT, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_IndicatedConnectAborted(fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_InfoNotify(ByVal lMsgID As Long, ByVal lNotifyID As Long, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_Receive(dpNotify As DxVBLibA.DPNMSG_RECEIVE, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_SendComplete(dpNotify As DxVBLibA.DPNMSG_SEND_COMPLETE, fRejectMsg As Boolean)
End Sub
Sub DirectPlay8Event_TerminateSession(dpNotify As DxVBLibA.DPNMSG_TERMINATE_SESSION, fRejectMsg As Boolean)
End Sub