Jump to content

[1.4.1] Snap Building PRO


Recommended Posts

Snapping dont works for me, log says this:

 

Ref to nonnetwork object 6d07dd00# 1140706: sphere10cm_ep1.p3d
Ref to nonnetwork object 6d07e400# 1140707: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d720800# 1140708: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d720f00# 1140709: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d721600# 1140710: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d721d00# 1140711: sphere10cm_ep1.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d

Someone know how to fix it?

Link to comment
Share on other sites

 

snappro.png

 

 

 

I use admin build from Phoenix's DayZ Admin Tools

I use fast build, but then SNAP Pro wont work, only for Build Snapping - Extended v1.6,    so i want to know, is it possible somehow integrate snap pro inside adminbuild. 

Here is admin build files:

 

adminbuild.sqf

/*
Attribution:
Elements of this script are taken from DayZEpoch
https://github.com/vbawol/DayZ-Epoch/

Admin Build Script by T27M
Website: www.t27m.co.uk
Need help?: http://www.t27m.co.uk/forum/viewforum.php?f=7

Part of Admin Build by T27M
Version: 0.2
*/ 

private["_classname", "_object", "_offset", "_playerPos", "_dir", "_location", "_classnameAction", "_distance", "_classnameCancel", "_posModifier"];

_classname = _this select 0;
_location = [0,0,0];
_offset = [0,4,0];
_playerPos = getPosATL player;
_dir = getDir player;
_playerID = player getVariable["CharacterID","0"];
_playerName = name player;

if(isNil "repeatBuild" ) then {
	repeatBuild = false;
};

if(isNil "repeatposModifier") then {
	repeatposModifier = 0;
};

// check for near plot
_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], 30];
_findNearestPole = [];

{
	if (alive _x) then {
		_findNearestPole set [(count _findNearestPole),_x];
	};
} foreach _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

if( _IsNearPlot > 0) then {
	// check nearby plots ownership and then for friend status
	_nearestPole = _findNearestPole select 0;

	// Find owner
	_ownerID = _nearestPole getVariable["CharacterID","0"];

	cutText [ format["Warning: A plot pole belonging to %1 exists in the area.", _ownerID], "PLAIN"];
};

_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset");
if((count _offset) <= 0) then {
	_offset = [0, 1.5, 0];
};

_offset set [2, (_offset select 2) + repeatposModifier];

_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
_object setDir _dir;
_object attachTo [player, _offset];

// Build Snapping
player allowDamage false;
SnappingOffset = _offset;
SnappingDir = 0;
SnappingSpotMarkers = [];
SnappingEnabled = true;
SnappedOffsetZ = 0;
SnappingResetPos = false;

if (isClass (missionConfigFile >> "SnapPoints" >> _classname)) then {
	s_building_snapping = player addAction ["<t color=""#0000ff"">Toggle Snapping</t>", "custom\snap_build\player_toggleSnapping.sqf",_classname, 3, true, false, "",""];
};

Snapper = [_object, _classname] spawn snap_object;

SnappingEnabled = true;

BuildInProgress = true;
Confirm = player addAction [("<t color=""#00FF1E"">" + ("Place Object") +"</t>"), "admintools\tools\adminbuild\placement.sqf",["Confirm", _object, _classname], 6, false, true, "", "BuildInProgress;"];
Cancel = player addAction [("<t color=""#ff0000"">" + ("Cancel Placement") +"</t>"), "admintools\tools\adminbuild\placement.sqf", ["Cancel", _object, _classname], 5, false, true, "", "BuildInProgress;"];
Repeat = player addAction [("<t color=""#9677b1"">" + ("Repeat Build") +"</t>"), "admintools\tools\adminbuild\repeatbuild.sqf", "", 5, false, true, "", "BuildInProgress;"];

_posModifier = 0.1;

