PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Object Anwesenheit im Trigger abfragen


LittleIranus
15.03.2014, 21:49
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, 02: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, 08:46
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, 08:47
Cyborg;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, 09:00
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, 10: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, 14: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.


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: if ( _distance < 20 )
then {"true"}
else {"false"};
waituntil { sleep1; _distance = yy distance xx};

Selbst wenn ich den Code änder zu:
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, 16: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, 16: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, 16:34
Boah is das hier kompliziert.

Zu 1. die Idee:


Greyhawk wird randomisiert platziert (ganz einfach (http://www.youtube.com/watch?v=LMN2PUagR3M)), 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, 19:29
hast schon Recht, aber bei dem Befehl 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, 19:33
Befehl mal wieder falsch angewendet... kennt denn kein Schwein die offizielle Wiki? Da steht doch alles drin.. mit Beispiel sogar...

addItemCargoGlobal (https://community.bistudio.com/wiki/addItemCargoGlobal)

Drunken Officer
17.03.2014, 19: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, 19:41
Öh ja, das kann auch nicht gehen :shy:
Glaub in 20 Jahren kenn ich die richtige Syntax immernoch nicht ...



task3_ausloeser setpos getpos target;


So muss es, dann gehts (glaub ich).




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

addItemCargoGlobal (https://community.bistudio.com/wiki/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, 20: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, 16:16
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, 16: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, 16:39
:oh:
ok, ich teste es mal :)

Vienna
18.03.2014, 16: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, 21:37
Ach Mist, das klappt nicht.
Ähmm... sucht der das auch, wenn der Gegenstand im Rucksack ist?

Drunken Officer
18.03.2014, 23:56
Bist du sicher das der Klassenname stimmt.

Ich habe es versucht in eine Kiste zu legen. Nix passiert. Ich habe es versucht mir zu geben, nix passiert.

Nun habe ich mir die PBO geschnappt und zerlegt:
1. Der leitet nämlich deine gewünschten Objekte, von class CfgMagazines . Somit ist es kein Item, sondern ein Magazine,
Im Editor-Auswahlklasse kann ich das benennen wie ich will. Ich kann da z.B. ein DOF_Objects bauen und Magazine reinlegen.

class CfgMagazines
{
class CA_Magazine;
class ARP_Objects_smartphone_m: CA_Magazine
{
scope = 2;
displayName = "Smartphone";
model = "\arp_objects2\models\galaxy.p3d";
count = 1;
type = 256;
mass = 2;
initSpeed = 350;
picture = "\arp_objects2\images\smartphone.paa";
descriptionShort = "";
};

class ARP_Objects_satbag_m: CA_Magazine
{
scope = 2;
displayName = "SatCom Bag";
model = "\arp_objects2\models\satbag.p3d";
count = 1;
type = 256;
mass = 30;
initSpeed = 350;
picture = "\arp_objects2\images\satbag.paa";
descriptionShort = "";
};


Alsp probiere mal an einer Kiste (in die INIT der Kiste !!!!):
this addMagazineCargo ["ARP_Objects_smartphone_m", 5];

Wenn es dann auftaucht, sag bescheid, dann können wir dir den richtigen Code geben, um zu prüfen ob ein Spieler das Magazine hat

Vienna
19.03.2014, 08:51
Ach Mist, das klappt nicht.
Ähmm... sucht der das auch, wenn der Gegenstand im Rucksack ist?

https://community.bistudio.com/wiki/backpackItems

Einfach die vorhandenen Befehle hier ansehen: https://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_3

Es gibt auch entsprechende für Magazine.

Drunken Officer
19.03.2014, 09:52
Ich habe dir mal eine kleine Mission gebaut. Du mußt dieses Addon und CBA mit starten.

Das Smaprtphone ist definitv ein MAgazine. Deine Aufgabe ist es zu finden und aufzunehmen. Wenn das geschafft ist, wird die Mission nach 10 Sekunden beendet.
Schau dir einfach die Trigger an, wie die zusammenarbeiten. Ich habe hier bewußt die Distanzgeschichte genommen, weil du früher oder später damit arbeiten wirst.

File-Upload.net - Smartphonetest.Stratis.7z (http://www.file-upload.net/download-8727256/Smartphonetest.Stratis.7z.html)
Es ist der kleine Downloadbutton, an dem links der grüne Pfeil angebracht ist. Der Rest ist Werbung

LittleIranus
20.03.2014, 00:29
Hi,
jo. Die Items stammen aus einer Mod.

Also ich habe die Blackbox - "ARP_Objects_blackbox_m"
(Sorry, ich habe das Item mal geändert, da ich es für sinnvoller hielt)
schon in die Greyhawk bekommen via: this addItemCargoGlobal ["ARP_Objects_blackbox_m",1]; Das Funktioniert auch (komischer weise waren beim Testdurchlauf mit 4 Freunden(4 Freunde + mich = 5) 5 Blackboxen in der Greyhawk :komisch:

beim Auslöser der dann die Mission abschließt heißt es dann:
Name: task4_ausloeser
Text:
Typ: Keine
Aktivierung: Jeder
Einmal
Vorhanden
Bedingung: {items _x find "ARP_Objects_blackbox_m" > -1} count allUnits > 0
Bei Aktivierung: playMusic ["Track03_OnTheRoad", 23.5]; ["END1", true] call BIS_fnc_endMission
Bei Deaktivierung:

Ich lese mir schon immer fleißig: https://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_3
und:
https://community.bistudio.com/wiki/Category:Arma_3:_New_Scripting_Commands_List
probiere dann alle mir logischen Varianten aus und es klappt irgendwie nicht. Ich bin schon bisschen Java vertraut und versuche die Beispiele der jeweiligen Befehle meinem Vorhaben entsprechend anzupassen. Hab aber zum Beispiel den Unterschied zwischen addItemCargoGlobal und addItemCargo verstanden :(
Aber gut, zurück zum Problem. Mein Problem ist also der letzte Trigger.
Man muss vielleicht anmerken, das die Blackbox "ARP_Objects_blackbox_m" zu groß für die Uniform oder die Weste ist und daher nur in einem Rucksack mitgeführt werden kann.

LittleIranus
20.03.2014, 00:56
Ich habe dir mal eine kleine Mission gebaut. Du mußt dieses Addon und CBA mit starten.

Das Smaprtphone ist definitv ein MAgazine. Deine Aufgabe ist es zu finden und aufzunehmen. Wenn das geschafft ist, wird die Mission nach 10 Sekunden beendet.
Schau dir einfach die Trigger an, wie die zusammenarbeiten. Ich habe hier bewußt die Distanzgeschichte genommen, weil du früher oder später damit arbeiten wirst.

File-Upload.net - Smartphonetest.Stratis.7z (http://www.file-upload.net/download-8727256/Smartphonetest.Stratis.7z.html)
Es ist der kleine Downloadbutton, an dem links der grüne Pfeil angebracht ist. Der Rest ist Werbung

Tut mir Leid, ich habe leider deine Mission noch nicht gespielt nur den Befehl aus der mission.sqm ausgelesen :naughty:
Es klappt genau so, wie ich es will.
Stellt sich nur noch die Frage, warum meine Greyhawk Blackboxen in Höhe der Anzahl an Spielern erstellt/als Cargo hat. :komisch:

Ihr seid echt die BESTEN!!:daumen:

Vienna
20.03.2014, 08:37
Stellt sich nur noch die Frage, warum meine Greyhawk Blackboxen in Höhe der Anzahl an Spielern erstellt/als Cargo hat. :komisch:
Vor dem Erstellenbefehl diese Zeile einfügen: if (!isserver) exitwith {};
dann wird die Box nur noch vom Server/Host erstellt.