PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschachtelte If-Funktion


Cyborg11
09.07.2008, 01:13
Hallo Leute,

ich melde mich mal wieder, weil ich ein Problem mit meinem Skript habe ^^ Ich will eine verschachtelte If-Funktion. Zuerst soll abgefragt werden, ob der Spieler die Waffen besitzt und dann soll überprüft werden, ob die Variable den Wert 1 hat. Wenn die Variable aber 0 hat, soll ein Text kommen, dass man sich zuerst den Gegenstand holen muss.

So schaut die Zeile atm bei mir aus:
If (player hasweapon "M16A4" AND acv==1 OR player hasweapon "M16A4_GL" AND acv==1 OR player hasweapon "M16A4_ACG" AND acv==1 OR player hasweapon "M16A4_ACG_GL" AND acv==1) then {m16acgas = player addaction ["--ACOG aufsetzen", "acg.sqs"];}

Nur ich krieg die zweite Abfrage nicht rein. Es soll zusätzlich (nur bei den angegeben Waffen) abgefragt werden, ob acv auf 0 ist. Wenn dies der Fall ist, soll ein Text erscheinen: "Sie müssen sich zuerst ein ACOG-Zielfernrohr besorgen, um die Waffe damit aufzurüsten." Wenn sie auf 1 ist, dann soll das ganze ganz normal ausgeführt werden.

Hätte schon eine Idee für die zweite Abfrage, aber wie gesagt, bekomme ich die nicht in meine Zeile mit rein =(
If (acv==0) then {hint "Sie müssen sich zuerst ein ACOG-Zielfernrohr besorgen, um die Waffe damit aufzurüsten."}

Ich hoffe ihr könnt mir hier weiterhelfen :)

Vienna
09.07.2008, 22:55
if ( (player hasweapon "M16A4" OR player hasweapon "M16A4_GL" OR player hasweapon "M16A4_ACG" OR player hasweapon "M16A4_ACG_GL") AND acv==1 ) then {m16acgas = player addaction ["--ACOG aufsetzen", "acg.sqs"]} else {hint "Sie müssen sich zuerst ein ACOG-Zielfernrohr besorgen, um die Waffe damit aufzurüsten."};

Zum besseren Verständnis:

In der Klammer wird zuerst abgefragt, ob der Spieler eine der Waffen hat. Danach wird abgefragt ob auch die Variable acv==1 ist.

w = wahr, f = falsch

If ( (w/f OR w/f OR ... ) AND w/f ) then { * } else { ** };

* Ausführung wenn eines in der Klammer und der Variablewert zutreffen.
** Ausführung wenn nichts in der Klammer oder der Variablewert nicht zutrifft.

pspsps91
09.07.2008, 23:07
if ( (player hasweapon "M16A4" OR player hasweapon "M16A4_GL" OR player hasweapon "M16A4_ACG" OR player hasweapon "M16A4_ACG_GL") AND acv==1 ) then {m16acgas = player addaction ["--ACOG aufsetzen", "acg.sqs"]} else {hint "Sie müssen sich zuerst ein ACOG-Zielfernrohr besorgen, um die Waffe damit aufzurüsten."};

Da ist ein Denkfehler drinne! Wenn acv==1 Wahr ist, der Spieler aber keine passende Waffe hat kommt trotzdem die Meldung!
Man sollte da wohl eher im Else-Teil eine zweite Abfrage einbauen:
if ( (player hasweapon "M16A4" OR player hasweapon "M16A4_GL" OR player hasweapon "M16A4_ACG" OR player hasweapon "M16A4_ACG_GL") AND acv==1 ) then {m16acgas = player addaction ["--ACOG aufsetzen", "acg.sqs"]} else {if(acv==0)then{hint "bla bla bla!"}};

Vienna
10.07.2008, 18:25
Wenn überhaupt nur eine Reaktion erfolgen soll, wenn der Spieler eine der Waffen hat, dann kann das so gelöst werden:

If (Waffe1 OR Waffe2 OR ... ) then { if (acv==1) then {Aktion} else {Meldung} };

