Einzelnen Beitrag anzeigen
Alt 12.07.2008, 13:20   #74 (permalink)
Xeno
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

Zitat von Andi <C.L.A.N.> Beitrag anzeigen

yeah danke ... das script funzt - is aber kompliziert was die handhabung angeht ... in der domination 3 von Xeno gibt es auch so ein weaponsswitch script ... aber ich kriege es nicht herausgelöst so das ich es selber nutzen kann !!!!

Versuchs mal so

Erstelle einen Auslöser, Bedingung local player
Bei Aktivierung: handle = [] execVM "x_setupbackpack.sqf";

x_setupbackpack.sqf:
Code:
// by Xeno
private ["_p","_pos","_trigger","_s"];
if (!local player) exitWith {};

_p = player;
_pos = position _p;

player_backpack = [];

pbp_id = -1000;

prim_weap_player = primaryWeapon _p;
_s = format ["%1 to Backpack", prim_weap_player];
if (prim_weap_player != "") then {
    pbp_id = _p addAction [_s, "x_backpack.sqf",[],-1,false];
};

// No Weapon fix for backpack
_trigger = createTrigger["EmptyDetector" ,_pos];
_trigger setTriggerArea [0, 0, 0, false];
_trigger setTriggerActivation ["NONE", "PRESENT", true];
_trigger setTriggerStatements["primaryWeapon player != prim_weap_player","prim_weap_player = primaryWeapon player;if (pbp_id != -1 && count player_backpack == 0) then {player removeAction pbp_id;pbp_id = -1;};if (pbp_id == -1 && count player_backpack == 0 && prim_weap_player != """") then {pbp_id = player addAction [format [""%1 to Backpack"", prim_weap_player], ""x_backpack.sqf"",[],-1,false];};",""];

while {true} do {
    waitUntil {!alive player};
    _p = player;
    _weapons = weapons _p;
    _magazines = magazines _p;
    if (pbp_id != -1000) then {
        _p removeAction pbp_id;
    };
    waitUntil {alive player};
    _p = player;
    removeAllWeapons _p;
    {_p addMagazine _x;} forEach _magazines;
    {_p addWeapon _x;} forEach _weapons;
    _primw = primaryWeapon _p;
    if (_primw != "") then {
        _p selectWeapon _primw;
        _muzzles = getArray(configFile>>"cfgWeapons" >> _primw >> "muzzles");
        _p selectWeapon (_muzzles select 0);
    };
    if (count player_backpack == 0) then {
        _s = format ["%1 to Backpack", primaryWeapon _p];
        pbp_id = _p addAction [_s, "x_backpack.sqf",[],-1,false];
    } else {
        _s = format ["Weapon %1", (player_backpack select 0)];
        pbp_id = _p addAction [_s, "x_backpack.sqf",[],-1,false];
    };
};

if (true) exitWith {};
x_backpack.sqf:
Code:
// by Xeno
private ["_p"];
_p = player;
_p removeAction pbp_id;

if (count player_backpack == 0) then {
    _primary = primaryWeapon _p;
    if (_primary != "") then {
        _mag_types = getArray(configFile>> "cfgWeapons" >> _primary >> "magazines");
        _magazines = magazines _p;
        _mags_backpack = [];
        {
            if (_x in _mag_types) then {_mags_backpack = _mags_backpack + [_x]};
        } forEach _magazines;
        _muzzles = getArray(configFile>> "cfgWeapons" >> _primary >> "muzzles");
        if (count _muzzles == 2) then {
            _mag_types = getArray(configFile>> "cfgWeapons" >> _primary >> (_muzzles select 1) >> "magazines");
            {
                if (_x in _mag_types) then {_mags_backpack = _mags_backpack + [_x]};
            } forEach _magazines;
        };
        player_backpack = [_primary, _mags_backpack];
        _weapons = weapons _p;
        _pistol = "";
        {
            scopeName "pistolsearch";
            _base = inheritsFrom (configFile >> "cfgWeapons" >> _x);
            for "_xs" from 1 to 3 do {
                if (configName _base == "Pistol") then {
                    _pistol = _x;
                    breakOut "pistolsearch";
                };
                _base = inheritsFrom (configFile >> "cfgWeapons" >> (configName _base));
            };
        } forEach _weapons;
        if (_pistol != "") then {
            _p removeWeapon _pistol;
        };
        {
            _p removeMagazine _x;
        } forEach _mags_backpack;
        _p removeWeapon _primary;
        _anim = animationState _p;
        WaitUntil {animationState player != _anim};
        _s = format ["Weapon %1", _primary];
        if (_pistol != "") then {
            _p addWeapon _pistol;
            _p selectWeapon _pistol;
        };
        pbp_id = _p addAction [_s, "x_backpack.sqf",[],-1,false];
    } else { // has no primary
    };
} else { // switch weapon
    _primary = primaryWeapon _p;
    if (_primary == "") then {
        {
            _p addMagazine _x;
        } forEach (player_backpack select 1);
        _p addWeapon (player_backpack select 0);
        _muzzles = getArray(configFile>>"cfgWeapons" >> (player_backpack select 0) >> "muzzles");
        _p selectWeapon (player_backpack select 0);
        _p selectWeapon (_muzzles select 0);
        _s = format ["%1 to Backpack", (player_backpack select 0)];
        player_backpack = [];
        _p removeAction pbp_id;
        pbp_id = _p addAction [_s, "x_backpack.sqf",[],-1,false];
    } else {
        _mag_types = getArray(configFile>> "cfgWeapons" >> _primary >> "magazines");
        _magazines = magazines _p;
        _mags_backpack = [];
        {
            if (_x in _mag_types) then {_mags_backpack = _mags_backpack + [_x]};
        } forEach _magazines;
        _muzzles = getArray(configFile>> "cfgWeapons" >> _primary >> "muzzles");
        if (count _muzzles == 2) then {
            _mag_types = getArray(configFile>> "cfgWeapons" >> _primary >> (_muzzles select 1) >> "magazines");
            {
                if (_x in _mag_types) then {_mags_backpack = _mags_backpack + [_x]};
            } forEach _magazines;
        };
        {
            _p removeMagazine _x;
        } forEach _mags_backpack;
        _weapons = weapons _p;
        _pistol = "";
        {
            scopeName "pistolsearch2";
            _base = inheritsFrom (configFile >> "cfgWeapons" >> _x);
            for "_xs" from 1 to 3 do {
                if (configName _base == "Pistol") then {
                    _pistol = _x;
                    breakOut "pistolsearch2";
                };
                _base = inheritsFrom (configFile >> "cfgWeapons" >> (configName _base));
            };
        } forEach _weapons;
        if (_pistol != "") then {
            _p removeWeapon _pistol;
        };
        _p removeWeapon _primary;
        sleep 1;
        _anim = animationState _p;
        WaitUntil {animationState player != _anim};
        {
            _p addMagazine _x;
        } forEach (player_backpack select 1);
        if (_pistol != "") then {
            _p addWeapon _pistol;
        };
        _p addWeapon (player_backpack select 0);
        _muzzles = getArray(configFile>> "cfgWeapons" >> (player_backpack select 0) >> "muzzles");
        _p selectWeapon (player_backpack select 0);
        _p selectWeapon (_muzzles select 0);
        player_backpack = [_primary, _mags_backpack];
        _s = format ["Weapon %1", _primary];
        pbp_id = _p addAction [_s, "x_backpack.sqf",[],-1,false];
    };
};

if (true) exitWith {};
Beim Respawn erhält der Spieler in dieser Variante auch seine Waffe zurück, die er vor dem Tode hatte.

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten