Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
DrSova

Emerald Interior Designer + Мои дополнения

Рекомендованные сообщения

Описание:

 

Если вам не нравится, что ваш дом выглядит очень пусто, то это дополнение для вас. Он позволяет устанавливать стулья, столы, кровати и еще много чего интересного.

Внимание! Для установки требуется аддон extra_rc

 

Установка:

 

Открываем ваш extra_rc.hpp и дописываем туда:

 

 

class ExtraRc {
    class ItemEmerald {
class PicFrame {
text = "Picture Frame";
script = "createDialog ""WGT_INTERIOR1"";";
};
        class Chairs {
text = "Chair";
script = "createDialog ""WGT_INTERIOR2"";";
};
        class Beds {
text = "Bed";
script = "createDialog ""WGT_INTERIOR3"";";
};
        class Bath {
text = "Bathroom";
script = "createDialog ""WGT_INTERIOR4"";";
};
        class Shelf {
text = "Shelf";
script = "createDialog ""WGT_INTERIOR5"";";
};
        class Misce {
text = "Misc";
script = "createDialog ""WGT_INTERIOR6"";";
};
        class Tablz {
text = "Table";
script = "createDialog ""WGT_INTERIOR7"";";
};
        class extr {
text = "Exterior";
script = "createDialog ""WGT_INTERIOR8"";";
};
};
}; 

 


Открываем Variables.sqf. Находим строчку:

 