// Build Loop
while {BuildInProgress} do {
	if (BuildActionMod == "Big") then {
		_posModifier = 1.0;
	};
	
	if (BuildActionMod == "Small") then {
		_posModifier = 0.01;
	};
	
	if (BuildActionMod == "None") then {
		_posModifier = 0.1;
	};

	switch (BuildAction) do {	
		case "MoveUp": {
			detach object;
			SnappingAttachedToPlayer = false;
			
			_location = getPosATL _object;
			_location set [2,((_location select 2) + _posModifier)];
			
			SnappingOffset set [2, ((SnappingOffset select 2) + _posModifier)];
			
			_object setPosATL _location;
			_object attachTo [player];
			
			repeatposModifier = repeatposModifier + _posModifier;
			
			BuildAction = "";
			SnappingAttachedToPlayer = true;
		};
		case "MoveDown": {
			detach object;
			SnappingAttachedToPlayer = false;
			
			_location = getPosATL _object;
			_location set [2,((_location select 2) - _posModifier)];
			
			SnappingOffset set [2, ((SnappingOffset select 2) - _posModifier)];
			
			_object setPosATL _location;
			_object attachTo [player];
			
			repeatposModifier = repeatposModifier - _posModifier;
			
			BuildAction = "";
			SnappingAttachedToPlayer = true;
		};
		// Rotate 180
		case "Rotate180": {
			detach object;
			SnappingAttachedToPlayer = false;
			SnappingDir = 180;
			_object setDir 180;
			_object attachTo [player];
			
			BuildAction = "";
			SnappingAttachedToPlayer = true;
		};
		// Rotate 0
		case "Rotate0": {
			detach object;
			SnappingAttachedToPlayer = false;
			SnappingDir = 0;
			_object setDir 0;
			_object attachTo [player];
			
			BuildAction = "";
			SnappingAttachedToPlayer = true;
		};
		case "PlaceObject": {
			[false, false, false ,["Confirm", _object, _classname]] execVM "admintools\tools\adminbuild\placement.sqf";
			
			BuildAction = "";
		};
		case "Cancel": {
			[false, false, false, ["Cancel", _object, _classname]] execVM "admintools\tools\adminbuild\placement.sqf";
			
			BuildAction = "";
		};
	};
};

 

placement.sqf

/*
Admin Build Script by T27M
Website: www.t27m.co.uk
Need help?: http://www.t27m.co.uk/forum/viewforum.php?f=7

Part of Admin Build by T27M
Version: 0.2
*/ 

private ["_object", "_ghostObject", "_charID", "_objectID", "_lockable", "_nUpgrade", "_displayName", "_location", "_allowed", "_dir", "_action", "_classname", "_worldspace", "_combinationDisplay", "_combination_1_Display", "_combination", "_combination_1", "_combination_2", "_combination_3", "_uid"];

_action = (_this select 3) select 0;
_object = (_this select 3) select 1;
_classname = (_this select 3) select 2;

_dir = getDir _object;
_charID = player getVariable ["CharacterID", "0"];
_location = getPosATL _object;
_worldspace = [_dir, _location];
_uid = _worldspace call dayz_objectUID2;
_continue = true;

player allowDamage true;
terminate Snapper;
player removeAction s_building_snapping;
player removeAction Confirm;
player removeAction Cancel;
player removeAction Repeat;

switch(_action) do {

	case "Confirm":{
		detach _object;
	
		clearWeaponCargoGlobal _object;
		clearMagazineCargoGlobal _object;
		
		_displayName = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
		
		_object setVariable ["lastUpdate", time];
		_object setVariable ["ObjectUID", _uid,true];
		_object setVariable ["OEMPos",_location,true];
				
		// Find next upgrade
		_nUpgrade = getArray (configFile >> "CfgVehicles" >> _classname >> "upgradeBuilding");
		if((count _nUpgrade) > 0) then {
			_object addAction [ 
				format[("<t color=""#00FF1E"">" + ("Admin Upgrade: %1") +"</t>"), _displayName],
				"admintools\tools\adminbuild\upgrade.sqf",
				_object,
				6,
				false,
				true,
				"",
				"_this distance player < 3"
			];
		};
		
		_lockable = 0;
		if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then {
			_lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable");
		};
		
		_allowed = false;
		
		if ((typeOf _object) in dayz_allowedObjects) then {
			_allowed = true;
		} else {
			cutText ["This object will disappear on server restart.", "PLAIN"];
		};
		
		if(_lockable > 1) then {
			_combinationDisplay = "";

			switch (_lockable) do {

				case 2: { // 2 lockbox
					_combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue
					_combination_2 = floor(random 10);
					_combination_3 = floor(random 10);
					_combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];
					dayz_combination = _combination;
					if (_combination_1 == 100) then {
						_combination_1_Display = "Red";
					};
					if (_combination_1 == 101) then {
						_combination_1_Display = "Green";
					};
					if (_combination_1 == 102) then {
						_combination_1_Display = "Blue";
					};
					_combinationDisplay = format["%1%2%3",_combination_1_Display,_combination_2,_combination_3];
				};

				case 3: { // 3 combolock
					_combination_1 = floor(random 10);
					_combination_2 = floor(random 10);
					_combination_3 = floor(random 10);
					_combination = format["%1%2%3",_combination_1,_combination_2,_combination_3];
					dayz_combination = _combination;
					_combinationDisplay = _combination;
				};

				case 4: { // 4 safe
					_combination_1 = floor(random 10);
					_combination_2 = floor(random 10);
					_combination_3 = floor(random 10);
					_combination_4 = floor(random 10);
					_combination = format["%1%2%3%4",_combination_1,_combination_2,_combination_3,_combination_4];
					dayz_combination = _combination;
					_combinationDisplay = _combination;
				};
			};
	
			_object setVariable ["CharacterID",_combination,true];
			
			if(_allowed) then {
				PVDZE_obj_Publish = [_combination,_object,[_dir,_location],_classname];
				publicVariableServer "PVDZE_obj_Publish";
			} else {
				PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
			};
			
			cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_displayName], "PLAIN DOWN", 5];
			
		} else {
			_object setVariable ["CharacterID",_charID,true];
			
			if(_allowed) then {
				// fire?
				if(_object isKindOf "Land_Fire_DZ") then {
					_object spawn player_fireMonitor;
				} else {
					PVDZE_obj_Publish = [_charID,_object,[_dir,_location],_classname];
					publicVariableServer "PVDZE_obj_Publish";
				};
			} else {
				PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
			};
		};

		player reveal _object;
		_continue = true;
	};
	
	case "Cancel":{
		_continue = false;
		detach _object;
		deleteVehicle _object;
		cutText ["Building cancelled.", "PLAIN DOWN"];
		repeatposModifier = 0;
	};
};

