mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
These changes allow the player to sell upgraded vehicles with them not being added to the trader (as to not polute the lists). This basically refers to an upgraded vehicle as a child of the base vehicle so it will get the same sell price as the base vehicle. This still follows the original trading convention, the vehicle base needs to be in the trader category, i.e you cant sell an armored SUV at stary vehicle trader.
127 lines
4.8 KiB
Plaintext
127 lines
4.8 KiB
Plaintext
/**
|
|
* [_weaps,_mags,_extraText,_bags] call Z_checkArrayInConfig
|
|
*
|
|
* @param Array of Strings _this select 0 (_weaps) -> all weapons/items in the container
|
|
* @param Array of Strings _this select 1 (_mags) -> all magazines in the container
|
|
* @param String _this select 2 (_extraText) -> Indicator what container you are trading from
|
|
* @param Array of Strings _this select 3 (_bags) -> all backpacks in the container
|
|
*
|
|
* Fills up the sell or buy list if the item has a valid config.
|
|
**/
|
|
private ["_weaps","_mags","_extraText","_all","_arrayOfTraderCat","_totalPrice","_backUpText","_bags","_vehUpgraded"];
|
|
#include "defines.hpp"
|
|
|
|
_weaps = _this select 0;
|
|
_mags = _this select 1;
|
|
_extraText = _this select 2;
|
|
_bags = _this select 3;
|
|
_vehTrade = false;
|
|
|
|
if (false call Z_checkCloseVehicle) then {
|
|
_vehUpgraded = getText (configFile >> 'CfgVehicles' >> typeOf (Z_vehicle) >> 'original');
|
|
_all = _weaps + _mags + _bags + [(typeOf Z_vehicle)];
|
|
_vehTrade = true;
|
|
} else {
|
|
_all = _weaps + _mags + _bags;
|
|
};
|
|
|
|
_arrayOfTraderCat = Z_traderData;
|
|
_HasKeyCheck = {
|
|
_obj = _this select 0;
|
|
_inventory = _this select 1;
|
|
_keyFound = false;
|
|
_objectCharacterId = _obj getVariable ["CharacterID","0"];
|
|
if (_objectCharacterId == "0") then {
|
|
_keyFound = true;
|
|
} else {
|
|
_keyColor = ["ItemKeyYellow","ItemKeyBlue","ItemKeyRed","ItemKeyGreen","ItemKeyBlack"];
|
|
{
|
|
if (configName(inheritsFrom(configFile >> "CfgWeapons" >> _x)) in _keyColor) then {
|
|
if (str(getNumber(configFile >> "CfgWeapons" >> _x >> "keyid")) == _objectCharacterId) then {
|
|
_keyFound = true;
|
|
};
|
|
};
|
|
} count _inventory;
|
|
};
|
|
_keyFound;
|
|
};
|
|
_totalPrice = 0;
|
|
|
|
{
|
|
_y = _x;
|
|
{
|
|
private ["_cat","_exists","_pic","_text","_type","_sell","_buy","_buyCurrency","_sellCurrency","_worth"];
|
|
_cat = format["Category_%1",(_arrayOfTraderCat select _forEachIndex select 1)];
|
|
if (isNumber (missionConfigFile >> "CfgTraderCategory" >> _cat >> "duplicate")) then {
|
|
_cat = format["Category_%1",getNumber (missionConfigFile >> "CfgTraderCategory" >> _cat >> "duplicate")];
|
|
};
|
|
if (_vehUpgraded != "" && _vehTrade && _y == (typeOf Z_vehicle)) then { _y = _vehUpgraded; };
|
|
_exists = isClass(missionConfigFile >> "CfgTraderCategory" >> _cat >> _y);
|
|
if (_exists) exitWith {
|
|
_pic = "";
|
|
_text = "";
|
|
_type = getText(missionConfigFile >> "CfgTraderCategory" >> _cat >> _y >> "type");
|
|
_sell = getArray(missionConfigFile >> "CfgTraderCategory" >> _cat >> _y >> "sell");
|
|
_buy = getArray(missionConfigFile >> "CfgTraderCategory" >> _cat >> _y >> "buy");
|
|
switch (true) do {
|
|
case (_type == "trade_items") :
|
|
{
|
|
_pic = getText (configFile >> 'CfgMagazines' >> _y >> 'picture');
|
|
_text = getText (configFile >> 'CfgMagazines' >> _y >> 'displayName');
|
|
};
|
|
case (_type == "trade_weapons") :
|
|
{
|
|
_pic = getText (configFile >> 'CfgWeapons' >> _y >> 'picture');
|
|
_text = getText (configFile >> 'CfgWeapons' >> _y >> 'displayName');
|
|
};
|
|
case (_type in ["trade_backpacks", "trade_any_vehicle", "trade_any_vehicle_free", "trade_any_vehicle_old", "trade_any_bicycle", "trade_any_bicycle_old", "trade_any_boat", "trade_any_boat_old"]) :
|
|
{
|
|
_pic = getText (configFile >> 'CfgVehicles' >> _y >> 'picture');
|
|
_text = getText (configFile >> 'CfgVehicles' >> _y >> 'displayName');
|
|
};
|
|
};
|
|
|
|
if (isNil '_text') then { _text = _y; };
|
|
_HasKey = true;
|
|
if (_vehTrade && {(typeOf Z_vehicle) == _y}) then {
|
|
if (!(_type in ["trade_any_bicycle", "trade_any_bicycle_old", "trade_any_vehicle_free"]) && DZE_SaleRequiresKey) then {
|
|
_HasKey = [Z_vehicle, _all] call _HasKeyCheck;
|
|
};
|
|
};
|
|
if (!_HasKey) exitWith {};
|
|
|
|
_worth = 0;
|
|
|
|
if (!Z_SingleCurrency) then {
|
|
_buyCurrency = _buy select 1;
|
|
_sellCurrency = _sell select 1;
|
|
_part = (configFile >> "CfgMagazines" >> _sellCurrency);
|
|
_worth = getNumber(_part >> "worth");
|
|
if (_worth == 0) then { _worth = DZE_GemWorthList select (DZE_GemList find _buyCurrency); };
|
|
} else {
|
|
_buyCurrency = CurrencyName;
|
|
_sellCurrency = CurrencyName;
|
|
};
|
|
|
|
Z_SellableArray set [count(Z_SellableArray) , [_y, _type, _sell select 0, _text, _pic, _forEachIndex, _buy select 0, _sellCurrency, _buyCurrency, 0 ,_cat, _worth]];
|
|
_totalPrice = _totalPrice + (_sell select 0);
|
|
};
|
|
} forEach _arrayOfTraderCat;
|
|
} count _all;
|
|
|
|
Z_OriginalSellableArray = [] + Z_SellableArray;
|
|
|
|
_backUpText = _extraText;
|
|
|
|
if (Z_SellingFrom != 2) then { _extraText = getText (configFile >> 'CfgVehicles' >> _extraText >> 'displayName'); };
|
|
if (isNil '_extraText') then { _extraText = _backUpText; };
|
|
|
|
if (Z_SingleCurrency) then {
|
|
ctrlSetText [Z_AT_TRADERLINE2, format[localize "STR_EPOCH_TRADE_OFFER",[_totalPrice] call BIS_fnc_numberText,CurrencyName]];
|
|
} else {
|
|
ctrlSetText [Z_AT_TRADERLINE2, ''];
|
|
};
|
|
ctrlSetText [Z_AT_TRADERLINE1, format[localize "STR_EPOCH_TRADE_ACCEPT", count(Z_SellableArray) , _extraText]];
|
|
|
|
call Z_fillSellList;
|