HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Arma 3 vvs addaction (https://hx3.de/editing-scripting-187/arma-3-vvs-addaction-25448/)

Felix/StockEnte 09.07.2016 00:04

Arma 3 vvs addaction
 
Vl kann mir hier jemand helfen. Ich möchte das ein addaction nur bei bestimmten Einheiten/Spielern gezeigt wird. der addaction script sieht so aus:

Code:

this addAction["Virtual Vehicle Spawner",VVS_fnc_openVVS,["air_spawn_1","ALL"]]
Wie macht man das genau, weiß das jemand

Sarogahtyp 09.07.2016 09:30

was meinst du mit bestimmte spieler? Wie unterscheiden sie sich von anderen? Sind das einfach irgendwelche kumpels? Dann müsstest du ihre uid kennen und prüfen. Das funktioniert dann mit getPlayerUID. Aber schreib erstmal was du genau me9nst!

Felix/StockEnte 09.07.2016 10:12

Ich mein mit bestimmte spieler einheiten z.b Pilot.
Und ich will das z.b nur der pilot die aktion ausführen kamn.

lucullus 09.07.2016 10:38

Du kannst den addAction Befehl ein condition-Parameter mitgeben.
z.B.:
MG_Nest_id = player addAction ["MG-Nest aufbauen","Kmd_Aktionen\MG_Nest.sqf",nil,1,false,t rue,"","Backpack player == 'B_HMG_01_weapon_F' && (vehicle player) == player"];

Felix/StockEnte 09.07.2016 11:11

Ich werds gleich mal ausprobieren

lucullus 09.07.2016 11:59

In meinem Beispiel wird ein Skript aufgerufen, welches ein Stand-MG ohne Dreibein aufbaut.
Bedingung ist hier: Spieler hat Rucksack mit statischen MG auf den Rücken && sitzt nicht im Fahrzeug.

Für dein Problem könntest du z.B.: "name _this isEqualTo 'Stockente' && (toLower (typeOf _this) in ["b_pilot_f","b_helipilot_f"])" als Bedingung eingeben.

Felix/StockEnte 09.07.2016 12:18

ich hab jetzt bei der condition stehen:

Pilot = ["Pilot1","Pilot2","...."]


"typeof Player in Pilot"

lucullus 09.07.2016 12:44

(typeOf player) gibt dir den classname zurück,

also typeOf weglassen.

Felix/StockEnte 09.07.2016 13:05

ich wollte es ja auf Klassen einschränken. zb das nur noch Piloten den spawner für Flugzeuge öffnen können. Mit den Conditions funktionierts jetzt auch

Drunken Officer 09.07.2016 15:59

FlugzeugspawnID = this addAction ["<t color='#FF0000'>Spawner</t>", VVS_fnc_openVVS,["air_spawn_1","ALL"],6,false,false,"","typeOf _this == ""Pilotenklassenname"" "]

EDIT:
Mal für dich und für andere zur Erklärung
Code:

EineID = this addAction
        [
        "<t color='#FF0000'>Flieg Vogel, Flieg!</t>",
        {_i = ((_this select 3) select 0); _ude = (_this select 1);  while {_i > 0} do { systemchat format ["Katapultstart in %1 sek", _i]; sleep 1, _i = _i - 1} ; _ude setpos [ getpos _ude select 0, getpos _ude select 1, + ((_this select 3) select 1)]; _ude addbackpack "B_Parachute" },
        [10,800],
        6,
        false,
        false,
        "",
        " typeof _this == ""B_Soldier_F"" "
        ];

->ID wird bemötigt, um diesen aa-Eintrag wieder wegzunehmen
->Flieg Vogel, Flieg = was liest der Spieler
-> { ---scriptcode } ist der Code welcher ausgeführt wird. Es kann auch lauten "meinscript.sqf" oder fnc_irgendeineFunktion. (_this select 0) ist das Ding wo der Befehl dran hängt, (_this select 1) der es ausführt
-> [10, 800] sind Agrumente. Es kann alles sein. Angesprochen wird es mit (_this select 3). Wenn es ein Array ist und ich will das erste Element haben, nehme ich ((_this select 3) select 0). Werden keine Argumente benötigt kommt ein nil

--> in meinem Beispiel zählt das Script 10 Sekunden runter (Argument 1). Dannach wird der Spieler 800m (Argument 2) in die Höhe geschossen

-> Priorität von 0 - 6 (wenig - hoch)
-> false / true (soll der Eintrag nach dem Benutzen versteckt werden)
-> false / true (soll der Eintrag auch mittig im Bildschirm angezeigt werden
-> "" ImputAction (damit habe ich mich selber noch nicht beschäftigt)
-> Bedingung ( _this ist der der aufruft und _targert das Objekt wo es dran hängt

Beispiel ..... " _this distance _target < 2" oder " diver _targert == _this" , "name _this == ""Drunken Officer"" " usw. Es sind auch mehrere Bedingungen möglich. "_this distance _target < 2 && name _this == ""Drunken Officer"" ". Da wir bereits in " " arbeiten, müßen Strings mit "" "" oder mit ' ' angeführt werden.
--> in meinem Fall muss der Aufrufer der Klasse "B_Soldier_F" angehören

*********
Mit Addaction kann man auch Variablen prüfen lassen, welche in Objekten gespeichert wurden.
z.B. zum Start bekommt jeder Spieler in seine lokal init player setVariable ["getkeycard", false]

Irgendwann findet der Spieler die Karte. An die Karte hängt man:
KartenID = this addaction ["ID Card nehmen", "(_this select 1) setVariable [""getkeycard"", true] } ]

Jetz will man nur ein Tor zu Basis öffnen lassen, wenn jemand die Karte hat (das muss nicht ALTIS LIFE sein, man kann damit prima SpecOps-Missionen gestalten), da kommt in die Bedingung
"_this getVariable ""getkeycard"" " rein. Oder man verbaut es im Aufgerufenen Script


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