J.Dominic Posted December 23, 2016 Report Share Posted December 23, 2016 In my server have little bit problem because i'm disable plot pole request, Have some players use wood ladder bug for enter other players it so easy. And i want to add more craft items how to do that? Thank you sir. Link to comment Share on other sites More sharing options...
0 juandayz Posted December 23, 2016 Report Share Posted December 23, 2016 @J.Dominic Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 25, 2016 Author Report Share Posted December 25, 2016 @juandayz Thank you. You always help me all my post. And can you help me again? I want to edit player_build.sqf and modular_build.sqf I start to Edit compiles.sqf path in init.sqf to call compile preprocessFileLineNumbers "custom\compiles.sqf"; And in my compiles.sqf i change this line if (DZE_modularBuild) then { player_build = compile preprocessFileLineNumbers "custom\modular_build.sqf"; snap_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\snap_build.sqf"; } else { player_build = compile preprocessFileLineNumbers "custom\player_build.sqf"; }; All my edit right or no? Because after i try to edit when i press right click on modular and click build nothing happen but when i press right click on that modular again server say building in process. Link to comment Share on other sites More sharing options...
0 juandayz Posted December 25, 2016 Report Share Posted December 25, 2016 @J.Dominic i think yes, your calling from custom right. you can have an issue in your custom modular_build.sqf when you cannot exit from "action already in process" or something like this.. this means you are missing a "dayz_actionInProgress = false;" in some where of your edit. for example if u write this: _nearRestr = count nearestObjects [_playerPos, ["MAP_kulna"], 45] > 0; if (_nearRestr) exitWith { cutText [format["You cannot build another MAP_kulna in this plot area"], "PLAIN DOWN"]; }; when _nearRestr variable is true you cannot "exitWhit" from this code as well. but if u write: _nearRestr = count nearestObjects [_playerPos, ["MAP_kulna"], 45] > 0; if (_nearRestr) exitWith { cutText [format["You cannot build another MAP_kulna in this plot area"], "PLAIN DOWN"]; dayz_actionInProgress = false; }; you leave the script like a champion cuz your are saying dayz_actionInProgress = false; then you cut the build process. Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 25, 2016 Author Report Share Posted December 25, 2016 @juandayz I add this in player_build and modular_build if (_type = "WoodLadder_DZ" || "ItemWoodLadder") then { _cancel = true; _reason = localize "Cannot build Wood Ladder"; }; above //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = localize "STR_EPOCH_BUILD_FAIL_ROAD"; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; }; I think in player_build and modular_build not have _type define that right? Link to comment Share on other sites More sharing options...
0 juandayz Posted December 25, 2016 Report Share Posted December 25, 2016 YuP _type is a local variable, if it was type without _ infront .you dnt need define cuz is global ( taked from other file) like canbuild or DZE_buildonroads. Link to comment Share on other sites More sharing options...
0 juandayz Posted December 25, 2016 Report Share Posted December 25, 2016 @J.Dominic ANy way if ure trying to not allow ladders on traders cities, take a look on configvariables.sqf . i think thers an option to entry the objects ids that you cannot build in this areas. 1-first you will need a custom configVariables.sqf if u dont know how do it see this guide: 2- In the new configvariables.sqf find and add: DZE_SafeZoneNoBuildItems = ["WoodLadder_DZ"]; 3-do not forogot add your safezones coords in DZE_SafeZonePosArray = []; Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 25, 2016 Author Report Share Posted December 25, 2016 6 hours ago, juandayz said: @J.Dominic ANy way if ure trying to not allow ladders on traders cities, take a look on configvariables.sqf . i think thers an option to entry the objects ids that you cannot build in this areas. 1-first you will need a custom configVariables.sqf if u dont know how do it see this guide: 2- In the new configvariables.sqf find and add: DZE_SafeZoneNoBuildItems = ["WoodLadder_DZ"]; 3-do not forogot add your safezones coords in DZE_SafeZonePosArray = []; I want to not allow ladder every where not only trader :'( Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 27, 2016 Author Report Share Posted December 27, 2016 @juandayz Give me some trick for not allow build Wood Ladder please. Link to comment Share on other sites More sharing options...
0 juandayz Posted December 27, 2016 Report Share Posted December 27, 2016 1 hour ago, J.Dominic said: @juandayz Give me some trick for not allow build Wood Ladder please. ok let me think. please send me the ladders not allowed ids- Link to comment Share on other sites More sharing options...
0 juandayz Posted December 27, 2016 Report Share Posted December 27, 2016 @J.Dominic maybe something like this in modular_build.sqf notallowedobjects = [ "WoodenGate_1", "WoodenGate_2", "WoodenGate_3", "WoodenGate_4", "WoodStairs_DZ", "WoodStairsSans_DZ", "WoodStairsRails_DZ", "WoodLadder_DZ", "Scaffolding_DZ" ]; if (_classname == notallowedobjects) exitWith { cutText [format["This object its not allowed in this server"], "PLAIN DOWN"]; dayz_actionInProgress = false; }; Link to comment Share on other sites More sharing options...
0 juandayz Posted December 27, 2016 Report Share Posted December 27, 2016 @J.Dominic here you got dear my friend.. tested and working. based on @BigEgg´s Restrict building near defined areas you will need a custom modular_build.sqf and custom variables.sqf. 1- in your custom variables: find: DayZ_SafeObjects above paste: DZE_NotAllow = [ "Plastic_Pole_EP1_DZ", "WoodenGate_1", "WoodenGate_2", "WoodenGate_3", "WoodenGate_4", "WoodStairs_DZ", "WoodStairsSans_DZ", "WoodStairsRails_DZ", "WoodLadder_DZ", "Scaffolding_DZ" ]; Add more objects if you want. 2-your custom modular_build.sqf (see all lines in red to learn about the changes). Spoiler // If an array was passed redirect to vanilla player_build (Epoch items pass a string) if (!isNil "_this" && {typeName _this == "ARRAY"} && {count _this > 0}) exitWith {_this spawn player_buildVanilla;}; private ["_abort","_reason","_distance","_isNear","_lockable","_isAllowedUnderGround","_offset","_classname","_zheightdirection","_zheightchanged","_rotate","_objectHelperPos","_objectHelperDir","_objHDiff","_position","_isOk","_dir","_vector","_cancel","_location2","_buildOffset","_location","_limit","_started","_finished","_animState","_isMedic","_proceed","_counter","_dis","_sfx","_combination_1_Display","_combination_1","_combination_2","_combination_3","_combination","_combinationDisplay","_combination_4","_num_removed","_tmpbuilt","_vUp","_classnametmp","_text","_ghost","_objectHelper","_location1","_object","_helperColor","_canDo","_pos","_onLadder","_vehicle","_inVehicle","_needNear","_canBuild","_posplayer","_restrict"]; //Check if building already in progress, exit if so. if (dayz_actionInProgress) exitWith {localize "str_epoch_player_40" call dayz_rollingMessages;}; dayz_actionInProgress = true; _pos = [player] call FNC_GetPos; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _vehicle = vehicle player; _inVehicle = (_vehicle != player); DZE_Q = false; DZE_Z = false; DZE_Q_alt = false; DZE_Z_alt = false; DZE_Q_ctrl = false; DZE_Z_ctrl = false; DZE_5 = false; DZE_4 = false; DZE_6 = false; DZE_F = false; DZE_cancelBuilding = false; DZE_updateVec = false; DZE_memDir = 0; DZE_memForBack = 0; DZE_memLeftRight = 0; call gear_ui_init; closeDialog 1; if (dayz_isSwimming) exitWith {dayz_actionInProgress = false; localize "str_player_26" call dayz_rollingMessages;}; if (_inVehicle) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_42" call dayz_rollingMessages;}; if (_onLadder) exitWith {dayz_actionInProgress = false; localize "str_player_21" call dayz_rollingMessages;}; if (player getVariable["combattimeout",0] >= diag_tickTime) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_43" call dayz_rollingMessages;}; DZE_buildItem = _this; //This is a magazine! It's global to allow access to it from outside functions // Need Near Requirements _abort = false; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "neednearby"); { switch(_x) do{ case "fire": { _distance = 3; _isNear = {inflamed _x} count (_pos nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = localize "STR_EPOCH_FIRE"; }; }; case "workshop": { _distance = 3; _isNear = count (nearestObjects [_pos, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = localize "STR_BLD_name_ItemWorkshop"; }; }; case "fueltank": { _distance = 30; _isNear = count (nearestObjects [_pos, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = localize "STR_EPOCH_VEHUP_TNK"; }; }; }; } forEach _needNear; if (_abort) exitWith { format[localize "str_epoch_player_135",_reason,_distance] call dayz_rollingMessages; dayz_actionInProgress = false; }; _canBuild = [_pos, _this, true] call dze_buildChecks; if (_canBuild select 0) then { _classname = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; if (isText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "buildText")) then { _text = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "buildText"); } else { _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); }; _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; //default define if lockable not found in config file below if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { //find out if item is lockable object _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); // 2=lockbox, 3=combolock, 4=safe }; _isAllowedUnderGround = 1; //check if allowed to build under terrain if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); }; _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); //check default distance offset, define if does not exist _objectHelper = objNull; _isOk = true; _location1 = [player] call FNC_GetPos; // get inital players position _dir = getDir player; //required to pass direction when building // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; _object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"]; //object preview, not an actual object that will be built if((count _offset) <= 0) then { _offset = [0,(abs(((boundingBox _object)select 0) select 1)),0]; }; _objectHelper = "Sign_sphere10cm_EP1" createVehicle [0,0,0]; _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]]; if (isClass (configFile >> "SnapBuilding" >> _classname)) then { ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; }; if !(DZE_buildItem in DZE_noRotate) then{ ["","","",["Init","Init",0]] spawn build_vectors; }; _objHDiff = 0; _cancel = false; _reason = ""; helperDetach = false; _canDo = (!r_drag_sqf and !r_player_unconscious); _position = [_objectHelper] call FNC_GetPos; 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; }; uiSleep 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 > DZE_buildMaxMoveDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_MOVED",DZE_buildMaxMoveDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _objectHelperPos > DZE_buildMaxMoveDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_TOO_FAR",DZE_buildMaxMoveDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(abs(_objHDiff) > DZE_buildMaxHeightDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_HEIGHT",DZE_buildMaxHeightDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (player getVariable["combattimeout",0] >= diag_tickTime) 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 = localize "STR_EPOCH_PLAYER_46"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; }; _isOk = true; _proceed = false; _counter = 0; _location = [0,0,0]; //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = localize "STR_EPOCH_BUILD_FAIL_ROAD"; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; }; _posplayer = [player] call FNC_GetPos; _restrict = count (nearestObjects [_posplayer, DZE_NotAllow, 200]); if (_restrict > 0) then { _cancel = true; _reason = format["This object its not allowed in this server"]; dayz_actionInProgress = false; }; if(!_cancel) then { _classname = _classnametmp; // Start Build _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //create actual object that will be published to database _tmpbuilt setdir _dir; //set direction inherited from passed args from control _tmpbuilt setVariable["memDir",_dir,true]; // Get position based on object _location = _position; if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { //check Z axis if not allowed to build underground _location set [2,0]; //reset Z axis to zero (above terrain) }; _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; }; format[localize "str_epoch_player_138",_text] call dayz_rollingMessages; _limit = 3; //times it takes to build by default if (DZE_StaticConstructionCount > 0) then { //if count is manually overridden inside init.sqf, use that instead, else use limits configured in config files _limit = DZE_StaticConstructionCount; } else { if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; }; while {_isOk} do { //publish phase format[localize "str_epoch_player_139",_text, (_counter + 1),_limit] call dayz_rollingMessages; //report how many steps are done out of total limit ["Working",0,[100,15,10,0]] call dayz_NutritionSystem; player playActionNow "Medic"; //animation //alert zombies _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 { //while player is not interrupted, go trough animations _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] >= diag_tickTime)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; uiSleep 0.1; }; r_doLoop = false; if(!_finished) exitWith { //exit if interrupted _isOk = false; _proceed = false; }; if(_finished) then { //if animation finished, add to build count _counter = _counter + 1; }; if(_counter == _limit) exitWith { //if all steps done proceed with next step, otherwise cancel publish _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,DZE_buildItem] call BIS_fnc_invRemove); //remove item's magazine from inventory if(_num_removed == 1) then { call player_forceSave; format[localize "str_build_01",_text] call dayz_rollingMessages; _tmpbuilt setVariable ["OEMPos",_location,true]; //store original location as a variable if(_lockable > 1) then { //if item has code lock on it _combinationDisplay = ""; //define new display switch (_lockable) do { //generate random combinations depending on item type 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 = localize "STR_TEAM_RED"; }; if (_combination_1 == 101) then { _combination_1_Display = localize "STR_TEAM_GREEN"; }; if (_combination_1 == 102) then { _combination_1_Display = localize "STR_TEAM_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]; //set combination as a character ID //call publish precompiled function with given args and send public variable to server to save item to database if (DZE_permanentPlot) then { _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true]; PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],[]]; if (_lockable == 3) then { _friendsArr = [[dayz_playerUID,toArray (name player)]]; _tmpbuilt setVariable ["doorfriends", _friendsArr, true]; PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],_friendsArr]; }; } else { PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location, _vector],[]]; }; publicVariableServer "PVDZ_obj_Publish"; format[localize "str_epoch_player_140",_combinationDisplay,_text] call dayz_rollingMessages; //display new combination systemChat format[localize "str_epoch_player_140",_combinationDisplay,_text]; } else { //if not lockable item _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_tmpbuilt isKindOf "Land_Fire_DZ") then { //if campfire, then spawn, but do not publish to database _tmpbuilt spawn player_fireMonitor; } else { if (DZE_permanentPlot) then { _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true]; if (_canBuild select 1) then { _friendsArr = [[dayz_playerUID,toArray (name player)]]; _tmpbuilt setVariable ["plotfriends", _friendsArr, true]; PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],_friendsArr]; } else { PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],[]]; }; } else { PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location, _vector],[]]; }; publicVariableServer "PVDZ_obj_Publish"; }; }; } else { //if magazine was not removed, cancel publish deleteVehicle _tmpbuilt; localize "str_epoch_player_46" call dayz_rollingMessages; }; } else { //if player was interrupted, cancel publish and stop build animations r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _tmpbuilt; localize "str_epoch_player_46" call dayz_rollingMessages; }; } else { //cancel build if passed _cancel arg was true or building on roads/trader city format[localize "str_epoch_player_47",_text,_reason] call dayz_rollingMessages; }; }; dayz_actionInProgress = false; 3-in init.sqf DZE_requireplot = 0; BigEgg 1 Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 28, 2016 Author Report Share Posted December 28, 2016 @juandayz Step to make custom modular_build.sqf 1. Edit compiles.sqf path in init.sqf from call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; to compile preprocessFileLineNumbers "custom\compiles.sqf"; 2. Copy compiles.sqf from @DayZ\addons\dayz_code\init\compiles.sqf to MPMissions\DayZ_Epoch_11.Chernarus\custom\compiles.sqf 3. Edit mudular_build.sqf from player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\modular_build.sqf"; to player_build = compile preprocessFileLineNumbers "custom\actions\modular_build.sqf"; That right? I want to know for sure. Sorry about that. Link to comment Share on other sites More sharing options...
0 juandayz Posted December 28, 2016 Report Share Posted December 28, 2016 @J.Dominicand place my modular_build.sqf into custom\actions\ and do not forgot make the custom variables. Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 29, 2016 Author Report Share Posted December 29, 2016 @juandayz I try to make custom compiles.sqf and variable.sqf server give me some errors and server can't join. Spoiler 15:47:34 Error in expression <t _myArray,_result]; }; }; } else { if (_val > 0) then { _fileName = _key call s> 15:47:34 Error position: <_val > 0) then { _fileName = _key call s> 15:47:34 Error Undefined variable in expression: _val 15:47:34 File z\addons\dayz_server\system\server_monitor.sqf, line 63 15:47:34 "HIVE: BENCHMARK - Server_monitor.sqf finished streaming any objects in 0 seconds (unscheduled)" 15:47:34 "Total Number of spawn locations 11" 15:47:34 Error in expression <key = "CHILD:307:"; _result = _key call server_hiveReadWrite; _outcome = _result> 15:47:34 Error position: <server_hiveReadWrite; _outcome = _result> 15:47:34 Error Undefined variable in expression: server_hivereadwrite 15:47:34 File z\addons\dayz_server\system\server_monitor.sqf, line 22 15:47:34 "SERVER FPS: 19 PLAYERS: 1" 15:47:34 Error in expression <for "_i" from 1 to (3) do { _type = (([_typeGroup, 1] call dz_fn_loot_select) > 15:47:34 Error position: <_typeGroup, 1] call dz_fn_loot_select) > 15:47:34 Error Undefined variable in expression: _typegroup 15:47:34 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 52 15:47:34 Error in expression <bjects", "_objectPos" ]; _typeGroup = (dz_loot_groups find ("InfectedCampType")> 15:47:34 Error position: <dz_loot_groups find ("InfectedCampType")> 15:47:34 Error Undefined variable in expression: dz_loot_groups 15:47:34 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 45 15:47:34 "Spawning an infected camp (any) at [6918.05,6186.23,0]" 15:47:34 Error in expression <"Spawning an infected camp (%1) at %2", _composition, _position]; _composition> 15:47:34 Error position: <_composition, _position]; _composition> 15:47:34 Error Undefined variable in expression: _composition 15:47:34 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 66 15:47:35 Error in expression <for "_i" from 1 to (3) do { _type = (([_typeGroup, 1] call dz_fn_loot_select) > 15:47:35 Error position: <_typeGroup, 1] call dz_fn_loot_select) > 15:47:35 Error Undefined variable in expression: _typegroup 15:47:35 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 52 15:47:35 "Spawning an infected camp (any) at [11497.3,9812.67,0]" 15:47:35 Error in expression <"Spawning an infected camp (%1) at %2", _composition, _position]; _composition> 15:47:35 Error position: <_composition, _position]; _composition> 15:47:35 Error Undefined variable in expression: _composition 15:47:35 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 66 15:47:35 Error in expression <for "_i" from 1 to (3) do { _type = (([_typeGroup, 1] call dz_fn_loot_select) > 15:47:35 Error position: <_typeGroup, 1] call dz_fn_loot_select) > 15:47:35 Error Undefined variable in expression: _typegroup 15:47:35 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 52 15:47:35 "Spawning an infected camp (any) at [4241.57,13078.8,0]" 15:47:35 Error in expression <"Spawning an infected camp (%1) at %2", _composition, _position]; _composition> 15:47:35 Error position: <_composition, _position]; _composition> 15:47:35 Error Undefined variable in expression: _composition 15:47:35 File z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf, line 66 15:47:36 "CRASHSPAWNER: Starting crash site spawner. Frequency: 25±20 min. Spawn chance: 0.75" 15:47:36 "CRASHSPAWNER: Spawning crash site (any) at [11909.1,6467.88,0] with scalar NaN items." 15:47:36 Error in expression <0.75]; _spawnCrashSite = { _type = (([(dz_loot_groups find ("CrashSiteType")), > 15:47:36 Error position: <dz_loot_groups find ("CrashSiteType")), > 15:47:36 Error Undefined variable in expression: dz_loot_groups 15:47:36 File z\addons\dayz_server\compile\server_spawnCrashSites.sqf, line 57 15:47:37 Error in expression <P1" createVehicle _position; _vehicle = _class createVehicle [0,0,0]; dayz_serve> 15:47:37 Error position: <_class createVehicle [0,0,0]; dayz_serve> 15:47:37 Error Undefined variable in expression: _class 15:47:37 File z\addons\dayz_server\compile\server_spawnCrashSites.sqf, line 71 15:47:37 "INFO: Chosen waterholes to be infectious - []" 15:47:37 Error in expression <fectedWaterHoles = _WaterHoleArray call fn_shuffleArray; infectedWaterHoles = [> 15:47:37 Error position: <fn_shuffleArray; infectedWaterHoles = [> 15:47:37 Error Undefined variable in expression: fn_shufflearray 15:47:37 File z\addons\dayz_code\system\mission\chernarus\infectiousWaterholes\init.sqf, line 27 15:47:41 No owner 15:47:44 Warning Message: Script z\addons\dayz_server\WAI\customsettings.sqf not found 15:47:44 "WAI: AI Config File Loaded" 15:47:44 "WAI: AI Monitor Started" 15:47:44 "WAI: Initialising missions" 15:47:47 "CLEANUP: INITIALIZING Vehicle SCRIPT" 15:47:47 Error in expression <inute"]; _result = "CHILD:307:" call server_hiveReadWrite; _outcome = _result> 15:47:47 Error position: <server_hiveReadWrite; _outcome = _result> 15:47:47 Error Undefined variable in expression: server_hivereadwrite 15:47:47 File z\addons\dayz_server\system\scheduler\sched_sync.sqf, line 6 15:50:29 Client: Remote object 2:4 not found 15:50:29 Client: Remote object 2:5 not found 15:50:29 Client: Remote object 2:6 not found 15:52:48 Client: Remote object 2:1781 not found 15:52:48 Client: Remote object 2:1782 not found 15:52:48 Client: Remote object 2:1783 not found 15:53:34 "SERVER FPS: 50 PLAYERS: 1" Link to comment Share on other sites More sharing options...
0 juandayz Posted December 29, 2016 Report Share Posted December 29, 2016 @J.Dominic MAKE YOUR CUSTOM VARIABLES//COMPILES.sqf 1- go to YOURSERVERROOT\@DayZ_Epoch\addons\ and unpack your dayz_code.pbo 2-open \@DayZ_Epoch\addons\dayz_code\init\ and copy this two files: compiles.sqf and variables.sqf 3-Now we have to create a new folder for this files so go to: YOURSERVERROOT\MPMissions\DayZ_Epoch_11.Chernarus\ and create a new folder called "custom". Then paste inside the compiles.sqf // variables.sqf // 4-Making the calls for this 2 new files: (compiles.sqf/variables.sqf). A-First open your init.sqf and find this line: call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; change by: call compile preprocessFileLineNumbers "custom\variables.sqf"; B-find this line: call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; change by: call compile preprocessFileLineNumbers "custom\compiles.sqf"; 4-CHANGE THE PATH FOR MODULAR_BUILD:.sqf -open your custom compiles.sqf located into the custom folder and find this line: player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\modular_build.sqf"; change by: player_build = compile preprocessFileLineNumbers "custom\modular_build.sqf"; 5-in your custom variables: find: DayZ_SafeObjects above paste: DZE_NotAllow = [ "Plastic_Pole_EP1_DZ", "WoodenGate_1", "WoodenGate_2", "WoodenGate_3", "WoodenGate_4", "WoodStairs_DZ", "WoodStairsSans_DZ", "WoodStairsRails_DZ", "WoodLadder_DZ", "Scaffolding_DZ" ]; Add more objects if you want. 6-in init.sqf DZE_requireplot = 0; 7-Drop modular_build.sqf into mpmissions\your instance\custom) open it. and edit. A-into private section find: ,"_needNear","_canBuild"]; add : ,"_posplayer","_restrict" so its looks: ,"_needNear","_canBuild","_posplayer","_restrict"]; B-find: // No building in trader zones if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; }; below paste: _posplayer = [player] call FNC_GetPos; _restrict = count (nearestObjects [_posplayer, DZE_NotAllow, 200]); if (_restrict > 0) then { _cancel = true; _reason = format["This object its not allowed in this server"]; dayz_actionInProgress = false; }; Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 29, 2016 Author Report Share Posted December 29, 2016 @juandayz I do it right. I sure. This in my init.sqf initialized = false; //call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; call compile preprocessFileLineNumbers "custom\variables.sqf"; progressLoadingScreen 0.05; call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf"; progressLoadingScreen 0.1; call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf"; progressLoadingScreen 0.15; //call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; compile preprocessFileLineNumbers "custom\compiles.sqf"; progressLoadingScreen 0.2; call compile preprocessFileLineNumbers "\z\addons\dayz_code\system\BIS_Effects\init.sqf"; progressLoadingScreen 0.25; call compile preprocessFileLineNumbers "server_traders.sqf"; call compile preprocessFileLineNumbers "\z\addons\dayz_code\system\mission\chernarus11.sqf"; //Add trader city objects locally on each machine early initialized = true; This in my compiles.sqf if (DZE_modularBuild) then { //player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\modular_build.sqf"; player_build = compile preprocessFileLineNumbers "custom\modular_build.sqf"; snap_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\snap_build.sqf"; } else { player_build = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_build.sqf"; }; This in my variables.sqf DZE_NotAllow = ["WoodLadder_DZ"]; This in my modular_build.sqf Spoiler // If an array was passed redirect to vanilla player_build (Epoch items pass a string) if (!isNil "_this" && {typeName _this == "ARRAY"} && {count _this > 0}) exitWith {_this spawn player_buildVanilla;}; private ["_abort","_reason","_distance","_isNear","_lockable","_isAllowedUnderGround","_offset","_classname","_zheightdirection","_zheightchanged","_rotate","_objectHelperPos","_objectHelperDir","_objHDiff","_position","_isOk","_dir","_vector","_cancel","_location2","_buildOffset","_location","_limit","_started","_finished","_animState","_isMedic","_proceed","_counter","_dis","_sfx","_combination_1_Display","_combination_1","_combination_2","_combination_3","_combination","_combinationDisplay","_combination_4","_num_removed","_tmpbuilt","_vUp","_classnametmp","_text","_ghost","_objectHelper","_location1","_object","_helperColor","_canDo","_pos","_onLadder","_vehicle","_inVehicle","_needNear","_canBuild","_posplayer","_restrict"]; //Check if building already in progress, exit if so. if (dayz_actionInProgress) exitWith {localize "str_epoch_player_40" call dayz_rollingMessages;}; dayz_actionInProgress = true; _pos = [player] call FNC_GetPos; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _vehicle = vehicle player; _inVehicle = (_vehicle != player); DZE_Q = false; DZE_Z = false; DZE_Q_alt = false; DZE_Z_alt = false; DZE_Q_ctrl = false; DZE_Z_ctrl = false; DZE_5 = false; DZE_4 = false; DZE_6 = false; DZE_F = false; DZE_cancelBuilding = false; DZE_updateVec = false; DZE_memDir = 0; DZE_memForBack = 0; DZE_memLeftRight = 0; call gear_ui_init; closeDialog 1; if (dayz_isSwimming) exitWith {dayz_actionInProgress = false; localize "str_player_26" call dayz_rollingMessages;}; if (_inVehicle) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_42" call dayz_rollingMessages;}; if (_onLadder) exitWith {dayz_actionInProgress = false; localize "str_player_21" call dayz_rollingMessages;}; if (player getVariable["combattimeout",0] >= diag_tickTime) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_43" call dayz_rollingMessages;}; DZE_buildItem = _this; //This is a magazine! It's global to allow access to it from outside functions // Need Near Requirements _abort = false; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "neednearby"); { switch(_x) do{ case "fire": { _distance = 3; _isNear = {inflamed _x} count (_pos nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = localize "STR_EPOCH_FIRE"; }; }; case "workshop": { _distance = 3; _isNear = count (nearestObjects [_pos, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = localize "STR_BLD_name_ItemWorkshop"; }; }; case "fueltank": { _distance = 30; _isNear = count (nearestObjects [_pos, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = localize "STR_EPOCH_VEHUP_TNK"; }; }; }; } forEach _needNear; if (_abort) exitWith { format[localize "str_epoch_player_135",_reason,_distance] call dayz_rollingMessages; dayz_actionInProgress = false; }; _canBuild = [_pos, _this, true] call dze_buildChecks; if (_canBuild select 0) then { _classname = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; if (isText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "buildText")) then { _text = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "buildText"); } else { _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); }; _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; //default define if lockable not found in config file below if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { //find out if item is lockable object _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); // 2=lockbox, 3=combolock, 4=safe }; _isAllowedUnderGround = 1; //check if allowed to build under terrain if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); }; _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); //check default distance offset, define if does not exist _objectHelper = objNull; _isOk = true; _location1 = [player] call FNC_GetPos; // get inital players position _dir = getDir player; //required to pass direction when building // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; _object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"]; //object preview, not an actual object that will be built if((count _offset) <= 0) then { _offset = [0,(abs(((boundingBox _object)select 0) select 1)),0]; }; _objectHelper = "Sign_sphere10cm_EP1" createVehicle [0,0,0]; _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]]; if (isClass (configFile >> "SnapBuilding" >> _classname)) then { ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; }; if !(DZE_buildItem in DZE_noRotate) then{ ["","","",["Init","Init",0]] spawn build_vectors; }; _objHDiff = 0; _cancel = false; _reason = ""; helperDetach = false; _canDo = (!r_drag_sqf and !r_player_unconscious); _position = [_objectHelper] call FNC_GetPos; 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; }; uiSleep 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 > DZE_buildMaxMoveDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_MOVED",DZE_buildMaxMoveDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _objectHelperPos > DZE_buildMaxMoveDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_TOO_FAR",DZE_buildMaxMoveDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(abs(_objHDiff) > DZE_buildMaxHeightDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_HEIGHT",DZE_buildMaxHeightDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (player getVariable["combattimeout",0] >= diag_tickTime) 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 = localize "STR_EPOCH_PLAYER_46"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; }; _isOk = true; _proceed = false; _counter = 0; _location = [0,0,0]; //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = localize "STR_EPOCH_BUILD_FAIL_ROAD"; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; }; _posplayer = [player] call FNC_GetPos; _restrict = count (nearestObjects [_posplayer, DZE_NotAllow, 200]); if (_restrict > 0) then { _cancel = true; _reason = format["This object its not allowed in this server"]; dayz_actionInProgress = false; }; if(!_cancel) then { _classname = _classnametmp; // Start Build _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //create actual object that will be published to database _tmpbuilt setdir _dir; //set direction inherited from passed args from control _tmpbuilt setVariable["memDir",_dir,true]; // Get position based on object _location = _position; if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { //check Z axis if not allowed to build underground _location set [2,0]; //reset Z axis to zero (above terrain) }; _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; }; format[localize "str_epoch_player_138",_text] call dayz_rollingMessages; _limit = 3; //times it takes to build by default if (DZE_StaticConstructionCount > 0) then { //if count is manually overridden inside init.sqf, use that instead, else use limits configured in config files _limit = DZE_StaticConstructionCount; } else { if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; }; while {_isOk} do { //publish phase format[localize "str_epoch_player_139",_text, (_counter + 1),_limit] call dayz_rollingMessages; //report how many steps are done out of total limit ["Working",0,[100,15,10,0]] call dayz_NutritionSystem; player playActionNow "Medic"; //animation //alert zombies _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 { //while player is not interrupted, go trough animations _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] >= diag_tickTime)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; uiSleep 0.1; }; r_doLoop = false; if(!_finished) exitWith { //exit if interrupted _isOk = false; _proceed = false; }; if(_finished) then { //if animation finished, add to build count _counter = _counter + 1; }; if(_counter == _limit) exitWith { //if all steps done proceed with next step, otherwise cancel publish _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,DZE_buildItem] call BIS_fnc_invRemove); //remove item's magazine from inventory if(_num_removed == 1) then { call player_forceSave; format[localize "str_build_01",_text] call dayz_rollingMessages; _tmpbuilt setVariable ["OEMPos",_location,true]; //store original location as a variable if(_lockable > 1) then { //if item has code lock on it _combinationDisplay = ""; //define new display switch (_lockable) do { //generate random combinations depending on item type 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 = localize "STR_TEAM_RED"; }; if (_combination_1 == 101) then { _combination_1_Display = localize "STR_TEAM_GREEN"; }; if (_combination_1 == 102) then { _combination_1_Display = localize "STR_TEAM_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]; //set combination as a character ID //call publish precompiled function with given args and send public variable to server to save item to database if (DZE_permanentPlot) then { _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true]; PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],[]]; if (_lockable == 3) then { _friendsArr = [[dayz_playerUID,toArray (name player)]]; _tmpbuilt setVariable ["doorfriends", _friendsArr, true]; PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],_friendsArr]; }; } else { PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location, _vector],[]]; }; publicVariableServer "PVDZ_obj_Publish"; format[localize "str_epoch_player_140",_combinationDisplay,_text] call dayz_rollingMessages; //display new combination systemChat format[localize "str_epoch_player_140",_combinationDisplay,_text]; } else { //if not lockable item _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_tmpbuilt isKindOf "Land_Fire_DZ") then { //if campfire, then spawn, but do not publish to database _tmpbuilt spawn player_fireMonitor; } else { if (DZE_permanentPlot) then { _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true]; if (_canBuild select 1) then { _friendsArr = [[dayz_playerUID,toArray (name player)]]; _tmpbuilt setVariable ["plotfriends", _friendsArr, true]; PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],_friendsArr]; } else { PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],[]]; }; } else { PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location, _vector],[]]; }; publicVariableServer "PVDZ_obj_Publish"; }; }; } else { //if magazine was not removed, cancel publish deleteVehicle _tmpbuilt; localize "str_epoch_player_46" call dayz_rollingMessages; }; } else { //if player was interrupted, cancel publish and stop build animations r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _tmpbuilt; localize "str_epoch_player_46" call dayz_rollingMessages; }; } else { //cancel build if passed _cancel arg was true or building on roads/trader city format[localize "str_epoch_player_47",_text,_reason] call dayz_rollingMessages; }; }; dayz_actionInProgress = false; Same issue i told you before. I try to make custom compiles.sqf and custom modular_build.sqf with original code but after i try to place some buildings nothing happen. Link to comment Share on other sites More sharing options...
0 juandayz Posted December 29, 2016 Report Share Posted December 29, 2016 yup its right... do you set 6-in init.sqf DZE_requireplot = 0; ? cuz its work for me Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 30, 2016 Author Report Share Posted December 30, 2016 @juandayz Try to check this line above post lol. I'm wrong compile preprocessFileLineNumbers "custom\compiles.sqf"; Link to comment Share on other sites More sharing options...
0 J.Dominic Posted December 30, 2016 Author Report Share Posted December 30, 2016 Thank you all of things for help me @juandayz Ok after i test your script. Your script meaning if have some buildings place front of you or nearly object in DZE_NotAllow will can't place that right? But i found little problem in variables.sqf i set only WoodLadder_DZ but i can't place any things nearly other buildings. DZE_NotAllow = ["WoodLadder_DZ"]; Link to comment Share on other sites More sharing options...
0 juandayz Posted December 30, 2016 Report Share Posted December 30, 2016 9 hours ago, J.Dominic said: Thank you all of things for help me @juandayz Ok after i test your script. Your script meaning if have some buildings place front of you or nearly object in DZE_NotAllow will can't place that right? But i found little problem in variables.sqf i set only WoodLadder_DZ but i can't place any things nearly other buildings. DZE_NotAllow = ["WoodLadder_DZ"]; so you say.. if for example you have a base with... woodfloors or other objects you cannot build anything? Quote Your script meaning if have some buildings place front of you or nearly object in DZE_NotAllow will can't place that right? yes, the script recognize the object in the hand to be crafted and if in DZE_Notallow in a radius of 200mts around the player cancel the craft. the 200 mts can be reduced by 3mts.. cuz is in the hand of player (very close) Link to comment Share on other sites More sharing options...
0 J.Dominic Posted January 1, 2017 Author Report Share Posted January 1, 2017 @juandayz My issue is i set only WoodLadder but i can't place 30m plot pole. Link to comment Share on other sites More sharing options...
0 juandayz Posted January 1, 2017 Report Share Posted January 1, 2017 do not worry we gonna find the way at least Link to comment Share on other sites More sharing options...
0 juandayz Posted January 3, 2017 Report Share Posted January 3, 2017 @J.Dominic test it with a vaultstoragelocked and works.. proob it with your laders.. remember put a smallwoodwall_DZ near of you (less than 37mts to test it) modular_build.sqf (see lines in red) Spoiler // If an array was passed redirect to vanilla player_build (Epoch items pass a string) if (!isNil "_this" && {typeName _this == "ARRAY"} && {count _this > 0}) exitWith {_this spawn player_buildVanilla;}; private ["_NOTALLOW","_playerPos","_nearRestr","_abort","_reason","_distance","_isNear","_lockable","_isAllowedUnderGround","_offset","_classname","_zheightdirection","_zheightchanged","_rotate","_objectHelperPos","_objectHelperDir","_objHDiff","_position","_isOk","_dir","_vector","_cancel","_location2","_buildOffset","_location","_limit","_started","_finished","_animState","_isMedic","_proceed","_counter","_dis","_sfx","_combination_1_Display","_combination_1","_combination_2","_combination_3","_combination","_combinationDisplay","_combination_4","_num_removed","_tmpbuilt","_vUp","_classnametmp","_text","_ghost","_objectHelper","_location1","_object","_helperColor","_canDo","_pos","_onLadder","_vehicle","_inVehicle","_needNear","_canBuild"]; //Check if building already in progress, exit if so. if (dayz_actionInProgress) exitWith {localize "str_epoch_player_40" call dayz_rollingMessages;}; dayz_actionInProgress = true; _pos = [player] call FNC_GetPos; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _vehicle = vehicle player; _inVehicle = (_vehicle != player); DZE_Q = false; DZE_Z = false; DZE_Q_alt = false; DZE_Z_alt = false; DZE_Q_ctrl = false; DZE_Z_ctrl = false; DZE_5 = false; DZE_4 = false; DZE_6 = false; DZE_F = false; DZE_cancelBuilding = false; DZE_updateVec = false; DZE_memDir = 0; DZE_memForBack = 0; DZE_memLeftRight = 0; call gear_ui_init; closeDialog 1; if (dayz_isSwimming) exitWith {dayz_actionInProgress = false; localize "str_player_26" call dayz_rollingMessages;}; if (_inVehicle) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_42" call dayz_rollingMessages;}; if (_onLadder) exitWith {dayz_actionInProgress = false; localize "str_player_21" call dayz_rollingMessages;}; if (player getVariable["combattimeout",0] >= diag_tickTime) exitWith {dayz_actionInProgress = false; localize "str_epoch_player_43" call dayz_rollingMessages;}; DZE_buildItem = _this; //This is a magazine! It's global to allow access to it from outside functions // Need Near Requirements _abort = false; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "neednearby"); { switch(_x) do{ case "fire": { _distance = 3; _isNear = {inflamed _x} count (_pos nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = localize "STR_EPOCH_FIRE"; }; }; case "workshop": { _distance = 3; _isNear = count (nearestObjects [_pos, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = localize "STR_BLD_name_ItemWorkshop"; }; }; case "fueltank": { _distance = 30; _isNear = count (nearestObjects [_pos, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = localize "STR_EPOCH_VEHUP_TNK"; }; }; }; } forEach _needNear; if (_abort) exitWith { format[localize "str_epoch_player_135",_reason,_distance] call dayz_rollingMessages; dayz_actionInProgress = false; }; _canBuild = [_pos, _this, true] call dze_buildChecks; if (_canBuild select 0) then { _classname = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; if (isText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "buildText")) then { _text = getText (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActions" >> "Build" >> "buildText"); } else { _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); }; _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; //default define if lockable not found in config file below if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { //find out if item is lockable object _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); // 2=lockbox, 3=combolock, 4=safe }; _isAllowedUnderGround = 1; //check if allowed to build under terrain if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); }; _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); //check default distance offset, define if does not exist _objectHelper = objNull; _isOk = true; _location1 = [player] call FNC_GetPos; // get inital players position _dir = getDir player; //required to pass direction when building // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; _object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"]; //object preview, not an actual object that will be built if((count _offset) <= 0) then { _offset = [0,(abs(((boundingBox _object)select 0) select 1)),0]; }; _objectHelper = "Sign_sphere10cm_EP1" createVehicle [0,0,0]; _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]]; if (isClass (configFile >> "SnapBuilding" >> _classname)) then { ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build; }; if !(DZE_buildItem in DZE_noRotate) then{ ["","","",["Init","Init",0]] spawn build_vectors; }; _objHDiff = 0; _cancel = false; _reason = ""; helperDetach = false; _canDo = (!r_drag_sqf and !r_player_unconscious); _position = [_objectHelper] call FNC_GetPos; 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; }; uiSleep 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 > DZE_buildMaxMoveDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_MOVED",DZE_buildMaxMoveDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(_location1 distance _objectHelperPos > DZE_buildMaxMoveDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_TOO_FAR",DZE_buildMaxMoveDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if(abs(_objHDiff) > DZE_buildMaxHeightDistance) exitWith { _isOk = false; _cancel = true; _reason = format[localize "STR_EPOCH_BUILD_FAIL_HEIGHT",DZE_buildMaxHeightDistance]; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; if (player getVariable["combattimeout",0] >= diag_tickTime) 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 = localize "STR_EPOCH_PLAYER_46"; detach _object; deleteVehicle _object; detach _objectHelper; deleteVehicle _objectHelper; }; }; _isOk = true; _proceed = false; _counter = 0; _location = [0,0,0]; //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = localize "STR_EPOCH_BUILD_FAIL_ROAD"; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; }; if(!_cancel) then {_NOTALLOW = "VaultStorageLocked";//use ure ladders ids//more than one lader//coment this line and use the structure below //_NOTALLOW = ["",""];_playerPos = getPosATL player; _nearRestr = count nearestObjects [_playerPos, ["WoodSmallWall_DZ"], 37] > 0; if (_nearRestr && (_NOTALLOW == _classname)) exitWith { dayz_actionInProgress = false; cutText [format["Cannot build near of small wood wall"], "PLAIN DOWN"]; }; _classname = _classnametmp; // Start Build _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //create actual object that will be published to database _tmpbuilt setdir _dir; //set direction inherited from passed args from control _tmpbuilt setVariable["memDir",_dir,true]; // Get position based on object _location = _position; if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then { //check Z axis if not allowed to build underground _location set [2,0]; //reset Z axis to zero (above terrain) }; _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; }; format[localize "str_epoch_player_138",_text] call dayz_rollingMessages; _limit = 3; //times it takes to build by default if (DZE_StaticConstructionCount > 0) then { //if count is manually overridden inside init.sqf, use that instead, else use limits configured in config files _limit = DZE_StaticConstructionCount; } else { if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; }; while {_isOk} do { //publish phase format[localize "str_epoch_player_139",_text, (_counter + 1),_limit] call dayz_rollingMessages; //report how many steps are done out of total limit ["Working",0,[100,15,10,0]] call dayz_NutritionSystem; player playActionNow "Medic"; //animation //alert zombies _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 { //while player is not interrupted, go trough animations _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] >= diag_tickTime)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; uiSleep 0.1; }; r_doLoop = false; if(!_finished) exitWith { //exit if interrupted _isOk = false; _proceed = false; }; if(_finished) then { //if animation finished, add to build count _counter = _counter + 1; }; if(_counter == _limit) exitWith { //if all steps done proceed with next step, otherwise cancel publish _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,DZE_buildItem] call BIS_fnc_invRemove); //remove item's magazine from inventory if(_num_removed == 1) then { call player_forceSave; format[localize "str_build_01",_text] call dayz_rollingMessages; _tmpbuilt setVariable ["OEMPos",_location,true]; //store original location as a variable if(_lockable > 1) then { //if item has code lock on it _combinationDisplay = ""; //define new display switch (_lockable) do { //generate random combinations depending on item type 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 = localize "STR_TEAM_RED"; }; if (_combination_1 == 101) then { _combination_1_Display = localize "STR_TEAM_GREEN"; }; if (_combination_1 == 102) then { _combination_1_Display = localize "STR_TEAM_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]; //set combination as a character ID //call publish precompiled function with given args and send public variable to server to save item to database if (DZE_permanentPlot) then { _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true]; PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],[]]; if (_lockable == 3) then { _friendsArr = [[dayz_playerUID,toArray (name player)]]; _tmpbuilt setVariable ["doorfriends", _friendsArr, true]; PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],_friendsArr]; }; } else { PVDZ_obj_Publish = [_combination,_tmpbuilt,[_dir,_location, _vector],[]]; }; publicVariableServer "PVDZ_obj_Publish"; format[localize "str_epoch_player_140",_combinationDisplay,_text] call dayz_rollingMessages; //display new combination systemChat format[localize "str_epoch_player_140",_combinationDisplay,_text]; } else { //if not lockable item _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_tmpbuilt isKindOf "Land_Fire_DZ") then { //if campfire, then spawn, but do not publish to database _tmpbuilt spawn player_fireMonitor; } else { if (DZE_permanentPlot) then { _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true]; if (_canBuild select 1) then { _friendsArr = [[dayz_playerUID,toArray (name player)]]; _tmpbuilt setVariable ["plotfriends", _friendsArr, true]; PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],_friendsArr]; } else { PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID,_vector],[]]; }; } else { PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location, _vector],[]]; }; publicVariableServer "PVDZ_obj_Publish"; }; }; } else { //if magazine was not removed, cancel publish deleteVehicle _tmpbuilt; localize "str_epoch_player_46" call dayz_rollingMessages; }; } else { //if player was interrupted, cancel publish and stop build animations r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _tmpbuilt; localize "str_epoch_player_46" call dayz_rollingMessages; }; } else { //cancel build if passed _cancel arg was true or building on roads/trader city format[localize "str_epoch_player_47",_text,_reason] call dayz_rollingMessages; }; }; dayz_actionInProgress = false; Link to comment Share on other sites More sharing options...
0 J.Dominic Posted January 3, 2017 Author Report Share Posted January 3, 2017 After i test your script working with VaultStorageLocked. But doesn't work with WoodLadder_DZ Why? Link to comment Share on other sites More sharing options...
0 juandayz Posted January 3, 2017 Report Share Posted January 3, 2017 13 hours ago, J.Dominic said: After i test your script working with VaultStorageLocked. But doesn't work with WoodLadder_DZ Why? check if woodladder_DZ is the correct ID for this object Link to comment Share on other sites More sharing options...
Question
J.Dominic
In my server have little bit problem because i'm disable plot pole request, Have some players use wood ladder bug for enter other players it so easy.
And i want to add more craft items how to do that?
Thank you sir.
Link to comment
Share on other sites
32 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now