Jump to content
Joshua9797

[Release] PaintShop Script SP/MP

Recommended Posts

First time playing with config files and first time publishing here.

 

This script allows the player to change the paint job of a vehicle without needing to enter the Zeus slot or execute lines of code themselves.

I came up with the idea when I repeatedly had to switch to the Zeus slot on a KP-Liberation server whenever I wanted to change the paint job on a vehicle that I had previously purchased with resources.

Since I didn't want to provide the player with a cheat tool,

creating a virtual garage using BIS_fnc_garage would have been too powerful.

 

 

Note:

Please let me know if you have any improvements.
One thing that bothers me, for example, is that I can't pass the variables _vehicle and _textureList to the EH "LBSelChanged" and therefore have to write them into a public variable.

 

Instructions:

Place:

  1. An input object, such as a laptop, and assign it the variable name "JFR_PaintShop_Input".
    (You can open the PaintShop on this)
  2. A trigger with an appropriate size, for example, 10x10x10, and assign it the variable name "JFR_TGR_PaintShop".
    (The vehicle to be customized must be driven into the trigger area)
  3. Any object for the camera and assign it the variable name "JFR_CamPosObj". For example, a holographic arrow (helper).
    (The camera will switch to this position and focus on the vehicle after opening the PaintShop)
    (The camera object can be made invisible in the attributes of the object)

 

 

Create the following file structure in your mission folder:

(the mission.sqm should already be there)

myMission.map
	- mission.sqm
	- initPlayerLocal.sqf
	- description.ext
	scripts
		paintShop
			- initPaintShop.sqf
			- paintShop.sqf
			dialogs
				- controls.hpp
				- defines.hpp

