Heli Crash site with no loot

Syn Rapture

Member
Hey guys...
I've just created a new server after a few months of having the old one (1.7.4) down and I've noticed there is no loot in the crash sites... For what I've been reading, it's because of a version (1.7.6) change, making loot from Heli Crashes pretty unlikely to appear.

Has anybody got a modified the script to get it like it was before?



Thanks in advance.
 
That's odd...I've seen loot at my helo crashes (M107, FN FAL, etc). Although, the amount of usable loot has drastically decreased. Most heli crashes are just junk or basic loot.
 
I have had the same issue after upgrading from 1.7.5.1 to 1.7.6.0 and then 1.7.6.1 What I ended up doing was creating a fresh install of all server files starting from the base Arma2 + OA and everything, and now it works. It must have been some old file hanging around in a directory that messed stuff up or something, I'm not sure.
 
I formatted my PC and that's why I started from scratch with this new server. I've already edited every file I found heli crash parameters in and no success yet :s
 
Hmm if the crash sites do appear, but it's just the loot that stays missing, the problem should be in the compile\server_spawnCrashSite.sqf file that's packed within the @hive\dayz_server.pbo file.

That's where the actual crash sites and the items that spawn with them are handled. Maybe you edited some stuff that causes an error when trying to spawn the items in so it prevents the actual spawn or something?
 
Hmm if the crash sites do appear, but it's just the loot that stays missing, the problem should be in the compile\server_spawnCrashSite.sqf file that's packed within the @hive\dayz_server.pbo file.

That's where the actual crash sites and the items that spawn with them are handled. Maybe you edited some stuff that causes an error when trying to spawn the items in so it prevents the actual spawn or something?
I haven't edited "server_spawnCrashSite.sqf ", but a friend came over a few days ago and modified some files; maybe he did when and I didn't even notice... Here it is:

Code:
private["_position","_num","_config","_itemType","_itemChance","_weights","_index","_iArray","_crashModel","_lootTable","_guaranteedLoot","_randomizedLoot","_frequency","_variance","_spawnChance","_spawnMarker","_spawnRadius","_spawnFire","_permanentFire","_crashName"];
 
//_crashModel    = _this select 0;
//_lootTable    = _this select 1;
_guaranteedLoot = _this select 0;
_randomizedLoot = _this select 1;
_frequency    = _this select 2;
_variance    = _this select 3;
_spawnChance    = _this select 4;
_spawnMarker    = _this select 5;
_spawnRadius    = _this select 6;
_spawnFire    = _this select 7;
_fadeFire    = _this select 8;
 
 
diag_log("CRASHSPAWNER: Starting spawn logic for Crash Spawner");
 