Cyborg11
10.07.2008, 20:46
Danke Jungs :) HAb das jetzt so ähnlich gelöst. Hier mal meine neue Skriptzeile:
If ((player hasweapon "M16A4" OR player hasweapon "M16A4_GL" OR player hasweapon "M16A4_ACG" OR player hasweapon "M16A4_ACG_GL") AND (acv>0)) then {m16acgas = player addaction ["--ACOG aufsetzen", "acg.sqs"];} else {If (player hasweapon "M16A4" OR player hasweapon "M16A4_GL" OR player hasweapon "M16A4_ACG" OR player hasweapon "M16A4_ACG_GL") then {hint "Sie benötigen einen Granatwerfer oder ein ACOG-Zielfernrohr, um ihre Waffe aufzuruesten."}}

Funktioniert auch so alles :) Trotzdem danke nochmal an euch für den Tipp mit dem else. Dass ich da nicht selber draufgekommen bin :naughty:

Vienna
10.07.2008, 23:07
Die Abfrage im Else-Teil ist überflüssig!

Um das übersichtlicher zu gestalten kannst du es so programmieren:

_waffeP = weapons player select 0
_waffen = ["M16A4","M16A4_GL","M16A4_ACG","M16A4_ACG_GL"]

if ( _waffeP IN _waffen AND acv==1 ) then {Aktion} else {Meldung}

Cyborg11
11.07.2008, 12:16
Ne, die ist NICHT überflüssig. Ich hab ja mehrere Waffen, wo man verschiedene Sachen aufrüsten kann. Und wenn ich jetzt eine andere Waffe habe, aber die acv==0 ist, dann kommt aber ide Meldung von der anderen Waffe ;)

Hoffe du versteht was ich meine :D Und ich weiß, dass ich es etwas kompliziert gemacht habe, aber warum jetzt umändern, wenn ich noch durchblicke und ich hab auch kein Bock meine Skripte wieder umzuschreiben^^

Vienna
11.07.2008, 14:11
Das stimmt! Dann solltest du die Abfrage so durchführen:

_waffeP = weapons player select 0
_waffen = ["M16A4","M16A4_GL","M16A4_ACG","M16A4_ACG_GL"]

if ( _waffeP IN _waffen ) then { if (acv==1) then {Aktion} else {Meldung} }

Du musst vermeiden, eine gleiche Abfrage mehrmals auszuführen.

Auch musst du beim Programmieren bedacht sein, die Programmzeilen übersichtlich zu gestalten, damit du auch später noch den Durchblick hast wie alles abläuft. So kannst du deine Zeilen auch als Vorlage für weitere Anwendungen verwenden. Dann ist es in übersichtlicher Schreibweise leichter und weniger fehleranflällig z.B. eine weitere Waffe hinzuzufügen.

Ebenfalls ist es wichtig, die Skripte mit Kommentaren zu versehen. In .sqs Skripts beginnend mit ; und bei .sqf mit //. Wobei du aber vorerst bei der .sqs Syntax bleiben solltest, weil .sqf heikler ist.

pspsps91
11.07.2008, 14:30
Die Abfrage im Else-Teil ist überflüssig!

FALSCH!!

_waffeP = weapons player select 0
_waffen = ["M16A4","M16A4_GL","M16A4_ACG","M16A4_ACG_GL"]

if ( _waffeP IN _waffen AND acv==1 ) then {Aktion} else {Meldung}

Angenommen der Spieler hat als Waffe ein Pistole( "m9" ). Außerdem hat er den Gegenstand bereits aufgesammelt ( acv=1 ). Jetzt kommt deine Abfrage:
_waffeP IN _waffen ergibt FALSCH
acv==1 ergibt WAHR
und der Gesamte Ausdruck wäre dadurch FALSCH
-> Der Elseteil wird ausgeführt, es wird dem Spieler angezeigt, er muss erst den Gegenstand einsammeln, obwohl er ihn bereits hat!

Vienna
11.07.2008, 15:06
Für diesen Fall habe ich die Abfrage schon in Post #8 korrigiert.

Cyborg11
12.07.2008, 13:08
So wäre es leichter, aber ich hab kein Bock meine Skripte umzuschreiben ^^ Vllt. wenn ich mal Zeit hab.

Trotzdem danke :) Das werde ich mir merken :)

Vienna
12.07.2008, 13:42
Wenn du dich weiterhin mit Programmieren befassen willst, dann mußt du dir diese Tugend angewöhnen. Sonst wirst du keine Freude damit haben. ;)

Cyborg11
12.07.2008, 14:01
Wenn du dich weiterhin mit Programmieren befassen willst, dann mußt du dir diese Tugend angewöhnen. Sonst wirst du keine Freude damit haben. ;)
Ok, werde ich dann machen :)

