Position-Daten werden nicht gesendet

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

AMD

Betreff: Position-Daten werden nicht gesendet

BeitragMi, Jan 30, 2008 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich mach mich gerade an ein 2D-Lan-Game
und hab auch mega-vieles versucht aber ich bekomms einfach ned hin, die Position-Daten werden einfach ned an die anderen gesendet.



danke jetzt schon mal!!!

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Silver_Knee

BeitragMi, Feb 06, 2008 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
mehr infos!!!
Benutzt du TCP/UDP/DirectPlay? Bist du dir unschlüssig/suchst einen Rat?
Dann wie speicherst du die Spieler-Koords? Types, Arrays, Banks?

Dann kann man dir helfen^^
 

AMD

BeitragMi, Feb 06, 2008 2:36
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich benutze directplay. und ja ich bin mir auch etwas unschlüssig (ist meine erste PC zu PC verbindung) und meine Daten speicher ich in Types und hier mal den code (den hab ich schon mal gepostet aber weil mir keiner antwortete wieder entpostet^^)

ich hab die stelle im code markiert und sorry wenn jetzt i-wie gewurschtel im code sein sollte aber ich hab echt alles mögliche probiert Sad

Code: [AUSKLAPPEN]
Global maptile
Global Player
Global Spieler_posx=200
Global Spieler_posy=320
Global Spieler_Tempy#=0
Global jump
Global jumptimer
Global Spieler_counter=8
Global Spieler_frame=0
Global Schuss
Global fpsrate, loops, fpstime

Type shoot
Field shoot_x
Field shoot_y
Field shoot_links
Field shoot_rechts
End Type

Type PlayerOnline
Field Spieler_x
Field Spieler_y
Field name$, net_id
End Type

AppTitle "Jump&Run"

If Not StartNetGame() Then End

Graphics 640,480,32,2

Repeat
name$=Input$("Name: ")
Until name$<>""

PlayerOnline.PlayerOnline = New PlayerOnline
PlayerOnline\name=name$
PlayerOnline\net_id=Createnetplayer( name$ )

frametimer = CreateTimer(30)

SetBuffer BackBuffer()
ClsColor 0,0,255

maptile=Loadimage("tile2.bmp")
MaskImage maptile,255,0,255
Dim map(20,15)

Player=Loadanimimage("hero.bmp",32,32,0,8)
MaskImage Player,255,0,255

Schuss=Loadimage("Schuss.png")

Restore mapdata
For y=0 To 14
 For x=0 To 19
  Read map(x,y)
 Next
Next

;Hauptschleife
Repeat
Cls

WaitTimer (frametimer)

Update_network()
Drawmap()
Spieler()
Createschuss()
Send_PlayerInfo(send)

Color 255,0,0
Text 10,0,"FPS: "+fps()
Color 255,255,255
Text Spieler_posx-8,Spieler_posy-15,""+name$,0,1
Text 10,20,""+Send_PlayerInfo(send)
Flip 0
Until KeyHit(1)
End

Function Drawmap()

For y=0 To 14
 For x=0 To 19
  If map(x,y)=1 Then
  DrawImage maptile,x*32,y*32
  End If
 Next
Next

End Function

Function Spieler()

If KeyDown(200)
 Send_PlayerInfo(send)
 If jump=0 Then
 jump=1
 Spieler_tempy=10
 End if
End If

If map((Spieler_posx +16) /32,Spieler_posy /32)=1 And jump = 1 Then
jump=0
Spieler_posy=Spieler_posy+1
End If

;----Sprungfunktion

   If jump = 1 Then
      Spieler_tempy = Spieler_tempy -0.33    ;Die Temporäre Variable verringern
      Spieler_posy = Spieler_posy - Spieler_tempy ; Position Y durch TempY veringern
      ; Solange Temp_y eine positive Zahl ist, bewegt sich unsere Figur hoch,
      ; andernfalls runter.
                                                                          
      If Spieler_tempy =< 0 Then   ; Sobald Temp_y den Wert 0 erreicht hat
         If map((Spieler_posx +16) /32,(Spieler_posy +32) /32)=1 Then   
             ;überprüft, ob sich ein Tile unter dem Spieler befindet
            jump = 0
            temp = Spieler_posy /32   ;\
            Spieler_posy = temp *32   ;/ Setzt die genaue Y-Position, falls die Figur mitten im Tile steht
         EndIf
      EndIf
    EndIf
   
   ;Gravity
   If jump = 0  Then
      If map((Spieler_posx +16) /32,(Spieler_posy +32) /32)=0 Then   ; Sollte kein Tile unter dem Spieler sein
         jump = 1       ; Sprungfunktion weiter ausführen
         Spieler_tempy = 0   ; Temp_y = 0, weil diese einen negativen Wert berechnen soll
      EndIf
   EndIf
   
   ;sorgt dafür, das die Figur nicht aus den Himmel schießt
   If Spieler_posy =< 0 Then
      Spieler_posy = 1
      jump = 1
      Spieler_Tempy = 0
   EndIf
   
   If Spieler_posy => 448 Then
      Spieler_posy = 447
      jump = 0
   EndIf
   
   ;-----Ende Sprungfunktiont

