Files
DayZ-Epoch/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_checkArrayInConfig.sqf
icomrade 0414c67284 No longer require key to sell a vehicle
Still requires the vehicle to be local, meaning you were the last person
to be in the driver seat.
2016-07-21 17:42:25 -04:00

136 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","_total","_arrayOfTraderCat","_totalPrice","_ctrltext","_backUpText","_bags"];
#include "defines.sqf";
_weaps = _this select 0;
_mags = _this select 1;
_extraText = _this select 2;
_bags = _this select 3;
_vehTrade = false;
if (false call Z_checkCloseVehicle) then {
_all = _weaps + _mags + _bags + [(typeOf Z_vehicle)];
_vehTrade = true;
} else {
_all = _weaps + _mags + _bags;
};
_total = count(_all);
_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;
};
true; //change to _keyFound; to require key to sell vehicle
};
_totalPrice = 0;
if(_total > 0)then{
{
_y = _x;
{
private ["_cat","_excists","_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")];
};
_excists = isClass(missionConfigFile >> "CfgTraderCategory" >> _cat >> _y );
if(_excists)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"])) 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 {
_ctrltext = format[localize "STR_EPOCH_TRADE_OFFER", _totalPrice,CurrencyName];
ctrlSetText [Z_AT_TRADERLINE2, _ctrltext];
} else {
ctrlSetText [Z_AT_TRADERLINE2, ''];
};
_ctrltext = format[localize "STR_EPOCH_TRADE_ACCEPT", count(Z_SellableArray) , _extraText];
ctrlSetText [Z_AT_TRADERLINE1, _ctrltext];
call Z_fillSellList;
};