16.12.2012, 19:14 | #21 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Einzelne Player als Driver ausschließen
Vorherige Version gelöscht!
Xeno, wenn das Vehicle fährt, kann man nur schwer einsteigen. Wenn kein Platz mehr ist, kann man nicht einsteigen. Ein Problem war beim versuchten Umsteigen im Fahrzeug auf den Driver-Sitz. Das sollte jetzt behoben sein. Vorausgesetzt Arma führt die Befehle ordnungsgemäß aus. Wenn das System überlastet ist, dann wird so manches nicht richtig funktionieren. Wer Lust hat, der kann die folgende Routine testen. Im Mehrspielermodus ist es manchmal erwünscht, dass nur bestimmte Spielfiguren z.B. einen Helikopter und/oder einen Panzer steuern dürfen. Mit dem folgenden Skript ist es möglich nur bestimmten Spielfiguren-Klassen als "Driver" in Klassen steuerbarer Objekte (wie Flugobjekte oder Tanks) einzusteigen. Skript Driver_Verbot.sqf Code:
/* Skript läuft Lokal bei Playern Verhindert unbefugte Spieler als Driver in lenkbaren Objekten. Versetzt die Spieler ersatzweise auf einen sonstigen freien Platz. Parameter: [[Vehicle,[Unit,Unit,...]],[Vehicle,[Unit,Unit,...]],...] execVM "Driver_Verbot.sqf"; Vehicle = Klasse der verbotenen Objekte Unit = Klasse eines befugten Drivers Beispiel-Aufruf des Skripts für Helikopter und Panzer: [ ["Helicopter",["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]], ["Tank", ["USMC_Soldier_Officer", "USMC_Soldier_Crew" ]] ] execVM "Driver_Verbot.sqf"; */ if (! local player) exitWith {}; // Nur für Spieler aktivieren private ["_vehicleType","_driverTypen","_vhID","_vhDriver"]; while {true} do //Dauerschleife bis Spielende { //Warten bis Spieler in ein Objekt einsteigt waituntil {player != vehicle player}; _vhID = vehicle player; //ID des bestiegenen Objektes //Ist ein anderer Driver im Vehicle? if (NOT isNull driver _vhID and driver _vhID != player) then {_vhDriver = driver _vhID} else {_vhDriver = objNull}; while {player != vehicle player} do { if (player == driver _vhID) then //ist player Driver des Objekts? { { _vehicleType = _x select 0; _driverTypen = _x select 1; //Spieler keiner der erlaubten Driver-Typen? if ({_x == typeOf player} count _driverTypen == 0) then { //Spieler Driver in einem nicht erlaubten Objekt? if (_vhID isKindOf _vehicleType) then { moveOut player; //Falls anderer Driver im Vehicle war, dann wieder als Driver einsetzen if (NOT isNull _vhDriver) then {moveOut _vhDriver;_vhDriver moveInDriver _vhID}; //Spieler raus aus dem Objekt und umsetzen wenn möglich player moveInCargo _vhID; if (player == vehicle player) then {player moveInCommander _vhID}; if (player == vehicle player) then {player moveInGunner _vhID} } } } forEach _this //Durchläuft alle Vehicle-Typen mit den zugehörigen Driver-Typen }; sleep 1 } } Es könnte beim Skript-Aufruf z.B. noch die Klasse für Flugzeuge ("Plane") hinzugefügt werden und nur den Piloten erlaubt sein zu steuern. Das würde dann so aussehen: Code:
[ ["Helicopter",["USMC_Soldier_Officer", "USMC_Soldier_Pilot"]], ["Tank", ["USMC_Soldier_Officer", "USMC_Soldier_Crew" ]], ["Plane", ["USMC_Soldier_Pilot"]] ] execVM "Driver_Verbot.sqf"; Sind auch Spieler der Ost- oder einer anderen "Seite" im Spiel, dann sind deren Klassen-Namen nach denen der USMC-Soldaten in den Parametern hinzuzufügen. Beim Aufruf eines Skripts über einen Auslöser muss dem Aufruf eine Variable vorangestellt werden: temp = [....] execVM "Driver_Verbot.sqf"; |
19.12.2012, 19:08 | #22 (permalink) |
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 39
Beiträge: 2.666
|
Danke Vienna fuer deinen Beitrag, ich habe die Beispielmission mit angefuegt.
Ich werde demnaechst mal wieder am Thema weiterarbeiten, hatte nur zuletzt wenig Zeit dafuer. Nochmal Danke an alle die mit untersteutzen. gruß hoschi |
03.01.2013, 16:33 | #23 (permalink) |
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 39
Beiträge: 2.666
|
Neue Demomissionen von Wolkenbeisser
zum Thema hinzugefuegt
|
08.01.2013, 18:05 | #28 (permalink) |
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 39
Beiträge: 2.666
|
Ein Danke fuer die Unterstuetzung!
Ich moechte mich an dieser Stelle bei Wolkenbeisser fuer seine tolle Unterstuetzung mit gut Dokumentierten und leicht verstaendlichen Demomissionen bedanken. Er hat sich sehr viel muehe bei den Demos gegeben und erleichtert es Zukuenftigen Missionserstellern die sich in diesem Thema umschauen den Einstieg und bietet gute Beispiele.
Mein Dank gilt aber auch allen Anderen die an diesem Thema mitwirken und auch denen die ihre Hilfe im hx3 seit Jahren anbieten. Euer Support ist einfach Klasse. Vielen Dank fuer eure tolle Hilfe Leute! gruß moerderhoschi |
Stichworte |
beginner, editing, guide, hoschi hilft, kannst du das ueberhaupt, kritik erwuenscht, leitfaden, mission erstellen, neulinge, so helfe er doch, tipps, tricks, tutorial |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|