dayz_allowedObjects = ["TentStorage"........ 

 

Приписываем туда:

 

 

dayz_allowedObjects = [
"MAP_picture_a",
"MAP_picture_a_02",
"MAP_picture_a_03",
"MAP_picture_a_04",
"MAP_picture_a_05",
"MAP_picture_b",
"MAP_picture_b_02",
"MAP_picture_c",
"MAP_picture_c_02",
"MAP_picture_d",
"MAP_picture_e",
"MAP_picture_f",
"MAP_picture_f_02",
"MAP_picture_g",
"MAP_wall_board",
"MAP_wall_board_02",
"MAP_wall_board_03",
"MAP_F_ch_mod_c",
"MAP_ch_mod_h",
"MAP_armchair",
"MAP_ch_mod_h",
"MAP_ch_office_B",
"MAP_chair",
"MAP_Church_chair",
"MAP_hospital_bench",
"MAP_kitchen_chair_a",
"MAP_lavicka_1",
"MAP_lavicka_2",
"MAP_lavicka_3",
"MAP_lavicka_4",
"MAP_lobby_chair",
"MAP_office_chair",
"MAP_F_postel_manz_kov",
"MAP_F_postel_panelak1",
"MAP_F_postel_panelak2",
"MAP_F_Vojenska_palanda",
"MAP_postel_manz_kov",
"MAP_postel_panelak1",
"MAP_vojenska_palanda",
"MAP_fridge",
"MAP_Kitchenstove_Elec",
"MAP_washing_machine",
"MAP_P_Basin_A",
"MAP_P_bath",
"MAP_F_bath",
"MAP_lekarnicka",
"MAP_P_sink",
"MAP_toilet_b",
"MAP_P_toilet_b_02",
"MAP_almara",
"MAP_case_a",
"MAP_case_bedroom_a",
"MAP_case_bedroom_b",
"MAP_case_cans_b",
"MAP_case_d",
"MAP_case_wall_unit_part_c",
"MAP_case_wall_unit_part_d",
"MAP_case_wooden_b",
"MAP_Dhangar_borwnskrin",
"MAP_Dhangar_brownskrin",
"MAP_Dhangar_knihovna",
"MAP_library_a",
"MAP_shelf",
"MAP_Skrin_bar",
"MAP_Skrin_opalena",
"MAP_Truhla_stara",
"MAP_briefcase",
"MAP_Dkamna_bila",
"MAP_Dkamna_uhli",
"MAP_F_Dkamna_uhli",
"MAP_icebox",
"MAP_mutt_vysilacka",
"MAP_notebook",
"MAP_pc",
"MAP_phonebox",
"MAP_radio",
"MAP_radio_b",
"MAP_satelitePhone",
"MAP_smallTV",
"MAP_tv_a",
"MAP_vending_machine",
"MAP_lantern",
"MAP_bucket",
"MAP_MetalBucket",
"MAP_FuelCan",
"MAP_SmallObj_money",
"MAP_conference_table_a",
"MAP_desk",
"MAP_Dhangar_psacistul",
"MAP_F_conference_table_a",
"MAP_kitchen_table_a",
"MAP_lobby_table",
"MAP_office_table_a",
"MAP_pultskasou",
"MAP_SmallTable",
"MAP_stul_hospoda",
"MAP_stul_kuch1",
"MAP_Table",
"MAP_table_drawer",
"MAP_kasna_new",
"MAP_Misc_Boogieman",
"MAP_ChickenCoop",
"MAP_Misc_Greenhouse",
"MAP_Misc_Hutch",
"MAP_Misc_Well",
"MAP_Misc_WellPump",
"MAP_PowerGenerator",
"MAP_psi_bouda",
"MAP_pumpa",
"MAP_stanek_3",
"MAP_stanek_3_d",
"MAP_stanek_3B",
"MAP_AirCond_big",
"MAP_AirCond_small",
"MAP_antenna_big_roof",
"MAP_antenna_small_roof",
"MAP_antenna_small_roof_1",
"MAP_drapes",
"MAP_drapes_long",
"MAP_GasMeterExt",
"MAP_Ladder",
"MAP_P_Ladder",
"MAP_LadderHalf",
"MAP_P_LadderLong",
"MAP_leseni2x",
"MAP_leseni4x",
"MAP_Misc_loudspeakers",
"MAP_parabola_big",
"MAP_P_Stavebni_kozy",
"MAP_Heli_H_civil",
"MAP_Heli_H_army",
"MAP_Heli_H_cross",
"MAP_Heli_H_rescue",
"MAP_Sr_border",
"MAP_drevo_hromada",
"MAP_garbage_misc",
"MAP_garbage_paleta",
"MAP_Ind_BoardsPack1",
"MAP_Ind_BoardsPack2",
"MAP_Ind_Timbers",
"MAP_Kontejner",
"MAP_Misc_GContainer_Big",
"MAP_Misc_HayStack",
"MAP_Misc_TyreHeap",
"MAP_Misc_WoodPile",
"MAP_pneu",
"MAP_popelnice",
"MAP_sekyraspalek",
"MAP_seno_balik",
"MAP_concrete_block",
"MAP_Concrete_Ramp",
"MAP_ramp_concrete",
"MAP_woodenRamp",
"MAP_brana",
"MAP_Houpacka",
"MAP_nastenkaX",
"MAP_Piskoviste",
"MAP_snowman",
"MAP_Barel1",
"MAP_Barel3",
"MAP_Barel4",
"MAP_Barel5",
"MAP_Barel6",
"MAP_Barel7",
"MAP_Barel8",
"MAP_Barels",
"MAP_Barels2",
"MAP_Barels3",
"MAP_barrel_empty",
"MAP_barrel_sand",
"MAP_barrel_water",
"MAP_P_bedna",
"MAP_box_c",
"MAP_P_cihly1",
"MAP_P_cihly2",
"MAP_P_cihly3",
"MAP_P_cihly4",
"MAP_metalcrate",
"MAP_metalcrate_02",
"Misc_concrete",
"MAP_Misc_G_Pipes",
"MAP_Misc_palletsfoiled",
"MAP_Misc_palletsfoiled_heap",
"MAP_obstacle_get_over",
"MAP_obstacle_prone",
"MAP_obstacle_run_duck",
"MAP_paletaA",
"MAP_paletyC",
"MAP_paletyD",
"MAP_Pallets_Column",
"MAP_P_pipe_big",
"MAP_P_pipe_small",
"MAP_P_ytong",

 


Открываем свой description.ext и в самый низ прописываем:

 

 

#include "interior\defines.hpp"
#include "interior\dialogs.hpp"
 

Создаем папку interior. Там же создаем defines.hpp и вписываем в него:

 

 

 

// Control types
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
#define CT_LISTBOX 5
#define CT_TOOLBOX 6
#define CT_CHECKBOXES 7
#define CT_PROGRESS 8
#define CT_HTML 9
#define CT_STATIC_SKEW 10
#define CT_ACTIVETEXT 11
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_CONTEXT_MENU 14
#define CT_CONTROLS_GROUP 15
#define CT_SHORTCUTBUTTON 16
#define CT_BOX                 17
#define CT_XKEYDESC 40
#define CT_XBUTTON 41
#define CT_XLISTBOX 42
#define CT_XSLIDER 43
#define CT_XCOMBO 44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT 80
#define CT_OBJECT_ZOOM 81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK 98
#define CT_USER 99
#define CT_MAP 100
#define CT_MAP_MAIN 101
#define CT_LISTNBOX 102

// Static styles
#define ST_POS 0x0F
#define ST_HPOS 0x03
#define ST_VPOS 0x0C
#define ST_LEFT 0x00
#define ST_RIGHT 0x01
#define ST_CENTER 0x02
#define ST_DOWN 0x04
#define ST_UP 0x08
#define ST_VCENTER 0x0C
#define ST_GROUP_BOX 96
#define ST_GROUP_BOX2 112
#define ST_ROUNDED_CORNER ST_GROUP_BOX + ST_CENTER
#define ST_ROUNDED_CORNER2 ST_GROUP_BOX2 + ST_CENTER

#define ST_TYPE 0xF0
#define ST_SINGLE 0x00
#define ST_MULTI 0x10
#define ST_TITLE_BAR 0x20
#define ST_PICTURE 0x30
#define ST_FRAME 0x40
#define ST_BACKGROUND 0x50
#define ST_GROUP_BOX 0x60
#define ST_GROUP_BOX2 0x70
#define ST_HUD_BACKGROUND 0x80
#define ST_TILE_PICTURE 0x90
#define ST_WITH_RECT 0xA0
#define ST_LINE 0xB0

#define ST_SHADOW 0x100
#define ST_NO_RECT 0x200
#define ST_KEEP_ASPECT_RATIO 0x800

#define ST_TITLE ST_TITLE_BAR + ST_CENTER

// Slider styles
#define SL_DIR 0x400
#define SL_VERT 0
#define SL_HORZ 0x400

#define SL_TEXTURES 0x10

// progress bar 
#define ST_VERTICAL 0x01
#define ST_HORIZONTAL 0

// Listbox styles
#define LB_TEXTURES 0x10
#define LB_MULTI 0x20

// Tree styles
#define TR_SHOWROOT 1
#define TR_AUTOCOLLAPSE 2

// MessageBox styles
#define MB_BUTTON_OK 1
#define MB_BUTTON_CANCEL 2
#define MB_BUTTON_USER 4


////////////////
//Base Classes//
////////////////

class RscText
{
access = 0;
idc = -1;
type = CT_STATIC;
style = ST_MULTI;
linespacing = 1;
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,.5};
text = "";
shadow = 2;
font = "Bitstream";
SizeEx = 0.02300;
fixedWidth = 0;
x = 0;
y = 0;
h = 0;
w = 0;

};

class RscPicture
{
access = 0;
idc = -1;
type = CT_STATIC;
style = ST_PICTURE;
colorBackground[] = {0,0,0,0};
colorText[] = {1,1,1,1};
font = "Bitstream";
sizeEx = 0;
lineSpacing = 0;
text = "";
fixedWidth = 0;
shadow = 0;
x = 0;
y = 0;
w = 0.2;
h = 0.15;
};

class RscFrame
{
type = CT_STATIC;
idc = -1;
style = ST_FRAME;
shadow = 2;
colorBackground[] = {1,1,1,1};
colorText[] = {1,1,1,0.9};
font = "Bitstream";
sizeEx = 0.03;
text = "";
};

class BOX
{
type = CT_STATIC;
idc = -1;
style = ST_CENTER;
shadow = 2;
colorText[] = {1,1,1,1};
font = "Bitstream";
sizeEx = 0.02;
colorBackground[] = { 0.2,0.2,0.2, 0.8 };
text = ""; 

};

class RscCombo
{
    access = 0;
    type = 4;
    style = 0;
    colorSelect[] = {0.023529,0,0.0313725,1};
    colorText[] = {0.023529,0,0.0313725,1};
    colorBackground[] = {0.95,0.95,0.95,1};
    colorScrollbar[] = {0.023529,0,0.0313725,1};
    soundSelect[] = {"",0.1,1};
    soundExpand[] = {"",0.1,1};
    soundCollapse[] = {"",0.1,1};
    maxHistoryDelay = 1;
    class ScrollBar
    {
        color[] = {1,1,1,0.6};
        colorActive[] = {1,1,1,1};
        colorDisabled[] = {1,1,1,0.3};
        shadow = 0;
        thumb = "\ca\ui\data\ui_scrollbar_thumb_ca.paa";
        arrowFull = "\ca\ui\data\ui_arrow_top_active_ca.paa";
        arrowEmpty = "\ca\ui\data\ui_arrow_top_ca.paa";
        border = "\ca\ui\data\ui_border_scroll_ca.paa";
    };
    x = 0;
    y = 0;
    w = 0.12;
    h = 0.035;
    shadow = 0;
    colorSelectBackground[] = {0.8784,0.8471,0.651,1};
    arrowEmpty = "\ca\ui\data\ui_arrow_combo_ca.paa";
    arrowFull = "\ca\ui\data\ui_arrow_combo_active_ca.paa";
    wholeHeight = 0.45;
    color[] = {0,0,0,0.6};
    colorActive[] = {0,0,0,1};
    colorDisabled[] = {0,0,0,0.3};
    font = "Zeppelin32";
    sizeEx = 0.03921;
};

class RscShortcutButton
{
    type = 16;
    x = 0.1;
    y = 0.1;
    class HitZone
    {
        left = 0.004;
        top = 0.029;
        right = 0.004;
        bottom = 0.029;
    };
    class ShortcutPos
    {
        left = 0.0145;
        top = 0.026;
        w = 0.0392157;
        h = 0.0522876;
    };
    class TextPos
    {
        left = 0.05;
        top = 0.034;
        right = 0.005;
        bottom = 0.005;
    };
    shortcuts[] = {};
    textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)";
    color[] = {0.8784,0.8471,0.651,1};
    color2[] = {0.95,0.95,0.95,1};
    colorDisabled[] = {1,1,1,0.25};
    colorBackground[] = {1,1,1,1};
    colorBackground2[] = {1,1,1,0.4};
    class Attributes
    {
        font = "Zeppelin32";
        color = "#E5E5E5";
        align = "left";
        shadow = "true";
    };
    idc = -1;
    style = 0;
    default = 0;
    shadow = 2;
    w = 0.183825;
    h = 0.104575;
    periodFocus = 1.2;
    periodOver = 0.8;
    animTextureNormal = "\ca\ui\data\ui_button_normal_ca.paa";
    animTextureDisabled = "\ca\ui\data\ui_button_disabled_ca.paa";
    animTextureOver = "\ca\ui\data\ui_button_over_ca.paa";
    animTextureFocused = "\ca\ui\data\ui_button_focus_ca.paa";
    animTexturePressed = "\ca\ui\data\ui_button_down_ca.paa";
    animTextureDefault = "\ca\ui\data\ui_button_default_ca.paa";
    period = 0.4;
    font = "Zeppelin32";
    size = 0.03921;
    sizeEx = 0.03921;
    text = "";
    soundEnter[] = {"\ca\ui\data\sound\onover",0.09,1};
    soundPush[] = {"\ca\ui\data\sound\new1",0,0};
    soundClick[] = {"\ca\ui\data\sound\onclick",0.07,1};
    soundEscape[] = {"\ca\ui\data\sound\onescape",0.09,1};
    action = "";
    class AttributesImage
    {
        font = "Zeppelin32";
        color = "#E5E5E5";
        align = "left";
    };
}; 

 

 

