hamthejam Posted August 5, 2015 Report Share Posted August 5, 2015 This is what i'm using, has older snap/vector added to it though i'm not sure if snap actually works as i haven't set any snappoints for any deployable items. Note that vectors don't save on deployable vehicles like tripods, bikes, mozzies etc but does save with any kind of buildings private ["_range", "_cptarget", "_objectClasses", "_cnt", "_objectsnearcount", "_objects", "_count", "_onLadder", "_isWater", "_cancel", "_reason", "_canBuildOnPlot", "_isBuildAdmin", "_vehicle", "_inVehicle", "_playerUID", "_canDo", "_vector", "_object", "_rotations", "_aroundX", "_aroundY", "_aroundZ", "_dirX", "_dirY", "_dirZ", "_upX", "_upY", "_upZ", "_dirXTemp", "_upXTemp", "_dir", "_up", "_item", "_abort", "_needNear", "_index", "_distance", "_isNear", "_classname", "_classnametmp", "_require", "_text", "_ghost", "_lockable", "_requireplot", "_isAllowedUnderGround", "_offset", "_isPole", "_isLandFireDZ", "_needText", "_findNearestPoles", "_findNearestPole", "_IsNearPlot", "_exitWith", "_nearestPole", "_ownerID", "_friendlies", "_fuid", "_friendUID", "_builder", "_message", "_missing", "_hasrequireditem", "_hastoolweapon", "_hasbuilditem", "_location", "_isOk", "_location1", "_objectHelper", "_helperColor", "_position", "_objHDiff", "_zheightchanged", "_zheightdirection", "_rotate", "_objectHelperDir", "_location2", "_objectHelperPos", "_tmpbuilt", "_buildOffset", "_vUp", "_limit", "_proceed", "_counter", "_dis", "_sfx", "_started", "_finished", "_animState", "_isMedic", "_combinationDisplay", "_combination_1", "_combination_2", "_combination_3", "_combination", "_combination_1_Display", "_combination_4", "_temp_removed_array"]; if(DZE_ActionInProgress) exitWith { cutText ["\n\nToo many objects within 120m", "PLAIN DOWN"]; }; DZE_ActionInProgress = true; if (isNil "snapProVariables") then { if (isNil "DZE_snapExtraRange") then { DZE_snapExtraRange = 0; }; s_player_toggleSnap = -1; s_player_toggleSnapSelect = -1; s_player_toggleSnapSelectPoint=[]; snapActions = -1; snapGizmos = []; snapGizmosNearby = []; snapProVariables = true; // will skip this statement from now on. }; _pos = [player] call FNC_GetPos; _objectClasses = DZE_maintainClasses; _cnt = count (_pos nearObjects ["_objectClasses",DZE_checkNearbyRadius]); if (_cnt >= 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; _isBuildAdmin = (getPlayerUID player) in WG_adminBuild; _vehicle = vehicle player; _inVehicle = (_vehicle != player); _playerUID = getPlayerUID player; helperDetach = false; _canDo = (!r_drag_sqf and !r_player_unconscious); _vector = []; fnc_SetPitchBankYaw = { private ["_object","_rotations","_aroundX","_aroundY","_aroundZ","_dirX","_dirY","_dirZ","_upX","_upY","_upZ","_dir","_up","_dirXTemp", "_upXTemp"]; _object = _this select 0; _rotations = _this select 1; _aroundX = _rotations select 0; _aroundY = _rotations select 1; _aroundZ = (360 - (_rotations select 2)) - 360; _dirX = 0; _dirY = 1; _dirZ = 0; _upX = 0; _upY = 0; _upZ = 1; if (_aroundX != 0) then { _dirY = cos _aroundX; _dirZ = sin _aroundX; _upY = -sin _aroundX; _upZ = cos _aroundX; }; if (_aroundY != 0) then { _dirX = _dirZ * sin _aroundY; _dirZ = _dirZ * cos _aroundY; _upX = _upZ * sin _aroundY; _upZ = _upZ * cos _aroundY; }; if (_aroundZ != 0) then { _dirXTemp = _dirX; _dirX = (_dirXTemp* cos _aroundZ) - (_dirY * sin _aroundZ); _dirY = (_dirY * cos _aroundZ) + (_dirXTemp * sin _aroundZ); _upXTemp = _upX; _upX = (_upXTemp * cos _aroundZ) - (_upY * sin _aroundZ); _upY = (_upY * cos _aroundZ) + (_upXTemp * sin _aroundZ); }; _dir = [_dirX,_dirY,_dirZ]; _up = [_upX,_upY,_upZ]; _object setVectorDirAndUp [_dir,_up]; DZE_BuildVector = [_dir,_up]; }; 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_F = 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 = ""; //### BEGIN MODIFIED CODE: player_deploy //_needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby"); private["_index"]; _index = _this call getDeployableIndex; _needNear = _index call getDeployableNeedNearBy; //### END MODIFIED CODE: player_deploy { 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 = _index call getDeployableClass; _classnametmp = _classname; _require = []; _text = _index call getDeployableDisplay; _ghost = ""; _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); }; _requireplot = 1; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then { _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot"); }; //### BEGIN MODIFIED CODE: player_deploy if(_index call getDeployableRequirePlot) then {_requireplot = 1;} else {_requireplot = 0;}; //### END MODIFIED CODE: player_deploy _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"]; }; private["_exitWith"]; if(_IsNearPlot == 0) then { // Allow building of plot if(_requireplot == 0 || _isLandFireDZ) then { _canBuildOnPlot = true; } else { _exitWith = (localize "STR_EPOCH_PLAYER_135"); }; } 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 ["ownerPUID","0"]; // diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID]; // check if friendly to owner if(_playerUID == _ownerID) then { //Keep ownership // owner can build anything within his plot except other plots diag_log text "Player is owner"; if(!_isPole) then { _canBuildOnPlot = true; } else { _exitWith = "You can't build a plot within your plot!"; }; } else { // disallow building plot if(!_isPole) then { _friendlies = _nearestPole getVariable ["plotfriends",[]]; _fuid = []; { _friendUID = _x select 0; _fuid = _fuid + [_friendUID]; } forEach _friendlies; _builder = getPlayerUID player; // check if friendly to owner if(_builder in _fuid) then { _canBuildOnPlot = true; } else { _exitWith = "You can't build on someone else's plot!"; }; }; }; }; // _message if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[_exitWith,_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; _hastoolweapon = (_index call getDeployableKitClass) in ((weapons player) + (magazines player)); if(!_hastoolweapon) then { _hasrequireditem = false; _missing = (_index call getDeployableKitDisplay); }; //_hasbuilditem = _this in magazines player; //if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; }; _hasbuilditem = [player,_index] call getHasDeployableParts; if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),str (_index call getDeployableParts),"build"] , "PLAIN DOWN"]; }; if (!_hasrequireditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; }; //### END MODIFIED CODE: player_deploy _location = [0,0,0]; _isOk = true; // get inital players position _location1 = [player] call FNC_GetPos; _dir = getDir player; // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _object setVariable["ObjectUID","1",true]; //Build gizmo _objectHelper = "Sign_sphere10cm_EP1" createVehicle _location; _helperColor = "#(argb,8,8,3)color(0,0,0,0,ca)"; _objectHelper setobjecttexture [0,_helperColor]; _objectHelper attachTo [player,[0,5,0]]; _object attachTo [_objectHelper,[0,0,0]]; _position = [_objectHelper] call FNC_GetPos; _objHDiff = 0; if (isClass (missionConfigFile >> "SnapBuilding" >> _classname)) then { ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; }; DZE_updateVec = false; DZE_memDir = getDir _objectHelper; DZE_memForBack = 0; DZE_memLeftRight = 0; if !(_classname in DZE_noRotate) then{ s_player_setVectorsReset = player addaction ["Reset","custom\snap_pro\player_vectorChange.sqf","reset"]; s_player_setVectorsForward = player addaction ["Pitch Forward","custom\snap_pro\player_vectorChange.sqf","forward"]; s_player_setVectorsBack = player addaction ["Pitch Back","custom\snap_pro\player_vectorChange.sqf","back"]; s_player_setVectorsLeft = player addaction ["Bank Left","custom\snap_pro\player_vectorChange.sqf","left"]; s_player_setVectorsRight = player addaction ["Bank Right","custom\snap_pro\player_vectorChange.sqf","right"]; s_player_setVectors1 = player addaction ["Increment by 1 degree","custom\snap_pro\player_vectorChange.sqf","1"]; s_player_setVectors5 = player addaction ["Increment by 5 degrees","custom\snap_pro\player_vectorChange.sqf","5"]; s_player_setVectors45 = player addaction ["Increment by 45 degrees","custom\snap_pro\player_vectorChange.sqf","45"]; s_player_setVectors90 = player addaction ["Increment by 90 degrees","custom\snap_pro\player_vectorChange.sqf","90"]; }; while {_isOk} do { _zheightchanged = false; _zheightdirection = ""; _rotate = false; if (DZE_Q) then { DZE_Q = false; _zheightdirection = "up"; _zheightchanged = true; }; if (DZE_Z) then { DZE_Z = false; _zheightdirection = "down"; _zheightchanged = true; }; if (DZE_Q_alt) then { DZE_Q_alt = false; _zheightdirection = "up_alt"; _zheightchanged = true; }; if (DZE_Z_alt) then { DZE_Z_alt = false; _zheightdirection = "down_alt"; _zheightchanged = true; }; if (DZE_Q_ctrl) then { DZE_Q_ctrl = false; _zheightdirection = "up_ctrl"; _zheightchanged = true; }; if (DZE_Z_ctrl) then { DZE_Z_ctrl = false; _zheightdirection = "down_ctrl"; _zheightchanged = true; }; if (DZE_4) then { _rotate = true; DZE_4 = false; _dir = -45; DZE_memDir = DZE_memDir - 45; }; if (DZE_6) then { _rotate = true; DZE_6 = false; _dir = 45; DZE_memDir = DZE_memDir + 45; }; if(DZE_updateVec) then{ [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; DZE_updateVec = false; }; if (DZE_F and _canDo) then { if (helperDetach) then { _objectHelper attachTo [player]; DZE_memDir = DZE_memDir-(getDir player); helperDetach = false; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; } else { _objectHelperDir = getDir _objectHelper; detach _objectHelper; DZE_memDir = getDir _objectHelper; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; [_objectHelper] call FNC_GetSetPos; _objectHelper setVelocity [0,0,0]; //fix sliding glitch helperDetach = true; }; DZE_F = false; }; if(_rotate) then { [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; }; if(_zheightchanged) then { if (!helperDetach) then { detach _objectHelper; _objectHelperDir = getDir _objectHelper; }; _position = [_objectHelper] call FNC_GetPos; if(_zheightdirection == "up") then { _position set [2,((_position select 2)+0.1)]; _objHDiff = _objHDiff + 0.1; }; if(_zheightdirection == "down") then { _position set [2,((_position select 2)-0.1)]; _objHDiff = _objHDiff - 0.1; }; if(_zheightdirection == "up_alt") then { _position set [2,((_position select 2)+1)]; _objHDiff = _objHDiff + 1; }; if(_zheightdirection == "down_alt") then { _position set [2,((_position select 2)-1)]; _objHDiff = _objHDiff - 1; }; if(_zheightdirection == "up_ctrl") then { _position set [2,((_position select 2)+0.01)]; _objHDiff = _objHDiff + 0.01; }; if(_zheightdirection == "down_ctrl") then { _position set [2,((_position select 2)-0.01)]; _objHDiff = _objHDiff - 0.01; }; if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then { _position set [2,0]; }; if (surfaceIsWater _position) then { _objectHelper setPosASL _position; } else { _objectHelper setPosATL _position; }; if (!helperDetach) then { _objectHelper attachTo [player]; _objectHelper setDir _objectHelperDir-(getDir player); }; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; }; sleep 0.5; _location2 = [player] call FNC_GetPos; _objectHelperPos = [_objectHelper] call FNC_GetPos; if(DZE_5) exitWith { _isOk = false; _position = [_object] call FNC_GetPos; detach _object; _dir = getDir _object; _vector = [(vectorDir _object),(vectorUp _object)]; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _location2 > 20) exitWith { _isOk = false; _cancel = true; _reason = "You've moved to far away from where you started building (within 20 meters)"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _objectHelperPos > 20) exitWith { _isOk = false; _cancel = true; _reason = "Object is placed to far away from where you started building (within 20 meters)"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(abs(_objHDiff) > 20) exitWith { _isOk = false; _cancel = true; _reason = "Cannot move up or down more than 20 meters"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (player getVariable["combattimeout", 0] >= time) exitWith { _isOk = false; _cancel = true; _reason = (localize "str_epoch_player_43"); detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (DZE_cancelBuilding) exitWith { _isOk = false; _cancel = true; _reason = "Cancelled building."; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; }; if !(_classname in DZE_noRotate) then{ player removeAction s_player_setVectorsReset; player removeAction s_player_setVectorsForward; player removeAction s_player_setVectorsBack; player removeAction s_player_setVectorsLeft; player removeAction s_player_setVectorsRight; player removeAction s_player_setVectors1; player removeAction s_player_setVectors5; player removeAction s_player_setVectors45; player removeAction s_player_setVectors90; }; //No building on roads unless toggled if (!(_index call getDeployableBuildOnRoad)) 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(!_cancel) then { _classname = _classnametmp; // Start Build _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; if (!(_index call getDeployableSimulation)) then { _tmpbuilt enableSimulation false; }; _tmpbuilt setVariable ["ObjectUID", "1", true]; _tmpbuilt setVariable ["ownerPUID",_playerUID,true]; _tmpbuilt setdir _dir; // Get position based on object _location = _position; if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { _location set [2,0]; }; _buildOffset = [0,0,0]; _vUp = _vector select 1; switch (_classname) do { case "MetalFloor_DZ": { _buildOffset = [(_vUp select 0) * .148, (_vUp select 1) * .148,0]; }; }; _location = [ (_location select 0) - (_buildOffset select 0), (_location select 1) - (_buildOffset select 1), (_location select 2) - (_buildOffset select 2) ]; if (surfaceIsWater _location) then { _tmpbuilt setPosASL _location; _location = ASLtoATL _location; } else { _tmpbuilt setPosATL _location; }; _tmpbuilt setVectorDirAndUp _vector; 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 && !_isBuildAdmin} 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; 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 && !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt || (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; sleep 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 (_isBuildAdmin) then { _isOk = false; _proceed = true; }; if (_proceed) then { //diag_log "Proceed OK"; if([player,_index] call getHasDeployableParts) then { [player,_index] call removeDeployableParts; cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; if (_isPole) then { [] spawn player_plotPreview; }; _tmpbuilt setVariable ["OEMPos",_location,true]; if(_lockable > 1) then { //diag_log "Is Lockable OK"; _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; }; }; _tmpbuilt setVariable ["CharacterID",_combination,true]; _tmpbuilt setVariable ["ownerPUID",_playerUID,true]; PVDZE_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,_vector,_playerUID],_classname]; //diag_log "Publish Lockable"; publicVariableServer "PVDZE_obj_Publish"; cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; } else { //_tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; _tmpbuilt setVariable ["ownerPUID",_playerUID,true]; //### BEGIN MODIFIED CODE: player deploy if (_index call getPermanent) then { _tmpbuilt call fnc_set_temp_deployable_id; if(_index call getDeployableSimulation) then { PVDZE_veh_Publish = [_tmpbuilt,[_dir,_position],(_index call getDeployableClass),true,call fnc_perm_deployable_id]; publicVariableServer "PVDZE_veh_Publish"; } else { PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_position,_vector,_playerUID],(_index call getDeployableClass)]; publicVariableServer "PVDZE_obj_Publish"; }; } else { _tmpbuilt call fnc_set_temp_deployable_id; }; if(_index call getClearCargo) then { clearWeaponCargoGlobal _tmpbuilt; clearMagazineCargoGlobal _tmpbuilt; }; if(_index call getDeployableClearAmmo) then { _tmpbuilt setVehicleAmmo 0; }; player reveal _tmpbuilt; DZE_DEPLOYING_SUCCESSFUL = true; //### END MODIFIED CODE: player deploy }; } else { deleteVehicle _tmpbuilt; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; { [player,_x] call BIS_fnc_invAdd; } forEach _temp_removed_array; }; } else { r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _tmpbuilt; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; }; DZE_ActionInProgress = false; Thanks Antichrist I'll give this a try, just to be sure tho, this is the ui_selectSlot.sqf file located in the click_actions folder? I don't use P4L, could this be a problem? Link to comment Share on other sites More sharing options...
Antichrist Posted August 5, 2015 Report Share Posted August 5, 2015 not really sure how it would affect non P4L users because mine does set owner id and ui_selectslot.sqf for this mod is located there P.S. this file i posted is the player_deploy.sqf and if you want to merge this with snap/vector just use diffmerge and compare your copy of playerbuild to this scripts copy and make necessary changes Link to comment Share on other sites More sharing options...
hamthejam Posted August 5, 2015 Report Share Posted August 5, 2015 not really sure how it would affect non P4L users because mine does set owner id and ui_selectslot.sqf for this mod is located there P.S. this file i posted is the player_deploy.sqf and if you want to merge this with snap/vector just use diffmerge and compare your copy of playerbuild to this scripts copy and make necessary changes I've tested this and it kinda works. I use the latest Snap (2.34) / Vectors (version 4). The problem is there is no Snap menu and the vectors controls are different from the current version of vectors. Anyway to update this? Or maybe someone have a more recent version of it? thanks a lot btw ;) Link to comment Share on other sites More sharing options...
Antichrist Posted August 5, 2015 Report Share Posted August 5, 2015 given you provide me with your player_build.sqf i could make something happen Link to comment Share on other sites More sharing options...
hamthejam Posted August 5, 2015 Report Share Posted August 5, 2015 given you provide me with your player_build.sqf i could make something happen /* DayZ Base Building Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected]. */ private ["_helperColor","_objectHelper","_objectHelperDir","_objectHelperPos","_canDo", "_pos", "_cnt", "_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","_vector","_buildOffset","_vUp"]; if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; DZE_ActionInProgress = true; //snap vars -- temporary fix for errors so variables.sqf can be skipped if (isNil "snapProVariables") then { if (isNil "DZE_snapExtraRange") then { DZE_snapExtraRange = 0; }; if (isNil "DZE_checkNearbyRadius") then { DZE_checkNearbyRadius = 30; }; s_player_toggleSnap = -1; s_player_toggleSnapSelect = -1; s_player_toggleSnapSelectPoint=[]; snapActions = -1; snapGizmos = []; snapGizmosNearby = []; snapProVariables = true; // will skip this statement from now on. }; if(isNil "vectorBuildVariables") then{ s_player_toggleDegree = -1; s_player_toggleDegrees=[]; degreeActions = -1; s_player_toggleVector = -1; s_player_toggleVectors=[]; vectorActions = -1; vectorBuildVariables = true; }; // snap vars // disallow building if too many objects are found within (30m by default) add DZE_checkNearbyRadius = 30; to your init.sqf to change _pos = [player] call FNC_GetPos; _cnt = count (_pos nearObjects ["All",DZE_checkNearbyRadius]); if (_cnt >= DZE_BuildingLimit) exitWith { //end script if too many objects nearby 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); helperDetach = false; _canDo = (!r_drag_sqf and !r_player_unconscious); 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_F = false; DZE_cancelBuilding = false; DZE_updateVec = false; DZE_memDir = 0; DZE_memForBack = 0; DZE_memLeftRight = 0; 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 (_pos nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = "fire"; }; }; case "workshop": { _distance = 3; _isNear = count (nearestObjects [_pos, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = "workshop"; }; }; case "fueltank": { _distance = 30; _isNear = count (nearestObjects [_pos, 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 = _nearestPole getVariable ["plotfriends",[]]; _fuid = []; { _friendUID = _x select 0; _fuid = _fuid + [_friendUID]; } forEach _friendlies; _builder = getPlayerUID player; // check if friendly to owner if(_builder in _fuid) 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 = [player] call FNC_GetPos; _dir = getDir player; // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //Build gizmo _objectHelper = "Sign_sphere10cm_EP1" createVehicle _location; _helperColor = "#(argb,8,8,3)color(0,0,0,0,ca)"; _objectHelper setobjecttexture [0,_helperColor]; _objectHelper attachTo [player,_offset]; _object attachTo [_objectHelper,[0,0,0]]; _position = [_objectHelper] call FNC_GetPos; _objHDiff = 0; if (isClass (missionConfigFile >> "SnapBuilding" >> _classname)) then { ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; }; if !(_item in DZE_noRotate) then{ ["","","",["Init","Init",0]] spawn build_vectors; }; while {_isOk} do { _zheightchanged = false; _zheightdirection = ""; _rotate = false; if (DZE_Q) then { DZE_Q = false; _zheightdirection = "up"; _zheightchanged = true; }; if (DZE_Z) then { DZE_Z = false; _zheightdirection = "down"; _zheightchanged = true; }; if (DZE_Q_alt) then { DZE_Q_alt = false; _zheightdirection = "up_alt"; _zheightchanged = true; }; if (DZE_Z_alt) then { DZE_Z_alt = false; _zheightdirection = "down_alt"; _zheightchanged = true; }; if (DZE_Q_ctrl) then { DZE_Q_ctrl = false; _zheightdirection = "up_ctrl"; _zheightchanged = true; }; if (DZE_Z_ctrl) then { DZE_Z_ctrl = false; _zheightdirection = "down_ctrl"; _zheightchanged = true; }; if (DZE_4) then { _rotate = true; DZE_4 = false; if(DZE_dirWithDegrees) then{ DZE_memDir = DZE_memDir - DZE_curDegree; }else{ DZE_memDir = DZE_memDir - 45; }; }; if (DZE_6) then { _rotate = true; DZE_6 = false; if(DZE_dirWithDegrees) then{ DZE_memDir = DZE_memDir + DZE_curDegree; }else{ DZE_memDir = DZE_memDir + 45; }; }; if(DZE_updateVec) then{ [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; DZE_updateVec = false; }; if (DZE_F and _canDo) then { if (helperDetach) then { _objectHelper attachTo [player]; DZE_memDir = DZE_memDir-(getDir player); helperDetach = false; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; } else { _objectHelperPos = getPosATL _objectHelper; detach _objectHelper; DZE_memDir = getDir _objectHelper; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; _objectHelper setPosATL _objectHelperPos; _objectHelper setVelocity [0,0,0]; //fix sliding glitch helperDetach = true; }; DZE_F = false; }; if(_rotate) then { [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; }; if(_zheightchanged) then { if (!helperDetach) then { detach _objectHelper; _objectHelperDir = getDir _objectHelper; }; _position = [_objectHelper] call FNC_GetPos; if(_zheightdirection == "up") then { _position set [2,((_position select 2)+0.1)]; _objHDiff = _objHDiff + 0.1; }; if(_zheightdirection == "down") then { _position set [2,((_position select 2)-0.1)]; _objHDiff = _objHDiff - 0.1; }; if(_zheightdirection == "up_alt") then { _position set [2,((_position select 2)+1)]; _objHDiff = _objHDiff + 1; }; if(_zheightdirection == "down_alt") then { _position set [2,((_position select 2)-1)]; _objHDiff = _objHDiff - 1; }; if(_zheightdirection == "up_ctrl") then { _position set [2,((_position select 2)+0.01)]; _objHDiff = _objHDiff + 0.01; }; if(_zheightdirection == "down_ctrl") then { _position set [2,((_position select 2)-0.01)]; _objHDiff = _objHDiff - 0.01; }; if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then { _position set [2,0]; }; if (surfaceIsWater _position) then { _objectHelper setPosASL _position; } else { _objectHelper setPosATL _position; }; if (!helperDetach) then { _objectHelper attachTo [player]; }; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; }; sleep 0.5; _location2 = [player] call FNC_GetPos; _objectHelperPos = [_objectHelper] call FNC_GetPos; if(DZE_5) exitWith { _isOk = false; _position = [_object] call FNC_GetPos; detach _object; _dir = getDir _object; _vector = [(vectorDir _object),(vectorUp _object)]; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _location2 > 10) exitWith { _isOk = false; _cancel = true; _reason = "You've moved to far away from where you started building (within 10 meters)"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _objectHelperPos > 10) exitWith { _isOk = false; _cancel = true; _reason = "Object is placed to far away from where you started building (within 10 meters)"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(abs(_objHDiff) > 10) exitWith { _isOk = false; _cancel = true; _reason = "Cannot move up or down more than 10 meters"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (player getVariable["combattimeout", 0] >= time) exitWith { _isOk = false; _cancel = true; _reason = (localize "str_epoch_player_43"); detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (DZE_cancelBuilding) exitWith { _isOk = false; _cancel = true; _reason = "Cancelled building."; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; }; //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(!_cancel) then { _classname = _classnametmp; // Start Build _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _tmpbuilt setdir _dir; _tmpbuilt setVariable["memDir",_dir,true]; // Get position based on object _location = _position; if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { _location set [2,0]; }; _tmpbuilt setVectorDirAndUp _vector; _buildOffset = [0,0,0]; _vUp = _vector select 1; switch (_classname) do { case "MetalFloor_DZ": { _buildOffset = [(_vUp select 0) * .148, (_vUp select 1) * .148,0]; }; }; _location = [ (_location select 0) - (_buildOffset select 0), (_location select 1) - (_buildOffset select 1), (_location select 2) - (_buildOffset select 2) ]; if (surfaceIsWater _location) then { _tmpbuilt setPosASL _location; _location = ASLtoATL _location; //Database uses ATL } else { _tmpbuilt 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; 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 && !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt || (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; sleep 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; }; _tmpbuilt 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; }; }; _tmpbuilt setVariable ["CharacterID",_combination,true]; PVDZE_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,_vector],_classname]; publicVariableServer "PVDZE_obj_Publish"; cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; } else { _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_tmpbuilt isKindOf "Land_Fire_DZ") then { _tmpbuilt spawn player_fireMonitor; } else { PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_vector],_classname]; publicVariableServer "PVDZE_obj_Publish"; }; }; } else { deleteVehicle _tmpbuilt; 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 _tmpbuilt; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; }; }; DZE_ActionInProgress = false; Link to comment Share on other sites More sharing options...
Hux Posted September 4, 2015 Report Share Posted September 4, 2015 This is conflicting with my Alchemical crafting.I can not get a right click option any more with my gems.I've looked through this thread but cannot find a solution.Does anyone have a fix for this? Thank you. Link to comment Share on other sites More sharing options...
BigEgg Posted September 6, 2015 Report Share Posted September 6, 2015 This is conflicting with my Alchemical crafting.I can not get a right click option any more with my gems.I've looked through this thread but cannot find a solution.Does anyone have a fix for this? Thank you.This will use it's own ui_select slot. Go to the ui_select slot included in these files and above this_pos set [3,_height]; paste // Add extra context menus _erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item); _erc_numActions = (count _erc_cfgActions); if (isClass _erc_cfgActions) then { for "_j" from 0 to (_erc_numActions - 1) do { _menu = _parent displayCtrl (1600 + _j + _numActions); _menu ctrlShow true; _config = (_erc_cfgActions select _j); _text = getText (_config >> "text"); _script = getText (_config >> "script"); _height = _height + (0.025 * safezoneH); uiNamespace setVariable ['uiControl', _control]; _menu ctrlSetText _text; _menu ctrlSetEventHandler ["ButtonClick",_script]; }; }; Link to comment Share on other sites More sharing options...
Hux Posted September 6, 2015 Report Share Posted September 6, 2015 (edited) This will use it's own ui_select slot. Go to the ui_select slot included in these files and above this_pos set [3,_height]; paste // Add extra context menus _erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item); _erc_numActions = (count _erc_cfgActions); if (isClass _erc_cfgActions) then { for "_j" from 0 to (_erc_numActions - 1) do { _menu = _parent displayCtrl (1600 + _j + _numActions); _menu ctrlShow true; _config = (_erc_cfgActions select _j); _text = getText (_config >> "text"); _script = getText (_config >> "script"); _height = _height + (0.025 * safezoneH); uiNamespace setVariable ['uiControl', _control]; _menu ctrlSetText _text; _menu ctrlSetEventHandler ["ButtonClick",_script]; }; };Oh, so this will bring my right click options back for alchemical crafting?I also lost my Harvest & smoke hemp right click.Well, I'll test it tonight and let you know how it goes. Thank you. Edited September 6, 2015 by Hux Link to comment Share on other sites More sharing options...
Hux Posted September 6, 2015 Report Share Posted September 6, 2015 Ok, I tested and all seems good except for Citrine.I get all the "Deploy anything" options but not the alchemical crafting option.All the other gems have it.My Harvest hemp & smoke hemp work too.Any idea why just the Citrine doesn't work? Thanks for the help. Link to comment Share on other sites More sharing options...
Hux Posted September 6, 2015 Report Share Posted September 6, 2015 Ok, I got it worked out. I'm just not using Citrine because the list of options in it were blocking out the alchemical crafting option.Everything seems to be working now. I appreciate the help... Thank you. BigEgg 1 Link to comment Share on other sites More sharing options...
Bricktop Posted September 10, 2015 Report Share Posted September 10, 2015 (edited) Sorry to bother you but I'm new to scripting and I've looked and looked but I don't have this line in my init.sqf 3. find this line in your mission file init.sqf (warning: if you have a custom compiles file, find that line instead of the one below!)call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";/* For DayZ Epoch Addons Credits: Jetski Yanahui by Kol9yN, Zakat, Gerasimow9, YuraPetrov, zGuba, A.Karagod, IceBreakr, Sahbazz */ startLoadingScreen ["","RscDisplayLoadCustom"]; cutText ["","BLACK OUT"]; enableSaving [false, false]; // -------------------------------- DZE_PlotOwnership = true; DZE_APlotforLife = true; DZE_modularBuild = true; // -------------------------------- //REALLY IMPORTANT VALUES dayZ_instance = 11; //The instance dayZ_serverName = "Dayz Epoch Chernarus"; dayzHiveRequest = []; initialized = false; dayz_previousID = 0; //disable greeting menu player setVariable ["BIS_noCoreConversations", true]; //disable radio messages to be heard and shown in the left lower corner of the screen enableRadio true; // May prevent "how are you civillian?" messages from NPC enableSentences true; // DayZ Epoch config spawnShoremode = 1; // Default = 1 (on shore) spawnArea= 1500; // Default = 1500 dayz_MapArea = 14000; // Default = 10000 //Epoch Config Variables call compile preprocessFileLineNumbers "Mods\config\epochconfig.sqf"; /* Revamped instructions by Ree select 0 = Locked vehicles Will not drop Loot ("Default: True") select 1 = The Amount of Loot Piles around destroyed vehicles ("Default: 2") out of Max amount ___? "Max Safe Amount" select 2 = Max additional loot piles On top of select 1 loot Piles ("Default: 5") out of Max amount ___? "Max Safe Amount" select 3 = Radius around crash site to drop loot ("Default: 5")m out of Max amount ___? "Max Safe Amount" select 4 = Chance of gear being destroyed (Between 0-1, Ex: 0 = Never lost, 0.5 = Half lost, 1 = All lost) Default: DZE_crashLootConfig = [true,2,5,5,0]; */ DZE_crashLootConfig = [true,2,5,5,0]; // Dayz Epoch Events EpochEvents = [["any","any","any","any",5,"crash_spawner"],["any","any","any","any",10,"crash_spawner"],["any","any","any","any",15,"supply_drop"],["any","any","any","any",25,"ikea"],["any","any","any","any",35,"supply_drop"], ["any","any","any","any",40,"crash_spawner"],["any","any","any","any",45,"supply_drop"],["any","any","any","any",50,"ikea"]]; //Load in compiled functions call compile preprocessFileLineNumbers "Mods\Init\variables.sqf"; //Initilize the Variables (IMPORTANT: Must happen very early) progressLoadingScreen 0.1; call compile preprocessFileLineNumbers "Mods\Init\publicEH.sqf"; //Initilize the publicVariable event handlers progressLoadingScreen 0.2; call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf"; //Functions used by CLIENT for medical progressLoadingScreen 0.4; call compile preprocessFileLineNumbers "Mods\Init\compiles.sqf"; //Compile regular functions /*ZSC*/ call compile preprocessFileLineNumbers "Mods\ZSC\gold\ZSCinit.sqf"; /*ZSC*/ progressLoadingScreen 0.5; diag_log "Loading Compiled Functions"; call compile preprocessFileLineNumbers "Mods\traders\server_traders_cherno_11.sqf"; //Compile trader configs call compile preprocessFileLineNumbers "Mods\Init\user_compiles.sqf"; diag_log "Finished Loading Compiled Functions"; progressLoadingScreen 1.0; "filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic"; if (isServer) then { //Compile vehicle configs call compile preprocessFileLineNumbers "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\dynamic_vehicle.sqf"; // Add trader citys _nil = [] execVM "\z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf"; /*ZSC*/ _serverMonitor = [] execVM "\z\addons\dayz_server\system\server_monitor.sqf"; /*ZSC*/ }; if (!isDedicated) then { //Conduct map operations 0 fadeSound 0; waitUntil {!isNil "dayz_loadScreenMsg"}; dayz_loadScreenMsg = (localize "STR_AUTHENTICATING"); //Run the player monitor _id = player addEventHandler ["Respawn", {_id = [] spawn player_death; _nul = [] execVM "playerspawn.sqf";}]; _playerMonitor = [] execVM "\z\addons\dayz_code\system\player_monitor.sqf"; _nul = [] execVM "playerspawn.sqf"; execVM "Mods\spawn\start.sqf"; execVM "Mods\ZSC\compiles\playerHud.sqf"; }; // Logo watermark: adding a logo in the bottom left corner of the screen with the server name in it if (!isNil "dayZ_serverName") then { [] spawn { waitUntil {(!isNull Player) and (alive Player) and (player == player)}; waituntil {!(isNull (findDisplay 46))}; 5 cutRsc ["wm_disp","PLAIN"]; ((uiNamespace getVariable "wm_disp") displayCtrl 1) ctrlSetText dayZ_serverName; }; }; //Start Dynamic Weather execVM "\z\addons\dayz_code\external\DynamicWeatherEffects.sqf"; //BIS_Effects #include "\z\addons\dayz_code\system\BIS_Effects\init.sqf" //Mod Config execVM "Mods\config\modconfig.sqf"; [] execVM 'Mods\Safe\SafeZone.sqf'; Edited September 10, 2015 by Bricktop Link to comment Share on other sites More sharing options...
Antichrist Posted September 10, 2015 Report Share Posted September 10, 2015 For you it's this linecall compile preprocessFileLineNumbers "Mods\Init\compiles.sqf"; //Compile regular functions Link to comment Share on other sites More sharing options...
zulu Posted October 31, 2015 Report Share Posted October 31, 2015 (edited) Hello,everything runs fine, but after death i am not able to deploy items at my plotpole."You cant build on someone elses pole".I saw this post about changing player_build from .... _limit = 3; to _limit = 1; .... but that didnt work for me.Besides other scripts i have P4L and Snap installed.Please help me, dont know where and what to look for to get it solved. Edited October 31, 2015 by zulu Link to comment Share on other sites More sharing options...
creativv Posted November 3, 2015 Report Share Posted November 3, 2015 Hello,everything runs fine, but after death i am not able to deploy items at my plotpole."You cant build on someone elses pole".I saw this post about changing player_build from .... _limit = 3; to _limit = 1; .... but that didnt work for me.Besides other scripts i have P4L and Snap installed.Please help me, dont know where and what to look for to get it solved. you need to compare player_build and player_deploy and take the parts from P4l over to deploy . Or change the requirement of a plot pole in the config . Link to comment Share on other sites More sharing options...
zulu Posted November 3, 2015 Report Share Posted November 3, 2015 you need to compare player_build and player_deploy and take the parts from P4l over to deploy . Or change the requirement of a plot pole in the config .awesome, thanks for your help! Link to comment Share on other sites More sharing options...
creativv Posted November 6, 2015 Report Share Posted November 6, 2015 awesome, thanks for your help!Got it to work yet ? Link to comment Share on other sites More sharing options...
ElDubya Posted November 6, 2015 Report Share Posted November 6, 2015 I still haven't been able to add Snap Build F key functionality to this yet, it's doing my head in. Here is my stock player_deploy : http://pastebin.com/dxMtw0tTWhat would I have to add and where in order to get the F key (release) working? Any help would be amazing. Link to comment Share on other sites More sharing options...
creativv Posted November 6, 2015 Report Share Posted November 6, 2015 I still haven't been able to add Snap Build F key functionality to this yet, it's doing my head in. Here is my stock player_deploy : http://pastebin.com/dxMtw0tTWhat would I have to add and where in order to get the F key (release) working? Any help would be amazing. Same for me would like to see this to Link to comment Share on other sites More sharing options...
zulu Posted November 7, 2015 Report Share Posted November 7, 2015 (edited) Edit: If anyone wants to get this working with P4L, snap and vectors here's my file for reference, it's a mess but works without any errors :Dhttp://pastebin.com/SyZbD7mzthis was posted by antichrist and worked for me. Edited November 7, 2015 by zulu Link to comment Share on other sites More sharing options...
ElDubya Posted November 8, 2015 Report Share Posted November 8, 2015 this was posted by antichrist and worked for me.I tried that file and everything worked except I couldn't build. Link to comment Share on other sites More sharing options...
Tech_Support Posted November 8, 2015 Report Share Posted November 8, 2015 I still haven't been able to add Snap Build F key functionality to this yet, it's doing my head in. Here is my stock player_deploy : http://pastebin.com/dxMtw0tTWhat would I have to add and where in order to get the F key (release) working? Any help would be amazing. Try adding this to your player_deploy on line 34 addDZE_F = false;and then line 314 add this if (DZE_F and _canDo) then { if (helperDetach) then { _objectHelper attachTo [player]; DZE_memDir = DZE_memDir-(getDir player); helperDetach = false; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; } else { _objectHelperPos = getPosATL _objectHelper; detach _objectHelper; DZE_memDir = getDir _objectHelper; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; _objectHelper setPosATL _objectHelperPos; _objectHelper setVelocity [0,0,0]; //fix sliding glitch helperDetach = true; }; DZE_F = false; };look in the snap build folder & compare player_build.sqf to your player_deploy.sqf Link to comment Share on other sites More sharing options...
creativv Posted November 8, 2015 Report Share Posted November 8, 2015 Try adding this to your player_deploy on line 34 addDZE_F = false;and then line 314 add this if (DZE_F and _canDo) then { if (helperDetach) then { _objectHelper attachTo [player]; DZE_memDir = DZE_memDir-(getDir player); helperDetach = false; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; } else { _objectHelperPos = getPosATL _objectHelper; detach _objectHelper; DZE_memDir = getDir _objectHelper; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; _objectHelper setPosATL _objectHelperPos; _objectHelper setVelocity [0,0,0]; //fix sliding glitch helperDetach = true; }; DZE_F = false; };look in the snap build folder & compare player_build.sqf to your player_deploy.sqf Doesnt work tried it already , and when copying some parts over from player_build it destroys the player_deploy Link to comment Share on other sites More sharing options...
ElDubya Posted November 8, 2015 Report Share Posted November 8, 2015 Try adding this to your player_deploy on line 34 addDZE_F = false;and then line 314 add this if (DZE_F and _canDo) then { if (helperDetach) then { _objectHelper attachTo [player]; DZE_memDir = DZE_memDir-(getDir player); helperDetach = false; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; } else { _objectHelperPos = getPosATL _objectHelper; detach _objectHelper; DZE_memDir = getDir _objectHelper; [_objectHelper,[DZE_memForBack,DZE_memLeftRight,DZE_memDir]] call fnc_SetPitchBankYaw; _objectHelper setPosATL _objectHelperPos; _objectHelper setVelocity [0,0,0]; //fix sliding glitch helperDetach = true; }; DZE_F = false; };look in the snap build folder & compare player_build.sqf to your player_deploy.sqf I tried it as well, and failed miserably. Link to comment Share on other sites More sharing options...
creativv Posted November 10, 2015 Report Share Posted November 10, 2015 I tried it as well, and failed miserably. Got it to work partially with using this from modular_buildif (_hasrequireditem) then { //Create object that is attached to a player (i.e Ghost preview if available) _buildObject = [_classname, _ghost, _offset, true] call player_build_create; //define items collected from function _location1 = _buildObject select 0; //array _object = _buildObject select 1; //Obj _objectHelper = _buildObject select 2; //Obj _controls = [_object, _isAllowedUnderGround, _location1, _objectHelper] call player_build_controls; //define items collected from function _cancel = _controls select 0; //bool _reason = _controls select 1; //string _position = _controls select 2; //array _dir = _controls select 3; //int _vector = _controls select 4; //array //Publish item to a database [_cancel, _position, _classnametmp,_isAllowedUnderGround, _text, _isPole, _lockable,_dir, _reason, _vector] call player_build_publish; }; The F function works but it cancels out the rest of the player_deploy .Maybe someobody with more skills then us is able to make the player_deploy call for the player_build_controls instead of using the controls from player_deploy . Link to comment Share on other sites More sharing options...
crazycarl Posted December 10, 2015 Report Share Posted December 10, 2015 Not sure if this has been covered, but all of the posts I've seen indicate a fix that does not seem to work for deployed vehicles locking after restart. I use an sql event to unlock them every hour or 2 (depending on your settings for restarts and what not). Keep in mind any other sql events that delete unlocked vehicles or deal with vehicles in any way may impact how this works. Create an event in your sql and add this to run before every restart at the desired time interval. UPDATE `object_data` SET CharacterID = 0 WHERE CharacterID > 0 AND Classname IN ('M2StaticMG','AGS_INS') Simply update the 'M2StaticMG','AGS_INS' fields with your desired static weapons or deploy-able items. This will remove the option to repack the weapon. Again there may be better solutions out there, but this is working well for me. If anything can be enhanced or changed to make this more efficient, feel free to chime in. I am an absolute newbie to this sort of stuff. Link to comment Share on other sites More sharing options...
Recommended Posts