Einzelnen Beitrag anzeigen
Alt 31.07.2013, 11:09   #18 (permalink)
Togo
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard Respawn mit Inventar und Bewaffung

Hi,
ich verwende zusammen mit dem Respawnprozedur ein Script was sicherstellen soll dass das Inventar vom Player auch erhalten bleibt. Nun ist mir gestern Abend beim Training aufgefallen das einige Spieler von uns teilweise nicht mehr den Inhalt im Rucksack hatten. Bei mir selber war es nicht so….. So wie ich das verstehe läuft das Script lokal ab, kann es hier sein das leistungsschwächere Rechner das Script nicht zu 100 % ausführen? , oder liegt der Fehler im Script ? Wäre schön wenn ein erfahrener Scripter sich das mal anschauen könnte…
Hier das Script:


Code:
if (isMultiplayer && isDedicated) exitWith {};
WaitUntil {!isNull player};
player addEventHandler ["Killed", {
    _unit = _this select 0;
    private ['_magazines','_weapons','_backpack','_backpackweap','_backpackmags','_unit'];
    _weapons = weapons _unit;
    _magazines = magazines _unit;
    _backpack = if (!isNull unitBackpack _unit) then {typeOf unitBackpack _unit} else {""};
    if (_backpack != "") then {
        _backpackmags = getMagazineCargo unitBackpack _unit;
        _backpackweap = getWeaponCargo unitBackpack _unit;
        _unit setVariable ["players_bp_content",[_backpack,_backpackweap,_backpackmags]];
    } else {
        _unit setVariable ["players_bp_content",["","",""]];    
    };
    _items = items player;
    _unit setVariable ["players_content",[_weapons,_magazines,_items]];
}];
player addEventHandler ["Respawn", {
    _unit = _this select 0;
    private ['_a_stuff','_unit','_a_bp','_bp','_bpw','_bpm','_pi'];
    removeAllWeapons player;
    removeAllItems player;
    if (!isNull unitBackpack _unit) then {removeBackpack _unit};
    _a_stuff = _unit getVariable "players_content";
    _pw = _a_stuff select 0;
    _pm = _a_stuff select 1;
    _pi = _a_stuff select 2;
    {player addMagazine _x} foreach _pm;
    {player addWeapon _x} foreach _pw;
    {if !(player hasWeapon _x) then {player addWeapon _x}} forEach _pi;
    player selectWeapon (primaryWeapon player);
    _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon player >> "muzzles"); // Fix for weapons with grenade launcher
    player selectWeapon (_muzzles select 0);
    _a_bp = _unit getVariable "players_bp_content";
    _bp = _a_bp select 0;
    if(_bp != "") then {
        player addBackpack _bp;
        clearWeaponCargoGlobal (unitBackpack player);
        clearMagazineCargoGlobal (unitBackpack player);
        _bpw = _a_bp select 1;
        _bpm = _a_bp select 2;
        for "_i" from 0 to (count (_bpm select 0) - 1) do {
            (unitBackpack player) addMagazineCargoGlobal [(_bpm select 0) select _i,(_bpm select 1) select _i]
        };
        for "_i" from 0 to (count (_bpw select 0) - 1) do {
            (unitBackpack player) addWeaponCargoGlobal [(_bpw select 0) select _i,(_bpw select 1) select _i]
        };
    };
}];
Das ganze starte ich mit einem Aufruf in der init.sqf.



Gruß Togo
Togo ist offline