while {true} do {
    private["_timeAdjust","_timeToSpawn","_spawnRoll","_crash","_hasAdjustment","_newHeight","_adjustedPos"];
    // Allows the variance to act as +/- from the spawn frequency timer
    _timeAdjust = round(random(_variance * 2) - _variance);
    _timeToSpawn = time + _frequency + _timeAdjust;
   
    //Adding some Random systems
    _crashModel = ["UH60Wreck_DZ","UH1Wreck_DZ"] call BIS_fnc_selectRandom;
   
    //Crash loot just uncomment the one you wish to use by default with 50cals is enabled.
    //Table including 50 cals
    _lootTable = ["Military","HeliCrash","MilitarySpecial"] call BIS_fnc_selectRandom;
    //Table without 50 cals
    //_lootTable = ["Military","HeliCrash_No50s","MilitarySpecial"] call BIS_fnc_selectRandom;
   
   
    _crashName    = getText (configFile >> "CfgVehicles" >> _crashModel >> "displayName");
 
    diag_log(format["CRASHSPAWNER: %1%2 chance to spawn '%3' with loot table '%4' at %5", round(_spawnChance * 100), '%', _crashName, _lootTable, _timeToSpawn]);
 
    // Apprehensive about using one giant long sleep here given server time variances over the life of the server daemon
    while {time < _timeToSpawn} do {
        sleep 5;
    };
 
    _spawnRoll = random 1;
 
    // Percentage roll
    if (_spawnRoll <= _spawnChance) then {
 
        _position = [getMarkerPos _spawnMarker,0,_spawnRadius,10,0,2000,0] call BIS_fnc_findSafePos;
 
        diag_log(format["CRASHSPAWNER: Spawning '%1' with loot table '%2' NOW! (%3) at: %4", _crashName, _lootTable, time, str(_position)]);
 
        _crash = createVehicle [_crashModel,_position, [], 0, "CAN_COLLIDE"];
        // Randomize the direction the wreck is facing
        _crash setDir round(random 360);
 
        // Using "custom" wrecks (using the destruction model of a vehicle vs. a prepared wreck model) will result
        // in the model spawning halfway in the ground.  To combat this, an OPTIONAL configuration can be tied to
        // the CfgVehicles class you've created for the custom wreck to define how high above the ground it should
        // spawn.  This is optional.
        _config = configFile >> "CfgVehicles" >> _crashModel >> "heightAdjustment";
        _hasAdjustment =  isNumber(_config);
        _newHeight = 0;
        if (_hasAdjustment) then {
            _newHeight = getNumber(_config);
            //diag_log(format["DIAG: ADJUSTMENT FOUND FOR %1, IT IS: %2", _crashName, _newHeight]);
        };
 
        // Must setPos after a setDir otherwise the wreck won't level itself with the terrain
        _adjustedPos = [(_position select 0), (_position select 1), _newHeight];
        //diag_log(format["DIAG: Designated Position: %1", str(_adjustedPos)]);
        _crash setPos _adjustedPos;
 
        // I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
        dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_crash];
 
        _crash setVariable ["ObjectID",1,true];
 
        if (_spawnFire) then {
            ["dayzFire",[_crash,2,time,false,_fadeFire]] call broadcastRpcCallAll;
            _crash setvariable ["fadeFire",_fadeFire,true];
        };
 
        _num        = round(random _randomizedLoot) + _guaranteedLoot;
       
        _config =        configFile >> "CfgBuildingLoot" >> "HeliCrash";
        _itemTypes =    [] + getArray (_config >> "itemType");
        _index =        dayz_CBLCounts find (count _itemTypes);
        _weights =        dayz_CBLChances select _index;
        _cntWeights = count _weights;
 
        for "_x" from 1 to _num do {
            //create loot
            _index = floor(random _cntWeights);
            _index = _weights select _index;
            _itemType = _itemTypes select _index;
            [_itemType select 0, _itemType select 1, _position, 5] call spawn_loot;
 
            diag_log(format["CRASHSPAWNER: Loot spawn at '%1' with loot table '%2'", _crashName, _lootTable]);
 
            // ReammoBox is preferred parent class here, as WeaponHolder wouldn't match MedBox0 and other such items.
            _nearby = _position nearObjects ["ReammoBox", sizeOf(_crashModel)];
            {
                _x setVariable ["permaLoot",true];
            } forEach _nearBy;
        };
 
    };
};
 
Hmm my code seems to differ from the part of the fire onwards. Maybe using this part could help?

Code:
if (_spawnFire) then {
    //["dayzFire",[_crash,2,time,false,_fadeFire]] call broadcastRpcCallAll;
    dayzFire = [_crash,2,time,false,_fadeFire];
    publicVariable "dayzFire";
    _crash setvariable ["fadeFire",_fadeFire,true];
};
 
_num        = round(random _randomizedLoot) + _guaranteedLoot;
 
_config =        configFile >> "CfgBuildingLoot" >> _lootTable;
_itemTypes =    [] + getArray (_config >> "itemType");
_index =        dayz_CBLBase  find "HeliCrash";
_weights =        dayz_CBLChances select _index;
_cntWeights = count _weights;
 
 
for "_x" from 1 to _num do {
    //create loot
    _index = floor(random _cntWeights);
    _index = _weights select _index;
    _itemType = _itemTypes select _index;
    [_itemType select 0, _itemType select 1, _position, 5] call spawn_loot;
 
    diag_log(format["CRASHSPAWNER: Loot spawn at '%1' with loot '%3' table '%2'", _crashName, _lootTable, _itemType]);
 
    // ReammoBox is preferred parent class here, as WeaponHolder wouldn't match MedBox0 and other such items.
    _nearby = _position nearObjects ["ReammoBox", sizeOf(_crashModel)];
    {
        _x setVariable ["permaLoot",true];
    } forEach _nearBy;
};

If that still does not work I would advise re-downloading the lastest dayz_server.pbo just to be sure.
 
I ended up starting from scratch. Deleted ALL files and downloaded 1.7.6.1 files.
Now I've just finished edditing the loot tables and everything works perfectly, but yes... It seems my ld file was corrupted somehow.

Thanks everyone for the help :)
 
Back
Top