HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Waffen in Kiste zählen (https://hx3.de/editing-scripting-167/waffen-kiste-zaehlen-21586/)

Wolkenbeisser 19.06.2012 09:02

Waffen in Kiste zählen
 
Hallo zusammen

Für den folgenden Auslöser suche ich die Zeile mit der Bedingung:

BED: Sobald > zehn AK47 in 'Kiste1'
AKT: Kistevoll=true; publicVariable "Kistevoll"

Ich habe zwar gegoogelt (Arma2 counting weapons), aber nicht wirklich was passendes gefunden.

Vielleicht hat das ja schon mal jemand von euch verwendet? Deshalb frage ich hier einfach mal.

Danke und Grüsse aus der Schweiz
Wolkenbeisser

Buliwyf 19.06.2012 10:30

getWeaponCargo

Der Befehl könnte Interessant sein. Habe ich aber noch nie verwendet...

:cool:

Wolkenbeisser 19.06.2012 21:11

Ich bin einen Schritt weiter. Wenn es nur darum geht, festzustellen, ob ein bestimmtes Gewehr in der Kiste ist klappt das hiermit:

Code:

if(count getWeaponCargo Superkiste > 0) then {if("G36_C_SD_camo" in (getWeaponCargo Superkiste select 0))then{true}else{false};}
Wenn ich den 'Zähler' erhöhe, funktioniert es nicht mehr. Ausserdem würde dies eh auch dann auslösen, wenn zwar mehr als zwei Waffen in der Kiste wären und aber nur eine davon ein G36 wäre. Das Folgende ist also ein Fehlversuch:

Code:

if(count getWeaponCargo Superkiste > 2) then {if("G36_C_SD_camo" in (getWeaponCargo Superkiste select 0))then{true}else{false};}
Deshalb habe ich es noch damit versucht:

Code:

if(count getWeaponCargo Superkiste > 2) then {if(["G36_C_SD_camo",3] in (getWeaponCargo Superkiste select 0))then{true}else{false};}
Doch auch das half nicht. Hat noch jemand eine Idee, wie es klappen könnte? :nachdenklich:

Wolkenbeisser 19.06.2012 21:25

Hmmm, auch das Umdrehen des Codes hat nichts gebracht. Das hier ist also ebenfalls Fehlanzeige:

Code:

if("G36_C_SD_camo" in (getWeaponCargo Superkiste select 0)) then {if(count getWeaponCargo Superkiste > 2) then{true}else{false};}
Irgendwie scheint 'die Zählfunktion' nicht richtig zu funktionieren. Als ob der Code das > 2 nicht verstehen würde. Verwendet man nämlich > 0 klappt es. :stupid:

Buliwyf 19.06.2012 22:06

Schreib folgendes in die Auslösebedingung des Triggers, wobei "box" in meinem Beispiel der Name der Waffenkiste ist und Du den Waffennamen noch anpassen musst, weil ich mit M4A1 getestet habe:

Code:

for "_i" from 0 to (count ((getWeaponCargo box) select 0) - 1) do { if (((getWeaponCargo box) select 0) select _i == "M4A1" AND ((getWeaponCargo box) select 1) select _i == 10) then {true} else {false} }
Sobald 10 M4A1 in der Kiste sind löst der Trigger aus...

;)

Wie das mit Performanceeinbußen aussieht ist 'ne andere Frage... da könnte Xeno was zu sagen denke ich. Weil nach meinem Verständnis ja andauernd der Inhalt der Kiste gerpüft wird...

Wolkenbeisser 20.06.2012 07:37

Ich konnte den Code von Buliwyf noch nicht ausprobieren. Jedoch schon mal danke dafür.

Betreffend Performance: Könnte man den Code evtl. auch in einem Script ausführen, das nur auf dem Server ausgeführt wird, und - sagen wir - nur alle 3 Sekunden? Das würde doch sicher Performance sparen, oder?

Also irgendwie sowas (Für einen Scripter muss der nachfolgende Versuch furchtbar aussehen - habe einfach Buliwyf's Code... äh... angepasst :zahn:).

In die Init.sqf:

Code:

null = [] execVM "Kistencheck.sqf";
Kistencheck.sqf:

Code:

If (isServer) then
{
for "_i" from 0 to (count ((getWeaponCargo box) select 0) - 1) do { if (((getWeaponCargo box) select 0) select _i == "M4A1" AND ((getWeaponCargo box) select 1) select _i
== 10) then {Kistevoll=true; publicVariable "Kistevoll"} else {sleep 3; dann wiederhole das ganze} }
}

--> Irgendwann - sollte A3 wirklich kommen - werde ich mich tiefer in die Scripterei einarbeiten müssen...

Wolkenbeisser 23.06.2012 22:55

Zitat:

Zitat von Buliwyf (Beitrag 418509)
Schreib folgendes in die Auslösebedingung des Triggers, wobei "box" in meinem Beispiel der Name der Waffenkiste ist und Du den Waffennamen noch anpassen musst, weil ich mit M4A1 getestet habe:

Code:

for "_i" from 0 to (count ((getWeaponCargo box) select 0) - 1) do { if (((getWeaponCargo box) select 0) select _i == "M4A1" AND ((getWeaponCargo box) select 1) select _i == 10) then {true} else {false} }
Sobald 10 M4A1 in der Kiste sind löst der Trigger aus...

;)

Wie das mit Performanceeinbußen aussieht ist 'ne andere Frage... da könnte Xeno was zu sagen denke ich. Weil nach meinem Verständnis ja andauernd der Inhalt der Kiste gerpüft wird...

Hey Buliwyf. Dein Code funktioniert bestens. Vielen Dank dafür :daumen:. Performance-Einbussen konnte ich keine feststellen.

Sollten später Probleme damit auftauchen, werde ich mich selbstverständlich wieder hier melden.

Nochmals danke, und Grüsse aus der Schweiz
Wolkenbeisser


Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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