Создаем dialogs.hpp в той же папке и вписываем туда:

 

 

 

class WGT_INTERIOR1
{
    idd = 10667;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox1: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame1: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose1: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired1;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel1: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic1: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo1: RscCombo
        {
            idc = 2667;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

class WGT_INTERIOR2
{
    idd = 10668;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox2: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame2: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose2: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired2;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel2: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic2: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo2: RscCombo
        {
            idc = 2668;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

class WGT_INTERIOR3
{
    idd = 10669;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox3: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame3: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose3: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired3;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel3: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic3: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo3: RscCombo
        {
            idc = 2669;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

class WGT_INTERIOR4
{
    idd = 10670;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox4: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame4: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose4: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired4;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel4: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic4: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo4: RscCombo
        {
            idc = 2670;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

class WGT_INTERIOR5
{
    idd = 10671;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox5: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame5: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose5: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired5;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel5: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic5: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo5: RscCombo
        {
            idc = 2671;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

class WGT_INTERIOR6
{
    idd = 10672;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox6: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame6: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose6: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired6;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel6: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic6: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo6: RscCombo
        {
            idc = 2672;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

class WGT_INTERIOR7
{
    idd = 10673;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox7: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame7: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose7: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired7;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel7: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic7: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo7: RscCombo
        {
            idc = 2673;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};


class WGT_INTERIOR8
{
    idd = 10674;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\items.sqf'";
    
    class Controls
    {

        class dialogBox8: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame8: RscFrame
        {
            idc = -1;
            text = "Interior Designer";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose8: RscShortcutButton
        {
            idc = -1;
            text = "Spawn";
            x = 0.454806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_fired8;_nil=[]ExecVM ""interior\spawn.sqf"";closeDialog 0;";
        };
        class dialogCancel8: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.520496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogPic8: RscPicture
        {
            idc = -1;
            text = "interior\emerald.paa";
            x = 0.412763 * safezoneW + safezoneX;
            y = 0.478468 * safezoneH + safezoneY;
            w = 0.0320813 * safezoneW;
            h = 0.0690587 * safezoneH;
        };
        class dialogCombo8: RscCombo
        {
            idc = 2674;
            text = "Choose your item";
            x = 0.45638 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

 


 

Создаем items.sqf в той же папке и прописываем туда:

 

 

disableSerialization;
//Define idc's for controls for easy access 
_comboBoxA = 2667;
_comboBoxB = 2668;
_comboBoxC = 2669;
_comboBoxD = 2670;
_comboBoxE = 2671;
_comboBoxF = 2672;
_comboBoxG = 2673;
_comboBoxH = 2674; 

//store display, passed from onLoad 
_display = _this select 0; 

 

 

 

 

//Add to picture
{
_index = lbAdd [_comboBoxA, _x]; 
} forEach [
"MAP_picture_a",
"MAP_picture_a_02",
"MAP_picture_a_03",
"MAP_picture_a_04",
"MAP_picture_a_05",
"MAP_picture_b",
"MAP_picture_b_02",
"MAP_picture_c",
"MAP_picture_c_02",
"MAP_picture_d",
"MAP_picture_e",
"MAP_picture_f",
"MAP_picture_f_02",
"MAP_picture_g",
"MAP_wall_board",
"MAP_wall_board_02",
"MAP_wall_board_03"
]; 

//Add to chair
{
_index = lbAdd [_comboBoxB, _x]; 
} forEach [
"MAP_F_ch_mod_c",
"MAP_ch_mod_h",
"MAP_armchair",
"MAP_ch_mod_h",
"MAP_ch_office_B",
"MAP_chair",
"MAP_Church_chair",
"MAP_hospital_bench",
"MAP_kitchen_chair_a",
"MAP_lavicka_1",
"MAP_lavicka_2",
"MAP_lavicka_3",
"MAP_lavicka_4",
"MAP_lobby_chair",
"MAP_office_chair"
]; 

//Add to bed
{
_index = lbAdd [_comboBoxC, _x]; 
} forEach [
"MAP_F_postel_manz_kov",
"MAP_F_postel_panelak1",
"MAP_F_postel_panelak2",
"MAP_F_Vojenska_palanda",
"MAP_postel_manz_kov",
"MAP_postel_panelak1",
"MAP_vojenska_palanda"
];

//Add to Bathroom
{
_index = lbAdd [_comboBoxD, _x]; 
} forEach [
"MAP_fridge",
"MAP_Kitchenstove_Elec",
"MAP_washing_machine",
"MAP_P_Basin_A",
"MAP_P_bath",
"MAP_F_bath",
"MAP_lekarnicka",
"MAP_P_sink",
"MAP_toilet_b",
"MAP_P_toilet_b_02"
];

//Add to Shelf
{
_index = lbAdd [_comboBoxE, _x]; 
} forEach [
"MAP_almara",
"MAP_case_a",
"MAP_case_bedroom_a",
"MAP_case_bedroom_b",
"MAP_case_cans_b",
"MAP_case_d",
"MAP_case_wall_unit_part_c",
"MAP_case_wall_unit_part_d",
"MAP_case_wooden_b",
"MAP_Dhangar_borwnskrin",
"MAP_Dhangar_brownskrin",
"MAP_Dhangar_knihovna",
"MAP_library_a",
"MAP_shelf",
"MAP_Skrin_bar",
"MAP_Skrin_opalena",
"MAP_Truhla_stara"
];

//Add to Misc
{
_index = lbAdd [_comboBoxF, _x]; 
} forEach [
"MAP_briefcase",
"MAP_Dkamna_bila",
"MAP_Dkamna_uhli",
"MAP_F_Dkamna_uhli",
"MAP_icebox",
"MAP_mutt_vysilacka",
"MAP_notebook",
"MAP_pc",
"MAP_phonebox",
"MAP_radio",
"MAP_radio_b",
"MAP_satelitePhone",
"MAP_smallTV",
"MAP_tv_a",
"MAP_vending_machine",
"MAP_lantern",
"MAP_bucket",
"MAP_MetalBucket",
"MAP_FuelCan",
"MAP_SmallObj_money"
];

//Add to table
{
_index = lbAdd [_comboBoxG, _x]; 
} forEach [
"MAP_conference_table_a",
"MAP_desk",
"MAP_Dhangar_psacistul",
"MAP_F_conference_table_a",
"MAP_kitchen_table_a",
"MAP_lobby_table",
"MAP_office_table_a",
"MAP_pultskasou",
"MAP_SmallTable",
"MAP_stul_hospoda",
"MAP_stul_kuch1",
"MAP_Table",
"MAP_table_drawer"
];

//Add to exterior
{
_index = lbAdd [_comboBoxH, _x]; 
} forEach [
"MAP_kasna_new",
"MAP_Misc_Boogieman",
"MAP_ChickenCoop",
"MAP_Misc_Greenhouse",
"MAP_Misc_Hutch",
"MAP_Misc_Well",
"MAP_Misc_WellPump",
"MAP_PowerGenerator",
"MAP_psi_bouda",
"MAP_pumpa",
"MAP_stanek_3",
"MAP_stanek_3_d",
"MAP_stanek_3B",
"MAP_AirCond_big",
"MAP_AirCond_small",
"MAP_antenna_big_roof",
"MAP_antenna_small_roof",
"MAP_antenna_small_roof_1",
"MAP_drapes",
"MAP_drapes_long",
"MAP_GasMeterExt",
"MAP_Ladder",
"MAP_P_Ladder",
"MAP_LadderHalf",
"MAP_P_LadderLong",
"MAP_leseni2x",
"MAP_leseni4x",
"MAP_Misc_loudspeakers",
"MAP_parabola_big",
"MAP_P_Stavebni_kozy",
"MAP_Heli_H_civil",
"MAP_Heli_H_army",
"MAP_Heli_H_cross",
"MAP_Heli_H_rescue",
"MAP_Sr_border",
"MAP_drevo_hromada",
"MAP_garbage_misc",
"MAP_garbage_paleta",
"MAP_Ind_BoardsPack1",
"MAP_Ind_BoardsPack2",
"MAP_Ind_Timbers",
"MAP_Kontejner",
"MAP_Misc_GContainer_Big",
"MAP_Misc_HayStack",
"MAP_Misc_TyreHeap",
"MAP_Misc_WoodPile",
"MAP_pneu",
"MAP_popelnice",
"MAP_sekyraspalek",
"MAP_seno_balik",
"MAP_concrete_block",
"MAP_Concrete_Ramp",
"MAP_ramp_concrete",
"MAP_woodenRamp",
"MAP_brana",
"MAP_Houpacka",
"MAP_nastenkaX",
"MAP_Piskoviste",
"MAP_snowman",
"MAP_Barel1",
"MAP_Barel3",
"MAP_Barel4",
"MAP_Barel5",
"MAP_Barel6",
"MAP_Barel7",
"MAP_Barel8",
"MAP_Barels",
"MAP_Barels2",
"MAP_Barels3",
"MAP_barrel_empty",
"MAP_barrel_sand",
"MAP_barrel_water",
"MAP_P_bedna",
"MAP_box_c",
"MAP_P_cihly1",
"MAP_P_cihly2",
"MAP_P_cihly3",
"MAP_P_cihly4",
"MAP_metalcrate",
"MAP_metalcrate_02",
"Misc_concrete",
"MAP_Misc_G_Pipes",
"MAP_Misc_palletsfoiled",
"MAP_Misc_palletsfoiled_heap",
"MAP_obstacle_get_over",
"MAP_obstacle_prone",
"MAP_obstacle_run_duck",
"MAP_paletaA",
"MAP_paletyC",
"MAP_paletyD",
"MAP_Pallets_Column",
"MAP_P_pipe_big",
"MAP_P_pipe_small",
"MAP_P_ytong"
]; 

 


 

Создаем файл spawn.sqf в той же папке и прописываем туда:

 

 

 

private ["_plotReq","_proceed","_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"];

_plotReq = true; //Plotpole requirement to build enabled

fnc_Pos_fired1 = {
disableSerialization;
_indexPic = lbCurSel 2667; // index of selection
_returnTextPic = lbText [2667, _indexPic]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexPic,_returnTextPic];// display the value
classnameChange = _returnTextPic;
};

fnc_Pos_fired2 = {
disableSerialization;
_indexChair = lbCurSel 2668; // index of selection
_returnTextChair = lbText [2668, _indexChair]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexChair,_returnTextChair];// display the value
classnameChange = _returnTextChair;
};

fnc_Pos_fired3 = {
disableSerialization;
_indexBed = lbCurSel 2669; // index of selection
_returnTextBed = lbText [2669, _indexBed]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexBed,_returnTextBed];// display the value
classnameChange = _returnTextBed;
};

fnc_Pos_fired4 = {
disableSerialization;
_indexBath = lbCurSel 2670; // index of selection
_returnTextBath = lbText [2670, _indexBath]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexBath,_returnTextBath];// display the value
classnameChange = _returnTextBath;
};

fnc_Pos_fired5 = {
disableSerialization;
_indexShelf = lbCurSel 2671; // index of selection
_returnTextShelf = lbText [2671, _indexShelf]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexShelf,_returnTextShelf];// display the value
classnameChange = _returnTextShelf;
};

fnc_Pos_fired6 = {
disableSerialization;
_indexMisc = lbCurSel 2672; // index of selection
_returnTextMisc = lbText [2672, _indexMisc]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexMisc,_returnTextMisc];// display the value
classnameChange = _returnTextMisc;
};

fnc_Pos_fired7 = {
disableSerialization;
_indexTable = lbCurSel 2673; // index of selection
_returnTextTable = lbText [2673, _indexTable]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexTable,_returnTextTable];// display the value
classnameChange = _returnTextTable;
};

fnc_Pos_fired8 = {
disableSerialization;
_indexExt = lbCurSel 2674; // index of selection
_returnTextExt = lbText [2674, _indexExt]; // name of selection
hint format["BAR : [%1] \n [%2]",_indexExt,_returnTextExt];// display the value
classnameChange = _returnTextExt;
};

_classname = classnameChange;

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

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

_vehicle = vehicle player;
_inVehicle = (_vehicle != player);

DZE_Q = false;
DZE_Z = false;

DZE_Q_alt = false;
DZE_Z_alt = false;

DZE_Q_ctrl = false;
DZE_Z_ctrl = false;

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

DZE_cancelBuilding = false;

call gear_ui_init;
closeDialog 1;

if (_isWater) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_26", "PLAIN DOWN"];};
if (_inVehicle) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_42"), "PLAIN DOWN"];};
if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [localize "str_player_21", "PLAIN DOWN"];};
if (player getVariable["combattimeout", 0] >= time) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_43"), "PLAIN DOWN"];};

_item = _this;

// Need Near Requirements
_abort = false;
_distance = 3;
_reason = "";


if(_abort) exitWith {
cutText [format[(localize "str_epoch_player_135"),_reason,_distance], "PLAIN DOWN"];
DZE_ActionInProgress = false;
};


_classnametmp = _classname;
//_require = getArray (configFile >> "cfgMagazines" >> _this >> "ItemActions" >> "Build" >> "require");
_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
_ghost = getText (configFile >> "CfgVehicles" >> _classname >> "ghostpreview");

_lockable = 0;

_requireplot = DZE_requireplot;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "requireplot")) then {
_requireplot = getNumber(configFile >> "CfgVehicles" >> _classname >> "requireplot");
};

_isAllowedUnderGround = 1;
if(isNumber (configFile >> "CfgVehicles" >> _classname >> "nounderground")) then {
_isAllowedUnderGround = getNumber(configFile >> "CfgVehicles" >> _classname >> "nounderground");
};

_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset");
if((count _offset) <= 0) then {
_offset = [0,3.5,0]; //This is distance of object from player XYZ.. increase Y if you want an object to spawn further away from player
};

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

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

if(_isPole) then {
_distance = DZE_PlotPole select 1;
};


_proceed = true;
// check for near plot
_findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], 30];
_findNearestPole = [];
{if (alive _x) then {_findNearestPole set [(count _findNearestPole),_x];};} foreach _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

if(_IsNearPlot >= 1) then {
    _proceed = false;
    _plotReq = false;
    _nearestPole = _findNearestPole select 0;

    // Find owner
    _ownerID = _nearestPole getVariable["CharacterID","0"];
    
    // check if friendly to owner
    if(dayz_characterID != _ownerID) then {

        _friendlies        = player getVariable ["friendlyTo",[]];
        // check if friendly to owner
        if(!(_ownerID in _friendlies)) then {
            _proceed = false;
            } else {
            _proceed = true;
        };
        } else {
        _proceed = true;
    };
};
_missing = "";

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

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

_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];

_object attachTo [player,_offset];

_position = getPosATL _object;

cutText [(localize "str_epoch_player_45"), "PLAIN DOWN"];

_objHDiff = 0;


while {_isOk} do {
    
    _zheightchanged = false;
    _zheightdirection = "";
    _rotate = false;
    
    if (DZE_Q) then {
    DZE_Q = false;
    _zheightdirection = "up";
    _zheightchanged = true;
    };
    if (DZE_Z) then {
    DZE_Z = false;
    _zheightdirection = "down";
    _zheightchanged = true;
    };
    if (DZE_Q_alt) then {
    DZE_Q_alt = false;
    _zheightdirection = "up_alt";
    _zheightchanged = true;
    };
    if (DZE_Z_alt) then {
    DZE_Z_alt = false;
    _zheightdirection = "down_alt";
    _zheightchanged = true;
    };
    if (DZE_Q_ctrl) then {
    DZE_Q_ctrl = false;
    _zheightdirection = "up_ctrl";
    _zheightchanged = true;
    };
    if (DZE_Z_ctrl) then {
    DZE_Z_ctrl = false;
    _zheightdirection = "down_ctrl";
    _zheightchanged = true;
    };
    if (DZE_4) then {
    _rotate = true;
    DZE_4 = false;
    _dir = 180;
    };
    if (DZE_6) then {
    _rotate = true;
    DZE_6 = false;
    _dir = 0;
    };
    
    if(_rotate) then {
    _object setDir _dir;
    _object setPosATL _position;
    //diag_log format["DEBUG Rotate BUILDING POS: %1", _position];
    };
    
    if(_zheightchanged) then {
    detach _object;
    
    _position = getPosATL _object;
    
    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;
    };
    
    _object setDir (getDir _object);
    
    if((_isAllowedUnderGround == 0) and ((_position select 2) < 0)) then {
    _position set [2,0];
    };
    
    _object setPosATL _position;
    
    //diag_log format["DEBUG Change BUILDING POS: %1", _position];
    
    _object attachTo [player];
    
    };
    
    sleep 0.5;
    
    _location2 = getPosATL player;
    
    if(DZE_5) exitWith {
    _isOk = false;
    detach _object;
    _dir = getDir _object;
    _position = getPosATL _object;
    //diag_log format["DEBUG BUILDING POS: %1", _position];
    deleteVehicle _object;
    };
    
    if(_location1 distance _location2 > 5) exitWith {
    _isOk = false;
    _cancel = true;
    _reason = "You've moved to far away from where you started building (within 5 meters)";
    detach _object;
    deleteVehicle _object;
    };
    
    if(abs(_objHDiff) > 5) exitWith {
    _isOk = false;
    _cancel = true;
    _reason = "Cannot move up or down more than 5 meters";
    detach _object;
    deleteVehicle _object;
    };
    
    if (player getVariable["combattimeout", 0] >= time) exitWith {
    _isOk = false;
    _cancel = true;
    _reason = (localize "str_epoch_player_43");
    detach _object;
    deleteVehicle _object;
    };
    
    if (DZE_cancelBuilding) exitWith {
    _isOk = false;
    _cancel = true;
    _reason = "Cancelled building.";
    detach _object;
    deleteVehicle _object;
    };
};

//No building on roads unless toggled
if (!DZE_BuildOnRoads) then {
if (isOnRoad _position) then { _cancel = true; _reason = "Cannot build on a road."; };
};

// No building in trader zones
if(!canbuild) then { _cancel = true; _reason = "Cannot build in a city."; };

if (!_proceed) then {_cancel = true; _reason = "Someone's plotpole nearby";};
if (_plotReq) then {_cancel = true; _reason = "Plotpole required to build here";};

if(!_cancel) then {

_classname = _classnametmp;

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

_tmpbuilt setdir _dir;

// Get position based on object
_location = _position;

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

_tmpbuilt setPosATL _location;


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

_limit = 1;

if (DZE_StaticConstructionCount > 0) then {
_limit = DZE_StaticConstructionCount;
}
else {
if (isNumber (configFile >> "CfgVehicles" >> _classname >> "constructioncount")) then {
_limit = getNumber(configFile >> "CfgVehicles" >> _classname >> "constructioncount");
};
};

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

cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];

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

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

_tmpbuilt setVariable ["CharacterID",dayz_characterID,true];

_charID = dayz_characterID;
_activatingPlayer = player;

PVDZE_obj_Publish = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname];
publicVariableServer "PVDZE_obj_Publish";
player removeMagazine "ItemEmerald";
cutText [format["%1 saved to database!",_classname], "PLAIN DOWN",3];
player reveal _tmpbuilt;
DZE_ActionInProgress = false;

} else {
cutText [format[(localize "str_epoch_player_47"),_text,_reason], "PLAIN DOWN"];
DZE_ActionInProgress = false;
};

DZE_ActionInProgress = false; 

 


 

Создаем файл remove.sqf в той же папке и прописываем туда:

 

 

 

private ["_isEmeraldItem","_emeraldTarget","_objectID","_objectUID","_objD","_findNearestPoles","_findNearestPole","_nearestPole","_ownerID","_friendlies"];
_emeraldTarget = cursorTarget;
_isEmeraldItem = (typeOf _emeraldTarget) in isEmerald;
_proceed = true;

_findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], 30];
_findNearestPole = [];
{if (alive _x) then {_findNearestPole set [(count _findNearestPole),_x];};} foreach _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

