Jump to content

[RELEASE] Advanced Alchemical Crafting v3.3 UPDATED for 1.0.6.1


theduke

Recommended Posts

On 10/15/2017 at 5:20 PM, Erzengelgames said:

@theduke

you were right. is was not commanded yout. thanks for the hint. but is still not safeing ^^

try this for your custom_builds.sqf

Spoiler

/*
DayZ Custom Buildables
Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].

Edits by Mike of http://www.petuniaserver.com/ - Original file & all kudos to the EPOCH devs! http://www.dayzepoch.com
Edits and re-writes by hogscraper:
Added code to see if player has tools and materials required to build item
Removed a lot of code referencing lockables, plot pole placement and construction multiplier since part of that code was already removed
Cleaned up a lot of old code that wasn't needed any more for this custom crafting
Removed irrelevant variables from private block
This file is called with zero parameters
*/
private ["_AdminCraft","_HM_temp","_HT_temp","_IsNearPlot","_RM_temp","_RT_temp","_activatingPlayer","_buildcheck","_canBuild","_canBuildOnPlot","_canDo","_cancel","_charID","_classname","_counter","_dir","_distance","_exitWith","_found","_friendlies","_hasMaterials","_hasTools","_hasmaterials","_hastools","_helperColor","_inVehicle","_isAllowedUnderGround","_isOk","_isfriendly","_isowner","_lbIndex","_location","_location1","_location2","_mags","_message","_nearestPole","_needText","_objHDiff","_object","_objectHelper","_objectHelperDir","_objectHelperPos","_offset","_onLadder","_ownerID","_playerUID","_plotcheck","_position","_reason","_requiredmaterials","_requiredtools","_requireplot","_rotate","_text","_tmp_Pos","_tmpbuilt","_vehicle","_weaps","_zheightchanged","_zheightdirection"];

_AdminCraft=false;

_lbIndex = lbCurSel 3901;
_classname = lbText [3901,_lbIndex];

if(dayz_actionInProgress) exitWith { localize "str_epoch_player_40" call dayz_rollingMessages; };
dayz_actionInProgress = true;

_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_cancel = false;
_reason = "";
_canBuildOnPlot = false;
_playerUID = getPlayerUID player;

if(_playerUID in Admin_Crafting) then {
    _AdminCraft=true;
};

//create arrays for checking whether or not the player
//has the correct tools and materials to make the desired item
_requiredtools = getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredtools");
_requiredmaterials = getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredmaterials");
_RT_temp=getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredtools");
_RM_temp=getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredmaterials");
_hastools = false;
_hasmaterials = false;
_weaps=[];
_mags=[];

_weaps=weapons player;
_mags=magazines player;
_tmp_Pos=0;
_counter=0;

{
    _tmp_Pos= _weaps find _x;
    if (_tmp_Pos > -1) then {
        _requiredtools set [_counter,objNull];
        _weaps set [_tmp_Pos,objNull];
    };
    _counter = _counter + 1;
}
forEach _RT_temp;

_requiredtools=_requiredtools-[objNull];
_weaps=_weaps-[objNull];

_tmp_Pos=0;
_counter=0;
{
    _tmp_Pos= _mags find _x;
    if (_tmp_Pos > -1) then {
        _requiredmaterials set [_counter,objNull];
        _mags set [_tmp_Pos,objNull];
    };
    _counter = _counter + 1;
}
forEach _RM_temp;
_requiredmaterials=_requiredmaterials-[objNull];
_mags=_mags-[objNull];

if(((count _requiredmaterials) == 0) or (_AdminCraft)) then {
    _hasmaterials=true;
};
if(((count _requiredtools) == 0) or (_AdminCraft)) then {
    _hastools=true;
};

//Create the message to display if player is missing any of the required tools
if (!_hasTools) then{
    _HT_temp="You are missing the following tools:";
    {  
        _HT_temp=_HT_temp+" " + getText (configFile >> "CfgWeapons" >> _x >> "displayName");
    }foreach _requiredtools;
};

//Create the message to display if player is missing any of the required materials
if (!_hasMaterials) then{
    _HM_temp="You are missing the following materials:";
    {  
        if(getText (configFile >> "CfgMagazines" >> _x >> "displayName")=="Supply Crate") then{
            _HM_temp=_HM_temp+" " + getText (configFile >> "CfgMagazines" >> _x >> "descriptionShort");
        }else{
            _HM_temp=_HM_temp+" " + getText (configFile >> "CfgMagazines" >> _x >> "displayName");
        };
    }foreach _requiredmaterials;
};

_vehicle = vehicle player;
_inVehicle = (_vehicle != player);
helperDetach = false;
_canDo = (!r_drag_sqf and !r_player_unconscious);

DZE_Q = false;
DZE_Z = false;

DZE_Q_alt = false;
DZE_Z_alt = false;

DZE_Q_ctrl = false;
DZE_Z_ctrl = false;

DZE_5 = false;
DZE_4 = false;
DZE_6 = false;
DZE_F = false;

DZE_cancelBuilding = false;

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;};


if (!_hasTools) exitWith {dayz_actionInProgress = false; format["%1",_HT_temp] call dayz_rollingMessages;};
if (!_hasMaterials) exitWith {dayz_actionInProgress = false; format["%1",_HM_temp] call dayz_rollingMessages;};

_text =  getText (configFile >> "CfgVehicles" >> _classname >> "displayName");

_requireplot = DZE_requireplot;
if(isNumber (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requireplot")) then {
    _requireplot = getNumber(missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requireplot");
};
if(_AdminCraft) then {
    _requireplot=0;
};

_offset =  getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "offset");
if((count _offset) <= 0) then {
    _offset = [0,3,0];
};

_distance = DZE_PlotPole select 0;
_needText = localize "str_epoch_player_246";

_canBuild = false;
_nearestPole = objNull;
_ownerID = 0;
_friendlies = [];

_plotcheck = [player, false] call FNC_find_plots;
_distance = DZE_PlotPole select 0;

_IsNearPlot = _plotcheck select 1;
_nearestPole = _plotcheck select 2;

if (_IsNearPlot == 0) then {
    if (_requireplot == 0) then {
        _canBuild = true;
    } else {
        _exitWith = localize "STR_EPOCH_PLAYER_135";
    };
} else {
    _ownerID = _nearestPole getVariable["CharacterID","0"];
    if (dayz_characterID == _ownerID) then {
        _canBuild = true;
    } else {
        if (DZE_permanentPlot) then {
            _buildcheck = [player, _nearestPole] call FNC_check_access;
            _isowner = _buildcheck select 0;
            _isfriendly = ((_buildcheck select 1) or (_buildcheck select 3));
            if (_isowner || _isfriendly) then {
                _canBuild = true;
            } else {
                _exitWith = localize "STR_EPOCH_PLAYER_134";
            };
        } else {
            _friendlies    = player getVariable ["friendlyTo",[]];
            if (_ownerID in _friendlies) then {
                _canBuild = true;
            } else {
                _exitWith = localize "STR_EPOCH_PLAYER_134";
            };
        };
    };
};

// _message
if(!_canBuild) exitWith { dayz_actionInProgress = false; format[_exitWith,_needText,_distance] call dayz_rollingMessages; };

_location = [0,0,0];
_isOk = true;

// get inital players position
_location1 = getPosATL player;
_dir = getDir player;

_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
//Build gizmo
_objectHelper = "Sign_sphere10cm_EP1" createVehicle _location;
_helperColor = "#(argb,8,8,3)color(0,0,0,0,ca)";
_objectHelper setobjecttexture [0,_helperColor];
_objectHelper attachTo [player,_offset];
_object attachTo [_objectHelper,[0,0,0]];
_position = getPosATL _objectHelper;

if(_AdminCraft) then{
} else {
    {
        player removeMagazine _x;
    } foreach _RM_temp;
};

_position = getPosATL _object;
localize "str_epoch_player_45" call dayz_rollingMessages;
_objHDiff = 0;

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 (helperDetach) then {
            _dir = -45;
        } else {
            _dir = 180;
        };
    };
    if (DZE_6) then {
        _rotate = true;
        DZE_6 = false;
        if (helperDetach) then {
            _dir = 45;
        } else {
            _dir = 0;
        };
    };
    //Number keys above qwerty
    //1=turn clockwise 1/16th of a circle
    //2=detaches object from player - OBJECT MUST BE COMPLETELY ABOVE GROUND OR IT WILL DISAPPEAR!!
    //3=turn counter clockwise 1/16th of a circle
    if (AAC_1) then {
        _rotate = true;
        AAC_1 = false;
        if (helperDetach) then {
            _dir = -45;
        } else {
            _dir = _dir + 22.5;;
        };
    };

    if (AAC_3) then {
        _rotate = true;
        AAC_3 = false;
        if (helperDetach) then {
            _dir = -45;
        } else {
            _dir = _dir - 22.5;
        };
    };
    
    if (DZE_F and _canDo) then {   
        if (helperDetach) then {
            _objectHelperDir = getDir _objectHelper;
            _objectHelper attachTo [player];
            _objectHelper setDir _objectHelperDir-(getDir player);
            helperDetach = false;
        } else {
            _objectHelperPos = getPosATL _objectHelper;
            detach _objectHelper;                  
            _objectHelper setPosATL _objectHelperPos;
            _objectHelperDir = getDir _objectHelper;
            _objectHelper setVelocity [0,0,0]; //fix sliding glitch
            helperDetach = true;
        };
        DZE_F = false;
    };

    if(_rotate) then {
        if (helperDetach) then {
            _objectHelperDir = getDir _objectHelper;
            _objectHelperPos = getPosATL _objectHelper;
            _objectHelper setDir _objectHelperDir+_dir;
            _objectHelper setPosATL _objectHelperPos;
        } else {
            _objectHelper setDir _dir;
            _objectHelper setPosATL _position;
            //diag_log format["DEBUG Rotate BUILDING POS: %1", _position];                 
        };

    };

    if(_zheightchanged) then {
        if (!helperDetach) then {
            detach _objectHelper;
        };

        _position = getPosATL _objectHelper;

        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;
        };

        _objectHelper setDir (getDir _objectHelper);
        
        _objectHelper setPosATL _position;

        //diag_log format["DEBUG Change BUILDING POS: %1", _position];

        if (!helperDetach) then {
            _objectHelper attachTo [player];
        };
    };


    sleep 0.5;

    _location2 = getPosATL player;

    if(DZE_5) exitWith {
        _isOk = false;
        detach _object;
        _dir = getDir _object;
        _position = getPosATL _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(abs(_objHDiff) > 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 (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;
    };
};

if (!DZE_BuildOnRoads) then {
    if (isOnRoad _position) then { _cancel = true; _reason = localize "STR_EPOCH_BUILD_FAIL_ROAD"; };
};
if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; };

