5. Aktionsmenü (addAction, holdAction, ACE, Hints & Intel)
addAction (Grundlegendes)
Das Kommando addAction fügt einen Eintrag ins Aktionsmenü ("Mausradmenü") hinzu, welcher wiederum ein Script ausführt oder eine Variable definiert. Das Kommando ist vom Effekt her lokal, allerdings für alle Clients zugänglich, wenn man es in die Init-Box eines Objekts setzt! Man kann damit auch den gesamten Mission-Flow per Aktionsmenü steuern, wenn man der Figur des Spielleiters entsprechende Einträge zugänglich macht:
https://community.bistudio.com/wiki/addAction
1. FARBE ändern:
Hinter die ersten Anführungszeichen (als Bestandteil des "titels") im Init:
<t color='#160ff3'> (ROT)
Alle Farbcodes: https://www.webfx.com/web-design/color-picker/
2. AKTION hinzufügen:
a) Führt Script/Function aus:
this addAction ["<t color='#FF0000'>title","scripts\arty.sqf",nil,1.5,false,true,"","",3,false,"",""];
b) Globale Variable definieren (zum Beispiel zur Wegpunkt-Aktivierung):
this addAction ["<t color='#FF0000'>title",{meineVariable = true; publicVariable "meineVariable";}, [], 0, false, true, "", "", 3];
Syntax:
Objekt addAction ["<Farbe>Titel", "Scriptpfad", arguments, Priorität (0-6), mittig_anzeigen?, hide_on_use?, shortcut_key, condition, radius_in_meters, unconscious?, selection, memoryPoint]
3. RESTRIKTIONEN (condition):
Es kann per Parameter festgelegt werden, welcher Spieler auf welchen Eintrag an welchem Objekt zugreifen kann. Will man einen Eintrag nur für einen Spieler haben, sollte zum Beispiel "_target isEqualTo _this" funktionieren. Will man, dass nur eine bestimmte Spielerfigur (zum Beispiel mit dem Var.name p1) einen Eintrag innerhalb eines Fahrzeugs zur Verfügung hat, so sollte "p1 in _target" klappen.
"_this" ist dabei dabei die Spielerfigur, die (lokal!) Zugriff haben/den Eintrag sehen soll, "_target" bezeichnet das Objekt, dem der Eintrag zugeordnet ist.
Bei "_target isEqualTo _this" ist also z. B. der Eintrag in der Init-Box der Spielerfigur und zugleich ist die Figur das "_target" (isEqualto).
holdAction
Fügt einen sogenannten holdAction-Eintrag hinzu. Spieler muss die DefaultAction-Taste (in der Regel Leertaste) gedrückt halten, um die Action zu aktivieren.
[
backpacks,
"search backpacks",
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
"_this distance _target < 2",
"_caller distance _target < 3",
{},
{},
{Hint "Rucksäcke enthalten lediglich Kleidung. Alle Ausrüstung wurde entfernt.";},
{},
[],
10,
0,
false,
false,
true
]
call BIS_fnc_holdActionAdd;
Hinweis: Eintrag noch nicht fertig, Syntax folgt!
Hints
Hints
Hinweise (Hints) können global oder lokal erstellt werden. Es erscheint rechts oben im Bild eine Textausgabe. Achtung: nicht zu viele Zeichen!
GLOBAL (Hint erscheint für jeden):
- Durch Trigger:
Bei einem globalen Trigger in die onAct.:
hint “Dies ist ein Testhinweis, den jeder lesen kann”;
2. Durch RemoteExec:
Meist in einem serverseitigen Script/Trigger genutzt:
“Dies ist ein Testhinweis, den jeder lesen kann” remoteExec [“hint”];
LOCAL (Hint erscheint nur für den Client, der die addAction auslöst)
- Falls nicht anders geskriptet, erscheinen Hints in addActions IMMER nur für die Person, die diese auslöst. Dabei ist es egal, ob es sich um ein Skript oder den direkten Befehl handelt.
KI addAction ["Sag Hallo", "scriptHallo.sqf"];
KI addAction ["Sag Hallo", {hint “Moin, wie gehts?”}];
Beide werden nur lokal für denjenigen ausgeführt, der die Action aktiviert.
2. Über remoteExec lassen sich Hints für eine bestimmte Gruppe von Leute anzeigen (z.b. die Crew eines Fahrzeugs, Spieler in einem bestimmten Umkreis oder auch das Fireteam, Squad des aktivierenden). Hierzu bitte den Eintrag zu “remoteExec” überprüfen.
HintC
Bei “HintC” handelt es sich um einen deutlich schöneren Hint, der in der Mitte des Bildschirms erscheint und explizit bestätigt werden muss. Er ist daher hervorragend für äußerst wichtige Hinweise geeignet, die nicht übersehen werden sollen. Es ist jedoch vorsicht geboten, da die Steuerung eingefroren ist, solange man den hintC nicht bestätigt. Daher sollten definitiv ruhigere Situationen für diese Art Hinweis genutzt werden.
Syntax: hintC
Es gibt mehrere Möglichkeiten einen HintC zu nutzen:
1. Genau wie Hint:
hintC “Dies ist ein deutlich schönerer Text”;
2. Mit Titel aber einfachem Text:
“Dies ist der Titel” hintC “Und das ist der Text”;
3. Mit mehreren Punkten (ob mit oder ohne Titel, spielt keine Rolle)
“Hier sehen wir mehrere Punkte” hintC [
“Erster Punkt”,
“Zweiter Punkt”,
“Finaler Punkt”
];
Bei hintC gilt es genau die gleichen Dinge bezüglich der Lokalitäten zu beachten die man auch für normale Hints beachten muss.
Intel erstellen
Intel kann grundsätzlich jedes Objekt sein. Getestet habe ich bisher folgende Classnames:
Intel_File2_F (Secret Documents)
Intel_File1_F (Documents).
Man muss unbedingt die Fraktion(en) benennen, für die das Intel verfügbar ist: WEST, EAST,...!
1. In die Init des Objekts folgendes einfügen (mit Bildern):
if (isServer) then {
// 3 verschiedene Beispiele für ein (mögliches) Bild (ich empfehle die untere)
this setVariable ['RscAttributeDiaryRecord_texture','a3\structures_f_epc\Items\Documents\Data\document_secret_01_co.paa', true];
this setVariable ['RscAttributeDiaryRecord_texture','a3\structures_f_epc\Items\Documents\Data\files_secret_ca.paa', true];
this setVariable ['RscAttributeDiaryRecord_texture','bild.jpg', true];
// Es folgen die Information der Dokumente
[this,'RscAttributeDiaryRecord',['Ueberschrift der Dokumente','Genaue Information<\br>Mit HTML-Tags zur Formatierung','']] call bis_fnc_setServerVariable;
// Für welche Seite sind diese Dokumente
this setVariable ['recipients', WEST, true];
};
2. Wenn man kein Bild braucht, nimmt man die Zeile raus. In die Init des Objekts folgendes einfügen (ohne Bilder):
if (isServer) then {
[this,'RscAttributeDiaryRecord',['Dokument eins','blablablablablablablabla','']] call bis_fnc_setServerVariable;
this setVariable ['recipients', WEST, true];
};
Link:
https://www.youtube.com/watch?v=A1QsFSedMWY