Hab jetzt vor zu basteln, dass ich im Hangar vom Flughafen die Bewaffnung der A10 wählen kann. Versuche das eigentlich wieder ganz genauso wie die Aufrüstungen der Waffen :D
Ich hab aber ka, wie ich das Skript gestalten könnte, damit ich nicht wieder über 30 Skripte danach habe ^^
Ich will z.b., dass der Spieler zuerst den Menüpunkt "Bewaffnung wählen" auswählt und danach kommen dann "Rakete auswählen", "MG auswählen", "Bomben auswählen". So nun will ich aber, dass wenn ich eine neue Rakete auswähle (Maverick), meine alte Rakete (Hellfire z.b.) verschwindet. Und so soll das dann mit allen Waffen sein.

Hättest du vllt. eien Idee wie ich dsa mit minimalsten Aufwand schaffen könnte?

Vienna
12.07.2008, 14:23
Dazu würdest du ein Dialog-Menü benötigen. Das ist sehr kompliziert zu erstellen.

Einfacher ist, du bindest an einen Gegenstand (den du im Hangar aufstellst) eine Reihe von Aktionen, mit denen du für das Flugzeug verschiedene Bewaffnungsarten auswählen kannst. So viele Kombinationsmöglichkeiten gibt es ja nicht.

Die Mission im Anhang ermöglicht es dir, die Bezeichnungen der Waffenbestückung des Spielers, oder der Fahr-/Flugzeuge anzuzeigen in die er eingestiegen ist.

Wenn du bei der Bewaffnung Änderungen durchführst, immer die Magazine vor der Waffe anführen.

Cyborg11
12.07.2008, 14:27
Ja, ich hatte es auch schon so mit den Aktionen vor. Entweder per Auslöser dann die Aktionen der A10 geben oder die Aktionen an ein Objekt binden. Mal gucken wie ich das mache.

Aber weißt du ungefähr wie ich das machen könnte, dass ich nicht für jede Raketenänderung (Hellfire -> Maverick) ein Skript brauche? Weil wenn ich dann ne AA-Rakete habe und die mit der Maverick wechseln möchte, brauch ich ja schon wieder ein Skript. Kann man das ganze mit den Raketen nicht zusammen in ein Skript fassen? Also dass dann immer die Rakete entfernt wird, die der Spieler hat und die neue Rakete wird hinzugefügt?

Vienna
12.07.2008, 16:04
Das ist mit einem Skript möglich!

In addAction kannst du bei "arguments" ein Array mit beliebig vielen Parametern angeben. So ist es möglich, dass gleiche Skript mit verschiedenen Einstellungen aufzurufen. So kannst du dort z.B. die Waffennamen anführen, mit welchen du ausrüsten willst.

z.B.

[ ["Waffenname","Magazinname",Anzahl der Magazine],["Waffenname","Magazinname",Anzahl der Magazine], ....]

Im Skript dann herausholen mit

_Bewaffnung_1 = _this select 0;
_Bewaffnung-2 = _this select 1;
...
...
_NameWaffe_1 = _Bewaffnung_1 select 0;
_NameMagazin_1 = _Bewaffnung_1 select 1;
_MagazinAnzahl_1 = _Bewaffnung_1 select 2;
_NameWaffe_2 = _Bewaffnung_2 select 0;
_NameMagazin_2 = _Bewaffnung_2 select 1;
_MagazinAnzahl_2 = _Bewaffnung_2 select 2;
...
...

Syntax: ActionNumber = Unit addAction ["title", "filename", [arguments], priority, showWindow, hideOnUse, "shortcut"]

Parameters:Unit: Person or Vehicle
title: String - The action name which is displayed in the action menu.
filename: String - Path to the script that is called when the action is activated. Relative to the mission folder.
arguments: Anything - Arguments to pass to the script (will be (_this select 3) for the script)
priority: Number - Priority value of the action. Actions will be arranged descending according to this. Every game action has a preset priority value. Value can be negative. Actions with same values will be arranged in order which they were made, newest at the bottom.
showWindow: Boolean - If set True; players see "Titletext". At mid-lower screen, as they approach the object. False turns it off.
hideOnUse: Boolean - If set to true, it will hide the action menu after selecting that action. If set to false, it will leave the action menu open and visible after selecting that action, leaving the same action highlighted, for the purpose of allowing you to reselect that same action quickly, or to select another action.

Cyborg11
12.07.2008, 17:13
Also würde es dann z.b. so ausschauen:

_Bewaffnung_1 = _this select 0;
_Bewaffnung_2 = _this select 1;

_NameWaffe_1 = _Bewaffnung_1 select 0;
_NameMagazin_1 = _Bewaffnung_1 select 1;
_MagazinAnzahl_1 = _Bewaffnung_1 select 2;
_NameWaffe_2 = _Bewaffnung_2 select 0;
_NameMagazin_2 = _Bewaffnung_2 select 1;
_MagazinAnzahl_2 = _Bewaffnung_2 select 2;

Rakete = test addaction ["Rakete auswählen", "rakete.sqs", [_NameWaffe_1, _NameMagazin_1, _MagazinAnzahl1]]

Oder welches Skript muss da dann ausgeführt werden? Das Skript wo ich dann die Raketen auswähle (Beispiel) oder das Skript, indem ich die Raketen zuweise?

Oder kannst du mir bitte am Besten mal ein Skript an einer Beispielrakete (Maverick -> Hellfire) zeigen? =)

Vienna
12.07.2008, 17:40
Der AddAction-Teil gehört in den Gegenstand dem die Auswahlaktionen hinzugefügt werden.

Das kann in der Initialisierungszeile des Gegenstandes erfolgen.
z.B. für eine Aktion:
ID = this addAction ["Bewaffnung 1", "Bewaffnen.sqs", [ ["Waffenname", "Magazinname", Anzahl der Magazine],["Waffenname", "Magazinname", Anzahl der Magazine], ....],1,false,false, ""]

Aber weil es mehrere Aktionen sein werden, ist es auch besser die Aktionen mit einem eigenen Skript in den Gegenstand zu laden. Dieses Skript rufst du dann in der Initialisierungszeile auf.

Wenn es dir leichter fällt, dann kannst du mehrere Gegenstände nehmen und jedem nur eine Aktion eintragen.


Nun zum Skript "Bewaffnen.sqs"

Das eigentliche Bewaffnungsskript wird über die in obigem Gegenstand hinzugefügten Aktionen aufgerufen. Die Parameterauslesung erfolgt dann in diesem Skript.

Vienna
12.07.2008, 18:07
Wie du die Aktion in einen Gegenstand hinzufügst habe ich oben schon beschrieben.

Zur weiteren Vereinfachung ein Beispiel für das Skript "Bewaffnen.sqs" für die Aufnahme von 2 Waffen.

Das zu bewaffnende Flugzeug soll den Namen Flieger1 haben!


Bewaffnen.sqs


_unit = Flieger1
_i=0

_Bewaffnung_1 = _this select 0
_Bewaffnung_2 = _this select 1

_NameWaffe_1 = _Bewaffnung_1 select 0
_NameMagazin_1 = _Bewaffnung_1 select 1
_MagazinAnzahl_1 = _Bewaffnung_1 select 2

_NameWaffe_2 = _Bewaffnung_2 select 0
_NameMagazin_2 = _Bewaffnung_2 select 1
_MagazinAnzahl_2 = _Bewaffnung_2 select 2

removeAllWeapons _unit

for [{_i=0},{_i <= _MagazinAnzahl_1},{_i=_i+1}] do {_unit addMagazine _NameMagazin_1}
_unit addWeapon _NameWaffe_1

for [{_i=0},{_i <= _MagazinAnzahl_2},{_i=_i+1}] do {_unit addMagazine _NameMagazin_2}
_unit addWeapon _NameWaffe_2


Das ist nicht getestet. Ich hoffe ich habe die Befehle richtig geschrieben.
-
-

Vienna
12.07.2008, 22:44
Laß dir Zeit. So einfach geht das nicht.

Anstelle von _this mußt du zuerst das Array laden:

_liste = _this select 3

Die oben vorhandenen _this mußt du durch _liste ersetzen



Auch entfernt removeAllWeapons die Waffen nicht.

Vienna
13.07.2008, 11:10
Hier findest du ein Beispiel für das Ändern der Fahrzeugbewaffnung:
Fahrzeugbewaffnung ändern (http://hx3.de/editing-139/aendern-fahrzeugbewaffnung-14969/#post184204)

Cyborg11
13.07.2008, 13:15
Cool danke :)

