Es wird nichts gesendet

Übersicht BlitzBasic Blitz3D

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

the FR3AK

BeitragFr, Aug 03, 2007 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe ja alles neu gecodet...

Wenn ich nun einen Host erstelle,die exe nochmal starte,dann joine,dann nochmal die exe starten und nochmal joine , dann sehe ich zwar in jedem Fenster die anderen aber wenn ich jetzt die zuerst gejointe Figur bewege und dann beim zuletzt gejointen schaue bewegt sie sich nicht...aber beim host wird sie bewegt...ich weiß nicht was ich da falsch gemacht habe oder machen soll...

Hier mal der Code:

Code: [AUSKLAPPEN]
Type player
   Field name$
   Field ip
   Field port
   Field x#
   Field y#
   Field z#
   Field entity#
End type
Global p.player

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Graphics3D 800,600,32,2
SetBuffer BackBuffer()


Global cam=createcamera()
Global block=createcube()
EntityParent block,cam
PositionEntity block,0,-5,10
PointEntity cam,block

 boden=createplane()
 PositionEntity boden,0,-10,0
 EntityColor boden,34,22,255
 
 Dim cubes(200)
 
 For i=1 To 200
    
    cubes(i)=createcube()
    EntityColor cubes(i),rnd(1,255),rnd(1,255),rnd(1,255)
    ScaleEntity cubes(i),rnd(1,10),rnd(1,10),rnd(1,10)
    PositionEntity cubes(i),rnd(-100,100),-10,rnd(-100,100)
    
 next

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


typ$=input("Host=h | Join=j:")

Global uname$
Global curname$
Global oldx#
Global oldy#
Global oldz#
Global mhm$
Global msg$
Global tef$
Global tes$
Global stream
Global port
Global IP
Global name3$

If typ$="j" Then
pr=Input("Deine Portnummer:")
name3$=Input("Dein Name:")
   
   port = pr
   stream=createudpstream()
   
   myip$="127.0.0.1"
   
   IP=INT_IP(myip$)
   ;Am Server den Client anmelden.
   WriteByte(stream,2)  ;Dem Server mitteilen das wir neu dazu gekommen sind.
   WriteString(stream,name3$)  ;Unseren Namen mitteilen
   SenduDpMsg stream,IP,9112  ;UDP Message senden
   Print port
   
   
   p.player=new player
      
      p\ip=ip
      p\port=port
      p\name$=name3$
      
      Print "Du hast den Chat betreten =D"
   
End If

If typ$="h"
   port = 9112

   stream=createudpstream(port)
   
End If


While Not KeyHit(1)

If typ$="h" Then
   updatehost()
Else If typ$="j" Then
   updateclient()
End if

oldx#=entityx(cam)
oldy#=entityy(cam)
oldz#=entityz(cam)

If KeyDown(200) Then
   MoveEntity cam,0,0,1
End If
If KeyDown(208) Then
   MoveEntity cam,0,0,-1
End If
If KeyDown(205) Then
   MoveEntity cam,1,0,0
End If
If KeyDown(203) Then
   MoveEntity cam,-1,0,0
End If

RenderWorld
UpdateWorld
Print mhm$
flip

Wend




Function updatehost()

If RecvUDPMsg(stream) <> 0 then
from=UDPMsgIP(stream)
fromp=udpmsgport(stream)

get=readbyte(stream)

