30.10.2011, 15:06 | #21 (permalink) |
Registriert seit: 01.06.2009
Beiträge: 103
|
Das ist auch kein Problem. Du startest beim statement für das öffnen des Tors halt ein Script. Für das schliessen des Tors brauchst Du ja keines, da es dort ja erwünscht ist, dass die Ampel gleich auf rot springt. Bei der Class zum öffnen des Tors: Code:
statement = "this execVM "Name_Deines_Addons_ohne_.pbo_am_Schluss\Torauf.sqf""; Torauf.sqf Code:
_this animate ["door_pb_aussenhof", 1]; waitUntil {(_this animationPhase "door_pb_aussenhof") == 1}; _this setobjecttexture [0, "\polizei\grafik\lichtgruen.paa"]; Natürlich müsst die Textausgabe auch in einem von einer Objekt- Config aus aufgerufenem Script ohne Einschränkungen funktionieren. Wieso meinst Du dass das nicht klappt? |
30.10.2011, 17:14 | #22 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Es funktioniert!
Danke Asso-Loki. Deinen Gedankengang hatte ich schon ne Weile, nur hatte ich in der *.sqf mit "_this select 0;" gearbeitet. Das war mein Fehler. Im EventHandler ja, im statement nein. Dank deinem Post habe ich meinen Fehler gefunden. Also - Selection wird auf rotgesetzt - *.sqf im statement warte bis animation 1 ist und setzt dann grün - beim schliessen wird sofort mit setobjecttexture-befehl auf rot gesetzt. Geändert von Drunken Officer (30.10.2011 um 17:54 Uhr). |
31.10.2011, 22:34 | #24 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Ich habe noch ne Frage.
Kann man irgendwie mehr als 10 selektionen nehmen? Ich habe das erlernte gleich mal als Anzeige genommen, ob die Zellen zu oder auf sind. Leider benötige ich jetzt genau 11 selektionen. Allerdings handelt es sich um 2 Ojekte. Beide haben in der config.cpp eine eigene Klasse. Ebenso in der Model.CFG. Ich habe versucht mit "_this select 1" zu arbeiten. Igendwie habe ich den Befehl noch nicht ganz verstanden. Die Teile von 1 - 10 funktionieren. Gruß |
01.11.2011, 08:27 | #25 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
_this enthält üblicher Weise Daten aus einer Programmroutine oder die Übergaben in eine Programmroutine. Es kann eine einzelner Wert oder mehrere Werte in einem Array sein.
Wenn du wissen willst was in _this enthalten ist, dann lasse es dir anzeigen. z.B. in einem Skript mit: player groupChat format["%1",_this]; Einen einzelnen Wert übernimmst du in eine Variable mit: _Variable = _this; Sind mehrere Werte in einem Array vorhanden dann mit: _Variable = _this select 0; 0 ist hier der Zeiger auf den ersten Wert im Array. |
06.11.2011, 11:22 | #26 (permalink) |
Registriert seit: 01.06.2009
Beiträge: 103
|
Nach meinem Info-Stand kann ein Modell nur 10 Selektionen haben. Wenn Dein "Knast" aus zwei Modellen besteht, können Beide jeweils 10 Selektionen haben.
Es gibt verschiedene Variablen- Typen (z.B. Zahl, Text, Object usw.). Alle diese Variablen- Typen können jeweils nur einen einzelnen Wert des entsprechenden Daten- Types enthalten. Mit Ausnahme des Variablen- Typ "Array". Dieser Variablen- Typ kann mehrere Werte enthalten, welche jeweils durch Kommas getrennt sein müssen. Ein Array muss immer von eckigen Klammern umschlossen sein "[]". Die einzelnen Werte in einem Array dürfen verschiedenen Daten- Typen angehören (Zahlen, Text, Objecte, usw.). Auch Arrays dürfen als Werte innerhalb eines Arrays verwendet werden. Beispiel für ein Array: Code:
TestArayy= [1,"text",Location,[x,y,z],Objekt]; Variablen werden definiert / initialisiert, indem man einen beliebigen Namen vergibt und diesem einen Wert zuweist. Es gibt globale Variablen welche - egal wo sie definiert / initialisiert wurden - von überall innerhalb des Spiels angesprochen werden können Code:
meineVariable= 10 Code:
_meineVariable= 10 Das lokale "_this" kommt wieder eigentlich nur in Scripten und Funktionen vor und enthält den Parameter der beim Aufruf des Scriptes / der Funktion übergeben wird. Wird dem Script / der Funktion nur ein einzelner Wert übergeben so lautet die (effizienteste) Schreibweise Code:
Übergabewert execVM "script.sqf"; Sollen dem Script mehrere Werte übergeben werden, so muss man diese Werte in einem Array übergeben und die Schreibweise lautet Code:
[Übergabewert1, Übergabewert2] execVM "script.sqf"; Code:
_this select Index-Nr. Bei vielen Leuten hat es sich eingebürgert, beim Aufruf eines Scripts / einer Funktion den Parameter immer als Array zu übergeben, auch wenn es sich nur um einen einzelnen Wert handelt Code:
[Übergabewert] execVM "script.sqf"; Mit Viennas Tipp kannst Du meinen Theorie- Roman wunderbar in der Praxis überprüfen. Wenn Du in einem Script nicht nur wissen möchtest, welche Daten übergeben wurden, sondern auch welchen Daten- Typen diese Daten entsprechen, so kannst Du Dir das z.B. so im Script ausgeben lassen: Code:
player groupChat format["%1", (typeName _this)]; |
06.11.2011, 13:26 | #27 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Diese Werte werden auch aus Arma Routinen über _this in Skripte oder Code übergeben. z.B. in addAction oder addEventHandler Es gibt auch Arma Routinen die namentliche lokale Variable übergeben. z.B. bei onMapSingleClick die Variablen _pos, _units, _shift und _alt. |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|