HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Object Anwesenheit im Trigger abfragen (https://hx3.de/editing-scripting-187/object-anwesenheit-trigger-abfragen-23523/)

LittleIranus 15.03.2014 20:49

Object Anwesenheit im Trigger abfragen
 
Hallo liebe Community,
ich bastel grade an meiner zweiten Mission in der ein Blufor Team 4 mögliche Absturzstellen überprüfen und eine MQ4A Greyhawk Drohne suchen soll.

Jetzt kommen meine zwei Probleme:
1. Ich hatte vor via Trigger überprüfen zu lassen, ob sowohl Greyhawk(Variable: "target") als auch der Trupp an der selben Absturzstelle sind. Wenn true, dann wird der Marker geändert und die Mission geht zum Nächsten schritt über. Wie man einen Marker ändert, weiß ich schon und auch, wie ich dann die Mission weiter gehen lasse.

Ich habe meinen Trigger schon auf Aktivierung: BLUFOR eingestellt, doch wie frage ich ab, ob beide auch im Triggerbereich anwesend ist? (Blufor Trupp + Greyhawk(leeres Objekt):komisch:

2. Kommen wir nun zu meinem zweiten Problem. Ich möchte in einem anderen Trigger überprüfen, ob ein Item (in diesem Fall: Classname: "ARP_Objects_satbag_m") sich im Inventar eines Spielers befindet. (Es ist eine Coop Mission, also mehrere mögliche Spieler, die das Item dabei haben könnten)

Ich wäre euch sehr dankbar, wenn ihr mir helfen könntet :)

[CCG]Cyborg 17.03.2014 01:06

Keine/Jeder/Einfach/vorhanden
bed:
({_x in thislist} count units group Player >= 1) AND ({_x in thislist} count units GRPHawk >= 1)

//Bei "count units group Player >= 1" für alle Spieler anstatt "1" dann wieder "count units group Player".
//vorher in die Init der Drohne folgendes eintragen: GRPHawk = group this;

bei dem zweiten
probier mal dieses:

Keine/Jeder/Einfach/vorhanden
bed:
{items _x} find "ARP_Objects_satbag_m" != -1

//sicher bin ich mir da aber nicht...:stupid:

Vienna 17.03.2014 07:46

Zitat:

Zitat von LittleIranus (Beitrag 469855)

1. Ich habe meinen Trigger schon auf Aktivierung: BLUFOR eingestellt, doch wie frage ich ab, ob beide auch im Triggerbereich anwesend ist? (Blufor Trupp + Greyhawk(leeres Objekt):komisch:

2. Ich möchte in einem anderen Trigger überprüfen, ob ein Item (in diesem Fall: Classname: "ARP_Objects_satbag_m") sich im Inventar eines Spielers befindet.

1.
Aktivierung: Jeder
Bedingung: {_x in units Gruppenname} count thislist > 0 and NameVonGreyhawk in thislist
Anstelle von 0 kann eine gewünschte Anzahl genommen werden. z.B. > 3

2.
Bedingung für einen Soldaten: items NameSoldat find "ARP_Objects_satbag_m" > -1
Bedingung für mehrere: {items _x find "ARP_Objects_satbag_m" > -1} count units Gruppenname > 0

Für Waffen: https://community.bistudio.com/wiki/hasWeapon

LittleIranus 17.03.2014 07:47

Zitat:

Zitat von [CCG]Cyborg (Beitrag 469920)
bei dem zweiten
probier mal dieses:

Keine/Jeder/Einfach/vorhanden
bed:
{items _x} find "ARP_Objects_satbag_m" != -1

erwartet vor dem "find" ein Array und es lässt sich daher nicht auf ok drücken :(

Moment ich teste mal eben das Andere :)

LittleIranus 17.03.2014 08:00

Zitat:

Zitat von Vienna (Beitrag 469925)
1.
Aktivierung: Jeder
Bedingung: {_x in units Gruppenname} count thislist > 0 and NameVonGreyhawk in thislist
Anstelle von 0 kann eine gewünschte Anzahl genommen werden. z.B. > 3

2.
Bedingung für einen Soldaten: items NameSoldat find "ARP_Objects_satbag_m" > -1
Bedingung für mehrere: {items _x find "ARP_Objects_satbag_m" > -1} count units Gruppenname > 0

Für Waffen: https://community.bistudio.com/wiki/hasWeapon

Vienna, nice! Punkt 1 geht schon mal, wenn es nur eine Gruppe gibt. Kann man auch statt dem Gruppennamen eine Fraktion nehmen? z.B. WEST oder so? Ich hab in der Nachbearbeitung der Mission 3 Gruppen von Blufor erstellt, die sich dann die Absturzstellen selber aufteilen sollen. Falls benötigt Rufnamen der Squads sind: "Alpha Squad", "Bravo Squad" und "Charlie Squad". das heißt wenn dann taucht vermutlich eh nur eins der drei Squads in einem der Trigger auf.

Bei Punkt 2, weiß ich noch nicht, ob das geht. Weiß jemand zufällig, wie ich einen Classname eines Items aus einem Mod herausfinde? Gibt es da ne Liste? Da ja "VAS" auch alle Items hat.

Drunken Officer 17.03.2014 09:48

Muss es denn ein Gebiet sein was gescannt wird oder soll deine Mission auf die Distanz zwischen Absturzstelle und Reconteam reagieren?

So wie sich das ließ, klatscht du den Greyhawk in einer der Triggergebiete. Wenn die Trupps drin sind, geht es weiter.

Da könntest du mit waituntil { sleep1; yy distance xx < 10} arbeiten!

1. Der Trigger feuert 2x in der Sekunde und fragt ab. Eine Waituntil mit sleep 1 reduziert das auf 1x in der Sekunden.
2. du sparst 4 Trigger!
3. du kannst das Objekt freier setzten, da die Distanzabfrage zum Objekt läuft und nicht via Trigger.

Ist nur so ne Idee. Wenn du allerdings ein bestimmtes Gebiet abscannen mußt, nimm den Trigger. Ist für den Anfang einfacher.

LittleIranus 17.03.2014 13:18

Es ist eine KOOP Mission. Die ganze Sache sieht so aus 1-3 spielergesteuerte Blufor Gruppen suchen nach einer abgestürzten Greyhawk Drohne(Name: "target"), die per Gruppenzugehörigkeit mit 4 Markern verbunden wurde, also ein Zufallsspawnpunkt an einem dieser 4 Marker (Markernamen: Crashside1,..., Crashside4).
Wenn nun (egal welcher der 3 Blufor Gruppen) an eine Absturzstelle gelangen und dort auch die Drohne ist, sollen sie quasi per "hint" benachrichtigt werden, das die Drohne gefunden wurde und dann ein Item aus dem Laderaum der Drohne entnehmen (sofern das überhaupt möglich ist). Dieses Item soll dann zur Basis gebracht werden.

Es kann also nur weitergehen, wenn sowohl Drohne als auch eine der Blufor Einheiten an der selben Absturzstelle sind.

Deine Idee macht schon Sinn. Ja, dann könnte ich die 4 Absturzstellenmarker als "Erledigt" grün werden lassen und setzte einen noch unsichtbaren Marker, dann an die Position der Drohne und lasse den dann sichtbar werden. Klingt schon mal gut.

Zitat:

Zitat von Drunken Officer (Beitrag 469940)
Da könntest du mit waituntil { sleep1; yy distance xx < 10} arbeiten!

Das Problem ist nur, das der Trigger ein bool erwartet und hier kein true oder false geliefert wird.

Ich habe mir einige Gedanken zu deinem Code gemacht und wollte es um eine "if" Bedingung/Abfrage erweitern, aber meine Kenntnisse scheitern an einer Localen Variable in einem Globalenbereich :motz:

Hier mal mein Versuch:
Code:

if ( _distance < 20 )
 then {"true"}
else {"false"};
waituntil { sleep1; _distance = yy distance xx};

Selbst wenn ich den Code änder zu:
Code:

if ( entfernung < 20 )
 then {"true"}
else {"false"};
waituntil { sleep1; entfernung = yy distance xx};

Scheiter ich wieder daran, das ein bool erwartet wird. Aber ich gebe doch mit if ein true oder ein false aus, oder nicht?

Vienna 17.03.2014 15:09

yy distance xx < 10 ist logisch!

distance gibt eine Entfernung zurück. In Verbindung mit < 10 erfolgt eine Rückgabe von true oder false.

LittleIranus 17.03.2014 15:18

Okay, dann werde ich das nochmal testen müssen.

Kann ich einem Spieler über das ActionMenu an einem Fahrzeug ein Item ins Inventar legen?

Es geht darum, das ich mir nicht sicher bin, ob eine Greyhawk überhaupt einen Laderaum besitzt. :komisch:

Und bei waituntil { sleep1; yy distance xx < 10} kann ich da Einheiten einer Seite abfragen? sprich Blufor Einheiten distance Greyhawk("target") < 10?

Wenn ja, wie müsste der Befehl heißen?

burns 17.03.2014 15:34

Boah is das hier kompliziert.

Zu 1. die Idee:


Greyhawk wird randomisiert platziert (ganz einfach), Trigger wird nach der Platzierung an genau die Stelle gebeamt (Triggername setpos Greyhawkname) - wenn nun Anwesenheit Spielerseite hergestellt ist, geht alles weiter wie vorher - jedenfalls erübrigt sich der Check ob die Drone da ist :D

LittleIranus 17.03.2014 18:29

hast schon Recht, aber bei dem Befehl
Code:

task3_ausloeser setpos target;
passiert bei mir gar nichts.

Ich hab gleich noch ein Problem. Weiß jemand wie ich leeren Fahrzeugen Items ins Inventar legen kann?
hatte es schon mit this addItem "ARP_Objects_smartphone_m"; und this addItemCargo "ARP_Objects_smartphone_m"; versucht, aber irgendwie will das nicht :(

Buliwyf 17.03.2014 18:33

Befehl mal wieder falsch angewendet... kennt denn kein Schwein die offizielle Wiki? Da steht doch alles drin.. mit Beispiel sogar...

addItemCargoGlobal

Drunken Officer 17.03.2014 18:39

1. Target ist ne ungünstige Variable.

2. Auslöser setPos (getPos drohne)

3. Cargo-Befel zum beladen nutzen

4. Dringend mal bei bis wiki vorbei schauen und deine Eingabe mit dem geforderten SYntax kontrollieren

burns 17.03.2014 18:41

Öh ja, das kann auch nicht gehen :shy:
Glaub in 20 Jahren kenn ich die richtige Syntax immernoch nicht ...



Code:

task3_ausloeser setpos getpos target;

So muss es, dann gehts (glaub ich).




Zitat:

Zitat von Buliwyf (Beitrag 469961)
Befehl mal wieder falsch angewendet... kennt denn kein Schwein die offizielle Wiki? Da steht doch alles drin.. mit Beispiel sogar...

addItemCargoGlobal

Kennen ja, aber ich bin zu Pro um es auch zu nutzen!

Gehe mich ma woanders nützlich machen :lol:

LittleIranus 17.03.2014 19:32

Herzlichen Dank :) :daumen:
ich werde mir jetzt ein paar Freunde schnappen und dann mal die Mission auf Funktion und Spaß testen :)

Sollte jetzt aber durch euer Wissen alles klappen :)