Select get
   Case 2
      
      p.player=new player
      
      p\ip=from
      p\port=fromp
      p\name$=readstring(stream)
      name3$=p\name$
      Print p\name$ +" hat den Chat betreten =)"
      p\entity=createcube()
      
      For p.player=each player
      
      If Not p\port=fromp            
               WriteByte(stream,2)  ;Dem Server mitteilen das wir neu dazu gekommen sind.
               WriteString(stream,name3$)  ;Unseren Namen mitteilen
               Writeint(stream,fromp)
               Writeint(stream,from)   
               sendudpmsg(stream,p\ip,p\port)
               
               WriteByte(stream,2)  ;Dem Server mitteilen das wir neu dazu gekommen sind.
               WriteString(stream,p\name$)  ;Unseren Namen mitteilen
               Writeint(stream,p\port)
               Writeint(stream,p\ip)   
               sendudpmsg(stream,from,fromp)
               
      End If
   Next
      
   Case 1
   nwmsg$=Readstring(stream)
   For p.player=each player
      If fromp=p\port then
         Print "<"+p\name$+":>"+nwmsg$
      End If
   Next
   
   Case 3
   For p.player=each player
      If p\port=fromp Then
         curname$=p\name$
      End If
   Next
   
      For p.player=each player
         If p\port=fromp then   
            p\x#=readfloat(stream)
            p\y#=READFLOAT(stream)
            p\z#=readfloat(stream)
         
            PositionEntity p\entity,p\x#,p\y#,p\z#
         Else
            WriteByte(stream,3)
            WriteString(stream,curname$)
            WriteFloat(stream,readfloat(stream))
            WriteFloat(stream,readfloat(stream))
            WriteFloat(stream,readfloat(stream))
            SendUDPMsg(stream,p\ip,p\port)            
         End If
         
      next
End Select

End if

End Function




Function updateclient()

   If EntityX(cam)<>oldx# Or Entityy(cam)<>oldy# Or Entityz(cam)<>oldz# then
         WriteByte(stream,3)
         Writefloat(stream,entityx(cam))  ;Unseren Namen mitteilen
         Writefloat(stream,entityy(cam))
         Writefloat(stream,entityz(cam))
         SendUDPMsg stream,IP,9112  ;UDP Message senden
   End If
   
   gk=getkey()
   
   If gk>0 then
      tes$=chr$(gk)
   
      tef$=tef$+""+tes$
      Color 50,50,50
      Rect 1,1,600,20,1
      Color 255,255,255
      Text 1,1,tef$
   End If
   
   If KeyHit(28) Then
   
      msg$=tef$
      tef$=""
      
      WriteByte(stream,1)  ;Dem Server mitteilen das wir neu dazu gekommen sind.
      WriteString(stream,msg$)  ;Unseren Namen mitteilen
      SendUDPMsg stream,IP,9112  ;UDP Message senden

      
   End if

If RecvUDPMsg(stream) <> 0 then
from=UDPMsgIP(stream)
fromp=udpmsgport(stream)

get=readbyte(stream)

Select get

Case 1
   nwmsg$=Readstring(stream)
   For p.player=each player
      If fromp=p\port then
         Print nwmsg$
      End If
   Next
   
Case 2
   p.player=new player
   p\name$=readstring(stream)
   p\port=readint(stream)
   p\ip=readint(stream)
   p\entity=createcube()

   
Case 3
   uname$=ReadString(stream)

   For p.player=each player
      If p\name$=uname$ Then
         p\x#=readfloat(stream)
         p\y#=reADfloat(stream)
         p\z#=readfloat(stream)
         mhm$= "X:"+p\x#+" Y:"+p\y#+" Z:"+p\z#+" Name:"+p\name$
         PositionEntity p\entity,p\x#,p\y#,p\z#
         
      End if
   
   next
   
End select

End if

End function




Function INT_IP(IP$)
  a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
  a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
  a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
  a4=Int(IP$)
   
  Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4
End Function

the FR3AK

BeitragSa, Aug 04, 2007 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
JA ich weiß Doppelpost^^ aber ich habe das Problem nun gelöst und habe eine letzte frage:

Kann es sein das sie die UDP Messages stauen wenn ich die Anwendung auf einem PC mehrfach starte?
Also wenn ich z.B. 2 mal die Anwendung starte ( 1 Host , 1 Join)
Und dann die Spieler bewege...das ich dann erst bei dem einen Fenster gucken muss ( das er sich dort bewegt) und dann wird erst beim nächsten die Bewegung gemacht?

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group