BuildInProgress = false;

if(repeatBuild && _continue) then {
	if(isNil "repeatposModifier") then {
		repeatposModifier = 0;
	};		
	[_classname] execVM "admintools\tools\adminbuild.sqf";
} else {
	repeatposModifier = 0;
};

 

repeatbuild.sqf

/*
Admin Build Script by T27M
Website: www.t27m.co.uk
Need help?: http://www.t27m.co.uk/forum/viewforum.php?f=7

Part of Admin Build by T27M
Version: 0.2
*/ 

if(repeatBuild) then {
	repeatBuild = false;
	cutText["Repeat build: Off", "PLAIN"];
} else {
	repeatBuild = true;
	cutText["Repeat build: On", "PLAIN"];
};

 

keypress.sqf

 

/*
Admin Build Script by T27M
Website: www.t27m.co.uk
Need help?: http://www.t27m.co.uk/forum/viewforum.php?f=7

Part of Admin Build by T27M
Version: 0.2
*/ 

private ["_DisplayOrDialogOrControl", "_DikCode", "_shiftState", "_ctrlState", "_altState" ];
KeyPressed = "";
BuildActionMod = "None";
HandledKeyPress = false;


KeyPressDetect = {
	_DisplayOrDialogOrControl = _this select 0; // Display, Dialog , or Control
	_DikCode=                   _this select 1; // integer
	_shiftState =               _this select 2; // boolean
	_ctrlState =                _this select 3; // boolean
	_altState =                 _this select 4; // boolean
	
	if(_ctrlState || _altState) then {
		if(_ctrlState) then {
			BuildActionMod = "Small";
		}; 
		
		if(_altState) then {
			BuildActionMod = "Big";
		};
	} else {
		BuildActionMod = "None";
	};
	
    switch (_DikCode) do {
        //Key PgUp
        case 201: {
			BuildAction = "MoveUp";
        };
                
        //Key PgDown
        case 209: {
			BuildAction = "MoveDown";
        };
		
		//Q
        case 16: {
            BuildAction = "Rotate180";
        };
		
		//E
        case 18: {
            BuildAction = "Rotate0";
        };
		
		// Space
		case 57: {
			BuildAction = "PlaceObject";
		};
		
		// Esc
		case 1: {
			BuildAction = "Cancel";
		};		
		
		default { 
			BuildAction = "";
		};
    };
};

waitUntil { !isNull (findDisplay 46) };
(findDisplay 46) displayAddEventHandler ["KeyDown","_this call KeyPressDetect;false;"];

Hope u can help with this. Thanks

 

b_560_95_1.png

Link to comment
Share on other sites

been trying to install snap building pro

here is the issue im running into 

i go into my compiles.sqf but this line is not there call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";

what should i do?

 

