Jump to content

[Release] Build Vectors - Rotate objects in Dayz Epoch (v2.34 P4L & non-P4L)


striker

Recommended Posts

Works Superb with me, just whitelisted the actions and its working good.

I had the same problem with the safes being empty when you open it.

There is a simple fix. Just Search _intentory in server_moniter.sqf and replace it with _inventory

Same with all the files you changed in server.pbo

Link to comment
Share on other sites

Works Superb with me, just whitelisted the actions and its working good.

I had the same problem with the safes being empty when you open it.

There is a simple fix. Just Search _intentory in server_moniter.sqf and replace it with _inventory

Same with all the files you changed in server.pbo

you had that issue AFTER you installed vectoring? I have no issues with safes until I install vectoring... then literally nothing happens when you try to open them, they're not empty.. you just can't open them.

Link to comment
Share on other sites

Well then your Safe issue is different then mine.

 

Check compiles.sqf for this line:

player_vaultPitch =            compile preprocessFileLineNumbers "Custom\A_Plot_for_Life\Action\vault_pitch.sqf";   

also check RPT for errors

Link to comment
Share on other sites

guys I can't test this for another few hours but I was looking at the default player_unlockvault.sqf and comparing it to the one in the vector folder.

 

In the vector folder there is this line
 

 _playerID = [player] call FNC_GetPlayerUID;

but in the epoch server files that line looks like this
 

_playerID = getPlayerUID player;

 so replace the first with the second and give it a shot

let me know

Link to comment
Share on other sites

Interesting.  I had an error regarding FNC_GetPlayerUID in my compiles.sqf after installing PP4L. v2.4.  I already had Snap Pro 1.4.1, Vector Build, and Precise Base Build installed so had to go through great pains to merge with the PP4L files.   

 

My post is here:  

 

I wonder if it is related and I should make the same change?

Link to comment
Share on other sites

Well unless Im missing something, I'll try again maybe tomorrow morning when fewer people are on, this fixed the issue with the safes, buildings that were previously vectored resumed their vectored positions, however when trying to build something new there was no vector option on the scroll wheel. I checked the files a few times and re read the instructions as well and everything seemed to be correct so hopefully someone else will be able to verify.

Link to comment
Share on other sites

F key in Snap Pro doesnt works.

I tryed to fix this

 

 

F_KEY = (findDisplay 46) displayAddEventHandler ["KeyDown","if ((_this select 1) == 33) then { DZE_F = true; }"];

and

 

 

 

If you are using Snap Pro system you can integrate my system with that one by opening my Crafting_Compiles.sqf and deleting the dayz_spaceinterrupt function from the bottom of that file. This function starts on line 256. Delete everything from line 256 to the end of the file. Then navigate to custom\Snap_Pro\dayz_spacensterrupt.sqf and open that file.

 
You will need to add 
 
GlobalPreviewVariable = 1;
 
into the empty space on line 3.
 
And near the very bottom, you need to add
 
// num 1 or 3 above qwerty
if (_dikCode == 0x02) then {
AAC_1 = true;
};
if (_dikCode == 0x04) then {
AAC_3 = true;
};
 
just BEFORE\ABOVE the line
 
_handled

but it doesnt work too.

Link to comment
Share on other sites

Was anyone able to test my "fix?"   When I went to test it, all the buildings that had been vectored in the past (which returned to flat once I removed vectoring) were back to whatever angle they had been vectored to (pitched roofs for example) safes were able to be unlocked , HOWEVER there was no option on the scroll wheel when building new objects to vector them. I might have botched and install step so I'll try it again at some point.

Link to comment
Share on other sites

guys I can't test this for another few hours but I was looking at the default player_unlockvault.sqf and comparing it to the one in the vector folder.

 

In the vector folder there is this line

 

 _playerID = [player] call FNC_GetPlayerUID;

but in the epoch server files that line looks like this

 

_playerID = getPlayerUID player;

 so replace the first with the second and give it a shot