if(!_cancel) then {

    // Start Build
    _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

    _tmpbuilt setdir _dir;

    // Get position based on object
    _location = _position;

    _tmpbuilt setPosATL _location;

    format[localize "str_epoch_player_138",_text] call dayz_rollingMessages;

    player playActionNow "Medic";
    [player,"repair",0,false,10] call dayz_zombieSpeak;
    [player,10,true,(getPosATL player)] spawn player_alertZombies;

    format[localize "str_build_01",_text] call dayz_rollingMessages;

    _tmpbuilt setVariable ["OEMPos",_location,true];
    _tmpbuilt setVariable ["CharacterID",dayz_characterID,true];
    _tmpbuilt setVariable ["ownerPUID",_playerUID,true];
    _charID = dayz_characterID;
    _activatingPlayer = player;

    PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_playerUID],_classname];
    publicVariableServer "PVDZ_obj_Publish";

    "Your build was successful!" call dayz_rollingMessages;

    player reveal _tmpbuilt;
    dayz_actionInProgress = false;
    
    processInitCommands;

} else {
    format[localize "str_epoch_player_47",_text,_reason] call dayz_rollingMessages;
    dayz_actionInProgress = false;
    if(_AdminCraft) then {
    } else {
        {
            //Since player had items removed we need to give them back
            player addMagazine _x;
        } foreach _RM_temp;
    };
};

dayz_actionInProgress = false;

 

You are using a outdated file. If what i just pasted doesnt work.  I would suggest to re-download from my github. NOT from the link in my post.

Link to comment
Share on other sites

1 hour ago, theduke said:

try this for your custom_builds.sqf

  Hide contents

/*
DayZ Custom Buildables
Made for DayZ Epoch please ask permission to use/edit/distrubute email [email protected].

Edits by Mike of http://www.petuniaserver.com/ - Original file & all kudos to the EPOCH devs! http://www.dayzepoch.com
Edits and re-writes by hogscraper:
Added code to see if player has tools and materials required to build item
Removed a lot of code referencing lockables, plot pole placement and construction multiplier since part of that code was already removed
Cleaned up a lot of old code that wasn't needed any more for this custom crafting
Removed irrelevant variables from private block
This file is called with zero parameters
*/
private ["_AdminCraft","_HM_temp","_HT_temp","_IsNearPlot","_RM_temp","_RT_temp","_activatingPlayer","_buildcheck","_canBuild","_canBuildOnPlot","_canDo","_cancel","_charID","_classname","_counter","_dir","_distance","_exitWith","_found","_friendlies","_hasMaterials","_hasTools","_hasmaterials","_hastools","_helperColor","_inVehicle","_isAllowedUnderGround","_isOk","_isfriendly","_isowner","_lbIndex","_location","_location1","_location2","_mags","_message","_nearestPole","_needText","_objHDiff","_object","_objectHelper","_objectHelperDir","_objectHelperPos","_offset","_onLadder","_ownerID","_playerUID","_plotcheck","_position","_reason","_requiredmaterials","_requiredtools","_requireplot","_rotate","_text","_tmp_Pos","_tmpbuilt","_vehicle","_weaps","_zheightchanged","_zheightdirection"];

_AdminCraft=false;

_lbIndex = lbCurSel 3901;
_classname = lbText [3901,_lbIndex];

if(dayz_actionInProgress) exitWith { localize "str_epoch_player_40" call dayz_rollingMessages; };
dayz_actionInProgress = true;

_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_cancel = false;
_reason = "";
_canBuildOnPlot = false;
_playerUID = getPlayerUID player;

if(_playerUID in Admin_Crafting) then {
    _AdminCraft=true;
};

//create arrays for checking whether or not the player
//has the correct tools and materials to make the desired item
_requiredtools = getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredtools");
_requiredmaterials = getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredmaterials");
_RT_temp=getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredtools");
_RM_temp=getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requiredmaterials");
_hastools = false;
_hasmaterials = false;
_weaps=[];
_mags=[];

_weaps=weapons player;
_mags=magazines player;
_tmp_Pos=0;
_counter=0;

{
    _tmp_Pos= _weaps find _x;
    if (_tmp_Pos > -1) then {
        _requiredtools set [_counter,objNull];
        _weaps set [_tmp_Pos,objNull];
    };
    _counter = _counter + 1;
}
forEach _RT_temp;

_requiredtools=_requiredtools-[objNull];
_weaps=_weaps-[objNull];

_tmp_Pos=0;
_counter=0;
{
    _tmp_Pos= _mags find _x;
    if (_tmp_Pos > -1) then {
        _requiredmaterials set [_counter,objNull];
        _mags set [_tmp_Pos,objNull];
    };
    _counter = _counter + 1;
}
forEach _RM_temp;
_requiredmaterials=_requiredmaterials-[objNull];
_mags=_mags-[objNull];

if(((count _requiredmaterials) == 0) or (_AdminCraft)) then {
    _hasmaterials=true;
};
if(((count _requiredtools) == 0) or (_AdminCraft)) then {
    _hastools=true;
};

//Create the message to display if player is missing any of the required tools
if (!_hasTools) then{
    _HT_temp="You are missing the following tools:";
    {  
        _HT_temp=_HT_temp+" " + getText (configFile >> "CfgWeapons" >> _x >> "displayName");
    }foreach _requiredtools;
};

//Create the message to display if player is missing any of the required materials
if (!_hasMaterials) then{
    _HM_temp="You are missing the following materials:";
    {  
        if(getText (configFile >> "CfgMagazines" >> _x >> "displayName")=="Supply Crate") then{
            _HM_temp=_HM_temp+" " + getText (configFile >> "CfgMagazines" >> _x >> "descriptionShort");
        }else{
            _HM_temp=_HM_temp+" " + getText (configFile >> "CfgMagazines" >> _x >> "displayName");
        };
    }foreach _requiredmaterials;
};

_vehicle = vehicle player;
_inVehicle = (_vehicle != player);
helperDetach = false;
_canDo = (!r_drag_sqf and !r_player_unconscious);

DZE_Q = false;
DZE_Z = false;

DZE_Q_alt = false;
DZE_Z_alt = false;

DZE_Q_ctrl = false;
DZE_Z_ctrl = false;

DZE_5 = false;
DZE_4 = false;
DZE_6 = false;
DZE_F = false;

DZE_cancelBuilding = false;

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;};


if (!_hasTools) exitWith {dayz_actionInProgress = false; format["%1",_HT_temp] call dayz_rollingMessages;};
if (!_hasMaterials) exitWith {dayz_actionInProgress = false; format["%1",_HM_temp] call dayz_rollingMessages;};

_text =  getText (configFile >> "CfgVehicles" >> _classname >> "displayName");

