Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 05.01.2012, 01:09   #1 (permalink)
10 Jahre hx3
500 Beiträge
 
Registriert seit: 20.11.2006
Ort: Hannover
Alter: 53
Beiträge: 897
Standard Zeit ändern während Spiel

Kann mir jemand sagen was ich in einen Auslöser schreiben muss um diese
"skiptime" Funktion MP funktionsfähig zu machen.
Lt. kju auf BIS Scripting Command Seite solls wohl für JIP-ler und auch Client-Server seitig Probleme geben ?

Zitat:

kju:

I cannot confirm this for OA 1.60 beta (85889):

Zitat:

BIS:
MP: Even though the immediate effect of skipTime is only local, the new time will propagate through the network after 30 seconds or so.

Instead the date, which includes time, is synced automatically for new JIP clients - NOT for present instances. So one has to apply skipTime on all instances in MP (server + all present clients).

(Das fett hervorgehobene könnte auch Suaheli sein. Wüsste nichtmal ansatzweise wie.)
Schönen Dank

Geändert von Crisis (05.01.2012 um 01:13 Uhr).
Crisis ist offline   Mit Zitat antworten
Alt 05.01.2012, 02:48   #2 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Erstelle einen PublicVariableEventHandler für die Variable NeueZeit:

"NeueZeit" addPublicVariableEventHandler {setDate NeueZeit}

Im Editor für den Server/Host einen Auslöser um z.B. nach 10 Minuten die Zeit um 1,5 Stunden vorzustellen:

Bedingung: isServer and time > 600

Bei Akt: skipTime 1.5; NeueZeit = date

date enthält das Datum und die aktuelle Zeit! Ändert sich die Variable NeueZeit, dann wird das vom EventHandler an die PCs übertragen und dort mit setDate synchronisiert.

http://community.bistudio.com/wiki/date


Für JIP musst du dafür sorgen dass date vom Server an den Neueinsteiger übertragen wird. Das geschieht über onPlayerConnected. Müsste genügen wenn du dort im Skript NeueZeit = date anführst, dann wird gleich bei allen Spieler die aktuelle Zeit neu "aufgefrischt".

Mehr über onPlayerConnected kannst du hier nachlesen: Variablenwert nach rejoin
Vienna ist offline   Mit Zitat antworten
Alt 05.01.2012, 13:35   #3 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Eigentlich müsste bei JIP das aktuelle Datum und die Zeit automatisch übernommen werden. Teste das einmal.
Vienna ist offline   Mit Zitat antworten
Alt 05.01.2012, 15:24   #4 (permalink)
10 Jahre hx3
500 Beiträge
 
Registriert seit: 20.11.2006
Ort: Hannover
Alter: 53
Beiträge: 897
Standard

Danke dir, Vienna. Habe allerdings mit dem Wort "erstelle" so meine Probs.

Ist "erstelle==setze gamelogic uind schreibs dort in die init" ? Steht auch oft im "Guide"; genau das gleiche Fragezeichen.

Platziere, setze dies/jenes..ist ja im Editor zu finden, auswählbar, was Handfestes. Aber dieses erstelle ist für mich meist nebulös.

Wenns für dieses "erstelle" ne immergültige Aussage gibt, gehört die in jede Editinghilfe gepinnt. Eine Aussage dahingehend fürn Doofen wäre hilfreich.

Danke schön, und fühl dich bitte nicht angemault. Nicht liegt mir ferner.
Crisis ist offline   Mit Zitat antworten
Alt 05.01.2012, 17:49   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Ich dachte du weißt bereits wofür z.B. die init.sqf ist. Lade dir einmal diese Anleitung runter und arbeite sie durch:
Armaholic - Basic SQF-Scripting guide - Editing References


Jetzt zu deinem Zeitsprung

Wie du einen Auslöser für skipTime für den Server/Host erstellst, habe ich ja schon beschrieben.

Wie folgt kannst du auch den Eventhandler mit einem Auslöser initialisieren:

Aktivierung: Keine Einmal

Bedingung: true

Bei Akt.: NeueZeit=date; "NeueZeit" addPublicVariableEventHandler {setDate NeueZeit}

Diese beiden Auslöser sollten reichen, wenn du einen Zeitsprung für MP erstellen willst. Wenn die Zeit bei JIP automatisch angepasst wird, dann wars das schon.

Für einen weiteren Zeitsprung bauchst du nur einen weiteren skipTime Auslöser erstellen. Das geht mit dem üblichen Kopieren und Einfügen. Dann ist in der Kopie nur noch die Zeit zu ändern.
Vienna ist offline   Mit Zitat antworten
Alt 05.01.2012, 18:47   #6 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Um mich hier mal einzumischen:
Das funktioniert so nicht. Damit der pb evh gefeuert wird muss deine Variable erstmal public gemacht werden. Und ein JIP wird damit auch nicht versorgt. Und bedenke das der Code bei jedem Client aber nicht beim Server ausgelöst wird! (JIP)

Einem JIP'ler kannst du dagegen die Zeit dann recht einfach übergeben indem die Variable bei connecten einfach erneut Public gemacht wird.