found the compiles.spf in my init folder 

Line  call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";   must be in init.sqf  

 

You call for compiles.sqf from init.sqf   then u make custom compiles and change way to call it in init.sqf line call compile preprocessFileLineNumbers "YourFolder\compiles.sqf";

 

mY BAD english, hope i help u =)

Link to comment
Share on other sites

quick questions, does 1.4.1 shows its full version on the help screen? I'm damn sure I updated but it only shows me 1.4 when in-game, and I can't figure out if I broke it or if it was always like that.

it doesn't. I decided not to put minor updates in there, plan was not to do versioning there at all, but thought this might help people (should have just gone with versioning credits section), but oh well

 

 

I already have snap installed. What would I need to do to update as I'm not sure what version I currently have.

All updates are simple copy-paste. In fact the whole installation pretty much is a copy paste.

 

 

Snapping dont works for me, log says this:

 

Ref to nonnetwork object 6d07dd00# 1140706: sphere10cm_ep1.p3d
Ref to nonnetwork object 6d07e400# 1140707: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d720800# 1140708: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d720f00# 1140709: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d721600# 1140710: sphere10cm_ep1.p3d
Ref to nonnetwork object 5d721d00# 1140711: sphere10cm_ep1.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d
Ref to nonnetwork object 5f923900# 1139803: usordnance.p3d

Someone know how to fix it?

It works, the stuff you see in a debug means that non-network (local vehicles) points were made. Make sure you got latest update, 1.4 was broken for some maps like Napf

 

I assume someone already has this working - so can you share please?

Thanks!

sorry It was not intended to be used that way, because positioning at start is essential. Reason is - if object is thrown under the terrain or behind other objects, newps would come here with false reports of it not working, wasting everyone's time :)

Also it is possible, yes, you want to adjust player_build file and inverse helperDetach bool, then head to snap_build and readjust switch down below (as simple as that).

But keep in mind, this will cause more trouble than it's worth and would require redesigning point searching function to work properly, there is also no support for custom customization.

Link to comment
Share on other sites

I love this snap building mod of yours, 

but the snapping points on the cinder walls really annoyed me,

the only way to make cinder line up correctly was to place a metal floor down and snap to that. 

 

well i got bored last night and started playing with the points,

this pushes them in closer together and seems to work better metal floors and the overall appearance of the structure.

(in my opinion)

 

changed all values of 2.752 & -2.752 to 2.625 & -2.625 respectively. 

 

snappoints.hpp

/*-----------------------------------------------------------*/
// Created by Raymix
// Last update - August 21 2014
/*-----------------------------------------------------------*/


class SnapBuilding {
	//Barriers whitelist
	class Barrier {
		snapTo[] = {
			"Land_HBarrier5_DZ",
			"Land_HBarrier3_DZ",
			"Land_HBarrier1_DZ",
			"Sandbag1_DZ",
			"BagFenceRound_DZ",
			"Fort_RazorWire"
		};
		radius = 5;
	};
	//snap points
	class Land_HBarrier5Preview: Barrier{ //fix for broken offsets in ghost
		points[] = {
		{0,0,0,"Pivot"},
		{0,-0.75,0.1,"Back"},
		{0,0.75,0.1,"Front"},
		{-2.85,0,0.1,"Left"},
		{2.85,0,0.1,"Right"},
		{0,0,0.9,"Top"}
		};
	};
	class Land_HBarrier5_DZ: Land_HBarrier5Preview {
		points[] = {
		{0,0,0,"Pivot"},
		{0,-0.75,0,"Back"},
		{0,0.75,0,"Front"},
		{-2.85,0,0,"Left"},
		{2.85,0,0,"Right"},
		{0,0,0.9,"Top"}
		};
	}; 
	
	class Land_HBarrier3ePreview: Barrier { //whitelist inheritance
		points[] = {
		{0,0,0,"Pivot"},
		{0,-0.75,0,"Back"},
		{0,0.75,0,"Front"},
		{-1.7,0,0,"Left"},
		{1.7,0,0,"Right"},
		{0,0,0.9,"Top"}
		};
	};
	class Land_HBarrier3_DZ: Land_HBarrier3ePreview{}; //point inheritance

	class Land_HBarrier1Preview: Barrier {
		points[] = {
		{0,0,0,"Pivot"},
		{0,-0.75,0,"Back"},
		{0,0.75,0,"Front"},
		{-0.6,0,0,"Left"},
		{0.6,0,0,"Right"},
		{0,0,0.9,"Top"}
		};
	};
	class Land_HBarrier1_DZ: Land_HBarrier1Preview{};
		
