mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
new crafting system by Raymix
This commit is contained in:
parent
fce2dd0997
commit
70ca1eae15
Binary file not shown.
@ -22,7 +22,7 @@
|
||||
7 onMapSingleClick !="onMapSingleClick '';"
|
||||
7 addMagazine !"addMagazineCargo" !="player addMagazine _craftItem;" !="player addMagazine \"jerrycanE_epoch\";" !="player addMagazine \"emptyjar_epoch\";" !="player addMagazine \"jerrycan_epoch\";" !="player addMagazine \"Hatchet_swing\";" !="player addMagazine [(_x select 0),(_x select 1)]" !="player addMagazine _x;" !="if !(player canAdd (_x select 0)) exitWith {};\nplayer addMagazine[_x select 0, _x select 1];"
|
||||
7 addMagazineCargo !"_dogHolder addMagazineCargo [\"RabbitCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Pelt_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"Venom_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"SnakeCarcass_EPOCH\", 1]" !"_dogHolder addMagazineCargo [\"ChickenCarcass_EPOCH\", 1]" !="_acceptHolder addMagazineCargo [_wAmmo, 1] ;"
|
||||
7 addItem !="player addItem _craftItem;" !="player addItem _x;" !="_plyr addItemToVest _missionItem;" !="axeVIP addItemToVest _item;" !="_plyr addItemToVest _missionItem;"
|
||||
7 addItem !="player addItem _item;" !="player addItem _craftItem;" !="player addItem _x;" !="_plyr addItemToVest _missionItem;" !="axeVIP addItemToVest _item;" !="_plyr addItemToVest _missionItem;"
|
||||
7 addBackPack
|
||||
7 removeAllWeapons !="removeAllWeapons axeGeneral;"
|
||||
7 removeAllItems
|
||||
@ -34,7 +34,8 @@
|
||||
7 createUnit !="_unit = _grp createUnit[(_arrUnits select _i), _pos, [], 0, \"FORM\"];" !="_driver = _grp createUnit[\"I_UAV_AI\", position _unit, [], 0, \"CAN_COLLIDE\"];" !="axeGeneral = grpVIPGeneral createUnit ["I_officer_F", axeGeneralPos, [], 1, "CAN_COLLIDE"];"
|
||||
7 createAgent !="_unit = createAgent[_unitClass, _targetPos, [], 256, \"FORM\"];" !="_unit = createAgent [_unitClass, _targetPos, [], 120, \"FORM\"];" !="_animal = createAgent[_randomAIClass, _animalPos, [], 5, \"NONE\"];" !="_unit = createAgent [\"Epoch_Cloak_F\", _pos, [], 0, \"CAN_COLLIDE\"];" !="_unit = createAgent [\"Epoch_Sapper_F\", _targetPos, [], 180, \"FORM\"];" !="_sapper = createAgent ["Epoch_Sapper_F", getPos _cage2, [], 0, "FORM"];"
|
||||
7 createTeam
|
||||
7 createDialog !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog \"TapOut\";" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';"
|
||||
7 createDialog !="createDialog \"rmx_craftingUI\";" !="createDialog \"QuickUpgrade\";" !="createDialog \"QuickTake\";" !="createDialog \"InteractBank\";" !="createdialog \"SelectGender\";" !="_handled = createdialog _dialog;" !="if !(createdialog \"InteractItem\") exitWith {};" !="createDialog \"TapOut\";" !="if !(createdialog \"Trade\") exitWith {};" !="_ok = createdialog \"Interact\";" !="_ok = createdialog \"TradeNPCMenu\";" !="createDialog \"Epoch_myGroup\";" !="createDialog (if ((Epoch_my_GroupUID == \"\") && (Epoch_my_Group isEqualTo [])) then {\"EPOCH_createGrp\"} else {\"Epoch_myGroup\"});" !="createDialog \"GroupRequests\";" !="_ok = createdialog \"MissionSelect\";" !="createDialog 'Skaronator_AdminMenu';"
|
||||
7 createDisplay !="createDisplay \"rmx_dynamenu\";"
|
||||
7 deleteMarker
|
||||
7 setMarker
|
||||
7 createMarker
|
||||
@ -48,7 +49,7 @@
|
||||
7 addMPEventHandler
|
||||
7 addEventHandler !"displayAddEventHandler" !"ctrlAddEventHandler" !"FiredNear" !"EpeContactStart" !"InventoryClosed" !"GetOut" !"InventoryOpened" !"local" !"Respawn" !"Put" !"Take" !"Fired" !"Killed" !" [\"PostReset\",{BIS_EnginePPReset = true;} ];" !"_logic addeventhandler [\n\"local\""
|
||||
7 displayAddEventHandler !"[_display] call _fnc_animate;" !"tVersion select 4) == \"Development\") then" !"_display displayaddeventhandler\n[\n\"mousemoving\"," !"(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"true\"];" !"(findDisplay 46) displayAddEventHandler [\"KeyDown\",\"_this call EPOCH_KeyDown\"];" !="_addCase = _display46 displayAddEventHandler ['KeyDown',{_this call EPOCH_KeyDown;}];" !"_display displayaddeventhandler [\"unload\",\"uinamespace setvariable ['BIS_fnc_guiMess" !="findDisplay -1337 displayAddEventHandler ['Unload'" !="_display displayaddeventhandler [\"keydown\",\"with uinamespace do {['keyDown'"
|
||||
7 ctrlAddEventHandler !"rCfg >> \"refreshDelay\");" !" [\n\"draw\"," !" [\"buttonclick\"," !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\","
|
||||
7 ctrlAddEventHandler !"rCfg >> \"refreshDelay\");" !" [\n\"draw\"," !" [\"buttonclick\"," !="(uiNamespace getVariable 'ESP_map') ctrlAddEventHandler['Draw', '_esp_targets = EPOCH_ESPMAP_TARGETS;" !="ctrlAddEventHandler ['MouseButtonDown'" !="(_display displayctrl _idc) ctrlAddEventHandler [\"LBSelChanged\"," !="_ctrl ctrlSetEventHandler [\"mouseEnter\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseExit\", (format [\"_c = _this select 0;" !="_ctrl ctrlSetEventHandler [\"mouseButtonDown\", (format [\"call %1;\",(_buttonSettings select _e select 2)])];"
|
||||
7 removeAllEventHandlers !="ctrlRemoveAllEventHandlers" !="_vehicle removeAllEventHandlers \"GetOut\";" !="_sapper removeAllEventHandlers \"Hit\";\n_sapper removeAllEventHandlers \"FiredNear\";" !="_display46 displayRemoveAllEventHandlers 'KeyDown';"
|
||||
7 removeAllMissionEventHandlers
|
||||
7 ctrlRemoveAllEventHandlers !="(uiNamespace getVariable 'ESP_map') ctrlRemoveAllEventHandlers 'Draw';" !="ctrlAddEventHandler ['MouseButtonDown'"
|
||||
@ -58,15 +59,14 @@
|
||||
7 remoteControl !"fn_moduleRemoteControl.sqf" !="\"BIS_fnc_moduleRemoteControl"\"
|
||||
7 drawIcon3D !="drawIcon3D[\"\x\addons\a3_epoch_code\Data\Member.paa\",_color,_pos,1,1,0,_text,1,0.025,\"PuristaMedium\"];\n}forEach EPOCH_ESP_TARGETS;" !"drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_stability],_color,(getPosATL EPOCH_stabilityTarget),5,5,0,\"\",1,0.05,\"PuristaMedium\"];" !"drawIcon3D[format[\"\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa\",_num],_color,_pos,4,4,0,\"\",1,0.05,\"PuristaMedium\"];" !"EPOCH_drawIcon3dStability" !"EPOCH_drawIcon3d" !"if (_condition) then {\ndrawIcon3D [_icon, _color, _position, _sizeX, _sizeY, _angle, _text," !="drawIcon3D [\"\A3\UI_F_MP_Mark\Data\Tasks\Misc\background.paa\""
|
||||
7 drawLine3D !"{\nfor [{_i = 1}, {_i < count _x}, {_i = _i + 1}] do {\ndrawLine3D [_x select (_i - 1), _x select _i, ((BIS_tracedShooter getVari"
|
||||
7 ctrlCreate !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\""
|
||||
7 ctrlDelete !="ctrlDelete _ListGroup;"
|
||||
7 ctrlCreate !="_ctrl = _display ctrlCreate [\"RscProgress\",_idc + 1];" !="_display ctrlCreate [\"rmx_rscControlsGroup\"" !="_ListGroup = _display ctrlCreate [\"RscControlsGroupNoHScrollbars\""
|
||||
7 ctrlDelete !="ctrlDelete _ListGroup;" !="ctrlDelete (rmx_var_crafting_ctrl_GROUP select 0);"
|
||||
7 ctrlClassName
|
||||
7 ctrlModel
|
||||
7 ctrlModelDirection
|
||||
7 ctrlModelSide
|
||||
7 ctrlModelUp
|
||||
7 ctrlSetDirection
|
||||
7 ctrlSetModel
|
||||
7 deleteVehicleCrew !"fn_deleteVehicleCrew.sqf" !="\"BIS_fnc_deleteVehicleCrew"\"
|
||||
7 loadFile
|
||||
7 selectPlayer !="selectPlayer _playerObject;"
|
||||
|
BIN
Sources/epoch_code/Data/UI/buttons/CAT_fuel.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/CAT_fuel.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/build_maintain.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/build_maintain.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/build_maintain2.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/build_maintain2.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/build_move.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/build_move.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/build_remove.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/build_remove.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/build_upgrade.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/build_upgrade.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/dm_selection.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/dm_selection.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/fuel_add.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/fuel_add.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/fuel_syphon.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/fuel_syphon.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/pad_can_lock.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/pad_can_lock.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/pad_can_unlock.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/pad_can_unlock.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/pad_cannot_lock.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/pad_cannot_lock.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/pad_cannot_unlock.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/pad_cannot_unlock.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/player_inspect.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/player_inspect.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/talk_blue.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/talk_blue.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/talk_green.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/talk_green.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/talk_orange.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/talk_orange.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/buttons/talk_red.paa
Normal file
BIN
Sources/epoch_code/Data/UI/buttons/talk_red.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/Craft.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/Craft.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/cancel.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/cancel.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/close.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/close.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/electricity_false.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/electricity_false.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/electricity_true.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/electricity_true.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/fire_false.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/fire_false.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/fire_true.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/fire_true.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/fuel_false.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/fuel_false.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/fuel_true.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/fuel_true.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/water_false.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/water_false.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/crafting/water_true.paa
Normal file
BIN
Sources/epoch_code/Data/UI/crafting/water_true.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/dev_mode_off.paa
Normal file
BIN
Sources/epoch_code/Data/UI/dev_mode_off.paa
Normal file
Binary file not shown.
BIN
Sources/epoch_code/Data/UI/dev_mode_on.paa
Normal file
BIN
Sources/epoch_code/Data/UI/dev_mode_on.paa
Normal file
Binary file not shown.
@ -1,128 +0,0 @@
|
||||
_craftItem = EPOCH_CraftItemData;
|
||||
_abort = false;
|
||||
_msg = "";
|
||||
_craftedItemCount = 0;
|
||||
|
||||
// _craftingConfig = configfile >> "CfgCrafting" >> _craftItem;
|
||||
_config = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_craftingConfig = _config >> _craftItem;
|
||||
if (isClass (_craftingConfig)) then {
|
||||
_recipe = [] + getArray(_craftingConfig >> "recipe");
|
||||
_nearby = [] + getArray(_craftingConfig >> "nearby");
|
||||
|
||||
//diag_log format["DEBUG craftitem: _nearby %1", _nearby];
|
||||
|
||||
_proceed = true;
|
||||
// check nearby
|
||||
{
|
||||
_needType = _x select 0; // fire. alive, noclass
|
||||
_needClasses = _x select 1; // ["ALL"]. ["filename.p3d"]
|
||||
_needRange = _x select 2; // 3
|
||||
_needCount = _x select 3; // 1
|
||||
_needReason = _x select 4; // "Fire", "Water Source"
|
||||
|
||||
_nearObjects = nearestObjects[player, _needClasses, _needRange];
|
||||
|
||||
_nearbyCount = 0;
|
||||
switch (_needType) do
|
||||
{
|
||||
case "fire": {_nearbyCount = {inflamed _x} count _nearObjects; };
|
||||
case "alive": {_nearbyCount = {alive _x} count _nearObjects; };
|
||||
case "noclass": {
|
||||
{
|
||||
_needName = _x;
|
||||
_nearbyCount = {((str(_x) find _needName) != -1)} count nearestObjects[player, [], _needRange];
|
||||
|
||||
if (_nearbyCount > 0) exitWith{};
|
||||
} foreach _needClasses;
|
||||
};
|
||||
};
|
||||
if (_nearbyCount < _needCount)exitWith{
|
||||
_proceed = false;
|
||||
_msg = format["Need %1", _needReason];
|
||||
};
|
||||
} forEach _nearby;
|
||||
|
||||
if (_proceed) then {
|
||||
|
||||
_countIndex = lbCurSel 2100;
|
||||
_craftCount = lbValue[2100, _countIndex];
|
||||
|
||||
//diag_log format["CRAFT COUNT: index %1 count %2", _countIndex, _craftCount];
|
||||
|
||||
closeDialog 0;
|
||||
|
||||
for "_r" from 1 to _craftCount do {
|
||||
|
||||
if (player canAdd _craftItem) then {
|
||||
_recipeCount = 0;
|
||||
_numRemoved = 0;
|
||||
{
|
||||
_recipeItem = _x;
|
||||
_recipeQty = 1;
|
||||
|
||||
if (typeName _x == "ARRAY") then {
|
||||
_recipeItem = _x select 0;
|
||||
_recipeQty = _x select 1;
|
||||
};
|
||||
_recipeCount = _recipeCount + _recipeQty;
|
||||
|
||||
// TODO dry run before removing anything
|
||||
if ([_recipeItem, "CfgWeapons"] call EPOCH_fnc_isAny) then {
|
||||
_items = items player;
|
||||
_currentCount = { _x == _recipeItem } count _items;
|
||||
if (_currentCount >= _recipeQty) then {
|
||||
for "_i" from 1 to _recipeQty do {
|
||||
if (_recipeItem in _items) then {
|
||||
player removeItem _recipeItem;
|
||||
_numRemoved = _numRemoved + 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
else {
|
||||
_mags = magazines player;
|
||||
_currentCount = { _x == _recipeItem } count _mags;
|
||||
if (_currentCount >= _recipeQty) then {
|
||||
for "_i" from 1 to _recipeQty do {
|
||||
if (_recipeItem in _mags) then {
|
||||
player removeMagazine _recipeItem;
|
||||
_numRemoved = _numRemoved + 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _recipe;
|
||||
|
||||
if (_numRemoved == _recipeCount) then {
|
||||
if (player canAdd _craftItem) then {
|
||||
if ([_craftItem, "CfgWeapons"] call EPOCH_fnc_isAny) then {
|
||||
player addItem _craftItem;
|
||||
}
|
||||
else {
|
||||
player addMagazine _craftItem;
|
||||
};
|
||||
_craftedItemCount = _craftedItemCount + 1;
|
||||
}
|
||||
else {
|
||||
_abort = true;
|
||||
_msg = "Not enough space";
|
||||
};
|
||||
} else {
|
||||
_abort = true;
|
||||
_msg = "Incorrect item count";
|
||||
};
|
||||
} else {
|
||||
_abort = true;
|
||||
_msg = "Not enough space";
|
||||
};
|
||||
if (_abort) exitWith{};
|
||||
};
|
||||
};
|
||||
|
||||
if (_craftedItemCount > 0) then {
|
||||
_dt = [format["<t size='0.8' shadow='0' color='#99ffffff'>Crafted %1 %2</t>",_craftedItemCount,_craftItem call EPOCH_itemDisplayName], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
|
||||
} else {
|
||||
_dt = [format["<t size='0.8' shadow='0' color='#99ffffff'>%1</t>", _msg], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
|
||||
};
|
||||
};
|
@ -1,162 +0,0 @@
|
||||
disableSerialization;
|
||||
|
||||
ctrlShow[1600, false];
|
||||
ctrlShow[2100, false];
|
||||
ctrlShow[1000, false];
|
||||
ctrlShow[41008, true];
|
||||
ctrlShow[42000, true];
|
||||
|
||||
|
||||
_index = _this select 0;
|
||||
|
||||
EPOCH_CraftItemData = "";
|
||||
|
||||
_activeDisplay = findDisplay -15;
|
||||
|
||||
_data = EPOCH_InteractedItem select 1;
|
||||
// _craftingConfig = configfile >> "CfgCrafting" >> (_data);
|
||||
_config = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_craftingConfig = _config >> _data;
|
||||
if (isClass (_craftingConfig)) then {
|
||||
_usedIn = getArray (_craftingConfig >> "usedIn");
|
||||
|
||||
_selectedRecipe = _usedIn select _index;
|
||||
|
||||
EPOCH_CraftItemData = _selectedRecipe;
|
||||
|
||||
_craftingConfig = _config >> _selectedRecipe;
|
||||
if (isClass (_craftingConfig)) then {
|
||||
_recipe = getArray(_craftingConfig >> "recipe");
|
||||
_nearby = getArray(_craftingConfig >> "nearby");
|
||||
|
||||
_recipeItems = [1200,1201,1202,1203,1204,1205];
|
||||
_recipeStatus = [42200,42201,42202,42203,42204,42205];
|
||||
_recipetooltip = [43200,43201,43202,43203,43204,43205];
|
||||
_recipeCounts = [41001,41002,41003,41004,41005,41006];
|
||||
|
||||
_recipeResources = [45202,45203,45204,45205,45206,45207];
|
||||
_recipeResourcesbtn = [44202,44203,44204,44205,44206,44207];
|
||||
|
||||
|
||||
{
|
||||
ctrlShow[_x, false];
|
||||
} forEach _recipeItems;
|
||||
|
||||
{
|
||||
ctrlShow[_x, false];
|
||||
} forEach _recipeStatus;
|
||||
|
||||
{
|
||||
ctrlShow[_x, false];
|
||||
} forEach _recipeCounts;
|
||||
|
||||
|
||||
|
||||
// check for nearby resources
|
||||
_proceed = true;
|
||||
// check nearby
|
||||
{
|
||||
_needType = _x select 0; // fire. alive, noclass
|
||||
_needClasses = _x select 1; // ["ALL"]. ["filename.p3d"]
|
||||
_needRange = _x select 2; // 3
|
||||
_needCount = _x select 3; // 1
|
||||
_needReason = _x select 4; // "Fire", "Water Source"
|
||||
_needImage = _x select 5; // fire, fuel, water, electricity
|
||||
|
||||
_nearObjects = nearestObjects[player, _needClasses, _needRange];
|
||||
|
||||
_nearbyCount = 0;
|
||||
switch (_needType) do
|
||||
{
|
||||
case "fire": {_nearbyCount = {inflamed _x} count _nearObjects; };
|
||||
case "alive": {_nearbyCount = {alive _x} count _nearObjects; };
|
||||
case "noclass": {
|
||||
{
|
||||
_needName = _x;
|
||||
_nearbyCount = {((str(_x) find _needName) != -1)} count nearestObjects[player, [], _needRange];
|
||||
if (_nearbyCount > 0) exitWith{};
|
||||
} foreach _needClasses;
|
||||
};
|
||||
};
|
||||
|
||||
(_activeDisplay displayCtrl(_recipeResourcesbtn select _forEachIndex)) ctrlSetTooltip _needReason;
|
||||
|
||||
if (_nearbyCount < _needCount) then {
|
||||
_proceed = false;
|
||||
// display needed icons
|
||||
_icon = format["\x\addons\a3_epoch_code\Data\UI\need_%1_ca.paa", _needImage];
|
||||
//diag_log format["%1", _icon];
|
||||
ctrlSetText[(_recipeResources select _forEachIndex), _icon];
|
||||
|
||||
} else {
|
||||
// display needed icons
|
||||
_icon = format["\x\addons\a3_epoch_code\Data\UI\has_%1_ca.paa", _needImage];
|
||||
//diag_log format["%1", _icon];
|
||||
ctrlSetText[(_recipeResources select _forEachIndex), _icon];
|
||||
};
|
||||
|
||||
} forEach _nearby;
|
||||
|
||||
|
||||
|
||||
_recipeCount = 0;
|
||||
_itemCount = 0;
|
||||
_mags = magazines player;
|
||||
_items = items player;
|
||||
{
|
||||
_recipeItem = _x;
|
||||
_recipeQty = 1;
|
||||
|
||||
if (typeName _x == "ARRAY") then {
|
||||
_recipeItem = _x select 0;
|
||||
_recipeQty = _x select 1;
|
||||
};
|
||||
|
||||
_recipeCount = _recipeCount + _recipeQty;
|
||||
|
||||
_index = _forEachIndex;
|
||||
_recipePic = _recipeItem call EPOCH_itemPicture;
|
||||
ctrlSetText [(_recipeItems select _index), _recipePic];
|
||||
|
||||
_actualCount = 0;
|
||||
if (isClass(configfile >> "cfgweapons" >> _recipeItem)) then {
|
||||
_actualCount = { _x == _recipeItem } count _items;
|
||||
} else {
|
||||
_actualCount = { _x == _recipeItem } count _mags;
|
||||
};
|
||||
|
||||
|
||||
ctrlSetText[(_recipeCounts select _index), format["%1/%2", _actualCount, _recipeQty]];
|
||||
|
||||
ctrlShow[(_recipeItems select _index), true];
|
||||
ctrlShow[(_recipeStatus select _index), true];
|
||||
ctrlShow[(_recipeCounts select _index), true];
|
||||
|
||||
(_activeDisplay displayCtrl (_recipetooltip select _index)) ctrlSetTooltip format["%1",(_recipeItem call EPOCH_itemDisplayName)];
|
||||
|
||||
if (_actualCount >= _recipeQty) then {
|
||||
ctrlSetText [(_recipeStatus select _index), ""];
|
||||
_itemCount = _itemCount + _recipeQty;
|
||||
(_activeDisplay displayCtrl (_recipeCounts select _index)) ctrlSetTextColor[1, 1, 1, 1];
|
||||
} else {
|
||||
ctrlSetText [(_recipeStatus select _index), "\x\addons\a3_epoch_assets\ui\xicon.paa"];
|
||||
(_activeDisplay displayCtrl (_recipeCounts select _index)) ctrlSetTextColor[1, 0, 0, 1];
|
||||
};
|
||||
|
||||
} forEach _recipe;
|
||||
|
||||
if (_itemCount == _recipeCount && _proceed) then {
|
||||
ctrlShow [1600, true];
|
||||
ctrlShow [2100, true];
|
||||
ctrlShow [1000, true];
|
||||
for "_i" from 0 to 9 do {
|
||||
_num = _i + 1;
|
||||
_index = lbAdd[2100, str(_num)]; lbSetValue[2100, _index, _num];
|
||||
};
|
||||
lbSetCurSel[2100, 0];
|
||||
};
|
||||
//diag_log format["DEBUG: EPOCH_craftItem %1 index: %2",_selectedRecipe,_index];
|
||||
};
|
||||
//diag_log format["DEBUG: EPOCH_craftItem %1 index: %2",_selectedRecipe,_index];
|
||||
};
|
||||
|
@ -1,93 +0,0 @@
|
||||
disableSerialization;
|
||||
|
||||
_text = "";
|
||||
_data = "";
|
||||
_pic = "";
|
||||
|
||||
if (typeName _this isEqualTo "BOOL" && count EPOCH_InteractedItem == 3) then {
|
||||
_text = EPOCH_InteractedItem select 0;
|
||||
_data = EPOCH_InteractedItem select 1;
|
||||
_pic = EPOCH_InteractedItem select 2;
|
||||
//diag_log "DEBUG: mode 1";
|
||||
|
||||
} else {
|
||||
//diag_log "DEBUG: mode 2";
|
||||
|
||||
EPOCH_InteractedItem = [];
|
||||
|
||||
_control = _this select 0;
|
||||
_index = _this select 1;
|
||||
|
||||
_text = _control lbText _index;
|
||||
_data = _control lbData _index;
|
||||
_pic = _control lbPicture _index;
|
||||
|
||||
if (_data == "") then {
|
||||
_confData = "getText (_x >> 'displayName') == _text" configClasses(configFile >> "CfgWeapons");
|
||||
if !(_confData isEqualTo[]) then {
|
||||
_data = configName(_confData select 0);
|
||||
};
|
||||
};
|
||||
EPOCH_InteractedItem = [_text,_data,_pic];
|
||||
};
|
||||
|
||||
_craftingArray = [];
|
||||
_craftingArrayNames = [];
|
||||
|
||||
// _craftingConfig = configfile >> "CfgCrafting" >> _data;
|
||||
|
||||
_config = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_craftingConfig = _config >> _data;
|
||||
|
||||
if (isClass (_craftingConfig)) then {
|
||||
_usedIn = [] + getArray (_craftingConfig >> "usedIn");
|
||||
{
|
||||
//diag_log format["DEBUG: %1",_x,(_x call EPOCH_itemPicture),(_x call EPOCH_itemDisplayName)];
|
||||
_craftingArray pushBack (_x call EPOCH_itemPicture);
|
||||
_craftingArrayNames pushBack (_x call EPOCH_itemDisplayName);
|
||||
} forEach _usedIn;
|
||||
};
|
||||
|
||||
//diag_log format["DEBUG: EPOCH_itemInteract %1 EPOCH_InteractedItem %2", _this, EPOCH_InteractedItem];
|
||||
// diag_log format["DEBUG: _craftingArrayNames %1 _craftingArray %2", _craftingArrayNames, _craftingArray];
|
||||
|
||||
closeDialog 0;
|
||||
if !(createdialog "InteractItem") exitWith {};
|
||||
|
||||
ctrlShow[1600, false];
|
||||
ctrlShow[2100, false];
|
||||
ctrlShow[1000, false];
|
||||
ctrlShow[41008, false];
|
||||
ctrlShow[42000, false];
|
||||
|
||||
_interactOption = 0;
|
||||
_buttonTXT = "";
|
||||
if (isClass (configfile >> "cfgweapons" >> _data)) then {
|
||||
_type = getNumber (configfile >> "CfgWeapons" >> _data >> "type");
|
||||
_interactOption = getNumber (configfile >> "CfgWeapons" >> _data >> "interactAction");
|
||||
_buttonTXT = getText(configfile >> "CfgWeapons" >> _data >> "interactText");
|
||||
} else {
|
||||
_type = getNumber (configfile >> "CfgMagazines" >> _data >> "type");
|
||||
_interactOption = getNumber (configfile >> "CfgMagazines" >> _data >> "interactAction");
|
||||
_buttonTXT = getText(configfile >> "CfgMagazines" >> _data >> "interactText");
|
||||
};
|
||||
|
||||
if (_buttonTXT == "") then {
|
||||
_buttonTXT = "EXAMINE";
|
||||
};
|
||||
|
||||
ctrlSetText [41201, _buttonTXT];
|
||||
ctrlSetText [41200, _pic];
|
||||
_craftingArrayCount = count _craftingArray;
|
||||
_controls = [41202,41203,41204,41205,41206,41207];
|
||||
_buttons = [1602,1603,1604,1605,1606,1607];
|
||||
|
||||
{
|
||||
if (_craftingArrayCount >= (_forEachIndex+1)) then {
|
||||
ctrlSetText [_x, (_craftingArray select _forEachIndex)];
|
||||
((findDisplay -15) displayCtrl (_buttons select _forEachIndex)) ctrlSetTooltip (_craftingArrayNames select _forEachIndex);
|
||||
ctrlShow [_buttons select _forEachIndex, true];
|
||||
} else {
|
||||
ctrlShow [_buttons select _forEachIndex, false];
|
||||
};
|
||||
}forEach _controls;
|
33
Sources/epoch_code/compile/functions/EPOCH_itemData.sqf
Normal file
33
Sources/epoch_code/compile/functions/EPOCH_itemData.sqf
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
Returns string if only one element in second param, otherwise returns array
|
||||
|
||||
_displayName = _item call epoch_itemData; // string
|
||||
_pic = [_item,["Picture"]] call epoch_itemData; //string
|
||||
_data = [_item,["picture","model","displayName"]] call epoch_itemData; //array
|
||||
*/
|
||||
|
||||
private ["_item","_entries","_single","_arr","_return"];
|
||||
_item = param [0,""];
|
||||
_entries = param [1,["DisplayName"],[[]]];
|
||||
|
||||
_single = (count _entries) == 1;
|
||||
|
||||
_arr = [];
|
||||
{
|
||||
if ([_item, "CfgMagazines"] call EPOCH_fnc_isAny) then {
|
||||
_arr pushBack (getText(configfile >> "CfgMagazines" >> _item >> _x));
|
||||
} else {
|
||||
if ([_item, "CfgWeapons"] call EPOCH_fnc_isAny) then {
|
||||
_arr pushBack (getText(configfile >> "CfgWeapons" >> _item >> _x));
|
||||
} else {
|
||||
if ([_item, "CfgVehicles"] call EPOCH_fnc_isAny) then {
|
||||
_arr pushBack (getText(configfile >> "CfgVehicles" >> _item >> _x));
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach _entries;
|
||||
|
||||
if (_arr isEqualTo []) then {_arr = [""]};
|
||||
_return = if (_single) then {_arr select 0} else {_arr};
|
||||
|
||||
_return
|
@ -12,7 +12,7 @@ EPOCH_lastContainer = _this select 1;
|
||||
waitUntil {!isNull findDisplay 602};
|
||||
_display = (findDisplay 602);
|
||||
|
||||
{(_display displayCtrl _x) ctrlEnable false} forEach [-13,-14];
|
||||
(_display displayCtrl -13) ctrlEnable false;
|
||||
|
||||
_totalArmor = 0;
|
||||
_totalArmorMax = EPOCH_MAX_ARMOR select 3;
|
||||
|
@ -8,9 +8,6 @@ _text = _control lbText _index;
|
||||
_data = _control lbData _index;
|
||||
_pic = _control lbPicture _index;
|
||||
|
||||
_craftingArray = [];
|
||||
_craftingArrayNames = [];
|
||||
|
||||
if (_data == "") then {
|
||||
_confData = "getText (_x >> 'displayName') == _text" configClasses(configFile >> "CfgWeapons");
|
||||
if !(_confData isEqualTo[]) then {
|
||||
@ -18,17 +15,6 @@ if (_data == "") then {
|
||||
};
|
||||
};
|
||||
|
||||
_config = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_craftingConfig = _config >> _data;
|
||||
|
||||
if (isClass (_craftingConfig)) then {
|
||||
_usedIn = [] + getArray (_craftingConfig >> "usedIn");
|
||||
{
|
||||
_craftingArray pushBack (_x call EPOCH_itemPicture);
|
||||
_craftingArrayNames pushBack (_x call EPOCH_itemDisplayName);
|
||||
} forEach _usedIn;
|
||||
};
|
||||
|
||||
EPOCH_InteractedItem = [_text,_data,_pic];
|
||||
|
||||
_interactOption = 0;
|
||||
@ -55,8 +41,15 @@ if (_buttonTXT != "") then {
|
||||
};
|
||||
|
||||
_useBtn = _display displayCtrl -14;
|
||||
if !(_craftingArray isEqualTo []) then {
|
||||
_useBtn ctrlEnable true;
|
||||
|
||||
_config = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_craftingConfig = _config >> _data;
|
||||
|
||||
if (isClass (_craftingConfig)) then {
|
||||
_useBtn ctrlSetTextColor [0,1,0,1];
|
||||
EPOCH_CraftingItem = EPOCH_InteractedItem select 0;
|
||||
} else {
|
||||
_useBtn ctrlEnable false;
|
||||
_useBtn ctrlSetTextColor [1,0,0,1];
|
||||
EPOCH_CraftingItem = "";
|
||||
};
|
||||
|
@ -134,10 +134,7 @@ class CfgClientFunctions
|
||||
class niteLight {};
|
||||
class LootIT {};
|
||||
class supportCopter {};
|
||||
class itemInteract {};
|
||||
class consumeItem {};
|
||||
class craftItemPreview {};
|
||||
class craftItem {};
|
||||
class unitSpawn {};
|
||||
class antiWall {};
|
||||
class onEachFrame {};
|
||||
@ -211,6 +208,7 @@ class CfgClientFunctions
|
||||
class fnc_findSafePos {};
|
||||
|
||||
class pushCustomVar {};
|
||||
class itemData {};
|
||||
class itemPicture {};
|
||||
class itemDisplayName {};
|
||||
class SortArrayByDistance {};
|
||||
@ -259,8 +257,31 @@ class CfgClientFunctions
|
||||
class onPause {};
|
||||
class interactVehicle {};
|
||||
class showStats {};
|
||||
class dynamicMenu {};
|
||||
class dynamicMenuCleanup {};
|
||||
class 3DctrlPitchYaw {};
|
||||
class 3DctrlSpin {};
|
||||
class 3DctrlYaw {};
|
||||
};
|
||||
|
||||
class gui_craft {
|
||||
file = "\x\addons\a3_epoch_code\gui\scripts\craftingv2";
|
||||
class crafting_animate {};
|
||||
class crafting_ctrl_collector {};
|
||||
class crafting_dev_toggle {};
|
||||
class crafting_getConfig {};
|
||||
class crafting_checkGear {};
|
||||
class crafting_checkNearby {};
|
||||
class crafting_checkResources {};
|
||||
class crafting_craft {};
|
||||
class crafting_progress {};
|
||||
class crafting_load {};
|
||||
class crafting_unload {};
|
||||
class crafting_LB_click {};
|
||||
class crafting_LB_defaults {};
|
||||
class crafting_LB_doubleClick {};
|
||||
class crafting_colorScheme {};
|
||||
};
|
||||
class group {
|
||||
file = "\x\addons\a3_epoch_code\gui\scripts\group";
|
||||
class Group_invitePlayer {};
|
||||
@ -291,7 +312,12 @@ class CfgClientFunctions
|
||||
class mission_refresh {};
|
||||
class mission_description {};
|
||||
};
|
||||
|
||||
class gui_postProcessing {
|
||||
file = "\x\addons\a3_epoch_code\gui\scripts\post_process";
|
||||
class postprocessCreate {};
|
||||
class postprocessAdjust {};
|
||||
class postprocessDestroy {};
|
||||
};
|
||||
};
|
||||
};
|
||||
#include "\x\addons\a3_epoch_code\gui\Epoch_GUI_Config.hpp"
|
||||
|
@ -38,6 +38,550 @@ class IGUIBack;
|
||||
class CA_Title;
|
||||
class ScrollBar;
|
||||
|
||||
class rmx_dynamenu {
|
||||
idd = 66600;
|
||||
enableSimulation = 1;
|
||||
movingEnable = 1;
|
||||
onLoad = "setMousePosition [0.5, 0.5];";
|
||||
class controls {};
|
||||
};
|
||||
|
||||
class rmx_rscPicture: RscPicture {
|
||||
idc = -1;
|
||||
x = 0.425; y = 0.4; w = 0.15; h = 0.2;
|
||||
text = "";
|
||||
};
|
||||
|
||||
class rmx_rscObject
|
||||
{
|
||||
|
||||
idd = 77770;
|
||||
movingEnable = 0;
|
||||
enableSimulation = 1;
|
||||
|
||||
class Objects
|
||||
{
|
||||
class randomItem //pref less polies for starting item
|
||||
{
|
||||
|
||||
idc = 77771;
|
||||
type = 82;
|
||||
model = "\x\addons\a3_epoch_assets\models\logo.p3d";
|
||||
scale = 1;
|
||||
|
||||
direction[] = {0, -0.35, -0.65};
|
||||
up[] = {0, 0.65, -0.35};
|
||||
|
||||
x = 0.5;
|
||||
y = 0.5;
|
||||
z = 0.2;
|
||||
|
||||
xBack = 0.5;
|
||||
yBack = 0.5;
|
||||
zBack = 1.2;
|
||||
|
||||
inBack = 1;
|
||||
enableZoom = 0;
|
||||
zoomDuration = 0.001;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class rmx_rscControlsGroup: RscControlsGroup
|
||||
{
|
||||
idc = -1;
|
||||
|
||||
x = 0; y = 0; w = 0; h = 0;
|
||||
colorBackground[] = {0,0,0,0};
|
||||
|
||||
class VScrollbar: VScrollbar
|
||||
{
|
||||
width = 0;
|
||||
};
|
||||
class HScrollbar: VScrollbar
|
||||
{
|
||||
height = 0;
|
||||
};
|
||||
class controls {};
|
||||
};
|
||||
|
||||
class rmx_craftingUI {
|
||||
idd = 77700;
|
||||
enableSimulation = 1;
|
||||
movingEnable = 1;
|
||||
onUnload = "call EPOCH_crafting_unload;";
|
||||
onLoad = "setMousePosition [0.5, 0.5];";
|
||||
|
||||
class Objects
|
||||
{
|
||||
class randomItem2 //pref less polies for starting item
|
||||
{
|
||||
|
||||
idc = 77701;
|
||||
type = 82;
|
||||
model = "\x\addons\a3_epoch_assets\models\logo.p3d";
|
||||
scale = 1;
|
||||
|
||||
direction[] = {0, -0.35, -0.65};
|
||||
up[] = {0, 0.65, -0.35};
|
||||
|
||||
x = 0.8125;
|
||||
y = 0.287782;
|
||||
z = 1;
|
||||
|
||||
xBack = 0.8125;
|
||||
yBack = 0.287782;
|
||||
zBack = 1.2;
|
||||
|
||||
inBack = 1;
|
||||
enableZoom = 0;
|
||||
zoomDuration = 0.001;
|
||||
};
|
||||
};
|
||||
|
||||
class controls
|
||||
{
|
||||
//Developer menu (DISABLE ON RELEASE)
|
||||
|
||||
//background
|
||||
class dev_backgrnd: IGUIBack
|
||||
{
|
||||
idc = 77703;
|
||||
x = 0.710375 * safezoneW + safezoneX;
|
||||
y = 0.224906 * safezoneH + safezoneY;
|
||||
w = 0.0845625 * safezoneW;
|
||||
h = 0.22001 * safezoneH;
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
|
||||
//buttons
|
||||
class dev_btn_pic: RscPicture
|
||||
{
|
||||
idc = 77702;
|
||||
|
||||
text = "x\addons\a3_epoch_code\Data\UI\dev_mode_off.paa";
|
||||
x = 0.795;
|
||||
y = -0.064;
|
||||
w = 0.2;
|
||||
h = 0.075;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
onMouseButtonDown = "call EPOCH_crafting_dev_toggle;";
|
||||
};
|
||||
class dev_btn_set: RscButton
|
||||
{
|
||||
idc = 77704;
|
||||
text = "Set"; //--- ToDo: Localize;
|
||||
x = 0.770187 * safezoneW + safezoneX;
|
||||
y = 0.2316 * safezoneH + safezoneY;
|
||||
w = 0.020625 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class dev_btn_rpt: RscButton
|
||||
{
|
||||
idc = 77705;
|
||||
text = "Export"; //--- ToDo: Localize;
|
||||
x = 0.712437 * safezoneW + safezoneX;
|
||||
y = 0.414171 * safezoneH + safezoneY;
|
||||
w = 0.0804375 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class dev_btn_setPos: RscButton
|
||||
{
|
||||
idc = 77706;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "Set Position"; //--- ToDo: Localize;
|
||||
x = 0.712575 * safezoneW + safezoneX;
|
||||
y = 0.384407 * safezoneH + safezoneY;
|
||||
w = 0.0804375 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
};
|
||||
class dev_btn_vectorPlus: RscButton
|
||||
{
|
||||
idc = 77707;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "+"; //--- ToDo: Localize;
|
||||
x = 0.778437 * safezoneW + safezoneX;
|
||||
y = 0.266721 * safezoneH + safezoneY;
|
||||
w = 0.012375 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
action = "rmx_var_3dCtrlSpin_Vector = rmx_var_3dCtrlSpin_Vector + 0.1; (rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str rmx_var_3dCtrlSpin_Vector;";
|
||||
};
|
||||
class dev_btn_vectorMinus: RscButton
|
||||
{
|
||||
idc = 77708;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "-"; //--- ToDo: Localize;
|
||||
x = 0.73925 * safezoneW + safezoneX;
|
||||
y = 0.266721 * safezoneH + safezoneY;
|
||||
w = 0.012375 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
action = "rmx_var_3dCtrlSpin_Vector = rmx_var_3dCtrlSpin_Vector - 0.1; (rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str rmx_var_3dCtrlSpin_Vector;";
|
||||
};
|
||||
//edit
|
||||
|
||||
class dev_edit_scale: RscEdit
|
||||
{
|
||||
idc = 77709;
|
||||
text = "1"; //--- ToDo: Localize;
|
||||
x = 0.743375 * safezoneW + safezoneX;
|
||||
y = 0.2316 * safezoneH + safezoneY;
|
||||
w = 0.02475 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class dev_edit_x: RscEdit
|
||||
{
|
||||
idc = 77710;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "0.123456"; //--- ToDo: Localize;
|
||||
x = 0.748524 * safezoneW + safezoneX;
|
||||
y = 0.2998 * safezoneH + safezoneY;
|
||||
w = 0.0443435 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
};
|
||||
class dev_edit_z: RscEdit
|
||||
{
|
||||
idc = 77711;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "0.123456"; //--- ToDo: Localize;
|
||||
x = 0.748948 * safezoneW + safezoneX;
|
||||
y = 0.325807 * safezoneH + safezoneY;
|
||||
w = 0.0443435 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
};
|
||||
class dev_edit_y: RscEdit
|
||||
{
|
||||
idc = 77712;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "0.123456"; //--- ToDo: Localize;
|
||||
x = 0.749458 * safezoneW + safezoneX;
|
||||
y = 0.352082 * safezoneH + safezoneY;
|
||||
w = 0.0443435 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
};
|
||||
class dev_edit_vector: RscEdit
|
||||
{
|
||||
idc = 77713;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "0"; //--- ToDo: Localize;
|
||||
x = 0.755234 * safezoneW + safezoneX;
|
||||
y = 0.267601 * safezoneH + safezoneY;
|
||||
w = 0.0195937 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
};
|
||||
//text
|
||||
class dev_txt_scale: RscText
|
||||
{
|
||||
idc = 77714;
|
||||
text = "Scale:"; //--- ToDo: Localize;
|
||||
x = 0.712437 * safezoneW + safezoneX;
|
||||
y = 0.2338 * safezoneH + safezoneY;
|
||||
w = 0.028875 * safezoneW;
|
||||
h = 0.0154 * safezoneH;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class dev_txt_X: RscText
|
||||
{
|
||||
idc = 77715;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "X:"; //--- ToDo: Localize;
|
||||
x = 0.712703 * safezoneW + safezoneX;
|
||||
y = 0.303578 * safezoneH + safezoneY;
|
||||
w = 0.028875 * safezoneW;
|
||||
h = 0.0154 * safezoneH;
|
||||
};
|
||||
class dev_txt_z: RscText
|
||||
{
|
||||
idc = 77716;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "Z:"; //--- ToDo: Localize;
|
||||
x = 0.712543 * safezoneW + safezoneX;
|
||||
y = 0.329511 * safezoneH + safezoneY;
|
||||
w = 0.028875 * safezoneW;
|
||||
h = 0.0154 * safezoneH;
|
||||
};
|
||||
class dev_txt_y: RscText
|
||||
{
|
||||
idc = 77717;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "Y:"; //--- ToDo: Localize;
|
||||
x = 0.712564 * safezoneW + safezoneX;
|
||||
y = 0.356482 * safezoneH + safezoneY;
|
||||
w = 0.028875 * safezoneW;
|
||||
h = 0.0154 * safezoneH;
|
||||
};
|
||||
class dev_txt_3D: RscText //3d preview red
|
||||
{
|
||||
idc = 77718;
|
||||
|
||||
text = "";
|
||||
x = 0.6;
|
||||
y = 0.04;
|
||||
w = 0.4;
|
||||
h = 0.44;
|
||||
colorBackground[] = {1,0,0,0.3};
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class dev_txt_Vector: RscText
|
||||
{
|
||||
idc = 77719;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
|
||||
text = "vUP:"; //--- ToDo: Localize;
|
||||
x = 0.712437 * safezoneW + safezoneX;
|
||||
y = 0.268921 * safezoneH + safezoneY;
|
||||
w = 0.0226875 * safezoneW;
|
||||
h = 0.0154 * safezoneH;
|
||||
};
|
||||
// ----------- MAIN GUI PART ----------- //
|
||||
//background
|
||||
class rmx_cUI_back: IGUIBack
|
||||
{
|
||||
idc = 77800;
|
||||
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 1;
|
||||
h = 1;
|
||||
colorBackground[] = {0,0,0,0.1};
|
||||
onLoad = "_cl = _this select 0; _cl ctrlSetFade 1; _cl ctrlCommit 0; _cl ctrlSetFade 0; _cl ctrlCommit 1;";
|
||||
};
|
||||
//Buttons
|
||||
class rmx_cUI_btn_craft: RscPicture
|
||||
{
|
||||
idc = 77801;
|
||||
text = "\x\addons\a3_epoch_code\Data\UI\crafting\close.paa";
|
||||
x = 0.9;
|
||||
y = 0.92;
|
||||
w = 0.1;
|
||||
h = 0.08;
|
||||
onLoad = "[(_this select 0),[1,0.92,0,0.08],[0.9,0.92,0.1,0.08]] call EPOCH_crafting_animate;";
|
||||
onMouseButtonUp = "call epoch_crafting_craft;";
|
||||
};
|
||||
class rmx_cUI_btn_clear: RscButton
|
||||
{
|
||||
idc = 77802;
|
||||
text = "X"; //--- ToDo: Localize;
|
||||
x = 0.26;
|
||||
y = 0.04;
|
||||
w = 0.04;
|
||||
h = 0.052;
|
||||
onLoad = "[(_this select 0),[0.26,0.04,0,0],[0.26,0.04,0.04,0.052]] call EPOCH_crafting_animate;";
|
||||
action = "(rmx_var_crafting_ctrl_Interact select 4) ctrlSetText ''; lbClear (rmx_var_crafting_ctrl_main select 1);";
|
||||
};
|
||||
//Progressbar
|
||||
class rmx_cUI_pb: RscProgress
|
||||
{
|
||||
idc = 77803;
|
||||
texture = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
textureExt = "";
|
||||
colorBar[] = {1, 1, 1, 0.1};
|
||||
colorExtBar[] = {1, 1, 1, 1};
|
||||
colorFrame[] = {1, 1, 1, 1};
|
||||
x = 0.6;
|
||||
y = 0.92;
|
||||
w = 0.3;
|
||||
h = 0.08;
|
||||
|
||||
onLoad = "[(_this select 0),[0.6,0.92,0,0.08],[0.6,0.92,0.3,0.08]] call EPOCH_crafting_animate; (_this select 0) ctrlEnable true;";
|
||||
onMouseMoving = "if (rmx_var_crafting_progressClicked && rmx_var_craftQTY != 0) then {(_this select 0) progressSetPosition (((_this select 1)-0.6)*3.3 );};";
|
||||
onMouseHolding = "if (rmx_var_crafting_progressClicked && rmx_var_craftQTY != 0) then {(_this select 0) progressSetPosition (((_this select 1)-0.6)*3.3 );};";
|
||||
onMouseButtonDown = "rmx_var_crafting_progressClicked = true;";
|
||||
onMouseButtonUp = "rmx_var_crafting_progressClicked = false;";
|
||||
};
|
||||
//progressbar QTY
|
||||
class rmx_cUI_txt_QTY: RscText
|
||||
{
|
||||
idc = 77804;
|
||||
style = 0x02; //vcenter = 0x0c
|
||||
text = "";
|
||||
x = 0.6;
|
||||
y = 0.92;
|
||||
w = 0.3;
|
||||
h = 0.08;
|
||||
colorBackground[] = {0,0,0,0.2};
|
||||
colorText[] = {1,0.6,0.01,1};
|
||||
onLoad = "[(_this select 0),[0.6,0.92,0,0.08],[0.6,0.92,0.3,0.08]] call EPOCH_crafting_animate;";
|
||||
};
|
||||
|
||||
|
||||
//edit
|
||||
class rmx_cUI_edit_searchField: RscEdit
|
||||
{
|
||||
idc = 77810;
|
||||
text = ""; //--- ToDo: Localize;
|
||||
x = 0.0025;
|
||||
y = 0.04;
|
||||
w = 0.2575;
|
||||
h = 0.052;
|
||||
colorBackground[] = {0,0,0,0.5};
|
||||
onLoad = "[(_this select 0),[0.0025,0.04,0,0.052],[0.0025,0.04,0.2575,0.052]] call EPOCH_crafting_animate;";
|
||||
};
|
||||
|
||||
//listboxes
|
||||
class rmx_cUI_LB_recipes: RscListbox
|
||||
{
|
||||
idc = 77811;
|
||||
x = 0;
|
||||
y = 0.092;
|
||||
w = 0.3;
|
||||
h = 0.908;
|
||||
onLoad = "[(_this select 0),[0,0.092,0.3,0],[0,0.092,0.3,0.908]] call EPOCH_crafting_animate;";
|
||||
onLBSelChanged = "call EPOCH_crafting_LB_click;";
|
||||
};
|
||||
class rmx_cUI_LB_ingredients: RscListbox
|
||||
{
|
||||
idc = 77812;
|
||||
x = 0.3;
|
||||
y = 0.04;
|
||||
w = 0.3;
|
||||
h = 0.96;
|
||||
onLoad = "[(_this select 0),[0.3,0.04,0.3,0],[0.3,0.04,0.3,0.96]] call EPOCH_crafting_animate;";
|
||||
onLBDblClick = "call EPOCH_crafting_LB_doubleClick;";
|
||||
};
|
||||
|
||||
//Structured Text
|
||||
|
||||
class rmx_cUI_st_description: RscStructuredText
|
||||
{
|
||||
idc = 77820;
|
||||
text = "..............................."; //--- ToDo: Localize;
|
||||
x = 0.6;
|
||||
y = 0.524;
|
||||
w = 0.4;
|
||||
h = 0.392;
|
||||
colorBackground[] = {0,0,0,0};
|
||||
};
|
||||
|
||||
//Text
|
||||
class rmx_cUI_txt_recipes: RscText
|
||||
{
|
||||
idc = 77840;
|
||||
|
||||
text = "Recipes"; //--- ToDo: Localize;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0.3;
|
||||
h = 0.04;
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
onLoad = "[(_this select 0),[0,0,0,0.04],[0,0,0.3,0.04]] call EPOCH_crafting_animate;";
|
||||
};
|
||||
|
||||
class rmx_cUI_txt_ingredients: RscText
|
||||
{
|
||||
idc = 77841;
|
||||
|
||||
text = "Ingredients"; //--- ToDo: Localize;
|
||||
x = 0.3;
|
||||
y = 0;
|
||||
w = 0.2975;
|
||||
h = 0.04;
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
onLoad = "[(_this select 0),[0.3,0,0,0.04],[0.3,0,0.2975,0.04]] call EPOCH_crafting_animate;";
|
||||
};
|
||||
class rmx_cUI_txt_preview: RscText
|
||||
{
|
||||
idc = 77842;
|
||||
|
||||
text = "Preview"; //--- ToDo: Localize;
|
||||
x = 0.6;
|
||||
y = 0;
|
||||
w = 0.3975;
|
||||
h = 0.04;
|
||||
colorBackground[] = {1,0.6,0.01,0.8};
|
||||
onLoad = "[(_this select 0),[0.6,0,0,0.04],[0.6,0,0.3975,0.04]] call EPOCH_crafting_animate;";
|
||||
};
|
||||
class rmx_cUI_txt_resources: RscText
|
||||
{
|
||||
idc = 77843;
|
||||
|
||||
text = "Resources"; //--- ToDo: Localize;
|
||||
x = 0.3;
|
||||
y = 0.96;
|
||||
w = 0.2975;
|
||||
h = 0.04;
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class rmx_cUI_txt_description: RscText
|
||||
{
|
||||
idc = 77844;
|
||||
|
||||
text = "Description"; //--- ToDo: Localize;
|
||||
x = 0.6;
|
||||
y = 0.48;
|
||||
w = 0.3975;
|
||||
h = 0.04;
|
||||
colorBackground[] = {0,0,0,0.8};
|
||||
onLoad = "[(_this select 0),[0.6,0.48,0,0.04],[0.6,0.48,0.3975,0.04]] call EPOCH_crafting_animate;";
|
||||
};
|
||||
//frames
|
||||
class rmx_cUI_frame_recipes: RscFrame
|
||||
{
|
||||
idc = 77830;
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = 0.3;
|
||||
h = 1;
|
||||
};
|
||||
class rmx_cUI_frame_craft: RscFrame
|
||||
{
|
||||
idc = 77831;
|
||||
x = 0.3;
|
||||
y = 0;
|
||||
w = 0.3;
|
||||
h = 1;
|
||||
};
|
||||
|
||||
class rmx_cUI_frame_preview: RscFrame
|
||||
{
|
||||
idc = 77832;
|
||||
x = 0.6;
|
||||
y = 0;
|
||||
w = 0.4;
|
||||
h = 0.48;
|
||||
};
|
||||
class rmx_cUI_frame_resources: RscFrame
|
||||
{
|
||||
idc = 77833;
|
||||
x = 0.3;
|
||||
y = 0.92;
|
||||
w = 0.3;
|
||||
h = 0.08;
|
||||
onLoad = "(_this select 0) ctrlShow false";
|
||||
};
|
||||
class rmx_cUI_frame_description: RscFrame
|
||||
{
|
||||
idc = 77834;
|
||||
x = 0.6;
|
||||
y = 0.48;
|
||||
w = 0.4;
|
||||
h = 0.44;
|
||||
};
|
||||
class rmx_cUI_frame_qty: RscFrame
|
||||
{
|
||||
idc = 77835;
|
||||
x = 0.6;
|
||||
y = 0.92;
|
||||
w = 0.4;
|
||||
h = 0.08;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class RscCustomProgress : RscProgress
|
||||
{
|
||||
texture = "";
|
||||
@ -231,7 +775,33 @@ class RscTitles
|
||||
};
|
||||
};
|
||||
};
|
||||
class rmx_progressTest
|
||||
{
|
||||
idd = 10200;
|
||||
duration = 999999;
|
||||
fadein = 0.5;
|
||||
fadeout = 0.5;
|
||||
onLoad = "uiNamespace setVariable ['rmx_var_progressTestDisplay',_this select 0]";
|
||||
|
||||
class controls {};
|
||||
};
|
||||
class rmx_CraftingProgress
|
||||
{
|
||||
idd = 10100;
|
||||
duration = 999999;
|
||||
fadein = 0.2;
|
||||
fadeout = 0.2;
|
||||
onLoad = "uiNamespace setVariable ['rmx_var_CraftingProgressDisplay',_this select 0]";
|
||||
|
||||
class controls {};
|
||||
};
|
||||
class Default //use to delete title resources
|
||||
{
|
||||
idd = -1;
|
||||
fadein = 0;
|
||||
fadeout = 0;
|
||||
duration = 0;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
@ -1693,7 +2263,7 @@ class InteractBaseBuilding
|
||||
*/
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
class InteractItem
|
||||
{
|
||||
idd = -15;
|
||||
@ -2256,7 +2826,7 @@ class InteractItem
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
*/
|
||||
class Trade
|
||||
{
|
||||
idd = -1900;
|
||||
@ -2547,6 +3117,7 @@ class RscDisplayInventory_DLCTemplate
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class RscDisplayInventory
|
||||
{
|
||||
scriptName = "RscDisplayInventory";
|
||||
@ -3246,10 +3817,8 @@ class RscDisplayInventory
|
||||
|
||||
class UniformContainer : GroundContainer
|
||||
{
|
||||
onLBDblClick = "_this call EPOCH_itemInteract";
|
||||
//onLBDblClick = "_this call EPOCH_itemInteract";
|
||||
onLBSelChanged = "_this call EPOCH_itemInteractV2";
|
||||
onLBDrag = "";
|
||||
onLBSelChanged = "";
|
||||
|
||||
idc = 633;
|
||||
x = "15.1 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
@ -3384,13 +3953,13 @@ class RscDisplayInventory
|
||||
class EpochBtnBG : IGUIBack
|
||||
{
|
||||
idc = -10;
|
||||
/*
|
||||
|
||||
x = 0.433468 * safezoneW + safezoneX;
|
||||
y = 0.75872 * safezoneH + safezoneY;
|
||||
w = 0.30231 * safezoneW;
|
||||
h = 0.0337482 * safezoneH;
|
||||
*/
|
||||
|
||||
//x = 0.433468 * safezoneW + safezoneX;
|
||||
//y = 0.75872 * safezoneH + safezoneY;
|
||||
//w = 0.30231 * safezoneW;
|
||||
//h = 0.0337482 * safezoneH;
|
||||
|
||||
x = "14.5 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "23.9 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "24.5 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
@ -3403,12 +3972,12 @@ class RscDisplayInventory
|
||||
idc = -11;
|
||||
text = "Group Menu";
|
||||
onMouseButtonDown = "_this call EPOCH_Inventory_Group";
|
||||
/*
|
||||
x = 0.437079 * safezoneW + safezoneX;
|
||||
y = 0.764 * safezoneH + safezoneY;
|
||||
w = 0.0711741 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
*/
|
||||
|
||||
//x = 0.437079 * safezoneW + safezoneX;
|
||||
//y = 0.764 * safezoneH + safezoneY;
|
||||
//w = 0.0711741 * safezoneW;
|
||||
//h = 0.022 * safezoneH;
|
||||
|
||||
x = "33.2 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "24 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "6 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
@ -3419,12 +3988,12 @@ class RscDisplayInventory
|
||||
idc = -12;
|
||||
text = "Requests";
|
||||
onMouseButtonDown = "_this call EPOCH_Inventory_iGroup";
|
||||
/*
|
||||
x = 0.511347 * safezoneW + safezoneX;
|
||||
y = 0.764 * safezoneH + safezoneY;
|
||||
w = 0.0711741 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
*/
|
||||
|
||||
//x = 0.511347 * safezoneW + safezoneX;
|
||||
//y = 0.764 * safezoneH + safezoneY;
|
||||
//w = 0.0711741 * safezoneW;
|
||||
//h = 0.022 * safezoneH;
|
||||
|
||||
x = "27.0 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "24 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "6 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
@ -3435,12 +4004,12 @@ class RscDisplayInventory
|
||||
idc = -13;
|
||||
text = "EXAMINE";
|
||||
onMouseButtonDown = "call EPOCH_consumeItem";
|
||||
/*
|
||||
x = 0.585617 * safezoneW + safezoneX;
|
||||
y = 0.764 * safezoneH + safezoneY;
|
||||
w = 0.0711741 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
*/
|
||||
|
||||
//x = 0.585617 * safezoneW + safezoneX;
|
||||
//y = 0.764 * safezoneH + safezoneY;
|
||||
//w = 0.0711741 * safezoneW;
|
||||
//h = 0.022 * safezoneH;
|
||||
|
||||
x = "14.62 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "24 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "6 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
@ -3450,13 +4019,13 @@ class RscDisplayInventory
|
||||
{
|
||||
idc = -14;
|
||||
text = "CRAFT";
|
||||
onMouseButtonDown = "true call EPOCH_itemInteract";
|
||||
/*
|
||||
x = 0.659883 * safezoneW + safezoneX;
|
||||
y = 0.764 * safezoneH + safezoneY;
|
||||
w = 0.0711741 * safezoneW;
|
||||
h = 0.022 * safezoneH;
|
||||
*/
|
||||
onMouseButtonDown = "EPOCH_CraftingItem call EPOCH_crafting_load;";
|
||||
|
||||
//x = 0.659883 * safezoneW + safezoneX;
|
||||
//y = 0.764 * safezoneH + safezoneY;
|
||||
//w = 0.0711741 * safezoneW;
|
||||
//h = 0.022 * safezoneH;
|
||||
|
||||
x = "20.8 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||
y = "24 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||
w = "6 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
|
||||
|
25
Sources/epoch_code/gui/scripts/Epoch_3DctrlPitchYaw.sqf
Normal file
25
Sources/epoch_code/gui/scripts/Epoch_3DctrlPitchYaw.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
Spins 3D dialog along X and Z axis following mouse input
|
||||
Requires source control to read coords from and destination 3D control
|
||||
Can be applied to 3D control itself, but not recommended, pref use transparent rscPicture (enable it).
|
||||
_ctrl ctrlSetEventHandler ["MouseMoving", "[_this,control3D] call Epoch_3DctrlPitchYaw"];
|
||||
*/
|
||||
params ["_arr","_ctrl3D"];
|
||||
|
||||
disableSerialization;
|
||||
|
||||
_inX = (_arr select 2) * 720;
|
||||
_inY = (_arr select 1) * 720;
|
||||
|
||||
_dirY = cos _inX;
|
||||
_upY = -sin _inX;
|
||||
|
||||
_dirX = -(_dirY * sin _inY);
|
||||
_dirY = _dirY * cos _inY;
|
||||
|
||||
_upX = -(_upY * sin _inY);
|
||||
_upY = _upY * cos _inY;
|
||||
|
||||
_ctrl3D ctrlSetModelDirAndUp [[_dirX,_dirY,sin _inX],[_upX,_upY,cos _inX]];
|
||||
|
||||
true
|
25
Sources/epoch_code/gui/scripts/Epoch_3DctrlSpin.sqf
Normal file
25
Sources/epoch_code/gui/scripts/Epoch_3DctrlSpin.sqf
Normal file
@ -0,0 +1,25 @@
|
||||
/*
|
||||
Spins a 3D dialog
|
||||
[control] call epoch_3DctrlSpin;
|
||||
*/
|
||||
|
||||
_this spawn {
|
||||
disableSerialization;
|
||||
params ["_ctrl3D"];
|
||||
rmx_var_3dCtrlSpin = true;
|
||||
|
||||
_ctrlPos = ctrlPosition _ctrl3D;
|
||||
|
||||
if (isNil "rmx_var_3dCtrlSpin_Vector") then {rmx_var_3dCtrlSpin_Vector = 0;};
|
||||
|
||||
while {rmx_var_3dCtrlSpin} do {
|
||||
for "_i" from 0 to 360 do {
|
||||
|
||||
_vector = (360 - _i) - 360;
|
||||
_ctrl3D ctrlSetModelDirAndUp [[-(sin _vector),cos _vector,0],[cos _vector * rmx_var_3dCtrlSpin_Vector,sin _vector * rmx_var_3dCtrlSpin_Vector,1]];
|
||||
if !(rmx_var_3dCtrlSpin) exitWith{};
|
||||
uiSleep 0.01;
|
||||
};
|
||||
};
|
||||
};
|
||||
true
|
17
Sources/epoch_code/gui/scripts/Epoch_3DctrlYaw.sqf
Normal file
17
Sources/epoch_code/gui/scripts/Epoch_3DctrlYaw.sqf
Normal file
@ -0,0 +1,17 @@
|
||||
/*
|
||||
Spins 3D dialog along Z axis following mouse input
|
||||
|
||||
Requires source control to read coords from and destination 3D control
|
||||
Can be applied to 3D control itself, but not recommended, pref use transparent rscPicture (enable it).
|
||||
_ctrl ctrlSetEventHandler ["MouseMoving", "[_this,control3D] call Epoch_3DctrlPitchYaw"];
|
||||
*/
|
||||
params ["_arr","_ctrl3D"];
|
||||
|
||||
disableSerialization;
|
||||
|
||||
_inX = (_arr select 2) * 180;
|
||||
_inY = (_arr select 1) * 180;
|
||||
|
||||
_ctrl3D ctrlSetModelDirAndUp [[-(cos _inX * sin _inY),cos _inX * cos _inY,0],[0,0,1]];
|
||||
|
||||
true
|
138
Sources/epoch_code/gui/scripts/Epoch_dynamicMenu.sqf
Normal file
138
Sources/epoch_code/gui/scripts/Epoch_dynamicMenu.sqf
Normal file
@ -0,0 +1,138 @@
|
||||
//TODO: read key press from global var (profileNamespace config)
|
||||
//TODO: admin choice to use missionConfigFile
|
||||
//TODO: (Ask team) suffix code to close dialog when button pressed
|
||||
//TODO: unlimited categories
|
||||
//TODO: functionize var Defines, do check before button action
|
||||
//TODO: nil before closing display
|
||||
//TODO: add commented out dialog version to display
|
||||
//TODO: add cooldown
|
||||
//TODO: prevent from opening and instantly close if known display is on
|
||||
|
||||
if !(isNil "rmx_var_dynamicMenuInProgress") exitWith {};
|
||||
if (isNil "rmx_var_dynamicMenuCat") then {rmx_var_dynamicMenuCat = "";};
|
||||
|
||||
|
||||
if (rmx_var_dynamicMenuCat isEqualTo "" && !isNil "rmx_var_dynamicMenuHOLD") exitWith {};
|
||||
|
||||
private ["_display","_cfg","_cat","_buttonSettings","_configs","_subclasses","_action","_entries","_img","_img2","_center","_defaultScaleX","_defaultScaleY","_distance","_scaleLargeX","_scaleLargeY","_scaleSmallX","_scaleSmallY","_scaleSelectedX","_scaleSelectedY","_points","_positions","_positions2","_positions3","_x","_y"];
|
||||
disableSerialization;
|
||||
|
||||
rmx_var_dynamicMenuInProgress = true; //needed to suspend button spam, removed later
|
||||
|
||||
_display = (findDisplay 46) createDisplay "rmx_dynamenu";
|
||||
_display displaySetEventHandler ["keyUp", "[false,_this select 1] call Epoch_dynamicMenuCleanup;"];
|
||||
|
||||
//TODO: config choice based on global variable or dynamic config update (slower)
|
||||
_cfg = configFile;
|
||||
|
||||
/** Variable Defines **/
|
||||
{
|
||||
call compile (format ["%1 = %2;",configName _x,getText _x]);
|
||||
} count (configProperties [(_cfg >> "cfgDynamicMenu" >> "variableDefines"),"true",false]);
|
||||
|
||||
_cat = if (rmx_var_dynamicMenuCat isEqualTo "") then {
|
||||
(_cfg >> "cfgDynamicMenu" >> "dynaButtons")
|
||||
} else {
|
||||
(_cfg >> "cfgDynamicMenu" >> "dynaButtons" >> rmx_var_dynamicMenuCat)
|
||||
};
|
||||
|
||||
/** Button configs **/
|
||||
_buttonSettings = [];
|
||||
|
||||
_configs = "true" configClasses (_cat);
|
||||
{
|
||||
if (call compile (getText(_x >> "condition"))) then {
|
||||
|
||||
_subclasses = configProperties [_x, "isClass _x",true];
|
||||
|
||||
_action = if (_subclasses isEqualTo []) then {
|
||||
compile (format ["%1",getText(_x >> "action")])
|
||||
} else {
|
||||
compile (format ["[true,57] call Epoch_dynamicMenuCleanup; rmx_var_dynamicMenuCat = '%1'; %2",(configName _x),getText(_x >> "action")])
|
||||
};
|
||||
//diag_log _action;
|
||||
_buttonSettings pushBack [
|
||||
getText(_x >> "icon"),
|
||||
getText(_x >> "tooltip"),
|
||||
_action
|
||||
];
|
||||
};
|
||||
} forEach _configs;
|
||||
|
||||
_entries = count _buttonSettings;
|
||||
if (_entries <= 0) exitWith {rmx_var_tabmenu = true; rmx_var_dynamicMenuInProgress = nil;};
|
||||
|
||||
//Post processing
|
||||
if (isNil "rmx_var_dynamenuPPHandle") then {
|
||||
rmx_var_dynamenuPPHandle = ["dynamicBlur",10] call epoch_postProcessCreate;
|
||||
[rmx_var_dynamenuPPHandle, 1, [1]] call epoch_postprocessAdjust;
|
||||
};
|
||||
|
||||
_img = "#(rgb,8,8,3)color(0,0,0,0)";
|
||||
_img2 = "x\addons\a3_epoch_code\Data\UI\buttons\dm_selection.paa";
|
||||
|
||||
//defaults don't edit
|
||||
_center = 0.5;
|
||||
_defaultScaleX = 0.4;
|
||||
_defaultScaleY = 0.5;
|
||||
_distance = 0.7 + _entries / 100;
|
||||
|
||||
//edit scaling here (divisor only, larger values produce smaller image)
|
||||
_scaleLargeX = _defaultScaleX / (1.5 + _entries / 10); //anim invisible
|
||||
_scaleLargeY = _defaultScaleY / (1.5 + _entries / 10);
|
||||
_scaleSmallX = _defaultScaleX / (2.5 + _entries / 10); //icons
|
||||
_scaleSmallY = _defaultScaleY / (2.5 + _entries / 10);
|
||||
_scaleSelectedX = _defaultScaleX / (1.75 + _entries / 10); //anim selected
|
||||
_scaleSelectedY = _defaultScaleY / (1.75 + _entries / 10);
|
||||
|
||||
_points = 360 / _entries;
|
||||
|
||||
_positions = [];
|
||||
_positions2 = [];
|
||||
_positions3 = [];
|
||||
for "_p" from 0 to 360 step _points do {
|
||||
|
||||
_x = cos _p * (0.3 * _distance);
|
||||
_y = sin _p * (0.4 * _distance);
|
||||
|
||||
_positions pushBack [_x + (_center - (_scaleLargeX / 2)),_y + (_center - (_scaleLargeY / 2)),_scaleLargeX,_scaleLargeY];
|
||||
_positions2 pushBack [_x + (_center - (_scaleSmallX / 2)),_y + (_center - (_scaleSmallY / 2)),_scaleSmallX,_scaleSmallY];
|
||||
_positions3 pushBack [_x + (_center - (_scaleSelectedX / 2)),_y + (_center - (_scaleSelectedY / 2)),_scaleSelectedX,_scaleSelectedY];
|
||||
};
|
||||
|
||||
rmx_var_controls = [];
|
||||
//_buttonSettings [icon,tooltip,action]
|
||||
for "_e" from 0 to (_entries - 1) do {
|
||||
private ["_ctrl","_ctrl2"];
|
||||
_ctrl = _display ctrlCreate ["rmx_rscPicture",(66600 + _e)];
|
||||
_ctrl ctrlSetText _img;
|
||||
_ctrl ctrlSetPosition (_positions select _e);
|
||||
_ctrl ctrlCommit 0.1;
|
||||
_ctrl ctrlSetTooltip (_buttonSettings select _e select 1);
|
||||
|
||||
_ctrl ctrlSetTooltipColorBox [0, 0, 0, 0];
|
||||
_ctrl ctrlSetTooltipColorShade [0, 0, 0, 0];
|
||||
_ctrl ctrlSetEventHandler ["mouseEnter", (format ["_c = _this select 0; _c ctrlSetText '%1'; _c ctrlSetPosition %2; _c ctrlCommit 0.3;",_img2,(_positions3 select _e)])];
|
||||
_ctrl ctrlSetEventHandler ["mouseExit", (format ["_c = _this select 0; _c ctrlSetText '%1'; _c ctrlSetPosition %2; _c ctrlCommit 0.3;",_img,(_positions select _e)])];
|
||||
_ctrl ctrlSetEventHandler ["mouseButtonDown", (format ["call %1;",(_buttonSettings select _e select 2)])];
|
||||
_ctrl ctrlEnable true;
|
||||
|
||||
_ctrl2 = _display ctrlCreate ["rmx_rscPicture",-(66600 + _e)];
|
||||
_ctrl2 ctrlSetTooltip (_buttonSettings select _e select 1);
|
||||
_ctrl2 ctrlSetTooltipColorBox [0, 0, 0, 0];
|
||||
_ctrl2 ctrlSetTooltipColorShade [0, 0, 0, 0];
|
||||
_ctrl2 ctrlSetText (_buttonSettings select _e select 0);
|
||||
_ctrl2 ctrlSetPosition (_positions2 select _e);
|
||||
_ctrl2 ctrlCommit 0.1;
|
||||
|
||||
rmx_var_controls pushBack _ctrl;
|
||||
rmx_var_controls pushBack _ctrl2;
|
||||
};
|
||||
|
||||
/** Variable Cleanup **/
|
||||
{
|
||||
call compile (format ["%1 = nil;",configName _x]);
|
||||
} count (configProperties [(_cfg >> "cfgDynamicMenu" >> "variableDefines"),"true",false]);
|
||||
rmx_var_dynamicMenuInProgress = nil;
|
||||
rmx_var_dynamicMenuCat = "";
|
||||
true
|
31
Sources/epoch_code/gui/scripts/Epoch_dynamicMenuCleanup.sqf
Normal file
31
Sources/epoch_code/gui/scripts/Epoch_dynamicMenuCleanup.sqf
Normal file
@ -0,0 +1,31 @@
|
||||
_test = param [1,0];
|
||||
if (_test != 57) exitWith {true}; //dirty fix, TODO: read values from epoch startup vars for key
|
||||
|
||||
_this spawn {
|
||||
if !(isNil "rmx_var_dynamicMenuInProgress") exitWith {};
|
||||
_args = param [0,false,[false]]; //true if redirected with category, false for full cleanup
|
||||
|
||||
if (_args) then {rmx_var_dynamicMenuHOLD = true;} else {rmx_var_dynamicMenuHOLD = nil; rmx_var_dynamicMenuCat = nil;};
|
||||
|
||||
disableSerialization;
|
||||
private "_animSpeed";
|
||||
_animSpeed = 0.1;
|
||||
{
|
||||
_x ctrlSetPosition [0.4625,0.45,0.075,0.1];
|
||||
_x ctrlSetFade 1;
|
||||
_x ctrlCommit _animSpeed;
|
||||
} forEach rmx_var_controls;
|
||||
|
||||
[rmx_var_dynamenuPPHandle, _animSpeed, [0]] call epoch_postprocessAdjust;
|
||||
|
||||
uiSleep _animSpeed;
|
||||
|
||||
findDisplay 66600 closeDisplay 1;
|
||||
|
||||
rmx_var_controls = nil;
|
||||
|
||||
rmx_var_dynamenuPPHandle call epoch_postprocessDestroy;
|
||||
rmx_var_dynamenuPPHandle = nil;
|
||||
};
|
||||
|
||||
true
|
@ -0,0 +1,94 @@
|
||||
if (rmx_var_crafting_SearchConfigData isEqualTo []) exitWith {false};
|
||||
|
||||
private ["_cfg","_ingredientCTRL","_STdesc","_3DCTRL","_selection","_ingredientData","_recipes","_usedIn","_nearbyCount","_idx","_data","_countData","_itemsPlayer","_itemsNearby","_itemsRequired","_lbColor"];
|
||||
|
||||
_cfg = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_ingredientCTRL = rmx_var_crafting_ctrl_main select 1;
|
||||
_STdesc = rmx_var_crafting_ctrl_main select 2;
|
||||
_3DCTRL = rmx_var_crafting_ctrl_DEVMisc select 0;
|
||||
_selection = lbCurSel (rmx_var_crafting_ctrl_main select 0);
|
||||
_ingredientData = rmx_var_crafting_SearchConfigData select _selection;
|
||||
_recipes = _ingredientData select 7;
|
||||
_usedIn = _ingredientData select 9;
|
||||
|
||||
_nearbyCount = []; //required
|
||||
|
||||
lbClear _ingredientCTRL;
|
||||
|
||||
if !(_recipes isEqualTo []) then {
|
||||
_nearbyCount = [_recipes] call EPOCH_crafting_checkGear;
|
||||
_idx = _ingredientCTRL lbAdd (rmx_var_crafting_colorScheme select 8 select 0);
|
||||
_ingredientCTRL lbSetColor [_idx,(rmx_var_crafting_colorScheme select 8 select 1)];
|
||||
{
|
||||
if !(typeName _x isEqualTo typeName []) then {_x = [_x,1]};
|
||||
_data = ([(_cfg >> (_x select 0))] call EPOCH_crafting_getConfig) select 0;
|
||||
_idx = _ingredientCTRL lbAdd format ["%2 x %1",(_data select 1),_x select 1];
|
||||
_ingredientCTRL lbSetPictureRight [_idx,(_data select 2)];
|
||||
_ingredientCTRL lbSetData [_idx, (_data select 1)];
|
||||
|
||||
_countData = _nearbyCount select _forEachIndex;
|
||||
_itemsPlayer = _countData select 0;
|
||||
_itemsNearby = _countData select 1;
|
||||
_itemsRequired = _countData select 2;
|
||||
_ingredientCTRL lbSetTooltip [_idx,format ["On player: [%1/%2], Nearby: [%3/%2], Crafting time: %4 second(s)",_itemsPlayer,_itemsRequired,_itemsNearby,_ingredientData select 6]];
|
||||
|
||||
_lbColor = if (_itemsPlayer >= _itemsRequired) then {
|
||||
rmx_var_crafting_colorScheme select 11
|
||||
} else {
|
||||
if (_itemsNearby >= _itemsRequired) then {
|
||||
rmx_var_crafting_colorScheme select 12
|
||||
} else {
|
||||
rmx_var_crafting_colorScheme select 13
|
||||
};
|
||||
};
|
||||
_ingredientCTRL lbSetColor [_idx,_lbColor];
|
||||
|
||||
} forEach _recipes;
|
||||
};
|
||||
if !(_usedIn isEqualTo []) then {
|
||||
_ingredientCTRL lbAdd "";
|
||||
_idx = _ingredientCTRL lbAdd (rmx_var_crafting_colorScheme select 9 select 0);
|
||||
_ingredientCTRL lbSetColor [_idx,(rmx_var_crafting_colorScheme select 9 select 1)];
|
||||
|
||||
{
|
||||
if !(typeName _x isEqualTo typeName []) then {_x = [_x,1]};
|
||||
_data = ([(_cfg >> (_x select 0))] call EPOCH_crafting_getConfig) select 0;
|
||||
_idx = _ingredientCTRL lbAdd format ["%2 x %1",(_data select 1),_x select 1];
|
||||
_ingredientCTRL lbSetPictureRight [_idx,(_data select 2)];
|
||||
_ingredientCTRL lbSetData [_idx, (_data select 1)];
|
||||
_ingredientCTRL lbSetColor [_idx,(rmx_var_crafting_colorScheme select 14)];
|
||||
_ingredientCTRL lbSetTooltip [_idx,"Double click to search for this item"];
|
||||
} forEach _usedIn;
|
||||
};
|
||||
_STdesc ctrlSetStructuredText (composeText [(_ingredientData select 3),parseText "<br /><br />",parseText(_ingredientData select 14)]);
|
||||
|
||||
_3DCTRL ctrlSetModel (_ingredientData select 4);
|
||||
_3DCTRL ctrlSetPosition (_ingredientData select 10);
|
||||
_3DCTRL ctrlSetModelScale (_ingredientData select 11);
|
||||
rmx_var_3dCtrlSpin_Vector = (_ingredientData select 12);
|
||||
|
||||
ctrlSetFocus _ingredientCTRL;
|
||||
(rmx_var_crafting_ctrl_Interact select 2) progressSetPosition 0;
|
||||
|
||||
//Crafting quantity math
|
||||
rmx_var_craftQTY = if !(_nearbyCount isEqualTo []) then {
|
||||
private ["_c","_p","_r","_arr"];
|
||||
_c = 1e39; //infinite
|
||||
{
|
||||
_p = _x select 0;
|
||||
_r = _x select 2;
|
||||
if (_p < _r) exitWith {_c = 0};
|
||||
_c = _c min (_p / _r);
|
||||
} forEach _nearbyCount;
|
||||
floor _c
|
||||
} else { 0 };
|
||||
|
||||
true call EPOCH_crafting_checkResources;
|
||||
|
||||
if (ctrlShown (rmx_var_crafting_ctrl_DEV select 0)) then {
|
||||
call rmx_fnc_crafting3DPosText;
|
||||
(rmx_var_crafting_ctrl_DEV select 6) ctrlSetText str (_ingredientData select 11); //scale
|
||||
(rmx_var_crafting_ctrl_DEV select 10) ctrlSetText str (_ingredientData select 12); //vector
|
||||
};
|
||||
|
||||
true
|
@ -0,0 +1,32 @@
|
||||
private ["_recipeCTRL","_STdesc","_lbColor","_playerGear"];
|
||||
|
||||
_recipeCTRL = rmx_var_crafting_ctrl_main select 0;
|
||||
_STdesc = rmx_var_crafting_ctrl_main select 2;
|
||||
_lbColor = rmx_var_crafting_colorScheme select 10;
|
||||
|
||||
lbClear _recipeCTRL;
|
||||
_playerGear = (magazines player) + (items player) + (weapons player);
|
||||
{
|
||||
_idx = if (_x select 0 in _playerGear) then {
|
||||
_y = _x select 0;
|
||||
_idx = _recipeCTRL lbAdd format (["%1x %2",({_x == _y}count _playerGear),(_x select 1)]);
|
||||
_recipeCTRL lbSetColor [_idx,_lbColor];
|
||||
_idx
|
||||
} else {
|
||||
_recipeCTRL lbAdd (_x select 1)
|
||||
};
|
||||
_recipeCTRL lbSetPictureRight [_idx,(_x select 2)];
|
||||
_recipeCTRL lbSetData [_idx,(_x select 0)];
|
||||
} forEach rmx_var_crafting_SearchConfigData;
|
||||
|
||||
_STdesc ctrlSetStructuredText composeText
|
||||
[
|
||||
parseText "<t color='#FD7F30'>Search: <t color='#FFFFFF'>Find recipe, X to clear.</t><br />",
|
||||
parseText "<t color='#FD7F30'>Recipes: <t color='#FFFFFF'>Select an item to craft.</t><br />",
|
||||
parseText "<t color='#FD7F30'>Ingredients: <t color='#FFFFFF'>Items required to craft.</t><br />",
|
||||
parseText "<t color='#FD7F30'>Quantity: <t color='#FFFFFF'>Move slider to set amount.</t><br />",
|
||||
parseText "<br /><t color='#E1FD70'>TIP: <t color='#FFFFFF'>Double click an item inside ingredients list to find recipe for it.</t><br />",
|
||||
parseText "<br /><t color='#FD7F30'>www: <t color='#FFFFFF'><a href='http://epochmod.com/'>EpochMod.com</a></t>"
|
||||
];
|
||||
|
||||
true
|
@ -0,0 +1,7 @@
|
||||
private ["_idx","_txt"];
|
||||
|
||||
_idx = lbCurSel (rmx_var_crafting_ctrl_main select 1);
|
||||
_txt = (rmx_var_crafting_ctrl_main select 1) lbData _idx;
|
||||
(rmx_var_crafting_ctrl_Interact select 4) ctrlSetText _txt;
|
||||
|
||||
true
|
@ -0,0 +1,9 @@
|
||||
|
||||
params ["_ctrl","_first","_second",["_speed",0.5]];
|
||||
|
||||
_ctrl ctrlSetPosition _first;
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetPosition _second;
|
||||
_ctrl ctrlCommit _speed;
|
||||
|
||||
true
|
@ -0,0 +1,22 @@
|
||||
private ["_recipes","_nearObjects","_near","_out","_player","_recipe","_cP","_cN"];
|
||||
params ["_recipes"];
|
||||
|
||||
_nearObjects = nearestObjects [position player,["WeaponHolder","LandVehicle","Air"],10];
|
||||
|
||||
_near = []; _out = [];
|
||||
{
|
||||
_near append magazineCargo _x;
|
||||
_near append itemCargo _x;
|
||||
_near append weaponCargo _x;
|
||||
} forEach _nearObjects;
|
||||
|
||||
_player = (magazines player) + (items player) + (weapons player);
|
||||
|
||||
{
|
||||
_recipe = if (typeName _x isEqualTo "STRING") then {[_x,1]} else {_x};
|
||||
_cP = {_x == (_recipe select 0)} count _player;
|
||||
_cN = {_x == (_recipe select 0)} count _near;
|
||||
_out pushBack [_cP, _cN, _recipe select 1];
|
||||
} forEach _recipes;
|
||||
|
||||
_out
|
@ -0,0 +1,46 @@
|
||||
private ["_arr","_type","_check","_dist","_cnt","_inflamed","_alive","_nearObjects","_result"];
|
||||
_arr = param [3,[2,""]];
|
||||
_type = _arr select 0;
|
||||
_check = _arr select 1;
|
||||
_dist = param [4,0];
|
||||
_cnt = param [5,1];
|
||||
_inflamed = param [6,0];
|
||||
_alive = param [7,0];
|
||||
_result = true;
|
||||
|
||||
switch (_type) do {
|
||||
case 0:
|
||||
{
|
||||
private ["_test1","_test2","_find"];
|
||||
_nearObjects = nearestObjects [player, [], _dist];
|
||||
_test1 = 0;
|
||||
{
|
||||
_test2 = _x;
|
||||
_find = {(str _x find _test2) != -1} count _nearObjects;
|
||||
_test1 = _test1 + _find;
|
||||
} forEach _check;
|
||||
|
||||
_result = (_cnt <= _test1);
|
||||
};
|
||||
case 1:
|
||||
{
|
||||
_nearObjects = nearestObjects [player, _check, _dist];
|
||||
_result = (_cnt <= (count _nearObjects));
|
||||
};
|
||||
};
|
||||
|
||||
if !(_result) exitWith {false}; //not enough objects
|
||||
|
||||
if (_inflamed > 0) then {
|
||||
_countOnFire = 0;
|
||||
_countOnFire = {inflamed _x} count _nearObjects;
|
||||
_result = (_cnt <= _countOnFire);
|
||||
};
|
||||
if !(_result) exitWith {false};
|
||||
|
||||
if (_alive > 0) then {
|
||||
_countAlive = 0;
|
||||
_countAlive = {alive _x} count _nearObjects;
|
||||
_result = (_cnt <= _countAlive);
|
||||
};
|
||||
_result
|
@ -0,0 +1,93 @@
|
||||
private ["_in","_out","_cfg","_selection","_nearbyArr"];
|
||||
params [["_in",false,[true]]];
|
||||
|
||||
//Defines
|
||||
_out = true;
|
||||
_cfg = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
_selection = lbCurSel (rmx_var_crafting_ctrl_main select 0);
|
||||
_nearbyArr = rmx_var_crafting_SearchConfigData select _selection select 8;
|
||||
|
||||
//check nearby resources only, requires false args
|
||||
if !(_in) exitWith {
|
||||
if !(_nearbyArr isEqualTo []) then { //just to be safe
|
||||
{
|
||||
_out = _x call EPOCH_crafting_checkNearby;
|
||||
if !(_out) exitWith {};
|
||||
} forEach _nearbyArr;
|
||||
};
|
||||
_out
|
||||
};
|
||||
|
||||
disableSerialization;
|
||||
private ["_display","_ncGroup","_ncCFrame","_ncRFrame","_ncRText","_ncCLB"];
|
||||
_display = findDisplay 77700;
|
||||
|
||||
if (isNil "rmx_var_crafting_ctrl_GROUP") then {
|
||||
rmx_var_crafting_ctrl_GROUP = [_display ctrlCreate ["rmx_rscControlsGroup",77821]];
|
||||
} else {
|
||||
ctrlDelete (rmx_var_crafting_ctrl_GROUP select 0);
|
||||
rmx_var_crafting_ctrl_GROUP = [_display ctrlCreate ["rmx_rscControlsGroup",77821]];
|
||||
};
|
||||
|
||||
_ncCFrame = rmx_var_crafting_ctrl_main select 3;
|
||||
_ncRFrame = rmx_var_crafting_ctrl_main select 4;
|
||||
_ncRText = rmx_var_crafting_ctrl_main select 5;
|
||||
_ncCLB = rmx_var_crafting_ctrl_main select 1;
|
||||
_ncGroup = rmx_var_crafting_ctrl_GROUP select 0;
|
||||
|
||||
if !(_nearbyArr isEqualTo []) then {
|
||||
_ncGroup ctrlShow true;
|
||||
_ncRFrame ctrlShow true;
|
||||
_ncRText ctrlShow true;
|
||||
|
||||
private ["_chck","_color","_img","_imgParsed","_cnt","_countTxt","_txt","_stText","_count","_h","_animSpeed"];
|
||||
{
|
||||
private "_ctrl";
|
||||
_chck = _x call EPOCH_crafting_checkNearby;
|
||||
if !(_chck) then {_out = false};
|
||||
|
||||
_color = if (_chck) then {"#00FF00"} else {"#FF0000"};
|
||||
|
||||
_img = if (_x select 1 isEqualTo "") then {
|
||||
format ["\x\addons\a3_epoch_code\Data\UI\crafting\%1_%2.paa",(_x select 2),_chck]
|
||||
} else {
|
||||
format ["%1%2_%3",(_x select 1),(_x select 2),_chck]
|
||||
};
|
||||
|
||||
_imgParsed = parseText format ["<t size='2'><img image='%1' /></t>",_img];
|
||||
|
||||
_cnt = if ((_x select 5) < 1) then {1} else {_x select 5};
|
||||
_countTxt = if (_cnt isEqualTo 1) then {""} else {format ["%1x",_cnt]};
|
||||
_txt = parseText format ["<t size='1' color='%1'> %3 %2 %4m</t>",_color,(_x select 0),_countTxt,(_x select 4)];
|
||||
|
||||
_stText = composeText [_imgParsed,_txt];
|
||||
|
||||
_ctrl = _display ctrlCreate ["RscStructuredText", -(77800 + _forEachIndex),_ncGroup];
|
||||
_ctrl ctrlSetPosition [0,(0.08 * _forEachIndex),0.3,0.08];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetStructuredText _stText;
|
||||
} forEach _nearbyArr;
|
||||
|
||||
_count = 8 min (count _nearbyArr); //maximum 8 of resources displayed
|
||||
_h = 0.08 * _count;
|
||||
_animSpeed = 0.2;
|
||||
|
||||
[_ncGroup, [0.3,1,0.3,0], [0.3,(1-_h),0.3,_h], _animSpeed] call EPOCH_crafting_animate;
|
||||
[_ncCFrame, [0.3,0,0.3,1], [0.3,0,0.3,(1-_h)], _animSpeed] call EPOCH_crafting_animate;
|
||||
[_ncRFrame, [0.3,1,0.3,0], [0.3,(0.96-_h),0.3,(_h + 0.04)],_animSpeed] call EPOCH_crafting_animate;
|
||||
[_ncRText, [0.3,0.96,0.3,0.04], [0.3,(0.96-_h),0.3,0.04], _animSpeed] call EPOCH_crafting_animate;
|
||||
[_ncCLB, [0.3,0.04,0.3,0.96], [0.3,0.04,0.3,(0.96-_h)], _animSpeed] call EPOCH_crafting_animate;
|
||||
|
||||
} else {
|
||||
_ncGroup ctrlShow false;
|
||||
_ncRFrame ctrlShow false;
|
||||
_ncRText ctrlShow false;
|
||||
|
||||
_ncCLB ctrlSetPosition [0.3,0.04,0.3,0.96];
|
||||
_ncCLB ctrlCommit 0;
|
||||
|
||||
_ncCFrame ctrlSetPosition [0.3,0,0.3,1];
|
||||
_ncCFrame ctrlCommit 0;
|
||||
};
|
||||
|
||||
_out
|
@ -0,0 +1,37 @@
|
||||
params ["_cfg"];
|
||||
|
||||
rmx_var_crafting_colorScheme = getArray (_cfg >> "colorScheme");
|
||||
|
||||
//frames
|
||||
for "_i" from 0 to 5 do {
|
||||
(rmx_var_crafting_ctrl_colorScheme select _i) ctrlSetTextColor (rmx_var_crafting_colorScheme select 16);
|
||||
};
|
||||
|
||||
//recipes
|
||||
(rmx_var_crafting_ctrl_colorScheme select 6) ctrlSetText (rmx_var_crafting_colorScheme select 3 select 0);
|
||||
(rmx_var_crafting_ctrl_colorScheme select 6) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 3 select 1);
|
||||
(rmx_var_crafting_ctrl_main select 0) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 18);
|
||||
|
||||
//ingredients
|
||||
(rmx_var_crafting_ctrl_colorScheme select 7) ctrlSetText (rmx_var_crafting_colorScheme select 4 select 0);
|
||||
(rmx_var_crafting_ctrl_colorScheme select 7) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 4 select 1);
|
||||
(rmx_var_crafting_ctrl_main select 0) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 19);
|
||||
|
||||
//preview
|
||||
(rmx_var_crafting_ctrl_colorScheme select 8) ctrlSetText (rmx_var_crafting_colorScheme select 5 select 0);
|
||||
(rmx_var_crafting_ctrl_colorScheme select 8) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 5 select 1);
|
||||
|
||||
//resources
|
||||
(rmx_var_crafting_ctrl_colorScheme select 9) ctrlSetText (rmx_var_crafting_colorScheme select 6 select 0);
|
||||
(rmx_var_crafting_ctrl_colorScheme select 9) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 6 select 1);
|
||||
|
||||
//description
|
||||
(rmx_var_crafting_ctrl_colorScheme select 10) ctrlSetText (rmx_var_crafting_colorScheme select 7 select 0);
|
||||
(rmx_var_crafting_ctrl_colorScheme select 10) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 7 select 1);
|
||||
(rmx_var_crafting_ctrl_main select 2) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 17);
|
||||
|
||||
//background
|
||||
(rmx_var_crafting_ctrl_colorScheme select 11) ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 15);
|
||||
|
||||
//QTY
|
||||
(rmx_var_crafting_ctrl_Interact select 3) ctrlSetTextColor (rmx_var_crafting_colorScheme select 23);
|
@ -0,0 +1,73 @@
|
||||
//dialog closed
|
||||
if (!rmx_var_craftingENABLED || !rmx_var_craftingLOOPS) exitWith {rmx_var_craftInProgress = false;};
|
||||
|
||||
//cancel craft button
|
||||
if (rmx_var_craftInProgress) exitWith {rmx_var_craftInProgress = false;};
|
||||
|
||||
//close button
|
||||
if (rmx_var_craftQTYOut isEqualTo 0) exitWith {closeDialog 0;};
|
||||
|
||||
//craft button
|
||||
[] spawn {
|
||||
|
||||
private ["_fnc_UILock","_itemCraftTime","_selection","_craftItem","_item","_itemName","_itemCraftTime","_itemRecipeItems","_itemType","_hasNearby","_canCraft","_wH","_nearByHolder","_wHPos"];
|
||||
disableSerialization;
|
||||
|
||||
_fnc_UILock = {
|
||||
private "_lock";
|
||||
_lock = param [0,true];
|
||||
(rmx_var_crafting_ctrl_main select 0) ctrlEnable _lock;
|
||||
(rmx_var_crafting_ctrl_main select 1) ctrlEnable _lock;
|
||||
(rmx_var_crafting_ctrl_Interact select 1) ctrlEnable _lock;
|
||||
(rmx_var_crafting_ctrl_Interact select 4) ctrlEnable _lock;
|
||||
};
|
||||
|
||||
rmx_var_craftInProgress = true;
|
||||
|
||||
_selection = lbCurSel (rmx_var_crafting_ctrl_main select 0);
|
||||
_craftItem = rmx_var_crafting_SearchConfigData select _selection;
|
||||
_item = _craftItem select 0;
|
||||
_itemName = _craftItem select 1;
|
||||
_itemCraftTime = _craftItem select 6;
|
||||
_itemRecipeItems = _craftItem select 7;
|
||||
_itemType = _craftItem select 13;
|
||||
|
||||
for "_c" from 1 to rmx_var_craftQTYOut do {
|
||||
false call _fnc_UILock;
|
||||
_hasNearby = false call EPOCH_crafting_checkResources;
|
||||
|
||||
_canCraft = [format ["Crafting: %1, %2 seconds",_itemName,_itemCraftTime],_itemCraftTime] call EPOCH_crafting_progress;
|
||||
|
||||
if !(_canCraft && _hasNearby && rmx_var_craftingLOOPS) exitWith {}; //{hint "Crafting canceled";};
|
||||
|
||||
if (player canAdd _item) then { //Puts in a weaponholder nearby if can't add to inventory
|
||||
{
|
||||
for "_r" from 1 to (_x select 1) do {
|
||||
player removeItem (_x select 0); //removes any type of item, but only if not in special slots
|
||||
};
|
||||
} forEach _itemRecipeItems;
|
||||
|
||||
player addItem _item; //adds any type of item, but does not assign
|
||||
|
||||
} else {
|
||||
_wH = objNull;
|
||||
_nearByHolder = nearestObjects [position player,["groundWeaponHolder"],3]; //TODO: adjust best range to reuse existing holders
|
||||
if (_nearByHolder isEqualTo []) then {
|
||||
_wHPos = player modelToWorld [0,1,0];
|
||||
if (surfaceIsWater _wHPos) then { //should work anywhere, even on water
|
||||
_wHPos = ASLToATL _wHPos;
|
||||
};
|
||||
_wH = createVehicle ["groundWeaponHolder",_wHPos, [], 0, "CAN_COLLIDE"];
|
||||
|
||||
} else {
|
||||
_wH = _nearByHolder select 0;
|
||||
};
|
||||
_wh addItemCargoGlobal [_item,1];
|
||||
};
|
||||
call EPOCH_crafting_LB_defaults;
|
||||
call EPOCH_crafting_LB_click;
|
||||
};
|
||||
true call _fnc_UILock;
|
||||
rmx_var_craftInProgress = false;
|
||||
};
|
||||
true
|
@ -0,0 +1,67 @@
|
||||
disableSerialization;
|
||||
private "_display";
|
||||
|
||||
_display = findDisplay 77700;
|
||||
|
||||
rmx_var_crafting_ctrl_DEVMisc = [_display displayCtrl 77701,_display displayCtrl 77702];
|
||||
|
||||
rmx_var_crafting_ctrl_DEV = [];
|
||||
{rmx_var_crafting_ctrl_DEV set [count rmx_var_crafting_ctrl_DEV,_display displayCtrl _x];} count
|
||||
|
||||
[
|
||||
77703, //bckgrnd
|
||||
77704, //btn setScale
|
||||
77705, //btn export
|
||||
77706, //btn setpos
|
||||
77707, //btn +
|
||||
77708, //btn - //5
|
||||
77709, //edit scale
|
||||
77710, //edit x
|
||||
77711, //edit z
|
||||
77712, //edit y
|
||||
77713, //edit vector //10
|
||||
77714,77715,77716,77717,77718,77719 //text
|
||||
|
||||
];
|
||||
|
||||
rmx_var_crafting_ctrl_Interact = [];
|
||||
{rmx_var_crafting_ctrl_Interact set [count rmx_var_crafting_ctrl_Interact,_display displayCtrl _x];} count
|
||||
|
||||
[
|
||||
77801, //btn craft
|
||||
77802, //btn clear
|
||||
77803, //progress bar
|
||||
77804, //progress QTY
|
||||
77810 //Search field
|
||||
];
|
||||
|
||||
rmx_var_crafting_ctrl_main = [];
|
||||
{rmx_var_crafting_ctrl_main set [count rmx_var_crafting_ctrl_main,_display displayCtrl _x];} count
|
||||
|
||||
[
|
||||
77811, //LB recipes
|
||||
77812, //LB ingredients
|
||||
77820, //ST description
|
||||
77831, //craft frame
|
||||
77833, //resource frame
|
||||
77843 //resource text
|
||||
];
|
||||
|
||||
rmx_var_crafting_ctrl_colorScheme = [];
|
||||
{rmx_var_crafting_ctrl_colorScheme set [count rmx_var_crafting_ctrl_colorScheme,_display displayCtrl _x];} count
|
||||
|
||||
[
|
||||
77830,77831,77832,77833,77834,77835, //frames
|
||||
77840, //recipes
|
||||
77841, //ingredients
|
||||
77842, //preview
|
||||
77843, //resources
|
||||
77844, //description
|
||||
77800 //background
|
||||
];
|
||||
|
||||
rmx_var_craftingENABLED = true;
|
||||
rmx_var_craftingLOOPS = true;
|
||||
|
||||
|
||||
true
|
@ -0,0 +1,95 @@
|
||||
private ["_mainDevBtn","_3DCTRL"];
|
||||
_mainDevBtn = rmx_var_crafting_ctrl_DEVMisc select 1;
|
||||
_3DCTRL = rmx_var_crafting_ctrl_DEVMisc select 0;
|
||||
|
||||
switch (ctrlShown (rmx_var_crafting_ctrl_DEV select 0)) do {
|
||||
case true: //off
|
||||
{
|
||||
disableSerialization;
|
||||
{
|
||||
_x ctrlShow false;
|
||||
} forEach rmx_var_crafting_ctrl_DEV;
|
||||
_mainDevBtn ctrlSetText "x\addons\a3_epoch_code\Data\UI\dev_mode_off.paa";
|
||||
_3DCTRL ctrlEnable false;
|
||||
_3DCTRL ctrlRemoveAllEventHandlers "MouseButtonUp";
|
||||
rmx_fnc_craftingExport = nil;
|
||||
rmx_fnc_crafting3DPosText = nil;
|
||||
rmx_fnc_crafting3DMove = nil;
|
||||
};
|
||||
case false: //on
|
||||
{
|
||||
disableSerialization;
|
||||
{
|
||||
_x ctrlShow true;
|
||||
} forEach rmx_var_crafting_ctrl_DEV;
|
||||
_mainDevBtn ctrlSetText "x\addons\a3_epoch_code\Data\UI\dev_mode_on.paa";
|
||||
|
||||
private ["_devBtnSetScale","_devBtnExport","_devBtnSetPos"];
|
||||
_devBtnSetScale = rmx_var_crafting_ctrl_DEV select 1;
|
||||
_devBtnExport = rmx_var_crafting_ctrl_DEV select 2;
|
||||
_devBtnSetPos = rmx_var_crafting_ctrl_DEV select 3;
|
||||
|
||||
_3DCTRL ctrlEnable true;
|
||||
|
||||
rmx_fnc_craftingExport = {
|
||||
private ["_ctrlPos","_curLB"];
|
||||
|
||||
_ctrlPos = ctrlPosition (rmx_var_crafting_ctrl_DEVMisc select 0);
|
||||
_curLB = rmx_var_crafting_ctrl_main select 0;
|
||||
|
||||
//weird UI bug that outputs 1.49012e-008 if setting vector too fast
|
||||
if (rmx_var_3dCtrlSpin_Vector < 0.1 && rmx_var_3dCtrlSpin_Vector > -0.1) then {rmx_var_3dCtrlSpin_Vector = 0;};
|
||||
|
||||
diag_log format [
|
||||
"
|
||||
<< Exporting settings for [%1] >>
|
||||
|
||||
previewPosition[] = {%2,%3,%4};
|
||||
previewScale = %5;
|
||||
previewVector = %6;
|
||||
",
|
||||
_curLB lbData (lbCurSel _curLB),
|
||||
_ctrlPos select 0,
|
||||
_ctrlPos select 1,
|
||||
_ctrlPos select 2,
|
||||
ctrlModelScale (rmx_var_crafting_ctrl_DEVMisc select 0),
|
||||
rmx_var_3dCtrlSpin_Vector
|
||||
];
|
||||
true
|
||||
};
|
||||
rmx_fnc_crafting3DPosText = {
|
||||
private ["_3DPos","_devX","_devZ","_devY"];
|
||||
disableSerialization;
|
||||
_devX = rmx_var_crafting_ctrl_DEV select 7;
|
||||
_devZ = rmx_var_crafting_ctrl_DEV select 8;
|
||||
_devY = rmx_var_crafting_ctrl_DEV select 9;
|
||||
_3DPos = ctrlPosition (rmx_var_crafting_ctrl_DEVMisc select 0);
|
||||
|
||||
_devX ctrlSetText str (_3DPos select 0);
|
||||
_devZ ctrlSetText str (_3DPos select 1);
|
||||
_devY ctrlSetText str (_3DPos select 2);
|
||||
true
|
||||
};
|
||||
rmx_fnc_crafting3DMove = {
|
||||
private ["_devX","_devZ","_devY"];
|
||||
disableSerialization;
|
||||
_devX = rmx_var_crafting_ctrl_DEV select 7;
|
||||
_devZ = rmx_var_crafting_ctrl_DEV select 8;
|
||||
_devY = rmx_var_crafting_ctrl_DEV select 9;
|
||||
(rmx_var_crafting_ctrl_DEVMisc select 0) ctrlSetPosition [(call compile (ctrlText _devX)),(call compile (ctrlText _devZ)),(call compile (ctrlText _devY))];
|
||||
true
|
||||
};
|
||||
|
||||
_3DCTRL ctrlSetEventHandler ["MouseButtonUp","call rmx_fnc_crafting3DPosText;"];
|
||||
|
||||
_devBtnSetScale buttonSetAction
|
||||
"
|
||||
(rmx_var_crafting_ctrl_DEVMisc select 0) ctrlSetModelScale ( call compile ctrlText (rmx_var_crafting_ctrl_DEV select 6));
|
||||
";
|
||||
|
||||
_devBtnExport buttonSetAction "call rmx_fnc_craftingExport";
|
||||
|
||||
_devBtnSetPos buttonSetAction "call rmx_fnc_crafting3DMove;";
|
||||
|
||||
};
|
||||
};
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
Receives array of CONFIGS
|
||||
Returns array of items pulled
|
||||
*/
|
||||
|
||||
private
|
||||
[
|
||||
"_arrIn","_type0","_type1","_type2","_type3","_out","_cName","_arr","_cDisplayName","_cPicture","_cDescShort","_cModel","_cPriority",
|
||||
"_cCTime","_cRecipeArr","_cNearbyArr","_cUsedInArr","_cPreviewArr","_cPreviewScale","_cPreviewVector","_cDescFull","_cType"
|
||||
];
|
||||
|
||||
_arrIn = param [0,[0]];
|
||||
if !(typeName (_arrIn select 0) isEqualTo "CONFIG") exitWith {[]};
|
||||
|
||||
_type0 = []; _type1 = []; _type2 = []; _type3 = []; _out = [];
|
||||
{
|
||||
_cName = configName _x;
|
||||
|
||||
//overrides
|
||||
_arr = [_cName,["displayName","picture","descriptionShort","model"]] call epoch_itemData;
|
||||
|
||||
_cDisplayName = if (isText (_x >> "displayName")) then {getText (_x >> "displayName")} else {_arr select 0};
|
||||
_cPicture = if (isText (_x >> "picture")) then {getText (_x >> "picture")} else {_arr select 1};
|
||||
_cDescShort = if (isText (_x >> "descriptionShort")) then {getText (_x >> "descriptionShort")} else {_arr select 2};
|
||||
_cModel = if (isText (_x >> "model")) then {getText (_x >> "model")} else {_arr select 3};
|
||||
|
||||
//Basic cfg data
|
||||
_cPriority = getNumber (_x >> "priority");
|
||||
_cCTime = getNumber (_x >> "craftTime");
|
||||
_cRecipeArr = getArray (_x >> "recipe");
|
||||
_cNearbyArr = getArray (_x >> "nearby");
|
||||
_cUsedInArr = getArray (_x >> "usedIn");
|
||||
_cPreviewArr = getArray (_x >> "previewPosition");
|
||||
_cPreviewScale = getNumber (_x >> "previewScale");
|
||||
_cPreviewVector = getNumber (_x >> "previewVector");
|
||||
_cDescFull = getText (_x >> "descriptionFull");
|
||||
_cType = getNumber (_x >> "type");
|
||||
|
||||
switch (_cPriority) do {
|
||||
case 0: {_type0 pushBack [_cName,_cDisplayName,_cPicture,_cDescShort,_cModel,_cPriority,_cCTime,_cRecipeArr,_cNearbyArr,_cUsedInArr,_cPreviewArr,_cPreviewScale,_cPreviewVector,_cType,_cDescFull]};
|
||||
case 1: {_type1 pushBack [_cName,_cDisplayName,_cPicture,_cDescShort,_cModel,_cPriority,_cCTime,_cRecipeArr,_cNearbyArr,_cUsedInArr,_cPreviewArr,_cPreviewScale,_cPreviewVector,_cType,_cDescFull]};
|
||||
case 2: {_type2 pushBack [_cName,_cDisplayName,_cPicture,_cDescShort,_cModel,_cPriority,_cCTime,_cRecipeArr,_cNearbyArr,_cUsedInArr,_cPreviewArr,_cPreviewScale,_cPreviewVector,_cType,_cDescFull]};
|
||||
case 3: {_type3 pushBack [_cName,_cDisplayName,_cPicture,_cDescShort,_cModel,_cPriority,_cCTime,_cRecipeArr,_cNearbyArr,_cUsedInArr,_cPreviewArr,_cPreviewScale,_cPreviewVector,_cType,_cDescFull]};
|
||||
};
|
||||
|
||||
} forEach _this;
|
||||
|
||||
_out append _type0;
|
||||
_out append _type1;
|
||||
_out append _type2;
|
||||
_out append _type3;
|
||||
|
||||
_out
|
@ -0,0 +1,127 @@
|
||||
if (rmx_var_craftingENABLED) exitWith {false};
|
||||
disableSerialization;
|
||||
private ["_in","_cfg","_3DCTRL","_recipeCTRL","_recipeConfigs"];
|
||||
_in = param [0,""];
|
||||
|
||||
createDialog "rmx_craftingUI";
|
||||
call EPOCH_crafting_ctrl_collector;
|
||||
|
||||
//Var defs
|
||||
rmx_var_craftQTY = 0;
|
||||
rmx_var_craftQTYOut = 0;
|
||||
rmx_var_craftInProgress = false;
|
||||
|
||||
//Defines
|
||||
_cfg = 'CfgCrafting' call EPOCH_returnConfig;
|
||||
|
||||
_cfg call EPOCH_crafting_colorScheme;
|
||||
|
||||
_3DCTRL = rmx_var_crafting_ctrl_DEVMisc select 0;
|
||||
_recipeCTRL = rmx_var_crafting_ctrl_main select 0;
|
||||
|
||||
//First Launch
|
||||
_recipeConfigs = "true" configClasses _cfg;
|
||||
_recipeConfigs deleteRange [0,6]; //delete main templates as they are not real items
|
||||
|
||||
rmx_var_crafting_FullConfigData = _recipeConfigs call EPOCH_crafting_getConfig;
|
||||
rmx_var_crafting_SearchConfigData = rmx_var_crafting_FullConfigData;
|
||||
|
||||
[_3DCTRL] call Epoch_3DctrlSpin;
|
||||
_3DCTRL ctrlEnable false;
|
||||
|
||||
call EPOCH_crafting_LB_defaults; //Default state
|
||||
|
||||
//Basic EH setup
|
||||
if (getNumber (_cfg >> "DeveloperMode") > 0) then {
|
||||
private "_ctrlDevMain";
|
||||
_ctrlDevMain = rmx_var_crafting_ctrl_DEVMisc select 1;
|
||||
_ctrlDevMain ctrlEnable true;
|
||||
_ctrlDevMain ctrlShow true;
|
||||
};
|
||||
rmx_var_crafting_progressClicked = false;
|
||||
|
||||
ctrlSetFocus _recipeCTRL;
|
||||
|
||||
//puts arguments into search field
|
||||
if (typeName _in isEqualTo "STRING") then {
|
||||
if (count _in > 0) then { //required, empty string crashes game for some reason
|
||||
(rmx_var_crafting_ctrl_Interact select 4) ctrlSetText _in;
|
||||
};
|
||||
};
|
||||
|
||||
//Post Processing
|
||||
rmx_var_crafting_PP_CC = ["colorCorrections",11] call epoch_postProcessCreate;
|
||||
rmx_var_crafting_PP_DB = ["dynamicBlur",11] call epoch_postProcessCreate;
|
||||
|
||||
[rmx_var_crafting_PP_CC, 0, [1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0.296494,1]] call epoch_postprocessAdjust;
|
||||
[rmx_var_crafting_PP_DB, 1, [1]] call epoch_postprocessAdjust;
|
||||
|
||||
//Custom textures
|
||||
|
||||
|
||||
//Manages quantity slider
|
||||
[] spawn {
|
||||
private ["_pos","_txt"];
|
||||
while {rmx_var_craftingLOOPS} do {
|
||||
_pos = progressPosition (rmx_var_crafting_ctrl_Interact select 2);
|
||||
rmx_var_craftQTYOut = round (_pos * rmx_var_craftQTY);
|
||||
_txt = format ["[%1/%2]",rmx_var_craftQTYOut,rmx_var_craftQTY];
|
||||
(rmx_var_crafting_ctrl_Interact select 3) ctrlSetText _txt;
|
||||
};
|
||||
};
|
||||
|
||||
//Search box
|
||||
[] spawn {
|
||||
disableSerialization;
|
||||
private ["_searchCTRL","_searchTextTEMP"];
|
||||
_searchCTRL = rmx_var_crafting_ctrl_Interact select 4;
|
||||
_searchTextTEMP = "";
|
||||
|
||||
|
||||
while {rmx_var_craftingLOOPS} do {
|
||||
|
||||
uiSleep 0.5; //speed of search, should be less or equal to unload delay
|
||||
|
||||
if !(_searchTextTEMP isEqualTo (ctrlText _searchCTRL)) then {
|
||||
rmx_var_crafting_SearchConfigData = [];
|
||||
{
|
||||
_idx = toLower(_x select 1) find toLower (ctrlText _searchCTRL);
|
||||
if !(_idx isEqualTo -1) then {
|
||||
rmx_var_crafting_SearchConfigData pushBack _x;
|
||||
};
|
||||
} forEach rmx_var_crafting_FullConfigData;
|
||||
|
||||
_searchTextTEMP = ctrlText _searchCTRL;
|
||||
call EPOCH_crafting_LB_defaults;
|
||||
(rmx_var_crafting_ctrl_main select 0) lbSetCurSel 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
//Craft button states
|
||||
[] spawn {
|
||||
private ["_btn","_btn_cancel","_btn_craft","_btn_close"];
|
||||
disableSerialization;
|
||||
_btn = rmx_var_crafting_ctrl_Interact select 0;
|
||||
_btn ctrlEnable true;
|
||||
|
||||
_btn_cancel = rmx_var_crafting_colorScheme select 0;
|
||||
_btn_craft = rmx_var_crafting_colorScheme select 1;
|
||||
_btn_close = rmx_var_crafting_colorScheme select 2;
|
||||
|
||||
while {rmx_var_craftingLOOPS} do {
|
||||
uiSleep 0.1;
|
||||
|
||||
if (rmx_var_craftInProgress) then {
|
||||
_btn ctrlSetText _btn_cancel;
|
||||
} else {
|
||||
if (rmx_var_craftQTYOut > 0) then {
|
||||
_btn ctrlSetText _btn_craft;
|
||||
} else {
|
||||
_btn ctrlSetText _btn_close;
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
true
|
@ -0,0 +1,49 @@
|
||||
if !(isNil "rmx_var_craftProgressInProgress") exitWith {false};
|
||||
rmx_var_craftProgressInProgress = true;
|
||||
|
||||
private ["_txt","_time","_posY","_posX","_w","_h","_idc","_stColor","_out","_display","_ctrl","_ctrl2","_ctrl3","_tick"];
|
||||
disableSerialization;
|
||||
_txt = param [0,"No text"];
|
||||
_time = param [1,1];
|
||||
_posY = param [2,1.05];
|
||||
_posX = param [3,0.25];
|
||||
|
||||
_w = 0.5;
|
||||
_h = 0.05;
|
||||
_idc = 10100;
|
||||
|
||||
_stColor = rmx_var_crafting_colorScheme select 22;
|
||||
_out = true;
|
||||
|
||||
_layer = str _idc call BIS_fnc_rscLayer;
|
||||
_layer cutRsc ["rmx_CraftingProgress","PLAIN",0,false];
|
||||
_display = uiNamespace getVariable "rmx_var_CraftingProgressDisplay";
|
||||
|
||||
_ctrl = _display ctrlCreate ["RscProgress",_idc + 1];
|
||||
_ctrl ctrlSetPosition [_posX,_posY,_w,_h];
|
||||
_ctrl ctrlCommit 0;
|
||||
_ctrl ctrlSetTextColor (rmx_var_crafting_colorScheme select 20);
|
||||
|
||||
_ctrl2 = _display ctrlCreate ["RscStructuredText",_idc + 2];
|
||||
_ctrl2 ctrlSetPosition [_posX + _w / 2 - (count _txt / 2) / 100,_posY + 0.005,_w,_h];
|
||||
_ctrl2 ctrlCommit 0;
|
||||
_ctrl2 ctrlSetStructuredText parseText format ["<t shadow='1'><t color='%2'>%1</t>",_txt,_stColor];
|
||||
|
||||
_ctrl3 = _display ctrlCreate ["RscText",_idc + 3];
|
||||
_ctrl3 ctrlSetPosition [_posX,_posY,_w,_h];
|
||||
_ctrl3 ctrlCommit 0;
|
||||
_ctrl3 ctrlSetBackgroundColor (rmx_var_crafting_colorScheme select 21);
|
||||
|
||||
_tick = diag_tickTime;
|
||||
|
||||
while {((diag_tickTime - _tick) < _time && rmx_var_craftingLOOPS) } do {
|
||||
if !(rmx_var_craftInProgress) exitWith {_out = false;};
|
||||
_ctrl progressSetPosition ((diag_tickTime - _tick)/_time);
|
||||
|
||||
uiSleep 0.01; //smoothness vs performance
|
||||
};
|
||||
|
||||
_layer cutRsc ["Default","PLAIN"];
|
||||
rmx_var_craftProgressInProgress = nil;
|
||||
|
||||
_out
|
@ -0,0 +1,28 @@
|
||||
rmx_var_craftingLOOPS = false;
|
||||
rmx_var_3dCtrlSpin = false;
|
||||
//post processing fade to defaults
|
||||
[rmx_var_crafting_PP_CC, 1, [1,1,0,0,0,0,0,0,0,0,1,0,0,0,0]] call epoch_postprocessAdjust;
|
||||
[rmx_var_crafting_PP_DB, 1, [0]] call epoch_postprocessAdjust;
|
||||
|
||||
[] spawn {
|
||||
uiSleep 1; //delay required for loops to finish
|
||||
rmx_var_crafting_PP_CC call epoch_postprocessDestroy;
|
||||
rmx_var_crafting_PP_DB call epoch_postprocessDestroy;
|
||||
rmx_var_crafting_PP_CC = nil;
|
||||
rmx_var_crafting_PP_DB = nil;
|
||||
rmx_var_crafting_ctrl_DEV = nil;
|
||||
rmx_var_crafting_ctrl_Interact = nil;
|
||||
rmx_var_crafting_ctrl_main = nil;
|
||||
rmx_var_crafting_ctrl_colorScheme = nil;
|
||||
rmx_var_crafting_ctrl_GROUP = nil;
|
||||
rmx_var_crafting_progressClicked = nil;
|
||||
rmx_var_crafting_SearchConfigData = nil;
|
||||
rmx_var_craftQTY = nil;
|
||||
rmx_var_craftQTYOut = nil;
|
||||
rmx_var_craftInProgress = nil;
|
||||
rmx_var_crafting_colorScheme = nil;
|
||||
|
||||
rmx_var_craftingENABLED = false;
|
||||
};
|
||||
|
||||
true
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
Adjusts PP created elsewhere (or by epoch_postprocessCreate)
|
||||
|
||||
Params: [Handle, speed integer, Effect array]
|
||||
|
||||
Usage: [_handle, 2, [1]] call epoch_postprocessAdjust; //apply dynamic blur with animation of 2 seconds
|
||||
[_handle, _speed, _effect] call epoch_postprocessAdjust;
|
||||
|
||||
Default Engine values:
|
||||
colorCorrections >> [1,1,0,0,0,0,0,0,0,0,1,0,0,0,0]
|
||||
chromAberration >> [0,0,false]
|
||||
filmGrain >> [0,0,1,0,0,false]
|
||||
radialBlur >> [0,0,0,0]
|
||||
wetdistortion >> [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
||||
dynamicBlur >> [0]
|
||||
colorInversion >> [0,0,0]
|
||||
*/
|
||||
|
||||
_handle = param [0,666];
|
||||
_animSpeed = param [1,666];
|
||||
_effect = param [2,[]];
|
||||
|
||||
//needed because PPs have variable array sizes
|
||||
if ((_handle isEqualTo 666) || (_animSpeed isEqualTo 666) || (_effect isEqualTo [])) exitWith {hint "Wrong PPAdjust input"; false};
|
||||
|
||||
_handle ppEffectEnable true;
|
||||
_handle ppEffectAdjust _effect;
|
||||
_handle ppEffectCommit _animSpeed;
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
Make sure to use handle to be able to delete effect later
|
||||
|
||||
Params: [Name of PP, Priority]
|
||||
|
||||
Usage: _handle = ["dynamicBlur",10] call epoch_postProcessCreate;
|
||||
_handle = "dynamicBlur" call epoch_postProcessCreate; //not recommended, but ok for tests
|
||||
*/
|
||||
|
||||
private ["_effect","_prioIn","_priority","_hndl"];
|
||||
|
||||
_effect = param [0,""];
|
||||
_prioIn = param [1,0];
|
||||
|
||||
if (_effect isEqualTo "") exitWith {hint "Wrong PPcreate input"; false};
|
||||
if !(_effect in ["colorCorrections","chromAberration","filmGrain","radialBlur","wetdistortion","dynamicBlur","colorInversion"]) exitWith {hint format ["Wrong effect - %1",_effect]; false};
|
||||
|
||||
_priority = switch (_effect) do {
|
||||
case "colorCorrections": {1501};
|
||||
case "chromAberration": {201};
|
||||
case "filmGrain": {2001};
|
||||
case "radialBlur": {101};
|
||||
case "wetdistortion": {301};
|
||||
case "dynamicBlur": {401};
|
||||
case "colorInversion": {2501};
|
||||
};
|
||||
|
||||
_hndl = ppEffectCreate [_effect,(_priority + _prioIn)];
|
||||
_hndl ppEffectEnable false;
|
||||
|
||||
_hndl
|
||||
|
@ -0,0 +1,13 @@
|
||||
/*
|
||||
Destroys single or multiple post process effects
|
||||
|
||||
Params: single handle or array of handles
|
||||
|
||||
Usage: _handle call epoch_postprocessDestroy; //single
|
||||
[_handle] call epoch_postprocessDestroy; //array of handles
|
||||
[_hndl_1,_hndl_2,_hndl_3,_hndl_4] call epoch_postprocessDestroy; //array of singles
|
||||
*/
|
||||
|
||||
if (typeName _this != typeName []) then {_this = [_this]};
|
||||
|
||||
ppEffectDestroy _this;
|
@ -1,4 +1,5 @@
|
||||
//Variables
|
||||
EPOCH_CraftingItem = "";
|
||||
EPOCH_ESP_TARGETS = [];
|
||||
EPOCH_ESPMAP_TARGETS = [];
|
||||
EPOCH_ESPGROUPS = [];
|
||||
|
70
Sources/epoch_config/Configs/CfgDynamicMenu-EXAMPLE.hpp
Normal file
70
Sources/epoch_config/Configs/CfgDynamicMenu-EXAMPLE.hpp
Normal file
@ -0,0 +1,70 @@
|
||||
//IMPORTANT - do not add semicolons here, script takes care of it
|
||||
|
||||
class cfgDynamicMenu
|
||||
{
|
||||
/** GLOBAL VARIABLES ONLY - removed automatically **/
|
||||
class variableDefines //must be global, nil when menu closes
|
||||
{
|
||||
dyna_cursorTarget = "cursorTarget";
|
||||
dyna_typeOfCursorTarget = "typeOf cursorTarget";
|
||||
|
||||
dyna_player = "vehicle player";
|
||||
dyna_itemsPlayer = "items player";
|
||||
};
|
||||
|
||||
/** BUTTON DEFINES **/
|
||||
class dynaButtons
|
||||
{
|
||||
class example /** Single button **/
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = "hint 'example button'";
|
||||
icon = "#(rgb,8,8,3)color(1,1,1,0.5)";
|
||||
tooltip = "example button";
|
||||
};
|
||||
|
||||
class example2: example /** Single button from inherited values above **/
|
||||
{
|
||||
icon = "#(rgb,8,8,3)color(1,0,1,0.5)";
|
||||
action = "systemchat 'example button 2'";
|
||||
};
|
||||
|
||||
/** ------------------------------ **/
|
||||
// Category works like a folder, when clicked, it replaces current buttons
|
||||
// with fresh batch from it's own subclasses
|
||||
/** ------------------------------ **/
|
||||
|
||||
class category_example /** Category button, add subclasses to enable this mode**/
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = "hint 'Category button 1'"; //can be empty for categories
|
||||
icon = "#(rgb,8,8,3)color(1,0,0,0.5)";
|
||||
tooltip = "Category button 1";
|
||||
|
||||
class category_subclass_example /** Same config as the rest **/
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = "hint 'example category button 1'";
|
||||
icon = "#(rgb,8,8,3)color(1,1,1,0.5)";
|
||||
tooltip = "example button";
|
||||
};
|
||||
|
||||
class category_subclass_example2: category_subclass_example /** Subclass inheritance **/
|
||||
{
|
||||
action = "hint 'example category button 2'";
|
||||
};
|
||||
};
|
||||
class category_example2: category_example /** Category Inheritance, includes all buttons **/
|
||||
{
|
||||
action = "hint 'Category button 2'";
|
||||
tooltip = "Category button 2";
|
||||
class category_subclass_example2 /** REPLACE inherited button **/
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = "hint 'inherited category button replaced'";
|
||||
icon = "#(rgb,8,8,3)color(1,1,1,0.5)";
|
||||
tooltip = "replaced button";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
84
Sources/epoch_config/Configs/CfgDynamicMenu.hpp
Normal file
84
Sources/epoch_config/Configs/CfgDynamicMenu.hpp
Normal file
@ -0,0 +1,84 @@
|
||||
//IMPORTANT - do not add semicolons here, script takes care of it
|
||||
|
||||
class cfgDynamicMenu
|
||||
{
|
||||
/** GLOBAL VARIABLES ONLY - removed automatically **/
|
||||
class variableDefines //must be global, nil when menu closes
|
||||
{
|
||||
dyna_displayWhitelist[] = {};
|
||||
dyna_cursorTarget = "cursorTarget";
|
||||
dyna_typeOfCursorTarget = "typeOf cursorTarget";
|
||||
|
||||
dyna_player = "vehicle player";
|
||||
dyna_itemsPlayer = "items player";
|
||||
};
|
||||
|
||||
/** BUTTON DEFINES **/
|
||||
class dynaButtons
|
||||
{
|
||||
|
||||
/*
|
||||
class close_Button_if_dialog_used_instead
|
||||
{
|
||||
condition = "true";
|
||||
action = "findDisplay 66600 closeDisplay 1";
|
||||
icon = "#(rgb,8,8,3)color(1,0,0,1)";
|
||||
tooltip = "CLOSE";
|
||||
};
|
||||
*/
|
||||
class player_craftMenu
|
||||
{
|
||||
condition = "true";
|
||||
action = "call EPOCH_crafting_load;";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_maintain.paa";
|
||||
tooltip = "Crafting V2";
|
||||
};
|
||||
class player_inspect
|
||||
{
|
||||
condition = "true";
|
||||
action = "hint 'Detective is on the case'";
|
||||
icon = "x\addons\a3_epoch_code\Data\UI\buttons\player_inspect.paa";
|
||||
tooltip = "Examine";
|
||||
};
|
||||
|
||||
class CAT_pad
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = ""; //can be empty for categories
|
||||
icon = "#(rgb,8,8,3)color(1,0,1,0.5)";
|
||||
tooltip = "Main cat";
|
||||
|
||||
class SUB_CAT_test1
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = ""; //can be empty for categories
|
||||
icon = "#(rgb,8,8,3)color(1,1,1,0.5)";
|
||||
tooltip = "Subcat1";
|
||||
|
||||
class SUB_CAT_test2
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = ""; //can be empty for categories
|
||||
icon = "#(rgb,8,8,3)color(1,0,0,0.5)";
|
||||
tooltip = "Subcat2";
|
||||
|
||||
class SUB_CAT_test3
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = ""; //can be empty for categories
|
||||
icon = "#(rgb,8,8,3)color(0,1,1,0.5)";
|
||||
tooltip = "Subcat3";
|
||||
|
||||
class SUB_CAT_test4
|
||||
{
|
||||
condition = "true"; //must be value
|
||||
action = ""; //can be empty for categories
|
||||
icon = "#(rgb,8,8,3)color(0,1,0,0.5)";
|
||||
tooltip = "Subcat4";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -1,341 +1,742 @@
|
||||
/*
|
||||
nearby[] =
|
||||
{
|
||||
{
|
||||
"Fire", //Name of field, anything
|
||||
"", //image folder path (ie "\x\addons\a3_epoch_code\Data\UI\crafting\"), empty for Epoch default
|
||||
"fire", //image prefix, suffix will be added by code. 2 possible suffixes: [_true.paa, _false.paa]
|
||||
{1,{"ALL"}}, //ARRAY of p3D {0,{"filename.p3d","filename.p3d"}} or ARRAY of logic classes {1,{"AIR","LAND","className"}}. Integer to switch array mode
|
||||
3, //distance to check in meters
|
||||
1, //count
|
||||
1, //BOOL: object has to be on fire
|
||||
0 //BOOL: object has to be alive (not destroyed)
|
||||
};
|
||||
};
|
||||
|
||||
//Can be multiple requirements like this, example requires both fire and water (unlimited, but requires mouse scroll if more than 8 elements):
|
||||
nearby[] =
|
||||
{
|
||||
{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0},
|
||||
{"Water source","","water",{0,{"barrelwater_f.p3d", "water_source_f.p3d", "pumpa.p3d", "misc_wellpump.p3d"}},3,1,0,0}
|
||||
};
|
||||
*/
|
||||
|
||||
class CfgCrafting
|
||||
{
|
||||
class Default
|
||||
DeveloperMode = 0; //used for 3D preview position and scale, set to 0 for live server!
|
||||
|
||||
//You can customize basic theme of crafting UI here:
|
||||
colorScheme[] =
|
||||
{
|
||||
usedIn[] = {};
|
||||
recipe[] = {};
|
||||
nearby[] = {};
|
||||
"\x\addons\a3_epoch_code\Data\UI\crafting\cancel.paa",
|
||||
"\x\addons\a3_epoch_code\Data\UI\crafting\craft.paa",
|
||||
"\x\addons\a3_epoch_code\Data\UI\crafting\close.paa",
|
||||
|
||||
{"Recipes", {0,0,0,0.8}},
|
||||
{"Ingredients", {0,0,0,0.8}},
|
||||
{"Preview", {1,0.6,0.01,0.8}},
|
||||
{"Resources", {0,0,0,0.8}},
|
||||
{"Description", {0,0,0,0.8}},
|
||||
{" -- Requires -- ", {0.99,0.53,0.03,1}},
|
||||
{" -- Used in -- ", {0.99,0.53,0.03,1}},
|
||||
|
||||
{0,1,0,1}, //Recipe LB, item found
|
||||
{0,1,0,1}, //Ingredients LB, Has items on player
|
||||
{1,1,0,1}, //Ingredients LB, Has items nearby
|
||||
{1,0,0,1}, //Ingredients LB, Missing items
|
||||
{0.5,0.5,0.5,1},//Ingredients LB, Items used in...
|
||||
{0,0,0,0.1}, //Background color
|
||||
{0,0,0,1}, //Frame color
|
||||
{0,0,0,0}, //description ST
|
||||
{0,0,0,0}, //Recipe LB
|
||||
{0,0,0,0}, //Ingredients LB
|
||||
|
||||
{1,1,1,1}, //progress bar
|
||||
{0,0,0,0.3}, //progress background
|
||||
"#FC170F", //progress text HTML color
|
||||
|
||||
{1,0.6,0.01,1} //QTY color
|
||||
};
|
||||
|
||||
/** --------- Don't edit --------- **/
|
||||
class Default //className, any object or item
|
||||
{
|
||||
craftTime = 1; //time it takes to craft
|
||||
|
||||
recipe[] = {}; //nested arrays, {{"item", 1}};
|
||||
nearby[] = {}; //nearby requirements - fire, water source, object
|
||||
usedIn[] = {}; //item is an ingredient
|
||||
|
||||
previewPosition[] = {0.8125,1,0.285}; //XzY
|
||||
previewScale = 1;
|
||||
previewVector = 0; //vector rotation multiplier
|
||||
|
||||
priority = 0; //Recipe list priority, items with 0 are on top followed by order in config file.
|
||||
type = 0; //After crafting, item is added: [0 - to inventory], [1 - in weapon holder], [2 - as vehicle]
|
||||
descriptionFull = ""; //Structured text, added on new line after descriptionShort
|
||||
|
||||
/** --------- Config Overrides --------- **/
|
||||
//displayName = "";
|
||||
//picture = "";
|
||||
//descriptionShort = "";
|
||||
//model = "\x\addons\a3_epoch_assets\models\logo.p3d";
|
||||
};
|
||||
|
||||
/** --------- Main templates --------- **/
|
||||
class WeaponHolder: Default //Placed inside weaponholder in front of player (?)
|
||||
{
|
||||
priority = 0;
|
||||
type = 1;
|
||||
offset[] = {0,1,0}; //local space
|
||||
craftTime = 10;
|
||||
descriptionFull = "Demo: Can be used if player's inventory space is an issue";
|
||||
};
|
||||
class Vehicle: Default //Spawned in front of player (?)
|
||||
{
|
||||
priority = 0;
|
||||
type = 2;
|
||||
offset[] = {0,5,0}; //local space
|
||||
craftTime = 10;
|
||||
descriptionFull = "Demo: Should be used for vehicles only";
|
||||
};
|
||||
class Kit: Default //base building kits gets higher priority on the list
|
||||
{
|
||||
priority = 1;
|
||||
descriptionFull = "Base building material";
|
||||
craftTime = 4;
|
||||
};
|
||||
class Item: Default //Goes into inventory
|
||||
{
|
||||
priority = 2;
|
||||
craftTime = 2;
|
||||
};
|
||||
class Part: Default //Looted part - an ingredient for other items, can't be crafted
|
||||
{
|
||||
priority = 3;
|
||||
descriptionFull = "<t color='#FD7F30'>This item has no recipe, but is a part used for other recipes</t>";
|
||||
};
|
||||
|
||||
/** --------- RECIPES BELOW --------- **/
|
||||
|
||||
// items
|
||||
class ItemCoolerE : Default
|
||||
class ItemCoolerE : Part
|
||||
{
|
||||
// usedIn[] = { "ItemCooler0", "ItemCooler1", "ItemCooler2", "ItemCooler3", "ItemCooler4" };
|
||||
usedIn[] = { "ItemCooler0", "ItemCooler1", "ItemCooler2", "ItemCooler3", "ItemCooler4" };
|
||||
previewPosition[] = {0.795709,1,0.415296};
|
||||
previewScale = 0.8;
|
||||
previewVector = 0;
|
||||
};
|
||||
class ItemCooler0 : Default
|
||||
class ItemCooler0 : Item
|
||||
{
|
||||
recipe[] = { "ItemCoolerE", { "SnakeMeat_EPOCH", 2 }, "sweetcorn_epoch" };
|
||||
previewPosition[] = {0.795709,1,0.415296};
|
||||
previewScale = 0.8;
|
||||
previewVector = 0;
|
||||
};
|
||||
class ItemCooler1 : Default
|
||||
class ItemCooler1 : Item
|
||||
{
|
||||
recipe[] = { "ItemCoolerE", { "CookedRabbit_EPOCH", 2 }, "sweetcorn_epoch" };
|
||||
previewPosition[] = {0.795709,1,0.415296};
|
||||
previewScale = 0.8;
|
||||
previewVector = 0;
|
||||
};
|
||||
class ItemCooler2 : Default
|
||||
class ItemCooler2 : Item
|
||||
{
|
||||
recipe[] = { "ItemCoolerE", "CookedChicken_EPOCH", "sweetcorn_epoch" };
|
||||
previewPosition[] = {0.795709,1,0.415296};
|
||||
previewScale = 0.8;
|
||||
previewVector = 0;
|
||||
};
|
||||
class ItemCooler3 : Default
|
||||
class ItemCooler3 : Item
|
||||
{
|
||||
recipe[] = { "ItemCoolerE", "CookedGoat_EPOCH", "sweetcorn_epoch" };
|
||||
previewPosition[] = {0.795709,1,0.415296};
|
||||
previewScale = 0.8;
|
||||
previewVector = 0;
|
||||
};
|
||||
class ItemCooler4 : Default
|
||||
class ItemCooler4 : Item
|
||||
{
|
||||
recipe[] = { "ItemCoolerE", "CookedSheep_EPOCH", "sweetcorn_epoch" };
|
||||
previewPosition[] = {0.795709,1,0.415296};
|
||||
previewScale = 0.8;
|
||||
previewVector = 0;
|
||||
};
|
||||
class CircuitParts : Default
|
||||
class sweetcorn_epoch : Part
|
||||
{
|
||||
usedIn[] = {"ItemCooler0","ItemCooler1","ItemCooler2","ItemCooler3","ItemCooler4"};
|
||||
previewPosition[] = {0.799332,1,0.26};
|
||||
previewScale = 2.7;
|
||||
previewVector = 0;
|
||||
};
|
||||
class CircuitParts : Part
|
||||
{
|
||||
usedIn[] = { "EnergyPack", "EnergyPackLg", "KitPlotPole" };
|
||||
previewPosition[] = {0.791044,1,0.256956};
|
||||
previewScale = 2;
|
||||
previewVector = 2.3;
|
||||
};
|
||||
class EnergyPack : Default
|
||||
class EnergyPack : Item
|
||||
{
|
||||
usedIn[] = { "EnergyPackLg" };
|
||||
nearby[] = { { "fire", { "ALL" }, 3, 1, "Fire", "fire" } };
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { { "CircuitParts", 1 }, { "clean_water_epoch", 1 } };
|
||||
previewPosition[] = {0.8,1,0.29};
|
||||
previewScale = 1.75;
|
||||
previewVector = 2.8;
|
||||
};
|
||||
class EnergyPackLg : Default
|
||||
class EnergyPackLg : Item
|
||||
{
|
||||
nearby[] = { { "fire", { "ALL" }, 3, 1, "Fire", "fire" } };
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { { "EnergyPack", 3 }, { "CircuitParts", 1 } };
|
||||
previewPosition[] = {0.8,1,0.29};
|
||||
previewScale = 1.75;
|
||||
previewVector = 2.8;
|
||||
};
|
||||
|
||||
class PartOre : Default
|
||||
class PartOre : Part
|
||||
{
|
||||
usedIn[] = { "ItemScraps" };
|
||||
previewPosition[] = {0.799961,1,0.27};
|
||||
previewScale = 1.25;
|
||||
};
|
||||
class Pelt_EPOCH : Default
|
||||
class Pelt_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "KitTiPi" };
|
||||
previewPosition[] = {0.793741,1,0.274824};
|
||||
previewScale = 0.7;
|
||||
previewVector = 2.2;
|
||||
};
|
||||
class ItemRock : Default
|
||||
class ItemRock : Part
|
||||
{
|
||||
usedIn[] = { "KitFirePlace" , "MeleeMaul", "CrudeHatchet" };
|
||||
previewPosition[] = {0.796998,1,0.35};
|
||||
previewScale = 1.3;
|
||||
};
|
||||
class ItemStick : Default
|
||||
class ItemStick : Item
|
||||
{
|
||||
usedIn[] = { "WoodClub","MeleeMaul", "CrudeHatchet", "KitFirePlace" };
|
||||
recipe[] = { { "WoodLog_EPOCH", 1 } };
|
||||
previewPosition[] = {0.8,1,0.25};
|
||||
previewScale = 0.4;
|
||||
previewVector = 1;
|
||||
};
|
||||
class ItemKiloHemp : Default
|
||||
class ItemKiloHemp : Part
|
||||
{
|
||||
usedIn[] = { "ItemRope" };
|
||||
previewPosition[] = {0.796267,1,0.322762};
|
||||
previewScale = 0.9;
|
||||
previewVector = 1.4;
|
||||
};
|
||||
class ItemRope : Default
|
||||
class ItemRope : Item
|
||||
{
|
||||
usedIn[] = { "WoodClub", "MeleeMaul", "CrudeHatchet" };
|
||||
recipe[] = { { "ItemKiloHemp", 1 } };
|
||||
previewPosition[] = {0.8,1,0.35};
|
||||
previewScale = 4;
|
||||
};
|
||||
class MeleeMaul : Default
|
||||
class MeleeMaul : Item
|
||||
{
|
||||
recipe[] = { { "ItemRock", 1 }, { "ItemStick", 2 }, { "ItemRope", 1 } };
|
||||
previewPosition[] = {0.798975,1,0.300388};
|
||||
previewScale = 0.3;
|
||||
previewVector = -1.8;
|
||||
};
|
||||
class CrudeHatchet : Default
|
||||
class CrudeHatchet : Item
|
||||
{
|
||||
recipe[] = { { "ItemRock", 1 }, { "ItemStick", 1 }, { "ItemRope", 1 } };
|
||||
previewPosition[] = {0.786139,1,0.328525};
|
||||
previewScale = 0.6;
|
||||
};
|
||||
class WoodClub : Default
|
||||
class WoodClub : Item
|
||||
{
|
||||
recipe[] = { { "ItemStick", 2 } };
|
||||
previewPosition[] = {0.799633,1,0.237804};
|
||||
previewScale = 0.35;
|
||||
previewVector = 2.4;
|
||||
};
|
||||
|
||||
class WoodLog_EPOCH : Default
|
||||
class WoodLog_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "PartPlankPack", "ItemStick" };
|
||||
previewPosition[] = {0.800064,1,0.25};
|
||||
previewScale = 0.3;
|
||||
};
|
||||
class MortarBucket : Default
|
||||
class MortarBucket : Part
|
||||
{
|
||||
usedIn[] = {"KitFoundation","KitCinderWall"};
|
||||
previewPosition[] = {0.799442,1,0.426761};
|
||||
previewScale = 0.6;
|
||||
previewVector = 0;
|
||||
};
|
||||
class ItemScraps : Default
|
||||
class ItemScraps : Item
|
||||
{
|
||||
usedIn[] = { "ItemCorrugated" };
|
||||
nearby[] = { { "fire", { "ALL" }, 3, 1, "Fire", "fire" } };
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { { "PartOre", 2 } };
|
||||
previewPosition[] = {0.797144,1,0.309158};
|
||||
previewScale = 1;
|
||||
previewVector = 2.8;
|
||||
};
|
||||
class ItemCorrugated : Default
|
||||
class ItemCorrugated : Item
|
||||
{
|
||||
usedIn[] = {"KitShelf","ItemCorrugatedLg"};
|
||||
nearby[] = { { "fire", { "ALL" }, 3, 1, "Fire", "fire" } };
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { { "ItemScraps", 2 } };
|
||||
previewPosition[] = {0.791088,1,0.300004};
|
||||
previewScale = 0.2;
|
||||
previewVector = 1;
|
||||
};
|
||||
class CinderBlocks : Default
|
||||
class CinderBlocks : Part
|
||||
{
|
||||
usedIn[] = { "KitCinderWall" };
|
||||
previewPosition[] = {0.801866,1,0.35};
|
||||
previewScale = 0.2;
|
||||
};
|
||||
class ItemMixOil : Default
|
||||
class ItemMixOil : Part
|
||||
{
|
||||
usedIn[] = { "CSGAS" };
|
||||
previewPosition[] = {0.802419,1,0.433119};
|
||||
previewScale = 1.5;
|
||||
};
|
||||
class jerrycan_epoch : Default
|
||||
class jerrycan_epoch : Part
|
||||
{
|
||||
usedIn[] = { "CSGAS" };
|
||||
previewPosition[] = {0.802443,1,0.254301};
|
||||
previewScale = 0.6;
|
||||
previewVector = 4.9;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class VehicleRepair : Default
|
||||
class VehicleRepair : Part
|
||||
{
|
||||
usedIn[] = { "VehicleRepairLg" };
|
||||
previewPosition[] = {0.787659,1,0.30098};
|
||||
previewScale = 0.45;
|
||||
previewVector = 1.5;
|
||||
};
|
||||
class VehicleRepairLg : Default
|
||||
class VehicleRepairLg : Item
|
||||
{
|
||||
recipe[] = { "VehicleRepair", "ItemCorrugated" };
|
||||
previewPosition[] = {0.798742,1,0.317871};
|
||||
previewScale = 0.25;
|
||||
previewVector = 0.7;
|
||||
};
|
||||
|
||||
// radios
|
||||
|
||||
class EpochRadio0 : Default // Quartz
|
||||
class EpochRadio0 : Part // Quartz
|
||||
{
|
||||
usedIn[] = { "EpochRadio1" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio1 : Default // Garnet
|
||||
class EpochRadio1 : Item // Garnet
|
||||
{
|
||||
usedIn[] = { "EpochRadio2" };
|
||||
recipe[] = { "EpochRadio0", "ItemGarnet" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio2 : Default // Citrine
|
||||
class EpochRadio2 : Item // Citrine
|
||||
{
|
||||
usedIn[] = { "EpochRadio3" };
|
||||
recipe[] = { "EpochRadio1", "ItemCitrine" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio3 : Default // Amethyst
|
||||
class EpochRadio3 : Item // Amethyst
|
||||
{
|
||||
usedIn[] = { "EpochRadio4" };
|
||||
recipe[] = { "EpochRadio2", "ItemAmethyst" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio4 : Default // Topaz
|
||||
class EpochRadio4 : Item // Topaz
|
||||
{
|
||||
usedIn[] = { "EpochRadio5" };
|
||||
recipe[] = { "EpochRadio3", "ItemTopaz" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio5 : Default // Sapphire
|
||||
class EpochRadio5 : Item // Sapphire
|
||||
{
|
||||
usedIn[] = { "EpochRadio6" };
|
||||
recipe[] = { "EpochRadio4", "ItemSapphire" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio6 : Default // Onyx
|
||||
class EpochRadio6 : Item // Onyx
|
||||
{
|
||||
usedIn[] = { "EpochRadio7" };
|
||||
recipe[] = { "EpochRadio5", "ItemOnyx" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio7 : Default // Emerald
|
||||
class EpochRadio7 : Item // Emerald
|
||||
{
|
||||
usedIn[] = { "EpochRadio8" };
|
||||
recipe[] = { "EpochRadio6", "ItemEmerald" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio8 : Default // Ruby
|
||||
class EpochRadio8 : Item // Ruby
|
||||
{
|
||||
usedIn[] = { "EpochRadio9" };
|
||||
recipe[] = { "EpochRadio7", "ItemRuby" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
class EpochRadio9 : Default // Jade
|
||||
class EpochRadio9 : Item // Jade
|
||||
{
|
||||
recipe[] = { "EpochRadio8", "ItemJade" };
|
||||
model = "\a3\ui_f\objects\Radio.p3d";
|
||||
previewPosition[] = {0.800569,1,0.272473};
|
||||
previewScale = 0.45;
|
||||
previewVector = -3.9;
|
||||
};
|
||||
|
||||
//Gems
|
||||
class ItemGarnet : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio1"};
|
||||
previewPosition[] = {0.801697,1,0.379502};
|
||||
previewScale = 3;
|
||||
};
|
||||
class ItemCitrine : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio2"};
|
||||
previewPosition[] = {0.796925,1,0.285847};
|
||||
previewScale = 3.5;
|
||||
previewVector = 2.7;
|
||||
};
|
||||
class ItemAmethyst : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio3"};
|
||||
previewPosition[] = {0.798082,1,0.277137};
|
||||
previewScale = 3;
|
||||
previewVector = 2.9;
|
||||
};
|
||||
class ItemTopaz : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio4"};
|
||||
previewPosition[] = {0.79555,1,0.393739};
|
||||
previewScale = 3;
|
||||
};
|
||||
class ItemSapphire : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio5"};
|
||||
previewPosition[] = {0.804014,1,0.283865};
|
||||
previewScale = 3;
|
||||
previewVector = 3.3;
|
||||
};
|
||||
class ItemOnyx : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio6"};
|
||||
previewPosition[] = {0.799376,1,0.283337};
|
||||
previewScale = 3;
|
||||
previewVector = 3.1;
|
||||
};
|
||||
class ItemEmerald : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio7"};
|
||||
previewPosition[] = {0.805568,1,0.293134};
|
||||
previewScale = 3;
|
||||
previewVector = 2.5;
|
||||
};
|
||||
class ItemRuby : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio8"};
|
||||
previewPosition[] = {0.79555,1,0.393739};
|
||||
previewScale = 3;
|
||||
};
|
||||
class ItemJade : Part
|
||||
{
|
||||
usedIn[] = {"EpochRadio9"};
|
||||
previewPosition[] = {0.796903,1,0.369781};
|
||||
previewScale = 3;
|
||||
};
|
||||
|
||||
// raw meats
|
||||
class SnakeCarcass_EPOCH : Default
|
||||
class SnakeCarcass_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "SnakeMeat_EPOCH" };
|
||||
previewPosition[] = {0.808621,1,0.238853};
|
||||
previewScale = 0.55;
|
||||
previewVector = 1.8;
|
||||
};
|
||||
class SnakeMeat_EPOCH : Default
|
||||
class SnakeMeat_EPOCH : Item
|
||||
{
|
||||
usedIn[] = { "ItemCooler0" };
|
||||
nearby[] = {{ "fire", {"ALL"}, 3, 1, "Fire","fire" }};
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { "SnakeCarcass_EPOCH" };
|
||||
previewPosition[] = {0.803189,1,0.408752};
|
||||
previewScale = 6;
|
||||
};
|
||||
class RabbitCarcass_EPOCH : Default
|
||||
class RabbitCarcass_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "CookedRabbit_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.340971};
|
||||
previewScale = 1.5;
|
||||
};
|
||||
class CookedRabbit_EPOCH : Default
|
||||
class CookedRabbit_EPOCH : Item
|
||||
{
|
||||
usedIn[] = { "ItemCooler1" };
|
||||
nearby[] = {{ "fire", {"ALL"}, 3, 1, "Fire","fire" }};
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { "RabbitCarcass_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.340971};
|
||||
previewScale = 1.5;
|
||||
};
|
||||
class ChickenCarcass_EPOCH : Default
|
||||
class ChickenCarcass_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "CookedChicken_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.340971};
|
||||
previewScale = 0.9;
|
||||
};
|
||||
class CookedChicken_EPOCH : Default
|
||||
class CookedChicken_EPOCH : Item
|
||||
{
|
||||
usedIn[] = { "ItemCooler2" };
|
||||
nearby[] = {{ "fire", {"ALL"}, 3, 1, "Fire","fire" }};
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { "ChickenCarcass_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.340971};
|
||||
previewScale = 0.9;
|
||||
};
|
||||
class GoatCarcass_EPOCH : Default
|
||||
class GoatCarcass_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "CookedGoat_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.27};
|
||||
previewScale = 0.4;
|
||||
previewVector = 2.1;
|
||||
};
|
||||
class CookedGoat_EPOCH : Default
|
||||
class CookedGoat_EPOCH : Item
|
||||
{
|
||||
usedIn[] = { "ItemCooler3" };
|
||||
nearby[] = {{ "fire", {"ALL"}, 3, 1, "Fire","fire" }};
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { "GoatCarcass_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.27};
|
||||
previewScale = 0.4;
|
||||
previewVector = 2;
|
||||
};
|
||||
class SheepCarcass_EPOCH : Default
|
||||
class SheepCarcass_EPOCH : Part
|
||||
{
|
||||
usedIn[] = { "CookedSheep_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.27};
|
||||
previewScale = 0.4;
|
||||
previewVector = 2.1;
|
||||
};
|
||||
class CookedSheep_EPOCH : Default
|
||||
class CookedSheep_EPOCH : Item
|
||||
{
|
||||
usedIn[] = { "ItemCooler4" };
|
||||
nearby[] = {{ "fire", {"ALL"}, 3, 1, "Fire","fire" }};
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { "SheepCarcass_EPOCH" };
|
||||
previewPosition[] = {0.796141,1,0.27};
|
||||
previewScale = 0.4;
|
||||
previewVector = 2.1;
|
||||
};
|
||||
|
||||
class emptyjar_epoch : Default
|
||||
class emptyjar_epoch : Part
|
||||
{
|
||||
usedIn[] = { "water_epoch" };
|
||||
previewPosition[] = {0.807346,1,0.43035};
|
||||
previewScale = 2.5;
|
||||
};
|
||||
class water_epoch : Default
|
||||
class water_epoch : Item
|
||||
{
|
||||
usedIn[] = { "clean_water_epoch" };
|
||||
nearby[] = {{"noclass", {"barrelwater_f.p3d", "water_source_f.p3d", "pumpa.p3d", "misc_wellpump.p3d"}, 3, 1, "Water Source","water"}};
|
||||
nearby[] = {{"Water source","","water",{0,{"barrelwater_f.p3d", "water_source_f.p3d", "pumpa.p3d", "misc_wellpump.p3d"}},3,1,0,0}};
|
||||
recipe[] = { "emptyjar_epoch" };
|
||||
previewPosition[] = {0.807346,1,0.43035};
|
||||
previewScale = 2.5;
|
||||
};
|
||||
class clean_water_epoch : Default
|
||||
class clean_water_epoch : Item
|
||||
{
|
||||
usedIn[] = { "EnergyPack" };
|
||||
nearby[] = { { "fire", { "ALL" }, 3, 1, "Fire", "fire" } };
|
||||
nearby[] = {{"Fire", "", "fire", {1,{"ALL"}}, 3, 1, 1, 0}};
|
||||
recipe[] = { "water_epoch" };
|
||||
previewPosition[] = {0.807346,1,0.43035};
|
||||
previewScale = 2.5;
|
||||
displayName = "Clean Water";
|
||||
};
|
||||
|
||||
// recipes
|
||||
class CSGAS : Default
|
||||
class CSGAS : Kit
|
||||
{
|
||||
recipe[] = { "ItemMixOil", "jerrycan_epoch" };
|
||||
model = "\x\addons\a3_epoch_assets_2\jerrycan.p3d";
|
||||
previewPosition[] = {0.802443,1,0.254301};
|
||||
previewScale = 0.6;
|
||||
previewVector = 4.9;
|
||||
};
|
||||
class ItemCorrugatedLg : Default
|
||||
class ItemCorrugatedLg : Kit
|
||||
{
|
||||
usedIn[] = { "VehicleRepairLg", "KitPlotPole" };
|
||||
recipe[] = { { "ItemCorrugated", 3 } };
|
||||
previewPosition[] = {0.797491,1,0.32899};
|
||||
previewScale = 0.25;
|
||||
previewVector = 0.5;
|
||||
};
|
||||
class PartPlankPack : Default
|
||||
class PartPlankPack : Kit
|
||||
{
|
||||
usedIn[] = {"KitStudWall","KitWoodFloor","KitWoodFoundation","KitWoodStairs","KitWoodRamp","KitWoodLadder","KitWoodTower","KitTiPi"};
|
||||
recipe[] = {{"WoodLog_EPOCH",2}};
|
||||
previewPosition[] = {0.797837,1,0.288258};
|
||||
previewScale = 0.2;
|
||||
previewVector = 1;
|
||||
};
|
||||
class KitFirePlace : Default
|
||||
class KitFirePlace : Kit
|
||||
{
|
||||
recipe[] = {{"ItemRock",2},{"ItemStick",1}};
|
||||
model = "\x\addons\a3_epoch_assets_2\fireplace.p3d";
|
||||
previewPosition[] = {0.791523,1,0.244987};
|
||||
previewScale = 0.2;
|
||||
previewVector = 1.5;
|
||||
};
|
||||
class KitStudWall : Default
|
||||
class KitStudWall : Kit
|
||||
{
|
||||
recipe[] = {{"PartPlankPack",4}};
|
||||
model = "\x\addons\a3_epoch_assets\models\Wooden_Wall_SIM.p3d";
|
||||
previewPosition[] = {0.797675,1,0.398882};
|
||||
previewScale = 0.07;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitWoodFloor : Default
|
||||
class KitWoodFloor : Kit
|
||||
{
|
||||
usedIn[] = { "KitWoodTower" };
|
||||
recipe[] = {{"PartPlankPack",4}};
|
||||
model = "\x\addons\a3_epoch_assets\models\Wooden_Floor.p3d";
|
||||
previewPosition[] = {0.800198,1,0.262418};
|
||||
previewScale = 0.055;
|
||||
previewVector = 3.6;
|
||||
};
|
||||
class KitWoodLadder : Default
|
||||
class KitWoodLadder : Kit
|
||||
{
|
||||
recipe[] = { { "PartPlankPack", 4 } };
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Ladder\wood_ladder.p3d";
|
||||
previewPosition[] = {0.798736,1,0.441696};
|
||||
previewScale = 0.08;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitWoodRamp : Default
|
||||
class KitWoodRamp : Kit
|
||||
{
|
||||
recipe[] = { { "PartPlankPack", 6 } };
|
||||
model = "\x\addons\a3_epoch_assets\models\Wood_Ramp.p3d";
|
||||
previewPosition[] = {0.799137,1,0.350575};
|
||||
previewScale = 0.05;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitWoodStairs : Default
|
||||
class KitWoodStairs : Kit
|
||||
{
|
||||
recipe[] = {{"PartPlankPack",4}};
|
||||
model = "\x\addons\a3_epoch_assets\models\Wood_stairs.p3d";
|
||||
previewPosition[] = {0.795037,1,0.377922};
|
||||
previewScale = 0.054;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitWoodTower : Default
|
||||
class KitWoodTower : Kit
|
||||
{
|
||||
recipe[] = { {"KitWoodFloor", 1}, { "PartPlankPack", 4 } };
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Tower\Tower\Base_Tower_Frame.p3d";
|
||||
previewPosition[] = {0.800653,1,0.378749};
|
||||
previewScale = 0.05;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitTiPi : Default
|
||||
class KitTiPi : Kit
|
||||
{
|
||||
recipe[] = { { "Pelt_EPOCH", 4 }, { "PartPlankPack", 2 } };
|
||||
model = "\x\addons\a3_epoch_assets\models\tp.p3d";
|
||||
previewPosition[] = {0.801503,1,0.433758};
|
||||
previewScale = 0.06;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitShelf : Default
|
||||
class KitShelf : Kit
|
||||
{
|
||||
recipe[] = {{"ItemCorrugated",3}};
|
||||
model = "\x\addons\a3_epoch_assets\models\shelf.p3d";
|
||||
previewPosition[] = {0.803749,1,0.448515};
|
||||
previewScale = 0.17;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitFoundation : Default
|
||||
class KitFoundation : Kit
|
||||
{
|
||||
recipe[] = {{"MortarBucket",4}};
|
||||
model = "\x\addons\a3_epoch_assets\models\Concrete_Col.p3d";
|
||||
previewPosition[] = {0.796787,1,0.211457};
|
||||
previewScale = 0.047;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitWoodFoundation : Default
|
||||
class KitWoodFoundation : Kit
|
||||
{
|
||||
recipe[] = {{"PartPlankPack",8}};
|
||||
model = "\x\addons\a3_epoch_assets\models\Wood_Col.p3d";
|
||||
previewPosition[] = {0.796787,1,0.211457};
|
||||
previewScale = 0.047;
|
||||
previewVector = 0;
|
||||
};
|
||||
|
||||
class KitCinderWall : Default
|
||||
class KitCinderWall : Kit
|
||||
{
|
||||
recipe[] = {{"CinderBlocks",2},{"MortarBucket",2}};
|
||||
model = "\x\addons\a3_epoch_assets\models\cinder_half.p3d";
|
||||
previewPosition[] = {0.797638,1,0.341915};
|
||||
previewScale = 0.07;
|
||||
previewVector = 0;
|
||||
};
|
||||
class KitPlotPole : Default
|
||||
class KitPlotPole : Kit
|
||||
{
|
||||
recipe[] = {{"ItemCorrugatedLg",2}, {"CircuitParts",2} };
|
||||
model = "\x\addons\a3_epoch_assets\models\jammer.p3d";
|
||||
previewPosition[] = {0.801378,1,0.464834};
|
||||
previewScale = 0.055;
|
||||
previewVector = 0;
|
||||
};
|
||||
|
||||
class ItemSolar : Default
|
||||
class ItemSolar : Part
|
||||
{
|
||||
usedIn[] = { "KitSolarGen" };
|
||||
previewPosition[] = {0.802374,1,0.26};
|
||||
previewScale = 0.19;
|
||||
previewVector = 3.3;
|
||||
|
||||
};
|
||||
class ItemCables : Default
|
||||
class ItemCables : Part
|
||||
{
|
||||
usedIn[] = { "KitSolarGen" };
|
||||
previewPosition[] = {0.802374,1,0.26};
|
||||
previewScale = 0.3;
|
||||
previewVector = 2.8;
|
||||
};
|
||||
class ItemBattery : Default
|
||||
class ItemBattery : Part
|
||||
{
|
||||
usedIn[] = { "KitSolarGen" };
|
||||
previewPosition[] = {0.802374,1,0.276733};
|
||||
previewScale = 0.4;
|
||||
};
|
||||
class KitSolarGen : Default
|
||||
class KitSolarGen : Kit
|
||||
{
|
||||
// TODO recipe
|
||||
recipe[] = { { "ItemSolar", 1 }, { "ItemCables", 1 }, { "ItemBattery", 1 }, { "ItemCorrugatedLg", 2 }, { "CircuitParts", 2 } };
|
||||
model = "\x\addons\a3_epoch_assets_3\CfgVehicles\Solar_Generator_Complete\Solar_generator.p3d";
|
||||
previewPosition[] = {0.804979,1,0.39189};
|
||||
previewScale = 0.11;
|
||||
previewVector = 0;
|
||||
};
|
||||
|
||||
};
|
@ -43,6 +43,9 @@ class CfgAddons
|
||||
#include "\x\addons\a3_epoch_config\Configs\CfgBaseBuilding.hpp"
|
||||
#include "\x\addons\a3_epoch_config\Configs\CfgBuildingLootPos.hpp"
|
||||
|
||||
//gitmerge fix
|
||||
#include "\x\addons\a3_epoch_config\Configs\CfgDynamicMenu.hpp"
|
||||
|
||||
class DefaultEventhandlers;
|
||||
class WeaponFireGun;
|
||||
class WeaponCloudsGun;
|
||||
|
Loading…
Reference in New Issue
Block a user