Noch ne Frage: Aber man kann ja nicht einzeln die Bewaffnung ändern, also als Aktioneinträge "Mit Hellfire bewaffnen", "Mit Maverick bewaffnen", "Mit GAU8 bewaffnen" usw. Denn durch das NeuBewaffnen.sqf Skript werden ja immer alle Waffen entfernt. Kann man das so machen, dass entweder alle Waffen beim Auswählen einer Bewaffnung nur einmal entfernt werden und man dann den Rest hinzufügen kann oder jedes Mal nur der Typ von der Waffe entfernt wird und die neue Waffe hinzugefügt wird.

Wäre das möglich? :)

Vienna
13.07.2008, 14:57
Eine solche Variante findest du jetzt in obigem Link.

Es können so viele Waffen geladen werden, wie Aktionen dazu vorhanden sind (zur Zeit 6). Falls du willst, dass z.B. nur 3 Stück von dieser Auswahl geladen werden dürfen, mußt du noch einen "Zähler" einbauen.

Cyborg11
13.07.2008, 20:32
Danke :) Genauso wollte ich es :)

Hätte nur noch einen kleinen Vorschlag, ob du das noch miteinbauen könntest ^^ Und zwar ich möchte die Bewaffnung erst bestimmen können, NACHDEM ich mit meinem Flugzeug einen Auslöser (z.b. im Hangar) betreten habe. Wäre das möglich? Hab versucht einfach die Initzeile vom Flieger in den Auslöser zu stecken, aber man bekommt dann keine Waffenauswahl =(

Vienna
13.07.2008, 22:48
Es geht schneller das zu ändern als zu erklären.

Im Anhang die Beispielmission wo die Waffen-Aktionen im Auslöserbereich aufscheinen.

Beachte dass jetzt der Auslöser den Skriptaufruf durchführt und die Aktionen beim Verlassen des Bereichs wieder entfernt werden.

Mit dem Auslöser kannst du jede A10 neu bewaffnen. Bei den Fliegern ist kein Eintrag notwendig. Zum Bewaffnen musst du im Flieger sitzen.

Die Größe des Auslöserbereichs ist beliebig änderbar.

Cyborg11
13.07.2008, 23:00
Ah cool danke :) Ich hab mir shcon deine letzten 2 Skripte angeschaut und langsam blicke ich durch wie die aufgebaut sind :D Learning by anschauing :ugly:

Werde die Missi dann morgen mal antesten, da ich jetzt ins Bett gehe. Morgen noch ne mündliche Prüfung in Mathe.

Vienna
13.07.2008, 23:11
Das Skript AktionenWaffenliste.sqf ist in der Auslöserversion stark verändert.

Wünsche dir gutes Gelingen für die Prüfung!

Cyborg11
14.07.2008, 11:49
Danke :) Hat aber leider nicht für eine 1 gereicht =( Jetzt hab ich ne 3 in Mathe. Naja, auch nicht sooooo schlimm ^^

Hab jetzt mal dein Skript ausprobiert und finde es genial :> Hab es gleich mal um 7 Waffen, um 3 Flugzeuge und 1 Abfrage für max 3 Waffen erweitert :)

Vienna
14.07.2008, 18:36
Wenn du die Routinen auch für Helis verwenden willst, dann ist die Abfrage im Auslöser so zu gestalten, dass er erst "durchschaltet" ( und damit das Skript aufruft), wenn der Heli am Boden steht (Höhe < 1m). Denn das Skript AktionenWaffenliste.sqf aktiviert bei einer Flughöhe von über 10m keine Aktionen, sondern wird abgebrochen.

Cyborg11
14.07.2008, 19:05
Wenn du die Routinen auch für Helis verwenden willst, dann ist die Abfrage im Auslöser so zu gestalten, dass er erst "durchschaltet" ( und damit das Skript aufruft), wenn der Heli am Boden steht (Höhe < 1m). Denn das Skript AktionenWaffenliste.sqf aktiviert bei einer Flughöhe von über 10m keine Aktionen, sondern wird abgebrochen.
Ah ok. Aber wie schaut so eine Abfrage aus, die abfragt, ob der Spieler aufm Boden steht?
If (player height >= 1) then {[] execVM "AktionenWaffenliste.sqf"}

Vienna
14.07.2008, 20:02
Im Auslöser steht jetzt in der Zeile "Bedingung":

vehicle player in thislist AND typeOf vehicle player == "A10"

Dazu mußt du noch anfügen: AND (getpos vehicle player)select 2 < 1

Der Aufruf des Sktipts erfolgt ja bereits in der Zeile "Bei Akt."