_requireplot = DZE_requireplot;
if(isNumber (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requireplot")) then {
    _requireplot = getNumber(missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "requireplot");
};
if(_AdminCraft) then {
    _requireplot=0;
};

_offset =  getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _classname >> "offset");
if((count _offset) <= 0) then {
    _offset = [0,3,0];
};

_distance = DZE_PlotPole select 0;
_needText = localize "str_epoch_player_246";

_canBuild = false;
_nearestPole = objNull;
_ownerID = 0;
_friendlies = [];

_plotcheck = [player, false] call FNC_find_plots;
_distance = DZE_PlotPole select 0;

_IsNearPlot = _plotcheck select 1;
_nearestPole = _plotcheck select 2;

if (_IsNearPlot == 0) then {
    if (_requireplot == 0) then {
        _canBuild = true;
    } else {
        _exitWith = localize "STR_EPOCH_PLAYER_135";
    };
} else {
    _ownerID = _nearestPole getVariable["CharacterID","0"];
    if (dayz_characterID == _ownerID) then {
        _canBuild = true;
    } else {
        if (DZE_permanentPlot) then {
            _buildcheck = [player, _nearestPole] call FNC_check_access;
            _isowner = _buildcheck select 0;
            _isfriendly = ((_buildcheck select 1) or (_buildcheck select 3));
            if (_isowner || _isfriendly) then {
                _canBuild = true;
            } else {
                _exitWith = localize "STR_EPOCH_PLAYER_134";
            };
        } else {
            _friendlies    = player getVariable ["friendlyTo",[]];
            if (_ownerID in _friendlies) then {
                _canBuild = true;
            } else {
                _exitWith = localize "STR_EPOCH_PLAYER_134";
            };
        };
    };
};

// _message
if(!_canBuild) exitWith { dayz_actionInProgress = false; format[_exitWith,_needText,_distance] call dayz_rollingMessages; };

_location = [0,0,0];
_isOk = true;

// get inital players position
_location1 = getPosATL player;
_dir = getDir player;

_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
//Build gizmo
_objectHelper = "Sign_sphere10cm_EP1" createVehicle _location;
_helperColor = "#(argb,8,8,3)color(0,0,0,0,ca)";
_objectHelper setobjecttexture [0,_helperColor];
_objectHelper attachTo [player,_offset];
_object attachTo [_objectHelper,[0,0,0]];
_position = getPosATL _objectHelper;

if(_AdminCraft) then{
} else {
    {
        player removeMagazine _x;
    } foreach _RM_temp;
};

_position = getPosATL _object;
localize "str_epoch_player_45" call dayz_rollingMessages;
_objHDiff = 0;

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 (helperDetach) then {
            _dir = -45;
        } else {
            _dir = 180;
        };
    };
    if (DZE_6) then {
        _rotate = true;
        DZE_6 = false;
        if (helperDetach) then {
            _dir = 45;
        } else {
            _dir = 0;
        };
    };
    //Number keys above qwerty
    //1=turn clockwise 1/16th of a circle
    //2=detaches object from player - OBJECT MUST BE COMPLETELY ABOVE GROUND OR IT WILL DISAPPEAR!!
    //3=turn counter clockwise 1/16th of a circle
    if (AAC_1) then {
        _rotate = true;
        AAC_1 = false;
        if (helperDetach) then {
            _dir = -45;
        } else {
            _dir = _dir + 22.5;;
        };
    };

    if (AAC_3) then {
        _rotate = true;
        AAC_3 = false;
        if (helperDetach) then {
            _dir = -45;
        } else {
            _dir = _dir - 22.5;
        };
    };
    
    if (DZE_F and _canDo) then {   
        if (helperDetach) then {
            _objectHelperDir = getDir _objectHelper;
            _objectHelper attachTo [player];
            _objectHelper setDir _objectHelperDir-(getDir player);
            helperDetach = false;
        } else {
            _objectHelperPos = getPosATL _objectHelper;
            detach _objectHelper;                  
            _objectHelper setPosATL _objectHelperPos;
            _objectHelperDir = getDir _objectHelper;
            _objectHelper setVelocity [0,0,0]; //fix sliding glitch
            helperDetach = true;
        };
        DZE_F = false;
    };

    if(_rotate) then {
        if (helperDetach) then {
            _objectHelperDir = getDir _objectHelper;
            _objectHelperPos = getPosATL _objectHelper;
            _objectHelper setDir _objectHelperDir+_dir;
            _objectHelper setPosATL _objectHelperPos;
        } else {
            _objectHelper setDir _dir;
            _objectHelper setPosATL _position;
            //diag_log format["DEBUG Rotate BUILDING POS: %1", _position];                 
        };

    };

    if(_zheightchanged) then {
        if (!helperDetach) then {
            detach _objectHelper;
        };

        _position = getPosATL _objectHelper;

        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;
        };

        _objectHelper setDir (getDir _objectHelper);
        
        _objectHelper setPosATL _position;

        //diag_log format["DEBUG Change BUILDING POS: %1", _position];

        if (!helperDetach) then {
            _objectHelper attachTo [player];
        };
    };


    sleep 0.5;

    _location2 = getPosATL player;

    if(DZE_5) exitWith {
        _isOk = false;
        detach _object;
        _dir = getDir _object;
        _position = getPosATL _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(abs(_objHDiff) > 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 (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;
    };
};

if (!DZE_BuildOnRoads) then {
    if (isOnRoad _position) then { _cancel = true; _reason = localize "STR_EPOCH_BUILD_FAIL_ROAD"; };
};
if(!canbuild) then { _cancel = true; _reason = format[localize "STR_EPOCH_PLAYER_136",localize "STR_EPOCH_TRADER"]; };

if(!_cancel) then {

    // Start Build
    _tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

    _tmpbuilt setdir _dir;

    // Get position based on object
    _location = _position;

    _tmpbuilt setPosATL _location;

    format[localize "str_epoch_player_138",_text] call dayz_rollingMessages;

    player playActionNow "Medic";
    [player,"repair",0,false,10] call dayz_zombieSpeak;
    [player,10,true,(getPosATL player)] spawn player_alertZombies;

    format[localize "str_build_01",_text] call dayz_rollingMessages;

    _tmpbuilt setVariable ["OEMPos",_location,true];
    _tmpbuilt setVariable ["CharacterID",dayz_characterID,true];
    _tmpbuilt setVariable ["ownerPUID",_playerUID,true];
    _charID = dayz_characterID;
    _activatingPlayer = player;

    PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_playerUID],_classname];
    publicVariableServer "PVDZ_obj_Publish";

    "Your build was successful!" call dayz_rollingMessages;

    player reveal _tmpbuilt;
    dayz_actionInProgress = false;
    
    processInitCommands;

} else {
    format[localize "str_epoch_player_47",_text,_reason] call dayz_rollingMessages;
    dayz_actionInProgress = false;
    if(_AdminCraft) then {
    } else {
        {
            //Since player had items removed we need to give them back
            player addMagazine _x;
        } foreach _RM_temp;
    };
};

dayz_actionInProgress = false;

 

You are using a outdated file. If what i just pasted doesnt work.  I would suggest to re-download from my github. NOT from the link in my post.

fuuuck yeah ! you fixed it. love so much ^^

Link to comment
Share on other sites

  • 2 weeks later...

I've made it to show displayName instead of classname for required tools and materials 

changes are 2 lines added  in Crafting_Compiles.sqf :

Spoiler

//player_selectSlot = compile preprocessFileLineNumbers "custom\Buildables\ui_selectSlot.sqf";
//fnc_usec_selfActions = compile preprocessFileLineNumbers "custom\fn_selfActions.sqf"; 

fnc_Load_Mats_and_Tools = {
//5900-5903 tools
//6901-6912 materials
ctrlSetText [5900,""];
ctrlSetText [5901,""];
ctrlSetText [5902,""];
ctrlSetText [5903,""];

ctrlSetText [6900,""];
ctrlSetText [6901,""];
ctrlSetText [6902,""];
ctrlSetText [6903,""];
ctrlSetText [6904,""];
ctrlSetText [6905,""];
ctrlSetText [6906,""];
ctrlSetText [6907,""];
ctrlSetText [6908,""];
ctrlSetText [6909,""];
ctrlSetText [6910,""];
ctrlSetText [6911,""];

_lbIndex=lbCurSel 3901;
_lbText=lbText [3901,_lbIndex];

_toolTmp = "";
_weaps = weapons player;
_requiredtools = getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _lbText >> "requiredtools");
_craftdialog = uiNamespace getVariable "Advanced_CraftingV";
_counter=0;

