initial upload

This commit is contained in:
DESKTOP-UH65DCE\MusTanG
2017-04-19 20:05:12 -05:00
parent 2dbed74ea1
commit 39168694f0
30 changed files with 1536 additions and 0 deletions

98
README.md Normal file
View File

@ -0,0 +1,98 @@
![ArmA 1.68](https://img.shields.io/badge/ArmA%203-1.66-blue.svg) ![Exile 1.0.2](https://img.shields.io/badge/Exile-1.0.2%20Kohlrabi-yellowgreen.svg) ![Build Status](https://img.shields.io/badge/Custom%20Build-passing-38AA38.svg)
# Vehicle & backpack Paintshop By Halv
## Copyright (C) 2015 Halvhjearne
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
## Contact : halvhjearne@gmail.com
# Halv's Paintshop eXpanded 4 Exile
# by DirtySanchez at DonkeyPunch Community Gaming
## Copyright (C) 2017 DirtySanchez/Halvhjearne
All skins provided in this pack are the property of DonkeyPunch Community Gaming and DirtySanchez/=RAV=MusTanG
## Installation
####.
## STEP 1:
#### --Run this query on your database
#### ALTER TABLE `construction` ADD `paintshop` TEXT NOT NULL;
####.
## STEP 2:
#### --add this to the description.ext
#### #include "addons\paintshop\Halv_defines.hpp"
#### #include "addons\paintshop\paintshop.hpp"
####.
## STEP 3:
#### --add to init.sqf
#### if(hasInterface)then
#### {
#### [] execVM "addons\paintshop\paintshop.sqf";
#### };
#### [] execVM "addons\paintshop\paintshop_serveraddon.sqf";
####.
## STEP 4:
#### --add this to your exile.ini
#### ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#### ;; Halv's PaintShop eXpanded 4 Exile
#### ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
####
#### [updateBasePaint]
#### SQL1_1 = UPDATE construction SET paintshop = ? WHERE id = ?
#### Number of Inputs = 2
#### SQL1_INPUTS = 1,2
####.
## STEP 5:
#### --change this in the exile.ini
#### [loadConstruction]
#### SQL1_1 = SELECT id,class,account_uid,spawned_at,position_x,position_y,position_z,direction_x,direction_y,direction_z,up_x,up_y,up_z,is_locked,pin_code,territory_id,deleted_at,damage,paintshop FROM construction WHERE id = ?
#### Number Of Inputs = 1
#### SQL1_INPUTS = 1
#### OUTPUT = 1,2-STRING,3-STRING,4-STRING,5,6,7,8,9,10,11,12,13,14,15-STRING,16,17,18,19
####.
## STEP 6:
#### --add class Paint to your CfgInteractionMenus under class Construction >> Actions
#### class Construction
#### {
#### targetType = 2;
#### target = "Exile_Construction_Abstract_Static";
####
#### class Actions
#### {
#### class Paint : ExileAbstractAction
#### {
#### title = "Paint Base Part";
#### condition = "call ExileClient_util_world_isInOwnTerritory";
#### action = "ExileClientInteractionObject call HALV_paintshop_opendialog";
#### };
####.
## Step 7:
#### --add this to your CfgExileCustomCode
#### class CfgExileCustomCode
#### {
#### ExileServer_object_construction_database_load = "addons\paintshop\ExileServer_object_construction_database_load.sqf";
####.
## STEP 8:
#### if using infiStar add allowed IDDs 6666
####.

View File

@ -0,0 +1,63 @@
/**
* ExileServer_object_construction_database_load
*
* Exile Mod
* www.exilemod.com
* © 2015 Exile Mod Team
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
*/
private["_constructionID","_data","_position","_vectorDirection","_vectorUp","_constructionObject","_damageLevel","_public","_pinCode"];
_constructionID = _this;
_data = format ["loadConstruction:%1", _constructionID] call ExileServer_system_database_query_selectSingle;
_position = [_data select 4, _data select 5, _data select 6];
_vectorDirection = [_data select 7, _data select 8, _data select 9];
_vectorUp = [_data select 10, _data select 11, _data select 12];
_constructionObject = createVehicle [(_data select 1), _position, [], 0, "CAN_COLLIDE"];
_constructionObject setPosATL _position;
_constructionObject setVectorDirAndUp [_vectorDirection, _vectorUp];
_constructionObject setVariable ["ExileDatabaseID", _data select 0];
_constructionObject setVariable ["ExileOwnerUID", (_data select 2)];
_constructionObject setVariable ["ExileIsPersistent", true];
_constructionObject setVariable ["ExileTerritoryID", (_data select 15)];
_damageLevel = (_data select 17);
//Halv's paintshop eXpanded 4 Exile
_paintshop = _data select 18;
if!(_paintshop isEqualTo "")then
{
{
_constructionObject setObjectTextureGlobal [_forEachIndex, _paintshop select _forEachIndex];
}forEach _paintshop;
};
//END
_public = _damageLevel > 0;
_constructionObject setVariable ["ExileConstructionDamage",_damageLevel,_public];
if(_public)then
{
_constructionObject call ExileServer_util_setDamageTexture;
};
_pinCode = _data select 14;
if !(_pinCode isEqualTo "000000") then
{
_constructionObject setVariable ["ExileAccessCode", _pinCode];
_constructionObject setVariable ["ExileIsLocked", (_data select 13), true];
};
if (getNumber(configFile >> "CfgVehicles" >> (_data select 1) >> "exileRequiresSimulation") isEqualTo 1) then
{
_constructionObject enableSimulationGlobal true;
_constructionObject call ExileServer_system_simulationMonitor_addVehicle;
}
else
{
_constructionObject enableSimulationGlobal false;
};
_constructionObject setVelocity [0, 0, 0];
_constructionObject setPosATL _position;
_constructionObject setVelocity [0, 0, 0];
_constructionObject setVectorDirAndUp [_vectorDirection, _vectorUp];
_constructionObject setVelocity [0, 0, 0];
_constructionObject

View File

@ -0,0 +1,604 @@
/*
definitions for various dialogs by Halv
Copyright (C) 2015 Halvhjearne
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Contact : halvhjearne@gmail.com
*/
// Control types
#define CT_MAP_MAIN 101
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_XSLIDER 43
#define CT_SLIDER 3
// Static styles
#define ST_PICTURE 0x30
#define ST_MULTI 16
// Listbox styles
#define ST_LEFT 0x00
#define LB_TEXTURES 0x10
// Slider styles
#define SL_DIR 0x400
#define SL_VERT 0
#define SL_HORZ 1024
#define SL_TEXTURES 0x10
// Base Classes
class HALV_IGUIBack
{
type = 0;
idc = -1;
style = 80;
text = "";
colorText[] = {.1,.1,.1,.6};
font = "PuristaMedium";
sizeEx = 0;
shadow = 0;
x = 0.1;
y = 0.1;
w = 0.1;
h = 0.1;
colorbackground[] = {.1,.1,.1,.6};
};
class HALV_RscFrame
{
type = 0;
idc = -1;
style = 64;
shadow = 2;
colorBackground[] = {0,.5,1,.8};
colorText[] = {0,.5,1,.8};
font = "PuristaLight";
sizeEx = 0.02;
text = "";
};
class HALV_RscButton
{
access = 0;
type = 1;
text = "";
colorText[] = {1,1,1,0.8};
colorDisabled[] = {0.4,0.4,0.4,1};
colorBackground[] = {.7,.7,.7,.6};
colorBackgroundDisabled[] = {.95,.95,.95,1};
colorBackgroundActive[] = {.3,.3,.3,.6};
colorFocused[] = {.7,.7,.7,.8};
colorShadow[] = {.1,.1,.1,1};
colorBorder[] = {.7,.7,.7,.5};
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 = 1;
font = "PuristaMedium";
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
offsetX = 0.003;
offsetY = 0.003;
offsetPressedX = 0.002;
offsetPressedY = 0.002;
borderSize = 0;
};
class HALV_RscListBox
{
access = 0;
type = 5;
w = 0.4;
h = 0.4;
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.2,0.2,0.2,0.6};
pictureColor[] = {1,1,1,1}; // Picture color
pictureColorSelect[] = {1,1,1,1}; // Selected picture color
pictureColorDisabled[] = {1,1,1,0.5}; // Disabled picture color
soundSelect[] = {"\A3\ui_f\data\sound\RscListbox\soundSelect", 0.09, 1};
arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)";
arrowFull = "#(argb,8,8,3)color(1,1,1,1)";
class ListScrollBar
{
color[] = {1, 1, 1, 0.6};
colorActive[] = {1, 1, 1, 1};
colorDisabled[] = {1, 1, 1, 0.3};
shadow = 0;
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
};
style = 16;
font = "PuristaMedium";
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
shadow = 0;
colorShadow[] = {0, 0, 0, 0.5};
color[] = {1, 1, 1, 1};
period = 1.2;
maxHistoryDelay = 1;
autoScrollSpeed = -1;
autoScrollDelay = 5;
autoScrollRewind = 0;
};
class HALV_RscCheckbox
{
idc = -1;
type = 7;
style = 2;
x = "LINE_X(XVAL)";
y = "LINE_Y";
w = "LINE_W(WVAL)";
h = 0.029412;
colorText[] = {0,.5,1,1};
color[] = {.7,.7,.7,.5};
colorBackground[] = {.7,.7,.7,.2};
colorTextSelect[] = {0, 0.8, 0,.8};
colorSelectedBg[] = {.1,.1,.1,.2};
colorSelect[] = {.7,.7,.7,.2};
colorTextDisable[] = {0.4, 0.4, 0.4, 1};
colorDisable[] = {0.4, 0.4, 0.4, 1};
font = "PuristaMedium";
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
rows = 1;
columns = 1;
};
class HALV_RscStructuredText
{
access = 0;
type = CT_STRUCTURED_TEXT;
idc = -1;
style = ST_LEFT;
colorText[] = {1,1,1,1};
colorBackground[] = {.1,.1,.1,.6};
class Attributes
{
font = "PuristaMedium";
color = "#ffffff";
align = "center";
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 HALV_RscSlider {
idc = -1;
type = CT_XSLIDER;
style = SL_HORZ;
x = 0.4;
y = 0.2;
w = 0.3;
h = 0.025;
color[] = { 1, 1, 1, 1 };
coloractive[] = { 1, 1, 1,.5 };
colorDisabled[] = {.5,.5,.5,.2};
colorBackground[] = {.1,.1,.1,.6};
arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa";
arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa";
border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa";
thumb = "\A3\ui_f\data\gui\cfg\slider\thumb_ca.paa";
};
class HALV_RscMapControl
{
type = CT_MAP_MAIN;
style = ST_PICTURE;
idc = -1;
colorBackground[] = {0.969, 0.957, 0.949, 1};
colorOutside[] = {0, 0, 0, 1};
colorText[] = {0, 0, 0, 1};
font = "TahomaB";
// sizeEx = 0.04;
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.04)";
colorSea[] = {0.467, 0.631, 0.851, 0.5};
colorForest[] = {0.624, 0.78, 0.388, 0.5};
colorRocks[] = {0, 0, 0, 0.3};
colorCountlines[] = {0.572, 0.354, 0.188, 0.25};
colorMainCountlines[] = {0.572, 0.354, 0.188, 0.5};
colorCountlinesWater[] = {0.491, 0.577, 0.702, 0.3};
colorMainCountlinesWater[] = {0.491, 0.577, 0.702, 0.6};
colorForestBorder[] = {0, 0, 0, 0};
colorRocksBorder[] = {0, 0, 0, 0};
colorPowerLines[] = {0.1, 0.1, 0.1, 1};
colorRailWay[] = {0.8, 0.2, 0, 1};
colorNames[] = {0.1, 0.1, 0.1, 0.9};
colorInactive[] = {1, 1, 1, 0.5};
colorLevels[] = {0.286, 0.177, 0.094, 0.5};
colorTracks[] = {0.84, 0.76, 0.65, 0.15};
colorRoads[] = {0.7, 0.7, 0.7, 1};
colorMainRoads[] = {0.9, 0.5, 0.3, 1};
colorTracksFill[] = {0.84, 0.76, 0.65, 1};
colorRoadsFill[] = {1, 1, 1, 1};
colorMainRoadsFill[] = {1, 0.6, 0.4, 1};
colorGrid[] = {0.1, 0.1, 0.1, 0.6};
colorGridMap[] = {0.1, 0.1, 0.1, 0.6};
stickX[] = {0.2, {"Gamma", 1, 1.5}};
stickY[] = {0.2, {"Gamma", 1, 1.5}};
moveOnEdges = 1;
x = 0;
y = 0;
w = 1;
h = 1;
shadow = 0;
ptsPerSquareSea = 5;
ptsPerSquareTxt = 20;
ptsPerSquareCLn = 10;
ptsPerSquareExp = 10;
ptsPerSquareCost = 10;
ptsPerSquareFor = 9;
ptsPerSquareForEdge = 9;
ptsPerSquareRoad = 6;
ptsPerSquareObj = 9;
showCountourInterval = 0;
scaleMin = 0.001;
scaleMax = 1;
scaleDefault = 0.16;
maxSatelliteAlpha = 0.85;
alphaFadeStartScale = 2;
alphaFadeEndScale = 2;
fontLabel = "PuristaMedium";
sizeExLabel = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontGrid = "TahomaB";
sizeExGrid = 0.02;
fontUnits = "TahomaB";
sizeExUnits = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontNames = "EtelkaNarrowMediumPro";
sizeExNames = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
fontInfo = "PuristaMedium";
sizeExInfo = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontLevel = "TahomaB";
sizeExLevel = 0.02;
text = "#(argb,8,8,3)color(1,1,1,1)";
onMouseMoving = "mouseX = (_this Select 1);mouseY = (_this Select 2)";
onMouseButtonDown = "mouseButtonDown = _this Select 1";
onMouseButtonUp = "mouseButtonUp = _this Select 1";
class Legend {
colorBackground[] = {1, 1, 1, 0.5};
color[] = {0, 0, 0, 1};
x = "SafeZoneX + (((safezoneW / safezoneH) min 1.2) / 40)";
y = "SafeZoneY + safezoneH - 4.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
w = "10 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "3.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
font = "PuristaMedium";
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
};
class ActiveMarker {
color[] = {0.3, 0.1, 0.9, 1};
size = 50;
};
class Command {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
size = 18;
importance = 1;
coefMin = 1;
coefMax = 1;
};
class Task {
colorCreated[] = {1, 1, 1, 1};
colorCanceled[] = {0.7, 0.7, 0.7, 1};
colorDone[] = {0.7, 1, 0.3, 1};
colorFailed[] = {1, 0.3, 0.2, 1};
color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])", "(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])", "(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])", "(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"};
icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa";
iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa";
iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa";
iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa";
iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa";
size = 27;
importance = 1;
coefMin = 1;
coefMax = 1;
};
class CustomMark {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa";
size = 24;
importance = 1;
coefMin = 1;
coefMax = 1;
};
class Tree {
color[] = {0.45, 0.64, 0.33, 0.4};
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
size = 12;
importance = "0.9 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class SmallTree {
color[] = {0.45, 0.64, 0.33, 0.4};
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
size = 12;
importance = "0.6 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Bush {
color[] = {0.45, 0.64, 0.33, 0.4};
icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
size = "14/2";
importance = "0.2 * 14 * 0.05 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Church {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Chapel {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Cross {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Rock {
color[] = {0.1, 0.1, 0.1, 0.8};
icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa";
size = 12;
importance = "0.5 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Bunker {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 14;
importance = "1.5 * 14 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Fortress {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
size = 16;
importance = "2 * 16 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class Fountain {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa";
size = 11;
importance = "1 * 12 * 0.05";
coefMin = 0.25;
coefMax = 4;
};
class ViewTower {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa";
size = 16;
importance = "2.5 * 16 * 0.05";
coefMin = 0.5;
coefMax = 4;
};
class Lighthouse {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Quay {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Fuelstation {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Hospital {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class BusStop {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Transmitter {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Stack {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa";
size = 20;
importance = "2 * 16 * 0.05";
coefMin = 0.9;
coefMax = 4;
};
class Ruin {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa";
size = 16;
importance = "1.2 * 16 * 0.05";
coefMin = 1;
coefMax = 4;
};
class Tourism {
color[] = {0, 0, 0, 1};
icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa";
size = 16;
importance = "1 * 16 * 0.05";
coefMin = 0.7;
coefMax = 4;
};
class Watertower {
color[] = {1, 1, 1, 1};
icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
};
class Waypoint {
color[] = {0, 0, 0, 1};
size = 24;
importance = 1;
coefMin = 1;
coefMax = 1;
icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
};
class WaypointCompleted {
color[] = {0, 0, 0, 1};
size = 24;
importance = 1;
coefMin = 1;
coefMax = 1;
icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa";
};
class power {
icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
color[] = {1, 1, 1, 1};
};
class powersolar {
icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
color[] = {1, 1, 1, 1};
};
class powerwave {
icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
color[] = {1, 1, 1, 1};
};
class powerwind {
icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
color[] = {1, 1, 1, 1};
};
class Shipwreck {
icon = "\A3\ui_f\data\map\mapcontrol\Shipwreck_CA.paa";
size = 24;
importance = 1;
coefMin = 0.85;
coefMax = 1;
color[] = {0, 0, 0, 1};
};
};
class HALV_CT_TREE
{
access = 0; // Control access (0 - ReadAndWrite, 1 - ReadAndCreate, 2 - ReadOnly, 3 - ReadOnlyVerified)
type = CT_TREE; // Type is 12
style = ST_LEFT; // Style
x = 0.35567 * safezoneW + safezoneX;
y = 0.137091 * safezoneH + safezoneY;
w = 0.438144 * safezoneW;
h = 0.725818 * safezoneH;
colorBorder[] = {0,.5,1,.8}; // Frame color
colorBackground[] = {0.2,0.2,0.2,0.6}; // Fill color
colorSelect[] = {1,0.5,0,1}; // Selected item fill color (when multiselectEnabled is 0)
colorMarked[] = {1,0.5,0,0.5}; // Marked item fill color (when multiselectEnabled is 1)
colorMarkedSelected[] = {1,0.5,0,1}; // Selected item fill color (when multiselectEnabled is 1)
sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";// Text size
font = "EtelkaMonospacePro"; // Font from CfgFontFamilies
shadow = 1; // Shadow (0 - none, 1 - N/A, 2 - black outline)
colorText[] = {1,1,1,1}; // Text color
colorSelectText[] = {1,1,1,1}; // Selected text color (when multiselectEnabled is 0)
colorMarkedText[] = {1,1,1,1}; // Selected text color (when multiselectEnabled is 1)
tooltip = ""; // Tooltip text
tooltipColorShade[] = {0,0,0,1}; // Tooltip background color
tooltipColorText[] = {1,1,1,1}; // Tooltip text color
tooltipColorBox[] = {1,1,1,1}; // Tooltip frame color
multiselectEnabled = 0; // Allow selecting multiple items while holding Ctrl or Shift
expandOnDoubleclick = 1; // Expand/collapse item upon double-click
hiddenTexture = "A3\ui_f\data\gui\rsccommon\rsctree\hiddenTexture_ca.paa"; // Expand icon
expandedTexture = "A3\ui_f\data\gui\rsccommon\rsctree\expandedTexture_ca.paa"; // Collapse icon
maxHistoryDelay = 1; // Time since last keyboard type search to reset it
// Scrollbar configuration
class ScrollBar
{
width = 0; // width of ScrollBar
height = 0; // height of ScrollBar
// scrollSpeed = 0.01; // scroll speed of ScrollBar
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa"; // Arrow
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa"; // Arrow when clicked on
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa"; // Slider background (stretched vertically)
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa"; // Dragging element (stretched vertically)
color[] = {1,1,1,1}; // Scrollbar color
};
colorDisabled[] = {0,0,0,0}; // Does nothing, but must be present, otherwise an error is shown
colorArrow[] = {0,0,0,0}; // Does nothing, but must be present, otherwise an error is shown
};

View File

@ -0,0 +1,246 @@
/*
Vehicle, uniform & backpack Paintshop
By Halv
Copyright (C) 2015 Halvhjearne > README.md
*/
class HALV_painshop_dialog
{
idd=6666;
moveingenabled=false;
class controls
{
class HALV_paintshop_textextframe: HALV_RscFrame
{
idc = 6672;
x = 0.138874 * safezoneW + safezoneX;
y = 0.246975 * safezoneH + safezoneY;
w = 0.14445 * safezoneW;
h = 0.0330033 * safezoneH;
};
class HALV_paintshop_textureframe: HALV_RscFrame
{
idc = 6670;
text = "Paintshop by Halv"; //--- ToDo: Localize;
x = 0.128556 * safezoneW + safezoneX;
y = 0.224972 * safezoneH + safezoneY;
w = 0.165086 * safezoneW;
h = 0.550055 * safezoneH;
};
class HALV_paintshop_texlistframe: HALV_RscFrame
{
idc = 6671;
x = 0.138874 * safezoneW + safezoneX;
y = 0.290979 * safezoneH + safezoneY;
w = 0.14445 * safezoneW;
h = 0.462046 * safezoneH;
};
class HALV_paintshop_textureback: HALV_IGUIBack
{
idc = 6669;
x = 0.128557 * safezoneW + safezoneX;
y = 0.224973 * safezoneH + safezoneY;
w = 0.165086 * safezoneW;
h = 0.550055 * safezoneH;
};
class HALV_paintshop_mainback: HALV_IGUIBack
{
idc = -1;
x = 0.128556 * safezoneW + safezoneX;
y = 0.775027 * safezoneH + safezoneY;
w = 0.247629 * safezoneW;
h = 0.187019 * safezoneH;
};
class HALV_paintshop_mainframe: HALV_RscFrame
{
idc = -1;
x = 0.128556 * safezoneW + safezoneX;
y = 0.775027 * safezoneH + safezoneY;
w = 0.247629 * safezoneW;
h = 0.187019 * safezoneH;
};
class HALV_paintshop_maintxt: HALV_RscStructuredText
{
idc = -1;
text = "Halv's Paintshop:"; //--- ToDo: Localize;
x = 0.138874 * safezoneW + safezoneX;
y = 0.786029 * safezoneH + safezoneY;
w = 0.118656 * safezoneW;
h = 0.0330033 * safezoneH;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.1)";
};
class HALV_paintshop_maintxtframe: HALV_RscFrame
{
idc = -1;
x = 0.138874 * safezoneW + safezoneX;
y = 0.786028 * safezoneH + safezoneY;
w = 0.118656 * safezoneW;
h = 0.0330033 * safezoneH;
};
class HALV_paintshop_mainvehframe: HALV_RscFrame
{
idc = -1;
x = 0.267848 * safezoneW + safezoneX;
y = 0.786028 * safezoneH + safezoneY;
w = 0.0980199 * safezoneW;
h = 0.0330033 * safezoneH;
};
class HALV_paintshop_mainlistframe: HALV_RscFrame
{
idc = -1;
x = 0.267848 * safezoneW + safezoneX;
y = 0.830033 * safezoneH + safezoneY;
w = 0.0980199 * safezoneW;
h = 0.121012 * safezoneH;
};
class HALV_paintshop_mainswitchframe: HALV_RscFrame
{
idc = -1;
x = 0.138874 * safezoneW + safezoneX;
y = 0.830033 * safezoneH + safezoneY;
w = 0.118656 * safezoneW;
h = 0.0330033 * safezoneH;
};
class HALV_paintshop_mainlist: HALV_RscListBox
{
idc = 6673;
x = 0.267848 * safezoneW + safezoneX;
y = 0.830033 * safezoneH + safezoneY;
w = 0.0980199 * safezoneW;
h = 0.121012 * safezoneH;
onLBDblClick = "call HALV_paintshop_onLBDblClick2;false";
onLBSelChanged = "call HALV_paintshop_onLBSelChanged2;false";
};
class HALV_paintshop_texlist: HALV_RscListBox
{
idc = 6675;
x = 0.138874 * safezoneW + safezoneX;
y = 0.290979 * safezoneH + safezoneY;
w = 0.14445 * safezoneW;
h = 0.462046 * safezoneH;
onLBDblClick = "_this call HALV_paintshop_addtolist;false";
onLBSelChanged = "_this call HALV_paintshop_onLBSelChanged;false";
};
class HALV_paintshop_mainswitch: HALV_RscCheckbox
{
idc = 6674;
x = 0.138874 * safezoneW + safezoneX;
y = 0.830033 * safezoneH + safezoneY;
w = 0.118656 * safezoneW;
h = 0.0330033 * safezoneH;
strings[] = {"Colour Mode"};
checked_strings[] = {"Texture Mode"};
onCheckBoxesSelChanged = "_this call HALV_paintshop_checkchanged;false";
tooltip = "Click to switch between texture list and colour sliders"; // Tooltip text
};
class HALV_paintshop_textxt: HALV_RscStructuredText
{
idc = 6676;
text = "Select Texture"; //--- ToDo: Localize;
x = 0.138874 * safezoneW + safezoneX;
y = 0.246975 * safezoneH + safezoneY;
w = 0.14445 * safezoneW;
h = 0.0330033 * safezoneH;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)";
};
class HALV_paintshop_mainbutacc: HALV_RscButton
{
idc = 6677;
text = "Accept Selected"; //--- ToDo: Localize;
x = 0.138874 * safezoneW + safezoneX;
y = 0.918042 * safezoneH + safezoneY;
w = 0.118656 * safezoneW;
h = 0.0330033 * safezoneH;
action = "call HALV_paintshop_selected;";
tooltip = "Accept all colors / Textures on the list"; // Tooltip text
};
class HALV_paintshop_mainvehtxt: HALV_RscStructuredText
{
idc = 6678;
text = ""; //CurrentVehicle
x = 0.267847 * safezoneW + safezoneX;
y = 0.786029 * safezoneH + safezoneY;
w = 0.0980199 * safezoneW;
h = 0.0330033 * safezoneH;
size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
tooltip = "Currently Painting"; // Tooltip text
};
class HALV_paintshop_mainbutadd: HALV_RscButton
{
idc = 6679;
text = "== Add to list =>"; //--- ToDo: Localize;
x = 0.138874 * safezoneW + safezoneX;
y = 0.874037 * safezoneH + safezoneY;
w = 0.118656 * safezoneW;
h = 0.0330033 * safezoneH;
action = "call HALV_paintshop_addtolist;";
tooltip = "Add Current Selected Color / Texture to the list"; // Tooltip text
};
class HALV_paintshop_sliderback: HALV_IGUIBack
{
idc = 6667;
x = 0.376185 * safezoneW + safezoneX;
y = 0.775027 * safezoneH + safezoneY;
w = 0.412715 * safezoneW;
h = 0.187019 * safezoneH;
};
class HALV_paintshop_sliderframe: HALV_RscFrame
{
idc = 6668;
text = "Paintshop by Halv"; //--- ToDo: Localize;
x = 0.376185 * safezoneW + safezoneX;
y = 0.775027 * safezoneH + safezoneY;
w = 0.412715 * safezoneW;
h = 0.187019 * safezoneH;
};
class HALV_paintshop_slider1: HALV_RscSlider
{
idc = 6681;
x = 0.381344 * safezoneW + safezoneX;
y = 0.786029 * safezoneH + safezoneY;
w = 0.397238 * safezoneW;
h = 0.0330033 * safezoneH;
color[] = { 1, 0, 0, .5 };
coloractive[] = { 1, 0, 0, 1 };
onSliderPosChanged = "_this call HALV_paintshop_slidingcolor;false";
tooltip = "Slide to increase / decrease red color"; // Tooltip text
};
class HALV_paintshop_slider2: HALV_RscSlider
{
idc = 6682;
x = 0.381344 * safezoneW + safezoneX;
y = 0.830033 * safezoneH + safezoneY;
w = 0.397238 * safezoneW;
h = 0.0330033 * safezoneH;
color[] = { 0, 1, 0, .5 };
coloractive[] = { 0, 1, 0, 1 };
onSliderPosChanged = "_this call HALV_paintshop_slidingcolor;false";
tooltip = "Slide to increase / decrease green color"; // Tooltip text
};
class HALV_paintshop_slider3: HALV_RscSlider
{
idc = 6683;
x = 0.381344 * safezoneW + safezoneX;
y = 0.874037 * safezoneH + safezoneY;
w = 0.397238 * safezoneW;
h = 0.0330033 * safezoneH;
color[] = { 0, 0, 1, .5 };
coloractive[] = { 0, 0, 1, 1 };
onSliderPosChanged = "_this call HALV_paintshop_slidingcolor;false";
tooltip = "Slide to increase / decrease blue color"; // Tooltip text
};
class HALV_paintshop_slider4: HALV_RscSlider
{
idc = 6684;
x = 0.381344 * safezoneW + safezoneX;
y = 0.918042 * safezoneH + safezoneY;
w = 0.397238 * safezoneW;
h = 0.0330033 * safezoneH;
color[] = { 1, 1, 1, .5 };
coloractive[] = { 1, 1, 1, 1 };
onSliderPosChanged = "_this call HALV_paintshop_slidingcolor;false";
tooltip = "Slide to increase / decrease saturation"; // Tooltip text
};
};
};

View File

@ -0,0 +1,363 @@
/*
Vehicle, uniform & backpack Paintshop
By Halv
Copyright (C) 2015 Halvhjearne > README.md
Halv's Paintshop eXpanded 4 Exile
by DirtySanchez
DonkeyPunch.INFO
https://discord.me/eXpoch
*/
#include "settings.sqf";
HALV_paintshop_opendialog = {
if(isNull _this)exitWith{};
HALV_paintshop_vehicletopaint = _this;
HALV_paintshop_color = [0,0,0,0.6];
HALV_paintshop_defaultsides = HALV_paintshop_vehicletopaint getVariable ["VEHICLE_DEFAULTTEX",[]];
if(HALV_paintshop_defaultsides isEqualTo [])then{
HALV_paintshop_defaultsides = getObjectTextures HALV_paintshop_vehicletopaint;
HALV_paintshop_vehicletopaint setVariable ["VEHICLE_DEFAULTTEX",HALV_paintshop_defaultsides,true];
};
_typeOf = typeOf HALV_paintshop_vehicletopaint;
_txt = (gettext (configFile >> "cfgvehicles" >> _typeOf >> "displayName"));
if(count(HALV_paintshop_defaultsides) < 1)exitWith{
titleText [format["%1 can not be painted ...",_txt],"PLAIN DOWN"];
diag_log format["%1 could not be painted ...",_typeOf];
};
HALV_paintshop_sidestopaint = [];
{
HALV_paintshop_sidestopaint pushBack [_forEachIndex,_x];
}forEach getObjectTextures HALV_paintshop_vehicletopaint;
HALV_paintshop_currentside = 0;
HALV_paintshop_texture = HALV_paintshop_defaultsides select 0;
createDialog "HALV_painshop_dialog";
disableSerialization;
_ctrl = (findDisplay 6666) displayCtrl 6678;_ctrl ctrlEnable false;
{_ctrl = (findDisplay 6666) displayCtrl _x;_ctrl ctrlShow false;}forEach [6669,6670,6671,6672,6675,6676];
{_ctrl = (findDisplay 6666) displayCtrl _x;_ctrl sliderSetRange [0,1];_ctrl sliderSetSpeed [0.01,0.03];}forEach [6681,6682,6683,6684];
_ctrl sliderSetPosition 0.6;
_ctrl = (findDisplay 6666) displayCtrl 6678;
_ctrl ctrlSetText _txt;
_ctrl = (findDisplay 6666) displayCtrl 6673;
lbClear _ctrl;
{
_text = format["Side %1",_x select 0];
_index = _ctrl lbAdd _text;
_ctrl lbSetPicture [_index,_x select 1];
_ctrl lbSetPictureColor [_index, [1, 1, 1, 1]];
_ctrl lbSetPictureColorSelected [_index, [1, 1, 1, 1]];
_ctrl lbSetData [_index,_x select 1];
_ctrl lbSetValue [_index,_x select 0];
_ctrl lbSetTooltip [_index,"Double Click to Reset Texture"];
}forEach HALV_paintshop_sidestopaint;
};
HALV_paintshop_checkchanged = {
disableSerialization;
if((_this select 2) isEqualTo 1)then{
{_ctrl = (findDisplay 6666) displayCtrl _x;_ctrl ctrlShow false;}forEach [6667,6668,6681,6682,6683,6684];
{_ctrl = (findDisplay 6666) displayCtrl _x;_ctrl ctrlShow true;}forEach [6669,6670,6671,6672,6675,6676];
call HALV_paintshop_filllistbox;
}else{
{_ctrl = (findDisplay 6666) displayCtrl _x;_ctrl ctrlShow false;}forEach [6669,6670,6671,6672,6675,6676];
{_ctrl = (findDisplay 6666) displayCtrl _x;_ctrl ctrlShow true;}forEach [6667,6668,6681,6682,6683,6684];
};
};
HALV_paintshop_filllistbox = {
#include "settings.sqf";
disableSerialization;
_ctrl = (findDisplay 6666) displayCtrl 6675;
lbClear _ctrl;
_colorsConfig=configFile >> "CfgVehicles" >> (typeOf HALV_paintshop_vehicletopaint) >> "availableColors";
if(isArray(_colorsConfig))then{
// _textureSelectionIndex=configFile >> "CfgVehicles" >> (typeOf HALV_paintshop_vehicletopaint) >> "textureSelectionIndex";
_colors=getArray(_colorsConfig);
{
_fi = _forEachIndex;
{
_lb = _ctrl lbAdd format["Skin: %1 %2",_fi,_forEachIndex];
_ctrl lbSetData [_lb,_x];
_ctrl lbSetPicture [_lb,_x];
_ctrl lbSetPictureColor [_lb, [1, 1, 1, 1]];
_ctrl lbSetPictureColorSelected [_lb, [1, 1, 1, 1]];
_ctrl lbSetTooltip [_lb,"Click to Test Texture"];
}forEach _x;
}forEach _colors;
};
{
_fi = _forEachIndex;
_lb = _ctrl lbAdd format["Default: Side %1",_fi];
_ctrl lbSetData [_lb,_x];
_ctrl lbSetPicture [_lb,_x];
_ctrl lbSetPictureColor [_lb, [1, 1, 1, 1]];
_ctrl lbSetPictureColorSelected [_lb, [1, 1, 1, 1]];
_ctrl lbSetTooltip [_lb,"Click to Test Texture"];
}forEach HALV_paintshop_defaultsides;
{
_lb = _ctrl lbAdd (_x select 0);
_ctrl lbSetPicture [_lb,(_x select 1)];
_ctrl lbSetData [_lb,(_x select 1)];
_ctrl lbSetPictureColor [_lb, [1, 1, 1, 1]];
_ctrl lbSetPictureColorSelected [_lb, [1, 1, 1, 1]];
_ctrl lbSetTooltip [_lb,"Click to Test Texture"];
}forEach _textures;
lbSort _ctrl;
};
HALV_paintshop_slidingcolor = {
_ctrl = _this select 0;
_val = _this select 1;
if !(_val isEqualTo (sliderPosition _ctrl))exitWith{};
_arr = switch(str _ctrl)do{
case "Control #6681":{[0,_val];};
case "Control #6682":{[1,_val];};
case "Control #6683":{[2,_val];};
case "Control #6684":{[3,_val];};
};
HALV_paintshop_color set _arr;
HALV_paintshop_vehicletopaint setObjectTexture [HALV_paintshop_currentside,format["#(argb,8,8,3)color(%1,%2,%3,%4)",HALV_paintshop_color select 0,HALV_paintshop_color select 1,HALV_paintshop_color select 2,HALV_paintshop_color select 3]];
hintSilent str(HALV_paintshop_color);
};
HALV_paintshop_selected = {
#include "settings.sqf";
closeDialog 0;
diag_log str['HALVSETTEX:',HALV_paintshop_sidestopaint];
{
_tex = _x select 1;
if(typeName (_x select 1) == "ARRAY")then{
_tex = format["#(argb,8,8,3)color(%1,%2,%3,%4)",(_x select 1) select 0,(_x select 1) select 1,(_x select 1) select 2,(_x select 1) select 3];
HALV_paintshop_vehicletopaint setObjectTextureGlobal [_x select 0,format["#(argb,8,8,3)color(%1,%2,%3,%4)",(_x select 1) select 0,(_x select 1) select 1,(_x select 1) select 2,(_x select 1) select 3]];
};
if(_tex == "")then{
_tex = HALV_paintshop_defaultsides select (_x select 0);
};
HALV_paintshop_vehicletopaint setObjectTextureGlobal [_x select 0,_tex];
}forEach HALV_paintshop_sidestopaint;
_alltex = getObjectTextures HALV_paintshop_vehicletopaint;
switch(true)do{
case (HALV_paintshop_vehicletopaint isKindOf "bag_base"):{
if(_alltex isEqualTo HALV_paintshop_defaultsides)then{
profileNamespace setVariable ["HALV_BAGCOLOR",nil];
HALV_paintshop_vehicletopaint setVariable ["VEHICLE_DEFAULTTEX",nil];
}else{
profileNamespace setVariable ["HALV_BAGCOLOR",_alltex];
};
};
case (HALV_paintshop_vehicletopaint isEqualTo player):{
if(_alltex isEqualTo HALV_paintshop_defaultsides)then{
profileNamespace setVariable ["HALV_UNIFORMCOLOR",nil];
HALV_paintshop_vehicletopaint setVariable ["VEHICLE_DEFAULTTEX",nil];
}else{
profileNamespace setVariable ["HALV_UNIFORMCOLOR",_alltex];
};
};
case (HALV_paintshop_vehicletopaint isKindOf "Exile_Construction_Abstract_Static"):{
HALV_basepartsavetex = [ExileClientSessionId,HALV_paintshop_vehicletopaint];
publicVariableServer "HALV_basepartsavetex";
};
default{
if (((locked HALV_paintshop_vehicletopaint) isEqualTo 0) && ((locked HALV_paintshop_vehicletopaint) != 1))then{
if !(isPlayer HALV_paintshop_vehicletopaint)then{
HALV_vehsavetex = [ExileClientSessionId,HALV_paintshop_vehicletopaint];
publicVariableServer "HALV_vehsavetex";
}else{
titleText ["[SERVER]:\n*** VEHICLE PAINTJOB NOT SAVED! ***\nThere was a player in the vehicle!","PLAIN DOWN"];
};
};
};
};
};
HALV_paintshop_addtolist = {
disableSerialization;
_ctrl = (findDisplay 6666) displayCtrl 6674;
_tex = if (ctrlChecked _ctrl)then{HALV_paintshop_texture}else{format["#(argb,8,8,3)color(%1,%2,%3,%4)",HALV_paintshop_color select 0,HALV_paintshop_color select 1,HALV_paintshop_color select 2,HALV_paintshop_color select 3]};
{
if(HALV_paintshop_currentside isEqualTo (_x select 0))exitWith{
HALV_paintshop_sidestopaint deleteAt _forEachIndex;
};
}forEach HALV_paintshop_sidestopaint;
HALV_paintshop_sidestopaint pushBack [HALV_paintshop_currentside,_tex];
call HALV_paintshop_switchside;
lbClear _ctrl;
{
_text = format["Side %1",_x select 0];
_index = _ctrl lbAdd _text;
_ctrl lbSetPicture [_index,_x select 1];
_ctrl lbSetPictureColor [_index, [1, 1, 1, 1]];
_ctrl lbSetPictureColorSelected [_index, [1, 1, 1, 1]];
_ctrl lbSetData [_index,_x select 1];
_ctrl lbSetValue [_index,_x select 0];
_ctrl lbSetTooltip [_index,"Double Click to Reset Texture"];
}forEach HALV_paintshop_sidestopaint;
lbSort _ctrl;
diag_log str['HALVADDTEX:',_tex];
};
HALV_paintshop_onLBSelChanged = {
_texture = (_this select 0) lbData (_this select 1);
HALV_paintshop_vehicletopaint setObjectTexture [HALV_paintshop_currentside,_texture];
HALV_paintshop_texture = _texture;
};
HALV_paintshop_onLBSelChanged2 = {
_ctrl = _this select 0;
_lb = _this select 1;
_texture = _ctrl lbData _lb;
_value = _ctrl lbValue _lb;
HALV_paintshop_currentside = _value;
HALV_paintshop_texture = _texture;
};
HALV_paintshop_onLBDblClick2 = {
disableSerialization;
_ctrl = _this select 0;
_lb = _this select 1;
_value = _ctrl lbValue _lb;
HALV_paintshop_vehicletopaint setObjectTexture [HALV_paintshop_currentside,(HALV_paintshop_defaultsides select _value)];
HALV_paintshop_sidestopaint set [_value,[HALV_paintshop_currentside,(HALV_paintshop_defaultsides select _value)]];
diag_log str['HALVREMTEX:',[_value,[HALV_paintshop_currentside,(HALV_paintshop_defaultsides select _value)]]];
lbClear _ctrl;
{
_text = format["Side %1",_x select 0];
_index = _ctrl lbAdd _text;
_ctrl lbSetPicture [_index,_x select 1];
_ctrl lbSetPictureColor [_index, [1, 1, 1, 1]];
_ctrl lbSetPictureColorSelected [_index, [1, 1, 1, 1]];
_ctrl lbSetData [_index,_x select 1];
_ctrl lbSetValue [_index,_x select 0];
_ctrl lbSetTooltip [_index,"Double Click to Reset Texture"];
}forEach HALV_paintshop_sidestopaint;
lbSort _ctrl;
};
HALV_paintshop_switchside = {
HALV_paintshop_currentside = HALV_paintshop_currentside + 1;
if(HALV_paintshop_currentside >= count HALV_paintshop_defaultsides)then{HALV_paintshop_currentside = 0;};
disableSerialization;
_ctrl = (findDisplay 6666) displayCtrl 6673;
_ctrl lbSetCurSel HALV_paintshop_currentside;
};
waitUntil{!isNull (findDisplay 46) && !dialog && typeOf player != "Exile_Unit_GhostPlayer"};
_pcolor = profileNamespace getVariable ["HALV_BAGCOLOR",[]];
if (!(_pcolor isEqualTo []) && !(Backpack player in ["","B_Parachute","B_O_Parachute_02_F","B_I_Parachute_02_F","B_B_Parachute_02_F"]))then{
_bag = (unitBackpack player);
_defaultsides = getObjectTextures _bag;
if(count _defaultsides > 0)then{
if(typeName(_pcolor select 0) == "ARRAY")then{
{_bag setObjectTextureGlobal _x;}forEach _pcolor;
profileNamespace setVariable ["HALV_BAGCOLOR",(getObjectTextures _bag)];
}else{
{_bag setObjectTextureGlobal [_forEachIndex,_x];}forEach _pcolor;
};
if("" in (getObjectTextures _bag))then{
{_bag setObjectTextureGlobal [_forEachIndex,_x];}forEach _defaultsides;
profileNamespace setVariable ["HALV_BAGCOLOR",nil];
}else{
_bag setVariable ["VEHICLE_DEFAULTTEX",_defaultsides,true];
};
}else{
_txt = (gettext (configFile >> "cfgvehicles" >> (Backpack player) >> "displayName"));
systemChat format["%1 could not be painted ...",_txt];
diag_log format["%1 could not be painted ...",Backpack player];
};
};
_pcolor = profileNamespace getVariable ["HALV_UNIFORMCOLOR",[]];
if (!(_pcolor isEqualTo []) && !(Uniform player in ["","U_Test1_uniform","U_Test_uniform"]))then{
_defaultsides = getObjectTextures player;
if(count _defaultsides > 0)then{
if(typeName(_pcolor select 0) == "ARRAY")then{
{player setObjectTextureGlobal _x;}forEach _pcolor;
profileNamespace setVariable ["HALV_UNIFORMCOLOR",(getObjectTextures player)];
}else{
{player setObjectTextureGlobal [_forEachIndex,_x];}forEach _pcolor;
};
if("" in (getObjectTextures player))then{
{player setObjectTextureGlobal [_forEachIndex,_x];}forEach _defaultsides;
profileNamespace setVariable ["HALV_UNIFORMCOLOR",nil];
}else{
player setVariable ["VEHICLE_DEFAULTTEX",_defaultsides,true];
};
}else{
_txt = (gettext (configFile >> "cfgvehicles" >> (Uniform player) >> "displayName"));
systemChat format["%1 could not be painted ...",_txt];
diag_log format["%1 could not be painted ...",Uniform player];
};
};
_HALV_panitshop_bagaction = -1;
_HALV_panitshop_uniformaction = -1;
_HALV_panitshop_vehicleactions = [];
_lastsearch = [];
_sendmessage = true;
while{alive player}do{
_nearpaintshops = (nearestObjects [player,_paintshopbuildings,15])-[player];
_inRange = count _nearpaintshops > 0;
if(_inRange)then{
if(_sendmessage)then{
player sideChat "-- Paint Shop --";
_sendmessage = false;
};
if(player isEqualTo vehicle player)then{
if !(Backpack player in ["","B_Parachute","B_O_Parachute_02_F","B_I_Parachute_02_F","B_B_Parachute_02_F"])then{
if(_HALV_panitshop_bagaction< 0)then{
_HALV_panitshop_bagaction = player addAction ["<img size='1.5'image='\a3\Ui_f\data\map\VehicleIcons\iconmanmedic_ca.paa'/> <t color='#0096ff'>Paint Backpack</t>", {(_this select 3) call HALV_paintshop_opendialog;}, (unitBackpack player),1, false, true, "", ""];
};
}else{
player removeAction _HALV_panitshop_bagaction;
_HALV_panitshop_bagaction = -1;
};
if !(Uniform player in ["","U_Test1_uniform","U_Test_uniform"])then{
if(_HALV_panitshop_uniformaction< 0)then{
_HALV_panitshop_uniformaction = player addAction ["<img size='1.5'image='\a3\Ui_f\data\map\VehicleIcons\iconmanmedic_ca.paa'/> <t color='#0096ff'>Paint Uniform</t>", {(_this select 3) call HALV_paintshop_opendialog;}, player,1, false, true, "", ""];
};
}else{
player removeAction _HALV_panitshop_uniformaction;
_HALV_panitshop_uniformaction = -1;
};
_nearvehicles = (player nearEntities [["Air","LandVehicle","Ship"],40])-[player];
if !(_nearvehicles isEqualTo _lastsearch)then{{player removeAction _x}forEach _HALV_panitshop_vehicleactions;_HALV_panitshop_vehicleactions = [];};
if(count _HALV_panitshop_vehicleactions < 1)then{
{
if !(_x isKindOf "Wreck_Base")then{
_txt = (gettext (configFile >> 'cfgvehicles' >> (typeOf _x) >> 'displayName'));
_action = player addAction [format["<img size='1.5'image='\a3\Ui_f\data\map\VehicleIcons\iconmanmedic_ca.paa'/> <t color='#0096ff'>Paint %1</t>",_txt], {(_this select 3) call HALV_paintshop_opendialog;}, _x,1, false, true, "", ""];
_HALV_panitshop_vehicleactions pushBack _action;
};
}forEach _nearvehicles;
};
_lastsearch = _nearvehicles;
}else{
{player removeAction _x}forEach _HALV_panitshop_vehicleactions+[_HALV_panitshop_bagaction,_HALV_panitshop_uniformaction];
_HALV_panitshop_vehicleactions = [];
_HALV_panitshop_uniformaction = -1;
_HALV_panitshop_bagaction = -1;
_lastsearch = [];
};
}else{
_sendmessage = true;
{player removeAction _x}forEach _HALV_panitshop_vehicleactions+[_HALV_panitshop_bagaction,_HALV_panitshop_uniformaction];
_HALV_panitshop_vehicleactions = [];
_HALV_panitshop_uniformaction = -1;
_HALV_panitshop_bagaction = -1;
_lastsearch = [];
};
sleep 2;
};
waitUntil{alive player};
[]execVM __FILE__;

View File

@ -0,0 +1,40 @@
/*
Vehicle, uniform & backpack Paintshop
By Halv
Copyright (C) 2015 Halvhjearne > README.md
Halv's Paintshop eXpanded 4 Exile
by DirtySanchez
DonkeyPunch.INFO
https://discord.me/eXpoch
*/
if(isServer)then{
HALV_server_savetextures = {
private ["_vehicle","_skinTextures","_vehicleID","_sessionId"];
_sessionId = _this select 0;
_vehicle = _this select 1;
if (!isNull _vehicle) then {
_vehicleID = _vehicle getVariable ["ExileDatabaseID",0];
_skinTextures = getObjectTextures _vehicle;
format["updateVehicleSkin:%1:%2", _skinTextures, _vehicleID] call ExileServer_system_database_query_fireAndForget;
[_sessionId, "toastRequest", ["SuccessTitleAndText", ["Vehicle Skin Saved!", "Halv's Paintshop eXpanded 4 Exile by DirtySanchez"]]] call ExileServer_system_network_send_to;
};
};
"HALV_vehsavetex" addPublicVariableEventHandler {(_this select 1) call HALV_server_savetextures;};
HALV_server_saveBPtextures = {
private ["_construction","_databaseID","_textures","_sessionId"];
_sessionId = _this select 0;
_construction = _this select 1;
if (!isNull _construction) then {
_databaseID = _construction getVariable ["ExileDatabaseID",0];
_textures = getObjectTextures _construction;
format ["updateBasePaint:%1:%2",_textures,_databaseID] call ExileServer_system_database_query_fireAndForget;
[_sessionId, "toastRequest", ["SuccessTitleAndText", ["BasePart Skin Saved!", "Halv's Paintshop eXpanded 4 Exile by DirtySanchez"]]] call ExileServer_system_network_send_to;
};
};
"HALV_basepartsavetex" addPublicVariableEventHandler {(_this select 1) call HALV_server_saveBPtextures;};
};

View File

@ -0,0 +1,122 @@
/*
Vehicle & backpack Paintshop
By Halv
Copyright (C) 2015 Halvhjearne > README.md
Halv's Paintshop eXpanded 4 Exile
by DirtySanchez
DonkeyPunch.INFO
https://discord.me/eXpoch
*/
//these are the classnames of buildings that will activate the paintshop
_paintshopbuildings = ["Land_CarService_F","Land_Repair_center","Exile_Construction_Flag_Static"];
//add textures and preset colors here
_textures = [
//Halv's Paintshop eXpanded 4 Exile by DirtySanchez
["Armor","addons\paintshop\skins\armor.jpg"],
["Devil's Camo","addons\paintshop\skins\blackredwhite.paa"],
["Blue Camo","addons\paintshop\skins\bluecamo.jpg"],
["Camo Camo","addons\paintshop\skins\camo.jpg"],
["DirtySanchez Camo","addons\paintshop\skins\camo1.jpg"],
["Aqua Camo","addons\paintshop\skins\camoaqua.jpg"],
["Desert Camo","addons\paintshop\skins\camodesert.jpg"],
["Silver Camo","addons\paintshop\skins\camogrey.jpg"],
["Pink Camo","addons\paintshop\skins\camopink.jpg"],
["Red Camo","addons\paintshop\skins\camored.jpg"],
["Smooth Camo","addons\paintshop\skins\camosmooth.jpg"],
["Tie Die Camo","addons\paintshop\skins\camotiedie.jpg"],
["Digital Camo","addons\paintshop\skins\digital.jpg"],
["Fire Camo","addons\paintshop\skins\fire.jpg"],
["Flat Green Camo","addons\paintshop\skins\flatgreen.jpg"],
["Pink Hair Camo","addons\paintshop\skins\pink-hair.jpg"],
["Safari Camo","addons\paintshop\skins\safari.jpg"],
["Shield Camo","addons\paintshop\skins\shield.jpg"],
["Skull Camo","addons\paintshop\skins\skullcamo.jpg"],
["Neon Camo","addons\paintshop\skins\spilled_neon.jpg"],
["Urban Camo","addons\paintshop\skins\urbancamo.jpg"],
["Zebra Camo","addons\paintshop\skins\zebracamo.paa"],
//original halv textures from here down and commented out below
["Eagle","\a3\data_f_curator\Eagle\Data\eagle_co.paa"],
//preset colors
["Red","#(argb,8,8,3)color(1,0,0,1)"],
["Green","#(argb,8,8,3)color(0,1,0,1)"],
["Blue","#(argb,8,8,3)color(0,0,1,1)"],
["Black","#(argb,8,8,3)color(0,0,0,0.6)"],
["Pink","#(argb,8,8,3)color(1,0.75,0.84,0.2)"],
["Tan","#(argb,8,8,3)color(0.8,0.7,0.5,0.2)"]
];
/*
// Use these below as examples of how to add other textures from MODS or from the mission file pbo :)
//Epoch
//Epoch["Bear","\x\addons\a3_epoch_assets\textures\bear\bear_co.paa"],
//Epoch["Candy","\x\addons\a3_epoch_assets\textures\candy\candy_ca.paa"],
//Epoch["Circuit","\x\addons\a3_epoch_assets\textures\circuit\circuit_co.paa"],
//Epoch["Concrete","\x\addons\a3_epoch_assets\textures\concrete_ca.paa"],
//Epoch["Wood","\x\addons\a3_epoch_assets\textures\wood_co.paa"],
//Epoch["Supply crate","\x\addons\a3_epoch_assets_1\textures\supply_crate_co.paa"],
//Epoch["Carry Tent","\x\addons\a3_epoch_assets_3\carnival\carnyTent_co.paa"],
//custom textures (have to be in your mission pbo)
//custom["Linux","trader\trader.jpg"],
//custom["DK Flag","custom\dkflag.jpg"],
//custom["Load Screen","custom\loadscreen.jpg"],
//custom["Problem Solving","custom\problemsolving.jpg"],
//custom["Union Jack","custom\unionjack.jpg"],
//custom["Carbon","custom\carbon.jpg"],
//custom["Stars and Bars","custom\confederate.jpg"],
//custom["Leopard skin","custom\leopard.jpg"],
//custom["Stars and Stripes","custom\murica.jpg"],
//custom["Rainbow","custom\rainbow.jpg"],
//custom["Shark Teeths","custom\shark.jpg"],
//custom["Camo Light Green","custom\lightgreen.jpg"]
//default arma 3 textures
["Debriefing background","\a3\Ui_f\data\gui\cfg\Debriefing\debriefingbackground_co.paa"],
["CommunityGuide background 1","\a3\Ui_f\data\gui\cfg\CommunityGuide\airassault_co.paa"],
["CommunityGuide background 2","\a3\Ui_f\data\gui\cfg\CommunityGuide\basicinfantrycombat_co.paa"],
["CommunityGuide background 3","\a3\Ui_f\data\gui\cfg\CommunityGuide\combinedarms_co.paa"],
["CommunityGuide background 4","\a3\Ui_f\data\gui\cfg\CommunityGuide\groundvehiclecrew_co.paa"],
["CommunityGuide background 5","\a3\Ui_f\data\gui\cfg\CommunityGuide\guerrillawarfare_co.paa"],
["CommunityGuide background 6","\a3\Ui_f\data\gui\cfg\CommunityGuide\helicopters_co.paa"],
["CommunityGuide background 7","\a3\Ui_f\data\gui\cfg\CommunityGuide\introduction_co.paa"],
["CommunityGuide background 8","\a3\Ui_f\data\gui\cfg\CommunityGuide\sniperslaunchers_co.paa"],
["CommunityGuide background 9","\a3\Ui_f\data\gui\cfg\CommunityGuide\zeus_co.paa"],
["LoadingScreens 1","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_06_co.paa"],
["LoadingScreens 2","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_07_co.paa"],
["LoadingScreens 3","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_10_co.paa"],
["LoadingScreens 4","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_14_co.paa"],
["LoadingScreens 5","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_16_co.paa"],
["LoadingScreens 6","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_17_co.paa"],
["LoadingScreens 7","\a3\Ui_f\data\gui\cfg\LoadingScreens\gc_wallpaper_18_co.paa"],
["LoadingScreens 8","\a3\Ui_f\data\gui\cfg\LoadingScreens\loading_01_co.paa"],
["Bootcamp Background","\a3\Ui_f\data\gui\Rsc\RscDisplayBootcampMsgBox\bootcampmsgbox_background_ca.paa"],
["Workshop defaultimage","\a3\Ui_f\data\gui\Rsc\RscDisplayPublishMission\steamworksdefaultimage_co.paa"],
["WelcomeScreens 1","\a3\Ui_f\data\gui\Rsc\RscDisplayWelcome\welcome1_ca.paa"],
["WelcomeScreens 2","\a3\Ui_f\data\gui\Rsc\RscDisplayWelcome\welcome2_ca.paa"],
["WelcomeScreens 3","\a3\Ui_f\data\gui\Rsc\RscDisplayWelcome\welcome3_ca.paa"],
["WelcomeScreens 4","\a3\Ui_f\data\gui\Rsc\RscDisplayWelcome\welcome4_ca.paa"],
//karts pics
["Karts Content","\a3\data_f_kart\images\karts_contentbrowserpicture_co.paa"],
["Karts illustration 1","\a3\data_f_kart\images\karts_illustration_01_ca.paa"],
["Karts illustration 2","\a3\data_f_kart\images\karts_illustration_02_ca.paa"],
["Karts illustration 3","\a3\data_f_kart\images\karts_illustration_03_ca.paa"],
["Karts illustration 4","\a3\data_f_kart\images\karts_illustration_04_ca.paa"],
["Karts illustration 5","\a3\data_f_kart\images\karts_illustration_05_ca.paa"],
["Karts illustration 6","\a3\data_f_kart\images\karts_illustration_06_ca.paa"],
["Karts Overview","\a3\data_f_kart\images\karts_overviewpicture_co.paa"],
["Karts Flag 1","\a3\data_f_kart\Flags\flag_bluking1_co.paa"],
["Karts Flag 2","\a3\data_f_kart\Flags\flag_bluking2_co.paa"],
["Karts Flag 3","\a3\data_f_kart\Flags\flag_fuel1_co.paa"],
["Karts Flag 4","\a3\data_f_kart\Flags\flag_fuel2_co.paa"],
["Karts Flag 5","\a3\data_f_kart\Flags\flag_koke1_co.paa"],
["Karts Flag 6","\a3\data_f_kart\Flags\flag_koke2_co.paa"],
["Karts Flag 7","\a3\data_f_kart\Flags\flag_redburger_co.paa"],
["Karts Flag 8","\a3\data_f_kart\Flags\flag_redstone_co.paa"],
["Karts Flag 9","\a3\data_f_kart\Flags\flag_suatmm_co.paa"],
//other
["Heli Content","\a3\data_f_heli\images\heli_overviewpicture_co.paa"],
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.