th3c0re Posted June 9, 2014 Report Share Posted June 9, 2014 sorry dint see that one can my link be removed pls :$ thanksss Link to comment Share on other sites More sharing options...
NoxSicarius Posted June 9, 2014 Report Share Posted June 9, 2014 sorry dint see that one can my link be removed pls :$ thanksss Just edit your post and delete the text, then just type in removed. Link to comment Share on other sites More sharing options...
Bloodline-Clan Posted June 11, 2014 Report Share Posted June 11, 2014 DL not working so you cant use this :( Link to comment Share on other sites More sharing options...
NoxSicarius Posted June 12, 2014 Report Share Posted June 12, 2014 DL not working so you cant use this :( You should read comments in the thread. There are multiple sources to download from now https://github.com/noxsicarius/Build-Snapping Link to comment Share on other sites More sharing options...
fr1nk Posted June 12, 2014 Report Share Posted June 12, 2014 DL not working so you cant use this :( Look up a few posts. Link to comment Share on other sites More sharing options...
Bloodline-Clan Posted June 12, 2014 Report Share Posted June 12, 2014 Tryed it on my server did all the stuff i was told to and it hangs as the server booting up at wait for host Link to comment Share on other sites More sharing options...
fr1nk Posted June 12, 2014 Report Share Posted June 12, 2014 Check your server log for errors, it should tell you exactly what the problem is. Link to comment Share on other sites More sharing options...
Bloodline-Clan Posted June 12, 2014 Report Share Posted June 12, 2014 o well tryed <,< lol Link to comment Share on other sites More sharing options...
Bloodline-Clan Posted June 12, 2014 Report Share Posted June 12, 2014 there was none just seems as if its out of date Link to comment Share on other sites More sharing options...
Triksterism Posted June 13, 2014 Report Share Posted June 13, 2014 I have this working on my server but for some reason, over time, the snapped objects will malign ever so slightly. class SnapPoints { class MetalFloor_DZ { sn> 5:56:37 Error position: <SnapPoints { class MetalFloor_DZ { sn> 5:56:37 Error Missing ; 5:56:37 File mpmissions\DayZ_Overpoch_1.Chernarus\custom\snap_build\points.hpp, line 12 5:56:37 Error in expression <snap_build\points.hpp" Link to comment Share on other sites More sharing options...
THEbookie Posted June 14, 2014 Report Share Posted June 14, 2014 has anyone merged this player_build.sqf with the one you use for [CPC] Indestructible Bases? could you share if you did? Link to comment Share on other sites More sharing options...
OtterNas3 Posted June 15, 2014 Author Report Share Posted June 15, 2014 Dropbox account got hacked, sorry guys, i finally put it all together again from my Serverfiles, was a bit tuff cause this is running on my HeadlessClient now. Reupped the file in first Post! And for the [CPC] Indestructable Bases: When it tells you this in the instructions: // Start Build _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; // ### [CPC] Indestructible Base Fix _tmpbuilt addEventHandler ["HandleDamage", {false}]; _tmpbuilt enableSimulation false; // ### [CPC] Indestructible Base Fix replace the _tmpbuilt with _object so it looks like this: // Start Build _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; // ### [CPC] Indestructible Base Fix _object addEventHandler ["HandleDamage", {false}]; _object enableSimulation false; // ### [CPC] Indestructible Base Fix For the fine fixes mentioned in this Post from RimBlock: Just debugging another script and I keep getting a couple of errors error coming up relating to the snapto release. I have debugged them and worked out fixes that appear to be working now. Error player_buildControls.sqf -> line 85 -> _isAllowedUnderGround undefined. Reason _isAllowedUnderGround is not passed to the player_buildControls script and is not defined in the player_buildControls script. Solution Open custom\snap_build\player_build.sqf find _key_monitor = [] spawn player_buildControls ; Change to _key_monitor = [_isAllowedUnderGround] spawn player_buildControls ; save Open custom\snap_build\player_buildControls.sqf find private ["_zheightchanged", "_zheightdirection", "_rotate"]; diag_log "build controls"; Change to private ["_zheightchanged", "_zheightdirection", "_rotate", "_isAllowedUnderGround"]; diag_log "build controls"; _isAllowedUnderGround = _this select 0; Save What the change does The _isAllowedUnderGround variable is defined and populated in the palyer_build.sqf script. This then passes it to the player_buildControls.sqf script as a parameter. Tested: Yes - Light testing. Result: No issues with fix found. --------------------------- Error 2 player_build.sqf -> line 288 -> s_building_snapping undefined. Reason This occurs when a non snapable item is placed. Adding the snap mouse wheel menu item occurs only if the item being placed is snapable. Removing the menu item occurs at the end of the code even if the menu item was never added as the item being places was not snapable, hence the error message. Solution Open custom\snap_build\player_build.sqf Find player removeAction s_building_snapping;Change to if (isClass (missionConfigFile >> "SnapPoints" >> _classname)) then { player removeAction s_building_snapping; // Only remove the snap menu item if the item is snapable. }; What the change does The added if statement uses the same check to see if the item being placed is snapable before trying to remove the snap option form the mouse wheel menu. Tested: Yes - Light testing. Result: No issues with fix found. ---------------------------------------------- RB for the s_building_snapping remove thing. If you think this will bug when try to remove it when not defined, you should have a look in the epoch fn_selfActions! There are a bunch of entrys that gets removed every second when no valid cursortarget is near the player ^^ Nevermind its not bad to do it, just not needed ^^ I think you debugging on the new Arma2 beta patch? It shows errors all the way for undefined variables ^^ For the _isAllowedUnderGround not defined thats correct one i updated the file in the downloadfile alrdy. Never had a look at this cause i never used that function anyway, many Buildings on my Server needs to be able been build more then 2m under the ground, disabled that on my server. So i never noticed. Thanks for the hint! Files updated in first post! Moo, Otter Link to comment Share on other sites More sharing options...
Deridder45 Posted June 19, 2014 Report Share Posted June 19, 2014 I cant seem to snap objects on top of eachother while the base is over water. Everything else works on water and snapping objects on top of eachother will work on land. Is there anyway i can fix this problem? -Thanks Link to comment Share on other sites More sharing options...
BetterDeadThanZed Posted June 24, 2014 Report Share Posted June 24, 2014 The player_build.sqf was updated with 1.0.5. Any chance of a version that will support 1.0.5? Link to comment Share on other sites More sharing options...
Flosstradamus Posted June 24, 2014 Report Share Posted June 24, 2014 Yeah snap building is broken 100% with this update unfortunately :( Link to comment Share on other sites More sharing options...
LunchboxCharlie Posted June 24, 2014 Report Share Posted June 24, 2014 Yeah snap building is broken 100% with this update unfortunately :( Yeah, player_build was changed in 1.0.5, so it has to be updated. Link to comment Share on other sites More sharing options...
Coffee Posted June 25, 2014 Report Share Posted June 25, 2014 Working for me ok on 1.0.5 and i have not changed any files in snapping just installed it straight into 1.0.5 and away it went ;) Link to comment Share on other sites More sharing options...
LunchboxCharlie Posted June 25, 2014 Report Share Posted June 25, 2014 Working for me ok on 1.0.5 and i have not changed any files in snapping just installed it straight into 1.0.5 and away it went ;) I'm getting snapping not available for this object. Link to comment Share on other sites More sharing options...
BetterDeadThanZed Posted June 25, 2014 Report Share Posted June 25, 2014 Working for me ok on 1.0.5 and i have not changed any files in snapping just installed it straight into 1.0.5 and away it went ;) Since player_build.sqf changed with 1.0.5, it shouldn't be working. Coffee 1 Link to comment Share on other sites More sharing options...
LunchboxCharlie Posted June 25, 2014 Report Share Posted June 25, 2014 Since player_build.sqf changed with 1.0.5, it shouldn't be working. I was a dummy and not putting the stuff at the bottom of desc.ext. It's working for me, however, it still needs to be updated, haha, since they did indeed change it. Coffee 1 Link to comment Share on other sites More sharing options...
BetterDeadThanZed Posted June 25, 2014 Report Share Posted June 25, 2014 I just tried again and I'm not getting the option to snap anything. Link to comment Share on other sites More sharing options...
RimBlock Posted June 25, 2014 Report Share Posted June 25, 2014 My understanding is that OtterNas is busy with 'real life' this week but should be back in the land of Epoch next week sometime. I would expect some feedback from him at that point. I have not looked at the new code yet but will be concentrating on my own Plat for Life mod first if any problems pop up with that and then can maybe offer some suggestions. Unlikely to be before the weekend though. Link to comment Share on other sites More sharing options...
cen Posted June 25, 2014 Report Share Posted June 25, 2014 1.0.5 player_build.sqf with working snapping: /* DayZ Base Building Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected]. */ private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"]; if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; DZE_ActionInProgress = true; // disallow building if too many objects are found within 30m if((count ((getPosATL player) nearObjects ["DZE_maintainClasses",60])) >= DZE_BuildingLimit) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"];}; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _isWater = dayz_isSwimming; _cancel = false; _reason = ""; _canBuildOnPlot = false; _vehicle = vehicle player; _inVehicle = (_vehicle != player); DZE_Q = false; DZE_Z = false; DZE_Q_alt = false; DZE_Z_alt = false; DZE_Q_ctrl = false; DZE_Z_ctrl = false; DZE_5 = false; DZE_4 = false; DZE_6 = false; DZE_cancelBuilding = false; call gear_ui_init; closeDialog 1; if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];}; if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];}; if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];}; if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];}; _item = _this; // Need Near Requirements _abort = false; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby"); { switch(_x) do{ case "fire": { _distance = 3; _isNear = {inflamed _x} count (getPosATL player nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = "fire"; }; }; case "workshop": { _distance = 3; _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = "workshop"; }; }; case "fueltank": { _distance = 30; _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = "fuel tank"; }; }; }; } forEach _needNear; if(_abort) exitWith { cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"]; DZE_ActionInProgress = false; }; _classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; _require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require"); _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); }; _requireplot = DZE_requireplot; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then { _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot"); }; _isAllowedUnderGround = 1; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); }; _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); if((count _offset) <= 0) then { _offset = [0,1.5,0]; }; _isPole = (_classname == "Plastic_Pole_EP1_DZ"); _isLandFireDZ = (_classname == "Land_Fire_DZ"); _distance = DZE_PlotPole select 0; _needText = localize "str_epoch_player_246"; if(_isPole) then { _distance = DZE_PlotPole select 1; }; // check for near plot _findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance]; _findNearestPole = []; { if (alive _x) then { _findNearestPole set [(count _findNearestPole),_x]; }; } count _findNearestPoles; _IsNearPlot = count (_findNearestPole); // If item is plot pole && another one exists within 45m if(_isPole && _IsNearPlot > 0) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; }; if(_IsNearPlot == 0) then { // Allow building of plot if(_requireplot == 0 || _isLandFireDZ) then { _canBuildOnPlot = true; }; } else { // Since there are plots nearby we check for ownership && then for friend status // check nearby plots ownership && then for friend status _nearestPole = _findNearestPole select 0; // Find owner _ownerID = _nearestPole getVariable ["CharacterID","0"]; // diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID]; // check if friendly to owner if(dayz_characterID == _ownerID) then { //Keep ownership // owner can build anything within his plot except other plots if(!_isPole) then { _canBuildOnPlot = true; }; } else { // disallow building plot if(!_isPole) then { _friendlies = player getVariable ["friendlyTo",[]]; // check if friendly to owner if(_ownerID in _friendlies) then { _canBuildOnPlot = true; }; }; }; }; // _message if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"]; }; _missing = ""; _hasrequireditem = true; { _hastoolweapon = _x in weapons player; if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); }; } count _require; _hasbuilditem = _this in magazines player; if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; }; if (!_hasrequireditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; }; if (_hasrequireditem) then { _location = [0,0,0]; _isOk = true; // get inital players position _location1 = getPosATL player; _dir = getDir player; /* Commented out cause GHOST preview does not work with snapping! // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; */ _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _object setDir _dir; _object attachTo [player,_offset]; _position = getPosATL _object; cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"]; player allowDamage false; SnappingOffset = _offset; SnappingDir = 0; SnappingSpotMarkers = []; SnappingEnabled = false; SnappedOffsetZ = 0; SnappingResetPos = false; if (isClass (missionConfigFile >> "SnapPoints" >> _classname)) then { s_building_snapping = player addAction ["Toggle Snapping", "scripts\snapping\player_toggleSnapping.sqf",_classname, 3, true, false, "",""]; }; _snapper = [_object, _classname] spawn snap_object; _key_monitor = [] spawn player_buildControls ; while {_isOk} do { uisleep 1; _location2 = getPosATL player; if(DZE_5) exitWith { _isOk = false; detach _object; _dir = getDir _object; _position = getPosATL _object; }; if(_location1 distance _location2 > 5) exitWith { _isOk = false; _cancel = true; _reason = "You've moved to far away from where you started building (within 5 meters)"; detach _object; }; if(((SnappingOffset select 2) > 5) or ((SnappingOffset select 2) < -5)) exitWith { _isOk = false; _cancel = true; _reason = "Cannot move up or down more than 5 meters"; detach _object; }; if (player getVariable["combattimeout", 0] >= time) exitWith { _isOk = false; _cancel = true; _reason = (localize "str_epoch_player_43"); detach _object; }; if (DZE_cancelBuilding) exitWith { _isOk = false; _cancel = true; _reason = "Cancelled building."; detach _object; }; }; terminate _snapper; terminate _key_monitor; player removeAction s_building_snapping; player allowDamage true; //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; }; if(!placevault) then { _cancel = true; _reason = "Cannot build in a city."; }; if(!_cancel) then { _classname = _classnametmp; _location = _position; if((_isAllowedUnderGround == 0) and ((_location select 2) < 0)) then { _location set [2,0]; }; _object setPosATL _location; cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"]; _limit = 3; if (DZE_StaticConstructionCount > 0) then { _limit = DZE_StaticConstructionCount; } else { if(isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; }; _isOk = true; _proceed = false; _counter = 0; while {_isOk} do { [10,10] call dayz_HungerThirst; player playActionNow "Medic"; _dis=20; _sfx = "repair"; [player,_sfx,0,false,_dis] call dayz_zombieSpeak; [player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then { _started = true; }; if (_started and !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; uisleep 0.1; }; r_doLoop = false; if(!_finished) exitWith { _isOk = false; _proceed = false; }; if(_finished) then { _counter = _counter + 1; }; cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"]; if(_counter == _limit) exitWith { _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,_item] call BIS_fnc_invRemove); if(_num_removed == 1) then { cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; if (_isPole) then { [] spawn player_plotPreview; }; _object setVariable ["OEMPos",_location,true]; 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]; PVDZE_obj_Publish = [_combination,_object,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; } else { _object setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_object isKindOf "Land_Fire_DZ") then { _object spawn player_fireMonitor; } else { PVDZE_obj_Publish = [dayz_characterID,_object,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; }; }; } else { deleteVehicle _object; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _object; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { deleteVehicle _object; cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; }; }; DZE_ActionInProgress = false; BetterDeadThanZed, Buck0, calamity and 1 other 4 Link to comment Share on other sites More sharing options...
Coffee Posted June 25, 2014 Report Share Posted June 25, 2014 1.0.5 player_build.sqf with working snapping: /* DayZ Base Building Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected]. */ private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"]; if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; DZE_ActionInProgress = true; // disallow building if too many objects are found within 30m if((count ((getPosATL player) nearObjects ["DZE_maintainClasses",60])) >= DZE_BuildingLimit) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"];}; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _isWater = dayz_isSwimming; _cancel = false; _reason = ""; _canBuildOnPlot = false; _vehicle = vehicle player; _inVehicle = (_vehicle != player); DZE_Q = false; DZE_Z = false; DZE_Q_alt = false; DZE_Z_alt = false; DZE_Q_ctrl = false; DZE_Z_ctrl = false; DZE_5 = false; DZE_4 = false; DZE_6 = false; DZE_cancelBuilding = false; call gear_ui_init; closeDialog 1; if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];}; if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];}; if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];}; if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];}; _item = _this; // Need Near Requirements _abort = false; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby"); { switch(_x) do{ case "fire": { _distance = 3; _isNear = {inflamed _x} count (getPosATL player nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = "fire"; }; }; case "workshop": { _distance = 3; _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = "workshop"; }; }; case "fueltank": { _distance = 30; _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = "fuel tank"; }; }; }; } forEach _needNear; if(_abort) exitWith { cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"]; DZE_ActionInProgress = false; }; _classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; _require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require"); _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); }; _requireplot = DZE_requireplot; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then { _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot"); }; _isAllowedUnderGround = 1; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); }; _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); if((count _offset) <= 0) then { _offset = [0,1.5,0]; }; _isPole = (_classname == "Plastic_Pole_EP1_DZ"); _isLandFireDZ = (_classname == "Land_Fire_DZ"); _distance = DZE_PlotPole select 0; _needText = localize "str_epoch_player_246"; if(_isPole) then { _distance = DZE_PlotPole select 1; }; // check for near plot _findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance]; _findNearestPole = []; { if (alive _x) then { _findNearestPole set [(count _findNearestPole),_x]; }; } count _findNearestPoles; _IsNearPlot = count (_findNearestPole); // If item is plot pole && another one exists within 45m if(_isPole && _IsNearPlot > 0) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; }; if(_IsNearPlot == 0) then { // Allow building of plot if(_requireplot == 0 || _isLandFireDZ) then { _canBuildOnPlot = true; }; } else { // Since there are plots nearby we check for ownership && then for friend status // check nearby plots ownership && then for friend status _nearestPole = _findNearestPole select 0; // Find owner _ownerID = _nearestPole getVariable ["CharacterID","0"]; // diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID]; // check if friendly to owner if(dayz_characterID == _ownerID) then { //Keep ownership // owner can build anything within his plot except other plots if(!_isPole) then { _canBuildOnPlot = true; }; } else { // disallow building plot if(!_isPole) then { _friendlies = player getVariable ["friendlyTo",[]]; // check if friendly to owner if(_ownerID in _friendlies) then { _canBuildOnPlot = true; }; }; }; }; // _message if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"]; }; _missing = ""; _hasrequireditem = true; { _hastoolweapon = _x in weapons player; if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); }; } count _require; _hasbuilditem = _this in magazines player; if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; }; if (!_hasrequireditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; }; if (_hasrequireditem) then { _location = [0,0,0]; _isOk = true; // get inital players position _location1 = getPosATL player; _dir = getDir player; /* Commented out cause GHOST preview does not work with snapping! // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; */ _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _object setDir _dir; _object attachTo [player,_offset]; _position = getPosATL _object; cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"]; player allowDamage false; SnappingOffset = _offset; SnappingDir = 0; SnappingSpotMarkers = []; SnappingEnabled = false; SnappedOffsetZ = 0; SnappingResetPos = false; if (isClass (missionConfigFile >> "SnapPoints" >> _classname)) then { s_building_snapping = player addAction ["Toggle Snapping", "scripts\snapping\player_toggleSnapping.sqf",_classname, 3, true, false, "",""]; }; _snapper = [_object, _classname] spawn snap_object; _key_monitor = [] spawn player_buildControls ; while {_isOk} do { uisleep 1; _location2 = getPosATL player; if(DZE_5) exitWith { _isOk = false; detach _object; _dir = getDir _object; _position = getPosATL _object; }; if(_location1 distance _location2 > 5) exitWith { _isOk = false; _cancel = true; _reason = "You've moved to far away from where you started building (within 5 meters)"; detach _object; }; if(((SnappingOffset select 2) > 5) or ((SnappingOffset select 2) < -5)) exitWith { _isOk = false; _cancel = true; _reason = "Cannot move up or down more than 5 meters"; detach _object; }; if (player getVariable["combattimeout", 0] >= time) exitWith { _isOk = false; _cancel = true; _reason = (localize "str_epoch_player_43"); detach _object; }; if (DZE_cancelBuilding) exitWith { _isOk = false; _cancel = true; _reason = "Cancelled building."; detach _object; }; }; terminate _snapper; terminate _key_monitor; player removeAction s_building_snapping; player allowDamage true; //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; }; if(!placevault) then { _cancel = true; _reason = "Cannot build in a city."; }; if(!_cancel) then { _classname = _classnametmp; _location = _position; if((_isAllowedUnderGround == 0) and ((_location select 2) < 0)) then { _location set [2,0]; }; _object setPosATL _location; cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"]; _limit = 3; if (DZE_StaticConstructionCount > 0) then { _limit = DZE_StaticConstructionCount; } else { if(isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; }; _isOk = true; _proceed = false; _counter = 0; while {_isOk} do { [10,10] call dayz_HungerThirst; player playActionNow "Medic"; _dis=20; _sfx = "repair"; [player,_sfx,0,false,_dis] call dayz_zombieSpeak; [player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then { _started = true; }; if (_started and !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; uisleep 0.1; }; r_doLoop = false; if(!_finished) exitWith { _isOk = false; _proceed = false; }; if(_finished) then { _counter = _counter + 1; }; cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"]; if(_counter == _limit) exitWith { _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,_item] call BIS_fnc_invRemove); if(_num_removed == 1) then { cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; if (_isPole) then { [] spawn player_plotPreview; }; _object setVariable ["OEMPos",_location,true]; 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]; PVDZE_obj_Publish = [_combination,_object,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; } else { _object setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_object isKindOf "Land_Fire_DZ") then { _object spawn player_fireMonitor; } else { PVDZE_obj_Publish = [dayz_characterID,_object,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; }; }; } else { deleteVehicle _object; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _object; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { deleteVehicle _object; cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; }; }; DZE_ActionInProgress = false; Thanks for this i'll update mine... Link to comment Share on other sites More sharing options...
Ped Posted June 27, 2014 Report Share Posted June 27, 2014 Hello, just a quick mention. If you followed the original guide to the letter, your scripts will be in: custom\snap_build\ Assuming you copy and pasted Cen's fixed player_build.sqf the path in the fixed player_build.sqf will need to be corrected as Cen has his scripts in another directory. Look for line line 226 in Cen's player_build.sqf It will read: s_building_snapping = player addAction ["Toggle Snapping", "scripts\snapping\player_toggleSnapping.sqf",_classname, 3, true, false, "",""]; As you can see the path is scripts\snapping\ and this is where Cen has his scripts. But the original post/author's instructions point to custom\snap_build. All you need to do is change the above line to the following: s_building_snapping = player addAction ["Toggle Snapping", "custom\snap_build\player_toggleSnapping.sqf",_classname, 3, true, false, "",""]; Have a nice day! calamity 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now