Zitat von
Andi <C.L.A.N.>
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