PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable an Server geben zum Zusammenrechnen


Nokman
06.04.2014, 22:06
Guten Tag,

Ich sitze an einen Problem wo mir der Anfang fehlt. Folgendes habe ich vor

Ich möchte das ein Spieler im MP mit einer Anderen Interagiert und danach die Zahl die er ausgewählt hat zb 8 in eine Variable übergeben wird um dann an denn Server zu senden.

P1 wählt 8
P2 wählt 6
P3 wählt 2

NPC gibt: Gesamt 16 aus

Es sollte aber nicht Zwangsläufig beim NPC nur die Auswahl geben sondern eben die „selbst“ ausgewählte Zahl in einer Variable stehen die dann Erst vom Server mit denn von allen Anderen Spielern ausgerechnet wird. Im Grunde das der Server zu einen Zeitpunkt sagt „gebt mir alle eure Variable _playerzahl und rechnet die dann zusammen.“

Die Idee dahinter ist das jeder Spieler einen NPC eine Zahl mitteilt und diese Zusammengerechnet werden auf denn Server um am ende eine Gesamtzahl auszugeben.

Nach den Punkt wer am nächsten an der Gesamtzahl ist Gewinnt.

Jetzt kommt es zu meinen Problem wie übertrage ich die Zahl von jeden Einzelnen Spieler an denn Server du lasse Sie zusammenrechnen?

Über einen Hilfe zum Start wäre ich sehr Dankbar.

Vienna
07.04.2014, 07:55
Initialisieren beim Server: Zahl = 0; Gesamt = 0;


Senden bei Clients: Zahl = 10; publicVariableServer "Zahl";

Fürs Senden muss eine globale Variable (ohne Unterstrich) verwendet werden. Mit dem Befehl publicVariableServer wird die Variable mit ihrem Wert an den Server gesendet.


Empfangen beim Server: if (Zahl != 0) then {Gesamt = Gesamt + Zahl; Zahl = 0};

Empfänger mit Auslöser:


Achse A und B: 0
Aktivierung : Keiner | Mehrfach
Countdown : 0 - 0 - 0
Bedingung : Zahl != 0
Bei Akt. : Gesamt = Gesamt + Zahl; Zahl = 0


Ist zu hoffen, dass sich die Sendungen der Spieler nicht überscheiden. Sonst müsstest du für jeden Spieler eine eigene Variable nehmen und einen eigenen "Empfänger" für jede Variable.

Nokman
07.04.2014, 10:21
Viel Dank.

Dein Gedankengang ist nun dahinter das ich die Zahl in der Variable Zahl Speichere.

Die Zahl setzt der Spieler größer als 0 und übergibt sie an denn Server.
Wenn die Zahl größer als 0 wird der Server mit Hilfe eines Auslösers welcher aller 2 Sekunden (Reaktionszeit eines Auslösers) es Zusammenrechnen.

Die Sorge wie du es selber angesprochen hattest ist was passiert wenn ein Spieler die Zahl überträgt Obwohl der Server noch nicht zusammengerechnet hat 2 Sekunden ist sehr lang ;)

Die Idee welche mir dazu einfällt ist eine Schleife beim Spieler aufzurufen die Überprüft ob die Zahl != 0 ist.


while{Zahl != 0} do {
if (Zahl == 0) exitWith { publicVariableServer "Zahl"; };
sleep 1;
};

Bei der Schleife komme ich allerdings doch in die Zwickmühle das Die Zahl niemals 0 sein kann wenn der Spieler sie auf den PC Definiert hat? Ich müsste da doch abfragen ob Die auf denn Server 0 ist oder?

Vienna
07.04.2014, 13:14
Das ist sicher eine schnellere Empfänger-Routine als ein Auslöser:


Aktiv = true;
Zahl = 0;
Gesamt = 0;
while {Aktiv} do
{
waitUntil {Zahl != 0 or !Aktiv};
Gesamt = Gesamt + Zahl;
Zahl = 0
};

Mit setzen von Aktiv=false wird die Routine beendet.