Jump to content

Is there a trick to spawning loot at helicopter crash sites?


MineralsMan

Recommended Posts

It seems like 99% of the time I find a helicopter crash site (the scripted spawned ones with smoke, etc), I can't find any loot. I remember going through the same thing while looking for supermarket loot until someone told me that I have to actually run away about 30-50m on foot then run back to the supermarket for the loot to spawn (I had been driving up).  I tried that at the chopper crashes and no luck. Is there some trick or qwerk I'm missing for the loot to show up?  I've searched pretty closely, going in circles around the chopper with my gun pointed to the ground, going prone all over the place, etc etc

Link to comment
Share on other sites

  • 2 weeks later...

As far as I can remember the last update broke heli crash sites.

They still spawn loot it is just all piled under the heli body and normally not accessible.

 

My server I just have players let me know they found it then delete the heli so they can get the loot.

Link to comment
Share on other sites

  • 3 weeks later...

update your crash_spawner.sqf in server\modules\... with that one...

 

private ["_guaranteedLoot","_randomizedLoot","_spawnChance","_spawnMarker","_spawnRadius","_spawnFire","_fadeFire","_crashModel","_lootTable","_crashName","_spawnRoll","_position","_crash","_config","_hasAdjustment","_newHeight","_adjustedPos","_num","_itemTypes","_index","_weights","_cntWeights","_nearby","_itemType","_needsrelocated","_istoomany","_pos","_lootPos"];

_guaranteedLoot = 3;
_randomizedLoot = 4;
_spawnChance = 0.50;
_spawnMarker = 'center';
// _spawnRadius = 5000;
_spawnRadius = HeliCrashArea;
_spawnFire = true;
_fadeFire = false;
_minLootRadius = 4;
_maxLootRadius = 4;
_spawnRoll = random 1;
if (_spawnRoll <= _spawnChance) then {
	_crashModel = ["UH60Wreck_DZ","UH1Wreck_DZ","UH60_NAVY_Wreck_DZ","UH60_ARMY_Wreck_DZ","UH60_NAVY_Wreck_burned_DZ","UH60_ARMY_Wreck_burned_DZ","Mass_grave_DZ"] call BIS_fnc_selectRandom;

	if(_crashModel == "Mass_grave_DZ") then {
		_lootTable = "MassGrave";
	} else {
		_lootTable = "HeliCrash";
	};
	_maxLootRadius = _maxLootRadius - _minLootRadius;
	_crashName = getText (configFile >> "CfgVehicles" >> _crashModel >> "displayName");

	// Loop for a new location without any vehicles
	_needsrelocated = true;
	while {_needsrelocated} do {
		_position = [getMarkerPos _spawnMarker,0,_spawnRadius,10,0,2000,0] call BIS_fnc_findSafePos;
		_istoomany = _position nearObjects ["AllVehicles",10];
		if((count _istoomany) == 0) then { _needsrelocated = false; };
	};

	//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);
	};

	// 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
	PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_crash];

	_crash setVariable ["ObjectID","1",true];
	_pos = getPos _crash;
	// Disable simulation server side
	_crash enableSimulation false;

	_num = round(random _randomizedLoot) + _guaranteedLoot;

	if(_crashModel == "Mass_grave_DZ") then {
		_spawnFire = false;
		_num = _num * 2;
	};

	if (_spawnFire) then {
		//["PVDZE_obj_Fire",[_crash,2,time,false,_fadeFire]] call broadcastRpcCallAll;
		PVDZE_obj_Fire = [_crash,2,time,false,_fadeFire];
		publicVariable "PVDZE_obj_Fire";
		_crash setvariable ["fadeFire",_fadeFire,true];
	};

	if (DZE_MissionLootTable) then {
		_itemTypes = [] + getArray (missionConfigFile >> "CfgBuildingLoot" >> _lootTable >> "lootType");
	} else {
		_itemTypes = [] + getArray (configFile >> "CfgBuildingLoot" >> _lootTable >> "lootType");
	};
	_CBLBase = dayz_CBLBase find (toLower(_lootTable));
	_weights = dayz_CBLChances select _CBLBase;
	_cntWeights = count _weights;

	for "_x" from 1 to _num do {
		//create loot
		_maxLootRadius = (random _maxLootRadius) + _minLootRadius;
		_lootPos = [_pos, _maxLootRadius, random 360] call BIS_fnc_relPos;
		_index1 = floor(random _cntWeights);
		_index2 = _weights select _index1;
		_itemType = _itemTypes select _index2;
		[_itemType select 0, _itemType select 1, _lootPos, 5] call spawn_loot;
	};
	// ReammoBox is preferred parent class here, as WeaponHolder wouldn't match MedBox0 && other such items.
	_nearby = _pos nearObjects ["ReammoBox", sizeOf(_crashModel)];
	{ _x setVariable ["permaLoot",true]; } count _nearBy;
};

 

cheers

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Discord

×
×
  • Create New...