	class Fort_RazorWirePreview: Barrier {
		points[] = {
		{0,0,0,"Pivot"},
		{0,-0.95,-0.3,"Back"},
		{0,0.95,-0.3,"Front"},
		{-4.1,0,-0.3,"Left"},
		{4.1,0,-0.3,"Right"},
		{0,0,1,"Top"}
		};
	};
	class Fort_RazorWire: Fort_RazorWirePreview {};
	
	class Sandbag1_DZ: Barrier {
		points[] = {
		{0,0,0,"Pivot"},
		{-1.5,0,0,"Left"},
		{1.5,0,0,"Right"},
		{0,0,0.4,"Top"}
		};
	};
	
	class BagFenceRound_DZ: Barrier {
		points[] = {
		{0,0,0,"Pivot"},
		{-1.295,0.38,0,"Left"},
		{1.295,0.38,0,"Right"},
		{0,0,0.4,"Top"}
		};
	};
	
	//Snapping whitelists for Floors, walls and stairs
	class FloorsWallsStairs {
		snapTo[] = {
			"WoodFloorQuarter_DZ",
			"WoodFloorHalf_DZ",
			"WoodFloor_DZ",
			"WoodStairs_DZ",
			"WoodStairsSans_DZ",
			"WoodSmallWallDoor_DZ",
			"WoodSmallWall_DZ",
			"WoodSmallWallWin_DZ",
			"Land_DZE_WoodDoor",
			"Land_DZE_WoodDoorLocked",
			"WoodLargeWall_DZ",
			"Land_DZE_LargeWoodDoor",
			"WoodLargeWallWin_DZ",
			"WoodLargeWallDoor_DZ",
			"Land_DZE_GarageWoodDoor",
			"Land_DZE_GarageWoodDoorLocked",
			"Land_DZE_LargeWoodDoorLocked",
			"WoodSmallWallThird_DZ",
			"CinderWall_DZ",
			"CinderWallDoorway_DZ",
			"CinderWallDoorLocked_DZ",
			"CinderWallDoor_DZ",
			"CinderWallSmallDoorway_DZ",
			"CinderWallDoorSmallLocked_DZ",
			"CinderWallHalf_DZ",
			"CinderWallDoorSmall_DZ",
			"MetalFloor_DZ"
		};
		radius = 7;
	};
	
	class WoodFloorQuarter_Preview_DZ: FloorsWallsStairs { //fix for broken offsets in ghost
		points[] = {
		{0,0,0,"Pivot"},
		{0,-1.23,0,"Back"},
		{0,1.23,0,"Front"},
		{-1.24,0,0,"Left"},
		{1.24,0,0,"Right"}
		};
	};
	
	class WoodFloorQuarter_DZ: FloorsWallsStairs { 
		points[] = {
		{0,0,0,"Pivot"},
		{0,-1.23,0.137726,"Back"},
		{0,1.23,0.137726,"Front"},
		{-1.24,0,0.137726,"Left"},
		{1.24,0,0.137726,"Right"}
		};
	};
	
	class WoodFloorHalf_Preview_DZ: FloorsWallsStairs { //fix for broken offsets in ghost
		points[] = {
		{0,0,0,"Pivot"},
		{0,-2.34,0,"Back"},
		{0,2.34,0,"Front"},
		{-1.25,0,0,"Left"},
		{1.25,0,0,"Right"}
		};
	};
	class WoodFloorHalf_DZ: FloorsWallsStairs{
		points[] = {
		{0,0,0,"Pivot"},
		{0,-2.34,0.1407,"Back"},
		{0,2.34,0.1407,"Front"},
		{-1.25,0,0.1407,"Left"},
		{1.25,0,0.1407,"Right"}
		};
	};
	
	class WoodFloor_Preview_DZ: FloorsWallsStairs {
		points[] = {
		{0,0,0,"Pivot"},
		{0,-2.33,0.130,"Back"},
		{0,2.33,0.130,"Front"},
		{-2.495,0,0.130,"Left"},
		{2.495,0,0.130,"Right"}
		};
		radius = 10;
	};
	class WoodFloor_DZ: WoodFloor_Preview_DZ{};
	
