direct play problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dottakopf

Betreff: direct play problem

BeitragSa, Okt 04, 2008 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo bbler !

Ich habe gestern angefangen die tutorials über netzwerkbefehle von robsite durchzuarbeiten.
Direct play scheint recht simpel zu sein, und hab daher auch gleich versucht ein programm zu schreiben.
Ich habs eigentlich auch zum laufen gebracht, allerdings nur solange man nicht mehrere daten auf einmal versucht zu schicken.

Mein Problem :
Ich habe ein Programm bei dem man peer netzwerk (driect play) 2 quadrate steuert. Solange ich nur die X koordinaten daten sende funktioniert das auch ganz ok. aber sobald ich die Y koords hinzunehme funtz nix mehr. Leider seh ich einfach nicht meinen fehler Embarassed

Kurz in worten was ich gemacht habe:
Immer wenn ein spieler beitritt, wird dieser in einem Type abgespeichert und bekommt zur idientifikation eine id verpasst. So und nun sende ich einfach meine Localen daten vom Hero an alle anderen type einträge (IDS).
Allerdings scheint das nicht zu funktionieren. Mach ich irgendwas falsch ? weil in dem tut wird eher flüchtig auf dieses "direct play" eingegangen, daher hab ichs mal so ausm bauch raus zusammen geschnippselt.

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()

Global frametimer = CreateTimer(60)

Global hero_x
Global hero_y

Global in_dat         ;daten die per netz eingehen
Global data_type       ;was sind es für daten
Global data_fromID      ;von wem kommt die msg ?



Global game = StartNetGame()
Global Net_Hero = CreateNetPlayer("" + Input("Nicname : ") )
Flip



;hier werden die anderen netz spieler gespeichert
Type net_player
   Field nplayer_x
   Field nplayer_y
   Field nplayer_ID   
End Type








;////////////////////////////MAIN\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Repeat
Cls
WaitTimer(frameTimer)


   update_players()
   
   
   get_net_data()
   send_net_data()
   
   
   


Flip 0
Until KeyHit(1)
;//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\








;-------------------------------------------------------------------------
Function update_players()

   ;local hero moving
   If KeyHit(203) Then hero_x = hero_x -1
   If KeyHit(205) Then hero_x = hero_x +1
   If KeyHit(200) Then hero_y = hero_y -1
   If KeyHit(208) Then hero_y = hero_y +1
   
   Rect hero_x*32,hero_y*32,32,32,1
   
   
   ;net player moving and updating
   For info.net_player = Each net_player
   
      Rect info\nplayer_x*32,info\nplayer_y*32,32,32,1
      
   Next
   
End Function


;-------------------------------------------------------------------------




Function get_net_data()


   in_data = RecvNetMsg()
   If in_data<>0 Then
      Data_type = NetMsgType()
      Data_fromID = NetMsgFrom()
      
      ;filtern
      Select data_type
      
      
      
         Case 100
      
               info.net_player = New net_player
                  info\nplayer_ID = Data_fromID
                  info\nplayer_x = 1
                  info\nplayer_y = 1
                  
         Default
         
                If data_type >0 And data_type < 100 Then
               
                   ;wenn die nachricht id mit type id stimmt updaten
                  For info.net_player = Each net_player
                  
                     If info\nplayer_id = data_fromID Then
                        info\nplayer_x = NetMsgData()
                        info\nplayer_y = NetMsgData()
                        Exit
                     End If
                     
                  Next
                  
               End If
               
               
      End Select

   End If

End Function


;-------------------------------------------------------------------------


Function send_net_data()


   ;send hero datas
   For info.net_player = Each net_player
      SendNetMsg 1 , hero_x , net_hero , info\nplayer_ID , 0
      SendNetMsg 2 , hero_y , net_hero , info\nplayer_ID , 0
   Next
   
   




End Function

;-------------------------------------------------------------------------

wenn man jetzt die zeilen ausklammert, in denen die y koords gesendet werden( also beim schicken und dem annehmen) dann funtz ja noch alles.
Meine logik sagt mir, dass da iwas mit der zuteilung der werte nicht stimmt. Aber wie löse ich das ?

mfg
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group