Warum springen die player hin und her?
Übersicht

![]() |
mas93Betreff: Warum springen die player hin und her? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Ich hab jetzt ein udp tutorial gefunden und das mal erweitert. Nur springen jetzt die Spielerbildchen hin und her. Ich denke das es an dem typ liegt, weil ich ihm wild einfach koordinaten zuwerfe, ohne das ich ihm sag welcher spieler es ist. Wie kann ich das problem lösen?? Ich paste hier mal beide codes: server: Code: [AUSKLAPPEN] ;Type wo die Clients mit ip,port und name drin gespeichert werden Type client Field name$ Field ip,port End Type port = 7142 ;Serverport udp = CreateUDPStream(port) ;UDP Stream auf port 7142 erstellen ;Wenn der Stream nicht steht Fehlermeldung ausgeben und beenden If Not udp Then Print "Der UDP Stream konnte nicht erstellt werden." End EndIf Print "Server gestartet." Repeat If RecvUDPMsg(udp) <> 0 ;Wenn eine UDP Message eingegangen ist. client_ip = UDPMsgIP(udp) ;IP des Absenders client_port = UDPMsgPort(udp) ;Port des Absenders message = ReadByte(udp) ;Anhand von diesem Byte erkennt der Server was der Client will Select message ;1 = Chatmessage Case 1 name$ = ReadString(udp) ;Wer sendet eine Chatmessage x = ReadByte(udp) ;Der Inhalt der Chatmessage y = ReadByte(udp) ;Nachricht an alle anderen Teilnehmer weitersenden For c.client = Each client ;Jeden Client durchgehen If Not c\name$ = name$ ;Wenn es nicht der Client ist der gerade gesendet hat WriteByte(udp,1) ;Nachrichtentyp 1 senden = Chatmessage WriteString(udp,name$) ;Name weiterleiten WriteByte(udp,x) ;Inhalt weiterleiten WriteByte(udp,y) SendUDPMsg udp,c\ip,c\port ;UDP Message absenden EndIf Next ;Neuer Client ist dem Chat beigetreten Case 2 name$ = ReadString(udp) ;Name des Clients lesen c.client = New client ;Neues client objekt erstellen c\ip = client_ip ;Ip speichern c\port = client_port ;Port speichern c\name$ = name$ ;Name speichern ;Servernachricht ausgeben Print name$ + " ist dem Chat beigetreten." ;Allen anderen Clients bescheid sagen das ein neuer da ist. For c2.client = Each client If Not c2 = c WriteByte(udp,2) ;Nachrichtentyp 2 senden = Client beigetreten WriteString(udp,name$) ;Name weiterleiten SendUDPMsg udp,c2\ip,c2\port ;UDP Message senden EndIf Next ;Client hat die Verbindung getrennt Case 3 name$ = ReadString(udp) ;Clientname auslesen ;Client löschen und allen anderen Clients mitteilen For c.client = Each client If c\name$ = name$ Delete c ;Den Client löschen der die Nachricht gesendet hat Else WriteByte(udp,3) ;Den anderen sagen das ein Client weg geht. WriteString(udp,name$) ;Name weiterleiten SendUDPMsg udp,c\ip,c\port ;UDP Message senden EndIf Next ;Servernachricht ausgeben Print name$ + " hat den Chat verlassen." End Select EndIf Until KeyHit(1) CloseUDPStream(udp) ;UDP Stream schliessen End client: Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() ;Type der die clients speichert Type client Field name$ Field x Field y Field life End Type spieler=LoadImage("spieler.png") SeedRnd(MilliSecs()) ;"Saat" für zufällige zahlen setzen. server_ip$ = "127.0.0.1" ;Ip des Servers server_port = 7142 ;Port des Servers client_name$ =Input("Ihr name: ") udp = CreateUDPStream() ;Stream erstellen If Not udp Then Print "Der UDP Stream konnte nicht erstellt werden." End EndIf ;Am Server den Client anmelden. WriteByte(udp,2) ;Dem Server mitteilen das wir neu dazu gekommen sind. WriteString(udp,client_name$) ;Unseren Namen mitteilen SendUDPMsg udp,INT_IP(server_ip$),server_port ;UDP Message senden Repeat If KeyDown(203) Then x=x-1 If KeyDown(205) Then x=x+1 If RecvUDPMsg(udp) <> 0 ;Wenn Meldung empfangen message = ReadByte(udp) ;Anhand dieses Bytes weiss man was der Server will Select message ;Der Server hat eine Chatmessage von einem anderen Clienten ;an diesen Client weitergeleitet. Case 1 name$ = ReadString(udp) ;Name des sendenden Clients For c.client=Each client c\x = ReadByte(udp) ;Nachricht des sendenden Clients c\y = ReadByte(udp) Next ;Der Server teilt uns mit das ein anderer Client beigetreten ist. Case 2 name$ = ReadString(udp) ;Name des beitretenden Clients c.client = New client ;Ein neues Client objekt erstellen c\name$ = name$ ;Name darin speichern (kann man benutzen für Liste) ;Nachricht ausgeben Print name$ + " ist dem Chat beigetreten." ;Der Server teilt uns mit das ein anderer Client rausgeht. Case 3 name$ = ReadString(udp) ;Name des Clienten For c.client = Each client If c\name$ = name$ Then Delete c ;Diesen Clienten löschen Next ;Nachricht ausgeben Print name$ + " hat den Chat verlassen." End Select EndIf ;Dem Server mitteilen was man gesagt hat. WriteByte(udp,1) ;Dem Server sagen das es sich um eine Chatmessage handelt WriteString(udp,client_name$) ;Den Namen mitteilen WriteByte(udp,x) ;Den Inhalt mitteilen WriteByte(udp,y) SendUDPMsg udp,INT_IP(server_ip$),server_port ;UDP Message senden For c.client = Each client DrawImage spieler,c\x,c\y Next DrawImage spieler,x,y Flip Cls Until KeyHit(1) ;Beim Server den Client abmelden WriteByte(udp,3) ;Dem Server sagen das wir gehen WriteString(udp,client_name$) ;Unser Name senden SendUDPMsg udp,INT_IP(server_ip$),server_port ;UDP Message senden CloseUDPStream(udp) ;Stream schliessen End ;Funktion zum Umwandeln von String IPs in Integer. 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 mfg marius P.S.: Ich hoffe es ist ok wenn ich den code einfach mal verwendet habe. Er ist hier aus dem Forum aus der tutorial sektion Ach ja, und für das spieler.png bild könnt ihr irgend ein bild nehmen. |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group