while {count _requiredtools > 0} do { 
_toolTmp = _requiredtools select 0;
_tmp_Pos=_weaps find _toolTmp;
_toolTmp = getText (configFile >> "CfgWeapons" >> _toolTmp >> "displayName");
switch (_counter) do {
case 0: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 5900) ctrlSetTextColor [0.2,0.839,0.2,1];
_weaps set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 5900) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [5900,_toolTmp];
};
case 1: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 5901) ctrlSetTextColor [0.2,0.839,0.2,1];
_weaps set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 5901) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [5901,_toolTmp];
};
case 2: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 5902) ctrlSetTextColor [0.2,0.839,0.2,1];
_weaps set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 5902) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [5902,_toolTmp];
};
case 3: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 5903) ctrlSetTextColor [0.2,0.839,0.2,1];
_weaps set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 5903) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [5903,_toolTmp];
};
default {};
};
_requiredtools set [0,objNull];
_requiredtools=_requiredtools-[objNull];
_weaps = _weaps-[objNull];
_counter=_counter + 1;
};


_materialTmp = "";
_mags = magazines player;
_requiredmaterials = getArray (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult >> _lbText >> "requiredmaterials");
_counter=0;

while{count _requiredmaterials>0} do { 

_materialTmp = _requiredmaterials select 0;
_tmp_Pos=_mags find _materialTmp;
_materialTmp = getText(configFile >> "cfgMagazines" >> _materialTmp >> "displayName");
switch (_counter) do {
case 0: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6900) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6900) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6900,_materialTmp];
};
case 1: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6901) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6901) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6901,_materialTmp];
};
case 2: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6902) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6902) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6902,_materialTmp];
};
case 3: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6903) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6903) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6903,_materialTmp];
};
case 4: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6904) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6904) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6904,_materialTmp];
};
case 5: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6905) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6905) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6905,_materialTmp];
};
case 6: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6906) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6906) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6906,_materialTmp];
};
case 7: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6907) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6907) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6907,_materialTmp];
};
case 8: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6908) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6908) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6908,_materialTmp];
};
case 9: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6909) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6909) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6909,_materialTmp];
};
case 10: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6910) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6910) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6910,_materialTmp];
};
case 11: 
{
if (_tmp_Pos > -1) then {
(_craftdialog displayCtrl 6911) ctrlSetTextColor [0.2,0.839,0.2,1];
_mags set [_tmp_Pos,objNull];
} else {
(_craftdialog displayCtrl 6911) ctrlSetTextColor [1,0.278,0.278,1];
};
ctrlSetText [6911,_materialTmp];
};

default {};
};
_requiredmaterials set [0,objNull];
_requiredmaterials=_requiredmaterials-[objNull];
_mags=_mags-[objNull];
_counter=_counter + 1;
}; 

};

fnc_Load_Items = {
_itemsBox = 3901;
lbClear _itemsBox;
_cmbArray=[];
_cmbType=[];
_cmbType = (missionConfigFile >> "Custom_Buildables" >> "Buildables" >> ComboBoxResult); 
for "_i" from 0 to ( count _cmbType ) -1 do 

    _entry = _cmbType select _i; 
    if( isClass _entry ) then 
    { 
        _class = configName _entry; 
        _cmbArray set [count _cmbArray, _class]; 
        }; 
    }; 
//Add to Shelf
{lbAdd [_itemsbox, _x]} forEach _cmbArray;
//_count= count _cmbArray;
//diag_log format ["%1",_cmbArray];
//diag_log format ["%1",_count];
GlobalComboboxVariable=99;
};

 

 

Link to comment
Share on other sites

  • 1 month later...
On 10/10/2017 at 11:29 AM, Erzengelgames said:

hey, to get db safe working i ented all classnames to DayZ_SafeObjects like this

  Reveal hidden contents