let me know

 

FIX CONFIRMED. Thank you very much!. after changes I was able to unlock ,lock, check cargo, and get into gear , and pack safes. everything works fine. Fix was implemented two days ago and nobody  has reported any bugs. as for your problem with vector perhaps somewhere else in your install. I was also able t place object and change vector perfectly.

Link to comment
Share on other sites

I fixed it... I never moved the call line for fn_selfActions.sqf down below space interrupt like in the instructions, I didnt know that was important.. this whole time thats what was breaking it for me. Glad I figured out the fix for the safes

 

You seriously saved me a ton of time with that. also I'm glad to see you got your problem fixed as well..great job man.

Link to comment
Share on other sites

@striker, i get this problem in the RPT. do you know this problem? i have snapbuilding v4 and precise base building updated

 1:15:52 "infiSTAR.de - AntiHack FULLY LOADED"
 1:15:53 "Res3tting B!S effects..."
 1:15:54 Error in expression <{
_ownerID = format["00%1", _ownerID];!
};
if(_codeCount == 1) then {
_ownerID =>
 1:15:54   Error position: <};
if(_codeCount == 1) then {
_ownerID =>
 1:15:54   Error Missing {
 1:15:54 File z\addons\dayz_server\system\server_monitor.sqf, line 205
 1:15:54 Error in expression <{
_ownerID = format["00%1", _ownerID];!
};
if(_codeCount == 1) then {
_ownerID =>
 1:15:54   Error position: <};
if(_codeCount == 1) then {
_ownerID =>
 1:15:54   Error Missing {
 1:15:54 File z\addons\dayz_server\system\server_monitor.sqf, line 205

this is my server _monitor

private ["_nul","_result","_pos","_wsDone","_dir","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_key","_vehLimit","_hiveResponse","_objectCount","_codeCount","_data","_status","_val","_traderid","_retrader","_traderData","_id","_lockable","_debugMarkerPosition","_vehicle_0","_bQty","_vQty","_BuildingQueue","_objectQueue","_superkey","_shutdown","_res","_hiveLoaded"];

dayz_versionNo = 		getText(configFile >> "CfgMods" >> "DayZ" >> "version");
dayz_hiveVersionNo = 	getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");

_hiveLoaded = false;

waitUntil{initialized}; //means all the functions are now defined

diag_log "HIVE: Starting";

waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player)
	
// Custom Configs
if(isnil "MaxVehicleLimit") then {
	MaxVehicleLimit = 50;
};

if(isnil "MaxDynamicDebris") then {
	MaxDynamicDebris = 100;
};
if(isnil "MaxAmmoBoxes") then {
	MaxAmmoBoxes = 3;
};
if(isnil "MaxMineVeins") then {
	MaxMineVeins = 50;
};
// Custon Configs End

if (isServer && isNil "sm_done") then {

	serverVehicleCounter = [];
	_hiveResponse = [];

	for "_i" from 1 to 5 do {
		diag_log "HIVE: trying to get objects";
		_key = format["CHILD:302:%1:", dayZ_instance];
		_hiveResponse = _key call server_hiveReadWrite;  
		if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then {
			if ((_hiveResponse select 1) == "Instance already initialized") then {
				_superkey = profileNamespace getVariable "SUPERKEY";
				_shutdown = format["CHILD:400:%1:", _superkey];
				_res = _shutdown call server_hiveReadWrite;
				diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res));
			} else {
				diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse));
			
			};
			_hiveResponse = ["",0];
		} 
		else {
			diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" );
			_i = 99; // break
		};
	};
	
	_BuildingQueue = [];
	_objectQueue = [];
	
	if ((_hiveResponse select 0) == "ObjectStreamStart") then {
	
		// save superkey
		profileNamespace setVariable ["SUPERKEY",(_hiveResponse select 2)];
		
		_hiveLoaded = true;
	
		diag_log ("HIVE: Commence Object Streaming...");
		_key = format["CHILD:302:%1:", dayZ_instance];
		_objectCount = _hiveResponse select 1;
		_bQty = 0;
		_vQty = 0;
		for "_i" from 1 to _objectCount do {
			_hiveResponse = _key call server_hiveReadWriteLarge;
			//diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]);
			if ((_hiveResponse select 2) isKindOf "ModularItems") then {
				_BuildingQueue set [_bQty,_hiveResponse];
				_bQty = _bQty + 1;
			} else {
				_objectQueue set [_vQty,_hiveResponse];
				_vQty = _vQty + 1;
			};
		};
		diag_log ("HIVE: got " + str(_bQty) + " Epoch Objects and " + str(_vQty) + " Vehicles");
	};
	
	// # NOW SPAWN OBJECTS #
	_totalvehicles = 0;
	{
		_idKey = 		_x select 1;
		_type =			_x select 2;
		_ownerID = 		_x select 3;

		_worldspace = 	_x select 4;
		_intentory =	_x select 5;
		_hitPoints =	_x select 6;
		_fuel =			_x select 7;
		_damage = 		_x select 8;
		
		_dir = 0;
		_pos = [0,0,0];
		_wsDone = false;
		if (count _worldspace >= 2) then
		{
			if(count _worldspace == 3) then{
				_vector = _worldspace select 2;
				if(typename _vector == "ARRAY")then{
					if(count _vector == 2)then{
						if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
							_vecExists = true;
						};
					};

				};

			};
			_dir = _worldspace select 0;
			if (count (_worldspace select 1) == 3) then {
				_pos = _worldspace select 1;
				_wsDone = true;
			}
		};
		
		if (!_wsDone) then {
			if (count _worldspace >= 1) then { _dir = _worldspace select 0; };
			_pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos;
			if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; };
			diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
		};
		_vector = [[0,0,0],[0,0,0]];
