mirror of
https://github.com/redned70/Trader-Mod.git
synced 2024-08-30 16:52:16 +00:00
Fail-Safe Checks
Adding checks to the trader and vehicle traders ensuring that only mods loaded by the clients are shown on the trader list.
This commit is contained in:
parent
79a37f7c25
commit
710e11e916
@ -126,4 +126,11 @@ class CfgTraders
|
|||||||
{
|
{
|
||||||
#include "TRADERS\CfgTraders.hpp"
|
#include "TRADERS\CfgTraders.hpp"
|
||||||
};
|
};
|
||||||
You can alternatively copy the cfgtraders file content over the traders in the main config, not recommended.
|
You can alternatively copy the cfgtraders file content over the traders in the main config, not recommended.
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
5. IN CONFIG.CPP IN MISSION PBO: Add to the "class CfgExileCustomCode" these lines
|
||||||
|
|
||||||
|
ExileClient_gui_traderDialog_updateStoreListBox = "overrides\ExileClient_gui_traderDialog_updateStoreListBox.sqf";
|
||||||
|
ExileClient_gui_vehicleTraderDialog_updateVehicleListBox = "overrides\ExileClient_gui_vehicleTraderDialog_updateVehicleListBox.sqf";
|
113
overrides/ExileClient_gui_traderDialog_updateStoreListBox.sqf
Normal file
113
overrides/ExileClient_gui_traderDialog_updateStoreListBox.sqf
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/**
|
||||||
|
* ExileClient_gui_traderDialog_updateStoreListBox
|
||||||
|
*
|
||||||
|
* Exile Mod
|
||||||
|
* www.exilemod.com
|
||||||
|
* © 2015 Exile Mod Team
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
|
||||||
|
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
private["_dialog","_categoryDropdown","_currentCategoryIndex","_currentCategory","_storeListBox","_traderConfig","_applyItemClassFilter","_filterToItemClasses","_primaryWeaponCheckbox","_handgunCheckbox","_categoryClass","_categoryItemClassNames","_itemClassName","_showItem","_configName","_indexEntryIndex","_quality","_salesPrice","_requiredRespect","_qualityColor","_popTabColor","_imageColor","_playerMoney","_missingPopTabs","_missingRespect"];
|
||||||
|
disableSerialization;
|
||||||
|
_dialog = uiNameSpace getVariable ["RscExileTraderDialog", displayNull];
|
||||||
|
_categoryDropdown = _dialog displayCtrl 4008;
|
||||||
|
_currentCategoryIndex = lbCurSel _categoryDropdown;
|
||||||
|
_currentCategory = _categoryDropdown lbData _currentCategoryIndex;
|
||||||
|
_storeListBox = _dialog displayCtrl 4009;
|
||||||
|
lbClear _storeListBox;
|
||||||
|
_traderConfig = missionConfigFile >> "CfgTraders" >> ExileClientCurrentTrader;
|
||||||
|
_applyItemClassFilter = false;
|
||||||
|
_filterToItemClasses = [];
|
||||||
|
if !((primaryWeapon player) isEqualTo "") then
|
||||||
|
{
|
||||||
|
_primaryWeaponCheckbox = _dialog displayCtrl 4044;
|
||||||
|
if (cbChecked _primaryWeaponCheckbox) then
|
||||||
|
{
|
||||||
|
_applyItemClassFilter = true;
|
||||||
|
_filterToItemClasses append ((primaryWeapon player) call ExileClient_util_item_getCompatibleWeaponItems);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if !((handgunWeapon player) isEqualTo "") then
|
||||||
|
{
|
||||||
|
_handgunCheckbox = _dialog displayCtrl 4045;
|
||||||
|
if (cbChecked _handgunCheckbox) then
|
||||||
|
{
|
||||||
|
_applyItemClassFilter = true;
|
||||||
|
_filterToItemClasses append ((handgunWeapon player) call ExileClient_util_item_getCompatibleWeaponItems);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
{
|
||||||
|
_categoryClass = _x;
|
||||||
|
if (_currentCategoryIndex isEqualTo 0 || _currentCategory isEqualTo _categoryClass) then
|
||||||
|
{
|
||||||
|
_categoryItemClassNames = getArray(missionConfigFile >> "CfgTraderCategories" >> _categoryClass >> "items");
|
||||||
|
{
|
||||||
|
|
||||||
|
_itemClassName = _x;
|
||||||
|
_showItem = false;
|
||||||
|
_cfgWeapons = isClass(configFile >> "cfgWeapons" >> _itemClassName);
|
||||||
|
_cfgMagazines = isClass(configFile >> "cfgMagazines" >> _itemClassName);
|
||||||
|
if(_cfgMagazines || _cfgWeapons)then
|
||||||
|
{
|
||||||
|
_showItem = true;
|
||||||
|
};
|
||||||
|
if (_applyItemClassFilter) then
|
||||||
|
{
|
||||||
|
_showItem = _itemClassName in _filterToItemClasses;
|
||||||
|
};
|
||||||
|
if (_showItem) then
|
||||||
|
{
|
||||||
|
_configName = _x call ExileClient_util_gear_getConfigNameByClassName;
|
||||||
|
_indexEntryIndex = _storeListBox lbAdd getText(configFile >> _configName >> _itemClassName >> "displayName");
|
||||||
|
_quality = getNumber(missionConfigFile >> "CfgExileArsenal" >> _itemClassName >> "quality");
|
||||||
|
_salesPrice = getNumber(missionConfigFile >> "CfgExileArsenal" >> _itemClassName >> "price");
|
||||||
|
_requiredRespect = getNumber(missionConfigFile >> "CfgTrading" >> "requiredRespect" >> format["Level%1",_quality]);
|
||||||
|
_qualityColor = [1, 1, 1, 1];
|
||||||
|
_popTabColor = [1, 1, 1, 1];
|
||||||
|
_imageColor = [1, 1, 1, 1];
|
||||||
|
switch (_quality) do
|
||||||
|
{
|
||||||
|
case 2: { _qualityColor = [0.62, 0.87 ,0.23, 1]; };
|
||||||
|
case 3: { _qualityColor = [0, 0.78, 0.92, 1]; };
|
||||||
|
case 4: { _qualityColor = [0.62, 0.27, 0.58, 1]; };
|
||||||
|
case 5: { _qualityColor = [1, 0.7, 0.09, 1]; };
|
||||||
|
case 6: { _qualityColor = [0.93, 0, 0.48, 1]; };
|
||||||
|
};
|
||||||
|
_playerMoney = player getVariable ["ExileMoney", 0];
|
||||||
|
if (_salesPrice > _playerMoney) then
|
||||||
|
{
|
||||||
|
_popTabColor = [0.91, 0, 0, 0.6];
|
||||||
|
_missingPopTabs = _salesPrice - _playerMoney;
|
||||||
|
_storeListBox lbSetTooltip [_indexEntryIndex, format["Missing %1 Pop Tabs", _missingPopTabs]];
|
||||||
|
};
|
||||||
|
if (_requiredRespect > ExileClientPlayerScore) then
|
||||||
|
{
|
||||||
|
_qualityColor set [3, 0.3];
|
||||||
|
_popTabColor set [3, 0.3];
|
||||||
|
_imageColor set [3, 0.3];
|
||||||
|
_missingRespect = _requiredRespect - ExileClientPlayerScore;
|
||||||
|
_storeListBox lbSetTooltip [_indexEntryIndex, format["Missing %1 Respect", _missingRespect]];
|
||||||
|
};
|
||||||
|
if ((_salesPrice > _playerMoney) && (_requiredRespect > ExileClientPlayerScore)) then
|
||||||
|
{
|
||||||
|
_storeListBox lbSetTooltip [_indexEntryIndex, format["Missing %1 Pop Tabs & %2 Respect", _missingPopTabs, _missingRespect]];
|
||||||
|
};
|
||||||
|
_storeListBox lbSetData [_indexEntryIndex, _itemClassName];
|
||||||
|
_storeListBox lbSetColor [_indexEntryIndex, _qualityColor];
|
||||||
|
_storeListBox lbSetPicture [_indexEntryIndex, getText(configFile >> _configName >> _itemClassName >> "picture")];
|
||||||
|
_storeListBox lbSetPictureColor [_indexEntryIndex, _imageColor];
|
||||||
|
_storeListBox lbSetTextRight [_indexEntryIndex, format["%1", _salesPrice]];
|
||||||
|
_storeListBox lbSetColorRight [_indexEntryIndex, _popTabColor];
|
||||||
|
_storeListBox lbSetPictureRight [_indexEntryIndex, "exile_assets\texture\ui\poptab_trader_ca.paa"];
|
||||||
|
_storeListBox lbSetPictureRightColor [_indexEntryIndex, _popTabColor];
|
||||||
|
_storeListBox lbSetValue [_indexEntryIndex, _quality * 100000 + _salesPrice];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
forEach _categoryItemClassNames;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
forEach getArray(_traderConfig >> "categories");
|
||||||
|
lbSortByValue _storeListBox;
|
||||||
|
true
|
@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* ExileClient_gui_vehicleTraderDialog_updateVehicleListBox
|
||||||
|
*
|
||||||
|
* Exile Mod
|
||||||
|
* www.exilemod.com
|
||||||
|
* © 2015 Exile Mod Team
|
||||||
|
*
|
||||||
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
|
||||||
|
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
private["_dialog","_categoryClasses","_itemListControl","_categoryClass","_categoryVehicleClassNames","_className","_salesPrice","_indexEntryIndex","_playerMoney","_quality","_requiredRespect","_qualityColor","_popTabColor","_missingPopTabs","_missingRespect"];
|
||||||
|
disableSerialization;
|
||||||
|
_dialog = uiNameSpace getVariable ["RscExileVehicleTraderDialog", displayNull];
|
||||||
|
_categoryClasses = _this;
|
||||||
|
if (_categoryClasses select 0 == "") then
|
||||||
|
{
|
||||||
|
_categoryClasses = getArray(missionConfigFile >> "CfgTraders" >> ExileClientCurrentTrader >> "categories");
|
||||||
|
};
|
||||||
|
_itemListControl = _dialog displayCtrl 4001;
|
||||||
|
lbClear _itemListControl;
|
||||||
|
{
|
||||||
|
_categoryClass = _x;
|
||||||
|
_categoryVehicleClassNames = getArray(missionConfigFile >> "CfgTraderCategories" >> _categoryClass >> "items");
|
||||||
|
{
|
||||||
|
_className = _x;
|
||||||
|
_showVehicle = false;
|
||||||
|
_showVehicle = isClass(configFile >> "cfgVehicles" >> _className);
|
||||||
|
if(_showVehicle)then
|
||||||
|
{
|
||||||
|
_salesPrice = getNumber(missionConfigFile >> "CfgExileArsenal" >> _className >> "price");
|
||||||
|
_indexEntryIndex = _itemListControl lbAdd getText(configFile >> "CfgVehicles" >> _className >> "displayName");
|
||||||
|
_playerMoney = player getVariable ["ExileMoney", 0];
|
||||||
|
_quality = getNumber(missionConfigFile >> "CfgExileArsenal" >> _className >> "quality");
|
||||||
|
_requiredRespect = getNumber(missionConfigFile >> "CfgTrading" >> "requiredRespect" >> format["Level%1",_quality]);
|
||||||
|
_qualityColor = [1, 1, 1, 1];
|
||||||
|
_popTabColor = [1, 1, 1, 1];
|
||||||
|
switch (_quality) do
|
||||||
|
{
|
||||||
|
case 2: { _qualityColor = [0.62, 0.87 ,0.23, 1]; };
|
||||||
|
case 3: { _qualityColor = [0, 0.78, 0.92, 1]; };
|
||||||
|
case 4: { _qualityColor = [0.62, 0.27, 0.58, 1]; };
|
||||||
|
case 5: { _qualityColor = [1, 0.7, 0.09, 1]; };
|
||||||
|
case 6: { _qualityColor = [0.93, 0, 0.48, 1]; };
|
||||||
|
};
|
||||||
|
if (_salesPrice > _playerMoney) then
|
||||||
|
{
|
||||||
|
_popTabColor = [0.91, 0, 0, 0.6];
|
||||||
|
_missingPopTabs = _salesPrice - _playerMoney;
|
||||||
|
_itemListControl lbSetTooltip [_indexEntryIndex, format["Missing %1 Pop Tabs", _missingPopTabs]];
|
||||||
|
};
|
||||||
|
if (_requiredRespect > ExileClientPlayerScore) then
|
||||||
|
{
|
||||||
|
_qualityColor set [3, 0.3];
|
||||||
|
_popTabColor set [3, 0.3];
|
||||||
|
_missingRespect = _requiredRespect - ExileClientPlayerScore;
|
||||||
|
_itemListControl lbSetTooltip [_indexEntryIndex, format["Missing %1 Respect", _missingRespect]];
|
||||||
|
};
|
||||||
|
if ((_salesPrice > _playerMoney) && (_requiredRespect > ExileClientPlayerScore)) then
|
||||||
|
{
|
||||||
|
_itemListControl lbSetTooltip [_indexEntryIndex, format["Missing %1 Pop Tabs & %2 Respect", _missingPopTabs, _missingRespect]];
|
||||||
|
};
|
||||||
|
_itemListControl lbSetData [_indexEntryIndex, _className];
|
||||||
|
_itemListControl lbSetTextRight [_indexEntryIndex, format["%1", _salesPrice]];
|
||||||
|
_itemListControl lbSetPictureRight [_indexEntryIndex, "exile_assets\texture\ui\poptab_trader_ca.paa"];
|
||||||
|
_itemListControl lbSetColor [_indexEntryIndex, _qualityColor];
|
||||||
|
_itemListControl lbSetColorRight [_indexEntryIndex, _popTabColor];
|
||||||
|
_itemListControl lbSetPictureRightColor [_indexEntryIndex, _popTabColor];
|
||||||
|
_itemListControl lbSetValue [_indexEntryIndex, _quality * 100000 + _salesPrice];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
forEach _categoryVehicleClassNames;
|
||||||
|
}
|
||||||
|
forEach _categoryClasses;
|
||||||
|
lbSortByValue _itemListControl;
|
||||||
|
true
|
Loading…
Reference in New Issue
Block a user