Hi,
ich habe ein Problem... Und zwar verstehe ich nicht warum bei mir aufm Rechner wenn ich
Server offen habe und mit Client1 + Client2 connecte, sich die cubes langsam bewegen.
Aber sobald mein Freund von aussen connected (mein Port ist offen) dann seh ich ihn ingame aber er bewegt sich nicht! Also iwo habe ich einen Fehler...
Kann mir bitte jemand sagen, wo?
Client:
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] AppTitle "Client" Graphics3D 640,480,32,2 SeedRnd MilliSecs()
Global f_Time=CreateTimer(111) Global n_Stream=CreateUDPStream(Rand(5999,9111)) Global n_Port=UDPStreamPort(n_Stream) Global s_Ip$=HostIP(CountHostIPs("84.162.188.210")) Global s_Port=8979
Const n_Connect=1 Const n_Leave=2 Const n_Position=3
Type n_User Field U_Name$ Field U_Port Field u_Entity% Field u_X# Field u_Z# Field u_A# End Type
Type n_Chat Field C_Msg End Type
n_Name$=Input("Username : ") WriteByte n_Stream,n_Connect WriteLine n_Stream,n_Name$ SendUDPMsg n_Stream,s_Ip$,s_Port
cPiv=CreatePivot() Cube=CreateCube(cPiv) PositionEntity Cube,0,1,0 EntityColor Cube,Rand(20,255),Rand(20,255),Rand(20,255) Camera=CreateCamera(Cube) PositionEntity Camera,0,5,-6 RotateEntity Camera,30,0,0
FcB_Red=Rand(0,255) FcB_Green=Rand(0,255) FcB_Blue=Rand(0,255)
CameraClsColor Camera,FcB_Red,FcB_Green,FcB_Blue CameraFogMode Camera,1 CameraFogColor Camera,FcB_Red,FcB_Green,FcB_Blue CameraFogRange Camera,0.1,100
Plane=CreatePlane() Gitter=LoadTexture("rasen.bmp",2) EntityTexture Plane,Gitter EntityFX Plane,1
While Not KeyHit(1) WaitTimer(f_Time) Cls If RecvUDPMsg(n_Stream) n_Type=ReadByte(n_Stream) Select n_Type Case n_Connect nU.n_User=New n_User nU\u_Name$=ReadLine(n_Stream) nU\u_Port=ReadByte(n_Stream) nU\u_Entity%=CreateCube() PositionEntity nU\u_Entity%,0,1,0 EntityColor nU\u_Entity%,Rand(0,255),Rand(0,255),Rand(0,255) Case n_Leave For nU.n_User=Each n_User If nU\u_Port=ReadByte(n_Stream) FreeEntity nU\u_Entity% Delete nU EndIf Next Case n_Position For nU.n_User=Each n_User If nU\u_Port=ReadByte(n_Stream) nU\u_X#=ReadFloat(n_Stream) nU\u_Z#=ReadFloat(n_Stream) nU\u_A#=ReadFloat(n_Stream) EndIf Next End Select EndIf If KeyDown(200) Then MoveEntity cPiv,0,0,.2 If KeyDown(208) Then MoveEntity cPiv,0,0,-.2 If KeyDown(203) Then TurnEntity cPiv,0,1.8,0 If KeyDown(205) Then TurnEntity cPiv,0,-1.8,0 If MilliSecs( )-s_Time>10 WriteByte n_Stream,n_Position WriteFloat n_Stream,EntityX#(cPiv) WriteFloat n_Stream,EntityZ#(cPiv) WriteFloat n_Stream,EntityYaw#(cPiv) SendUDPMsg n_Stream,s_Ip$,s_Port s_Time=MilliSecs()+126 EndIf
For nU.n_User=Each n_User If EntityInView(nU\u_Entity%,Camera) CameraProject(Camera,nU\u_X#,0,nU\u_Z#) PositionEntity nU\u_Entity%,nU\u_X#,1,nU\u_Z# RotateEntity nU\u_Entity%,0,nU\u_A#,0 EndIf Next RenderWorld() UpdateWorld() For nU.n_User=Each n_User If EntityInView(nU\u_Entity%,Camera) CameraProject(Camera,nU\u_X#,0,nU\u_Z#) Color 255,255,255 Rect ProjectedX#()-10,ProjectedY#()-40,80,14,1 Color 0,0,0 Text ProjectedX#()-10,ProjectedY#()-40,nU\u_Name$ EndIf Next Flip 0 Wend WriteByte n_Stream,n_Leave SendUDPMsg n_Stream,s_Ip$,s_Port
Server:
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] AppTitle "Server" Graphics 240,60,16,2 SeedRnd MilliSecs()
Global f_Time=CreateTimer(100) Global n_Stream=CreateUDPStream(8979)
Const n_Connect=1 Const n_Leave=2 Const n_Position=3
Type n_User Field u_Name$ Field u_Ip$ Field u_Port Field u_X# Field u_Z# Field u_A# End Type
Type n_Chat Field C_Msg End Type
While Not KeyHit(1) WaitTimer(f_Time) If RecvUDPMsg(n_Stream) n_Ip$=UDPMsgIP(n_Stream) n_Port=UDPMsgPort(n_Stream) n_Type=ReadByte(n_Stream) Select n_Type Case n_Connect nU.n_User=New n_User u_Name$=ReadLine(n_Stream) nU\u_Name$=u_Name$ nU\u_Ip$=n_Ip$ nU\u_Port=n_Port For nU.n_User=Each n_User If Not nU\u_Port=n_Port WriteByte n_Stream,n_Connect WriteLine n_Stream,u_Name$ WriteByte n_Stream,n_Port SendUDPMsg n_Stream,nU\u_Ip$,nU\u_Port EndIf Next For nU.n_User=Each n_User If Not nU\u_Port=n_Port WriteByte n_Stream,n_Connect WriteLine n_Stream,nU\u_Name$ WriteByte n_Stream,nU\u_Port SendUDPMsg n_Stream,n_Ip$,n_Port EndIf Next DebugLog "Server: Connect -> "+u_Name$ Print "Server: Connect -> "+u_Name$ Case n_Leave For nU.n_User=Each n_User If Not nU\u_Port=n_Port WriteByte n_Stream,n_Leave WriteByte n_Stream,n_Port SendUDPMsg n_Stream,nU\u_Ip$,nU\u_Port Else DebugLog "Server: "+nU\u_Name$+" -> Leave" Print "Server: "+nU\u_Name$+" -> Leave" Delete nU EndIf Next Case n_Position For nU.n_User=Each n_User If nU\u_Port=n_Port nU\u_X#=ReadFloat(n_Stream) nU\u_Z#=ReadFloat(n_Stream) nU\u_A#=ReadFloat(n_Stream) Print "Server: "+nU\u_Name$+" -> Update" EndIf Next End Select EndIf If MilliSecs()-s_Time>10 For nU.n_User=Each n_User For nUn.n_User=Each n_User If nUn\u_Port<>nU\u_Port WriteByte n_Stream,n_Position WriteByte n_Stream,nU\u_Port WriteFloat n_Stream,nU\u_X# WriteFloat n_Stream,nU\u_Z# WriteFloat n_Stream,nU\u_A# SendUDPMsg n_Stream,nU\u_Ip$,nUn\u_Port End If Next Next s_Time=MilliSecs() End If Flip 0 Wend
Vielen Dank im vorraus!
Grüßle
Dennis
|