![]() |
#1 (permalink) |
![]() ![]() Registriert seit: 20.11.2006
Ort: Hannover
Alter: 58
Beiträge: 902
|
![]()
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 ? (Das fett hervorgehobene könnte auch Suaheli sein. Wüsste nichtmal ansatzweise wie.) Schönen Dank Geändert von Crisis (05.01.2012 um 00:13 Uhr). |
![]() |
![]() |
#2 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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 |
![]() |
![]() |
#4 (permalink) |
![]() ![]() Registriert seit: 20.11.2006
Ort: Hannover
Alter: 58
Beiträge: 902
|
![]()
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. |
![]() |
![]() |
#5 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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. |
![]() |
![]() |
#6 (permalink) |
![]() ![]() |
![]()
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! ![]() ___<<<A3 Wounding System>>>___ |
![]() |
![]() |
#7 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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). Und nicht die Clients, sondern der Server "feuert" eine Änderung übers Netz.
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? |
![]() |
![]() |
#8 (permalink) |
![]() ![]() |
![]() 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! ![]() ___<<<A3 Wounding System>>>___ Geändert von Pfandgiraffe (05.01.2012 um 22:36 Uhr). |
![]() |
![]() |
#9 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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: |
![]() |
![]() |
#10 (permalink) |
![]() ![]() |
![]()
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! ![]() ___<<<A3 Wounding System>>>___ |
![]() |
![]() |
#12 (permalink) |
![]() ![]() |
![]() Das mach ja nicht ich sondern Vienna zum besseren Verständniss für Crisis. ![]() Das stimmt auch. Aber du weist doch: sicher ist sicher bei armA! ![]() Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen! ![]() ___<<<A3 Wounding System>>>___ Geändert von Xeno (03.01.2014 um 08:46 Uhr). |
![]() |
![]() |
#13 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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. |
![]() |
![]() |
#14 (permalink) |
![]() ![]() Registriert seit: 03.01.2008
Alter: 83
Beiträge: 6.552
|
![]() *deleted* *deleted* Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels. Geändert von Xeno (03.01.2014 um 08:47 Uhr). |
![]() |
![]() |
#15 (permalink) |
![]() ![]() |
![]() 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! ![]() ___<<<A3 Wounding System>>>___ Geändert von Xeno (03.01.2014 um 08:47 Uhr). |
![]() |
![]() |
#16 (permalink) |
![]() ![]() Registriert seit: 20.11.2006
Ort: Hannover
Alter: 58
Beiträge: 902
|
![]()
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.
|
![]() |
![]() |
#17 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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. 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. 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 08:47 Uhr). |
![]() |
![]() |
#20 (permalink) |
![]() |
![]()
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 |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
ArmA II Probleme im Spiel und Patchen | Basti1254 | Technische Fragen & Probleme | 9 | 20.10.2011 00:41 |
Helikopter landet nicht nach gewünschter Zeit. | fro0l | Editing & Scripting | 4 | 26.03.2011 13:16 |
Spiel ruckelt nach einiger Zeit ,wird unspielbar | doc.brown | Technische Fragen & Probleme | 32 | 09.11.2010 18:10 |
vergangene Zeit in einem Script | Pfandgiraffe | Editing & Scripting | 2 | 10.10.2010 15:46 |
Absturz und Neustart des PCs mitten im Spiel | Lt. Fawkes | Technische Fragen & Probleme | 39 | 12.08.2010 23:33 |