NorthyPark Posted March 5, 2014 Report Share Posted March 5, 2014 Hello, as the title says, i want the instant build script to work with build snapping. since they both uses a custom "Player_Build.sqf i cant get them to work. i have tried merging them, but no luck :( i am using a playerbuild i found somewhere, and i think it made by Dami. anyway i will post both of my original player_builds from the build snapping and the instabuild thing. Instabuild: private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_abort","_isNear","_need","_objHupDiff","_objHdwnDiff","_needNear"]; if (DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; if((count ((position player) nearObjects ["All",30])) >= DZE_BuildingLimit) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"];}; DZE_ActionInProgress = true; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _isWater = dayz_isSwimming; _cancel = false; _reason = ""; _vehicle = vehicle player; _inVehicle = (_vehicle != player); _canBuildOnPlot = false; 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_togglesnap = false; DZE_cancelBuilding = false; call gear_ui_init; closeDialog 1; if ((_isWater)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];}; if ((_inVehicle)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];}; if ((_onLadder)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];}; if ((player getVariable["combattimeout", 0] >= time)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];}; _item = _this; _abort = false; _distance = 3; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby"); { _need = _x select 0; _distance = _x select 1; switch(_need) do{ case "fire": { _isNear = {inflamed _x} count (position player nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = "fire"; }; }; case "workshop": { _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = "workshop"; }; }; case "fueltank": { _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = "fuel tank"; }; }; }; } forEach _needNear; if ((_abort)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"];DZE_ActionInProgress = false;}; _classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; _require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require"); _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; _requireplot = DZE_requireplot; _isAllowedUnderGround = 1; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then {_lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable");}; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then {_requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot");}; 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 = 60; _needText = localize "str_epoch_player_246"; if(_isPole) then {_distance = 60;}; _findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance]; _findNearestPole = []; { if (alive _x) then { _findNearestPole set [(count _findNearestPole),_x]; }; } foreach _findNearestPoles; _IsNearPlot = count (_findNearestPole); if ((_isPole and _IsNearPlot > 0)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"];}; if ((_IsNearPlot == 0)||(!isNil "AM_Epoch_ADMIN_norestrict")) then { if(_requireplot == 0 or _isLandFireDZ) then { _canBuildOnPlot = true; }; } else { _nearestPole = _findNearestPole select 0; _ownerID = _nearestPole getVariable["CharacterID","0"]; if(dayz_characterID == _ownerID) then { if(!_isPole) then { _canBuildOnPlot = true; }; } else { if(!_isPole) then { _friendlies = player getVariable ["friendlyTo",[]]; if(_ownerID in _friendlies) then { _canBuildOnPlot = true; }; }; }; }; if ((!_canBuildOnPlot)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"];}; _missing = ""; _hasrequireditem = true; { _hastoolweapon = _x in weapons player; if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); } } forEach _require; _hasbuilditem = _this in magazines player; if ((!_hasbuilditem)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; systemChat format["%1 must be in your main inventory to %2 it.",_text,"build"]; }; if ((!_hasrequireditem)&&(isNil "AM_Epoch_ADMIN_norestrict")) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; systemChat format["Missing tool %1",_missing]; }; if ((_hasrequireditem)||(!isNil "AM_Epoch_ADMIN_norestrict")) then { _location = [0,0,0]; _timestartbuilding = time; _isOk = true; _location1 = getPosATL player; _dir = 0; _original_classname = _classname; if (_ghost != "") then { _classname = _ghost; }; _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _object attachTo [player,_offset]; _position = getPosATL _object; cutText ["Planning construction: PgUp = raise, PgDn = lower, Q or E = flip 180, and Space-Bar to build.", "PLAIN DOWN"]; _previewCounter = 150; SnappingOffset = _offset; SnappingDir = _dir; SnappingSpotMarkers = []; SnappingEnabled = true; SnappedOffsetZ = 0; SnappingResetPos = false; _snapper = [_object, _original_classname] spawn snap_object; _keyThrd = [] spawn snap_object2; first_build = nil; private ["_zheightchanged", "_zheightdirection", "_rotate"]; while {_isOk} do { if (isNil 'first_build') then {first_build=true;systemChat ("P"+"l"+"a"+"n"+"n"+"i"+"n"+"g"+" "+"c"+"o"+"n"+"s"+"t"+"r"+"u"+"c"+"t"+"i"+"o"+"n"+":"+" "+"P"+"g"+"U"+"p"+" "+"="+" "+"r"+"a"+"i"+"s"+"e"+","+" "+"P"+"g"+"D"+"n"+" "+"="+" "+"l"+"o"+"w"+"e"+"r"+","+" "+"Q"+" "+"o"+"r"+" "+"E"+" "+"="+" "+"f"+"l"+"i"+"p"+" "+"1"+"80"+","+" "+"S"+"p"+"a"+"c"+"e"+"-"+"B"+"a"+"r"+" "+"t"+"o"+" "+"s"+"t"+"a"+"r"+"t"+" "+"b"+"u"+"i"+"l"+"d"+"i"+"n"+"g"+","+" "+"E"+"N"+"D"+" "+"t"+"o"+" "+"s"+"t"+"o"+"p"+" "+"b"+"u"+"i"+"l"+"d"+"i"+"n"+"g"+"."+" "+"-"+" "+"W"+"r"+"i"+"t"+"t"+"e"+"n"+" "+"b"+"y"+" "+"D"+"a"+"m"+"i");}; if (isNil "CAKE") then { [] spawn { CAKE = true; cutText ["Planning construction: PgUp = raise, PgDn = lower, Q or E = flip 180, Space-Bar to start building, HOME to toggle snapping, END to stop building.", "PLAIN DOWN"]; sleep 2; CAKE = nil; }; }; _timeBuilding = time - _timestartbuilding; if (_timeBuilding > 150) exitWith { _isOk = false; _cancel = true; _reason = "Ran out of time to find position."; systemChat ("Building terminated..." + str _reason); detach _object; }; _lastLoop = time; waitUntil {((DZE_Q)||(DZE_Z)||(DZE_Q_alt)||(DZE_Z_alt)||(DZE_Q_ctrl)||(DZE_Z_ctrl)||(DZE_4)||(DZE_5)||(DZE_6)||(DZE_cancelBuilding)||((time - _lastLoop) > 5))}; _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 { DZE_4 = false; SnappingDir = 0; _rotate = true; }; if (DZE_6) then { DZE_6 = false; SnappingDir = 180; _rotate = true; }; if (_zheightchanged) then { if (_zheightdirection == "up") then { SnappingOffset set [2, ((SnappingOffset select 2) + 0.1)]; }; if (_zheightdirection == "down") then { SnappingOffset set [2, ((SnappingOffset select 2) - 0.1)]; }; if (_zheightdirection == "up_alt") then { SnappingOffset set [2, ((SnappingOffset select 2) + 1)]; }; if (_zheightdirection == "down_alt") then { SnappingOffset set [2, ((SnappingOffset select 2) - 1)]; }; if (_zheightdirection == "up_ctrl") then { SnappingOffset set [2, ((SnappingOffset select 2) + 0.01)]; }; if (_zheightdirection == "down_ctrl") then { SnappingOffset set [2, ((SnappingOffset select 2) - 0.01)]; }; }; if (_zheightchanged or _rotate) then { SnappingAttachedToPlayer = false; }; _location2 = getPosATL player; if (DZE_5) exitWith { _isOk = false; detach _object; _dir = getDir _object; _position = getPosATL _object; diag_log format["DEBUG BUILDING POS: %1", _position]; systemChat ("Preparing to build..."); }; if (DZE_togglesnap) then { DZE_togglesnap = false; if (SnappingEnabled) then { SnappingEnabled = false; SnappingAttachedToPlayer = false; _TXT = "Building snapping disabled."; systemChat ("Anti-Hack: "+STR _TXT+""); } else { SnappingEnabled = true; _TXT = "Building snapping enabled."; systemChat ("Anti-Hack: "+STR _TXT+""); }; }; if (DZE_cancelBuilding) exitWith { _isOk = false; _cancel = true; _reason = "Cancelled building."; systemChat ("Building terminated... REASON:" + str _reason); detach _object; }; if(_location1 distance _location2 > 5) exitWith { _isOk = false; _cancel = true; _reason = "Moving too fast."; systemChat ("Building terminated... REASON:" + str _reason); detach _object; }; if(_previewCounter <= 0) exitWith { _isOk = false; _cancel = true; _reason = "Ran out of time to find position."; systemChat ("Building terminated... REASON:" + str _reason); detach _object; }; _previewCounter = _previewCounter - 1; if (((SnappingOffset select 2) > 10) or ((SnappingOffset select 2) < -5)) exitWith { _isOk = false; _cancel = true; _reason = "Cannot move up more than 10 meters, or down less than -5 meters"; systemChat ("Building terminated... REASON:" + str _reason); detach _object; }; if (player getVariable["combattimeout", 0] >= time) exitWith { _isOk = false; _cancel = true; _reason = "Cannot build while in combat."; systemChat ("Building terminated... REASON:" + str _reason); detach _object; }; }; terminate _snapper; terminate _keyThrd; {deleteVehicle _x;} forEach SnappingSpotMarkers; SnappingSpotMarkers = []; if ((isOnRoad _position)&&(isNil "AM_Epoch_ADMIN_norestrict")&&(!DZE_BuildOnRoads)) then { _cancel = true; _reason = "Cannot build on a road."; }; if ((!canbuild)&&(isNil "AM_Epoch_ADMIN_norestrict")) then { _cancel = true; _reason = "Cannot build in a city."; }; if ((!placevault)&&(isNil "AM_Epoch_ADMIN_norestrict")) then { _cancel = true; _reason = "Cannot build in a city."; }; _position = getPosATL _object; _dir = getDir _object; deleteVehicle _object; if (!_cancel) then { _classname = _classnametmp; _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _tmpbuilt addEventHandler ["HandleDamage", {false}]; _tmpbuilt enableSimulation false; _tmpbuilt setdir _dir; if ((_classname in dami_indestructables)&&(getPlayerUID player in dami_indarra)) then { _tmpbuilt addEventHandler ["HandleDamage", {false}]; _tmpbuilt enableSimulation false; }; _location = _position; if((_isAllowedUnderGround == 0) and ((_location select 2) < 0)) then { _location set [2,0]; }; _tmpbuilt setPosATL _location; cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"]; systemChat format["Placing %1, move to cancel.",_text]; _limit = 3; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; _isOk = true; _proceed = false; _counter = 0; while {_isOk} do { if ((!isNil "AM_Epoch_ADMIN")||(getPlayerUID player in dami_instntbarra)) exitWith { _isOk = false; _proceed = true; systemChat ("Instant build!"); }; [10,10] call dayz_HungerThirst; player playActionNow "Medic"; _dis=20; _sfx = "repair"; [player,_sfx,0,false,_dis] call dayz_zombieSpeak; [player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then { _started = true; }; if (_started and !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; 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"]; systemChat format["Constructing %1 stage %2 of %3, move to cancel.",_text, _counter,_limit]; if(_counter == _limit) exitWith { _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,_item] call BIS_fnc_invRemove); if(_num_removed == 1) then { cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; systemChat format["You have constructed a %1",_text]; if (_isPole) then { [] spawn player_plotPreview; }; _tmpbuilt setVariable ["OEMPos",_location,true]; if(_lockable > 1) then { _combinationDisplay = ""; switch (_lockable) do { case 2: { // 2 lockbox _combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue _combination_2 = floor(random 10); _combination_3 = floor(random 10); _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; 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: { _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]; _combinationDisplay = _combination; }; case 4: { _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]; _combinationDisplay = _combination; }; }; _tmpbuilt setVariable ["CharacterID",_combination,true]; PVDZE_obj_Publish = [_combination,_tmpbuilt,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; systemChat format["You have setup your %2. Combination is %1",_combinationDisplay,_text]; } else { _tmpbuilt setVariable ["CharacterID",dayz_characterID,true]; if(_tmpbuilt isKindOf "Land_Fire") then { _tmpbuilt spawn player_fireMonitor; } else { PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; }; }; } else { deleteVehicle _tmpbuilt; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; systemChat ("Canceled building."); }; } 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"]; systemChat ("Canceled building."); }; } else { deleteVehicle _tmpbuilt; cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; systemChat format["Canceled construction of %1 %2.",_text,_reason]; }; }; DZE_ActionInProgress = false; Snappbuild : /* DayZ Base Building Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected]. */ /* Build Snapping - Extended v1.6 Idea and first code: Maca Reworked by: OtterNas3 01/11/2014 Last update 02/20/2014 */ private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_objHupDiff","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap"]; if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; }; DZE_ActionInProgress = true; // disallow building if too many objects are found within 30m if((count ((getPosATL player) nearObjects ["All",30])) >= DZE_BuildingLimit) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_41"), "PLAIN DOWN"];}; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _isWater = dayz_isSwimming; _cancel = false; _reason = ""; _canBuildOnPlot = false; _vehicle = vehicle player; _inVehicle = (_vehicle != player); DZE_Q = false; DZE_Z = false; DZE_Q_alt = false; DZE_Z_alt = false; DZE_Q_ctrl = false; DZE_Z_ctrl = false; DZE_5 = false; DZE_4 = false; DZE_6 = false; DZE_cancelBuilding = false; call gear_ui_init; closeDialog 1; if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];}; if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];}; if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];}; if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];}; _item = _this; // Need Near Requirements _abort = false; _distance = 3; _reason = ""; _needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "neednearby"); { switch(_x) do{ case "fire": { _isNear = {inflamed _x} count (getPosATL player nearObjects _distance); if(_isNear == 0) then { _abort = true; _reason = "fire"; }; }; case "workshop": { _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); if(_isNear == 0) then { _abort = true; _reason = "workshop"; }; }; case "fueltank": { _isNear = count (nearestObjects [player, dayz_fuelsources, _distance]); if(_isNear == 0) then { _abort = true; _reason = "fuel tank"; _distance = 30; }; }; }; } forEach _needNear; if(_abort) exitWith { cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"]; DZE_ActionInProgress = false; }; _classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create"); _classnametmp = _classname; _require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require"); _text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName"); _ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview"); _lockable = 0; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then { _lockable = getNumber(configFile >> "CfgVehicles" >> _classname >> "lockable"); }; _requireplot = DZE_requireplot; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then { _requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot"); }; _isAllowedUnderGround = 1; if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then { _isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground"); }; _offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset"); if((count _offset) <= 0) then { _offset = [0,1.5,0]; }; _isPole = (_classname == "Plastic_Pole_EP1_DZ"); _isLandFireDZ = (_classname == "Land_Fire_DZ"); _distance = DZE_PlotPole select 0; _needText = localize "str_epoch_player_246"; if(_isPole) then { _distance = DZE_PlotPole select 1; }; // check for near plot _findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance]; _findNearestPole = []; { if (alive _x) then { _findNearestPole set [(count _findNearestPole),_x]; }; } foreach _findNearestPoles; _IsNearPlot = count (_findNearestPole); // If item is plot pole and another one exists within 45m if(_isPole and _IsNearPlot > 0) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; }; if(_IsNearPlot == 0) then { // Allow building of plot if(_requireplot == 0 or _isLandFireDZ) then { _canBuildOnPlot = true; }; } else { // Since there are plots nearby we check for ownership and then for friend status // check nearby plots ownership and then for friend status _nearestPole = _findNearestPole select 0; // Find owner _ownerID = _nearestPole getVariable["CharacterID","0"]; // diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID]; // check if friendly to owner if(dayz_characterID == _ownerID) then { //Keep ownership // owner can build anything within his plot except other plots if(!_isPole) then { _canBuildOnPlot = true; }; } else { // disallow building plot if(!_isPole) then { _friendlies = player getVariable ["friendlyTo",[]]; // check if friendly to owner if(_ownerID in _friendlies) then { _canBuildOnPlot = true; }; }; }; }; // _message if(!_canBuildOnPlot) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "STR_EPOCH_PLAYER_135"),_needText,_distance] , "PLAIN DOWN"]; }; _missing = ""; _hasrequireditem = true; { _hastoolweapon = _x in weapons player; if(!_hastoolweapon) exitWith { _hasrequireditem = false; _missing = getText (configFile >> "cfgWeapons" >> _x >> "displayName"); } } forEach _require; _hasbuilditem = _this in magazines player; if (!_hasbuilditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; }; if (!_hasrequireditem) exitWith {DZE_ActionInProgress = false; cutText [format[(localize "str_epoch_player_137"),_missing] , "PLAIN DOWN"]; }; if (_hasrequireditem) then { _location = [0,0,0]; _isOk = true; // get inital players position _location1 = getPosATL player; _dir = getDir player; /* Commented out cause GHOST preview does not work with snapping! // if ghost preview available use that instead if (_ghost != "") then { _classname = _ghost; }; */ _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; _object setDir _dir; _object attachTo [player,_offset]; _position = getPosATL _object; cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"]; player allowDamage false; SnappingOffset = _offset; SnappingDir = 0; SnappingSpotMarkers = []; SnappingEnabled = false; SnappedOffsetZ = 0; SnappingResetPos = false; if (isClass (missionConfigFile >> "SnapPoints" >> _classname)) then { s_building_snapping = player addAction ["<t color="#0000ff"">Toggle Snapping</t>", "custom\snap_build\player_toggleSnapping.sqf",_classname, 3, true, false, "","]; }; _snapper = [_object, _classname] spawn snap_object; _key_monitor = [] spawn player_buildControls ; while {_isOk} do { sleep 1; _location2 = getPosATL player; if(DZE_5) exitWith { _isOk = false; detach _object; _dir = getDir _object; _position = getPosATL _object; }; if(_location1 distance _location2 > 5) exitWith { _isOk = false; _cancel = true; _reason = "You've moved to far away from where you started building (within 5 meters)"; detach _object; }; if(((SnappingOffset select 2) > 5) or ((SnappingOffset select 2) < -5)) exitWith { _isOk = false; _cancel = true; _reason = "Cannot move up or down more than 5 meters"; detach _object; }; if (player getVariable["combattimeout", 0] >= time) exitWith { _isOk = false; _cancel = true; _reason = (localize "str_epoch_player_43"); detach _object; }; if (DZE_cancelBuilding) exitWith { _isOk = false; _cancel = true; _reason = "Cancelled building."; detach _object; }; }; terminate _snapper; terminate _key_monitor; player removeAction s_building_snapping; player allowDamage true; //No building on roads unless toggled if (!DZE_BuildOnRoads) then { if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; }; }; // No building in trader zones if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; }; if(!_cancel) then { _classname = _classnametmp; _location = _position; if((_isAllowedUnderGround == 0) and ((_location select 2) < 0)) then { _location set [2,0]; }; _object setPosATL _location; cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"]; _limit = 3; if (DZE_StaticConstructionCount > 0) then { _limit = DZE_StaticConstructionCount; } else { if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then { _limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount"); }; }; _isOk = true; _proceed = false; _counter = 0; while {_isOk} do { [10,10] call dayz_HungerThirst; player playActionNow "Medic"; _dis=20; _sfx = "repair"; [player,_sfx,0,false,_dis] call dayz_zombieSpeak; [player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then { _started = true; }; if (_started and !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; sleep 0.1; }; r_doLoop = false; if(!_finished) exitWith { _isOk = false; _proceed = false; }; if(_finished) then { _counter = _counter + 1; }; cutText [format[(localize "str_epoch_player_139"),_text, _counter,_limit], "PLAIN DOWN"]; if(_counter == _limit) exitWith { _isOk = false; _proceed = true; }; }; if (_proceed) then { _num_removed = ([player,_item] call BIS_fnc_invRemove); if(_num_removed == 1) then { cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; if (_isPole) then { [] spawn player_plotPreview; }; _object setVariable ["OEMPos",_location,true]; if(_lockable > 1) then { _combinationDisplay = ""; switch (_lockable) do { case 2: { // 2 lockbox _combination_1 = (floor(random 3)) + 100; // 100=red,101=green,102=blue _combination_2 = floor(random 10); _combination_3 = floor(random 10); _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; dayz_combination = _combination; if (_combination_1 == 100) then { _combination_1_Display = "Red"; }; if (_combination_1 == 101) then { _combination_1_Display = "Green"; }; if (_combination_1 == 102) then { _combination_1_Display = "Blue"; }; _combinationDisplay = format["%1%2%3",_combination_1_Display,_combination_2,_combination_3]; }; case 3: { // 3 combolock _combination_1 = floor(random 10); _combination_2 = floor(random 10); _combination_3 = floor(random 10); _combination = format["%1%2%3",_combination_1,_combination_2,_combination_3]; dayz_combination = _combination; _combinationDisplay = _combination; }; case 4: { // 4 safe _combination_1 = floor(random 10); _combination_2 = floor(random 10); _combination_3 = floor(random 10); _combination_4 = floor(random 10); _combination = format["%1%2%3%4",_combination_1,_combination_2,_combination_3,_combination_4]; dayz_combination = _combination; _combinationDisplay = _combination; }; }; _object setVariable ["CharacterID",_combination,true]; PVDZE_obj_Publish = [_combination,_object,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; cutText [format[(localize "str_epoch_player_140"),_combinationDisplay,_text], "PLAIN DOWN", 5]; } else { _object setVariable ["CharacterID",dayz_characterID,true]; // fire? if(_object isKindOf "Land_Fire_DZ") then { _object spawn player_fireMonitor; } else { PVDZE_obj_Publish = [dayz_characterID,_object,[_dir,_location],_classname]; publicVariableServer "PVDZE_obj_Publish"; }; }; } else { deleteVehicle _object; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { r_interrupt = false; if (vehicle player == player) then { [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; deleteVehicle _object; cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"]; }; } else { deleteVehicle _object; cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"]; }; }; DZE_ActionInProgress = false; if someone could help me, i would greatly appreciate it ;) Thx, NorthyPark redcloud78 and ispan55 2 Link to comment Share on other sites More sharing options...
redcloud78 Posted March 5, 2014 Report Share Posted March 5, 2014 Had an idea don't flame if i am way off please How about join a server that has both build snapping and instant build working you would have downloaded the mission file upon entering right well find this mission file on your pc and examine it and repost here pls also if you know a way to remove building maintenace let me know pls Link to comment Share on other sites More sharing options...
NorthyPark Posted March 5, 2014 Author Report Share Posted March 5, 2014 Had an idea don't flame if i am way off please How about join a server that has both build snapping and instant build working you would have downloaded the mission file upon entering right well find this mission file on your pc and examine it and repost here pls also if you know a way to remove building maintenace let me know pls i have tried that a few times before, but no luck Link to comment Share on other sites More sharing options...
Randy the old farmer Posted March 5, 2014 Report Share Posted March 5, 2014 I just installed snap building and in my player_build.sqf in line 314 i got this: _limit = 1; Walls and stuff are done after one stage. Snap building works like it should. Link to comment Share on other sites More sharing options...
Shizweak Posted March 5, 2014 Report Share Posted March 5, 2014 Just install snap building into a fresh copy of player_build.sqf from the dayz_code pbo (easy enough), then change the following: _isOk = true; _proceed = true; _counter = 0; /* while {_isOk} do { [10,10] call dayz_HungerThirst; player playActionNow "Medic"; _dis=20; _sfx = "repair"; [player,_sfx,0,false,_dis] call dayz_zombieSpeak; [player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then { _started = true; }; if (_started and !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { r_doLoop = false; }; if (DZE_cancelBuilding) exitWith { r_doLoop = false; }; 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; }; }; */ All that does is set _proceed to true, and comments out the code that does the animation loop while constructing. I haven't tested this, but it should work fine. NorthyPark and redcloud78 2 Link to comment Share on other sites More sharing options...
NorthyPark Posted March 6, 2014 Author Report Share Posted March 6, 2014 Just install snap building into a fresh copy of player_build.sqf from the dayz_code pbo (easy enough), then change the following: I am gonna try it out now :) EDIT: Didn't work.. maybe you can give me your fresh player_build with build snapp? Link to comment Share on other sites More sharing options...
NorthyPark Posted March 6, 2014 Author Report Share Posted March 6, 2014 I just installed snap building and in my player_build.sqf in line 314 i got this: _limit = 1; Walls and stuff are done after one stage. Snap building works like it should. hmmm, ill try that if what Shizweak said doesn't work EDIT: hm, didn't work either... can you post ur player_build to? Link to comment Share on other sites More sharing options...
cen Posted March 6, 2014 Report Share Posted March 6, 2014 Add this to init.sqf: DZE_StaticConstructionCount = 1; NorthyPark and redcloud78 2 Link to comment Share on other sites More sharing options...
NorthyPark Posted March 6, 2014 Author Report Share Posted March 6, 2014 Add this to init.sqf: DZE_StaticConstructionCount = 1; Yes YES! Thx again :P ;) redcloud78 1 Link to comment Share on other sites More sharing options...
boneau Posted March 7, 2014 Report Share Posted March 7, 2014 is this possible for some UIDs only? so everyone is using the normal one but admins could use this instant building? Link to comment Share on other sites More sharing options...
NorthyPark Posted March 7, 2014 Author Report Share Posted March 7, 2014 is this possible for some UIDs only? so everyone is using the normal one but admins could use this instant building? Link to comment Share on other sites More sharing options...
boneau Posted March 7, 2014 Report Share Posted March 7, 2014 yeah thats sound in my ears =) Link to comment Share on other sites More sharing options...
monkeebhoy Posted March 7, 2014 Report Share Posted March 7, 2014 so adding DZE_StaticConstructionCount = 1; to the mission init? If so does it need to be in a specific place inside that? ie the bottom, under epoch_config Link to comment Share on other sites More sharing options...
NorthyPark Posted March 7, 2014 Author Report Share Posted March 7, 2014 so adding DZE_StaticConstructionCount = 1; to the mission init? If so does it need to be in a specific place inside that? ie the bottom, under epoch_config it has to be under the other configs aka under //Epoch config Link to comment Share on other sites More sharing options...
redcloud78 Posted March 7, 2014 Report Share Posted March 7, 2014 How about this too DZE_GodmodeBase = true; DZE_requireplot = 0; Link to comment Share on other sites More sharing options...
Mr. Snatchit Posted March 18, 2014 Report Share Posted March 18, 2014 DZE_StaticConstructionCount = 1 doesn't work for me Link to comment Share on other sites More sharing options...
redcloud78 Posted March 18, 2014 Report Share Posted March 18, 2014 DZE_StaticConstructionCount = 1 doesn't work for me Because your missing the semi colon DZE_StaticConstructionCount = 1; Link to comment Share on other sites More sharing options...
Mr. Snatchit Posted March 18, 2014 Report Share Posted March 18, 2014 Because your missing the semi colon DZE_StaticConstructionCount = 1; Sorry that was a type error, when i place it in my init with the simicolon, it doesn't work Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now