HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Variable+Wert für anderes Script übergeben (https://hx3.de/editing-scripting-187/variable-wert-fuer-anderes-script-uebergeben-24567/)

Drunken Officer 18.01.2015 17:42

Variable+Wert für anderes Script übergeben
 
Moinsen.

Ich habe ein Script, welches auf das "true" einer Bedingung warten soll. Allerdings möchte ich das Script mehrfach einbauen, so dass ich mit einer lokalen Variable gearbeitet habe, was aber nicht funktionierte.

in der ServerInti:
Code:

DOF_PALADIN_HIDE_1 = false;
DOF_PALADIN_HIDE_2 = false;
DOF_PALADIN_HIDE_3 = false;

[[5164.86,5225.3,0.00157166], 40, 20,DOF_PALADIN_HIDE_1] execVM "fnc\dof_fnc_fillhouse_hide.sqf";
[[....], ..., ...,DOF_PALADIN_HIDE_2] execVM "fnc\dof_fnc_fillhouse_hide.sqf";
[[....], ..., ...,DOF_PALADIN_HIDE_3] execVM "fnc\dof_fnc_fillhouse_hide.sqf";

In dem Script war folgendes gedacht, was aber nicht funktioniert
Code:

... bla bla...
_var = _this select 3;
...
...
waituntil {sleep 5; _var};
...

Das Script funktioniert wenn z.B.
waituntil {sleep 5; DOF_PALADIN_HIDE_1};
genutzt wird. Also die Variable an sich.
Damit ist aber der Mehrfacheinsatz nicht mehr gegeben.

Deswegen meine Frage:
Wie kann ich eine globale Varibale so übergeben, dass ich diese Variable + Wert in einem Script mit einer anderen Variable nutzen kann. Das Ganze läuft alles Serverseitig. Es muss nichts an die Clienten übergeben werden

Prüfe ich _var, bekomme ich entweder true oder false.

Saint 18.01.2015 18:35

Moin DOF,

vielleicht kann man das mit setVariable machen?

PHP-Code:

_myvar setVariable ["myPublicVariable"123true]; 


Moerderhoschi 18.01.2015 21:37

@Drunken Officer ich werde aus deinem Beitrag nicht schlau^^ Wie ist das denn mit dem Mehrfach Einsatz von Dir gemeint? Klappt es nicht die Variable DOF_PALADIN_HIDE_1 wieder auf FALSE zu setzen nach deinem waituntil {sleep 5; DOF_PALADIN_HIDE_1};

Kannst Du die Frage etwas detaillierter stellen?

gruß
hoschi

Drunken Officer 18.01.2015 21:47

Also die Variablen werden definiert, wie oben beschrieben.
Die Scripte werden geladen

Jetzt wird z.B. DOF_PALADIN_HIDE_1 auf true gesetzt, wenn eine Zielperson ausgeschaltet wurde.

In dem eigentlichen Hide-Script funktioniert die Waituntil Funktion nur, wenn ich die Variable direkt einsetze.
waitUntil {sleep; DOF_PALADIN_HIDE};

Wie du oben gelesen hast, habe ich aber mehrmals vor, diesen Hinterhalt zu vollziehen.
Ich bekomme einfach nicht hin, die Variable zu übergeben.
_var = _this select 3;

er sagt mir nur true oder false. (was ja im Grunde auch stimmt).

Dewegen, wie kann ich eine Übergabe gestalten, das ich einem Script sage, warte bis die im Array genannte Variable true ist.

Edit:
Verdammt du hast recht, ich kann auch einfach die Variable wieder auf false setzen. DANKE DANKE, manchmal sieht man den Wald vor lauter Bäumen nicht

Moerderhoschi 18.01.2015 22:07

Wenn Du Variablen an ein Script uebergibst, dann werden im Endefekt nur die Werte uebergeben, nicht die Variablen selbst.

Ein Beispiel:

Code:

myVar1 = 'Baerbel'
myVar2 = false

[name player, myVar1, 123, myVar2] execVM "meinScript.sqf"

meinScript.sqf
Code:

_v1 = _this select 0; // 'Moerderhoschi'
_v2 = _this select 1; // 'Baerbel'
_v3 = _this select 2; // 123
_v4 = _this select 3; // false

Wenn Du nun die globale Variable myVar1 / myVar2 aenderst, hat dies keinen Einfluss auf die uebergebenen Werte in den Scripten. Die uebergebenen Variablen sind immer nur die Werte zum Zeitpunkt der Uebergabe.

Eine Moeglichkeit waere also nun die Variablennamen, auf die Du pruefen willst, als String zu uebergeben.

[..., ..., ..., 'DOF_PALADIN_HIDE_1'] execVM "meinScript.sqf";

meinScript.sqf
Code:

.
.
_v4 = _this select 3; // String 'DOF_PALADIN_HIDE_1'

waitUntil {sleep 1; call compile _v4}; // Hier wird nun auf die Variable DOF_PALADIN_HIDE_1 geprueft

hier wird nun also auf die Variable, die als String uebergeben wurde, geprueft und sollte dein gewuenschtes Ergebnis liefern.

gruß
hoschi

Drunken Officer 21.01.2015 17:29

Sauber! Jao, der gute compile Befehl machts mal wieder möglich. Danke dir


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.

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 117 118 119