_vecExists = false;
_ownerPUID = "0";   
if (count _worldspace >= 3) then{
    if(count _worldspace == 3) then{
            if(typename (_worldspace select 2) == "STRING")then{
                _ownerPUID = _worldspace select 2;
            }else{
                 if(typename (_worldspace select 2) == "ARRAY")then{
                    _vector = _worldspace select 2;
                    if(count _vector == 2)then{
                        if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                            _vecExists = true;
                        };
                    };
                };                  
            };

    }else{
        //Was not 3 elements, so check if 4 or more
        if(count _worldspace == 4) then{
            if(typename (_worldspace select 3) == "STRING")then{
                _ownerPUID = _worldspace select 3;
            }else{
                if(typename (_worldspace select 2) == "STRING")then{
                    _ownerPUID = _worldspace select 2;
                };
            };


            if(typename (_worldspace select 2) == "ARRAY")then{
                _vector = _worldspace select 2;
                if(count _vector == 2)then{
                    if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                        _vecExists = true;
                    };
                };
            }else{
                if(typename (_worldspace select 3) == "ARRAY")then{
                    _vector = _worldspace select 3;
                    if(count _vector == 2)then{
                        if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
                            _vecExists = true;
                        };
                    };
                };
            };

        }else{
            //More than 3 or 4 elements found
            //Might add a search for the vector, ownerPUID will equal 0
        };
    };
}; 

		if (_damage < 1) then {
			//diag_log format["OBJ: %1 - %2", _idKey,_type];
			
			//Create it
			_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
			_object setVariable ["lastUpdate",time];
			_object setVariable ["ObjectID", _idKey, true];
			_object setVariable ["ownerPUID", _ownerPUID, true];
			_lockable = 0;
			if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
				_lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable");
			};

			// fix for leading zero issues on safe codes after restart
			if (_lockable == 4) then {
				_codeCount = (count (toArray _ownerID));!
				if(_codeCount == 3) then {
					_ownerID = format["0%1", _ownerID];
				};
				if(_codeCount == 2) then {
					_ownerID = format["00%1", _ownerID];!
				};
				if(_codeCount == 1) then {
					_ownerID = format["000%1", _ownerID];
				};
			};

			if (_lockable == 3) then {
				_codeCount = (count (toArray _ownerID));
				if(_codeCount == 2) then {
					_ownerID = format["0%1", _ownerID];
				};
				if(_codeCount == 1) then {
					_ownerID = format["00%1", _ownerID];
				};
			};

			_object setVariable ["CharacterID", _ownerID, true];
			
			clearWeaponCargoGlobal  _object;
			clearMagazineCargoGlobal  _object;
			// _object setVehicleAmmo DZE_vehicleAmmo;
			
			_object setdir _dir;
			if(_vecExists)then{
			_object setVectorDirAndUp _vector;
					}; 
			_object setposATL _pos;
			_object setDamage _damage;
			
			if ((typeOf _object) in dayz_allowedObjects) then {
				_object setVariable["memDir",_dir,true]
				if (DZE_GodModeBase) then {
					_object addEventHandler ["HandleDamage", {false}];
				} else {
					_object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}];
				};
				// Test disabling simulation server side on buildables only.
				_object enableSimulation false;
				// used for inplace upgrades && lock/unlock of safe
				_object setVariable ["OEMPos", _pos, true];
				
			};

			if (count _intentory > 0) then {
				if (_type in DZE_LockedStorage) then {
					// Fill variables with loot
					_object setVariable ["WeaponCargo", (_intentory select 0),true];
					_object setVariable ["MagazineCargo", (_intentory select 1),true];
					_object setVariable ["BackpackCargo", (_intentory select 2),true];
				} else {

					//Add weapons
					_objWpnTypes = (_intentory select 0) select 0;
					_objWpnQty = (_intentory select 0) select 1;
					_countr = 0;					
					{
						if(_x in (DZE_REPLACE_WEAPONS select 0)) then {
							_x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);
						};
						_isOK = 	isClass(configFile >> "CfgWeapons" >> _x);
						if (_isOK) then {
							_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes; 
				
					//Add Magazines
					_objWpnTypes = (_intentory select 1) select 0;
					_objWpnQty = (_intentory select 1) select 1;
					_countr = 0;
					{
						if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow
						if (_x == "ItemTent") then { _x = "ItemTentOld" };
						_isOK = 	isClass(configFile >> "CfgMagazines" >> _x);
						if (_isOK) then {
							_object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes;

					//Add Backpacks
					_objWpnTypes = (_intentory select 2) select 0;
					_objWpnQty = (_intentory select 2) select 1;
					_countr = 0;
					{
						_isOK = 	isClass(configFile >> "CfgVehicles" >> _x);
						if (_isOK) then {
							_object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];
						};
						_countr = _countr + 1;
					} count _objWpnTypes;
				};
			};	
			
			if (_object isKindOf "AllVehicles") then {
				{
					_selection = _x select 0;
					_dam = _x select 1;
					if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
					[_object,_selection,_dam] call object_setFixServer;
				} count _hitpoints;

				_object setFuel _fuel;

				if (!((typeOf _object) in dayz_allowedObjects)) then {
					
					//_object setvelocity [0,0,1];
					_object call fnc_veh_ResetEH;		
					
					if(_ownerID != "0" && !(_object isKindOf "Bicycle")) then {
						_object setvehiclelock "locked";
					};
					
					_totalvehicles = _totalvehicles + 1;

					// total each vehicle
					serverVehicleCounter set [count serverVehicleCounter,_type];
				};
			};

			//Monitor the object
			PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
		};
	} count (_BuildingQueue + _objectQueue);
	// # END SPAWN OBJECTS #

	// preload server traders menu data into cache
	if !(DZE_ConfigTrader) then {
		{
			// get tids
			_traderData = call compile format["menu_%1;",_x];
			if(!isNil "_traderData") then {
				{
					_traderid = _x select 1;

					_retrader = [];

					_key = format["CHILD:399:%1:",_traderid];
					_data = "HiveEXT" callExtension _key;

					//diag_log "HIVE: Request sent";
			
					//Process result
					_result = call compile format ["%1",_data];
					_status = _result select 0;
			
					if (_status == "ObjectStreamStart") then {
						_val = _result select 1;
						//Stream Objects
						//diag_log ("HIVE: Commence Menu Streaming...");
						call compile format["ServerTcache_%1 = [];",_traderid];
						for "_i" from 1 to _val do {
							_data = "HiveEXT" callExtension _key;
							_result = call compile format ["%1",_data];
							call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result];
							_retrader set [count _retrader,_result];
						};
						//diag_log ("HIVE: Streamed " + str(_val) + " objects");
					};

				} forEach (_traderData select 0);
			};
		} forEach serverTraders;
	};

	if (_hiveLoaded) then {
		//  spawn_vehicles
		_vehLimit = MaxVehicleLimit - _totalvehicles;
		if(_vehLimit > 0) then {
			diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
			for "_x" from 1 to _vehLimit do {
				[] spawn spawn_vehicles;
			};
		} else {
			diag_log "HIVE: Vehicle Spawn limit reached!";
		};
	};
	
	//  spawn_roadblocks
	diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
	for "_x" from 1 to MaxDynamicDebris do {
		[] spawn spawn_roadblocks;
	};
	//  spawn_ammosupply at server start 1% of roadblocks
	diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
	for "_x" from 1 to MaxAmmoBoxes do {
		[] spawn spawn_ammosupply;
	};
	// call spawning mining veins
	diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
	for "_x" from 1 to MaxMineVeins do {
		[] spawn spawn_mineveins;
	};

	if(isnil "dayz_MapArea") then {
		dayz_MapArea = 10000;
	};
	if(isnil "HeliCrashArea") then {
		HeliCrashArea = dayz_MapArea / 2;
	};
	if(isnil "OldHeliCrash") then {
		OldHeliCrash = false;
	};

	// [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire]
	if(OldHeliCrash) then {
		_nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite;
	};
	if (isDedicated) then {
		// Epoch Events
		_id = [] spawn server_spawnEvents;
		// server cleanup
		[] spawn {
			private ["_id"];
			sleep 200; //Sleep Lootcleanup, don't need directly cleanup on startup + fix some performance issues on serverstart
			waitUntil {!isNil "server_spawnCleanAnimals"};
			_id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm";
		};

		// spawn debug box
		_debugMarkerPosition = getMarkerPos "respawn_west";
		_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1];
		_vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
		_vehicle_0 setPos _debugMarkerPosition;
		_vehicle_0 setVariable ["ObjectID","1",true];

		// max number of spawn markers
		if(isnil "spawnMarkerCount") then {
			spawnMarkerCount = 10;
		};
		actualSpawnMarkerCount = 0;
		// count valid spawn marker positions
		for "_i" from 0 to spawnMarkerCount do {
			if (!([(getMarkerPos format["spawn%1", _i]), [0,0,0]] call BIS_fnc_areEqual)) then {
				actualSpawnMarkerCount = actualSpawnMarkerCount + 1;
			} else {
				// exit since we did not find any further markers
				_i = spawnMarkerCount + 99;
			};
			
		};
		diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount];
		
		endLoadingScreen;
	};

	[] ExecVM "\z\addons\dayz_server\WAI\init.sqf";
	allowConnection = true;	
	sm_done = true;
	publicVariable "sm_done";
};

i`m kindof stuck at my server because of this error. i tried to read all the comments. didnt helped much since i`m the only 1 with this error.

Link to comment
Share on other sites

It is the files with Building Vectors in them. As long as you do not have any other addons to , it should work fine.

I have installed this into my Dayz overpoch chernarus server everything works all fine until it comes to safes and lockboxes they do not open i also do not have any previous snap buildings added

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Advertisement
×
×
  • Create New...