If they are extendable objects it should be using setPosATL, here's the code that sets the object positions in the dayzmod 1.8 server_monitor at least
Code://Restore extendable objects to whatever their position is supposed to be if (typeOf(_object) in allExtendables && typeOf(_object) != "Grave") then { _object setposATL [(getposATL _object select 0),(getposATL _object select 1), (getposATL _object select 2)]; }; //Restore non extendable objects and make sure they follow the land contours if (!(typeOf(_object) in allExtendables) && (_object isKindOf "Static") && !(_object isKindOf "TentStorage") && typeOf(_object) != "Grave") then { _object setpos [(getposATL _object select 0),(getposATL _object select 1), 0]; };
Maybe the overwatch server_monitor has some code after this that is running on all objects including the basebuilding objects and isn't taking height into account.
So it appears in my server_monitor that Overwatch uses _entity and non Overwatch uses _object.
This is all the code in my server_montor.sqf AFTER the BB 1.3 code. Do you see anything that could be causing an issue.?
Code:
if (_class == "TentStorage" || _class == "CamoNet_DZ") then {
_entity addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
};
} else {
#ifdef OBJECT_DEBUG
diag_log (format["IGNORED %1 oid#%2 cid:%3 ",
_class, _ObjectID, _CharacterID ]);
#endif
};
};
if (_damage < 1 AND !(isNil ("_entity"))) then {
_entity setdir _dir;
_entity setPos _point;
if (_entity isKindOf "TrapItems") then {
_entity setVariable ["armed", _inventory select 0, false];
} else {
if (!(typeOf(_entity) in allbuildables_class) && !(typeOf(_entity) in BBAllFlagTypes) && !(typeOf(_entity) in BBAllZShieldTypes)) then {
[_entity, _inventory] call fa_populateCargo;
};
};
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor, _entity];
if (_action == "CREATED") then {
_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:", dayZ_instance,
_class, _damage , 1,
[_dir, _point],
[getWeaponCargo _entity, getMagazineCargo _entity ,getBackpackCargo _entity],
_hitpoints, _fuel, _ObjectID
];
_rawData = "HiveEXT" callExtension _key;
};
if (_action == "SPAWNED" || _action == "DAMAGED") then {};
if (_action == "SPAWNED") then {
_key = format["CHILD:309:%1:%2:", _ObjectID,
[getWeaponCargo _entity, getMagazineCargo _entity, getBackpackCargo _entity]];
_rawData = "HiveEXT" callExtension _key;
};
if (_action == "MOVED" || _action == "SPAWNED") then {
[_entity, "position"] call server_updateObject;
};
};
sleep 0.01;
} forEach _objectArray;
createCenter civilian;
if (isDedicated) then {endLoadingScreen;};
allowConnection = true;
[3, 4, 3, (40 * 60), (15 * 60), 0.75, 'center', 4000, true, false] spawn server_spawnCrashSite;
call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fa_antiwallhack.sqf";
sm_done = true;
publicVariable "sm_done";
[300] call server_plantSpawner;
[] call {
private ["_array","_array2","_array3","_script","_armed"];
_array = str dayz_traps;
_array2 = str dayz_traps_active;
_array3 = str dayz_traps_trigger;
while { true } do {
if ((str dayz_traps != _array) || (str dayz_traps_active != _array2) || (str dayz_traps_trigger != _array3)) then {
_array = str dayz_traps;
_array2 = str dayz_traps_active;
_array3 = str dayz_traps_trigger;
diag_log "DEBUG: traps";
diag_log format["dayz_traps (%2) -> %1", dayz_traps, count dayz_traps];
diag_log format["dayz_traps_active (%2) -> %1", dayz_traps_active, count dayz_traps_active];
diag_log format["dayz_traps_trigger (%2) -> %1", dayz_traps_trigger, count dayz_traps_trigger];
diag_log "DEBUG: end traps";
};
{
if (isNull _x) then {
dayz_traps = dayz_traps - [_x];
};
_script = call compile getText (configFile >> "CfgVehicles" >> typeOf _x >> "script");
_armed = _x getVariable ["armed", false];
if (_armed) then {
if !(_x in dayz_traps_active) then {
["arm", _x] call _script;
};
} else {
if (_x in dayz_traps_active) then {
["disarm", _x] call _script;
};
};
} forEach dayz_traps;
};
};
};