Buliwyf, ich hatte schon in der Wiki geschaut nur halt beim testen die Klammern vergessen, oder eventuell die falschen Klammern benutzt, dadurch hat es nie funktioniert.
Danke nochmal :)

LittleIranus 18.03.2014 15:16

Zitat:

Zitat von Vienna (Beitrag 469925)
2.
Bedingung für einen Soldaten: items NameSoldat find "ARP_Objects_satbag_m" > -1
Bedingung für mehrere: {items _x find "ARP_Objects_satbag_m" > -1} count units Gruppenname > 0

Ich hab hier ein kleines Problem! Ich habe 3 Gruppen von spielbaren Charakteren, von denen jeder die "ARP_Objects_satbag_m" mit sich rumschleppen könnte. Hab schon einige ähnlich Varianten ausprobiert um unter allen spielbaren Einheiten oder unter allen Einheiten der Fraktion "west" zu suchen. Bin aber mit dem Scripten nicht so vertraut...

Vienna 18.03.2014 15:32

Die Gruppen werden ja unterschiedliche Namen haben, so mach für jede Gruppe einen eigenen Auslöser, als Bedingungen den für Gruppen. Wer sie dann hat, der setzt eine eine globale Variable (z.B. ObjektGefunden) auf true. Mit dieser Variablen kannst du dann weitere Ereignisse steuern. Die Variable zuvor auf false setzen.

LittleIranus 18.03.2014 15:39

:oh:
ok, ich teste es mal :)

Vienna 18.03.2014 15:41

Nimm einfach eine Bedingung für alle spielbaren Einheiten:

{items _x find "ARP_Objects_satbag_m" > -1} count payableUnits > 0

Hinweis: zum Testen allUnits nehmen, weil playableUnits im Editor nicht funktioniert.

LittleIranus 18.03.2014 20:37

Ach Mist, das klappt nicht.
Ähmm... sucht der das auch, wenn der Gegenstand im Rucksack ist?


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