Should stop vehicles from falling through buildables

This commit is contained in:
icomrade
2016-08-11 13:19:24 -04:00
parent 2fdc87a86c
commit 4019d0c351

View File

@@ -7,6 +7,7 @@ if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bu
sm_done = false; sm_done = false;
dayz_serverIDMonitor = []; dayz_serverIDMonitor = [];
DZE_VehObjects = [];
dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version");
dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");
_hiveLoaded = false; _hiveLoaded = false;
@@ -150,7 +151,7 @@ _respawnPos = getMarkerpos "respawn_west";
if (!_wsDone) then { if (!_wsDone) then {
//_pos = [,0,30,10,0,2000,0] call BIS_fnc_findSafePos; //_pos = [,0,30,10,0,2000,0] call BIS_fnc_findSafePos;
//if (count _pos < 3) then { _pos = [_worldspace select 0,_worldspace select 1,0]; }; //using 0,0,0 instead of getMarkerPos _pos will never be < 3 if (count _pos < 3) then { _pos = [_worldspace select 0,_worldspace select 1,0]; };
diag_log format["MOVED OBJ: %1 of class %2 to pos: [0,0,0]",_idKey,_type]; diag_log format["MOVED OBJ: %1 of class %2 to pos: [0,0,0]",_idKey,_type];
}; };
@@ -170,13 +171,14 @@ _respawnPos = getMarkerpos "respawn_west";
//TODO add remove object and readd old fence (hideobject would be nice to use here :-( ) //TODO add remove object and readd old fence (hideobject would be nice to use here :-( )
//Pending change to new fence models\Layout //Pending change to new fence models\Layout
}; };
_nonColide = _type in DayZ_nonCollide; _nonCollide = _type in DayZ_nonCollide;
//Create it //Create it
_object = createVehicle [_type, [0,0,0], [], 0, if (_nonColide) then {"NONE"} else {"CAN_COLLIDE"}]; _object = createVehicle [_type, [0,0,0], [], 0, if (_nonCollide) then {"NONE"} else {"CAN_COLLIDE"}];
_object setPosATL _pos; _object setPosATL _pos;
_object setDir _dir; _object setDir _dir;
_object setDamage _damage; _object setDamage _damage;
_object enableSimulation false;
if(_vecExists)then{ if(_vecExists)then{
_object setVectorDirAndUp _vector; _object setVectorDirAndUp _vector;
}; };
@@ -276,16 +278,18 @@ _respawnPos = getMarkerpos "respawn_west";
_object setFuel _fuel; _object setFuel _fuel;
if (!_isSafeObject) then { if (!_isSafeObject) then {
_object setVelocity [0,0,1]; DZE_VehObjects set [count DZE_VehObjects,_object];
_object call fnc_veh_ResetEH; _object call fnc_veh_ResetEH;
if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";}; if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";};
_serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle _serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle
} else {
_object enableSimulation true;
}; };
} else { } else {
if (_nonColide) then { if (_nonCollide) then {
_pos set [2,0]; _pos set [2,0];
};
_object setPosATL _pos; _object setPosATL _pos;
};
if (_isDZ_Buildable || {(_isSafeObject && !_isTrapItem)}) then { if (_isDZ_Buildable || {(_isSafeObject && !_isTrapItem)}) then {
_object setVariable["memDir",_dir,true]; _object setVariable["memDir",_dir,true];
if (DZE_GodModeBase && {!(_type in DZE_GodModeBaseExclude)}) then { if (DZE_GodModeBase && {!(_type in DZE_GodModeBaseExclude)}) then {
@@ -293,7 +297,6 @@ _respawnPos = getMarkerpos "respawn_west";
} else { } else {
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}]; _object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
}; };
_object enableSimulation false; // Test disabling simulation server side on buildables only.
_object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe _object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe
}; };
if (_isTrapItem || _isDZ_Buildable) then { if (_isTrapItem || _isDZ_Buildable) then {
@@ -317,11 +320,20 @@ _respawnPos = getMarkerpos "respawn_west";
} forEach _inventory; } forEach _inventory;
if (_maintenanceMode) then { _object setVariable ["Maintenance", true, true]; _object setVariable ["MaintenanceVars", _maintenanceModeVars]; }; if (_maintenanceMode) then { _object setVariable ["Maintenance", true, true]; _object setVariable ["MaintenanceVars", _maintenanceModeVars]; };
} else {
_object enableSimulation true;
}; };
}; };
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object
} forEach _myArray; } forEach _myArray;
[] spawn { //enable simulation on vehicles after all buildables are spawned
{
_object enableSimulation true;
_x setVelocity [0,0,1];
} count DZE_VehObjects;
};
// # END OF STREAMING # // # END OF STREAMING #
call server_plantSpawner; // Draw the pseudo random seeds call server_plantSpawner; // Draw the pseudo random seeds