Grüße

p.s.: sollte deine Variante getestet bereits funktionieren betrachte meinen Einwurf als hinfällig und das BIS Wiki als lückehaft )
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 05.01.2012, 19:41   #7 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Das ist logisch gedacht, wie es eigentlich funktionieren müsste.

Publik ist die Variable, weil sie über den Auslöser bei allen initialisiert wird. (wobei bei dieser Initialisierung anstelle date auch 0 genommen werden könnte).

Zitat von Vienna Beitrag anzeigen

Bei Akt.: NeueZeit=date; "NeueZeit" addPublicVariableEventHandler {setDate NeueZeit}

Und nicht die Clients, sondern der Server "feuert" eine Änderung übers Netz.

Zitat von Vienna Beitrag anzeigen

Bedingung: isServer and time > 600
Bei Akt: skipTime 1.5; NeueZeit = date


Ich verstehe den PublicVariableEventHandler so, dass der EventHandler auf einen PC, bei dem die Variable geändert wird, diese Änderung wie mit publicVariable übers Netz sendet. Bei den Empfänger PCs wird diese Variable aktualisiert und der Codeteil ausgeführt.

Verstehe ich da was falsch?
Vienna ist offline   Mit Zitat antworten
Alt 05.01.2012, 23:33   #8 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Zitat:

Verstehe ich da was falsch?

Nachdem eine Variable public gemacht wurde wird der pb evh gefeuert (von wem auch immer, das bestimmst du).
Wenn der pb evh gefeuert wurde wird bei allen Maschinen der Code abgearbeitet außer bei der Maschine welche den pb evh gefeuert hat. In dem Code werden üblicherweise natürlich auch die Variablenänderungen übergeben. (hätte sonst auch wenig Sinn).

http://community.bistudio.com/wiki/a...leEventHandler


Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!

Geändert von Pfandgiraffe (05.01.2012 um 23:36 Uhr).
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 06.01.2012, 02:38   #9 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Danke für die Information. Dann ist der PublicVariableEventHandler nur ein "Empfänger". Ich war der Meinung, er "sendet" auch, sobald die Variable einen neuen Wert hat.

So muss wie üblich die Variable nach dem Ändern mit publicVariable übertragen werden.


Der Auslöser aus Post #2 muss nun so aussehen:

Aktivierung: Keine Einmal
Bedingung: isServer and time > 600
Bei Akt: skipTime 1.5; NeueZeit = date; publicVariable "NeueZeit"


Dass beim JIP das aktuelle Datum und die Zeit vom Server/Host nicht automatisch vom Neueinsteiger übernommen wird, ist schon seltsam.

Dann sieht der Initialisierungs-Auslöser jetzt so aus:

Aktivierung: Keine Einmal
Bedingung: true
Bei Akt.: NeueZeit=date; "NeueZeit" addPublicVariableEventHandler {setDate NeueZeit}; if (isServer) then {onPlayerConnected "NeueZeit = date; publicVariable ""NeueZeit"" "}

Ist jetzt recht verwirrend, darum nochmals die beiden Auslöser:
Vienna ist offline   Mit Zitat antworten
Alt 06.01.2012, 08:44   #10 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Der 2. Auslöser sollte so aussehen:

Aktivierung: Keine, Einmal
Bedingung: isServer
Bei Akt.: "NeueZeit" addPublicVariableEventHandler {setDate NeueZeit}; onPlayerConnected "NeueZeit = date; publicVariable ""NeueZeit"" ";

Der pb evh muß nur einmal (vom Server) gefeuert werden.

Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 06.01.2012, 09:08   #11 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:46 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 06.01.2012, 10:15   #12 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Zitat:

*deleted*

Das mach ja nicht ich sondern Vienna zum besseren Verständniss für Crisis. Und ich schreibe das auch als Code. Aber im Bis Wiki steht es als String und beides funzt und man muss ja nicht mehr verwirren als nötig.


Zitat:

*deleted*

Das stimmt auch. Aber du weist doch: sicher ist sicher bei armA!


Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!

Geändert von Xeno (03.01.2014 um 09:46 Uhr).
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 06.01.2012, 10:47   #13 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Also überträgt der publicEventHandler nicht nur den Wert der Variablen zu den PCs, sondern er initialisiert dort die Variable und führt auch den Code aus, ohne dass die anderen PCs den publicEventHandler oder die Variable haben müssen. Das ist von Vorteil, weil so Variableerstellen und Codeändern mit diesem EventHandler einfach ist.

Der Code in {...} anstelle von "..." funktioniert leider nicht bei allen EventHandlern.

Crisis kann ja testen, ob man den zweiten Auslöser überhaupt weglassen kann oder ob er nur noch für skipTime bzw. für onPlayerConnected notwendig ist.

Sollte der zweite Auslöser überflüssig sein, dann braucht der erste nur noch so aussehen:

Aktivierung: Keine Einmal
Bedingung: isServer and time > 600
Bei Akt: skipTime 1.5

