Also, in einem Spiel von mir, dass man per Netzwerk spielen soll, kann man mittleweile ähnlich wie in wc3, cs o.ä. per Enter-Taste ein Eingabefeld öffnen, Nachrichten eingeben und per Enter an den anderen Spieler wegschicken.
Dieser soll dann die Nachricht für ein paar Sekunden(mit einem label) angezeigt kriegen, nach Ablauf der Zeit soll das label verschwinden.
Das Problem ist nur, dass wenn der 2. Spieler das Label noch sieht, und der erste Spieler etwas macht (einheit bewegen o.ä.), dass dann der befehl, der über das netzwerk gesendet wird (einehit von a nach b bewegen) nciht bearbeitet wird.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure tmain.settext(S:string); begin mchatlog.lines.add('Spieler 2: '+s); mtext.caption:=S; mtext.visible:=true; delay(5000); mtext.visible:=false; mtext.caption:='';; end |
mtext ist das label, in dem die textausgabe erfolgen soll.
Die prozedur delay sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure tmain.delay(time:integer); var start:int64; begin start:=gettickcount; while gettickcount-start<time do application.processmessages; end; |
falsch weiterer code gewüscnht wird, liefer ich den nach. das probnlem tritt übrigens auch auf, wenn man zweri nachrichten schnell hintereinander sendet.
ich könnte als mögl lösung, weitere aktionen des spielers unterrbinden, wenn er eine nachricht schreibt, aber das wäre doch eine ziemlich unschöne lösung