DayZ_SafeObjects = ["ASC_EU_BulbBLUP","ASC_EU_BulbGRNP","ASC_EU_LHVIndE","ASC_EU_LHVIndB","LAND_ASC_Wall_Lamp_New","LAND_ASC_Wall_Lamp_Old","LAND_ASC_runway_Bluelight","ASC_runway_BluelightB","MAP_b_betulaHumilis","MAP_b_canina2s","MAP_c_autumn_flowers","MAP_c_blueBerry","MAP_c_caluna","MAP_c_fern","MAP_c_fernTall","MAP_c_GrassCrookedForest","MAP_c_GrassCrookedGreen","MAP_c_GrassDryLong","MAP_c_GrassTall","MAP_c_leaves","MAP_c_MushroomBabka","MAP_c_MushroomHorcak","MAP_c_MushroomMuchomurka","MAP_c_MushroomPrasivky","MAP_c_picea","MAP_c_PlantsAutumnForest","MAP_c_raspBerry","MAP_C_SmallLeafPlant","MAP_c_wideLeafPlant","MAP_t_alnus2s","MAP_t_betula1f","MAP_t_betula2s","MAP_t_betula2w","MAP_t_fagus2s","MAP_t_acer2s","MAP_t_betula2f","MAP_t_carpinus2s","MAP_t_fagus2f","MAP_t_fraxinus2s","Land_Misc_Well_C_EP1","Bleacher_EP1","Land_Bench_EP1","Land_Cabinet_EP1","Land_Chest_EP1","MAP_almara","MAP_case_a","MAP_case_bedroom_a","MAP_case_bedroom_b","MAP_case_cans_b","MAP_case_d","MAP_case_wall_unit_part_c","MAP_case_wall_unit_part_d","MAP_case_wooden_b","MAP_Dhangar_borwnskrin","MAP_Dhangar_brownskrin","FoldChair","Land_Chair_EP1","MAP_armchair","FoldTable","Land_Table_EP1","Land_Table_small_EP1","Hhedgehog_concrete","Hhedgehog_concreteBig","Base_WarfareBBarrier10xTall","Fence_corrugated_plate","Fence_Ind_long","Land_CncBlock","Land_CncBlock_D","Land_CncBlock_Stripes","Land_fort_artillery_nest_EP1","Land_fort_rampart_EP1","MAP_Barbedwire","MAP_BarbGate","MAP_concrete_block","MAP_Concrete_Ramp","MAP_dragonTeeth","MAP_dragonTeethBig","MAP_fort_artillery_nest","MAP_fort_rampart","MAP_Fort_Razorwire","MAP_HBarrier5_round15","MAP_plot_provizorni","MAP_prebehlavka","Land_Fort_Watchtower_EP1","MAP_fort_watchtower","CDF_WarfareBBarracks","USMC_WarfareBBarracks","MAP_fortified_nest_big","MAP_vez","CDF_WarfareBFieldhHospital","MAP_MASH","MAP_Stan","MAP_Stan_east","MAP_tent_east","MAP_tent_small_west","MAP_tent_west","MAP_tent2_west","USMC_WarfareBFieldhHospital","MAP_fortified_nest_small","MAP_Pristresek_mensi","MAP_Mil_Mil_Guardhouse","MAP_GuardShed","MAP_Fortress_02","MAP_Fortress_01","WarfareBDepot","MAP_prolejzacka","MAP_ramp_concrete","MAP_woodenRamp","MAP_obstacle_get_over","MAP_obstacle_prone","MAP_obstacle_run_duck","MAP_kitchen_table_a","MAP_lobby_table","MAP_SmallTable","MAP_stul_hospoda","MAP_stul_kuch1","MAP_Table","MAP_table_drawer","Land_Rack_EP1","Land_Shelf_EP1","MAP_case_d","MAP_case_wall_unit_part_c","MAP_case_wall_unit_part_d","MAP_F_skrin_bar","MAP_Skrin_bar","MAP_library_a","Desk","MAP_conference_table_a","MAP_Dhangar_psacistul","MAP_office_table_a","MAP_ch_mod_c","MAP_ch_mod_h","MAP_ch_office_B","MAP_F_ch_mod_c","MAP_chair","MAP_kitchen_chair_a","MAP_lobby_chair","MAP_office_chair","WoodChair","MAP_Dhangar_knihovna","MAP_Dhangar_whiteskrin","MAP_library_a","MAP_shelf","MAP_Skrin_bar","MAP_Skrin_opalena","MAP_Truhla_stara","MAP_Church_chair","MAP_hospital_bench","MAP_lavicka_1","MAP_lavicka_2","MAP_lavicka_3","MAP_lavicka_4","MAP_bed_husbands","MAP_F_postel_manz_kov","MAP_F_postel_panelak2","MAP_F_Vojenska_palanda","MAP_postel_manz_kov","MAP_postel_panelak1","MAP_vojenska_palanda","Land_Misc_Well_L_EP1","MAP_Misc_Well","MAP_Misc_WellPump","MAP_pumpa","MAP_t_larix3f","MAP_t_larix3s","MAP_t_picea2s","Hanged","Hanged_MD","Body","GraveCross1","GraveCross2","GraveCrossHelmet","Mass_grave","MAP_t_picea3f","MAP_t_pinusN2s","MAP_t_pinusS2f","MAP_t_populus3s","MAP_t_quercus2f","MAP_t_quercus3s","MAP_t_fagus2W","MAP_t_fraxinus2W","MAP_t_malus1s","MAP_t_picea1s","MAP_t_pinusN1s","MAP_t_pyrus2s","MAP_t_salix2s","MAP_t_sorbus2s","MAP_flower_01","MAP_flower_02","MAP_p_articum","MAP_p_carduus","MAP_p_Helianthus","MAP_p_heracleum","MAP_p_Phragmites","MAP_p_urtica","MAP_pumpkin","MAP_pumpkin2","MAP_b_corylus","MAP_b_corylus2s","MAP_b_craet1","MAP_b_craet2","MAP_b_pmugo","MAP_b_prunus","MAP_b_salix2s","MAP_b_sambucus","LAND_ASC_runway_Yellowlight","ASC_runway_YellowlightB","MAP_fluor_lamp","MAP_lantern","MAP_Light_BathRoom","MAP_light_kitchen_03","Misc_Wall_lamp","Red_Light_Blinking_EP1","ASC_EU_LHVIndZ","ASC_EU_LHVInd","ASC_EU_LHV_lampa_sidlconc","ASC_EU_LHVSidl3","ASC_EU_LHVSidl2","ASC_EU_LHVSidl1","ASC_EU_LHVStre2","ASC_EU_LHVStre1","ASC_EU_LHVOld","ASC_EU_BulbPURP","ASC_EU_BulbREDP","ASC_EU_BulbYELP","ASC_EU_BulbBLUB","ASC_EU_BulbGRNB","ASC_EU_BulbPURB","ASC_EU_BulbREDB","ASC_EU_BulbYELB","Land_Ind_TankSmall","Land_Misc_ConcBox_EP1","MAP_AirCond_big","MAP_AirCond_small","MAP_AirCondition_A","MAP_AirCondition_B","MAP_antenna_big_roof","MAP_antenna_small_roof","MAP_antenna_small_roof_1","MAP_bouda_plech","MAP_drevo_hromada","MAP_kasna_new","MAP_kulna","MAP_Misc_Greenhouse","MAP_Misc_Hutch","MAP_PowerGenerator","Pile_of_wood","MAP_Misc_WoodPile","MAP_Ladder","MAP_P_Ladder","Axe_woodblock","Garbage_can","Garbage_container","MAP_popelnice","Haystack_small","Land_cages_EP1","Land_Campfire_burning","Land_transport_cart_EP1","MAP_ChickenCoop","MAP_fire","MAP_GasMeterExt","MAP_KBud","MAP_Misc_Boogieman","MAP_Misc_loudspeakers","MAP_Misc_PostBox","MAP_leseni2x","Land_covering_hut_EP1","Land_covering_hut_big_EP1","Land_Market_shelter_EP1","Land_sunshade_EP1","MAP_Camo_Box","MAP_CamoNet_EAST","MAP_CamoNet_EAST_var1","MAP_CamoNetB_EAST","MAP_CamoNet_NATO","MAP_CamoNet_NATO_var1","MAP_CamoNetB_NATO","MAP_Pristresek","MAP_stanek_3","MAP_stanek_3B","MAP_stanek_3_d","MAP_leseni4x","MAP_Misc_Scaffolding","MAP_parabola_big","MAP_phone_box","MAP_psi_bouda","MAP_snowman","MAP_Sphere","MAP_Sphere2","MAP_Toilet","MAP_Piskoviste","MAP_Houpacka","MAP_brana","MAP_LadderHalf","MAP_P_LadderLong","Land_Ind_BoardsPack1","Land_Ind_BoardsPack2","Land_Misc_Coil_EP1","Land_Misc_ConcOutlet_EP1","Land_Misc_ConcPipeline_EP1","Land_Misc_GContainer_Big","Land_Wheel_cart_EP1","MAP_P_cihly1","MAP_P_cihly2","MAP_P_cihly3","MAP_P_cihly4","MAP_P_pipe_big","MAP_P_pipe_small","MAP_P_ytong","MAP_paletaA","MAP_paletyC","MAP_paletyD","MAP_Pallets_Column","MAP_Misc_G_Pipes","MAP_Misc_palletsfoiled","MAP_Misc_palletsfoiled_heap","Misc_concrete","MAP_Ind_Timbers","MAP_P_Stavebni_kozy","MAP_P_bedna","MAP_garbage_misc","MAP_garbage_paleta","MAP_Misc_TyreHeap","MAP_pneu","Land_Crates_EP1","Land_Misc_Cargo1E_EP1","Land_Misc_Cargo1Eo_EP1","Land_Misc_Cargo2E","Land_Misc_Cargo2E_EP1","Land_transport_crates_EP1","MAP_drevena_bedna","MAP_metalcrate","MAP_metalcrate_02","MAP_Misc_cargo_cont_net1","MAP_Misc_cargo_cont_net2","MAP_Misc_cargo_cont_net3","MAP_Misc_cargo_cont_small","MAP_Misc_cargo_cont_small2","MAP_Misc_cargo_cont_tiny","Misc_Cargo1B_military","MAP_Barel1","MAP_Barel3","MAP_Barel4","MAP_Barel5","MAP_Barel6","MAP_Barel7","MAP_Barel8","MAP_Barels","MAP_Barels2","MAP_Barels3","MAP_barrel_empty","MAP_barrel_sand","MAP_barrel_water","MAP_nastenka2","MAP_nastenkaX","MAP_obraz_kancl4","MAP_picture_a","MAP_picture_a_02","MAP_picture_a_03","MAP_picture_a_04","MAP_picture_a_05","MAP_picture_b","MAP_picture_b_02","MAP_picture_c","MAP_picture_c_02","MAP_picture_d","MAP_picture_e","MAP_picture_f","MAP_picture_f_02","MAP_picture_g","MAP_wall_board","MAP_wall_board_02","MAP_wall_board_03","Can_small","FloorMop","Land_Bowl_EP1","Land_Bucket_EP1","Land_Canister_EP1","Land_Teapot_EP1","Land_Urn_EP1","Land_Vase_EP1","Land_Vase_loam_EP1","Land_Vase_loam_2_EP1","Land_Vase_loam_3_EP1","Land_Water_pipe_EP1","MAP_briefcase","MAP_bucket","MAP_FuelCan","MAP_MetalBucket","MAP_SmallObj_money","MAP_SmallObj_spukayev_docs_WPN","MAP_drapes","MAP_drapes_long","MAP_box_c","Land_Blankets_EP1","Land_Carpet_2_EP1","Land_Carpet_EP1","Land_Carpet_rack_EP1","Land_Pillow_EP1","MAP_misc_videoprojector","MAP_misc_videoprojector_platno","MAP_mutt_vysilacka","MAP_notebook","MAP_pc","MAP_phonebox","MAP_radio_b","MAP_satelitePhone","MAP_tv_a","Radio","SmallTV","Land_Bag_EP1","Land_bags_EP1","Land_Basket_EP1","Land_Sack_EP1","Land_Wicker_basket_EP1","MAP_icebox","MAP_lobby_counter","MAP_pultskasou","MAP_shelf","MAP_vending_machine","MAP_F_bath","MAP_lekarnicka","MAP_P_Basin_A","MAP_P_bath","MAP_P_sink","MAP_P_toilet_b_02","MAP_toilet_b","MAP_Dkamna_bila","MAP_Dkamna_uhli","MAP_F_Dkamna_uhli","MAP_fridge","MAP_Kitchenstove_Elec","MAP_washing_machine","MAP_sign_airport_new","MAP_sign_badRoadside","MAP_sign_children_new","MAP_sign_cow_new","MAP_sign_crossRoad_new","MAP_sign_crossRoadMain_new","MAP_sign_danger","MAP_sign_deer_new","MAP_sign_downHill_new","MAP_sign_fallingStones_new","MAP_sign_flyAWayGrit","MAP_sign_left_new","MAP_sign_pass_new","MAP_sign_right_new","MAP_sign_roadworks_new","MAP_sign_serpentine_left_new","MAP_sign_serpentine_right_new","MAP_sign_train","MAP_sign_upHil_new","MAP_sign_snow_new","MAP_sign_snowChains","MAP_sign_snowChains_end","MAP_sign_heightLimit","MAP_sign_krizeni_s_trati","MAP_sign_main_new","MAP_sign_main_end_new","MAP_sign_noDriving_new","MAP_sign_noDrivingWronWay_new","MAP_sign_noOverTaking","MAP_sign_priority_new","MAP_sign_speed20","MAP_sign_speed50","MAP_sign_stop_new","MAP_sign_stopProhibited_new","MAP_sign_tractorProhibited","MAP_sign_wiatingProhibited_new","MAP_sign_widthLimit","MAP_rail_50km","MAP_rail_KoniecNastupista","MAP_rail_o25m_Priecestie","MAP_rail_Priecestie","MAP_Zastavka_cedule","MAP_Zastavka_stojan","MAP_sign_prejezd","MAP_sign_prejezd2","MAP_sign_prejezd3","MAP_sign_danger_mines","MAP_sign_danger1","Sign_1L_Firstaid","Sign_1L_Firstaid_EP1","MAP_sign_accomodation","MAP_sign_bus","MAP_sign_food","MAP_sign_fuel_new","MAP_sign_hospital_new","MAP_sign_parking_new","MAP_sign_pedCrossing","MAP_sign_port","MAP_sign_service_new","MAP_sign_blindWay_new","MAP_sign_blindWay_left_new","MAP_sign_blindWay_right_new","FlagCarrierChecked","FlagCarrierSmall","Land_arrows_desk_R","Land_arrows_desk_L","RoadCone","Land_coneLight","Land_RedWhiteBarrier","MAP_arrows_yellow_L","MAP_arrows_yellow_R","RoadBarrier_long","RoadBarrier_light","Sign_tape_redwhite","MAP_sign_leftDirection_new","MAP_sign_oneWay","MAP_sign_rightDirection_new","HeliH","HeliHCivil","HeliHRescue","MAP_Heli_H_army","MAP_Heli_H_cross","Sr_border","Sign_Checkpoint","Sign_Checkpoint_TK_EP1","Sign_Checkpoint_US_EP1","Sign_Danger","Sign_MP_blu_EP1","Sign_MP_ind_EP1","Sign_MP_op_EP1","MAP_Bilboard_alkohol","MAP_Bilboard_Beach","MAP_Bilboard_Bienvenudo","MAP_Bilboard_cibulka","MAP_Bilboard_cigara_chernomorky","MAP_Bilboard_Escape","MAP_Bilboard_Everon","MAP_Bilboard_hlinik","MAP_Bilboard_likery_bardak","MAP_Bilboard_Nogova","MAP_Bilboard_pizza_presto","MAP_Bilboard_Riviera","MAP_Bilboard_seci_stroje","MAP_Bilboard_smadny_maskrnik","MAP_Bilboard_strana_noveho_radu","MAP_Bilboard_toaletak_armasan","MAP_Bilboard_veterans_choice","MAP_Bilboard_volte_cernaruske_hnuti","MAP_Bilboard_vstup_do_CDF","MAP_Bilboard_zlute_zgrynda","Base_Fire_DZ","WoodenGate_1","WoodenGate_2","WoodenGate_3","WoodenGate_4","Land_Fire_DZ","TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","StashMedium4","Wire_cat1","Sandbag1_DZ","Fence_DZ","Generator_DZ","Hedgehog_DZ","BearTrap_DZ","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DomeTentStorage4","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare","TentStorageDomed","VaultStorageLocked","BagFenceRound_DZ","TrapBear","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Land_HBarrier5_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","Plastic_Pole_EP1_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodStairsRails_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ","WoodRamp_DZ","GunRack_DZ","FireBarrel_DZ","WoodCrate_DZ","Scaffolding_DZ","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3","DesertTentStorage4"];

 

