HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Abfrage wieviele Mitglieder einer Gruppe unter ACE 3 als bewusstlos gelten... (https://hx3.de/editing-scripting-187/abfrage-wieviele-mitglieder-gruppe-ace-3-bewusstlos-gelten-25649/)

Faithnall 11.04.2017 18:51

Abfrage wieviele Mitglieder einer Gruppe unter ACE 3 als bewusstlos gelten...
 
Hallo, ich knabber mal wieder an ein kleinen Problem.

Die Abfrage ob jemand bewusstlos ist in Sinne von ACE erfolgt ja über:

Code:

Einheit getVariable ["ACE_isUnconscious", false]
Ich möchte nun eine ganze Gruppe überwachen.
Gespielt werden soll mit den Einstellungen prevent Death.

Somit kann es dazu kommen, dass das ganze Team Bewußtlos in der Gegend herum liegt. Daher will ich mit einen Trigger überwachen, das mindestens einer noch am leben ist, sonst gilt die Mission als gescheitert.

Ein Versuche ala :
Code:

if ({getVariable ["ACE_isUnconscious", false]} count units grp_player >0) then{_gruppe =true;}
gibt schon im Trigger erstellen eine Fehlermeldung raus.

Hat jemand eine Idee?

lucullus 11.04.2017 20:06

In der Bed.:
Code:

count (units deinGruppenname select {!(_x getVariable "ACE_isUnconscious")}) > 0
Bei Akt.:
Was immer du willst.

Faithnall 15.04.2017 22:12

Nur damit ich das richtig verstehe...


Code:

count (units deinGruppenname select {!(_x getVariable "ACE_isUnconscious")}) > 0
Er überprüft ob mehr als 0 Leute nicht bewußtlos sind?

Denn wenn ich diese Bedingung so einstelle erklärt er mir mit den Start der Mission "true"

Kehre ich nun die Negierung um indem ich das ! entferne überprüft er ob mehr als 0 Personen am leben sind, löst der Trigger auch aus, wenn noch alle 6 Leben...

Ich hab es also mal so versucht:

Code:

count (units group Player select {(_x getVariable "ACE_isUnconscious")}) == count units group player;
Scheint zu funktionieren. Er zählt nun alle Einheiten die Bewusstlos sind und vergleicht ob das = Gruppenanzahl ist.

Trotzdem danke für die Hilfe, hat mir ja weiter geholfen.

lucullus 16.04.2017 14:41

Zitat:

Daher will ich mit einen Trigger überwachen, das mindestens einer noch am leben ist, sonst gilt die Mission als gescheitert.
Zitat:

count (units deinGruppenname select {!(_x getVariable "ACE_isUnconscious")}) > 0
...und genau das macht der Eintrag.

Faithnall 17.04.2017 17:06

Ok...
Moment, vermutlich lag dann der Fehler bei mir bzw. mein Testbedingungen (mit Bots in testmodus Editor)
Zum Verständnis für mich:

Code:

count (units deinGruppenname select {!(_x getVariable "ACE_isUnconscious")}) > 0
Eingeleitet wird mit count Units Player group.
Er soll also zählen, von allen Variablen die so ein Player in der Gruppe hat soll er also Zählen wer ...
Code:

{!(_x get Variable "ACE_isUnconscious")}
... ! = nicht (wenn ich das richtig lese?)
die Variable
Code:

ACE_isUnconscious
= true gesetzt hat.
Das Ergebnis soll er prüfen ob die Zahl größer ist als 0.


Ich hab das nun noch einmal im Editor ausprobiert.
1 Player + 1 NPC Gruppenmitglied (ich lebe)
Ergebnis
Code:

Player getVariable "ACE_isUnconscious";
= false
Die Abfrage zu mir mit getVariable ["ACE_isUnconscious", false]
erhalte ich so lange ich lebe ebenfalls ein false.

setzte ich mich nun selbst außer gefeht mit local Exec
player setVariable ["ACE_isUnconscious", true];
Dann erhalte ich bei den Personen bezogenen Abfragen ein true.

Bei deinen Code erhalte ich ab beginn ein true
Code:

count (units Group Player select {!(_x getVariable "ACE_isUnconscious")}) > 0
Wenn ich nun in deiner Abfrage das ! entferne scheint diese auch zu funktionieren. Der Vorteil deiner Abfrage ist natürlich sie ist schlanker und man spart sich einen unnötigen Zählvorgang.

Vermutlich liegt der Fehler in meiner einleitenden Beschreibung.
Stichwort doppelte Verneinung :)

Na wieder etwas gelernt.

Danke schön

lucullus 20.04.2017 19:17

Code:

count (units deinGruppenname select {!(_x getVariable "ACE_isUnconscious")}) > 0
count = Zähle
(units deinGruppenname = die Soldaten deiner Gruppe,
select = aber nur
{!(_x getVariable "ACE_isUnconscious")} = die nicht (bewusstlos) sind
)
> 0) = Ist der Wert größer Null?


Edit:
Jetzt komm ich selber Durcheinander mit diesen ganzen boolschen Kram.
Hauptsache es funktioniert bei dir, mit oder ohne "!".

Faithnall 26.04.2017 18:22

Da bin ich wieder doch noch nicht ganz durch mit den Ding.

Code:

count (units deinGruppenname select {(_x getVariable "ACE_isUnconscious")}) > 0
========

Zähle Bewußtlose Spieler der Gruppe, ist dieser Wert größer 0 dann Bedingung erfüllt.

Passt ja nicht, denn dann löst der Trigger ja auch aus, wenn nur ein Mitglied der Gruppe Bewusstlos ist.

also Zählen wer NICHT Bewusstlos ist und vergleichen am Ende == 0

Also :

Code:

count (units deinGruppenname select {!(_x getVariable "ACE_isUnconscious")}) == 0
count = Zähle
(units deinGruppenname = die Soldaten deiner Gruppe,
select = aber nur
{!(_x getVariable "ACE_isUnconscious")} = die nicht (bewusstlos) sind
)
== 0) = Ist der Wert gleich Null?

= Alle Bewusstlos gleich Mission gescheitert.


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