if(_IsNearPlot >= 1) then {
    _proceed = false;
    _nearestPole = _findNearestPole select 0;

    // Find owner
    _ownerID = _nearestPole getVariable["CharacterID","0"];
    
    // check if friendly to owner
    if(dayz_characterID != _ownerID) then {

        _friendlies        = player getVariable ["friendlyTo",[]];
        // check if friendly to owner
        if(!(_ownerID in _friendlies)) then {
            _proceed = false;
            } else {
            _proceed = true;
        };
        } else {
        _proceed = true;
    };
};

if (!_proceed) then { 
// player is not an owner
cutText [format["Plotpole nearby."], "PLAIN DOWN"];
} else {
    if (_isEmeraldItem) then {
    // player is looking at a object and the target has a object classname
    // delete it first to avoid player changing to another target
        _objD = typeOf cursorTarget;
        _objectID = cursorTarget getVariable["CharacterID","0"];
        _objectUID    = cursorTarget getVariable ["ObjectUID","0"];
        PVDZE_obj_Delete = [_objectID,_objectUID,player];
        publicVariableServer "PVDZE_obj_Delete";
        _emeraldTarget setDamage 1;
        deletevehicle cursorTarget;
        player removeAction s_player_removeEmerald;
        player playActionNow "Medic";
        r_interrupt = false;
        _dis=10;
        _sfx = "repair";
        [player,_sfx,0,false,_dis] call dayz_zombieSpeak;
        [player,_dis,true,(getPosATL player)] spawn player_alertZombies;
        sleep 6;
        cutText [format["Deleted %1", _objD], "PLAIN DOWN"];
        r_interrupt = false;
        player switchMove "";
        player playActionNow "stop";
    } else {
        // player is not looking at object, or target does not have a object classname
        cutText [format["You have to be facing the object you are removing"], "PLAIN DOWN"];
    };
}; 

 


 