but as mighjt expect because iam writing here it is not working.

 

i do not try to get this look good in code just to get it working the easyest way. i also tried the way that was shown here but i dont get it to work.

please help :)

This was a HUGE time saver - thank you!

Link to comment
Share on other sites

I have this working perfect on my server and I added gems to the zombies but I can't seem to figure out where to increase the chance that zombies will have loot on them. 

I found this - \dayz.epoch.chernarus\dayz_code\configs\CfgLoot\Groups\Zombies 

Spoiler

ZombieSuit[] =
{
    {Loot_GROUP,        6,        Consumable},
    {Loot_GROUP,        1,        AmmoCivilian},
    {Loot_MAGAZINE,        3,        ItemBandage},
    {Loot_MAGAZINE,        2,        ItemObsidian},  <<----- added gem here
    {Loot_MAGAZINE,        2,        ItemAntibacterialWipe},
    {Loot_MAGAZINE,        3,        ItemDocument}
};

ZombieSuitViral[] =
{
    {Loot_GROUP,        10,        ZombieSuit},
    {Loot_MAGAZINE,        1,        ItemAntibiotic1}
};
 

I think these settings only control what loot zeds have on them and % of that loot 

BUT 

I trying to increase the chance that zed have loot not what loot they have. 

=========================

 

Any help would be appreciated,

Link to comment
Share on other sites

5 minutes ago, Bricktop said:

I have this working perfect on my server and I added gems to the zombies but I can't seem to figure out where to increase the chance that zombies will have loot on them. 

I found this - \dayz.epoch.chernarus\dayz_code\configs\CfgLoot\Groups\Zombies 

  Reveal hidden contents

ZombieSuit[] =
{
    {Loot_GROUP,        6,        Consumable},
    {Loot_GROUP,        1,        AmmoCivilian},
    {Loot_MAGAZINE,        3,        ItemBandage},
    {Loot_MAGAZINE,        2,        ItemObsidian},  <<----- added gem here
    {Loot_MAGAZINE,        2,        ItemAntibacterialWipe},
    {Loot_MAGAZINE,        3,        ItemDocument}
};

ZombieSuitViral[] =
{
    {Loot_GROUP,        10,        ZombieSuit},
    {Loot_MAGAZINE,        1,        ItemAntibiotic1}
};
 

I think these settings only control what loot zeds have on them and % of that loot 

BUT 

I trying to increase the chance that zed have loot not what loot they have. 

=========================

 

Any help would be appreciated,

Hey, you can increase the chance that loot spawns in the zombie_generate.sqf

https://github.com/EpochModTeam/DayZ-Epoch/blob/master/SQF/dayz_code/compile/zombie_generate.sqf#L93

Link to comment
Share on other sites

4 hours ago, A Man said:

Hey, you can increase the chance that loot spawns in the zombie_generate.sqf

https://github.com/EpochModTeam/DayZ-Epoch/blob/master/SQF/dayz_code/compile/zombie_generate.sqf#L93

Thanks for the info - 

So here's what I did but I don't see any difference. Maybe I did something wrong?

================================

1- Extract zombie_generate.sqf from dayz_code.pbo

2 - changed this - if (0.3 > random 1) then {

to this - if (0.9 > random 1) then {

3 - placed custom zombie_generate.sqf @ dayz_code\compile\zombie_generate.sqf

4 - added this to custom compiles 

if (isServer) then {
    diag_log "Loading custom server compiles";    
};

if (!isDedicated) then {
    diag_log "Loading custom client compiles";
    player_debug = compile preprocessFileLineNumbers "scripts\debug\player_debug.sqf";
    fnc_usec_selfactions = compile preprocessFileLineNumbers "dayz_code\compile\fn_selfActions.sqf";
    DZ_KeyDown_EH = compile preprocessFileLineNumbers "scripts\keyboard.sqf";
    dze_buildChecks = compile preprocessFileLineNumbers "scripts\dze_buildChecks.sqf";
    zombie_generate = compile preprocessFileLineNumbers "dayz_code\compile\zombie_generate.sqf";
};
    

================================

Thanks for any help,

Link to comment
Share on other sites

5 hours ago, Bricktop said:

I have this working perfect on my server and I added gems to the zombies but I can't seem to figure out where to increase the chance that zombies will have loot on them. 

I found this - \dayz.epoch.chernarus\dayz_code\configs\CfgLoot\Groups\Zombies 

  Hide contents

ZombieSuit[] =
{
    {Loot_GROUP,        6,        Consumable},
    {Loot_GROUP,        1,        AmmoCivilian},
    {Loot_MAGAZINE,        3,        ItemBandage},
    {Loot_MAGAZINE,        2,        ItemObsidian},  <<----- added gem here
    {Loot_MAGAZINE,        2,        ItemAntibacterialWipe},
    {Loot_MAGAZINE,        3,        ItemDocument}
};

ZombieSuitViral[] =
{
    {Loot_GROUP,        10,        ZombieSuit},
    {Loot_MAGAZINE,        1,        ItemAntibiotic1}
};
 

I think these settings only control what loot zeds have on them and % of that loot 

BUT 

I trying to increase the chance that zed have loot not what loot they have. 

=========================

 

Any help would be appreciated,

increasing the chance is done by the zombie_generate.sqf like A man mentioned, but you need to make sure that the loot file you change (the one in this quote), is also in your mission file. You might need to change some paths.

Link to comment
Share on other sites

On 12/17/2017 at 4:25 PM, theduke said:

increasing the chance is done by the zombie_generate.sqf like A man mentioned, but you need to make sure that the loot file you change (the one in this quote), is also in your mission file. You might need to change some paths.

Thanks for the info man. I'm finally on the right path - much appreciated

Link to comment
Share on other sites

  • 2 weeks later...

I think this script also do not work in 1.0.6.2, and I need update.
 

Quote

PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,_playerUID],_classname];

