HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Fahrername oder Uid auslesen. (https://hx3.de/editing-scripting-187/fahrername-uid-auslesen-24371/)

Togo 29.10.2014 14:12

Fahrername oder Uid auslesen.
 
Hallo,

kann mir jemand sagen wie ich es bewerkstellige den Namen oder die Uid eines Fahres auszulesen ?
Ich möchte ein Script schreiben das nur bestimmte Personen als Fahrer oder Piloten zulässt, einsteigen als Beifahrer usw. soll möglich bleiben…
Gruß

Togo

Drunken Officer 29.10.2014 18:38

Ich würde die figuren die es dürfen mal als p1 p2 p3 benennen und in einen Array stecken
. Danach eine Abfrage ob die Person im Array ist
Code:

private ["_pilotenarray", "_dv", "_abfrage"];
_abfrage = false;
_pilotenarray = [p1,p2,p3];
_dv = driver fahrzeugnahme;
//testzeile
hint format ["%1", _dv]; //sollte dann eigentlich p1 etc pp ausgeben
_abfrage = _dv in _pilotenarray;
if (! _abfrage) then {_dv leaveVehicle fahrzeugname};

Das ist ungetestet
Ich habe es über den Type des Spielers gelöst. Also nur gewissen Eineiten (z.B. B_Pilot_F) kann fliegen.

Denke daran, in ArmA 3 kann man als Co-Pilot die Stuerung übernehmen.

Buliwyf 29.10.2014 19:18

getPlayerUID

Damit lässt sich was machen... ;)

Drunken Officer 30.10.2014 09:54

So ich habe es jetzt einmal getestet.

Es funktioniert wenn du die Figuren die einsteigen können mit P1 P2 P3 P4 usw. benennst.
Dann muß der Array so aussehen
_pilotenarray = [p1,p2,p3,p4]

Du kannst aber auch die Spielernamen nehmen. Dann muss der Array so aussehen
_pilotenarray = ["Drunken Officer", "Broda", "Bosch"];

Wenn du mit Namen arbeitest, musst du das rot markierte nutzen.

Jetzt ist es an dir, wie das Script starten soll. Es macht wenig Sinn, es permanent in einer Schleife laufen zulassen, oder es mit waitunitl zu stoppen.
Das ganze sollte ja eigentlich nur auslösen, wenn man einsteigt. Ich habe es über einen Eventhandler gemacht.

Folgenden Code habe ich an einem Hunter genutzt.
Code:

this addEventHandler ["getin",
{
if (!local player) exitWith {};
hint format ["%1", (_this select 2)];
private ["_pilotenarray", "_dv", "_abfrage"];
_abfrage = false;
_pilotenarray = ["Drunken Officer", "Broda", "Bosch"];
_dv = driver (_this select 0);
_abfrage = (name _dv) in _pilotenarray;
if (!_abfrage) then { player action ["getout", (vehicle player)]; player sidechat format ["%1, du gehörst nicht zum auserwählten Kreis Derer, die das dürfen.", (name _dv)];  };
}]

Genauso könntest du auch die UID auslesen und mit dem Array abgleichen. Dann aber OHNE Namenscheck

Tajin 30.10.2014 11:04

Denkt daran das der "GetIn" Eventhandler nicht ausgelöst wird, wenn jemand der schon im Fahrzeug ist den Sitzplatz wechselt!

Vienna 30.10.2014 12:05

Vielleicht hilft das hier: Einzelne Player als Driver ausschließen


Beispiel-Aufruf des Skripts für Helikopter und Panzer (Arma2):

[
["Helicopter",["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]],
["Tank", ["USMC_Soldier_Officer", "USMC_Soldier_Crew" ]]
] execVM "Driver_Verbot.sqf";


Beim Aufrufen des Skripts sind die Klassen-Namen von Arma3 zu nehmen!

Drunken Officer 30.10.2014 23:07

Zitat:

Zitat von Tajin (Beitrag 478430)
Denkt daran das der "GetIn" Eventhandler nicht ausgelöst wird, wenn jemand der schon im Fahrzeug ist den Sitzplatz wechselt!

Das ist richtig. Deswegen gab ich den Hinweis, dass man Sitzplätze wechseln kann.
Handelt es sich um Luftfahrzeuge, so kann man auch den Co-Piloten blocken. Ich kenne kein LFZ, wo man vom Passagier zum (Co)Piloten wechseln kann.


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