Type per UDP verschicken

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

DerSpuck

Betreff: Type per UDP verschicken

BeitragMo, Jul 16, 2007 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Möchte ganz gerne von einen Server aus auf einen Client Monster Positionen verschicken. Die Monster sind in Types gespeichert.
Ich lasse den Client eine Meldung schicken und der Server schickt dann die Monster daten. Das klappt aber leider nur mit einen Monster der dann auch noch falsche Daten bekommen hat.

Server:
Code: [AUSKLAPPEN]

For Client.Client = Each Client
If Client\IP = UDPMsgIP(UDP) Then
WriteByte UDP, 2

For Monster.Monster = Each Monster
WriteShort UDP, Monster\PosX
WriteShort UDP, Monster\PosY
SendUDPMsg UDP, Client\IP, Client\Port
Next

EndIf
Next
End Select
EndIf


Client:
Code: [AUSKLAPPEN]

Case 2

For Monster.Monster = Each Monster
Monster\PosX = ReadShort(UDP)
Monster\PosY = ReadShort(UDP)
Next



Denke es liegt an der Schleife... Kriege das Problem leider nicht in griff und hoffe das ich Hilfe bekomme : ) .
MfG DerSpuck Razz
 

Lastsamurai

BeitragMo, Jul 16, 2007 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Case 2

For Monster.Monster = Each Monster
Monster\PosX = ReadShort(UDP)
Monster\PosY = ReadShort(UDP)
Next


Hi,

also das Problem das du nur 1 Monster siehst liegt daran, dass du die Daten jedes Monsters immer wieder überschreibst. Du musst in der Schleife einen neuen Typeeintrag für jedes neue Monster machen.

Code: [AUSKLAPPEN]

Case 2

For Monster.Monster = Each Monster

Monster.Monster = New Monster <----

Monster\PosX = ReadShort(UDP)
Monster\PosY = ReadShort(UDP)
Next




Obwohl ich mir nichtmal sicher bin ob du ne Variable genauso nennen drafst wie das Type selber ^^

MfG. LastSamurai
 

DerSpuck

BeitragMo, Jul 16, 2007 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für deine Antwort... : )

Monster.Monster darf ich die nennen ; )

Und das mit dem New mache ich schon bereits voher.

Code: [AUSKLAPPEN]

For X=0 To MapX
For Y=0 To Mapy
If Map(X,Y,6)>0 Then
Monster.Monster = New Monster
Monster\Name$ = "Ratte"
Monster\Typ$ = "Tier"
Monster\HP = 10
Monster\HPMax = 10
Monster\PosX = X
Monster\PosY = Y
EndIf
Next
Next


Somit weiß der Client am Anfang wo alle stehen, Offline stehen die auch genau richtig. Aber sofort nachdem die ersten Daten angekommen sind, sind die weg. Der Server hat auch die richtigen Positionen noch.. Hab ich mal nachgeprüft.
 

Dreamora

BeitragMo, Jul 16, 2007 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wird so nie funktionieren.

Du musst dir ghosting mechanismen überlegen.


Das heisst: Die Objekte die vom Server verwaltet werden müssen:

1. eine eindeutige ID haben (eine Nummer die kein anderes Objekt dieser Klasse haben darf)
2. Diese ID Steht in allen "Update" und "Create" Paketen drin
3. Der Client erzeugt/updated dann die Types nur noch entsprechend der Pakete.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

DerSpuck

BeitragMo, Jul 16, 2007 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Eindeutige ID? Es gibt nur diese Art von Monstern.. also ratten^^

Also muss ich die Ratten durchnummerieren ?
 

Dreamora

BeitragMo, Jul 16, 2007 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Jepp

Woher will sonst der Client wissen von welcher Ratte er die Position updaten soll? Göttliche Eingabe hilft da meist nix
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

DerSpuck

BeitragMo, Jul 16, 2007 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, Ich probier das mal aus : )

Danke für deine Hilfe. Cool

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group