Das ist das Irre an Arma, dass man oft ernst über Versuch und Irrtum weiß wie was richtig anzuwenden ist.
Vienna ist offline   Mit Zitat antworten
Alt 06.01.2012, 12:52   #14 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

Zitat von Vienna Beitrag anzeigen

Also überträgt der publicEventHandler nicht nur den Wert der Variablen zu den PCs, sondern er initialisiert dort die Variable und führt auch den Code aus, ohne dass die anderen PCs den publicEventHandler oder die Variable haben müssen. Das ist von Vorteil, weil so Variableerstellen und Codeändern mit diesem EventHandler einfach ist.

*deleted*

Zitat von Vienna Beitrag anzeigen

Der Code in {...} anstelle von "..." funktioniert leider nicht bei allen EventHandlern.

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:47 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 06.01.2012, 16:10   #15 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Zitat von Xeno Beitrag anzeigen

*deleted*

Ja, und auch alle Hohei Evos!
zu { } vs. " ".
@Vienna, Xeno meinte damit den Befehl onplayerconnected, nicht die evh's.


Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen!

Geändert von Xeno (03.01.2014 um 09:47 Uhr).
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 06.01.2012, 18:34   #16 (permalink)
10 Jahre hx3
500 Beiträge
 
Registriert seit: 20.11.2006
Ort: Hannover
Alter: 53
Beiträge: 897
Standard

Die Bedingung isServer and time > 600 kann ich aber auch auf this lassen, wenn ichs so nicht brauche ?Oder dann was Spezielles , if is server oder sowas ?Der Auslöser wird durch Anwesenheit ausgelöst. Kann mich da hinbeamen, dank VTS.
Crisis ist offline   Mit Zitat antworten
Alt 06.01.2012, 20:21   #17 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Crisis, ein Auslöser mit Bedingung this ist natürlich auch möglich. Bei Akt.: dann z.B. skipTime 1.5


Psychobastard und Xeno, irgendwas stimmt hier nicht.

Zitat von Xeno Beitrag anzeigen

*deleted*

Also muss der PvEH auf allen PCs vorhanden sein, bei denen der Code ausgeführt werden soll. Beim auslösenden PC müsste die Codeausführung separat erfolgen.

Zitat von Psychobastard Beitrag anzeigen

Der 2. Auslöser sollte so aussehen:

Aktivierung: Keine, Einmal
Bedingung: isServer
Bei Akt.: "NeueZeit" addPublicVariableEventHandler {setDate NeueZeit}; onPlayerConnected "NeueZeit = date; publicVariable ""NeueZeit"" ";

Der pb evh muß nur einmal (vom Server) gefeuert werden.

Grüße

So ist ja der PvEH nur beim Server vorhanden? Um den PvEH auf allen PCs zu installieren, ist für diesen Initialisierungs-Auslöser als Bedingung true erforderlich.

Geändert von Xeno (03.01.2014 um 09:47 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 06.01.2012, 21:41   #18 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 46
Beiträge: 1.927
Standard

Ich würde den addPublicVariableEventHandler in die init.sqf schreiben. So haben ihn alle Clients und der Server. Und die entsprechende Publicvariable dann auf dem Server auslösen... zack das wars...
__________________
Buliwyf ist offline   Mit Zitat antworten
Alt 06.01.2012, 22:42   #19 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Der "Initialisierungs-Auslöser" ersetzt in diesem Beispiel die Init.sqf. Ich wollte das ohne Skript lösen. Dein Vorschlag entspricht dem meinen aus Post #9.
Vienna ist offline   Mit Zitat antworten
Alt 28.04.2014, 09:53   #20 (permalink)
Newbie
 
Benutzerbild von Raptile4ever
 
Registriert seit: 20.03.2008
Ort: Karlsruhe
Alter: 33
Beiträge: 46
Raptile4ever eine Nachricht über ICQ schicken Raptile4ever eine Nachricht über MSN schicken
Standard

Hallo Leute,

ich habe ein Server mit DayZ Epoch Mod und auch das Admintool vom Phönix und möchte da gerne im Menü die Zeit im Spiel als Admin ändern. Das Menü ist schon vorhanden nur habe ich keine Ahnung bzw. unter Google finde ich auch nicht wirklich ein Script das Funktioniert.

Nun meine frage hier bei euch, weiss jemand wie das genauer funkioniert und hat auch ein Time Change SQF für mich vorhanden und würde es mir freiwillig überreichen ?



MfG
RaPiD
Raptile4ever ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ArmA II Probleme im Spiel und Patchen Basti1254 Technische Fragen & Probleme 9 20.10.2011 01:41
Helikopter landet nicht nach gewünschter Zeit. fro0l Editing & Scripting 4 26.03.2011 14:16
Spiel ruckelt nach einiger Zeit ,wird unspielbar doc.brown Technische Fragen & Probleme 32 09.11.2010 19:10
vergangene Zeit in einem Script Pfandgiraffe Editing & Scripting 2 10.10.2010 16:46
Absturz und Neustart des PCs mitten im Spiel Lt. Fawkes Technische Fragen & Probleme 39 13.08.2010 00:33


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116