Copy and paste the following code into the appropriate files:

 

  • initPlayerLocal.sqf:
    Spoiler
    
    private _input = JFR_PaintShop_Input; //The input object on which the PaintShop can be opened.
    private _triggerArea = JFR_TGR_PaintShop; //The first vehicle found within this trigger will be selected for customization.
    private _camPos = JFR_CamPosObj; //(Optional) The position of a hovering camera to which the player switches during customization.
    _input addAction ["Open PaintShop", {
    	[_this select 3 select 0, _this select 3 select 1] execVM "scripts\paintShop\initPaintShop.sqf";
    } , [_triggerArea, _camPos], 1.5, true, true, "","(_this distance _target < 4)"];

     

     

  • description.ext:
    Spoiler
    
    #include "scripts\paintShop\dialogs\defines.hpp"
    #include "scripts\paintShop\dialogs\controls.hpp"

     

     

  • initPaintShop.sqf:

    Spoiler
    
    /*
    Author: Joshua9797 https://steamcommunity.com/id/Joshua9797
    
    !This script should be called locally, for example, through an addAction in the initPlayerLocal!
    
    Description: 
    This script is intended solely to find a vehicle, which is then passed to the script paintShop.sqf.
    The first vehicle found within the provided trigger will be selected.
    
    Optionally, a position or object can be passed for the creation of an external camera.
    However, the position of the camera is simply passed on.
    
    Parameters:
    	_paintShopArea_TGR: The first vehicle found within this trigger will be selected for customization.
    (Optional):
    	_camPos: The position of a hovering camera to which the player switches during customization (default: nil).
    
    Returns: none
    
    Examples:
    	[JFR_TGR_PaintShop, JFR_CamPosObj] execVM "scripts\paintShop\initPaintShop.sqf";
    	[JFR_TGR_PaintShop, [100, 60, 5]] execVM "paintShop\initPaintShop.sqf";
    	[JFR_TGR_PaintShop] execVM "initPaintShop.sqf";
    */
    params ["_paintShopArea_TGR", ["_camPos", nil]];
    private _list = (list _paintShopArea_TGR) select {_x in vehicles};
    private _firstVehicle = _list select 0;
    if (isNil "_camPos") then {
    	[_firstVehicle] execVM "scripts\paintShop\paintShop.sqf";
    } else {
    	[_firstVehicle, _camPos] execVM "scripts\paintShop\paintShop.sqf";
    };

     

     

  • paintShop.sqf:

    Spoiler
    
    /*
    Author: Joshua9797 https://steamcommunity.com/id/Joshua9797
    
    !This script should be called locally, for example, through an addAction in the initPlayerLocal!
    
    Description: 
    This script allows the player to change the paint job of a vehicle
    without needing to enter the Zeus slot or execute lines of code themselves.
    I came up with the idea when I repeatedly had to switch to the Zeus slot on a KP-Liberation server
    whenever I wanted to change the paint job on a vehicle that I had previously purchased with resources.
    Since I didn't want to provide the player with a cheat tool,
    creating a virtual garage using BIS_fnc_garage would have been too powerful.
    
    (It is not the task of this script to find the vehicle to be customized)
    Optionally, a position or object can be passed for the creation of an external camera.
    
    Parameters:
    	_vehicle: The vehicle to be customized.
    (Optional):
    	_camPos: The position of a hovering camera to which the player switches during customization (default: nil).
    
    Returns: none
    
    Examples:
    	[MyVehicle, CamPos_OBJ] execVM "scripts\paintShop\paintShop.sqf";
    	[MyVehicle, [100, 60, 5]] execVM "paintShop\paintShop.sqf";
    	[vehicle player] execVM "paintShop.sqf";
    */
    params ["_vehicle", ["_camPos", nil]];
    if (isNil "_vehicle") exitWith {hint "No Vehicle Detected!"};
    
    private _getTextures = {
    	params ["_vehicle"];
    	private _vehicleCfg = configFile >> "CfgVehicles" >> (getDescription _vehicle select 0);
    	private _textureSources = "true" configClasses (_vehicleCfg >> "TextureSources");
    	private _textureList = [];
    	{
    		_textureList pushBack (configName _x);
    	} forEach _textureSources;
    	_textureList;
    };
    
    private _createCamera = {
    	params ["_camPos", "_target"];
    	private _camera = "camera" camcreate _camPos;
    	_camera cameraEffect ["internal", "back"];
    	camUseNVG false;
    	false setCamUseTI 1;
    	showCinemaBorder false;
    	_camera camPrepareTarget _target;
    	_camera camPrepareFOV 1;
    	_camera camPrepareFocus [-1,-1];
    	_camera camCommitPrepared 0;
    	_camera;
    };
    
    private _createGUI = {
    	createDialog "JFR_DialogPaintShop";
    	
    	findDisplay 9797 displayAddEventHandler ["Unload",{
    		if ((isNil "JFR_PaintShop_camera") == false) then {
    			Player cameraEffect ["terminate","back"];
    			camDestroy JFR_PaintShop_camera;
    		};
    	}];
    	private _button = (findDisplay 9797) displayCtrl 1600;
    	_button ctrlAddEventHandler ["ButtonClick",{
    		closeDialog 2;
    		if ((isNil "JFR_PaintShop_camera") == false) then {
    			Player cameraEffect ["terminate","back"];
    			camDestroy JFR_PaintShop_camera;
    		};
    	}];
    	private _listBox = (findDisplay 9797) displayCtrl 1500;
    	_listBox;
    };
    
    
    //find textures
    private _textureList = [_vehicle] call _getTextures;
    
    //create camera if parameters specify
    if ((isNil "_camPos") == false) then {
    	if (typeName _camPos != "ARRAY") then {_camPos = getPos _camPos};
    	JFR_PaintShop_camera = [_camPos, _vehicle] call _createCamera;
    };
    
    //create GUI
    private _listBox = [] call _createGUI;
    
    //add main function
    JFR_PaintShop_Vehicle = _vehicle;
    JFR_PaintShop_textureList = _textureList;
    _listBox ctrlAddEventHandler ["LBSelChanged",{
    	params ["_control", "_lbCurSel", "_lbSelection"];
    	//[JFR_PaintShop_Vehicle, JFR_PaintShop_textureList select _lbCurSel] call BIS_fnc_initVehicle;
    	[JFR_PaintShop_Vehicle, JFR_PaintShop_textureList select _lbCurSel] remoteExec ["BIS_fnc_initVehicle"]; //why is remoteExec necessary?
    	private _modifiedPos = getPos JFR_PaintShop_Vehicle; 
    	_modifiedPos set[2, 0.1];
    	JFR_PaintShop_Vehicle setPos _modifiedPos;
    }];
    
    //add selections to GUI
    { lbAdd [1500, _x]; } forEach _textureList;

     

     

  • controls.hpp:

    Spoiler
    
    class JFR_DialogPaintShop {
    	idd = 9797;
    	class controls{
    		class JFR_PaintShop_ListBox: RscListBox
    		{
    			idc = 1500;
    			x = 0.34918 * safezoneW + safezoneX;
    			y = 0.236 * safezoneH + safezoneY;
    			w = 0.0773438 * safezoneW;
    			h = 0.484 * safezoneH;
    		};
    		class JFR_PaintShop_Button: RscButton
    		{
    			idc = 1600;
    			text = "Exit"; //--- ToDo: Localize;
    			x = 0.34918 * safezoneW + safezoneX;
    			y = 0.731 * safezoneH + safezoneY;
    			w = 0.0773438 * safezoneW;
    			h = 0.033 * safezoneH;
    		};
    		
    	};
    };

     

     

  • defines.hpp:

    Spoiler
    
    ///////////////////////////////////////////////////////////////////////////
    /// Styles
    ///////////////////////////////////////////////////////////////////////////
    
    // 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
    
    
    ///////////////////////////////////////////////////////////////////////////
    /// 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 = "RobotoCondensed";
    	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 = "RobotoCondensed";
    		color = "#ffffff";
    		colorLink = "#D09B43";
    		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,
    		0
    	};
    	colorText[] = 
    	{
    		0.95,
    		0.95,
    		0.95,
    		1
    	};
    	colorDisabled[] = 
    	{
    		1,
    		1,
    		1,
    		0.25
    	};
    	colorSelection[] = 
    	{
    		"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
    		1
    	};
    	autocomplete = "";
    	text = "";
    	size = 0.2;
    	style = "0x00 + 0x40";
    	font = "RobotoCondensed";
    	shadow = 2;
    	sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
    	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
    	};
    	colorDisabled[] = 
    	{
    		1,
    		1,
    		1,
    		0.25
    	};
    	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
    	};
    	colorTextRight[] = 
    	{
    		1,
    		1,
    		1,
    		1
    	};
    	colorSelectRight[] = 
    	{
    		0,
    		0,
    		0,
    		1
    	};
    	colorSelect2Right[] = 
    	{
    		0,
    		0,
    		0,
    		1
    	};
    	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 = "RobotoCondensed";
    	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_ca.paa";
    	arrowFull = "\A3\ui_f\data\GUI\RscCommon\rsccombo\arrow_combo_active_ca.paa";
    	wholeHeight = 0.45;
    	colorActive[] = 
    	{
    		1,
    		0,
    		0,
    		1
    	};
    };
    class RscListBox
    {
    	deletable = 0;
    	fade = 0;
    	access = 0;
    	type = 5;
    	rowHeight = 0;
    	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
    	};
    	colorTextRight[] = 
    	{
    		1,
    		1,
    		1,
    		1
    	};
    	colorSelectRight[] = 
    	{
    		0,
    		0,
    		0,
    		1
    	};
    	colorSelect2Right[] = 
    	{
    		0,
    		0,
    		0,
    		1
    	};
    	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 = "RobotoCondensed";
    	sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
    	shadow = 0;
    	colorShadow[] = 
    	{
    		0,
    		0,
    		0,
    		0.5
    	};
    	period = 1.2;
    	maxHistoryDelay = 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
    	};
    	idc = -1;
    	style = 2;
    	x = 0;
    	y = 0;
    	w = 0.095589;
    	h = 0.039216;
    	shadow = 2;
    	font = "RobotoCondensed";
    	sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
    	url = "";
    	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 = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)";
    		top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2";
    		right = 0.005;
    		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.13])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
    		1
    	};
    	colorBackgroundFocused[] = 
    	{
    		"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
    		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 = "RobotoCondensed";
    		color = "#E5E5E5";
    		align = "left";
    		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 = "RobotoCondensed";
    	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 = "RobotoCondensed";
    	size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
    	sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
    	text = "";
    	url = "";
    	action = "";
    	class AttributesImage
    	{
    		font = "RobotoCondensed";
    		color = "#E5E5E5";
    		align = "left";
    	};
    };
    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 = "RobotoCondensed";
    	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 = "RobotoCondensed";
    		color = "#E5E5E5";
    		align = "left";
    		shadow = "false";
    	};
    	class AttributesImage
    	{
    		font = "RobotoCondensed";
    		color = "#E5E5E5";
    		align = "false";
    	};
    };
    class RscFrame
    {
    	type = 0;
    	idc = -1;
    	deletable = 0;
    	style = 64;
    	shadow = 2;
    	colorBackground[] = 
    	{
    		0,
    		0,
    		0,
    		0
    	};
    	colorText[] = 
    	{
    		1,
    		1,
    		1,
    		1
    	};
    	font = "RobotoCondensed";
    	sizeEx = 0.02;
    	text = "";
    	x = 0;
    	y = 0;
    	w = 0.3;
    	h = 0.3;
    };
    class RscSlider
    {
    	deletable = 0;
    	fade = 0;
    	access = 0;
    	type = 3;
    	style = 1024;
    	color[] = 
    	{
    		1,
    		1,
    		1,
    		0.8
    	};
    	colorActive[] = 
    	{
    		1,
    		1,
    		1,
    		1
    	};
    	shadow = 0;
    	x = 0;
    	y = 0;
    	w = 0.3;
    	h = 0.025;
    };
    class IGUIBack
    {
    	type = 0;
    	idc = 124;
    	style = 128;
    	text = "";
    	colorText[] = 
    	{
    		0,
    		0,
    		0,
    		0
    	};
    	font = "RobotoCondensed";
    	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;
    	deletable = 0;
    	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,
    		0,
    		0
    	};
    	colorTextSelect[] = 
    	{
    		0,
    		0.8,
    		0,
    		1
    	};
    	colorSelectedBg[] = 
    	{
    		"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
    		"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
    		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 = "RobotoCondensed";
    	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 = "5.25 * (((safezoneW / safezoneH) min 1.2) / 40)";
    		top = 0;
    		w = "1 * (((safezoneW / safezoneH) min 1.2) / 40)";
    		h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
    	};
    	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 = "Abbrechen";
    };
    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;
    };

     

     

  • Like 2

Share this post


Link to post
Share on other sites

Does this work on any vehicle or only the ones that can be changed in virtual garage? 

Share this post


Link to post
Share on other sites
1 hour ago, avibird 1 said:

Does this work on any vehicle or only the ones that can be changed in virtual garage? 

The script dynamically searches for all stored textures within the CfgVehicles. Essentially, for all vanilla vehicles (car, helicopter, plane), you should see all available textures as you would in the virtual garage. However, I haven't tested mod vehicles.

 

I also attempted to add some of the unused textures from BI using CfgVehicleTemplates, but it seems I am too stupid for that.

  • Thanks 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×