RakNet Problem
Übersicht BlitzBasic Allgemein
mevsmpBetreff: RakNet Problem |
Sa, März 01, 2008 14:18 Antworten mit Zitat |
|
---|---|---|
Hallo ich habe einfach versucht das RakNet sample einwenig zu verändern, so dass der Server einfach alle Daten empfängt und am alle Clienten sendet. Der Client sendet nur die Position der Camera an den Server.
Doch iregndwie scheint das nicht zu funktionieren. Zum test habe ich einfach einen Sphere erstellt welcher dann auf die Positionen der empfangenen Daten gesetzt wird. Oder hat vll noch jemand ein vernünftiges Beispiel für RakNet oder E-Net? Code: [AUSKLAPPEN] ; I AM THE SERVER
If (Server) ;Receiving packet = RN_ServerReceive(Server) If (packet) n = n + 1 msg$ = RN_PacketGetData(packet) BitStreamIN = RN_BitStreamCreateFromPacket(packet) RN_BitStreamReset(BitstreamIN) id = RN_BitStreamReadUnsignedChar(BitStreamIN) Color 255,0,0 Print "New Server Message Arrives:" Color 255,255,255 ;MSG TYPE Select id Case ID_NEW_INCOMING_CONNECTION Print "New Incoming Connection" Print "Player Number: " + RN_PacketGetplayerIndex(packet) Case ID_DISCONNECTION_NOTIFICATION Print "Client Well Disconnected:" + RN_PacketGetplayerIndex(packet) Case ID_RECEIVED_STATIC_DATA Print "Static Data Client:" + RN_PacketGetplayerIndex(packet) + " : " + RN_BitStreamGetData(RN_ServerGetStaticClientData(Server,RN_PacketGetplayerID(packet))) Case ID_CONNECTION_LOST Print "Disconnected Player: " + RN_PacketGetplayerIndex(packet) Case ID_CHAT Print "Chat Message: " + Mid(msg,2,Len(msg)-1) ;BroadCast Message to All except incoming player RN_ServerSend1(Server,msg$,Len(msg$)+1,HIGH_PRIORITY,RELIABLE_ORDERED,0,RN_PacketGetplayerID(packet),1) Case 100 ok = RN_ServerSend2(Server,BitstreamIN,HIGH_PRIORITY,RELIABLE_ORDERED,0,RN_PacketGetplayerID(packet),1) Default Print "Unknown Message Type (Type = " + Asc(Mid(msg,1,1)) + ")" End Select ;Free Packet packet = RN_ServerDeallocatePacket(Server,packet) EndIf EndIf UpdateClient() ; I AM THE CLIENT If (Client) ;Sending RN_BitStreamReset(Bitstream) RN_BitStreamWriteUnsignedChar(Bitstream,100) RN_BitStreamWriteUnsignedShort(Bitstream,EntityX(cam)) RN_BitStreamWriteUnsignedShort(Bitstream,EntityY(cam)) RN_BitStreamWriteUnsignedShort(Bitstream,EntityZ(cam)) ok = RN_clientSend2(Client,Bitstream,HIGH_PRIORITY,RELIABLE_ORDERED,0) ;Receiving packet = RN_ClientReceive(Client) If (packet) n = n + 1 msg$ = RN_PacketGetData(packet) BitStreamIN = RN_BitStreamCreateFromPacket(packet) id = RN_BitStreamReadUnsignedChar(BitStreamIN) Color 255,0,0 Print "New Client Message Arrives:" Color 255,255,255 ;MSG TYPE Select id Case ID_CONNECTION_REQUEST_ACCEPTED Print "Me han Aceptado, soy el: " + RN_ClientGetPlayerIndex(Client) Case ID_NEW_INCOMING_CONNECTION Print "New Incoming Connection" Print "Player Number: " + RN_PacketGetplayerIndex(packet) P.ConnectedPlayer = New connectedplayer P\PlayerID = RN_CreatePlayerIDFromPacket(packet) P\ID = RN_PacketGetplayerIndex(packet) ; RN_DestroyPlayerID(P\PlayerID) a$ = RN_ServerGetPlayerIPFromID(Client,P\PlayerID) Print "IP = " + a$ Case ID_REMOTE_NEW_INCOMING_CONNECTION Print "New Remote Incoming Connection:" + RN_PacketGetplayerIndex(packet) Case ID_DISCONNECTION_NOTIFICATION Print "We have been disconnected!" Case ID_REMOTE_DISCONNECTION_NOTIFICATION Print "Remote Client Disconnected:" + RN_PacketGetplayerIndex(packet) Case ID_REMOTE_NEW_INCOMING_CONNECTION Print "New Client Connected" Case ID_REMOTE_EXISTING_CONNECTION Print "A Client Was Already Connected : " + RN_PacketGetplayerIndex(packet) Case ID_REMOTE_CONNECTION_LOST Print "A Client has been disconnected:" + RN_PacketGetplayerIndex(packet) Case ID_RECEIVED_STATIC_DATA Print "Server Static Data" Case ID_REMOTE_STATIC_DATA Print "Remote Static Data: " + RN_PacketGetplayerIndex(packet) + " : " + RN_BitStreamGetData(RN_ClientGetStaticClientData(Client,RN_PacketGetplayerID(packet))) Case 100 x = RN_BitStreamReadUnsignedShort(BitStreamIN) y = RN_BitStreamReadUnsignedShort(BitStreamIN) z = RN_BitStreamReadUnsignedShort(BitStreamIN) PositionEntity sp,x,y,z ;Print "MOUSEUPDATE: X = " + x + " Y = " + y:Input("") ;User Defined Case ID_CHAT Print "Chat(" + RN_PacketGetplayerIndex(packet) + "): " + Mid(msg,2,Len(msg)-1) Case ID_KICK id = Mid(msg,2,Len(msg)-1) If (id = MyID) RN_ClientDisconnect(Client,300) Client = RN_DestroyRakClientInterface(Client) Print "I have been kicked!" Delay (1000) Else Print "Player: " + id + " has been kicked!" EndIf Default Print "Unknown Message Type (Type = " + Asc(Mid(msg,1,1)) + ")" End Select EndIf EndIf |
||
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group