UDP - Animation
Übersicht

![]() |
N0XBetreff: UDP - Animation |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey, Community !
Ich habe folgendes Problem: Ich möchte eine Drehung (TurnEntity) per UDP versenden. Habe schon viel versucht hat aber nichts genützt. Hier der Codeausschnitt: Code: [AUSKLAPPEN] Function UDP()
readsvr = RecvUDPMsg(svr) If readsvr <> 0 Then readav = ReadAvail(svr) If readav <> 0 Then rbyte = ReadByte(svr) Select rbyte Case 1 ;con p.Player = New Player p\ip = ReadInt(svr) p\port = ReadInt(svr) p\model = clientp Case 2 ;dis 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 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) End If Next End Select End If End If read_milli = MilliSecs()+32 For p.Player = Each Player PositionEntity p\model,p\x#,p\y#,p\z# Next ;Send If send_milli < MilliSecs() Then WriteByte svr,3 WriteFloat svr,EntityX(player) WriteFloat svr,EntityY(player) WriteFloat svr,EntityZ(player) SendUDPMsg svr,Ip,7142 send_milli = MilliSecs()+32 End If End Function Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
- Zuletzt bearbeitet von N0X am So, Feb 01, 2009 21:31, insgesamt einmal bearbeitet
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
mach beim Empfangen etwa sowas: "while not eof(stream" dann kannst du beim Senden sicher sein, dass der Stream leer ist. Viele Grüße TimBo Edit: was funktioniert denn nicht, empfängst du falsche oder gar keine Daten ? |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du must einfach (genau so, wie dus auch mit den Positionen machst) immer absolute Angaben übertragen. Dann musst du natürlich den Player Type mit pitch-, yaw- und roll-Feldern ausstatten, diese auch übermitteln und dann kannst du einfach dort, wo du jeden absolut positionierst gleichzeitig auch noch absolut drehen. | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut hat funktioniert, danke!
Neues Problem: Jetzt möchte ich das wenn eine Zahl sich verändert eine Animation abgespieolt wird (Problem liegt bei der Abfrage ob sich die Zahl verändert) Wie mache ich eine solche Abfrage? Hier Code: [AUSKLAPPEN] readsvr = RecvUDPMsg(svr)
If readsvr <> 0 Then readav = ReadAvail(svr) If readav <> 0 Then rbyte = ReadByte(svr) Select rbyte Case 1 ;con p.Player = New Player p\ip = ReadInt(svr) p\port = ReadInt(svr) p\model = clientp Case 2 ;dis 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 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\pitch = ReadInt(svr) p\yaw = ReadInt(svr) p\roll = ReadInt(svr) p\active = ReadByte(svr) End If Next End Select End If End If read_milli = MilliSecs()+32 For p.Player = Each Player PositionEntity p\model,p\x#,p\y#,p\z# RotateEntity p\model,p\pitch,p\yaw,p\roll If p\active=1 Then If Not Animating(clientp) Then Animate clientp,1,.2,1,1 EndIf EndIf If p\active=0 Then Animate player,0 EndIf Next If send_milli < MilliSecs() Then WriteByte svr,3 WriteFloat svr,EntityX(player) WriteFloat svr,EntityY(player) WriteFloat svr,EntityZ(player) WriteInt svr,pitch WriteInt svr,yaw WriteInt svr,roll WriteByte svr,active SendUDPMsg svr,Ip,7142 send_milli = MilliSecs()+32 End If If KeyDown(17) Then MoveEntity player,0,0,1 : pz=pz+1 : move2=1 MoveEntity skybox,0,0,1 If Not Animating(player) Then Animate player,1,.2,1,1 active=1 EndIf EndIf If KeyDown(31) Then MoveEntity player,0,0,-1 : pz=pz-1 : move2=-1 MoveEntity skybox,0,0,-1 If Not Animating(player) Then Animate player,1,-0.2,1,1 active=1 EndIf EndIf If KeyDown(57) And pVy = 0 Then pVy = 3.5 If Not (KeyDown(17) Or KeyDown(31) Or KeyDown(57)) Then Animate player,0 active=0 ;SetAnimTime player,0 EndIf Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Client schickt sein Wert, dein "Server" vergleicht sie und antwortet.
Stell dir einfach vor das wären 2 Personen, dann gehts gleich einfacher ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group