Keine Player Coordinaten?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

DJ_Mic

Betreff: Keine Player Coordinaten?

BeitragDi, Dez 29, 2009 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

mein Server erhält Player Coordinaten, aber irgendwie möchte das ganze nicht so wie ich. Denn der Client bekommt keine Coordinaten zugeschickt. Vorher hat das funktioniert mit einem einfachen Model. NUn habe ich das ganze mit Tokamak verbinden wollen und das Auto erstma grob synchronisiert wird. Habt ihr da vielleicht Tipps?

Nicdel

BeitragDi, Dez 29, 2009 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Code?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

DJ_Mic

BeitragDi, Dez 29, 2009 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry, habs total vergessen.

Client:
BlitzBasic: [AUSKLAPPEN]
;!Netzwerk!
;Abfragen
If read_milli < MilliSecs() Then
readsvr = RecvUDPMsg(svr)
If readsvr <> 0 Then
readav = ReadAvail(svr)
If readav <> 0 Then
rbyte = ReadByte(svr)
Select rbyte
Case 1
;Player-Online
p.Player = New Player
p\ip = ReadInt(svr)
p\port = ReadInt(svr)
p\NameS = ReadString(svr)
p\model = LoadMesh("models\veh\jeep\chassis.3DS")
ScaleMesh p\model,0.1,0.1,0.1
Case 2
;Player-Offline
rIp = ReadInt(svr)
port = ReadInt(svr)
For p.Player = Each Player
If p\ip = rIp And p\port = port Then
FreeEntity p\model
Delete p
End If
Next
Case 3
;Liest Coordinaten ab
rIp = ReadInt(svr)
port = ReadInt(svr)
For p.Player = Each Player
If p\ip = rIp And p\port = port Then
p\x# = ReadFloat(svr)
p\y# = ReadFloat(svr)
p\z# = ReadFloat(svr)
p\NameS = ReadString(svr)
End If
Next
End Select

End If
End If
End If
For p.Player = Each Player
PositionEntity p\model,p\x#,p\y#,p\z#
Next
;Sendet an Server
If send_milli < MilliSecs() Then
WriteByte svr,3
WriteFloat svr,EntityX(Body_Mesh)
WriteFloat svr,EntityY(Body_Mesh)
WriteFloat svr,EntityZ(Body_Mesh)
WriteString svr,Name$

SendUDPMsg svr,Ip,8767
send_milli = MilliSecs()+32
End If


Server:
BlitzBasic: [AUSKLAPPEN]
;read
If read_milli < MilliSecs() Then
readsvr = RecvUDPMsg(svr)
If readsvr <> 0 Then
readav = ReadAvail(svr)
If readav <> 0 Then
port = UDPMsgPort(svr)
ip = UDPMsgIP(svr)
rbyte = ReadByte(svr)
Select rbyte
Case 1
For p.Player = Each Player
WriteByte svr,1
WriteInt svr,ip
WriteInt svr,port
WriteString svr,NameS
SendUDPMsg svr,p\ip,p\port
WriteByte svr,1
WriteInt svr,p\ip
WriteInt svr,p\port
WriteString svr,p\NameS
SendUDPMsg svr,ip,port
Next
p.Player = New Player
p\ip$ = ip
p\port = port
p\NameS = ReadString(svr)
Print "Player: "+p\NameS+" connected...."

stream = WriteFile("log.txt")
WriteString stream, Str("Player: "+p\NameS+" connected....")
CloseFile(stream)
Case 2
For p.Player = Each Player
If ip = p\ip And port = p\port Then
Delete p
End If
Next
For p.Player = Each Player
WriteByte svr,2
WriteInt svr,ip
WriteInt svr,port
SendUDPMsg svr,p\ip,p\port
Next
Print "Player Disconnected..."
Case 3
For p.Player = Each Player
If p\port = port And p\ip = ip Then
p\x = ReadFloat(svr)
p\y = ReadFloat(svr)
p\z = ReadFloat(svr)

fileout = WriteFile ("mydata.dat")
WriteInt fileout,p\x
WriteInt fileout,p\y
WriteInt fileout,p\z
CloseFile fileout

p\NameS = ReadString(svr)
End If
Next
End Select

End If
End If
End If

;sende an alle
If send_milli < MilliSecs() Then
For s.Player = Each Player
For p.Player = Each Player
If p\ip <> s\ip Then
WriteByte svr,3
WriteInt svr,s\ip
WriteInt svr,s\port
WriteFloat svr,s\x
WriteFloat svr,s\y
WriteFloat svr,s\z
WriteString svr, s\NameS
SendUDPMsg svr,p\ip,p\port
End If
Next
Next
send_milli = MilliSecs()+32
End If
Wend


Also der Server bekommt die Coordinaten zugeschickt, aber er sendet sie irgendwie nicht weiter, bzw. der Client wendet sich nicht an, vermute ich.

the FR3AK

BeitragMi, Dez 30, 2009 2:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht ist der Port auf einmal nichtt freigegeben?
 

DJ_Mic

BeitragMi, Dez 30, 2009 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze läuft meinem gemietetem Windows Server.

Valnar

BeitragMi, Dez 30, 2009 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heisst trotzdem nicht, dass alles schon so eingestellt ist, wie du es willst. Ein Server muss gewartet werden, ein Server kann auch geschlossene Ports haben (zb. auf meinen sind alle ausser die, die benutzt werden zu...)
Auch kann es sein, dass der Port von deinen PC weg geschlossen ist und nicht bei deinem Server.
[url][/url]
 

DJ_Mic

BeitragMi, Dez 30, 2009 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf dem Server hab ich extra die Firewall ausgemacht. Und aufm Rechner das gleiche.
(Das ganze erstma nur zu Testzwecken, sonst hab ich alles an)
 

Dreamora

BeitragMi, Dez 30, 2009 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
brauchst nicht ausmachen, brauchst nur auf dem windows server das programm bei den inbound rules der windows server firewall hinzufügen als programm (alle ports erlauben)
dann wirds gehen rein vom server her.

alles was dann nicht geht ist direkt oder indirekt schuld von router oder code. Ich würd mal auf letzteres tippen denn rein vom reinlinsen her sieht dein Server code recht falsch aus (du schreibst auf dem packet rum das rein kommt anstatt korrekt ein neues zu erzeugen für den weiterversand, sendetst es mehrfach zum player und derartige Dinge)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group