From 765065aa4aebe8a3e852a83b0ebb3b0cc60e5b9b Mon Sep 17 00:00:00 2001 From: He-Man Date: Tue, 1 Sep 2020 18:44:50 +0200 Subject: [PATCH] Tweaked Trader Filters --- .../traders/EPOCH_NPCTraderMenuFilter.sqf | 24 +++++++++---------- .../traders/EPOCH_startNPCTraderMenu.sqf | 24 +++++++++++-------- Sources/epoch_config/Configs/CfgItemSort.hpp | 16 ++++++------- 3 files changed, 34 insertions(+), 30 deletions(-) diff --git a/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf b/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf index 865931ea..c5622637 100644 --- a/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf +++ b/Sources/epoch_code/compile/traders/EPOCH_NPCTraderMenuFilter.sqf @@ -30,18 +30,18 @@ _LbText = _control lbText _index; _config = 'CfgItemSort' call EPOCH_returnConfig; _MainCategoriearray = getarray (_config >> "MainCategories" >> "Classes"); _FilterArray = []; -if (_index != 0) then { +if !((tolower _LbText) isEqualTo "all") then { if (!_isPlayerFilter && _LbText in [ - format ["Fits %1",(primaryweapon player) call EPOCH_itemDisplayName], - format ["Fits %1",(secondaryweapon player) call EPOCH_itemDisplayName], - format ["Fits %1",(handgunweapon player) call EPOCH_itemDisplayName] + format ["Fits your %1",(primaryweapon player) call EPOCH_itemDisplayName], + format ["Fits your %1",(secondaryweapon player) call EPOCH_itemDisplayName], + format ["Fits your %1",(handgunweapon player) call EPOCH_itemDisplayName] ] ) exitwith { _CheckWpnClass = switch _LbText do { - case (format ["Fits %1",(primaryweapon player) call EPOCH_itemDisplayName]) : {primaryweapon player}; - case (format ["Fits %1",(secondaryweapon player) call EPOCH_itemDisplayName]) : {secondaryweapon player}; - case (format ["Fits %1",(handgunweapon player) call EPOCH_itemDisplayName]) : {handgunweapon player}; + case (format ["Fits your %1",(primaryweapon player) call EPOCH_itemDisplayName]) : {primaryweapon player}; + case (format ["Fits your %1",(secondaryweapon player) call EPOCH_itemDisplayName]) : {secondaryweapon player}; + case (format ["Fits your %1",(handgunweapon player) call EPOCH_itemDisplayName]) : {handgunweapon player}; }; _possiblemags = getarray (configfile >> "CfgWeapons" >> _CheckWpnClass >> "magazines"); _possibleMuzzles = getarray (configfile >> "CfgWeapons" >> _CheckWpnClass >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems"); @@ -54,8 +54,8 @@ if (_index != 0) then { }; { _MainCategorie = _x; - if (_index == (_MainCategorie select 0)) then { - _subcategories = _MainCategorie select 2; + _MainCategorie params ["_category","_subcategories"]; + if (_LbText isEqualTo _category) then { { _SubCategorieItems = getArray (_config >> "SubCatergories" >> _x); { @@ -93,7 +93,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { if (_qty < 1) then { _tooltip = format ["%1 rounds left in Magazine",_rounds]; }; - if (_index == 0 || (tolower _item) in _FilterArray) then { + if ((tolower _LbText) isEqualTo "all" || (tolower _item) in _FilterArray) then { _id = lbAdd [_PlayerItemsBox, (_item call EPOCH_itemDisplayName) + (if (_onHand) then {" (in Hand)"} else {""})]; lbSetData [_PlayerItemsBox, _id, _item]; lbSetValue [_PlayerItemsBox, _id, _rounds]; @@ -124,7 +124,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { { if (local _x) then { _type = typeOf _x; - if (_index == 0 || (tolower _type) in _FilterArray) then { + if ((tolower _LbText) isEqualTo "all" || (tolower _type) in _FilterArray) then { _itemCount = { typeOf _x == _type } count _vehicles; _itemOfferCount = { _x == _type } count _VehOfferArray; if (_itemCount > _itemOfferCount) then { @@ -155,7 +155,7 @@ if !(isNull EPOCH_lastNPCtradeTarget) then { { _x params ["_displayname","_item","_rounds"]; if !(_item isequalto "") then { - if (_index == 0 || (tolower _item) in _FilterArray) then { + if ((tolower _LbText) isEqualTo "all" || (tolower _item) in _FilterArray) then { _maxrnd = 1; _tooltip = ""; if ([_item,"cfgMagazines"] call Epoch_fnc_isAny) then { diff --git a/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf b/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf index aaa7fdcc..6e369660 100644 --- a/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf +++ b/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf @@ -13,7 +13,7 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_code/compile/traders/EPOCH_startNPCTraderMenu.sqf */ -private ["_config","_MainCategoriearray","_target","_slot","_index","_ok","_categorie"]; +private ["_config","_MainCategoriearray","_target","_slot","_index","_ok","_categorie","_idx"]; _config = 'CfgItemSort' call EPOCH_returnConfig; _MainCategoriearray = getarray (_config >> "MainCategories" >> "Classes"); _target = cursorTarget; @@ -46,24 +46,28 @@ if (alive _target) then { if (!_ok) exitWith {}; 9992 cutRsc["EpochGameUI2", "PLAIN", 2, false]; ((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto]; - { - _categorie = _x select 1; - lbAdd [42100,_categorie]; - lbAdd [42101,_categorie] - } forEach _MainCategoriearray; + _idx = 0; if !(primaryweapon player isEqualTo "") then { - _idx = lbAdd [42101,format ["Fits %1",(primaryweapon player) call EPOCH_itemDisplayName]]; + lbAdd [42101,format ["Fits your %1",(primaryweapon player) call EPOCH_itemDisplayName]]; lbSetColor [42101, _idx, [1, 1, 0, 1]]; + _idx = _idx + 1; }; if !(secondaryweapon player isEqualTo "") then { - _idx = lbAdd [42101,format ["Fits %1",(secondaryweapon player) call EPOCH_itemDisplayName]]; + lbAdd [42101,format ["Fits your %1",(secondaryweapon player) call EPOCH_itemDisplayName]]; lbSetColor [42101, _idx, [1, 1, 0, 1]]; + _idx = _idx + 1; }; if !(handgunweapon player isEqualTo "") then { - _idx = lbAdd [42101,format ["Fits %1",(handgunweapon player) call EPOCH_itemDisplayName]]; + lbAdd [42101,format ["Fits your %1",(handgunweapon player) call EPOCH_itemDisplayName]]; lbSetColor [42101, _idx, [1, 1, 0, 1]]; + _idx = _idx + 1; }; + { + _categorie = _x select 0; + lbAdd [42100,_categorie]; + lbAdd [42101,_categorie]; + } forEach _MainCategoriearray; lbSetCurSel [42100, 0]; - lbSetCurSel [42101, 0]; + lbSetCurSel [42101, _idx]; }; }; diff --git a/Sources/epoch_config/Configs/CfgItemSort.hpp b/Sources/epoch_config/Configs/CfgItemSort.hpp index 25bb8803..a52978c7 100644 --- a/Sources/epoch_config/Configs/CfgItemSort.hpp +++ b/Sources/epoch_config/Configs/CfgItemSort.hpp @@ -5,14 +5,14 @@ class CfgItemSort class MainCategories { classes[] = { - {0,"All",{}}, - {1,"Clothings / Backpacks",{"Uniforms","Vests","HeadGear","Backpacks"}}, - {2,"Weapons",{"Weapons","Handweapons"}}, - {3,"Magazines / Attachments",{"Magazines","Attachments"}}, - {4,"Equipment / Explosives",{"Equipment","Explosive","Hand"}}, - {5,"Medical / Food",{"Medical","Food","Drink"}}, - {6,"Items / Basebuilding",{"Basebuilding","Items"}}, - {7,"Vehicles",{"Vehicles_Land","Vehicles_Air","Vehicles_Ship"}} + {"All",{}}, // Category "All" is hardcoded and do not need an array of subcategories! + {"Clothings / Backpacks",{"Uniforms","Vests","HeadGear","Backpacks"}}, + {"Weapons",{"Weapons","Handweapons"}}, + {"Magazines / Attachments",{"Magazines","Attachments"}}, + {"Equipment / Explosives",{"Equipment","Explosive","Hand"}}, + {"Medical / Food",{"Medical","Food","Drink"}}, + {"Items / Basebuilding",{"Basebuilding","Items"}}, + {"Vehicles",{"Vehicles_Land","Vehicles_Air","Vehicles_Ship"}} }; }; class SubCatergories