ARMA 3 - MISSION EDITING & SCRIPTING Arma 3 - Fahrzeuge in Flammen
Arma 3 - Fahrzeuge in Flammen
Quelle: Gametwitter.de Forum | views: 1870

Zur Untermalung möglicher Gefechtsfelder nutze ich gelegendlich zusammen mit einem Trigger das nachfolgende Script. In meinem Fall werden Fahrzeuge in Brand gesetzt, soweit sich Spieler in dem entsprechenden Trigger befinden. Zunächst werden Fahrzeuge als Wrack platziert und benannt, zb. wrack_1, wrack_2 usw.

Es so aber auch alle möglichen Objekte in Brand gesetzt werden. In diesem Fall nutze ich das Skript nur für Fahrzeuge.

Eine Beispielmission ist als Anhang beigefügt.

Es muss kein Fahrzeug der Editor Rubrik Wrack sein. Man kann hier folgenden Befehl für die Initzeile des Fahrzeugs setzen:

this setDamage [1,false]; this enableSimulationGlobal false;

Um die Fahrzeuge entsprechend zu "gestalten" gibt einem das Script 6 Möglichkeiten umd das Ambiente eine Gefechtsfeldes entsprechend auszuschmücken

FIRE_SMALL , FIRE_MEDIUM , FIRE_BIG , SMOKE_SMALL , SMOKE_MEDIUM , SMOKE_BIG

Die Begrifflichkeiten sind ja selbsterklärend mit englischen Grundkenntnissen, ansonsten einfach ausprobieren :).

Nun setzt man den Trigger entweder gross genug oder man setzt für jedes Fahrzeugwrack einen im gewünschten Bereich.


Trigger

Aktivierung: vehicle player in thisList

Bedingung:
[getPos wrack_1, "FIRE_BIG", wrack_1] execVM "VehicleInFlames.sqf"; 
[getPos wrack_2, "SMOKE_MEDIUM", wrack_2] execVM "VehicleInFlames.sqf"; 
[getPos wrack_3, "FIRE_MEDIUM", wrack_3] execVM "VehicleInFlames.sqf";

VehicleInFlames.sqf

private["_effect","_pos","_fire","_smoke","_obj"];
private["_light","_brightness","_color","_ambient","_intensity","_attenuation"];

_pos     = _this select 0;
_effect = _this select 1;
_obj     = _this select 2;

_fire    = objNull;
_smoke    = objNull;
_light    = objNull;
_color        = [1,0.85,0.6];
_ambient    = [1,0.3,0];

switch (_effect) do {
    case "FIRE_SMALL" : {
        _fire     = "SmallDestructionFire";
        _smoke     = "SmallDestructionSmoke";
    };
    case "FIRE_MEDIUM" : {
        _fire     = "MediumDestructionFire";
        _smoke     = "MediumDestructionSmoke";
        _brightness    = 1.0;
        _intensity    = 400;
        _attenuation    = [0,0,0,2];
    };
    case "FIRE_BIG" : {
        _fire     = "BigDestructionFire";
        _smoke     = "BigDestructionSmoke";
        _brightness    = 1.0;
        _intensity    = 1600;
        _attenuation    = [0,0,0,1.6];
    };
    case "SMOKE_SMALL" : {
        _smoke     = "SmallDestructionSmoke";
    };
    case "SMOKE_MEDIUM" : {
        _smoke     = "MediumSmoke";
    };
    case "SMOKE_BIG" : {
        _smoke     = "BigDestructionSmoke";
    };
};

if(isNil "_fire") then {
    _eFire = "#particlesource" createVehicleLocal _pos;
    _eFire setParticleClass _fire;
    _eFire setPosATL _pos;
};

    _eSmoke = "#particlesource" createVehicleLocal _pos;
    _eSmoke setParticleClass _smoke;
    _eSmoke setPosATL _pos;



if (_effect in ["FIRE_BIG","FIRE_MEDIUM"]) then {
    _pos   = [_pos select 0,_pos select 1,(_pos select 2)+1];
    _light = createVehicle ["#lightpoint", _pos, [], 0, "CAN_COLLIDE"];
    _light setPosATL _pos;

    _light setLightBrightness _brightness;
    _light setLightColor _color;
    _light setLightAmbient _ambient;
    _light setLightIntensity _intensity;
    _light setLightAttenuation _attenuation;
    _light setLightDayLight false;
};


waituntil{vehicle player distance _obj > 300};
deleteVehicle _light;
deleteVehicle _eSmoke;

if(isNil "_fire") then {
    deleteVehicle _eFire;
};

Eine grobe Ansicht

VehicleInFlames.jpg

Eine Kommentarfunktion ist in diesem Blog nicht vorgesehen.
Bei Problemen zum Skript bitte im Gametwitter.de Forum registieren und dort die Kommentarfunktion nutzen.