Forum: Netzwerke
Delphi
by Flogo,
12. Dez 2004
hmm ok dann musst du wohl die ID des Hosts im Client speichern.
Die Möglichkeit, die mir dazu einfällt ist beim starten des Clients die Eigenschaft Players mit einer for-Schleife und der Funktion isHost zu durchsuchen und die richtige ID zu Speichern.
Du solltest dir aber mal überlegen, ob du die Auswertung nicht auch im Client machen kannst.
Was genau willst du denn auswerten?
Forum: Netzwerke
Delphi
by Flogo,
12. Dez 2004
Das Problem ist vor allem, dass du deine Nachricht nur an dich selbst (LocalPlayer) und nicht an den Host schickst.
Wenn du die Nachricht nicht im Server auswerten willst, sondern nur an alle anderen Mitspieler weiterschicken willst (wie in deinem Programm) kannst du auch auf den Server verzichten und die Nachricht einfach an DPID_ALLPLAYERS schicken.
Außerdem solltest du dir mal in der...
Forum: Netzwerke
Delphi
by Flogo,
11. Dez 2004
Soweit ich weiß hat der Sender (From) eine Eigenschaft ID mit der du genau feststellen kannst, welcher Spieler die nachricht geschickt hat. Wenn das nicht klappt musst du eben selber so eine ID (beim einloggen vom Server aus) vergeben und mit der Nachricht mitschicken.
Im 1. Fall wäre das dann
From.IDund im 2.Fall so etwas wieTSend(Data^).ID
Forum: Netzwerke
Delphi
by Flogo,
9. Dez 2004
Im Prinzip ist das ja sogar einfacher, als das mit einem Programm zu regeln.
Zuerst erstellst du dir zwei Programme Server und Client
Im Client läuft das eigentliche Spiel. Wenn sich bei einem Client irgendwas ändert (z.B. Die Position der Spielfigur) schickt er diese Änderung an den Server. Der wertet diese Meldung aus und schickt sie an alle Clients weiter, die das interessieren könnte. Diese...
Forum: Netzwerke
Delphi
by Flogo,
8. Dez 2004
Das StrLCopy brauchst du nicht. Das braucht man nur um einen String zu verschicken. (Ein String hat keine feste Länge/Größe und wird deshalb als Array of Char übergeben. Dazu muss dann auch noch die Länge übergeben werden um den String wieder auszulesen)
In deinem Fall müsstest du die Position mit
TSend(Data^).X auslesen können
Forum: Netzwerke
Delphi
by Flogo,
8. Dez 2004
Genau das (Der MessageType) fehlt in deinem Code noch.
Versuch doch mal mein Beispiel (Das, das ich zuletzt gepostet hab) und wenns nicht klappt, dann schreib mal den Fehler, der ausgegeben wird.
Forum: Netzwerke
Delphi
by Flogo,
7. Dez 2004
Noch was:
Ich denke wenn du keine dynamischen Arrays (oder Strings, ...) drinnen hast, kannst du auch auf das GetMem verzichten. Ich hoffe mich korrigiert jemand wenn ich mich irre.
procedure SendeKoordinaten(aX,aY: Integer);
var
Msg: TDXPositionsMessage; // kein '^' mehr
begin
Msg.MessageType := DXPOS_MESSAGE; // vorher unter "const" einführen
Msg.X := aX;
Msg.Y := aY;
Forum: Netzwerke
Delphi
by Flogo,
7. Dez 2004
Als Antwort auf deine PN (dann könnens auch andere lesen):
Das Versenden wäre dann:
procedure SendeKoordinaten(aX,aY: Integer);
var
Msg: ^TDXPositionsMessage;
MsgSize: Integer;
begin
Forum: Netzwerke
Delphi
by Flogo,
7. Dez 2004
Der Record TDXChatMessage ist der Typ, der zwischen Client und Server verschickt wird.
die Grundstruktur ist einfach nur:
type
TDXChatMessage = record
MessageType: DWORD;
end;
Der MessageType gibt an, welche Nachricht grade verschickt wird / ankommt.
Forum: Netzwerke
Delphi
by Flogo,
6. Dez 2004
Bei den Samples von DelphiX sind auch 2 Chats dabei. Das sollte dir auch ein wenig beim Einstieg helfen