Открываете собственный fn_selfactions.sqf и в самом низу пишете:

 

 

 

//delete interior
isEmerald = ["MAP_kasna_new","MAP_Misc_Boogieman","MAP_ChickenCoop","MAP_Misc_Greenhouse","MAP_Misc_Hutch","MAP_Misc_Well","MAP_Misc_WellPump","MAP_PowerGenerator","MAP_psi_bouda","MAP_pumpa","MAP_stanek_3","MAP_stanek_3_d","MAP_stanek_3B","MAP_AirCond_big","MAP_AirCond_small","MAP_antenna_big_roof","MAP_antenna_small_roof","MAP_antenna_small_roof_1","MAP_drapes","MAP_drapes_long","MAP_GasMeterExt","MAP_Ladder","MAP_P_Ladder","MAP_LadderHalf","MAP_P_LadderLong","MAP_leseni2x","MAP_leseni4x","MAP_Misc_loudspeakers","MAP_parabola_big","MAP_P_Stavebni_kozy","MAP_Heli_H_civil","MAP_Heli_H_army","MAP_Heli_H_cross","MAP_Heli_H_rescue","MAP_Sr_border","MAP_drevo_hromada","MAP_garbage_misc","MAP_garbage_paleta","MAP_Ind_BoardsPack1","MAP_Ind_BoardsPack2","MAP_Ind_Timbers","MAP_Kontejner","MAP_Misc_GContainer_Big","MAP_Misc_HayStack","MAP_Misc_TyreHeap","MAP_Misc_WoodPile","MAP_pneu","MAP_popelnice","MAP_sekyraspalek","MAP_seno_balik","MAP_concrete_block","MAP_Concrete_Ramp","MAP_ramp_concrete","MAP_woodenRamp","MAP_brana","MAP_Houpacka","MAP_nastenkaX","MAP_Piskoviste","MAP_snowman","MAP_Barel1","MAP_Barel3","MAP_Barel4","MAP_Barel5","MAP_Barel6","MAP_Barel7","MAP_Barel8","MAP_Barels","MAP_Barels2","MAP_Barels3","MAP_barrel_empty","MAP_barrel_sand","MAP_barrel_water","MAP_P_bedna","MAP_box_c","MAP_P_cihly1","MAP_P_cihly2","MAP_P_cihly3","MAP_P_cihly4","MAP_metalcrate","MAP_metalcrate_02","Misc_concrete","MAP_Misc_G_Pipes","MAP_Misc_palletsfoiled","MAP_Misc_palletsfoiled_heap","MAP_obstacle_get_over","MAP_obstacle_prone","MAP_obstacle_run_duck","MAP_paletaA","MAP_paletyC","MAP_paletyD","MAP_Pallets_Column","MAP_P_pipe_big","MAP_P_pipe_small","MAP_P_ytong","MAP_picture_a","MAP_picture_a_02","MAP_picture_a_03","MAP_picture_a_04","MAP_picture_a_05","MAP_picture_b","MAP_picture_b_02","MAP_picture_c","MAP_picture_c_02","MAP_picture_d","MAP_picture_e","MAP_picture_f","MAP_picture_f_02","MAP_picture_g","MAP_wall_board","MAP_wall_board_02","MAP_wall_board_03","MAP_F_ch_mod_c","MAP_ch_mod_h","MAP_armchair","MAP_ch_mod_h","MAP_ch_office_B","MAP_chair","MAP_Church_chair","MAP_hospital_bench","MAP_kitchen_chair_a","MAP_lavicka_1","MAP_lavicka_2","MAP_lavicka_3","MAP_lavicka_4","MAP_lobby_chair","MAP_office_chair","MAP_F_postel_manz_kov","MAP_F_postel_panelak1","MAP_F_postel_panelak2","MAP_F_Vojenska_palanda","MAP_postel_manz_kov","MAP_postel_panelak1","MAP_vojenska_palanda","MAP_fridge","MAP_Kitchenstove_Elec","MAP_washing_machine","MAP_P_Basin_A","MAP_P_bath","MAP_F_bath","MAP_lekarnicka","MAP_P_sink","MAP_toilet_b","MAP_P_toilet_b_02","MAP_almara","MAP_case_a","MAP_case_bedroom_a","MAP_case_bedroom_b","MAP_case_cans_b","MAP_case_d","MAP_case_wall_unit_part_c","MAP_case_wall_unit_part_d","MAP_case_wooden_b","MAP_Dhangar_borwnskrin","MAP_Dhangar_brownskrin","MAP_Dhangar_knihovna","MAP_library_a","MAP_shelf","MAP_Skrin_bar","MAP_Skrin_opalena","MAP_Truhla_stara","MAP_briefcase","MAP_Dkamna_bila","MAP_Dkamna_uhli","MAP_F_Dkamna_uhli","MAP_icebox","MAP_mutt_vysilacka","MAP_notebook","MAP_pc","MAP_phonebox","MAP_radio","MAP_radio_b","MAP_satelitePhone","MAP_smallTV","MAP_tv_a","MAP_vending_machine","MAP_lantern","MAP_bucket","MAP_MetalBucket","MAP_FuelCan","MAP_SmallObj_money","MAP_conference_table_a","MAP_desk","MAP_Dhangar_psacistul","MAP_F_conference_table_a","MAP_kitchen_table_a","MAP_lobby_table","MAP_office_table_a","MAP_pultskasou","MAP_SmallTable","MAP_stul_hospoda","MAP_stul_kuch1","MAP_Table","MAP_table_drawer"];
_isEmeraldItem = (typeOf cursorTarget) in isEmerald;
_emeraldTarget = typeOf cursorTarget;