would be replaced by

Quote

    if (DZE_permanentPlot) then {
        _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true];
        PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID],[],player,dayz_authKey];

    } else {
        PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],[],player,dayz_authKey];
    };

 

Link to comment
Share on other sites

On 31/12/2017 at 5:47 PM, theduke said:

Hi everybody,

i'm not a coder...but if i don't mistake...it need to add

publicVariableServer "PVDZ_obj_Publish";

so ultimately it should be:

if (DZE_permanentPlot) then {
        _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true];
        PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID],[],player,dayz_authKey];

        } else {
        PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],[],player,dayz_authKey];
    };
    
    publicVariableServer "PVDZ_obj_Publish";

I tested on my server...without publicVariableServer "PVDZ_obj_Publish"; the buildings disappear at server restart.

With it...the buildings remain.

I hope this is correct...

 

Link to comment
Share on other sites

32 minutes ago, unconditional said:

Hi everybody,

i'm not a coder...but if i don't mistake...it need to add

publicVariableServer "PVDZ_obj_Publish";

so ultimately it should be:

if (DZE_permanentPlot) then {
        _tmpbuilt setVariable ["ownerPUID",dayz_playerUID,true];
        PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location,dayz_playerUID],[],player,dayz_authKey];

        } else {
        PVDZ_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],[],player,dayz_authKey];
    };
    
    publicVariableServer "PVDZ_obj_Publish";

I tested on my server...without publicVariableServer "PVDZ_obj_Publish"; the buildings disappear at server restart.

With it...the buildings remain.

I hope this is correct...

 

You are correct, I think it was more of a mistake than anything from @theduke

I've submitted a pull request to fix this.

Link to comment
Share on other sites

  • 3 weeks later...

Is anyone seeing issues with the offsets in the MI_Defines.hpp not working? 

I have been using this script for years and made a good amount of offset changes over the years. I made this one...

class MAP_nav_pier_c_big:DefaultDocks {offset[]={0,20,-20};};

but it still drops that object and the builder is in the dead center of it. This only started happening after the 1.0.6.1 version. 

I reviewed RPTs and nothing error related is showing up. 

Link to comment
Share on other sites

  • 4 weeks later...

Hello in the club.
Does it work on 1.0.6.2 ??
I can not find the script \ click_actions \ config.sqf :(

solved ... inserted into player_craftItem.sqf and now only works to resolve rotation and height before standing does not want me to work.

Quote

 


// If a string was passed redirect to vanilla player_craftItem (Epoch items always pass an array)
if (typeName _this == "STRING") exitWith {_this spawn player_craftItemVanilla;};

/*
	DayZ Epoch Crafting 0.3
	Made for DayZ Epoch && Unleashed by [VB]AWOL please ask permission to use/edit/distrubute email [email protected].
	Thanks to thevisad for help with the spawn call fixes.

USAGE EXAMPLE:
class ItemActions
{
	class Crafting
	{
		text = "Craft Tent";
		script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; // [Class of itemaction,CfgMagazines || CfgWeapons, item]
		neednearby[] = {"workshop","fire"};
		requiretools[] = {"ItemToolbox","ItemKnife"}; // (cfgweapons only)
		output[] = {{"ItemTent",1}}; // (CfgMagazines, qty)
		input[] = {{"ItemCanvas",2},{"ItemPole",2}}; // (CfgMagazines, qty)
		inputstrict = true; // (CfgMagazines input without inheritsFrom) Optional
		inputweapons[] = {"ItemToolbox"}; // consume toolbox (cfgweapons only)
		outputweapons[] = {"ItemToolbox"}; // return toolbox (cfgweapons only)
	};
};
*/
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_boiled","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_finished","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];

if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;

// This is used to find correct recipe based what itemaction was click allows multiple recipes per item.
_crafting = _this select 0;

// This tells the script what type of item we are clicking on
_baseClass = _this select 1;

_item =  _this select 2;

_abort = false;
_distance = 3;
_reason = "";
_waterLevel = 0;
_outputWeapons = [];
_selectedRecipeOutput = [];
_onLadder =	(getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
_boiled = false;

DZE_CLICK_ACTIONS = [
     ["ItemAmethyst","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Amethyst.sqf';","true"],
	["ItemCitrine","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Citrine.sqf';","true"],
	["ItemEmerald","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Emerald.sqf';","true"],
	["ItemObsidian","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Obsidian.sqf';","true"],
	["ItemRuby","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Ruby.sqf';","true"],
	["ItemSapphire","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Sapphire.sqf';","true"],
	["ItemTopaz","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Topaz.sqf';","true"],
	["ItemLightbulb","Start Crafting!","closeDialog 0;createDialog 'Advanced_Crafting';execVM 'Custom\Buildables\Lights.sqf';","true"]
];

// Need Near Requirements
_needNear = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "neednearby");
if ("fire" in _needNear) then {
	_pPos = [player] call FNC_GetPos;
	_isNear = {inflamed _x} count (_pPos nearObjects _distance);
	if(_isNear == 0) then {
		_abort = true;
		_reason = "fire";
	};
};
if ("workshop" in _needNear) then {
	_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
	if(_isNear == 0) then {
		_abort = true;
		_reason = "workshop";
	};
};
if (_abort) exitWith {
	format[localize "str_epoch_player_149",_reason,_distance] call dayz_rollingMessages;
	dayz_actionInProgress = false;
};

// diag_log format["Checking for fire: %1", _isFireNear];

