Jump to content

Karabas

Member
  • Posts

    1
  • Joined

  • Last visited

Posts posted by Karabas

  1. Спойлер

    private ["_playerPos","_nearRestr","_hastool","_hasitem","_removed",
    "_helperColor","_objectHelper","_objectHelperDir","_objectHelperPos","_canDo", "_pos", "_cnt",
    "_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay","_zheightdirection","_abort","_isNear","_need","_needNear","_vehicle","_inVehicle","_requireplot","_objHDiff","_isLandFireDZ","_isTankTrap","_posrad","_cntrad"];

    if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_40") , "PLAIN DOWN"]; };
    DZE_ActionInProgress = true;

    _inventory = items player;
    _hastool =     "ItemToolbox" in _inventory;
    _hasitem = [["PartWoodLumber",4],["PartWoodPlywood",4]] call player_checkItems;
    _playerPos = getPosATL player;
    _nearRestr = count nearestObjects [_playerPos, ["MAP_kulna"], 45] > 0;
     
    if (_nearRestr) exitWith {
    cutText [format["You cannot build another Workshop in this plot area"], "PLAIN DOWN"];  
        DZE_ActionInProgress = false;
        };

    if (!_hasitem) exitWith {cutText 
    [format["Needs 4x woodlumbers + 4xPlywood"], "PLAIN DOWN"];
    DZE_ActionInProgress = false;
    };
    if (!_hastool) exitWith {cutText 
    [format["Needs a Toolbox"], "PLAIN DOWN"];
    DZE_ActionInProgress = false;
    };

    if (_hasitem && _hastool) then {

    //snap vars -- temporary fix for errors so variables.sqf can be skipped
    if (isNil "snapProVariables") then {
        if (isNil "DZE_snapExtraRange") then {
            DZE_snapExtraRange = 0;
        };
        if (isNil "DZE_checkNearbyRadius") then {
            DZE_checkNearbyRadius = 30;
        };
        s_player_toggleSnap = -1;
        s_player_toggleSnapSelect = -1;
        s_player_toggleSnapSelectPoint=[];
        snapActions = -1;
        snapGizmos = [];
        snapGizmosNearby = [];
        snapProVariables = true; // will skip this statement from now on.
    };
    // snap vars


    _cancel = false;
    _isPerm = false;
    _reason = "";
    _vehicle = vehicle player;
    _inVehicle = (_vehicle != player);
    _canDo = call fnc_actionAllowed;

    helperDetach = 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_F = false;

    DZE_cancelBuilding = false;

    call gear_ui_init;
    closeDialog 1;


    _classname =  "MAP_kulna";    
    _classnametmp = _classname;
    _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");
    };

    _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,5,1];
    };

    _isPole = (_classname == "Plastic_Pole_EP1_DZ");
    _isLandFireDZ = (_classname == "Land_Fire_DZ");

    _distance = DZE_PlotPole select 1;

    _findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance];
    _findNearestPole = [];

    {
        if (alive _x) then {
            _findNearestPole set [(count _findNearestPole),_x];
        };
    } count _findNearestPoles;

    _IsNearPlot = count (_findNearestPole);

    // If item is plot pole && another one exists within 45m
    if(_isPole && _IsNearPlot > 0) exitWith {  DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_44") , "PLAIN DOWN"]; };

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

        // get inital players position
        _location1 = [player] call FNC_GetPos;
        _dir = getDir player;

        // if ghost preview available use that instead
        if (_ghost != "") then {
            _classname = _ghost;
        };

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

    if (isClass (missionConfigFile >> "SnapBuilding" >> _classname)) then {    
        ["","","",["Init",_object,_classname,_objectHelper]] spawn snap_build;
    };

        while {_isOk} do {

            _zheightchanged = false;
            _zheightdirection = "";
            _rotate = false;

            if (DZE_Q) then {
                DZE_Q = false;
                _zheightdirection = "up";
                _zheightchanged = true;
            };
            if (DZE_Z) then {
                DZE_Z = false;
                _zheightdirection = "down";
                _zheightchanged = true;
            };
            if (DZE_Q_alt) then {
                DZE_Q_alt = false;
                _zheightdirection = "up_alt";
                _zheightchanged = true;
            };
            if (DZE_Z_alt) then {
                DZE_Z_alt = false;
                _zheightdirection = "down_alt";
                _zheightchanged = true;
            };
            if (DZE_Q_ctrl) then {
                DZE_Q_ctrl = false;
                _zheightdirection = "up_ctrl";
                _zheightchanged = true;
            };
            if (DZE_Z_ctrl) then {
                DZE_Z_ctrl = false;
                _zheightdirection = "down_ctrl";
                _zheightchanged = true;
            };
            if (DZE_4) then {
                _rotate = true;
                DZE_4 = false;
                _dir = -45;
            };
            if (DZE_6) then {
                _rotate = true;
                DZE_6 = false;
                _dir = 45;
            };
            
            if (DZE_F and _canDo) then {    
                if (helperDetach) then {
                    _objectHelperDir = getDir _objectHelper; 
                    _objectHelper attachTo [player];
                    _objectHelper setDir _objectHelperDir-(getDir player);
                    helperDetach = false;
                } else {
                    _objectHelperDir = getDir _objectHelper;
                    detach _objectHelper;
                    [_objectHelper]    call FNC_GetSetPos;
                    _objectHelper setVelocity [0,0,0]; //fix sliding glitch
                    helperDetach = true;
                };
                DZE_F = false;
            };

            if(_rotate) then {
                if (helperDetach) then {
                    _objectHelperDir = getDir _objectHelper;
                    _objectHelper setDir _objectHelperDir+_dir;
                    [_objectHelper]    call FNC_GetSetPos;
                } else {
                    detach _objectHelper;
                    _objectHelperDir = getDir _objectHelper;
                    _objectHelper setDir _objectHelperDir+_dir;
                    [_objectHelper]    call FNC_GetSetPos;
                    _objectHelperDir = getDir _objectHelper;
                    _objectHelper attachTo [player];
                    _objectHelper setDir _objectHelperDir-(getDir player);        
                };

            };

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

                _position = [_objectHelper] call FNC_GetPos;

                if(_zheightdirection == "up") then {
                    _position set [2,((_position select 2)+0.1)];
                    _objHDiff = _objHDiff + 0.1;
                };
                if(_zheightdirection == "down") then {
                    _position set [2,((_position select 2)-0.1)];
                    _objHDiff = _objHDiff - 0.1;
                };

                if(_zheightdirection == "up_alt") then {
                    _position set [2,((_position select 2)+1)];
                    _objHDiff = _objHDiff + 1;
                };
                if(_zheightdirection == "down_alt") then {
                    _position set [2,((_position select 2)-1)];
                    _objHDiff = _objHDiff - 1;
                };

                if(_zheightdirection == "up_ctrl") then {
                    _position set [2,((_position select 2)+0.01)];
                    _objHDiff = _objHDiff + 0.01;
                };
                if(_zheightdirection == "down_ctrl") then {
                    _position set [2,((_position select 2)-0.01)];
                    _objHDiff = _objHDiff - 0.01;
                };

                if((_isAllowedUnderGround == 0) && ((_position select 2) < 0)) then {
                    _position set [2,0];
                };

                if (surfaceIsWater _position) then {
                    _objectHelper setPosASL _position;
                } else {
                    _objectHelper setPosATL _position;
                };

                if (!helperDetach) then {
                _objectHelper attachTo [player];
                _objectHelper setDir _objectHelperDir-(getDir player);
                };
            };

        sleep 0.5;

        _location2 = [player] call FNC_GetPos;
        _objectHelperPos = [_objectHelper] call FNC_GetPos;

        if(DZE_5) exitWith {
            _isOk = false;
            _position = [_object] call FNC_GetPos;
            detach _object;
            _dir = getDir _object;
            deleteVehicle _object;
            detach _objectHelper;
            deleteVehicle _objectHelper;
        };

        if(_location1 distance _location2 > 25) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "You've moved too far away from where you started building (within 15 meters)";
            detach _object;
            deleteVehicle _object;
            detach _objectHelper;
            deleteVehicle _objectHelper;
        };
            
        if(_location1 distance _objectHelperPos > 25) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "Object is placed to far away from where you started building (within 15 meters)";
            detach _object;
            deleteVehicle _object;
            detach _objectHelper;
            deleteVehicle _objectHelper;
        };

        if(abs(_objHDiff) > 15) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "Cannot move up or down more than 15 meters";
            detach _object;
            deleteVehicle _object;
            detach _objectHelper;
            deleteVehicle _objectHelper;
        };

        if (DZE_cancelBuilding) exitWith {
            _isOk = false;
            _cancel = true;
            _reason = "Cancelled building.";
            detach _object;
            deleteVehicle _object;
            detach _objectHelper;
            deleteVehicle _objectHelper;
        };
    };

    if(!_cancel) then {
        _classname = _classnametmp;

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

        if((_isAllowedUnderGround == 0) && ((_location select 2) < 0)) then {
            _location set [2,0];
        };

        if (surfaceIsWater _location) then {
            _tmpbuilt setPosASL _location;
            _location = ASLtoATL _location;
        } else {
            _tmpbuilt setPosATL _location;
        };

        cutText [format[(localize "str_epoch_player_138"),_text], "PLAIN DOWN"];

    //////////////////////////////////////////////////##########
    player playActionNow "Medic";
    [player,"repair",0,false,10] call dayz_zombieSpeak;
    [player,10,true,(getPosATL player)] spawn player_alertZombies;
    sleep 3;
    _removed = [["PartWoodLumber",4],["PartWoodPlywood",4]] call player_removeItems;    
        cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];

    if (_isPole) then {
                        [] spawn player_plotPreview;
                    };

                    _tmpbuilt setVariable ["OEMPos",_location,true];
                    _tmpbuilt setVariable ["CharacterID",_combination,true];

    _charID = dayz_characterID;
    _activatingPlayer = player;
     
    PVDZE_veh_Publish = [_tmpbuilt,[_dir,_location],_classname,true,_charid,_activatingPlayer];
    publicVariableServer  "PVDZE_veh_Publish";

    // Customise the message below
     
    cutText [format["nice!"], "PLAIN DOWN",3];
     
    // Customer the message above
    player reveal _tmpbuilt;
     
    DZE_ActionInProgress = false;

                } else {
                    deleteVehicle _tmpbuilt;
                    cutText [(localize "str_epoch_player_46") , "PLAIN DOWN"];
                     
    DZE_ActionInProgress = false;
                };
     };
    DZE_ActionInProgress = false;
    snapTutorial = false;
    [0,0,0] call fnc_snapActionCleanup;
    call fnc_initSnapPointsCleanup;            
     

    How to make round a raft a field 1-20 identical designs?

    Simply there is an idea! That players could create (MAP_smallTV and MAP_misc_videoprojector) for video observation installation on base?

×
×
  • Create New...