	class Stairs_DZE: FloorsWallsStairs {
		points[] = {
		{0,0,0,"Pivot"},
		{1.56055,-0.78,1.5,"Back"},
		{1.56055,0.78,1.5,"Front"},
		{1.73926,0.05,2.9,"Top"},
		{-1.73926,0.05,0,"Bottom"}
		};
	};
	class WoodStairs_DZ: Stairs_DZE {};
	class WoodStairs_Preview_DZ: Stairs_DZE {};
	class WoodStairsSans_Preview_DZ: Stairs_DZE {};
	class WoodStairsSans_DZ: Stairs_DZE {};

	class WoodSmall_DZE: FloorsWallsStairs { // Small wood walls
		points[] = {
		{0,0,0,"Pivot"},
		{-2.285, 0, 1.5,"Left"},
		{2.285, 0, 1.5,"Right"},
		{0, 0, 3,"Top"}
		};
	};
	class WoodSmallWallDoor_Preview_DZ: WoodSmall_DZE {};
	class WoodSmallWall_Preview_DZ: WoodSmall_DZE {};
	class WoodSmallWallWin_Preview_DZ: WoodSmall_DZE {};
	class WoodSmallWallDoor_DZ: WoodSmall_DZE {};
	class WoodSmallWall_DZ: WoodSmall_DZE {};
	class WoodSmallWallWin_DZ: WoodSmall_DZE {};
	class Land_DZE_WoodDoor: WoodSmall_DZE {};
	class Land_DZE_WoodDoorLocked: WoodSmall_DZE {};
	class WoodDoor_Preview_DZ: WoodSmall_DZE{};
	
	class WoodLarge_DZE: FloorsWallsStairs { //Large wood walls
		points[] = {
		{0,0,0,"Pivot"},
		{-2.45, 0, 1.5,"Left"},
		{2.45, 0, 1.5,"Right"},
		{0, 0, 3,"Top"}
		};
	};
	class WoodLargeWall_Preview_DZ: WoodLarge_DZE {};
	class WoodLargeWallWin_Preview_DZ: WoodLarge_DZE {};
	class WoodLargeWallDoor_Preview_DZ: WoodLarge_DZE {};
	class WoodSmallWallThird_Preview_DZ: WoodLarge_DZE {
		points[] = {
		{0,0,0,"Pivot"},
		{-2.445, 0, 1.5,"Left"},
		{2.445, 0, 1.5,"Right"},
		{0, 0, 1.17,"Top"}
		};
	};
	class WoodSmallWallThird_DZ: WoodSmallWallThird_Preview_DZ{};
	class WoodLargeWall_DZ: WoodLarge_DZE {};
	class Land_DZE_LargeWoodDoor: WoodLarge_DZE {};
	class WoodLargeWallWin_DZ: WoodLarge_DZE {};
	class WoodLargeWallDoor_DZ: WoodLarge_DZE {};
	class Land_DZE_GarageWoodDoor: WoodLarge_DZE {};
	class GarageWoodDoor_Preview_DZ: WoodLarge_DZE {};
	class Land_DZE_GarageWoodDoorLocked: WoodLarge_DZE {};
	class Land_DZE_LargeWoodDoorLocked: WoodLarge_DZE {};
	class LargeWoodDoor_Preview_DZ: WoodLarge_DZE {};
	
	class Cinder_DZE: FloorsWallsStairs { //All cinder walls and doors
		points[] = {
		{0,0,0,"Pivot"},
		{-2.625, 0, 1.5,"Left"},
		{2.625, 0, 1.5,"Right"},
		{0, 0, 3.37042,"Top"}
		};
		radius = 10;
	};
	class CinderWall_Preview_DZ: Cinder_DZE {};
	class CinderWallDoorway_Preview_DZ: Cinder_DZE {};
	class CinderWallSmallDoorway_Preview_DZ: Cinder_DZE {}; 
	class CinderWallHalf_Preview_DZ: Cinder_DZE {
		points[] = {
		{0,0,0,"Pivot"},
		{-2.625, 0, 1.5,"Left"},
		{2.625, 0, 1.5,"Right"},
		{0, 0, 1.5,"Top"}
		};
	};
	class CinderWall_DZ: Cinder_DZE {};
	class CinderWallDoorway_DZ: Cinder_DZE {};
	class CinderWallDoorLocked_DZ: Cinder_DZE {};
	class CinderWallDoor_DZ: Cinder_DZE {};
	class CinderWallSmallDoorway_DZ: Cinder_DZE {};
	class CinderWallDoorSmallLocked_DZ: Cinder_DZE {};
	class CinderWallHalf_DZ: Cinder_DZE {
		points[] = {
		{0,0,0,"Pivot"},
		{-2.625, 0, 1.5,"Left"},
		{2.625, 0, 1.5,"Right"},
		{0, 0, 1.5,"Top"}
		};
	};
	class CinderWallDoorSmall_DZ: Cinder_DZE {};
	