if((_isEmeraldItem and (player distance cursorTarget <= 2)) and _canDo) then {
if (s_player_removeEmerald < 0) then {
s_player_removeEmerald = player addaction [format[("<t color=""#ff0000"">" + ("Remove %1") +"</t>"),_emeraldTarget],"interior\remove.sqf",_emeraldTarget];
};
} else {
player removeAction s_player_removeEmerald;
s_player_removeEmerald = -1;
}; 

 



Затем, открываете папку Battleye, находите файл createvehicle.txt и вписываете туда:

 

 

5 "box" !="MAP_phonebox" !="MAP_icebox" !="DebugBoxPlayer_DZ" !="MedBox0"

 

Для тех, у кого стоит Infistar:

 

Открываем AHconfig.sqf, находим там строчку

 

_ALLOWED_Dialogs = [
 

 

И вписываем туда:

 

 

2667,2668,2669,2670,2671,2672,2673,2674
 

 

Затем, находим строчку

 

 

_dayzActions = [
 

 

Вписываем туда:

 

s_player_removeEmerald
 

 

 

На этом установка Emerald Interior Designer закончена. Чтобы воспользоваться функцией, вам нужно кликнуть правой кнопкой мыши по эмеральду и "вывалится" список, из которого вы выбираете, что хотите поставить.

 

Собственно, а теперь для тех, кто хочет больше.

 

Совсем недавно я нашел сие чудо на форуме Эпоча и сразу же в мою голову запали идеи, как научить игроков спать на кроватях, одеваться через шкафы, лечиться в аптечке, готовить на плите, покупать содовую в автоматах. Пока я реализовал лишь треть от этого и я хотел бы поделиться ею с вами.

 

Сон.

 

Данная функция позволяет игрокам лечь спать на кровать. Сон длится 60 секунд и восстанавливает кровь, убирает трясущийся\серый экран и восстанавливает температуру.

 

Установка:

 

Создайте в папке interior папку adds.

Создайте в этой папке файл sleep.sqf и пропишите в него:

 

 

disableUserInput true;
[objNull, player, rswitchMove,'AdthPercMstpSlowWpstDnon_A5] call RE;
titleText ["Zzzzzzz...", "BLACK", 2];
sleep 2;
_nul = [objNull, player, rSAY, "sleep", 30] call RE;
[player, 20, true, (getPosATL player)] spawn player_alertZombies;
sleep 2;
r_player_blood = 12000;
r_player_inpain = false;
r_player_lowblood = false;
dayz_temperatur = 42;
0 fadeSound 1;
sleep 58;
titleFadeOut 2;
sleep 2;
[objNull, player, rswitchMove,'AinjPpneMstpSnonWnonDnon_rolltofront'] call RE;
sleep 4;
player playActionNow 'stop';
disableUserInput false;
 

 

Откройте свой fn_selfactions.sqf и в самый низ пропишите:

 

 

isBed = ["MAP_F_postel_manz_kov","MAP_F_postel_panelak1","MAP_F_postel_panelak2","MAP_F_Vojenska_palanda","MAP_postel_manz_kov","MAP_postel_panelak1","MAP_vojenska_palanda"];
_isBedItem = (typeOf cursorTarget) in isBed;

if((_isBedItem and (player distance cursorTarget <= 2)) and _canDo) then {
if (s_player_Bed < 0) then {
        s_player_Bed = player addaction [("<t color=""#fff000"">" + ("Sleep") +"</t>"),"interior\adds\sleep.sqf"];
    };
} else {
    player removeAction s_player_Bed;
    s_player_Bed = -1;
};

Для тех, у кого стоит Infistar:

 

Открываем AHconfig.sqf, находим там строчку

 

 

_dayzActions = [
 

 

Вписываем туда:

 

s_player_Bed
 

 

Готово. Теперь, чтобы поспать, подойдите к кровати и у вас появится функция "Sleep".

 

 

Аптечка

 

Долго думал, как прикольно реализовать аптечку, в итоге просто в аптечке можно полечиться за золото.

 

Установка:

 

Создайте в папке interior папку adds.

Создайте в этой папке файл healing.sqf и пропишите в него:

 

 

 

_price = {_x == "ItemGoldBar10oz"} count magazines player;

if (_price >= 1) then {
                player playActionNow "Medic";
                player removeMagazine "GoldBar10oz";
                disableSerialization;
                dayz_sourceBleeding = objNull;
                r_player_blood = r_player_bloodTotal;
                r_player_inpain = false;
                r_player_infected = false;
                r_player_injured = false;
                dayz_temperatur = 37;
                r_fracture_legs = false;
                r_fracture_arms = false;
                r_player_dead = false;
                r_player_unconscious = false;
                r_player_loaded = false;
                r_player_cardiac = false;
                r_player_lowblood = false;
                r_player_timeout = 0;
                r_handlercount = 0;
                r_interrupt = false;
                r_doLoop = false;
                r_drag_sqf = false;
                r_self = false;
                r_action = false;
                r_action_unload = false;
                r_player_handler = false;
                r_player_handler1 = false;
                disableUserInput false;
                'dynamicBlur' ppEffectAdjust [0];
                'dynamicBlur' ppEffectCommit 5;
                _selection = 'legs';
                _damage = 0;
                player setHit[_selection,_damage];
                player setVariable ['messing',[dayz_hunger,dayz_thirst],true];
                player setVariable['NORRN_unconscious',false,true];
                player setVariable['USEC_infected',false,true];
                player setVariable['USEC_injured',false,true];
                player setVariable['USEC_inPain',false,true];
                player setVariable['USEC_isCardiac',false,true];
                player setVariable['USEC_lowBlood',false,true];
                player setVariable['USEC_BloodQty',12000,true];
                player setVariable['unconsciousTime',0,true];
                player setVariable ['hit_legs',0,true];
                player setVariable ['hit_hands',0,true];
                player setVariable['medForceUpdate',true,true];
                _display = uiNameSpace getVariable 'DAYZ_GUI_display';
                _control = _display displayCtrl 1303;
                _control ctrlShow false;
                _display = uiNameSpace getVariable 'DAYZ_GUI_display';
                _control = _display displayCtrl 1203;
                _control ctrlShow false;
                player setdamage 0;
                0 fadeSound 1;
                resetCamShake;

        sleep 6;
        cutText [format["You had been healed."], "PLAIN DOWN"];
       
        player switchMove "";
        player playActionNow "stop";
} else {
cutText [format["You need a GoldBar10oz to heal."], "PLAIN DOWN"];      
};

 



Откройте свой fn_selfactions.sqf и в самый низ пропишите:

 

 

//medicine chest
isChest = ["MAP_lekarnicka"];
_isChestItem = (typeOf cursorTarget) in isChest;

if((_isChestItem and (player distance cursorTarget <= 2)) and _canDo) then {
if (s_player_Chest < 0) then {
        s_player_Chest = player addaction [("<t color=""#fff000"">" + ("Heal") +"</t>"),"interior\adds\healing.sqf"];
    };
} else {
    player removeAction s_player_Chest;
    s_player_Chest = -1;
};
 

Для тех, у кого стоит Infistar:

 

Открываем AHconfig.sqf, находим там строчку

 


 _dayzActions = [
 

 

Вписываем туда:

 

s_player_Chest
 

 

 

Готово. Теперь, чтобы вылечиться, подойдите к аптечке и у вас появится надпись "Heal". У вас должно быть в инвентаре 10 золота.

 

 

Шкаф

 

На мой взгляд, я его плохо реализовал, взяв за основу диалог Emerald Designer. Работы по его переделыванию уже ведутся. А пока я выложу старую версию.

 

Установка:

 

Создайте в папке interior папку adds.

Создайте в этой папке файл dialogs.hpp и пропишите в него:

 

 

 

class WARDROBE
{
    idd = -1;
    movingenable = true;
    onLoad = "_this ExecVM 'interior\adds\items.sqf'";
    
    class Controls
    {

        class dialogBox9: BOX
        {
            idc = -1;
            text = "";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogFrame9: RscFrame
        {
            idc = -1;
            text = "Wardrobe";
            x = 0.401725 * safezoneW + safezoneX;
            y = 0.449425 * safezoneH + safezoneY;
            w = 0.186587 * safezoneW;
            h = 0.124143 * safezoneH;
        };
        class dialogChoose9: RscShortcutButton
        {
            idc = -1;
            text = "Change";
            x = 0.414806 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action= "[] call fnc_Pos_wardrobe;_nil=[]ExecVM ""interior\adds\change_skin.sqf"";closeDialog 0;";
        };
        class dialogCancel9: RscShortcutButton
        {
            idc = -1;
            text = "Cancel";
            x = 0.510496 * safezoneW + safezoneX;
            y = 0.512518 * safezoneH + safezoneY;
            w = 0.0594089 * safezoneW;
            h = 0.0500295 * safezoneH;
            action = "closeDialog 0;";
        };
        class dialogCombo9: RscCombo
        {
            idc = 2675;
            text = "Choose Skin";
            x = 0.43 * safezoneW + safezoneX;
            y = 0.478467 * safezoneH + safezoneY;
            w = 0.120896 * safezoneW;
            h = 0.0229882 * safezoneH;
        };
    };
};

 


 

Создайте в той же папке файл items.sqf и пропишите в него:

 

 

disableSerialization;
//Define idc's for controls for easy access
_comboBoxH = 2675;
//Add to exterior
{
    _index = lbAdd [_comboBoxH, _x];
} forEach [
"Priest_DZ",
"Rocker1_DZ",
"Rocker2_DZ",
"Rocker3_DZ",
"Rocker4_DZ",
"RU_Policeman_DZ",
"SurvivorWurban_DZ",
"SurvivorWdesert_DZ",
"SurvivorWpink_DZ",
"SurvivorW3_DZ"
];
 


Создайте файл change_skin.sqf в той же папке и пропишите в него:

 

 

fnc_Pos_wardrobe = {
disableSerialization;
_indexExt = lbCurSel 2675; // index of selection
_returnTextExt = lbText [2675, _indexExt]; // name of selection
[dayz_playerUID,dayz_characterID,_returnTextExt] spawn player_humanityMorph;
 };
 

Создайте в той же папке файл start_dialog.sqf и впишите туда:

 

 

createDialog "WARDROBE";
 

 

Откройте свой description.ext и в самом низу впишите:

 

 

#include "interior\adds\dialogs.hpp"
 

Откройте свой fn_selfactions.sqf и в самом низу впишите:

 

 

isWardrobe = ["MAP_almara","MAP_case_wooden_b","MAP_Dhangar_borwnskrin","MAP_Skrin_opalena"];
_isWardrobeItem = (typeOf cursorTarget) in isWardrobe;

if((_isWardrobeItem and (player distance cursorTarget <= 2)) and _canDo) then {
if (s_player_Wardrobe < 0) then {
        s_player_Wardrobe = player addaction [("<t color=""#fff000"">" + ("Change clothes") +"</t>"),"interior\adds\start_dialog.sqf"];
    };
} else {
    player removeAction s_player_Wardrobe;
    s_player_Wardrobe = -1;
};
 

 

 

Для тех, у кого стоит Infistar:

 

Открываем AHconfig.sqf, находим там строчку

 

 

_ALLOWED_Dialogs = [
 

 

И вписываем туда:

 

 

2675
 

 

Затем, находим строчку

 

 

_dayzActions = [
 

 

Вписываем туда:

 

s_player_Wardrobe
 

 

Готово. Подходите к шкафу и у вас появляется в меню Change Clothes. При нажатии открывается диалог, почти такой же, как и в Emerald Designer.



Скриншоты:

 

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

 

 

P.S. Извиняюсь за длиннопост с большим количеством кода - сам по себе знаю, что когда-нибудь ссылки на файлы утеряются и восстановить все будет проблематично.



Мои дополнения в процессе разработки, поэтому по мере создания буду выкладывать их сюда



Совсем забыл!

 

Чтобы у вас работал сон, то надо открыть свой description.ext и вписать туда:

 

 

class CfgSounds
{
    sounds[] =
    {
        sleep
    };
        class sleep
    {
        name="sleep";
        sound[] = {"sounds\sleep.ogg",0.6,1};
        titles[] = {};
    };
};
 

Затем, скачать вот это и положить в корневую папку миссии.

 

Извиняюсь за ошибки в статье, отредактировать почему-то не могу, надеюсь, пофиксят.

Изменено пользователем DrTauren
Оформил немного (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





Классная штука. Лови в репу  :yes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поставил сон, и тишина, а спать то хочется  :laugh:

Ни малейших признаков работы скрипта нет

 

http://youtu.be/3HPqKUGB400

 

http://youtu.be/SMgnleEk6QA

Изменено пользователем Alex39 (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поставил сон, и тишина, а спать то хочется  :laugh:

Ни малейших признаков работы скрипта нет

 

http://youtu.be/3HPqKUGB400

 

http://youtu.be/SMgnleEk6QA

На этих кроватях-то не поспишь) Чтобы поспать на них, нужно их класс знать, а если я не ошибаюсь, то просто убери MAP_ перед классами кроватей и пропиши их в fn_selfactions. Т.е. будет вот так:

 

"MAP_F_postel_manz_kov","MAP_F_postel_panelak1","MAP_F_postel_panelak2","MAP_F_Vojenska_palanda","MAP_postel_manz_kov","MAP_postel_panelak1","MAP_vojenska_palanda","F_postel_manz_kov","F_postel_panelak1","F_postel_panelak2","F_Vojenska_palanda","postel_manz_kov","postel_panelak1","vojenska_palanda"

 

Вот так должно сработать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

К сожалению не работает, а ставить скрипт установка стульев и так далее нет смысла, за день столько установят что сервак глючить будет, надо прикрутить сон к кроватям что уже есть на серваке, но скрипт не отрабатывает, жаль, хорошая вещь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

К сожалению не работает, а ставить скрипт установка стульев и так далее нет смысла, за день столько установят что сервак глючить будет, надо прикрутить сон к кроватям что уже есть на серваке, но скрипт не отрабатывает, жаль, хорошая вещь

Ну все потому что кровати в доме не определяются как отдельный объект, это уже арма, а не я). Если бы можно было изменять аддоны через сервер, то можно было бы прописать кроватям в аддонах зданий, а так никак больше

Изменено пользователем DrSova (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну все потому что кровати в доме не определяются как отдельный объект, это уже арма, а не я)

Хотя тут можно поспорить,на карте стоит объект который определяется названием , классом и так далее, если мы прикручиваем скрипт к этому объкту то он распространяется на все что связано с этим классом, по крайней мере я так знаю и делал не раз

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хотя тут можно поспорить,на карте стоит объект который определяется названием , классом и так далее, если мы прикручиваем скрипт к этому объкту то он распространяется на все что связано с этим классом, по крайней мере я так знаю и делал не раз

Не, ну ты можешь, конечно, к казарме все прикрутить, но тогда ты можешь ложиться спать около казармы, по среди пола и т.п. И это будет как-то странно, что активация происходит от пола и стен казармы. К кроватям в казарме ты не сможешь прикрутить, либо у них какой-то особый класс, извини, вот этого я не знаю, сейчас посмотрю.

Изменено пользователем DrSova (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, ну ты можешь, конечно, к казарме все прикрутить, но тогда ты можешь ложиться спать около казармы, по среди пола и т.п. И это будет как-то странно, что активация происходит от пола и стен казармы. К кроватям в казарме ты не сможешь прикрутить, либо у них какой-то особый класс, извини, вот этого я не знаю, сейчас посмотрю.

Щас попробую заменить вызов меню, что бы хотя бы посмотреть как привязка к объекту проходит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Щас попробую заменить вызов меню, что бы хотя бы посмотреть как привязка к объекту проходит

Вызов меню происходит через добавление к игроку экшона, если его cursortarget - заданный класс. Можно, попробовать кое-как переделать, но я не уверен, что сработает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вызов меню происходит через добавление к игроку экшона, если его cursortarget - заданный класс. Можно, попробовать кое-как переделать, но я не уверен, что сработает.

Хорошо, сделаем по другому, люди ставят палатки, вот и прикрутим к палаткам сон, и прикольно и эфективно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хорошо, сделаем по другому, люди ставят палатки, вот и прикрутим к палаткам сон, и прикольно и эфективно

Хорошая идея

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только бы сделать проверку, тоесть перед сном надо палатку установить, а то смешно будет, палатку не поставил а спать лег

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только бы сделать проверку, тоесть перед сном надо палатку установить, а то смешно будет, палатку не поставил а спать лег

Всмысле? Так ты используй мой скрипт, просто вместо этого:

 

isBed = ["MAP_F_postel_manz_kov","MAP_F_postel_panelak1","MAP_F_postel_panelak2","MAP_F_Vojenska_palanda","MAP_postel_manz_kov","MAP_postel_panelak1","MAP_vojenska_palanda"];
 

Впиши класс палатки и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как вызвать то меню? :D Не понял, что за "эмеральд"



И вот, что пишет после всех установок :с

 

 

izvUK5ViGGM.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как вызвать то меню? :D Не понял, что за "эмеральд"

И вот, что пишет после всех установок :с

 

 

izvUK5ViGGM.jpg

 

Тебе же написали что в строке 21 идет одинаковый класс, где то еще такой есть, вот и получается что тебе надо из двух сделать один, так как должен существовать один класс

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А как вызвать то меню? :D Не понял, что за "эмеральд"

 

 

И вот, что пишет после всех установок :с

 

 

izvUK5ViGGM.jpg

 

ПКМ по Эмеральду

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят, может не в ту тему обращаюсь, но все же она ближе по смыслу к моей проблеме. Наткнулся недавно вот на это: http://epochmod.com/forum/index.php?/topic/14893-advanced-alchemical-crafting-v33/ Заинтересовало до жути. Беда только в том, что архив Buildables.zip прикрепленный к теме можно скачать только после регистрации. А вот с ней как раз проблема. И не только у меня. На забугорных форумах тоже есть крики по этому поводу. Честно говоря и черт бы с ней, но нигде больше я не нашел этого архива. Может есть у кого альтернативные ссылки?

Изменено пользователем WereB (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят, может не в ту тему обращаюсь, но все же она ближе по смыслу к моей проблеме. Наткнулся недавно вот на это: http://epochmod.com/forum/index.php?/topic/14893-advanced-alchemical-crafting-v33/ Заинтересовало до жути. Беда только в том, что архив Buildables.zip прикрепленный к теме можно скачать только после регистрации. А вот с ней как раз проблема. И не только у меня. На забугорных форумах тоже есть крики по этому поводу. Честно говоря и черт бы с ней, но нигде больше я не нашел этого архива. Может есть у кого альтернативные ссылки?

даже с регистрацией не качает. Хз

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Ребят, может не в ту тему обращаюсь, но все же она ближе по смыслу к моей проблеме. Наткнулся недавно вот на это: http://epochmod.com/forum/index.php?/topic/14893-advanced-alchemical-crafting-v33/ Заинтересовало до жути. Беда только в том, что архив Buildables.zip прикрепленный к теме можно скачать только после регистрации. А вот с ней как раз проблема. И не только у меня. На забугорных форумах тоже есть крики по этому поводу. Честно говоря и черт бы с ней, но нигде больше я не нашел этого архива. Может есть у кого альтернативные ссылки?

Напиши в ЛС

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребят, может не в ту тему обращаюсь, но все же она ближе по смыслу к моей проблеме. Наткнулся недавно вот на это: http://epochmod.com/forum/index.php?/topic/14893-advanced-alchemical-crafting-v33/ Заинтересовало до жути. Беда только в том, что архив Buildables.zip прикрепленный к теме можно скачать только после регистрации. А вот с ней как раз проблема. И не только у меня. На забугорных форумах тоже есть крики по этому поводу. Честно говоря и черт бы с ней, но нигде больше я не нашел этого архива. Может есть у кого альтернативные ссылки?

Buildables.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Таки мир не без добрых людей. BigCrazyCat, DrSova, спасибо вам, ребята за участие и за непосредственную помощь, спасли мою сборку :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как сделать исключения, что бы можно было строить эти объекты если рядом есть плот?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как сделать исключения, что бы можно было строить эти объекты если рядом есть плот?

По стандарту можно строить только рядом с плотом. Это редактируется в первой строчке spawn.sqf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.