Netzwerk - Logik Problem
Übersicht

![]() |
N0XBetreff: Netzwerk - Logik Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich habe ein Netzwerk Problem bezüglich der Player-Namen-Übertragung. Am Anfang meines Codes wird der Name des Players zum Server übertragen der diesen dann an alle Player überträgt. Wenn ich jetzt aber mehrere Player online habe, wird der Name des zuvor Online gegangenen, nicht angezeigt, da dieser ja nicht neu hinzugekommen ist. Wie kann ich jetzt aber trotzdem die Namen der Player die Bereits Online sind übertragen? Server: Code: [AUSKLAPPEN] Function UDP()
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 name$ = ReadString(svr) For p.Player = Each Player WriteByte svr,1 WriteInt svr,ip WriteInt svr,port WriteString svr,name$ SendUDPMsg svr,p\ip,p\port WriteByte svr,1 WriteInt svr,p\ip WriteInt svr,p\port SendUDPMsg svr,ip,port Next p.Player = New Player p\ip$ = ip p\port = port Print "Player Connected... "+name$ 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 While ReadAvail(svr) For p.Player = Each Player If p\port = port And p\ip = ip Then p\x = ReadFloat(svr) p\y = ReadFloat(svr) p\name$ = ReadString(svr) End If Next Wend End Select End If End If read_milli = MilliSecs()+64 If send_milli < MilliSecs() Then For s.Player = Each Player For p.Player = Each Player If p\port <> s\port Then WriteByte svr,3 WriteInt svr,s\ip WriteInt svr,s\port WriteFloat svr,s\x WriteFloat svr,s\y WriteString svr,s\name$ SendUDPMsg svr,p\ip,p\port End If Next Next send_milli = MilliSecs()+64 End If End Function Client: Code: [AUSKLAPPEN] WriteByte o_udp,1
WriteString o_udp,name$ SendUDPMsg o_udp,Ip,7142 Function UDP() readsvr = RecvUDPMsg(o_udp) If readsvr <> 0 Then readav = ReadAvail(o_udp) If readav <> 0 Then rbyte = ReadByte(o_udp) Select rbyte Case 1 ;con p.Player = New Player p\ip = ReadInt(o_udp) p\port = ReadInt(o_udp) p\name$ = ReadString(o_udp) p\gfx = chha ;p\id = ReadInt(o_udp) Case 2 ;dis rIp = ReadInt(o_udp) port = ReadInt(o_udp) For p.Player = Each Player If p\ip = rIp And p\port = port Then ;FreeImage p\gfx Delete p End If Next Case 3 While ReadAvail(o_udp) rIp = ReadInt(o_udp) port = ReadInt(o_udp) For p.Player = Each Player If p\ip = rIp And p\port = port Then p\x# = ReadFloat(o_udp) p\y# = ReadFloat(o_udp) End If Next Wend End Select End If End If read_milli = MilliSecs()+64 ;Send If send_milli < MilliSecs() Then WriteByte o_udp,3 WriteFloat o_udp,ppx WriteFloat o_udp,ppy SendUDPMsg o_udp,Ip,7142 send_milli = MilliSecs()+64 End If End Function Mfg, N0X (Das sind nur Code-Ausschnitte, Stream usw. sind erstellt ^^) |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du sendest an den neuen Client nach dem joinen zusätzlich alle bisherigen Daten der vorhandene Clienten (z.B. Namen) und liest sie beim neuen Clienten wieder aus.
mfg |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
du speicherst alle clienten in einem dim ab, und schreibst sie dann in einer for ... next schleife | ||
It's done when it's done. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group