SetGNetTarget?!?!

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

FOODy

Betreff: SetGNetTarget?!?!

BeitragMo, Jun 12, 2006 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Ich hab mal ne frage zum Befehl "SetGNetTarget".
So wie ich es verstanden habe kann man damit eigene Objekte (mit eigenen Klassen) verschicken.
Leider geht das irgendwie nicht.

Hier ist der Quellcode:
Code: [AUSKLAPPEN]
'###################################################################################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'|||||||||||||| NetBody
'///////////////////////////////////////////////////////////////////////////////////////////////////
'---------------------------------------------------------------------------------------------------
Type PlayerNet Extends Body
   Field TmpX:Int,TmpY:Int,TmpAngle:Float,HeaderSend:Byte
   Field NetObject:TGnetObject
   '-----------------------------------------------------------------------------------------------
   '############# Objektmethoden
   '-----------------------------------------------------------------------------------------------
   Method InitNetPlayer()
      NetObject = CreateGNetObject(GNetHost)
      ListAddLast NetList,Self
   EndMethod
   
   Method Send()
      SetGNetTarget(NetObject,.Body(Self))
      'If(HeaderSend=False) SetGNetString(NetObject,0,Name)
      'If(x<>TmpX) SetGNetInt(NetObject,1,x);TmpX = x
      'If(y<>TmpY) SetGNetInt(NetObject,2,y);TmpY = y
      'If(angle<>TmpAngle) SetGNetInt(NetObject,3,angle);TmpAngle = angle
   EndMethod
   '-----------------------------------------------------------------------------------------------
   '############# Verbindungsfunktionen
   '-----------------------------------------------------------------------------------------------   
   Function Join:Byte(ip:String)
      If(GNetConnect(GnetHost,ip,PORT))
         NetHost = False
         Return True
      Else
         Return False
      EndIf
   EndFunction
   
   Function Host()
      GNetListen(GnetHost,PORT)
      NetHost = True
   EndFunction
   
   Function NetUpdate()
      GNetSync(GnetHost)
      
      For Local netobj:PlayerNet=EachIn NetList
         netobj.Send()
      Next
      
      Local client:TGnetPeer
      
      If(NetHost)
         client = GNetAccept(GnetHost)
         If(client) Print "Joined..."
      EndIf
      
      For Local obj:TGnetObject=EachIn GNetObjects(GnetHost,GNET_ALL)
         Local B:Body = .Body(GetGNetTarget(obj))
         If(B<>Player) Print SizeOf(GetGNetTarget(obj))
         If(B)
            Local S:Body = .Body.GetByName(B.name)
            If(B<>Player) Then Print SizeOf(B)
            If Not S
               ListAddLast List,B
            Else
               S = B
            EndIf
         EndIf
      Next
      
   EndFunction
   '-----------------------------------------------------------------------------------------------
   '############# Variablen
   '-----------------------------------------------------------------------------------------------
   Global GNetHost:TGnetHost = CreateGNetHost()
   Global NetList:TList = CreateList()
   Global PORT:Int = 9200
   Global NetHost:Byte = False
EndType


Freu mich schon auf eure hilfe.


.:: FOODy
 

Dreamora

BeitragMo, Jul 03, 2006 9:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Das SetTarget Objekt wird nicht verschickt. Es wird nur lokal an das Objekt angehängt. Damit kannst du zb Sync Funktionalitäten einfacher machen und dir einfacher merken welches Netzwerk Objekt mit welcher lokalen Representation zusammen gehört. Mehr geht damit nicht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group