if (_canDo) then {
	_selectedRecipeTools = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "requiretools");
	_selectedRecipeOutput = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "output");
	_selectedRecipeInput = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "input");
	_selectedRecipeInputStrict = ((isNumber (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputstrict")) && (getNumber (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputstrict") > 0));
	_outputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "outputweapons");
	_inputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputweapons");

	_sfx = getText(configFile >> _baseClass >> _item >> "sfx");
	if (_sfx == "") then {
		_sfx = "repair";
	};

	_randomOutput = 0;
	if (isNumber (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "randomOutput")) then {
		_randomOutput = getNumber(configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "randomOutput");
	};

	_craft_doLoop = true;
	_tradeComplete = 0;

	while {_craft_doLoop} do {
		_temp_removed_array = [];

		if ([_item,_selectedRecipeTools,"none"] call dze_requiredItemsCheck) then {
			// Dry run to see if all parts are available.
			_proceed = true;
			if (count _selectedRecipeInput > 0) then {
				{
					_itemIn = _x select 0;
					_countIn = _x select 1;

					_qty = { (_x == _itemIn) || (!_selectedRecipeInputStrict && configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;

					if (_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };

				} forEach _selectedRecipeInput;
			};

			// If all parts proceed
			if (_proceed) then {
				localize "str_epoch_player_62" call dayz_rollingMessages;

				[player,_sfx,0,false] call dayz_zombieSpeak;
				[player,50,true,(getPosATL player)] spawn player_alertZombies;

				_finished = ["Medic",1] call fn_loopAction;

				if (_finished) then {
					_removed_total = 0; // count total of removed items
					_tobe_removed_total = 0; // count total of all to be removed items
					_waterLevel_lowest = 0; // find the lowest _waterLevel
					// Take items
					{
						_removed = 0;
						_itemIn = _x select 0;
						_countIn = _x select 1;
						// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
						_tobe_removed_total = _tobe_removed_total + _countIn;

						// Preselect the item
						{
							_configParent = configName(inheritsFrom(configFile >> "cfgMagazines" >> _x));
							if ((_x == _itemIn) || (!_selectedRecipeInputStrict && _configParent == _itemIn)) then {
								// Get lowest waterlevel
								if ((_x == "ItemWaterbottle") ||( _configParent == "ItemWaterbottle")) then {
									_waterLevel = getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz");
									if (_waterLevel_lowest == 0 || _waterLevel < _waterLevel_lowest) then {
										_waterLevel_lowest = _waterLevel;
									};
								};
							};
						} forEach (magazines player);

						{
							_configParent = configName(inheritsFrom(configFile >> "cfgMagazines" >> _x));
							if ((_removed < _countIn) && ((_x == _itemIn) || (!_selectedRecipeInputStrict && _configParent == _itemIn))) then {
								if ((_waterLevel_lowest == 0) || ((_waterLevel_lowest > 0) && (getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz") == _waterLevel_lowest))) then {
									_num_removed = ([player,_x] call BIS_fnc_invRemove);
								}
								else {
									_num_removed = 0;
								};
								_removed = _removed + _num_removed;
								_removed_total = _removed_total + _num_removed;
								if (_num_removed >= 1) then {
									//diag_log format["debug remove: %1 of: %2", _configParent, _x];
									if (_x == "ItemWaterbottle" || _configParent == "ItemWaterbottle") then {
										_waterLevel = floor((getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz")) - 1);
										if (_x in ["ItemWaterbottle9ozBoiled","ItemWaterbottle8ozBoiled","ItemWaterbottle7ozBoiled","ItemWaterbottle6ozBoiled","ItemWaterbottle5ozBoiled","ItemWaterbottle4ozBoiled","ItemWaterbottle3ozBoiled","ItemWaterbottle2ozBoiled","ItemWaterBottleBoiled"]) then {
											_boiled = true;
										};
									};
									_temp_removed_array set [count _temp_removed_array,_x];
								};
							};
						} forEach (magazines player);

					} forEach _selectedRecipeInput;

					//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];

					// Only proceed if all parts were removed successfully
					if (_removed_total == _tobe_removed_total) then {
						_num_removed_weapons = 0;
						{
							_num_removed_weapons = _num_removed_weapons + ([player,_x] call BIS_fnc_invRemove);
						} forEach _inputWeapons;
						if (_num_removed_weapons == (count _inputWeapons)) then {
							if (_randomOutput == 1) then {
								if (!isNil "_outputWeapons" && count _outputWeapons > 0) then {
									_selectedWeapon = _outputWeapons call BIS_fnc_selectRandom;
									_outputWeapons = [_selectedWeapon];
								};
								if (!isNil "_selectedRecipeOutput" && count _selectedRecipeOutput > 0) then {
									_selectedMag = _selectedRecipeOutput call BIS_fnc_selectRandom;
									_selectedRecipeOutput = [_selectedMag];
								};
								// exit loop
								_craft_doLoop = false;
							};
							{
								if (_x == "ItemSledge") then {
									_x call player_addDuplicateTool;
								} else {
									player addWeapon _x;
								};
							} forEach _outputWeapons;
							{
								_itemOut = _x select 0;
								_countOut = _x select 1;
								if (_itemOut == "ItemWaterbottleUnfilled") then {
									if (_waterLevel > 0) then {
										if (_boiled) then {
											_itemOut = format["ItemWaterbottle%1ozBoiled",_waterLevel];
										} else {
											_itemOut = format["ItemWaterbottle%1oz",_waterLevel];
										};
									};
								};
								// diag_log format["Checking for water level: %1", _waterLevel];
								for "_x" from 1 to _countOut do {
									player addMagazine _itemOut;
								};
								_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
								// Add crafted item
								format[localize "str_epoch_player_150",_textCreate,_countOut] call dayz_rollingMessages;
								// sleep here
								uiSleep 1;
							} forEach _selectedRecipeOutput;

							_tradeComplete = _tradeComplete+1;
						};

					} else {
						// Refund parts since we failed
						{player addMagazine _x; } forEach _temp_removed_array;
						format[localize "STR_EPOCH_PLAYER_145",_removed_total,_tobe_removed_total] call dayz_rollingMessages;
					};

				} else {
					localize "str_epoch_player_64" call dayz_rollingMessages;
					_craft_doLoop = false;
				};

			} else {
				_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
				format[localize "str_epoch_player_152",_missingQty, _textMissing,_tradeComplete] call dayz_rollingMessages;
				_craft_doLoop = false;
			};
		} else {
			//Missing text shown in dze_requiredItemsCheck
			_craft_doLoop = false;
		};
	};
} else {
	localize "str_epoch_player_64" call dayz_rollingMessages;
};
dayz_actionInProgress = false;

 

 

Link to comment
Share on other sites

dismantle script:

Spoiler

private["_objName","_found","_object","_roadType","_reqTools","_getMats","_objectID","_objectUID","_isOk","_proceed","_limit","_counter","_roadTar"];

if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;

_player = player;
_pos = getPos _player;
_types = publicTransportation;
_found = [];
_object = [];
_onRoad = isOnRoad _pos;
_search = nearestObjects [_pos, [], 5];
_subTypes = ["RoadsAsphalt1","RoadsAsphalt2","RoadsAsphalt3","RoadsGravel","RoadsIntersect","RoadsMud","RoadsPaved","RoadsRunways"];

{
_road = _x;
  if ((typeOf _road) in publicTransportation) then {
    _objName = _road call fn_getModelName;
    _found = _found + [_objName];
    _object = _object + [_road];
  };
} forEach _search;

if !(count _found >= 1) exitWith { cutText ["You are not near any roads...","PLAIN DOWN"];dayz_actionInProgress = false;};

if (count _found >= 1) then {
  {
  _branch = _x;
  _roadTar = _object select 0;
  _roadType = typeOf _roadTar;
  if (isClass(missionConfigFile >> "Custom_Buildables" >> "Buildables" >> _branch >> _roadType)) exitWith {
    _reqTools = getArray(missionConfigFile >> "Custom_Buildables" >> "Buildables" >> _branch >> _roadType >> "requiredtools");
    _getMats = getArray(missionConfigFile >> "Custom_Buildables" >> "Buildables" >> _branch >> _roadType >> "requiredmaterials");
    _objectID = _roadTar getVariable ["ObjectID","0"];
    _objectUID = _roadTar getVariable ["ObjectUID","0"];
    };
  } forEach _subTypes;
};

_hasAccess = [player, _roadTar] call FNC_check_access;
_allowed = ((_hasAccess select 0) || (_hasAccess select 2) || (_hasAccess select 3) || (_hasAccess select 4));

if !(_allowed || (_hasAccess select 1)) exitWith { cutText ["You have no rights to this road...","PLAIN DOWN"];dayz_actionInProgress = false;};

_hasTools = _reqTools call player_hasTools;

if (!_hasTools) exitWith { cutText [format["You require all of these %1, to dismantle...",_reqTools], "PLAIN DOWN"];dayz_actionInProgress = false;};

_isOk = true;
_proceed = false;
_limit = 3;
_counter = 0;

while {_isOk} do {
  
  ["Working",0,[20,48,15,0]] call dayz_NutritionSystem;
  player playActionNow "Medic";
  
  cutText [format["Dismantling of road in progress, stage %1 of %2",(_counter + 1),_limit], "PLAIN DOWN"];
  
  _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;
  DZE_cancelBuilding = false;
  
  while {r_doLoop} do {
    _animState = animationState player;
    _isMedic = ["medic",_animState] call fnc_inString;
    
    if (_isMedic) then {
        _started = true;
    };
    if (_started && !_isMedic) then {
        r_doLoop = false;
        _finished = true;
    };
    if (r_interrupt || (player getVariable["inCombat",false])) exitWith {
        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;
    };
  
  if(_counter == _limit) exitWith {
        _isOk = false;
        _proceed = true;
    };

};

if (_proceed) then {
  _countMats = count _getMats;
  _dir = getDir _player;
  _pos = getPos _player;
  _pos = [(_pos select 0)+2*sin(_dir),(_pos select 1)+2*cos(_dir),0];
  _holder = createVehicle ['Weaponholder',_pos,[],0,'NONE'];
  if (_countMats >= 2) then {
    for "_i" from 0 to ((_countMats)- 1) do {
      _chance = round((random 100) + (random 10));
      _against = round((random 50) + (random 10));
      if (_chance > _against) then {
        _holder addMagazineCargoGlobal [(_getMats select _i),1];
      };
    };
  };
  PVDZ_obj_Destroy = [_objectID,_objectUID,player,_object,dayz_authKey];
  publicVariableServer "PVDZ_obj_Destroy";
  if (isServer) then {
    PVDZ_obj_Destroy call server_deleteObjDirect;
  };
  deleteVehicle _roadTar;
  _holder setPosATL _pos;
  _roadTar reveal [_holder];
  DZE_GearCheckBypass = true;
  player action ["Gear", _holder];
};

dayz_actionInProgress = false;

After the restart is restored

 

any idea?

Link to comment
Share on other sites

On 5.7.2017 at 9:14 AM, Ghostis said:

I removed the craft for each of the gems and added it to the category in a nice menu from Zupa zCraft. Call the menu right click on itemtoolbox

17819121.jpg

1.  download files here

2.  copy my description.hpp and zCraft.hpp in scripts folder

3.  in description.hpp very bottom add:


#include "scripts\description.hpp"
#include "scripts\zCraft.hpp"

4. in deploy Deploy Anything in right click option add:


["ItemToolbox","Меню крафта","closeDialog 0;createDialog ""ZCraft"";","true"]

 

hi, link not available for download

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...