	class MetalFloor_Preview_DZ: FloorsWallsStairs { //fix for broken offsets in ghost
		points[] = {
		{0,0,0.011,"Pivot"},
		{0, -2.64, 0.009,"Back"},
		{0, 2.64, 0.009,"Front"},
		{-2.64, 0, 0.009,"Left"},
		{2.64, 0, 0.009,"Right"}
		};
		radius = 12;
	};
	class MetalFloor_DZ: FloorsWallsStairs{
		points[] = {
		{0,0,0,"Pivot"},
		{0, -2.64, 0.15,"Back"},
		{0, 2.64, 0.15,"Front"},
		{-2.64, 0, 0.15,"Left"},
		{2.64, 0, 0.15,"Right"}
		};
		radius = 12;
	};
	
	
	//Non essential Items that only snap to themselves, do whitelist inheritance if you want these to snap
	class WoodCrate_DZ {
		snapTo[] = {
			"WoodCrate_DZ"
		};
		radius = 5;
		points[] = {
		{0,0,0,"Pivot"},
		{0,-0.47,0,"Back"},
		{0,0.47,0,"Front"},
		{-0.47,0,0,"Left"},
		{0.47,0,0,"Right"},
		{0,0,0.47,"Top"}
		};
	};
		
	class MetalPanel_DZ {
		snapTo[] = {
			"MetalPanel_DZ"
		};
		radius = 5;
		points[] = {
		{0,0,0,"Pivot"},
		{-1.5,0,0,"Left"},
		{1.5,0,0,"Right"}
		};
	};
	
		class MetalGate_DZ {
		snapTo[] = {
			"MetalGate_DZ"
		};
		radius = 5;
		points[] = {
		{0,0,0,"Pivot"},
		{-4.1,0,0,"Left"}
		};
	};
	
	class StickFence_DZ {
		snapTo[] = {
			"StickFence_DZ"
		};
		radius = 10;
		points[] = {
		{0,0,0,"Pivot"},
		{-2.95,0,0.3,"Left"},
		{2.95,0,0.3,"Right"}
		};
	};
	
	class Fence_corrugated_DZ {
		snapTo[] = {
			"Fence_corrugated_DZ"
		};
		radius = 10;
		points[] = {
		{0,0,0,"Pivot"},
		{-1.95,0,0.88,"Left"},
		{1.95,0,0.88,"Right"}
		};
	};
	
	class WoodRamp_Preview_DZ {
		snapTo[] = {
			"WoodRamp_DZ"
		};
		radius = 7;
		points[] = {
		{0,0,0,"Pivot"},
		{0.65,-1.7,1.2,"Back"},
		{0.65,1.5,1.2,"Front"},
		{3.34,-0.115,2.82,"Top"}
		};
	};
	class WoodRamp_DZ: WoodRamp_Preview_DZ{};
	
	class WoodLadder_Preview_DZ {
		snapTo[] = {
			"WoodLadder_DZ"
		};
		radius = 5;
		points[] = {
		{0,0,0,"Pivot"},
		{-0.4,0,1.725,"Left"},
		{0.4,0,1.725,"Right"}
		};
	};
	class WoodLadder_DZ: WoodLadder_Preview_DZ{};
	
	class VaultStorageLocked {
		snapTo[] = {
			"VaultStorageLocked",
			"VaultStorage"
		};
		radius = 5;
		points[] = {
		{0,0,0,"Pivot"},
		{0,0.284,0.615,"Back"},
		{0,0,1.23,"Top"},
		{-0.362,0,0.615,"Left"},
		{0.362,0,0.615,"Right"}
		};
		
	};
	class VaultStorage: VaultStorageLocked {};
};

 

code is there for anyone too lazy to use find and replace in notepad++ or sublime

as always, back up your existing files and i take no responsibility if this seemingly minor change murders your family in their sleep. 

 

enjoy

 

Xp3v2Z8.png

Link to comment
Share on other sites

Plot For Life is not part of this script, however RimBlock also uses player_build file in his script. There are many posts merging these scripts together on several forums as well as video tutorial in my signature literary showing how to merge these 2 mods together.

