soolie 189 Posted March 30, 2016 Hope you guys like it! Please feel free to let me know if I should be doing anything differently(still new to it). Tutorial https://www.youtube.com/watch?v=nQygf2qKIU4 Mission Template http://bit.ly/SoolieVehSelector Other links to check out http://killzonekid.com/arma-scripting-tutorials-gui-part-1/ http://killzonekid.com/hex-2-arma-gui-colour-converter/ https://forums.bistudio.com/topic/136734-dialog-tutorial-for-noobs-by-a-noob/ https://community.bistudio.com/wiki/Dialog_Control https://community.bistudio.com/wiki/User_Interface_Event_Handlers Common.hpp /////////////////////////////////////////////////////////////////////////// /// Styles /////////////////////////////////////////////////////////////////////////// #define true 1 #define false 0 // 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_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 #define CT_CHECKBOX 77 // 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_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 // 3d object #define CT_OBJECT 80 /////////////////////////////////////////////////////////////////////////// /// Base Classes /////////////////////////////////////////////////////////////////////////// class RscText { deletable = 0; fade = 0; access = 0; type = 0; idc = -1; colorBackground[] = { 0, 0, 0, 0 }; colorText[] = { 1, 1, 1, 1 }; text = ""; fixedWidth = 0; x = 0; y = 0; h = 0.037; w = 0.3; style = 0; shadow = 1; colorShadow[] = { 0, 0, 0, 0.5 }; font = "PuristaMedium"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; linespacing = 1; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; }; class RscStructuredText { deletable = 0; fade = 0; access = 0; type = 13; idc = -1; style = 0; colorText[] = { 1, 1, 1, 1 }; class Attributes { font = "PuristaMedium"; color = "#ffffff"; align = "left"; shadow = 1; }; x = 0; y = 0; h = 0.035; w = 0.1; text = ""; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; shadow = 1; }; class RscPicture { deletable = 0; fade = 0; access = 0; type = 0; idc = -1; style = 48; colorBackground[] = { 0, 0, 0, 0 }; colorText[] = { 1, 1, 1, 1 }; font = "TahomaB"; sizeEx = 0; lineSpacing = 0; text = ""; fixedWidth = 0; shadow = 0; x = 0; y = 0; w = 0.2; h = 0.15; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; }; class RscEdit { deletable = 0; fade = 0; access = 0; type = 2; x = 0; y = 0; h = 0.04; w = 0.2; colorBackground[] = { 0, 0, 0, 1 }; colorText[] = { 0.95, 0.95, 0.95, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; colorSelection[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])", 1 }; autocomplete = ""; text = ""; size = 0.2; style = "00x02"; font = "PuristaMedium"; shadow = 2; sizeEx = 0.045; canModify = 1; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; }; class RscCombo { deletable = 0; fade = 0; access = 0; type = 4; colorSelect[] = { 0, 0, 0, 1 }; colorText[] = { 1, 1, 1, 1 }; colorBackground[] = { 0, 0, 0, 1 }; colorScrollbar[] = { 1, 0, 0, 1 }; colorPicture[] = { 1, 1, 1, 1 }; colorPictureSelected[] = { 1, 1, 1, 1 }; colorPictureDisabled[] = { 1, 1, 1, 0.25 }; colorPictureRight[] = { 1, 1, 1, 1 }; colorPictureRightSelected[] = { 1, 1, 1, 1 }; colorPictureRightDisabled[] = { 1, 1, 1, 0.25 }; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; soundSelect[] = { "\A3\ui_f\data\sound\RscCombo\soundSelect", 0.1, 1 }; soundExpand[] = { "\A3\ui_f\data\sound\RscCombo\soundExpand", 0.1, 1 }; soundCollapse[] = { "\A3\ui_f\data\sound\RscCombo\soundCollapse", 0.1, 1 }; maxHistoryDelay = 1; class ComboScrollBar { color[] = { 1,1,1,1 }; }; style = "0x10 + 0x200"; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; shadow = 0; x = 0; y = 0; w = 0.12; h = 0.035; colorSelectBackground[] = { 1, 1, 1, 0.7 }; arrowEmpty = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_active_ca.paa"; arrowFull = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_active_ca.paa"; wholeHeight = 0.45; colorActive[] = { 0.761,0.357,0.337,1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; colorTextRight[] = { 1, 1, 1, 1 }; colorSelectRight[] = { 0, 0, 0, 1 }; colorSelect2Right[] = { 0, 0, 0, 1 }; }; class RscListBox { deletable = 0; fade = 0; access = 0; type = 5; rowHeight = 0; onLBSelChanged = ""; colorText[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; colorScrollbar[] = { 1, 0, 0, 0 }; colorSelect[] = { 0, 0, 0, 1 }; colorSelect2[] = { 0, 0, 0, 1 }; colorSelectBackground[] = { 0.95, 0.95, 0.95, 1 }; colorSelectBackground2[] = { 1, 1, 1, 0.5 }; colorBackground[] = { 0, 0, 0, 0.3 }; soundSelect[] = { "\A3\ui_f\data\sound\RscListbox\soundSelect", 0.09, 1 }; autoScrollSpeed = -1; autoScrollDelay = 5; autoScrollRewind = 0; arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; colorPicture[] = { 1, 1, 1, 1 }; colorPictureSelected[] = { 1, 1, 1, 1 }; colorPictureDisabled[] = { 1, 1, 1, 0.25 }; colorPictureRight[] = { 1, 1, 1, 1 }; colorPictureRightSelected[] = { 1, 1, 1, 1 }; colorPictureRightDisabled[] = { 1, 1, 1, 0.25 }; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; class ListScrollBar { color[] = { 1, 1, 1, 1 }; autoScrollEnabled = 1; }; x = 0; y = 0; w = 0.3; h = 0.3; style = 16; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; shadow = 0; colorShadow[] = { 0, 0, 0, 0.5 }; period = 1.2; maxHistoryDelay = 1; colorTextRight[] = { 1, 1, 1, 1 }; colorSelectRight[] = { 0, 0, 0, 1 }; colorSelect2Right[] = { 0, 0, 0, 1 }; }; class RscXListBox { access = 0; idc = CT_XLISTBOX; type = CT_XLISTBOX; style = SL_HORZ + ST_CENTER + LB_TEXTURES; default = 0; blinkingPeriod = 0; x = 12 * GUI_GRID_CENTER_W + GUI_GRID_CENTER_X; y = 17 * GUI_GRID_CENTER_H + GUI_GRID_CENTER_Y; w = 10 * GUI_GRID_CENTER_W; h = 1 * GUI_GRID_CENTER_H; color[] = {1,1,1,1}; colorActive[] = {1,1,1,1}; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; font = "PuristaMedium"; shadow = 0; colorText[] = {1,1,1,1}; // Text color colorSelect[] = {1,1,1,1}; // Selected text color colorDisabled[] = {1,1,1,0.5}; // Disabled text color tooltip = ""; // Tooltip text tooltipColorShade[] = {0,0,0,0}; // Tooltip background color tooltipColorText[] = {1,1,1,0}; // Tooltip text color tooltipColorBox[] = {1,1,1,0}; // Tooltip frame color arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa"; // Arrow arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa"; // Arrow when clicked on border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa"; // Fill texture soundSelect[] = {"\A3\ui_f\data\sound\RscListbox\soundSelect",0.09,1}; }; class RscButton { deletable = 0; fade = 0; access = 0; type = 1; text = ""; colorText[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; colorBackground[] = { 0, 0, 0, 0.5 }; colorBackgroundDisabled[] = { 0, 0, 0, 0.5 }; colorBackgroundActive[] = { 0, 0, 0, 1 }; colorFocused[] = { 0, 0, 0, 1 }; colorShadow[] = { 0, 0, 0, 0 }; colorBorder[] = { 0, 0, 0, 1 }; soundEnter[] = { "\A3\ui_f\data\sound\RscButton\soundEnter", 0.09, 1 }; soundPush[] = { "\A3\ui_f\data\sound\RscButton\soundPush", 0.09, 1 }; soundClick[] = { "\A3\ui_f\data\sound\RscButton\soundClick", 0.09, 1 }; soundEscape[] = { "\A3\ui_f\data\sound\RscButton\soundEscape", 0.09, 1 }; style = 2; x = 0; y = 0; w = 0.095589; h = 0.039216; shadow = 2; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; offsetX = 0; offsetY = 0; offsetPressedX = 0; offsetPressedY = 0; borderSize = 0; }; class RscShortcutButton { deletable = 0; fade = 0; type = 16; x = 0.1; y = 0.1; class HitZone { left = 0; top = 0; right = 0; bottom = 0; }; class ShortcutPos { left = 0; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; }; class TextPos { left = 0; top = 0; right = 0; bottom = 0; }; shortcuts[] = { }; textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; color[] = { 1, 1, 1, 1 }; colorFocused[] = { 1, 1, 1, 1 }; color2[] = { 0.95, 0.95, 0.95, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; colorBackground[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])", 1 }; colorBackgroundFocused[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])", 1 }; colorBackground2[] = { 1, 1, 1, 1 }; soundEnter[] = { "\A3\ui_f\data\sound\RscButton\soundEnter", 0.09, 1 }; soundPush[] = { "\A3\ui_f\data\sound\RscButton\soundPush", 0.09, 1 }; soundClick[] = { "\A3\ui_f\data\sound\RscButton\soundClick", 0.09, 1 }; soundEscape[] = { "\A3\ui_f\data\sound\RscButton\soundEscape", 0.09, 1 }; class Attributes { font = "PuristaMedium"; color = "#E5E5E5"; align = "center"; shadow = "true"; }; idc = -1; style = 0; default = 0; shadow = 1; w = 0.183825; h = "((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; textSecondary = ""; colorSecondary[] = { 1, 1, 1, 1 }; colorFocusedSecondary[] = { 1, 1, 1, 1 }; color2Secondary[] = { 0.95, 0.95, 0.95, 1 }; colorDisabledSecondary[] = { 1, 1, 1, 0.25 }; sizeExSecondary = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; fontSecondary = "PuristaMedium"; animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureDisabled = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\normal_ca.paa"; animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\over_ca.paa"; animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\focus_ca.paa"; animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButton\down_ca.paa"; periodFocus = 1.2; periodOver = 0.8; period = 0.4; font = "PuristaMedium"; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; text = ""; action = ""; class AttributesImage { font = "PuristaMedium"; color = "#E5E5E5"; align = "center"; }; }; class RscShortcutButtonMain { idc = -1; style = 0; default = 0; w = 0.313726; h = 0.104575; color[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; class HitZone { left = 0; top = 0; right = 0; bottom = 0; }; class ShortcutPos { left = 0.0145; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)) / 2"; w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2) * (3/4)"; h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; }; class TextPos { left = "(((safezoneW / safezoneH) min 1.2) / 32) * 1.5"; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)*2 - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)) / 2"; right = 0.005; bottom = 0; }; animTextureNormal = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; animTextureDisabled = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\disabled_ca.paa"; animTextureOver = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\over_ca.paa"; animTextureFocused = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\focus_ca.paa"; animTexturePressed = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\down_ca.paa"; animTextureDefault = "\A3\ui_f\data\GUI\RscCommon\RscShortcutButtonMain\normal_ca.paa"; period = 0.5; font = "PuristaMedium"; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; text = ""; action = ""; class Attributes { font = "PuristaMedium"; color = "#E5E5E5"; align = "left"; shadow = "false"; }; class AttributesImage { font = "PuristaMedium"; color = "#E5E5E5"; align = "false"; }; }; class RscFrame { type = 0; idc = -1; style = 64; shadow = 2; colorBackground[] = { 0, 0, 0, 0 }; colorText[] = { 1, 1, 1, 1 }; font = "PuristaMedium"; sizeEx = 0.02; text = ""; }; class RscSlider { deletable = 0; fade = 0; access = 0; type = 3; style = 1024; w = 0.3; color[] = { 1, 1, 1, 0.8 }; colorActive[] = { 1, 1, 1, 1 }; shadow = 0; h = 0.025; }; class IGUIBack { type = 0; idc = 124; style = 128; text = ""; colorText[] = { 0, 0, 0, 0 }; font = "PuristaMedium"; sizeEx = 0; shadow = 0; x = 0.1; y = 0.1; w = 0.1; h = 0.1; colorbackground[] = { "(profilenamespace getvariable ['IGUI_BCG_RGB_R',0])", "(profilenamespace getvariable ['IGUI_BCG_RGB_G',1])", "(profilenamespace getvariable ['IGUI_BCG_RGB_B',1])", "(profilenamespace getvariable ['IGUI_BCG_RGB_A',0.8])" }; }; class RscCheckBox { idc = -1; type = 77; style = 0; checked = 0; x = "0.375 * safezoneW + safezoneX"; y = "0.36 * safezoneH + safezoneY"; w = "0.025 * safezoneW"; h = "0.04 * safezoneH"; color[] = { 1, 1, 1, 0.7 }; colorFocused[] = { 1, 1, 1, 1 }; colorHover[] = { 1, 1, 1, 1 }; colorPressed[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.2 }; colorBackground[] = { 0, 0, 0, 0 }; colorBackgroundFocused[] = { 0, 0, 0, 0 }; colorBackgroundHover[] = { 0, 0, 0, 0 }; colorBackgroundPressed[] = { 0, 0, 0, 0 }; colorBackgroundDisabled[] = { 0, 0, 0, 0 }; textureChecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; textureUnchecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; textureFocusedChecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; textureFocusedUnchecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; textureHoverChecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; textureHoverUnchecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; texturePressedChecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; texturePressedUnchecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; textureDisabledChecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; textureDisabledUnchecked = "A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; soundEnter[] = { "", 0.1, 1 }; soundPush[] = { "", 0.1, 1 }; soundClick[] = { "", 0.1, 1 }; soundEscape[] = { "", 0.1, 1 }; }; class RscTextCheckBox { idc = -1; type = 7; style = 0; x = "0.375 * safezoneW + safezoneX"; y = "0.36 * safezoneH + safezoneY"; w = "0.025 * safezoneW"; h = "0.04 * safezoneH"; colorText[] = { 1, 0, 0, 1 }; color[] = { 0, 0, 0, 0 }; colorBackground[] = { 0, 0, 1, 1 }; colorTextSelect[] = { 0, 0.8, 0, 1 }; colorSelectedBg[] = { "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])", 1 }; colorSelect[] = { 0, 0, 0, 1 }; colorTextDisable[] = { 0.4, 0.4, 0.4, 1 }; colorDisable[] = { 0.4, 0.4, 0.4, 1 }; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; font = "PuristaMedium"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)"; rows = 1; columns = 1; strings[] = { "UNCHECKED" }; checked_strings[] = { "CHECKED" }; }; class RscButtonMenu { idc = -1; type = 16; style = "0x02 + 0xC0"; default = 0; shadow = 0; x = 0; y = 0; w = 0.095589; h = 0.039216; animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; colorBackground[] = { 0, 0, 0, 0.8 }; colorBackgroundFocused[] = { 1, 1, 1, 1 }; colorBackground2[] = { 0.75, 0.75, 0.75, 1 }; color[] = { 1, 1, 1, 1 }; colorFocused[] = { 0, 0, 0, 1 }; color2[] = { 0, 0, 0, 1 }; colorText[] = { 1, 1, 1, 1 }; colorDisabled[] = { 1, 1, 1, 0.25 }; textSecondary = ""; colorSecondary[] = { 1, 1, 1, 1 }; colorFocusedSecondary[] = { 0, 0, 0, 1 }; color2Secondary[] = { 0, 0, 0, 1 }; colorDisabledSecondary[] = { 1, 1, 1, 0.25 }; sizeExSecondary = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; fontSecondary = "PuristaLight"; period = 1.2; periodFocus = 1.2; periodOver = 1.2; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; tooltipColorText[] = { 1, 1, 1, 1 }; tooltipColorBox[] = { 1, 1, 1, 1 }; tooltipColorShade[] = { 0, 0, 0, 0.65 }; class TextPos { left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right = 0.005; bottom = 0; }; class Attributes { font = "PuristaLight"; color = "#E5E5E5"; align = "left"; shadow = "false"; }; class ShortcutPos { left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; top = 0.005; w = 0.0225; h = 0.03; }; soundEnter[] = { "\A3\ui_f\data\sound\RscButtonMenu\soundEnter", 0.09, 1 }; soundPush[] = { "\A3\ui_f\data\sound\RscButtonMenu\soundPush", 0.09, 1 }; soundClick[] = { "\A3\ui_f\data\sound\RscButtonMenu\soundClick", 0.09, 1 }; soundEscape[] = { "\A3\ui_f\data\sound\RscButtonMenu\soundEscape", 0.09, 1 }; }; class RscButtonMenuOK { idc = 1; shortcuts[] = { "0x00050000 + 0", 28, 57, 156 }; default = 1; text = "OK"; soundPush[] = { "\A3\ui_f\data\sound\RscButtonMenuOK\soundPush", 0.09, 1 }; }; class RscButtonMenuCancel { idc = 2; shortcuts[] = { "0x00050000 + 1" }; text = "Cancel"; }; class RscObject { access = 0; idc = -1; type = 81; style = 0x00; blinkingPeriod = 0; model = "\a3\Ui_f\objects\Compass.p3d"; scale = 0.5; x = 0; y = 0; z = 1; w = 1; h = 1; xBack = 0; yBack = 0; zBack = 1; enableZoom = 0; zoomDuration = 0; inBack = 0; direction[] = {0,0,1}; up[] = {0,1,0}; tooltip = ""; tooltipColorShade[] = {0,0,0,1}; tooltipColorText[] = {1,1,1,1}; tooltipColorBox[] = {1,1,1,1}; onMouseMoving = ""; onMouseHolding = ""; onMouseDown = ""; }; class RscProgress { type = 8; style = 0; colorFrame[] = {0,0,0,1}; colorBar[] = {1,1,1,1}; texture = "#(argb,8,8,3)color(1,1,1,1)"; x = 0; y = 0; w = 1; h = 0.03; }; class RscControlsGroup { deletable = 0; fade = 0; class VScrollbar { color[] = { 1, 1, 1, 1 }; width = 0.021; autoScrollEnabled = 1; }; class HScrollbar { color[] = { 1, 1, 1, 1 }; height = 0.028; }; class Controls { }; type = 15; idc = -1; x = 0; y = 0; w = 1; h = 1; shadow = 0; style = 16; }; class RscActiveText { idc = -1; type = CT_ACTIVETEXT; style = ST_PICTURE; x = 0.75; y = 0.5; w = 0.2; h = 0.035; font = PuristaMedium; sizeEx = 0.024; color[] = { 1, 1, 1, 1 }; colorActive[] = { 1, 0.2, 0.2, 1 }; colorDisabled[] = {1,1,1,1}; soundEnter[] = { "", 0, 1 }; // no sound soundPush[] = { "", 0, 1 }; soundClick[] = { "", 0, 1 }; soundEscape[] = { "", 0, 1 }; action = "hint ""Good choice!"""; tooltip = ""; text = ""; default = true; }; 6 1 Share this post Link to post Share on other sites
Arkensor 96 Posted March 30, 2016 Good tutorial for people who are new to GUI scripting. Well done. Regards Arkensor 1 Share this post Link to post Share on other sites
soolie 189 Posted March 30, 2016 Good tutorial for people who are new to GUI scripting. Thanks! Took a look at your Altis Life server after seeing it's ranked no 1 . Some impressive UIs in there! Unfortunately, I couldn't understand a lot of it because I don't speak German, but I could tell the basics of what most of it does and is very cool. Share this post Link to post Share on other sites
Arkensor 96 Posted March 30, 2016 Thanks! Took a look at your Altis Life server after seeing it's ranked no 1 . Some impressive UIs in there! Unfortunately, I couldn't understand a lot of it because I don't speak German, but I could tell the basics of what most of it does and is very cool. Thank you very much, we worked a long time on that. Yeah maybe we will do some english translations in the future ;) Regards Arkensor Share this post Link to post Share on other sites
six_ten 208 Posted March 30, 2016 Excellent tutorial -- I really appreciate that you explained how the code works in plain English. Customizing mine now. As-is it works in game as a mission -- even the vehicles from my mod are available -- and it works great. I want to activate it instead of from the player to an in-game object. I added the following to a custom character: class UserActions { class Action_TalkToStorekeeper { displayName = "Talk to Storekeeper"; position = GunBreech_Bess; priority = 0.3; radius = 2.0; onlyForPlayer = true; condition = (Alive(this)); statement = ([this, 'Vehicle Selector'] call TUT_fnc_OpenVehUI); }; }; -- I want to move the GUI from a mission to my mod, so I can add this storekeeper to any mission without having to transfer the GUI files. So far I moved the mission folder to my mod, renamed it ART_GUI, and wrote a config that looks like this: //onLoadName = "Vehicle Selector"; //author = "Soolie"; //onLoadMission="Tutorial"; class CfgPatches { class ART_GUI { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {}; }; }; #include "dialog\Common.hpp" #include "dialog\TUT_gui_veh.hpp" class RscTitles { #include "dialog\TUT_gui_veh.hpp" }; I've also commented out everything in the init.sqf except _vehDialog = [] spawn compile PreprocessFileLineNumbers "dialog\TUT_fnc_veh.sqf"; waitUntil {scriptDone _vehDialog}; While running it through pboProject I had to add a couple of missing semicolons in TUT_gui_veh.hpp (one at line 134 and the other was nearby). Also had an error in common.hpp at the last line default = true; the error message said " Line 1670 true and false do not exist" I know I'll need to get the init.sqf to run to preprocess the functions, but I don't know what to do beyond what I have already. Share this post Link to post Share on other sites
thecoolsideofthepillow 22 Posted March 30, 2016 The only question I have is: Where do I get the base classes I need to make the GUI's outputted by the in-game editor actually work? Can I export them from that editor or do I need to do them by hand? Or is there just a generic file I could include? All these tutorials tell you to include the base classes; they never explain how to get them for your own purposes or edit them from their examples. Share this post Link to post Share on other sites
spyderblack723 407 Posted March 30, 2016 The only question I have is: Where do I get the base classes I need to make the GUI's outputted by the in-game editor actually work? Can I export them from that editor or do I need to do them by hand? Or is there just a generic file I could include? All these tutorials tell you to include the base classes; they never explain how to get them for your own purposes or edit them from their examples. Here's a good link for that https://forums.bistudio.com/topic/185135-resource-gui-rsc-base-classes-colours/ I don't believe it has all of the classes that you might use, but it should have most. After you've had a bit more experience with everything you'll be able to start customizing it to your liking and then just transfer those classes between projects. Share this post Link to post Share on other sites
soolie 189 Posted March 31, 2016 The only question I have is: Where do I get the base classes I need to make the GUI's outputted by the in-game editor actually work? Can I export them from that editor or do I need to do them by hand? Or is there just a generic file I could include? All these tutorials tell you to include the base classes; they never explain how to get them for your own purposes or edit them from their examples. You can start with the one from the mission template dl in the first post(forgot where i got it but have been adding to it for a while). And like spyder said you can keep customizing as you get more experienced with it. Excellent tutorial -- I really appreciate that you explained how the code works in plain English. Customizing mine now. As-is it works in game as a mission -- even the vehicles from my mod are available -- and it works great. I want to activate it instead of from the player to an in-game object. I added the following to a custom character: While running it through pboProject I had to add a couple of missing semicolons in TUT_gui_veh.hpp (one at line 134 and the other was nearby). Also had an error in common.hpp at the last line default = true; the error message said " Line 1670 true and false do not exist" I know I'll need to get the init.sqf to run to preprocess the functions, but I don't know what to do beyond what I have already. That at the top of common should fix the true error. #define true 1 #define false 0 Not too sure about adding UIs into mods but I will try to find out. Hopefully someone else who knows sees in the meantime. Share this post Link to post Share on other sites
six_ten 208 Posted March 31, 2016 #define true 1#define false 0 That at the top of common should fix the true error. That did fix it, now it runs through pboProject, but when loading the game I get the error: No entry 'bin\config.bin/RscDisplayMain/controls/ButtonPlay.TexturenoShortCut'. Oddly the warning dialog has no Okay or Cancel button like it usually does, so I have to exit game with ctrl alt del. Share this post Link to post Share on other sites
soolie 189 Posted March 31, 2016 That did fix it, now it runs through pboProject, but when loading the game I get the error: No entry 'bin\config.bin/RscDisplayMain/controls/ButtonPlay.TexturenoShortCut'. Oddly the warning dialog has no Okay or Cancel button like it usually does, so I have to exit game with ctrl alt del. Im guessing in your dialog you have a "Button play", in there you either have texturenoshortcut defined and it shouldn't be or it should be and you dont have it textureNoShortcut = "#(argb,8,8,3)color(0,0,0,0)"; Share this post Link to post Share on other sites
six_ten 208 Posted March 31, 2016 It is unmodified other than what I outlined above. Im guessing that since I havent called the preprocess stuff (no idea how yet) that it hasnt read those things, not sure. Share this post Link to post Share on other sites
soolie 189 Posted March 31, 2016 It is unmodified other than what I outlined above. Im guessing taht since I havent called the preprocess stuff (no idea how yet) that it hasnt read those things, not sure. Ahh didnt notice is said RscDisplayMain I think this is referring to the Play button on the main screen. I think somehow it's overwriting what's in game but really, I have no idea what's doing it. Like I said, not really sure about adding dialogs to the whole mod. Only ever used them in mission files. Share this post Link to post Share on other sites
soolie 189 Posted April 3, 2016 Added common.hpp to the first post. Please let me know if you notice anything not in there. Also, if anyone has a working RscTree they are willing to share(including fncs pls) It would be greatly appreciated :) Share this post Link to post Share on other sites
soolie 189 Posted April 7, 2016 Thanks to @hoverguy for providing me with a RscTree template, I will be releasing a new tutorial explaining how they work. Should be up in the next day or two, will add to this post. Share this post Link to post Share on other sites
MikeMuir 9 Posted April 30, 2016 Great tutorial for someone new to dialog ^^ Very helpfull for my mission, thank you soolie ! 1 Share this post Link to post Share on other sites
James Adams 3 Posted April 12, 2017 Fantastic Release, learned a lot from this, thank you very much @soolie! Regards, James 2 Share this post Link to post Share on other sites
Greatman 10 Posted May 4, 2017 I have a weird issue trying to display RscActiveText which is .paa image (58kb) I know for a fact it worked fine on arma 2 servers before, and I am able to view the image in TexView 2 just fine. however in the gui it is transparent will not show at all. but if i try another file normal .jpg (16KB) it works just fine. so I know its not the my script or configuration file. When i convert the .paa to .jpg as a test it becomes 56kb in size, and I can view it in windows just fine. However using that crashes my arma application all together. Any ideas why this would be an issue? I thought Arma handled .paa better and if it is size thing why would it work perfectly fine on arma 2 not in arma 3? is there something i should change in your defines.hpp file for RscActiveText? soolie here is what that image looks like, this is what i mean by its transparent, click here . It is on top of class controlsBackground which is also .paa but that works fine. Share this post Link to post Share on other sites
Lloyd Dawkins 0 Posted July 23, 2017 @soolie I've been referring to your simplistic but creative vehicle spawning GUI. I have created my own, once I understood what I am doing it was incredibly simplistic, time to move to the more advanced GUI's! I have created a GUI, on the click of a button, I would like a child GUI to appear but then the parent disapears. I would like to keep the parent GUI displayed if possible. My first thought was I could just copy the Parent GUI into the child gui, so when I click the button it essentially brings up both of the GUIs at the same time. Surely there has to be an easier way, I have tried playing around with createdialog & createdisplay, could you advise any quick tips? Share this post Link to post Share on other sites
Corpral Nikon 1 Posted February 2, 2020 @soolie Awsome tutorial I have been busy learning GUI dialogs where the learning resources is bit limited, would like your help on a dialog im stuck with Share this post Link to post Share on other sites
Syfer92 0 Posted August 13 Спасибо это крутой скрипт. Как мне добавить другую технику из дополнений или модов? Share this post Link to post Share on other sites