12.12.2012, 21:32 | #1 (permalink) |
Registriert seit: 12.12.2012
Beiträge: 20
|
Im Heli als Passagier einsteigen
Hallo Leute
Ich möchte das der Spieler egal was für eine Position er auswählt, immer als Passagier einsteigt. z.B. Er wählt den Pilotensitz aus, stitzt dann aber als Passagier im Heli Das müsste doch mit "moveInCargo" funktionieren oder bin ich da am Holzweg? Das hab ich gefunden geht aber nicht: if (player == driver vehicle player) then {player moveInCargo vehicle player}; |
13.12.2012, 10:27 | #5 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Dass man mit vehicle player die ID eines Fahrzeuges auslesen kann, wenn der Spieler im Fahrzeug ist, wusste ich bis gestern auch nicht. Auch nichts von der Unmöglichkeit mit moveIn im Fahrzeug befindliche Objekte umzusetzen.
Was ich weiß (aus unzähligen Erfahrungen mit OFP und Arma), ist wie man derartige Probleme austesten kann. So bin ich auch in diesem Fall auf die Lösung gekommen. War nicht gleich so aus dem Ärmel geschüttelt. |
13.12.2012, 15:17 | #8 (permalink) |
Registriert seit: 12.12.2012
Beiträge: 20
|
Ich möchte das Offiziere und Piloten den Heli fliegen können. Der Rest ab in den Laderaum
ich hab das mal so umgesetzt: Code:
_vehicleType = "Pane"; _planeCrew = ["USMC_Soldier_Officer", USMC_Soldier_Pilot]; if (typeof player != _planeCrew) then { private "_v"; while {alive player} do { waituntil {vehicle player != player}; _v = vehicle player; if (_v iskindof _vehicleType ) then { if (driver _v == player) then {_f = vehicle player;player setPos [0,0];player moveInCargo _f;}; }; }; }; |
13.12.2012, 15:38 | #9 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Kommt darauf an was man will. Will man verhindern, dass alle Spieler in ein bestimmtes Objekt nicht als Driver einsteigen dürfen, dass ist lockDriver als Sperre für dieses Fahrzeug die Lösung. Aber besteht im Objekt die Möglichkeit auf den Fahrersitz zu wechseln, dann ist das möglich. Soll das Verhindern für alle Fahrzeuge und auch beim internen Wechseln wirksam sein, so geht das leicht mit folgendem Auslöser. Aktivierung: Keine / Mehrfach Bedingung: player != vehicle player and player == driver vehicle player Bei Akt.: F = vehicle player; moveOut player; player moveInCargo F Man kann mit so einem Auslöser nur einem bestimmten Spieler erlauben Driver zu sein. Dafür muss die Bedingung dann so aussehen: player != S1 and player != vehicle player and player == driver vehicle player Nun darf der Spieler S1 Driver sein, die übrigen nicht. Soll es mehreren Spielern erlaubt sein, dann mit dieser Bedingung: player != S1 and Player != S2 and player != vehicle player and player == driver vehicle player Nun dürfen der Spieler S1 und S2 Driver sein, die übrigen nicht. Die Sperre ist auch nur für ein bestimmtes Objket möglich. Soll die Sperre des Auslösers z.B. nur für das Objekt Fahrzeug1 sein, dann muss die Bedingung so lauten: vehicle player == Fahrzeug1 and player == driver vehicle player Geändert von Vienna (13.12.2012 um 15:57 Uhr). |
13.12.2012, 15:47 | #11 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Versuche das einmal mit: http://community.bistudio.com/wiki/countType |
13.12.2012, 15:55 | #12 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Stimmt! Anstelle von setPos ist moveOut möglich. Da gibt es dann auch keine Probleme mit einem Panzer. Somit Bei Akt.: F = vehicle player; moveOut player; player moveInCargo F Ich werde das in obigem Post korrigieren. Geändert von Xeno (08.12.2013 um 17:23 Uhr). |
14.12.2012, 08:37 | #13 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
Bin kein Scripter (noch nicht). Sehe aber in der ersten Zeile Deines Scripts, dass da ein 'l' fehlt. Da steht 'pane' statt 'plane'. Absicht? |
14.12.2012, 10:38 | #14 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Richtig, Pane ist keine Klasse, sondern Plane.
In dieser Zeile: _planeCrew = ["USMC_Soldier_Officer", USMC_Soldier_Pilot]; fehlen bei der 2. Klasse die Anführungszeichen. Weiters würde ich es anstelle von if (typeof player != _planeCrew) then {... mit if (typeOf player countType _planeCrew > 0) then {... versuchen, wie bereits erwähnt. Damit die Init.sqf nicht blockiert wird, als Unterprogramm mit Spawn anlegen. Insgesamt so: Code:
//Verhindert unbefugte Spieler als Driver in steuerbaren Objekten // Parameter: // 1. Klasse der verbotenen Objekte // 2. Array mit Klassen der befugten Driver // //Die while-Schleife wird nur für Unbefugte aktiviert ["Plane", ["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]] spawn { private ["_vehicleType","_planeCrew","_f"]; _vehicleType = _this select 0; _planeCrew = _this select 1; if (typeOf player countType _planeCrew == 0) then { while {true} do { waituntil {player != vehicle player and player == driver vehicle player}; _f = vehicle player; if (_f isKindOf _vehicleType) then { moveOut player; player moveInCargo _f }; sleep 1 } } }; |
14.12.2012, 15:39 | #15 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Ich habe die Routine jetzt getestet und festgestellt, dass der Befehl countType nicht funktioniert.
Ersatzweise wird {_x == typeOf player} count _planeCrew verwendet. Folgende Routine läuft jetzt. Auch habe ich "Plane" durch "Helicopter" ersetzt. Code:
//Verhindert unbefugte Spieler als Driver in steuerbaren Objekten // Parameter: // 1. Klasse der verbotenen Objekte // 2. Array mit Klassen der befugten Driver // //Die while-Schleife wird nur für Unbefugte aktiviert temp = ["Helicopter", ["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]] spawn { private ["_vehicleType","_planeCrew","_f"]; _vehicleType = _this select 0; _planeCrew = _this select 1; if ({_x == typeOf player} count _planeCrew == 0) then { while {true} do { waituntil {player != vehicle player and player == driver vehicle player}; _f = vehicle player; if (_f isKindOf _vehicleType) then { moveOut player; player moveInCargo _f }; sleep 1 } } }; |
22.12.2012, 12:54 | #17 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das ist eine Eigenschaft von count: http://community.bistudio.com/wiki/count
Hier eine bessere Version zum Verhindern als Dirver, die auch berücksichtigt wenn ein vorhandener Driver zwischenzeitlich entfernt wurde: Missionserstellung Tipps&Tricks |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Heli Wegpunkt zuweisen | Rubbermen | Editing & Scripting | 1 | 06.10.2012 23:41 |
Heli schießt nicht auf Infantrie | tramu | Editing & Scripting | 2 | 30.07.2012 19:58 |
Medvac Heli anfordern... | Bowi | Editing & Scripting | 4 | 18.01.2011 17:34 |
jeep am Heli oder Falschirm | Lotos | Editing & Scripting | 3 | 10.12.2010 23:12 |
Lösung Heli landung/abholung missionsende | OF2000_editingfreak | Editing & Scripting | 2 | 12.11.2010 14:02 |