PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : setdate nur auf Host-PC


hypercop
27.04.2009, 19:19
Folgendes Problem:

Ein Object besitzt einen Aktionmenueeintrag. Wenn das Actionmenue aufgerufen wird, startet es ein Script, in welchem das Datum durch setdate [....] verstellt wird. Allerdings funktioniert der setdate-Befehl nur auf dem Host-PC.

Wie bekomme ich es hin, dass der Befehl auch auf den anderen Rechnern funktioniert?

Xeno
27.04.2009, 20:06
Die Skripte die per Action Menü aufgerufen werden, werden nur lokal auf dem Client ausgeführt, der das Menü auch tatsächlich aktiviert hat.

Du musst schon per publicVariable und entsprechenden Maßnamen auf der Empfängerseite (Trigger, addPublicVariableEventhandler) das neue Datum über das Netz an die anderen Clients übertragen.

Xeno

Vienna
27.04.2009, 20:06
In die Init.sqs oder Init.sqf folgende drei Zeilen eintragen:

MeinDatum = [1986, 2, 25, 16, 0];
setDate MeinDatum;
"MeinDatum" addPublicVariableEventHandler {setDate(_this select 1)};

In der letzten Zeile wurde für die Variable "MeinDatum" ein PublicVariableEventHandler aktiviert, der bei den anderen PCs den setDate Befehl abarbeitet.


Immer wenn du jetzt in MeinDatum ein neues Datum eingibst und mit dem Befehl "publicVariable" ins Netz überträgst, wird auch an allen anderen PCs das neue Datum eingestellt.

z.B. du änderst auf deinem PC so das Datum:

MeinDatum = [1986, 2, 26, 22, 35];
setDate MeinDatum;
publicvariable "MeinDatum";

Durch die letzte Zeile und den aktivierten PublicEventHandler für die Variable "MeinDatum" wird auch auf den anderen PCs jetzt das Datum umgestellt.

Link: addPublicVariableEventHandler - Bohemia Interactive Community (http://community.bistudio.com/wiki/addPublicVariableEventHandler)

hypercop
28.04.2009, 11:39
Danke für die Antworten. Vienna, dein Vorschlag klappt prima. Danke.

In dem Skript, welches ich über addAction aufrufe, kommen noch ein paar andere Befehle vor, welche nur auf dem Host-Rechner ausgeführt werden. Gibt es eine möglichkeit, dass mein gesamtes Skript auf allen Rechner ausgeführt wird?

Vienna
28.04.2009, 19:21
Ein Skript übertragen geht nicht, aber ein Skript aufrufen. Das kannst du z.B. an die Datumsänderung anhängen.

"MeinDatum" addPublicVariableEventHandler {setDate(_this select 1);[] exec "Skriptname.sqs"};

Anstelle des Skriptaufrufs kannst du auch weitere Befehle anhängen. Du musst sie nur mit ; trennen.