RakNet Problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

mevsmp

Betreff: RakNet Problem

BeitragSa, März 01, 2008 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group