If KeyDown(203)
Send_PlayerInfo(send)
      If Spieler_Frame <4 Then Spieler_Frame = 4
      Spieler_Counter = Spieler_Counter -1
      If Spieler_Counter = 0 Then
         Spieler_Counter = 8
         Spieler_Frame = Spieler_Frame +1
         If Spieler_Frame = 8 Then Spieler_Frame = 4
      EndIf
      
 If map(Spieler_posx /32,(Spieler_posy +16) /32)=0 Then
Spieler_posx=Spieler_posx-4
If Spieler_posx =< 0 Then Spieler_posx = 1
 End If
End If

If KeyDown(205)
Send_PlayerInfo(send)
      If Spieler_Frame >3 Then Spieler_Frame = 0
      Spieler_Counter = Spieler_Counter -1
      If Spieler_Counter = 0 Then
         Spieler_Counter = 8
         Spieler_Frame = Spieler_Frame +1
         If Spieler_Frame = 4 Then Spieler_Frame = 0
      EndIf
If map((Spieler_posx +32) /32,(Spieler_posy +16) /32)=0 Then
Spieler_posx=Spieler_posx+4
If Spieler_posx => 608 Then Spieler_posx = 607
End If
End If

If KeyDown(208)
If Spieler_Frame<4
Spieler_Frame=9
End If
End if

If KeyDown(208)
If Spieler_Frame=<7
Spieler_Frame=8
End If
End if

If Spieler_posx=600 Then Spieler_posx=600
If Spieler_posx=2 Then Spieler_posx=2

DrawImage Player,Spieler_posx,Spieler_posy,Spieler_frame


End Function

Function Createschuss()

If KeyDown(57)

p.shoot=New shoot

p\shoot_x = Spieler_posx+12
p\shoot_y = Spieler_posy+13.7
p\shoot_links = Spieler_posx
p\shoot_rechts = Spieler_posx

End If

For p.shoot=Each shoot

If Spieler_frame<4
p\shoot_rechts=p\shoot_rechts+12
Else
p\shoot_links=p\shoot_links-12
End if

DrawImage schuss,p\shoot_x,p\shoot_y
DrawImage schuss,p\shoot_links,p\shoot_y
DrawImage schuss,p\shoot_rechts,p\shoot_y

Next

End Function

;------------des zeugs mit für LAN--------------------------------------------------------------------

Function Update_network()
While RecvNetMsg()
Select NetMsgType()
Case 100:
PlayerOnline.PlayerOnline = New PlayerOnline
PlayerOnline\net_id=NetMsgFrom()
PlayerOnline\name=NetPlayerName$( NetMsgFrom() )
Text 10,30,""+PlayerOnline\name+" has joined the game."
Case 101:
PlayerOnline.PlayerOnline = PlayerOnline( NetMsgFrom() )
If PlayerOnline<>Null
Text 10,40,PlayerOnline\name+" has left the game. "
Delete PlayerOnline
EndIf
End Select
Wend
End Function

Function Send_PlayerInfo(send)
While RecvNetMsg()
For PlayerOnline.PlayerOnline = Each PlayerOnline
If NetPlayerLocal( PlayerOnline\net_id )
PlayerOnline\Spieler_x$=Spieler_posx
PlayerOnline\Spieler_y$=Spieler_posy
SendNetMsg Rnd(1,99),PlayerOnline\Spieler_x$,PlayerOnline\net_id,0,1
SendNetMsg Rnd(1,99),PlayerOnline\Spieler_y$,PlayerOnline\net_id,0,1

If send
SendNetMsg 1,PLayerOnline\Spieler_x$,PlayerOnline\net_id,0,0
SendNetMsg 1,PlayerOnline\Spieler_y$,PlayerOnline\net_id,0,0
End If
End If
Next
Wend
End Function

Function PlayerOnline.PlayerOnline( id )
   For PlayerOnline.PlayerOnline=Each PlayerOnline
      If PlayerOnline\net_id=id Then Return PlayerOnline
   Next
End Function

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

Function fps()
loops = loops+1
If MilliSecs() - fpstime > 1000 Then
      fpsrate = loops
      loops = 0
      fpstime = MilliSecs()
End If
Return fpsrate
End Function

.mapdata
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Silver_Knee

BeitragMi, Feb 06, 2008 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function Update_network()
While RecvNetMsg()
Select NetMsgType()
Case 100:
PlayerOnline.PlayerOnline = New PlayerOnline
PlayerOnline\net_id=NetMsgFrom()
PlayerOnline\name=NetPlayerName$( NetMsgFrom() )
Text 10,30,""+PlayerOnline\name+" has joined the game."
Case 101:
PlayerOnline.PlayerOnline = PlayerOnline( NetMsgFrom() )
If PlayerOnline<>Null
Text 10,40,PlayerOnline\name+" has left the game. "
Delete PlayerOnline
EndIf
End Select
Wend
End Function

soweit ich das erkenne weir doch nur der Type 100 und 101 geprüft. Sollte auf einem anderem Type ankommen kriegst dus ja garnet mit

Code: [AUSKLAPPEN]
Default
PlayerOnline.PlayerOnline = PlayerOnline( NetMsgFrom() )
If PlayerOnline<>Null
Debuglog PlayerOnline\name+"@"+NetMsgType()+":"+NetMsgData()
Delete PlayerOnline
EndIf


Das ins Select und du bekommst die Nachricht in den Debuglog. den Rest musste selbst rausfinden. Wink Ich rate allerdings von DP ab, denn es wird von vielen firewalls geblockt und ist zu 0% online-fähig... für ne LAN partx dürfte es allerdings laufen

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group