Link to comment
Share on other sites

Something is wrong with player_build.sqf not really working well when placing plot pole. 1.63.112555  epoch 1.0.5.1

 

18:16:18 "infiSTAR.de Log: SERVER (-) | Plot Pole built @1 by any"
18:16:18 Error in expression <_this select 1;
_allowed = false;
 
if ((typeOf _object) in dayz_allowedObjects) >
18:16:18   Error position: <typeOf _object) in dayz_allowedObjects) >
18:16:18   Error typeof: Type String, expected Object
18:16:18 File z\addons\dayz_server\init\server_functions.sqf, line 143
Link to comment
Share on other sites

Has nothing to do with SBP or player_build.sqf, neither of them even use check_publichobject function... array passed to publish function is epoch's default

The actual error is not in the log you posted, but in the script that passes wrong arguments to that function. Either that or your dayz_allowedObjects array consists of objects not their classnames for whatever reason.

Link to comment
Share on other sites

Can i throw in a quick question! :) In the german youtube installation tutorial, he altså alters the fn_Selfactions. I've done this. And installed it the best i could.

Snapping works perfectly, so no problems there.. But i seem to have lost the ability to use vehicles.. All of the enter / unlock vehicle options on the scroll menu are gone.

 

Anyone know where i have failed ? :)   I cant seem to find any installation instructions how to add the script in the fn_selfActions.sqf it on the Github page. Is it not really needed?

I did put this in the fn_selfactions bottom as the Video stated.

// ---------------------------------------BuildSnapping Start------------------------------------

if (!isDedicated) then {
/* Use command menu instead of scroll menu? (default = false) */ 
DZE_SNAP_PRO_USE_COMMAND_MENU = false; 
 
DZE_SNAP_BUILD_NUMKEYS = [0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09­,0x0A,0x0B]; 
 
player_build = compile preprocessFileLineNumbers "custom\snap_pro\player_build.sqf";
snap_build = compile preprocessFileLineNumbers "custom\snap_pro\snap_build.sqf"; 
dayz_spaceInterrupt = compile preprocessFileLineNumbers "custom\snap_pro\dayz_spaceInterrupt.sqf";
 
};
 
// ---------------------------------------BuildSnapping End------------------------------------

 

Link to comment
Share on other sites

SBP has nothing to do with fn_selfActions, man. In general it is a bad idea to add any complex code to that file/function, since it's launched every 0.5 seconds. Add SBP to it and you got yourself a lagfest.

 

I will remove that video from Q&A, stick with compiles :)

Link to comment
Share on other sites

Haha :P Thumbs up! Lagfest indeed! Well, ill try to do it over again to add it and see if i can get a hold of it :)

 

EDIT : Well slap my face and call me Martha..Note to self it! It's a generally bad idea to script at 02 in the morning... as i forgot to change the compiles location!

 

 

Thank you for this awesome mod! This gonna stick with out server for a long time! Priceless! 

Link to comment
Share on other sites

Hey Raymix, I don't know if you would be willing to provide support for this or not, but I'm using Rim's newest P4L build (2.32) and I'm having trouble when it comes to snap_pro integration. When I use Rim's DZE_modularbuild: variable and set to true, I lose control of buildable objects and cannot abort the craft. I get an error in the RPT that states fnc_getpos has an error where the variable "_thingy" comes back as an array and its looking for an object. If I turn off DZE_modularbuild everything goes back to normal and the error is gone.

Now from what I understand from Rim's instructions he has already merged everything necessary where you two use the same files for edits, and all I needed to do was properly path your dayz_spaceinterrupt and snappoints.hpp then enable that variable and I would be good to go, but it is not the case. I have included the error and the function in question for your perusal.

If you tell me its Rim's fault and I need to cry at him thats ok too.

Error in expression <0,0]};
_thingy = _this select 0;
_pos = getPosASL _thingy;
if !(surfaceIsWater _>
  Error position: <getPosASL _thingy;
if !(surfaceIsWater _>
  Error getposasl: Type Array, expected Object
File mpmissions\__CUR_MP.Napf\custom\A_Plot_for_Life\init\compiles.sqf, line 582

 

FNC_GetPos = {
        private "_pos";
        if (isNil {_this select 0}) exitWith {[0,0,0]};
        _thingy = _this select 0;
        _pos = getPosASL _thingy;
        if !(surfaceIsWater _pos) then {
            _pos =  ASLToATL _pos;
        };
        _pos
    };

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
×
×
  • Create New...