Jump to content

[RELEASE][WORKSHOP][1.0.5.1]


Recommended Posts

UPDATE V2. for 1.5.0.1

tnks @theduke & @Cherdenko for all the help.

NEW WORKSHOP OPTIONS:

Spoiler

*CRAFT MOUNTED M2: Allow players to craft  only one static M2 in plot area.Needs 4xscrapmetal + 4xmetalpole + 3xDSHKM ammo  (spawn with ammo, after restart ammo will be removed).

*CRAFT MOUNTED DSHKM: Allow players to craft  only one static DSHKM in plot area. Needs 4xscrapmetal + 4xmetalpole + 3xDSHKM ammo (spawn with ammo, after restart ammo will be removed).

*CRAFT MOUNTED LANTERN: Allow players to craft a Static Lantern. Needs 4Metal Pole +1xPartGlass +1xLightbulb +1xGenerator

*CRAFT KITCHEN: Player can craft a kitchen to cook any kind of meat. Its needs 1xitembandage + 1xpillowood + matchbox  returns 2 cooked meats

*CRAFT ANIMAL HOUSE: Players can craft an Animal House and use it to breed animals (only 4 animals per plot area). Its needs 4xlumbers + 4xPlywoods + Toolbox. Breeding needs 1xBurlap + 1xWaterBottle.

*CRAFT BARBED WIRE FENCES: You can craft barbed wire fences with 2xlumbers + 1xItemWire + toolbox

*CRAFT LARGE SANDBAGS: Craft "L" sandbags with 6xsandbags + toolbox in inventory.

*CRAFT SMALL NEST: A small nest to make better cover. 4xSandbags + 4xLumbers +Toolbox

*CRAFT A BOMB: This is dangerus, you have 50% chances to make explode your workshop so take care. Needs 1XEmptyBriefcast + 4xGranades +1xToolbox +1xWatch +1xGPS + 1xRadio.

*MAKE DRUGS: Using 1xPain Killers + 1xEphifedrine + 1Nearest Kitchen  you can cook drugs. But take care you can feel druged in the process.

*CRAFT HOUSES BASED ON SURVIVED DAYS: This include my mod "Craft houses based on survived days" at workshop.

Basically: Survive 2 days +4xWoodWalls +1xFloorCelling = SMALL HOUSE.//Survive 4 days +2xCinderWalls +1xFloorCelling = MIDDLE HOUSE.//Survive 6 days +2xCinderWalls +1xFloorCelling = LARGEHOUSE.//Survive 2 days + (+5000) Humanity + 2xCinderWalls +1xFloorCelling =Hero Hospital. (you can heal in there)

*WIRING : Its a Wiring Fence electrified...  zeds and players gonna be electrified if is near of this fence.

*LOUDSPEAKERS: With this u can launch a plot alarm if ure base is under attack.

*ANTENNA : you can catch frecuencys and get some supplys

*CARPENTER BENCH: You can craft 10 lumbers in only one step if u have 12 woodpiles in your inventory, also u can craft plywoods.

*DRESSMAKER TABLE: You can craft your own clothes, needs 4 bandages and 1 item razor.

*WATERTANK:  used to fill waterbottles.

*DOWGRADE ALL THIS using the workshop menu.

*INFO MENUS into whorkshop menu.

 

 

VIDEO PREVIEW OF NEW OPTIONS:

Spoiler

 

 

 

 

INSTALLING:

***You will need a  custom: fn_selfactions.sqf//compiles.sqf//variables.sqf

DOWNLOAD HERE:http://www.mediafire.com/download/pyewpbmawt0k1d1/workshopV2.rar

 

1-IN INIT.SQF

 

Spoiler

find:

if (!isDedicated) then {

into this section paste:

//SERVER ELECTRIFY FENCES
[] execVM 'custom\scripts\workshop\serverfunction\server_electrify_init.sqf';

2-IN DESCRIPTION.EXT
A-

 

Spoiler

find:

into class CfgSounds {

paste into this section:

sounds4[] =
    {
    alarm
    };
    class alarm
    {
    name="alarm";
    sound[]={custom\scripts\workshop\sqfs\alarm.ogg,0.9,1};
    titles[] = {};
    };    
    sounds5[] =
    {
    electric
    };
    class electric
    {
    name="electric";
    sound[]={custom\scripts\workshop\sqfs\electric.ogg,0.9,1};
    titles[] = {};
    };    

B-Again in description.ext but at very bottom paste:

 

Spoiler

//whorkshop
#include "custom\scripts\workshop\hpp\des.hpp"
#include "custom\scripts\workshop\hpp\workshopmenu.hpp"

 

 

4-NOW IN CUSTOM FN_SELFACTIONS.SQF

A-

Spoiler

find:
_isModular = _cursorTarget isKindOf "ModularItems";

change for:

_isModular = (_cursorTarget isKindOf "ModularItems") or ((typeOf _cursorTarget) in DZE_SurvivedHouseRemove);

B-

Spoiler

find:

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

above paste:

////////////////WORKSHOP HOSPITAL HERO USE HEAL OPTION///
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "GUE_WarfareBFieldhHospital")) then {
if (s_player_hospitalhero < 0) then {
    s_player_hospitalhero = player addAction ["<t color='#ff5200'>HEAL IN TENT</t>", "custom\scripts\workshop\sqfs\healhospital.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_hospitalhero;
    s_player_hospitalhero = -1;
    };
 ///////////////////////////////////////////

////////////////OPEN WORKSHOP MENU////////////////////////////
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "MAP_kulna")) then {
if (s_player_managework < 0) then {
    s_player_managework = player addAction ["<t color='#66CCFF'>MANAGE WORKSHOP</t>", "custom\scripts\workshop\hpp\workshopmenu.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_managework;
    s_player_managework = -1;
    };

C-Again but now bellow of :    if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

 

Spoiler

if (s_player_workshop < 0) then {
s_player_workshop = player addAction ["<t color='#66CCFF'>CRAFT-WORKSHOP</t>", "custom\scripts\workshop\createworkshop.sqf", [], 5, false];
    };

D-Bellow it u will find:

Spoiler

} else {
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

paste :

player removeAction s_player_workshop;
s_player_workshop = -1;

above the player removeAction s_player_maintain_area;

So steps B,C,D looks:

 

Spoiler

 ////////////////WORKSHOP HOSPITAL HERO USE HEAL OPTION///
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "GUE_WarfareBFieldhHospital")) then {
if (s_player_hospitalhero < 0) then {
    s_player_hospitalhero = player addAction ["<t color='#ff5200'>HEAL IN TENT</t>", "custom\scripts\workshop\sqfs\healhospital.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_hospitalhero;
    s_player_hospitalhero = -1;
    };
 ///////////////////////////////////////////

////////////////OPEN WORKSHOP MENU////////////////////////////
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "MAP_kulna")) then {
if (s_player_managework < 0) then {
    s_player_managework = player addAction ["<t color='#66CCFF'>MANAGE WORKSHOP</t>", "custom\scripts\workshop\hpp\workshopmenu.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_managework;
    s_player_managework = -1;
    };

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

if (s_player_workshop < 0) then {
s_player_workshop = player addAction ["<t color='#66CCFF'>CRAFT-WORKSHOP</t>", "custom\scripts\workshop\createworkshop.sqf", [], 5, false];
    };

} else {
    
    player removeAction s_player_workshop;
    s_player_workshop = -1;

   player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

E-

 

Spoiler

Find near of fn_selfactions  end: ( Paste only lines in Black. I put the other lines to give u a reference)

} else {
//Engineering

paste bellow:

player removeAction s_player_managework;
s_player_managework = -1;
player removeAction s_player_workshop;
s_player_workshop = -1;

player removeAction s_player_hospitalhero;
s_player_hospitalhero = -1;

{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
    s_player_repair_crtl = -1;
    {player removeAction _x} count s_player_combi;s_player_combi = [];
    dayz_myCursorTarget = objNull;
    s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
    {player removeAction _x} count s_player_parts;s_player_parts = [];
    s_player_parts_crtl = -1;
    {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
    s_player_lockUnlock_crtl = -1;
    player removeAction s_player_checkGear;
    s_player_checkGear = -1;
    player removeAction s_player_SurrenderedGear;
    s_player_SurrenderedGear = -1;
    player removeAction s_player_forceSave;
    s_player_forceSave = -1;

5-IN CUSTOM COMPILES.SQF

A-

Spoiler

find:
player_removeObject =            compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf";

change to:
    
player_removeObject =            compile preprocessFileLineNumbers "custom\scripts\workshop\serverfunction\remove.sqf";

6-IN CUSTOM VARIABLES.SQF

A-

Spoiler

Find:

dayz_allowedObjects = ["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

Replace with:

dayz_allowedObjects = advworkshop +["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

 

 

B-

Spoiler

In the new :
dayz_allowedObjects = advworkshop +["......", .........................................];

Paste Above:

advworkshop = ["MAP_kulna","Land_Misc_Well_L_EP1","MAP_Misc_Boogieman","MAP_Shed_W01","MAP_P_Stavebni_kozy","MAP_parabola_big","MAP_office_table_a","Loudspeakers_EP1","MAP_Dkamna_bila","MAP_plot_green_draty","GUE_WarfareBFieldhHospital","MAP_bouda2_vnitrek","MAP_deutshe_mini","MAP_Mil_Mil_Guardhouse","MAP_Pristresek_mensi","Land_fort_bagfence_corner","MAP_plot_provizorni","M2StaticMG_US_EP1","DSHKM_Gue","SearchLight_RUS"];

C-

Spoiler

Now Bellow:

dayz_allowedObjects = advworkshop +["......", .........................................];

paste:

DZE_SurvivedHouseRemove = advworkshop;

D-

Spoiler

Find:

DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems",.............................."MORE IDS."];

put ONLY lines in blue:

DZE_maintainClasses = advworkshop +["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems",................MORE IDS"];

 

 

***SO STEPS A,B,C,D looks: (see lines in blue)***

Spoiler

advworkshop = ["MAP_kulna","Land_Misc_Well_L_EP1","MAP_Misc_Boogieman","MAP_Shed_W01","MAP_P_Stavebni_kozy","MAP_parabola_big","MAP_office_table_a","Loudspeakers_EP1","MAP_Dkamna_bila","MAP_plot_green_draty","GUE_WarfareBFieldhHospital","MAP_bouda2_vnitrek","MAP_deutshe_mini","MAP_Mil_Mil_Guardhouse","MAP_Pristresek_mensi","Land_fort_bagfence_corner","MAP_plot_provizorni","M2StaticMG_US_EP1","DSHKM_Gue","SearchLight_RUS"];


dayz_allowedObjects = advworkshop +["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

DZE_SurvivedHouseRemove = advworkshop;

DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];
DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
DZE_maintainClasses = advworkshop +["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","Plastic_Pole_EP1_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","StickFence_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","DeerStand_DZ","Scaffolding_DZ","FireBarrel_DZ"];

 

F:

Spoiler

 find
DZE_safeVehicle = ["ParachuteWest","ParachuteC"];

change
DZE_safeVehicle = advworkshop + ["ParachuteWest","ParachuteC"];

 

7-NOW YOU NEED GO TO YOUR dayz_server.pbo UNPACK IT.

A-open server_functions.sqf find:

Spoiler

find:
fnc_plyrHit   =                    compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";
add bellow
//Fnc removing workshop ammo
fnc_wra =                compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_wra.sqf";

B-OPEN THIS 3 FILES AND MAKE THE SAME CHANGES FOR EACH ONE.

server_monitor.sqf // server_publishVehicle2.sqf // server_publishVehicle3.sqf

Spoiler

Find:

clearWeaponCargoGlobal  _object;

Paste Above:

//weaponworkshop remove ammo
call fnc_wra;
//weaponworkshop remove ammo

C-Now take the "fnc_wra.sqf" located in download folder and drop it into  ....\@DayZ_Epoch_Server\addons\dayz_server\compile\

Done. You can repack your dayz_server.pbo.

8-CREATE THE PATH AND PLACE DOWNLOAD FOLDER

create: ......\MPMissions\DayZ_Epoch_11.Chernarus\custom\scripts\

and drop "workshop" folder inside.

9-ONLY INFISTAR USERS

tell infistar to notblock the dialogs, so go to your AHconfig.sqf ( tnks @Cherdenko)

in there we have to add these two dialofg numbers under:

Spoiler

_ALLOWED_Dialogs = _ALLOWED_Dialogs + [...,7000,7001,7002,7003};

 

AND ITS DONE.

 

 

 

 

 

Link to comment
Share on other sites

1 hour ago, juandayz said:

This is to craft a workshop in plot area and make some others crafts using this workshop

WORKSHOP OPTIONS:

*WIRING : Its a Wiring Fence electrified...  zeds and players gonna be electrified if is near of this fence.

*LOUDSPEAKERS: With this u can launch a plot alarm if ure base is under attack.

*ANTENNA : you can catch frecuencys and get some supplys

*CARPENTER BENCH: You can craft 10 lumbers in only one step if u have 12 woodpiles in your inventory, also u can craft plywoods.

*DRESSMAKER TABLE: You can craft your own clothes, needs 4 bandages and 1 item razor.

*WATERTANK:  used to fill waterbottles.

*DOWGRADE ALL THIS using the workshop menu.

*INFO MENUS into whorkshop menu.

VIDEO PREVIEW:

 

INSTALL:

WARNING ! I DONT HAVE INFISTAR SO I CANT TEST ON IT.

You will need a:
custom fn_selfActions.sqf
custom compiles.sqf
custom variables.sqf

1-Open your init.sqf

  Reveal hidden contents

find:

if (!isDedicated) then {

into this section paste:

//SERVER ELECTRIFY FENCES
[] execVM 'custom\scripts\workshop\serverfunction\server_electrify_init.sqf';

 


2-
A-Open your description.ext

  Reveal hidden contents

find:

into class CfgSounds {

paste into this section:

sounds4[] =
    {
    alarm
    };
    class alarm
    {
    name="alarm";
    sound[]={custom\scripts\workshop\sqfs\alarm.ogg,0.9,1};
    titles[] = {};
    };    
    sounds5[] =
    {
    electric
    };
    class electric
    {
    name="electric";
    sound[]={custom\scripts\workshop\sqfs\electric.ogg,0.9,1};
    titles[] = {};
    };    

 

B-Again in description.ext but at very bottom paste:

  Reveal hidden contents

//whorkshop
#include "custom\scripts\workshop\hpp\des.hpp"
#include "custom\scripts\workshop\hpp\workshopmenu.hpp"
#include "custom\scripts\workshop\hpp\wiringmenu.hpp"


4-Now go to your custom fn_selfactions.sqf
A-//(if ure using my build houses based on survived days skeep this steap)

  Reveal hidden contents

find:
_isModular = _cursorTarget isKindOf "ModularItems";

change for:

_isModular = (_cursorTarget isKindOf "ModularItems") or ((typeOf _cursorTarget) in DZE_SurvivedHouseRemove);

B-

  Reveal hidden contents

find:

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

above paste:
////////////////WORKSHOP///
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "MAP_kulna")) then {
if (s_player_managework < 0) then {
    s_player_managework = player addAction ["<t color='#66CCFF'>MANAGE WORKSHOP</t>", "custom\scripts\workshop\hpp\workshopmenu.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_managework;
    s_player_managework = -1;
    };

 

again but now bellow of :    if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

  Reveal hidden contents

 paste:

if (s_player_workshop < 0) then {
s_player_workshop = player addAction ["<t color='#66CCFF'>CRAFT-WORKSHOP</t>", "custom\scripts\workshop\createworkshop.sqf", [], 5, false];
    };


    
C-Bellow it u will find:

  Reveal hidden contents

} else {
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

paste above the player removeAction s_player_maintain_area;

    player removeAction s_player_workshop;
    s_player_workshop = -1;

so its looks:

  Reveal hidden contents

} else {
    player removeAction s_player_workshop;
    s_player_workshop = -1;
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

D-

  Reveal hidden contents

Find near the end:

} else {
//Engineering

paste bellow:

player removeAction s_player_managework;
s_player_managework = -1;
player removeAction s_player_workshop;
s_player_workshop = -1;

 


5-Now go to your custom compiles.sqf (if ure using my build houses based on survived days skeep this steap)

  Reveal hidden contents

find:
player_removeObject =            compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf";

change to:
    
player_removeObject =            compile preprocessFileLineNumbers "custom\scripts\workshop\serverfunction\remove.sqf";

 

6-In your custom variables.sqf

A-

  Reveal hidden contents

find:
dayz_allowedObjects =

inside it paste:

"MAP_plot_green_draty",

so its looks:

dayz_allowedObjects = ["MAP_plot_green_draty","TentStorage","TentStorageDomed",............];

 

B-

  Reveal hidden contents

Bellow

dayz_allowedObjects =  

paste:

DZE_SurvivedHouseRemove = ["MAP_plot_green_draty"];

**Note: ( if ure using my build houses based on survived just replace the wohle line of DZE_SurvivedHouseRemove = [
by:

DZE_SurvivedHouseRemove = ["MAP_plot_green_draty","GUE_WarfareBFieldhHospital","MAP_bouda2_vnitrek","MAP_deutshe_mini","MAP_Mil_Mil_Guardhouse"];

 

 

C-

  Reveal hidden contents

Find:

DZE_maintainClasses = [

paste inside:

"MAP_plot_green_draty",

so its looks:

DZE_maintainClasses = ["MAP_plot_green_draty","ModularItems",...............];

 

7-Now Download the folder:  Link: http://www.mediafire.com/download/t27ged2az0a9dft/workshop.rar

8-Paste into Mpmissions\instance_11.chernarus\

so your new path must beMpmissions\instance_11.chernarus\custom\scripts\workshop

 

Your video private :'(

Link to comment
Share on other sites

its needs a generator in inventory to start to craft.. my first idea was enable and disable the electrify trought the workshop  but i cant do it.. so i decided execute the electrify by server in all fences.

here i start a post about it, if u can help to modify it gonna be great!:

Spoiler

 

heres is the electrify_init   ( im using the plot_green_draty (fence) as a trigger to start the electrify action.. heres where the change must be maked to get do you want

Spoiler

msg = false;
electrify = false;

while {true} do {
    private ["_pos","_allconditions","_inRange","_trigger"];
    
    
    
    _trigger = ["MAP_plot_green_draty"];
    _pos = getPosATL player;
    _allconditions = (nearestObjects [_pos, _trigger, 2]);
    _inRange = count _allconditions > 0;
    
    
    
    if  (_inRange) then {
        if (!msg) then {
            cutText ['Electrified fences warning', 'PLAIN'];
            msg = true;
            [] execVM 'custom\scripts\workshop\serverfunction\server_electrify_action.sqf';
            [] execVM 'custom\scripts\workshop\serverfunction\server_electrify_zeds.sqf';
        };
    } else {
    r_player_unconscious = false;
    electrify = false;
    msg = false;
    };
};

another idea I had but discard was use Electro´s power plant to execute the server_electrify_init.sqf .. so when you are in this power
plant add a buttom or scroll menu action to start energy and electrified all fences.
 

 
Link to comment
Share on other sites

Спойлер

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?

Link to comment
Share on other sites

was faster then you @theduke

ok i fixed the infistar thing :D

took me a while but now i finally did it!

Spoiler

First go to .hpp files , the wiringmenu.hpp and workshopmenu.hpp

Then change these two

Spoiler


class workshopmenu
{
    idd = 500000;


class wiringmenu
{
    idd = 500001;
    movingenable=true;

 

into this

Spoiler


class workshopmenu
{
    idd = 7000;
    movingenable=true;


class wiringmenu
{
    idd = 7001;

 

After doing that, we have to tell infistar to notblock the dialogs, so go to your AHconfig.sqf

in there we have to add these two dialofg numbers under

Spoiler


_ALLOWED_Dialogs = _ALLOWED_Dialogs

so it looks like this:



_ALLOWED_Dialogs = _ALLOWED_Dialogs + [...,7000,7001};

 

you´re done and good to go :)

 

 

Link to comment
Share on other sites

On 1/8/2016 at 6:13 AM, Karabas said:
  Reveal hidden contents

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?

hey if u want  a tv and wacht tv:

first make a new sqf, called  uptv.sqf (paste into  custom\scripts\workshop\sqfs\)

Spoiler

private ["_playerPos","_nearRestr","_hasitem","_hastool","_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 = [["PartGeneric",2], "ItemPole"] call player_checkItems;
_playerPos = getPosATL player;
_nearRestr = count nearestObjects [_playerPos, ["SmallTV"], 45] > 0;
 
if (_nearRestr) exitWith {
cutText [format["You cannot build another TV in this plot area"], "PLAIN DOWN"];  
    DZE_ActionInProgress = false;
    };

if (!_hasitem) exitWith {cutText
[format["Needs 2x CinderBlocks + 1xPartWoodPlywood"], "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 =  "SmallTV";    
_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,3,0];
};

_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 > 6) exitWith {
        _isOk = false;
        _cancel = true;
        _reason = "You've moved too far away from where you started building (within 6 meters)";
        detach _object;
        deleteVehicle _object;
        detach _objectHelper;
        deleteVehicle _objectHelper;
    };
        
    if(_location1 distance _objectHelperPos > 6) exitWith {
        _isOk = false;
        _cancel = true;
        _reason = "Object is placed to far away from where you started building (within 6 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 = [["PartGeneric",2], "ItemPole"] 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;            

 

create another sqf, and paste in same location as above

gps.sqf

Spoiler

waitUntil { alive player };
    waituntil {!isnull (finddisplay 46)};
    hintsilent "Player Found! Running Script!";
    sleep 5;
    _CustomGpsVideo = ["custom\scripts\workshop\gps.ogv",1.04] spawn bis_fnc_customGPSvideo;

 

now open your whorkshopmenu.hpp

and find this lines:

Spoiler

class B13: jzRscButton
{
    idc = 1627;
    text = "WATERTANK";
    x = 0.383108 * safezoneW + safezoneX;
    y = 0.251291 * safezoneH + safezoneY;
    w = 0.133096 * safezoneW;
    h = 0.0303139 * safezoneH;
    colorBackground[] = {0.1,0.1,0.1,0.8};
    OnButtonClick = "((ctrlParent (_this select 0)) closeDisplay 7000);ExecVM 'custom\scripts\workshop\sqfs\upwater.sqf';";
};

replace by:

Spoiler

class B13: jzRscButton
{
    idc = 1627;
    text = "CRAFT TV";
    x = 0.383108 * safezoneW + safezoneX;
    y = 0.251291 * safezoneH + safezoneY;
    w = 0.133096 * safezoneW;
    h = 0.0303139 * safezoneH;
    colorBackground[] = {0.1,0.1,0.1,0.8};
    OnButtonClick = "((ctrlParent (_this select 0)) closeDisplay 7000);ExecVM 'custom\scripts\workshop\sqfs\uptv.sqf';";
};

now go at bottom of your fn_selfactions

paste:

Spoiler

//wach tv
private["_playerPos","_neartv"];

_playerPos = getPosATL player;
_neartv = count nearestObjects [_playerPos, ["SmallTV"], 3] > 0;
 
if (_neartv) then {
        if (s_player_tv < 0) then {
            s_player_tv = player addaction[("<t color=""#F7D708"">" + ("Wach TV+"</t>"),"custom\scripts\whorkshop\gps.sqf"];
        };
    } else {
        player removeAction s_player_tv;
        s_player_tv = -1;
    };       

Now you need change watertank info by tv info:

open infoupgrades.sqf

find and replace lines in red by your owns

Spoiler

<t size='0.75' shadow='1'align='left' color='#6599FF'>WATERTANK: You can fill your waterbottles by right click</t><br/>

and now open downgradewater.sqf

change this lines in red

Spoiler

_nearRestr = count nearestObjects [_playerPos, ["SmallTV"], 15] > 0;

sleep 2;


_delobj = nearestObject [player, "SmallTV"];

 

titleText ["Workshop and TV was removed", "PLAIN DOWN"];titleFadeOut 5;

 

now: u need to make an .ogv video format (call it gps.ogv) and paste into custom\scripts\whorkshop\gps.sqf    Then go to MANAGE WORKSHOP  pick Craft Tv,  then  use your mouse whell on tv and choose Wach TV

here you have one of my old scripts with a ogv video, use it  ogv file to test if u want

http://www.mediafire.com/download/6fiknw6aassaxpw/erotic.zip

Link to comment
Share on other sites

Is there a typo in this part?

            s_player_tv = player addaction[("<t color=""#F7D708"">" + ("Wach TV+"</t>"),"custom\scripts\whorkshop\gps.sqf"];
        };
    } else {
        player removeAction s_player_tv;
        s_player_tv = -1;
    };   

 

Looks like its missing " ) " somewhere

Link to comment
Share on other sites

44 minutes ago, chi said:

Is there a typo in this part?

            s_player_tv = player addaction[("<t color=""#F7D708"">" + ("Wach TV+"</t>"),"custom\scripts\whorkshop\gps.sqf"];
        };
    } else {
        player removeAction s_player_tv;
        s_player_tv = -1;
    };   

 

Looks like its missing " ) " somewhere

not in there, before it.  whole code:

Spoiler


//wach tv
private["_playerPos","_neartv"];

_playerPos = getPosATL player;
_neartent = count nearestObjects [_playerPos, ["SmallTV"], 3] > 0; 
 
if (_neartv) then {
        if (s_player_tv < 0) then {
            s_player_tv = player addaction[("<t color=""#F7D708"">" + ("Wach TV+"</t>"),"custom\scripts\whorkshop\gps.sqf"];
        };
    } else {
        player removeAction s_player_tv;
        s_player_tv = -1;
    };  

fix:

Spoiler

//wach tv
private["_playerPos","_neartv"];

_playerPos = getPosATL player;
_neartv = count nearestObjects [_playerPos, ["SmallTV"], 3] > 0; 
 
if (_neartv) then {
        if (s_player_tv < 0) then {
            s_player_tv = player addaction[("<t color=""#F7D708"">" + ("Wach TV+"</t>"),"custom\scripts\whorkshop\gps.sqf"];
        };
    } else {
        player removeAction s_player_tv;
        s_player_tv = -1;
    };  

 

Link to comment
Share on other sites

UPDATE V2.

NEW WORKSHOP OPTIONS:

*CRAFT MOUNTED M2: Allow players to craft  only one static M2 in plot area.Needs 4xscrapmetal + 4xmetalpole + 3xDSHKM ammo  (spawn with ammo, after restart ammo will be removed).

*CRAFT MOUNTED DSHKM: Allow players to craft  only one static DSHKM in plot area. Needs 4xscrapmetal + 4xmetalpole + 3xDSHKM ammo (spawn with ammo, after restart ammo will be removed).

*CRAFT MOUNTED LANTERN: Allow players to craft a Static Lantern. Needs 4Metal Pole +1xPartGlass +1xLightbulb +1xGenerator

*CRAFT KITCHEN: Player can craft a kitchen to cook any kind of meat. Its needs 1xitembandage + 1xpillowood + matchbox  returns 2 cooked meats

*CRAFT ANIMAL HOUSE: Players can craft an Animal House and use it to breed animals (only 4 animals per plot area). Its needs 4xlumbers + 4xPlywoods + Toolbox. Breeding needs 1xBurlap + 1xWaterBottle.

*CRAFT BARBED WIRE FENCES: You can craft barbed wire fences with 2xlumbers + 1xItemWire + toolbox

*CRAFT LARGE SANDBAGS: Craft "L" sandbags with 6xsandbags + toolbox in inventory.

*CRAFT SMALL NEST: A small nest to make better cover. 4xSandbags + 4xLumbers +Toolbox

*CRAFT A BOMB: This is dangerus, you have 50% chances to make explode your workshop so take care. Needs 1XEmptyBriefcast + 4xGranades +1xToolbox +1xWatch +1xGPS + 1xRadio.

*MAKE DRUGS: Using 1xPain Killers + 1xEphifedrine + 1Nearest Kitchen  you can cook drugs. But take care you can feel druged in the process.

*CRAFT HOUSES BASED ON SURVIVED DAYS: This include my mod "Craft houses based on survived days" at workshop.

Basically: Survive 2 days +4xWoodWalls +1xFloorCelling = SMALL HOUSE.//Survive 4 days +2xCinderWalls +1xFloorCelling = MIDDLE HOUSE.//Survive 6 days +2xCinderWalls +1xFloorCelling = LARGEHOUSE.//Survive 2 days + (+5000) Humanity + 2xCinderWalls +1xFloorCelling =Hero Hospital. (you can heal in there)

VIDEO PREVIEW OF NEW OPTIONS:

Spoiler

 

AND  THE OLD OPTIONS STILL WORKING:

*WIRING : Its a Wiring Fence electrified...  zeds and players gonna be electrified if is near of this fence.

*LOUDSPEAKERS: With this u can launch a plot alarm if ure base is under attack.

*ANTENNA : you can catch frecuencys and get some supplys

*CARPENTER BENCH: You can craft 10 lumbers in only one step if u have 12 woodpiles in your inventory, also u can craft plywoods.

*DRESSMAKER TABLE: You can craft your own clothes, needs 4 bandages and 1 item razor.

*WATERTANK:  used to fill waterbottles.

*DOWGRADE ALL THIS using the workshop menu.

*INFO MENUS into whorkshop menu.

INSTALLING:

***You will need a  custom: fn_selfactions.sqf//compiles.sqf//variables.sqf

DOWNLOAD HERE:http://www.mediafire.com/download/pyewpbmawt0k1d1/workshopV2.rar

1-IN INIT.SQF

Spoiler

find:

if (!isDedicated) then {

into this section paste:

//SERVER ELECTRIFY FENCES
[] execVM 'custom\scripts\workshop\serverfunction\server_electrify_init.sqf';

2-IN DESCRIPTION.EXT
A-

Spoiler

find:

into class CfgSounds {

paste into this section:

sounds4[] =
    {
    alarm
    };
    class alarm
    {
    name="alarm";
    sound[]={custom\scripts\workshop\sqfs\alarm.ogg,0.9,1};
    titles[] = {};
    };    
    sounds5[] =
    {
    electric
    };
    class electric
    {
    name="electric";
    sound[]={custom\scripts\workshop\sqfs\electric.ogg,0.9,1};
    titles[] = {};
    };    

B-Again in description.ext but at very bottom paste:

Spoiler

//whorkshop
#include "custom\scripts\workshop\hpp\des.hpp"
#include "custom\scripts\workshop\hpp\workshopmenu.hpp"

 

4-NOW IN CUSTOM FN_SELFACTIONS.SQF

A-

Spoiler

find:
_isModular = _cursorTarget isKindOf "ModularItems";

change for:

_isModular = (_cursorTarget isKindOf "ModularItems") or ((typeOf _cursorTarget) in DZE_SurvivedHouseRemove);

B-

Spoiler

find:

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

above paste:

////////////////WORKSHOP HOSPITAL HERO USE HEAL OPTION///
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "GUE_WarfareBFieldhHospital")) then {
if (s_player_hospitalhero < 0) then {
    s_player_hospitalhero = player addAction ["<t color='#ff5200'>HEAL IN TENT</t>", "custom\scripts\workshop\sqfs\healhospital.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_hospitalhero;
    s_player_hospitalhero = -1;
    };
 ///////////////////////////////////////////

////////////////OPEN WORKSHOP MENU////////////////////////////
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "MAP_kulna")) then {
if (s_player_managework < 0) then {
    s_player_managework = player addAction ["<t color='#66CCFF'>MANAGE WORKSHOP</t>", "custom\scripts\workshop\hpp\workshopmenu.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_managework;
    s_player_managework = -1;
    };

C-Again but now bellow of :    if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

Spoiler

if (s_player_workshop < 0) then {
s_player_workshop = player addAction ["<t color='#66CCFF'>CRAFT-WORKSHOP</t>", "custom\scripts\workshop\createworkshop.sqf", [], 5, false];
    };

D-Bellow it u will find:

Spoiler

} else {
    player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

paste :

player removeAction s_player_workshop;
s_player_workshop = -1;

above the player removeAction s_player_maintain_area;

So steps B,C,D looks:

Spoiler

 ////////////////WORKSHOP HOSPITAL HERO USE HEAL OPTION///
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "GUE_WarfareBFieldhHospital")) then {
if (s_player_hospitalhero < 0) then {
    s_player_hospitalhero = player addAction ["<t color='#ff5200'>HEAL IN TENT</t>", "custom\scripts\workshop\sqfs\healhospital.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_hospitalhero;
    s_player_hospitalhero = -1;
    };
 ///////////////////////////////////////////

////////////////OPEN WORKSHOP MENU////////////////////////////
if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "MAP_kulna")) then {
if (s_player_managework < 0) then {
    s_player_managework = player addAction ["<t color='#66CCFF'>MANAGE WORKSHOP</t>", "custom\scripts\workshop\hpp\workshopmenu.sqf", [], 5, false];
    };
    } else {
    player removeAction s_player_managework;
    s_player_managework = -1;
    };

if (_canDo && (speed player <= 1) && (_cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then {

if (s_player_workshop < 0) then {
s_player_workshop = player addAction ["<t color='#66CCFF'>CRAFT-WORKSHOP</t>", "custom\scripts\workshop\createworkshop.sqf", [], 5, false];
    };

} else {
    
    player removeAction s_player_workshop;
    s_player_workshop = -1;

   player removeAction s_player_maintain_area;
    s_player_maintain_area = -1;
    player removeAction s_player_maintain_area_preview;
    s_player_maintain_area_preview = -1;
};

E-

Spoiler

Find near of fn_selfactions  end: ( Paste only lines in Black. I put the other lines to give u a reference)

} else {
//Engineering

paste bellow:

player removeAction s_player_managework;
s_player_managework = -1;
player removeAction s_player_workshop;
s_player_workshop = -1;

{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
    s_player_repair_crtl = -1;
    {player removeAction _x} count s_player_combi;s_player_combi = [];
    dayz_myCursorTarget = objNull;
    s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
    {player removeAction _x} count s_player_parts;s_player_parts = [];
    s_player_parts_crtl = -1;
    {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
    s_player_lockUnlock_crtl = -1;
    player removeAction s_player_checkGear;
    s_player_checkGear = -1;
    player removeAction s_player_SurrenderedGear;
    s_player_SurrenderedGear = -1;
    player removeAction s_player_forceSave;
    s_player_forceSave = -1;

5-IN CUSTOM COMPILES.SQF

A-

Spoiler

find:
player_removeObject =            compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf";

change to:
    
player_removeObject =            compile preprocessFileLineNumbers "custom\scripts\workshop\serverfunction\remove.sqf";

6-IN CUSTOM VARIABLES.SQF

 

A-

Spoiler

Find:

dayz_allowedObjects = ["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

Replace with:

dayz_allowedObjects = advworkshop +["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

 

 

B-

Spoiler

In the new :
dayz_allowedObjects = advworkshop +["......", .........................................];

Paste Above:

advworkshop = ["MAP_kulna","Land_Misc_Well_L_EP1","MAP_Misc_Boogieman","MAP_Shed_W01","MAP_P_Stavebni_kozy","MAP_parabola_big","MAP_office_table_a","Loudspeakers_EP1","MAP_Dkamna_bila","MAP_plot_green_draty","GUE_WarfareBFieldhHospital","MAP_bouda2_vnitrek","MAP_deutshe_mini","MAP_Mil_Mil_Guardhouse","MAP_Pristresek_mensi","Land_fort_bagfence_corner","MAP_plot_provizorni","M2StaticMG_US_EP1","DSHKM_Gue","SearchLight_RUS"];

C-

Spoiler

Now Bellow:

dayz_allowedObjects = advworkshop +["......", .........................................];

paste:

DZE_SurvivedHouseRemove = advworkshop;

D-

Spoiler

Find:

DZE_maintainClasses = ["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems",.............................."MORE IDS."];

put ONLY lines in blue:

DZE_maintainClasses = advworkshop +["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems",................MORE IDS"];

 

 

 

 

***SO STEPS A,B,C,D looks: (see lines in blue)***

Spoiler

advworkshop = ["MAP_kulna","Land_Misc_Well_L_EP1","MAP_Misc_Boogieman","MAP_Shed_W01","MAP_P_Stavebni_kozy","MAP_parabola_big","MAP_office_table_a","Loudspeakers_EP1","MAP_Dkamna_bila","MAP_plot_green_draty","GUE_WarfareBFieldhHospital","MAP_bouda2_vnitrek","MAP_deutshe_mini","MAP_Mil_Mil_Guardhouse","MAP_Pristresek_mensi","Land_fort_bagfence_corner","MAP_plot_provizorni","M2StaticMG_US_EP1","DSHKM_Gue","SearchLight_RUS"];


dayz_allowedObjects = advworkshop +["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","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","Generator_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"];

DZE_SurvivedHouseRemove = advworkshop;

DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];
DZE_UnLockedStorage = ["VaultStorage","LockboxStorage"];
DZE_maintainClasses = advworkshop +["ModularItems","DZE_Housebase","LightPole_DZ","BuiltItems","Plastic_Pole_EP1_DZ","Fence_corrugated_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","StickFence_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","DeerStand_DZ","Scaffolding_DZ","FireBarrel_DZ"];

 

F:

Spoiler

 find
DZE_safeVehicle = ["ParachuteWest","ParachuteC"];

change
DZE_safeVehicle = advworkshop + ["ParachuteWest","ParachuteC"];

7-NOW YOU NEED GO TO YOUR dayz_server.pbo UNPACK IT.

A-open server_functions.sqf find:

Spoiler

find:
fnc_plyrHit   =                    compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";
add bellow
//Fnc removing workshop ammo
fnc_wra =                compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_wra.sqf";

B-OPEN THIS 3 FILES AND MAKE THE SAME CHANGES FOR EACH ONE.

server_monitor.sqf // server_publishVehicle2.sqf // server_publishVehicle3.sqf

Spoiler

Find:

clearWeaponCargoGlobal  _object;

Paste Above:

//weaponworkshop remove ammo
call fnc_wra;
//weaponworkshop remove ammo

C-Now take the "fnc_wra.sqf" located in download folder and drop it into  ....\@DayZ_Epoch_Server\addons\dayz_server\compile\

Done. You can repack your dayz_server.pbo.

8-CREATE THE PATH AND PLACE DOWNLOAD FOLDER

create: ......\MPMissions\DayZ_Epoch_11.Chernarus\custom\scripts\

and drop "workshop" folder inside.

9-ONLY INFISTAR USERS

tell infistar to notblock the dialogs, so go to your AHconfig.sqf ( tnks @Cherdenko)

in there we have to add these two dialofg numbers under:

Spoiler

_ALLOWED_Dialogs = _ALLOWED_Dialogs + [...,7000,7001,7002,7003};

 

 

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
  • Discord

×
×
  • Create New...