"A10" natürlich auf die Bezeichnung des Helis ändern.


Hinweis: getPos player gibt die Position des Spielers als Array zurück: [x,y,z] z ist dabei die Höhe.

Falls noch nicht bekannt, hier der Link zur Befehlsübersicht: Category:Scripting Commands ArmA - Bohemia Interactive Community (http://community.bistudio.com/wiki/Category:Scripting_Commands_ArmA)

.

Cyborg11
04.08.2008, 23:23
Also um nochmal auf mein Skript mit den Waffen aufrüsten zurückzukommen.

Ich habe jetzt vor, das Skript mit Waffen aus Addons zu erweitern. Und da will ich es übersichtlicher machen. So schaut es bei mir atm aus:

_waffeSD = weapons player select 0
_waffenSD = ["MP5A5","AKS74U"]

If (_waffeSD in _waffenSD AND sdv>0) then {sdas = player addaction ["--Schalldaempfer (Gewehr) aufsetzen", "sd.sqs"]} else {hint "Sie benötigen einen Schalldaempfer um ihre Waffe aufzuruesten."}


Nur mein Problem ist, ich bekomme nie meine Aktion (Schalldämpfer aufsetzen). Der then-Teil wird immer übersprungen, egal ob ich einen Schalldämpfer bei mir habe (sdv=1) und die MP5A5 oder die AKS74U besitze. Ich weiß nicht warum der den Teil einfach übersprungt, denn jedesmal kommt bei mir die hintmeldung im elseteil, wenn ich versuche die Waffe aufzurüsten, obwohl ich ja die Bedingung erfüllt habe! :motz:

Kann mir da bitte einer weiterhelfen? :naughty:

Vienna
05.08.2008, 18:40
Der Vergleich im Array mit IN unterscheidet zwischen Groß- und Kleinschreibung.

Laß dir eine die Waffenliste ausgeben und schau ob du die Waffenbezeichnungen im Array _waffenSD korrekt geschrieben hast

player groupChat format["%1", weapons player];

Cyborg11
05.08.2008, 19:08
Ja, das Array ist richtig.

Als ich vorhin mal die Waffenliste aufgerufen habe, spuckte mir ArmA folgendes aus: ["NVGOOGLES","MP5A5"]
Da ich aber in dem Skript select 0 stehen habe, wird ja eigentlich mit dem NVGoogles weitergemacht, aber das soll ja so nicht sein. Also hab ich mal das Nachtsichtgerät abgelegt und nochmal probiert, aber es ist wieder das Selbe wie oben passiert :(


EDIT: Ok erneut probiert. Nur wenn die Waffe auf dem ersten Platz ist, funktioniert das mit select 0. Sollte man aber die Waffe wechseln und vorher ein Nachtsichtgerät haben, dann switcht das Nachtsichtgerät auf Platz 0 und die Waffe auf Platz 1 => Das Skript funktioniert dann nicht mehr. Kann man das irgendwie auch noch anders abfragen lassen, damit man die Waffen trotzdem noch tauschen kann, sollte man ein/eine Nachtsichgerät/Fernglas/Pistole besitzen?

EDIT2: Es funktioniert, wenn man einfach die 4 Positionen nach den Waffen abfragt (select 0 - 3), da NVGoogles, Pistole, Fernglas und Waffe ja 4 Slots besetzen. Also das würde das dann so aussehen:
_waffenSD = ["MP5A5","AKS74U"]
_waffeSD = weapons player select 0
_waffeSD1 = weapons player select 1
_waffeSD2 = weapons player select 2
_waffeSD3 = weapons player select 3

If (_waffeSD in _waffenSD OR _waffeSD1 in _waffenSD OR _waffeSD2 in _waffenSD OR _waffeSD3 in _waffenSD) then {sdas = player addaction ["--Schalldaempfer (Gewehr) aufsetzen", "sd.sqs"]} else {hint "Sie benötigen einen Schalldaempfer um ihre Waffe aufzuruesten."}

Aber @Vienna: Gibt es da auch noch eine andere Möglichkeit außer die 4 Slots der Waffen abzufragen?

Vienna
05.08.2008, 20:32
_waffeSD = primaryWeapon player

Cyborg11
05.08.2008, 20:44
_waffeSD = primaryWeapon player
Danke! Auf die Idee bin ich auch gerade gekommen, als ich deine neue Beispielmission mit der Bulletcam angschaut habe :)