Skip to content

Instantly share code, notes, and snippets.

@Dorbedo
Created August 10, 2016 11:27
Show Gist options
  • Save Dorbedo/473674bbb806491efe0abb11f61c3dce to your computer and use it in GitHub Desktop.
Save Dorbedo/473674bbb806491efe0abb11f61c3dce to your computer and use it in GitHub Desktop.
Arma 3 - VirtualGarage Aufruf
/*
* Author: Dorbedo
*
* Macht die Garage fit für den Multiplayer
*
* Requirements
* Mapmarker mit dem Objektnamen "DORB_Garagenplatz"
*
* Aufruf via [] execVM "garage.sqf"
* alternativ als compilierte Funktion mittels call
*
*/
#define GARAGENMARKER "DORB_Garagenplatz"
If (!hasInterface) exitWith {};
/*
* Vermeidung von Fehlern, wenn der Marker nicht existiert
*/
If !(GARAGENMARKER in allMapMarkers) exitWith {};
/*
* Erstellen des temporären Positionsobjektes - wird von der Garage selbst gelöscht.
* Genutzt um den Spawn vom Spieler unabhängig zu machen
*/
private _veh = "Land_HelipadEmpty_F" createVehicleLocal (getMarkerPos GARAGENMARKER);
/*
* Öffnen der Garage
* Wenn nicht die Vollständige Garage zur Verfügung stehen soll:
* ["Open",[false,_veh]] spawn BIS_fnc_garage;
*/
["Open",[true,_veh]] spawn BIS_fnc_garage;
uisleep 1;
/*
* Hinzufügen der Schnittstelle zum Wechsel des lokalen spawns zum globalen spawn
* Nutzen eines DisplayEventhandlers
*/
disableserialization;
uinamespace setVariable ["DORB_Garagenhandler",((uinamespace getVariable "RscDisplayGarage") displayAddEventHandler ["unload", {
/*
* Entfernen des DisplayEventhandlers
*/
disableserialization;
(uinamespace getVariable "RscDisplayGarage") displayRemoveEventHandler ["unload",uinamespace getVariable ["DORB_Garagenhandler",-1]];
[] spawn {
uisleep 2;
/*
* Auslesen der Daten des Lokalen Garagenobjektes
*/
private _vehicle = missionNamespace getVariable ["BIS_fnc_garage_center",objNull];
private _vehiclePos = getPos _vehicle;
private _vehicleType = typeOf _vehicle;
([_vehicle] call BIS_fnc_getVehicleCUstomization) params ["_textures","_animations"];
/*
* Workaround für mittels Template gespawnte Fahrzeuge (bspw. RHS)
*/
private _textures_new = getobjecttextures _vehicle;
/*
* Löschen der evtl gespawnten Crew + des lokalen Fahrzeuges
*/
{deleteVehicle _x} forEach (crew _vehicle) + [_vehicle];
/*
* Kreieren des Multiplayer tauglichen Objektes und drehen des Objektes
*/
private _newVehicle = createVehicle [_vehicleType, _vehiclePos, [GARAGENMARKER], 5 , "NONE"];
_newVehicle setDir (Markerdir GARAGENMARKER);
/*
* Kreieren des Multiplayer tauglichen Objektes und drehen des Objektes
*/
[_newVehicle,_textures,_vehicle getVariable ["bis_fnc_initVehicle_animations",_animations]] spawn bis_fnc_initVehicle;
/*
* Der 2. Teil des Texturen Workarounds
*/
If (_textures isEqualTo []) then {
{_newVehicle setObjectTextureGlobal [_forEachIndex,_x];} forEach _textures_new;
};
/*
* Schnittstelle für weitere Modifikationen -> Wenn CBA nicht vorhanden, wird es ignoriert.
*/
If !(isNil "CBA_fnc_globalEvent") then {
["Dorb_Garage_spawned",[player,_newVehicle]] call CBA_fnc_globalEvent;
};
};
}])];
@Ugga-the-Caveman
Copy link

Die Animationen werden nur noch teilweiße auf das neu gespawnte Fahrzeug übertragen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment