Ist eine Einheit spielbar? - Abfrage
Category:Scripting Commands ArmA - Bohemia Interactive Community Muss man da noch einige Sachen wissen oder lesen könne? |
Ich nutze ausschliesslich die Seite... :komisch: ...und bin auf folgenden Befehl gestossen:
switchableUnits :rolleyes: |
Also, das hab ich ehrlich auch gesehen, aber mich irritiert das Array. Was soll das den heißen?
Ich gehe jetzt da von aus, dass ich so was schreiben müsste: ? _x=switchableUnits : goto"Nein"; |
nö mehr so (sqf)
wenn ne bestimmte abfragen wills PHP-Code:
PHP-Code:
|
Ich wollte mit einem Auslöser checken, ob sich in dem Bereich mindestens eine spielbare Einheit befindet. Wenn ja sollen alle Einheiten in diesem Bereich angesprochen werden.
Besser wäre sogar: Nur das ganze Team, indem sich spielbare Einheiten befinden. Eine spielbare Einheit ist auf jeden Fall Teamleader. Aber damit bin ich auch zufrieden: Code:
#Start |
Ok dann einen Trigger auf der Map machen.
Seite einstellen die auslöst und mehrfach einstellen. Einen namen geben zb scanner1 PHP-Code:
|
Liste der Anhänge anzeigen (Anzahl: 1)
Mit dieser Zeile wird für jede lebende spielbare Figur im Auslöserbereich das Skript aufgerufen:
{ if (_x in list TriggerName) then {_x exec "Test.sqs"} } forEach switchableUnits Im Anhang ein Beispiel, welches ein Test-Skript über je einen Auslöser für West und Ost aufruft. |
Cool, danke.
_leadergroup ist nun also die lokale Variable, also alle die in der Gruppe der spielbaren Einheit sind. Mein Problem ist nun: Ich habe noch nie richtig eine SQF-Datei erstellt. Beende ich die Datei auch mit einem "exit"? Kann ich auch mit goto"Punktx" springen? Worauf muss ich so achten? Ich hab nur die Beschreibung der Datei gelesen, also wo zu sie gut ist, Oje ein Beispiel wäre gut. So, zuerst das was ich schon in sqs gemacht habe (es Funktioniert alles prima). Jeder bekommt ein Fallschirm: Code:
#Start aber nun muss an Stelle von _x das _leadergroup hin und alles muss in sqf geschrieben werden. Code:
while {((count switchableUnits) =! 0)} do { _unitscanner=list _scanner; hier zum Beispiel sind es 10 Leertasten vor _unitscanner=... |
Liste der Anhänge anzeigen (Anzahl: 1)
Ich dachte mir, dass du mit SQF-Syntax nicht so vertraut bist. Darum habe ich in meinem Beispiel die Test.sqs für die SQS-Syntax genommen. Im 1. Skript siehst du auch wie du die Liste mit der Gruppe des Leaders bekommst.
Hast du dir das angesehen? Die Zeilen in der Test.sqs ersetzt du durch diese 3 Zeilen: _grp = units group _this _pos = position _this {_f=createVehicle["Parachute",_pos,[],50,"FLY"];_x moveindriver _f} forEach _grp Dann hast du auch deinen Fallschirmabsprung der Gruppe. _pos musst du noch auf deine gewünschte Position ändern. Den Fallschirmabsprung siehst du im 2. Test.sqs im Beispiel in dem Anhang. |
Sorry, sonst lassen wir das erst mal so stehen. Das ist Banane, was ich geschrieben habe.
Ich eröffne neues Thema: Umgang mit SQF-Datein So macht es wenig Sinn, wenn mir alles vorgekaut wird, auch wenn es gut gemeint ist. danke erst mal!:) |
jo klar
|
Achso, ja danke. Dein Beitrag hab ich zu spät besehen.
Ja ich hab die Datei aufgemacht, aber nicht die Mission selber. Das kommt jetzt in den Trigger. Trigger heißt Fspring Code:
{ if (_x in list Fsprung) then {_x exec "Test.sqs"} } forEach switchableUnits |
Verstehe nicht, warum du jetzt aufgibtst. Die insgesamt 4 Zeilen die ich dir hier angeführt habe sind zwar SQF-Syntax, aber für normale SQS-Dateien geeignet.
Solange du es nicht schaffst diese Zeilen in deine normalen Skripte einzubinden, brauchst du dich mit SQF-Dateien gar nicht erst bemühen. |
Die Datei:
Code:
_leader = _this Ja stimmt, hab grade gecheckt, dass ich das auch machen kann. |
Zitat:
z.B. #Loop { if (_x in list Fsprung) then {_x exec "Test.sqs"} } forEach switchableUnits ~5 goto "Loop" |
oh ja klar. was schreib ich hier eigentlich!!!
|
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe dir noch ein Beispiel gemacht mit einem Auslöser für alle Spieler (West, Ost, usw.). Über einen Auslöser wird jetzt das Skript "Loop.sqs" mit der Dauerschleife gestartet. Es gibt keinen Funkaufruf mehr. Du gehst nach Norden in den Auslöserbereich und sprigst dann mit deiner Gruppe bei einem Marker über dem Dorf ab. Das kannst du auch in Multiplayer testen.
|
danke nochmal. Echt nett.
Ich hab gar nicht verstanden, dass die Fallschirme einfach immer wieder ohne Grenze erschaffen werden. Deshalb wollte ich immer Namen geben und prüfen, ob die schon benutzt werden. Super das geht ja echt gut. Und das mit _f (lokale Variable). Das wusste ich auch nicht. Die haben jetzt keinen Name, stimmts?! Jedenfalls hilft mir das auch bei einigen anderen Sachen, die ich mache werde. Noch mal danke, auch an GNC L.-MDB. |
Zitat:
_lokaleVariable sind nur im jeweiligen Skript sichtbar. Haben sie in mehreren Skripten den gleichen Namen, dann können sie unterschiedliche Werte enthalten, weil die eben nur lokal im jeweiligen Skript sichtbar sind. Wird das Skript geschlossen, dann ist auch der Wert der Variablen gelöscht. globaleVariable sind auf deinem PC überall in ArmA sichtbar. Wird in einem Skript der Wert geändert, dann ist die Änderung auch in anderen Skripten vorhanden. Aber nur auf deinem PC. Werte solcher Variablen bleiben bis zum Spielende gespeichert. publikeVariable sind globaleVariable, welche auf allen am Spiel beteiligten PCs sichtbar sind. Wird deren Wert auf einem PC geändert, dann muss das aber extra zu den anderen PCs übertragen werden. Andernfalls sind sie nur noch globaleVariable. Die Übertragung geht mit dem Befehl publicVariable. z.B. GesamtPunkte = 500 publicVariable "GesamtPunkte" und schon ist die Änderung auf allen PCs sichtbar. Fallschirme (und Geschoße) löschen sich nach Gebrauch selbständig. Darum brauchen sie auch keine dauerhafte Namen. Anderen Objekten gibt man einen Namen, damit man sie ansprechen und gegebenenfalls auch löschen kann. |
Oje es gibt ein kleines Problem:
Wenn es 3 Spielbare Einheiten in einer Gruppe von 5 Soldaten gibt werden die Fallschirme ich glaube 3 mal 5 genommen. Also fliegen noch einige andere Fallschirme durch die Gegend ohne Besatzung. Mir fällt nur auf die Schnelle ein, die leeren Fallschirme schnell zu löschen oder das nur auf eine spielbare Einheit beziehen, die Teamleader ist. Oder ich mach vielleicht nur eine Einheit spielbar pro Gruppe, wenn es sein muss- mal schau. (In meiner Mission gibt es nicht mehr als 3 Spielbare Soldaten in einer Gruppe, aber mindestens einer (wenn die anderen sterben). Ich glaube nicht dass das weiter hilft.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias