pr0dukt Posted June 24, 2015 Report Share Posted June 24, 2015 in overwrites/clickactions : ["Group Management","Group Management","execVM 'dzgm\loadGroupManagement.sqf';","true"], Don't forget to take the ItemRadio class out of your extra_rc.hpp. ["ItemRadio","Group Management","execVM 'dzgm\loadGroupManagement.sqf';","true"], Link to comment Share on other sites More sharing options...
ElDubya Posted June 24, 2015 Report Share Posted June 24, 2015 Sorry, yeah. My bad :) pr0dukt 1 Link to comment Share on other sites More sharing options...
cen Posted June 24, 2015 Report Share Posted June 24, 2015 Here's mine: DZE_CLICK_ACTIONS = [ ["ItemRadio","Group Management","execVM 'scripts\dzgm\loadGroupManagement.sqf';","true"], ["Binocular_Vector","View Distance: 500m" ,"setViewDistance 500; systemChat('ViewDistance: 500');","true"], ["Binocular_Vector","View Distance: 1000m" ,"setViewDistance 1000; systemChat('ViewDistance: 1000');","true"], ["Binocular_Vector","View Distance: 1500m" ,"setViewDistance 1500; systemChat('ViewDistance: 1500');","true"], ["Binocular_Vector","View Distance: 2000m" ,"setViewDistance 2000; systemChat('ViewDistance: 2000'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular_Vector","View Distance: 2500m" ,"setViewDistance 2500; systemChat('ViewDistance: 2500'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular_Vector","View Distance: 3000m" ,"setViewDistance 3000; systemChat('ViewDistance: 3000'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular_Vector","View Distance: 3500m" ,"setViewDistance 3500; systemChat('ViewDistance: 3500'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular_Vector","View Distance: 4000m" ,"setViewDistance 4000; systemChat('ViewDistance: 4000'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular","View Distance: 500m" ,"setViewDistance 500; systemChat('ViewDistance: 500');","true"], ["Binocular","View Distance: 1000m" ,"setViewDistance 1000; systemChat('ViewDistance: 1000');","true"], ["Binocular","View Distance: 1500m" ,"setViewDistance 1500; systemChat('ViewDistance: 1500');","true"], ["Binocular","View Distance: 2000m" ,"setViewDistance 2000; systemChat('ViewDistance: 2000'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular","View Distance: 2500m" ,"setViewDistance 2500; systemChat('ViewDistance: 2500'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular","View Distance: 3000m" ,"setViewDistance 3000; systemChat('ViewDistance: 3000'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular","View Distance: 3500m" ,"setViewDistance 3500; systemChat('ViewDistance: 3500'); systemChat('Warning: Higher the view distance Lower the FPS');","true"], ["Binocular","View Distance: 4000m" ,"setViewDistance 4000; systemChat('ViewDistance: 4000'); systemChat('Warning: Higher the view distance Lower the FPS');","true"] ]; pr0dukt 1 Link to comment Share on other sites More sharing options...
ElDubya Posted June 26, 2015 Report Share Posted June 26, 2015 Has anyone worked out how to make this work with Snap Build? Specifically the "F" key function so you can place the item, let it go and walk around it before building it? Link to comment Share on other sites More sharing options...
cen Posted June 26, 2015 Report Share Posted June 26, 2015 My snap build works fine with this. Link to comment Share on other sites More sharing options...
ElDubya Posted June 26, 2015 Report Share Posted June 26, 2015 Did you have to alter anything in the Deploy files to get the "F" key function or did it have it already? Because mine doesn't do anything when you push the "F" key .... Link to comment Share on other sites More sharing options...
cen Posted June 26, 2015 Report Share Posted June 26, 2015 Nope, feel free to grab my mission and have a look. Link to comment Share on other sites More sharing options...
ElDubya Posted June 27, 2015 Report Share Posted June 27, 2015 Nope, feel free to grab my mission and have a look. If you are serious, could you PM me your server details please and I will take a look. Thanks :) Link to comment Share on other sites More sharing options...
cen Posted June 27, 2015 Report Share Posted June 27, 2015 If you are serious, could you PM me your server details please and I will take a look. Thanks :) Done. Buck0 1 Link to comment Share on other sites More sharing options...
ElDubya Posted June 28, 2015 Report Share Posted June 28, 2015 I don't get it. I have had a look at others files (with permission), installed the latest version of Deploy Anything, looked into my own files for ages and STILL can't figure out why when I push the "F" key, the buildable doesn't stay in position so I can let it go, and walk around it like I can with Snap Build. What am I missing here? Link to comment Share on other sites More sharing options...
syco Posted July 21, 2015 Report Share Posted July 21, 2015 Anyone know how to stop a deployable that is being saved to the database from being locked after restart? I am using gems to deploy static weapons on my taviana server and after restart they become locked and the player does not have a key to unlock it. The script is giving the static weapon a Character ID which makes it a locked vehicle after restart. I would like to make it save but as character ID 0 so it is unlocked after restart. What i have done so far to counter this is let anyone pack it up so even if they die they can still pack it up and redeploy it. This is not how i want it. The code for this is inside functions.sqf fnc_set_temp_deployable_id = { _this setVariable ["DeployedBy",call fnc_temp_deployable_id, true]; }; fnc_set_perm_deployable_id = { _this setVariable ["CharacterID",call fnc_perm_deployable_id, true]; }; fnc_get_perm_deployable_id = { private["_return","_parse"]; _return = _this getVariable ["CharacterID","0"]; _parse = parseNumber _return; if(_parse < 500000) then { _return = "nil"; }; _return }; fnc_get_temp_deployable_id = { _this getVariable ["DeployedBy","nil"] }; fnc_perm_deployable_id = { private["_calc","_return"]; _calc = 999999 - (parseNumber dayz_characterID); if(_calc < 500000) then { _return = "nil"; } else { _return = (str _calc); }; _return }; fnc_temp_deployable_id = { getPlayerUID player }; If anyone can help change this code some so the depoyables that get saved to the database are set to character ID 0 would be great. I have tryed a couple different ways with no success. Link to comment Share on other sites More sharing options...
ElDubya Posted July 22, 2015 Report Share Posted July 22, 2015 ["ItemTopaz", [0,5,1],5,-1,false,false,false,true,true,true,false,["Land_Fort_Watchtower","M2StaticMG","DSHKM_Ins","SearchLight","Hhedgehog_concrete","Hhedgehog_concreteBig","Base_WarfareBBarrier10xTall","Fence_corrugated_plate","Fence_Ind_long","Land_CncBlock","Land_CncBlock_D","Land_CncBlock_Stripes"],[],["ItemTopaz"],"true"], Probably doesn't help, but that's my code for building mounted weapons. Mine don't lock after a server restart though? Link to comment Share on other sites More sharing options...
syco Posted July 22, 2015 Report Share Posted July 22, 2015 I am not sure why it does not lock the M2StaticMG for you but does for me. But even with your code of true/false's it is the same after restart. The M2StaticMG is locked and you need a key to unlock it. I did notice if the pack option is true you can pack it even if it is locked. Link to comment Share on other sites More sharing options...
hamthejam Posted July 22, 2015 Report Share Posted July 22, 2015 Question: I wonder if 10 is the maximum number of items a right click menu can have? I'm trying to add all the flag carriers to the metal pole right-click option but in-game inventpory only show me a maximum number of ten things I can craft with the metal pole. How can I add more? Link to comment Share on other sites More sharing options...
ElDubya Posted July 22, 2015 Report Share Posted July 22, 2015 See my line of code above. I have 12 items in there. Link to comment Share on other sites More sharing options...
Just_R Posted July 23, 2015 Report Share Posted July 23, 2015 That's like saying please put "HOT" on a coffee cup :) but I see your point if you haven't done this before. . . I found out what is going on. I feel like you aren't taking in to account that people may already have a custom ui_selectslot.sqf and your mod overwrites that. Would it be possible to revise your instructions for people who already have custom ui_selectslot.sqf? Link to comment Share on other sites More sharing options...
Just_R Posted July 23, 2015 Report Share Posted July 23, 2015 I haven't tried the reboot yet, all static mounted weapons give a black screen for me. . . I think Calimity mentioned it as well in a previous post. This is what I get for not reading 3 pages back. . . :huh: Changed this: (bolded 'true') to false. ["ItemCitrine",[0,2,1],5,1,true,true,false,true,true,true,false,["DSHKM_CDF","Suitcase],[],["ItemCitrine"],"true"], ["ItemCitrine",[0,2,1],5,1,true,true,false,true,false,true,false,["DSHKM_CDF","Suitcase],[],["ItemCitrine"],"true"], <- works *edit* It seems that the black screen is intermittent. I just deployed an M2 and I got the black screen again. I'm getting it with a DSHKM mounted gun too.... *edit 2* I apparently had the guns set to false for _simulation. Changed that to true and all seems ok now. I am not sure why it does not lock the M2StaticMG for you but does for me. But even with your code of true/false's it is the same after restart. The M2StaticMG is locked and you need a key to unlock it. I did notice if the pack option is true you can pack it even if it is locked. Link to comment Share on other sites More sharing options...
Just_R Posted July 23, 2015 Report Share Posted July 23, 2015 Just a very random guess here: but does one of you have infistar and the other doesnt? or maybe different variations of it? Plot pole flag turned on = static weapons are not locked after restart. _plot = true, no locking static weapons _plot = false, the static weapons lock after reboot NOTE: so far this only works for the M2StaticMG. (Still testing) I am not sure why it does not lock the M2StaticMG for you but does for me. But even with your code of true/false's it is the same after restart. The M2StaticMG is locked and you need a key to unlock it. I did notice if the pack option is true you can pack it even if it is locked. Link to comment Share on other sites More sharing options...
ElDubya Posted July 23, 2015 Report Share Posted July 23, 2015 Also, the mounted guns are black when you get in them because their classnames need to be added to dayz_allowedObjects = [] in your variables.sqf. Link to comment Share on other sites More sharing options...
hamthejam Posted July 23, 2015 Report Share Posted July 23, 2015 ["ItemTopaz", [0,5,1],5,-1,false,false,false,true,true,true,false,["Land_Fort_Watchtower","M2StaticMG","DSHKM_Ins","SearchLight","Hhedgehog_concrete","Hhedgehog_concreteBig","Base_WarfareBBarrier10xTall","Fence_corrugated_plate","Fence_Ind_long","Land_CncBlock","Land_CncBlock_D","Land_CncBlock_Stripes"],[],["ItemTopaz"],"true"], Probably doesn't help, but that's my code for building mounted weapons. Mine don't lock after a server restart though? I added your code but when I right click on Topaz I still cannot see more than 10 Link to comment Share on other sites More sharing options...
syco Posted July 24, 2015 Report Share Posted July 24, 2015 Just a very random guess here: but does one of you have infistar and the other doesnt? or maybe different variations of it? Plot pole flag turned on = static weapons are not locked after restart. _plot = true, no locking static weapons _plot = false, the static weapons lock after reboot NOTE: so far this only works for the M2StaticMG. (Still testing) This does not work for me. This is my code i want to use for static weapons. ["ItemEmerald",[0,7,1],7,-1,false,false,false,true,true,true,false,["Stinger_Pod_US_EP1","TOW_TriPod_US_EP1"],[],["ItemEmerald"],"true"], ["ItemObsidian",[0,7,1],7,-1,false,false,false,true,true,true,false,["M2StaticMG_US_EP1","MK19_TriPod_US_EP1"],[],["ItemObsidian"],"true"] All four of them are locked after a restart. Even changing the class names ["ItemEmerald",[0,7,1],7,-1,false,false,false,true,true,true,false,["Stinger_Pod","TOW_TriPod"],[],["ItemEmerald"],"true"], ["ItemObsidian",[0,7,1],7,-1,false,false,false,true,true,true,false,["M2StaticMG","MK19_TriPod"],[],["ItemObsidian"],"true"] Still they are locked after a server restart. Link to comment Share on other sites More sharing options...
Webrene Posted July 25, 2015 Report Share Posted July 25, 2015 Hi, can I use the "!(isNull player) && {(getPlayerUID player) in DZE_DEPLOYABLE_ADMINS}" in the 'click_action' 'config.sqf' too? Or is there another way to only allow admins (or special UIDs) to use one right click action? Link to comment Share on other sites More sharing options...
Antichrist Posted July 27, 2015 Report Share Posted July 27, 2015 ... I was going at that same locking problem for ages and i believe it has something to do with me attaching deployables to P4L system but anyways, after few hours of heavy head scratching and script breaking i've found some sort of solution. Check out and you only need step 2 like this for every deployable static gun you might ever need if (_object isKindof "M2StaticMG") then { _ownerID = "0"; }; 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 :D http://pastebin.com/SyZbD7mz SideShowFreak 1 Link to comment Share on other sites More sharing options...
hamthejam Posted August 5, 2015 Report Share Posted August 5, 2015 Does anyone have a clear "How-to" for this deploy anything version and snap/vectors? Thx in advance Link to comment Share on other sites More sharing options...
Antichrist 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; Link to comment Share on other sites More sharing options...
Recommended Posts