Skip to content

I have an idea, this might solve the current problem #745

Description

@xiaohuo9986

I have an idea. The accessories purchased in the store are directly in the backpack instead of directly on the weapon. This may solve the current problem, but I don't know how to make the corresponding modification.

Activity

  1. xiaohuo9986 commented on Feb 28, 2021

    @xiaohuo9986
    Author

    /*
    File: fn_weaponShopSelection.sqf
    Author: Bryan "Tonic" Boardwine

    Description:
    Checks the weapon & adds the price tag.
    

    */
    private["_control","_index","_priceTag","_price","_item"];
    _control = [_this,0,controlNull,[controlNull]] call BIS_fnc_param;
    _index = [_this,1,-1,[0]] call BIS_fnc_param;
    if(isNull _control OR _index == -1) exitWith {closeDialog 0;}; //Bad data

    _priceTag = ((findDisplay 39400) displayCtrl 39410);
    _availTag = ((findDisplay 39400) displayCtrl 39411);
    _magList = ((findDisplay 39400) displayCtrl 39404);
    _item = _control lbData _index;

    _price = _control lbValue _index;
    _qty = _item call life_fnc_getQuantity;
    if (playerSide in [west,independent]) then { _qty = -1; };

    _available = switch (_qty) do
    {
    case -1: { "infinite" };
    case 0: { "demand" };
    default { format["%1",_qty] };
    };

    _availTag ctrlSetStructuredText parseText format ["available: %1",_available];

    if(_price > life_money) then
    {
    _priceTag ctrlSetStructuredText parseText format ["Price: $%1",[(_price)] call life_fnc_numberText];
    }
    else
    {
    _priceTag ctrlSetStructuredText parseText format ["Price: $%1",[(_price)] call life_fnc_numberText];
    };

    if (_control != _magList) then { lbClear _magList; };
    _mags = [(configfile >> "CfgWeapons" >> _item), "magazines", []] call BIS_fnc_returnConfigEntry;
    if (count _mags > 0) then
    {
    _shop = uiNamespace getVariable ["Weapon_Shop", ""];
    _addons = [_shop] call life_fnc_weaponAddons;

    {
    	_addonEntry = [];
    	_mag = _x;
    	{
    		if (_x select 0 == _mag) then { _addonEntry = _x };
    	} forEach _addons;
    	if (count _addonEntry > 0) then
    	{
    		_itemInfo = [_x] call life_fnc_fetchCfgDetails;
    		_magPrice = _addonEntry select 2;
    		if ((life_configuration select 3) > 0) then { _magPrice = round (_magPrice + (_magPrice * ((life_configuration select 3) / 100))); };
    		_point = life_capture_list select 0;
    		_armsDealer = ((_point select 1) != "0" && (_point select 1) == life_gang && (_point select 2) == 1);
    		_turfOwned = 0;
    		{ if (_x select 1 == life_gang) then { _turfOwned = _turfOwned + 1; } } foreach life_turf_list;
    		if (_armsDealer) then { _magPrice = _magPrice * 0.85 };
    		if (_turfOwned > 1) then { _magPrice = _magPrice * 0.75 };
    		if (_shop == "rebel" && 3 in life_gangtalents) then { _magPrice = _magPrice * 0.95; };
    		_magList lbAdd format["%1",if(isNil {_addonEntry select 1}) then {_itemInfo select 1} else {_addonEntry select 1}];
    		_magList lbSetData[(lbSize _magList)-1,_mag];
    		_magList lbSetPicture[(lbSize _magList)-1,_itemInfo select 2];
    		_magList lbSetValue[(lbSize _magList)-1,_magPrice];
    	};
    } forEach _mags;
    
    _compatibleItems = [];
    {
        _cfgCompatibleItems = _x >> "compatibleItems";
        if (isarray _cfgCompatibleItems) then {
            {
                if !(_x in _compatibleItems) then {_compatibleItems pushBack _x;};
            } forEach getArray _cfgCompatibleItems;
        } else {
            if (isclass _cfgCompatibleItems) then {
                {
                    if (getnumber _x > 0 && {!((configname _x) in _compatibleItems)}) then {_compatibleItems pushBack configname _x};
                } foreach configproperties [_cfgCompatibleItems, "isNumber _x"];
            };
        };
    } foreach configproperties [configFile >> "CfgWeapons" >> _item >> "WeaponSlotsInfo","isclass _x"];
    
    {
    	_addonEntry = [];
    	_mag = _x;
    	{
    		if (_x select 0 == _mag) then { _addonEntry = _x };
    	} forEach _addons;
    	if (count _addonEntry > 0) then
    	{
    		_itemInfo = [_x] call life_fnc_fetchCfgDetails;
    		_magPrice = _addonEntry select 2;
    		if ((life_configuration select 3) > 0) then { _magPrice = round (_magPrice + (_magPrice * ((life_configuration select 3) / 100))); };
    		_point = life_capture_list select 0;
    		_armsDealer = ((_point select 1) != "0" && (_point select 1) == life_gang && (_point select 2) == 1);
    		_turfOwned = 0;
    		{ if (_x select 1 == life_gang) then { _turfOwned = _turfOwned + 1; } } foreach life_turf_list;
    		if (_armsDealer) then { _magPrice = _magPrice * 0.85 };
    		if (_turfOwned > 1) then { _magPrice = _magPrice * 0.75 };
    		if (_shop == "rebel" && 3 in life_gangtalents) then { _magPrice = _magPrice * 0.95; };
    		_magList lbAdd format["%1",if(isNil {_addonEntry select 1}) then {_itemInfo select 1} else {_addonEntry select 1}];
    		_magList lbSetData[(lbSize _magList)-1,_mag];
    		_magList lbSetPicture[(lbSize _magList)-1,_itemInfo select 2];
    		_magList lbSetValue[(lbSize _magList)-1,_magPrice];
    	};
    } forEach _compatibleItems;
    

    };

  2. blackfisch commented on Mar 6, 2021

    @blackfisch
    Contributor

    I'n not a repo admin, but still:

    First of all, here you can find a guide on how to contribute: https://github.com/firstcontributions/first-contributions
    Furthermore, the code you posted is not really helpful. There's a lot of stuff going on that is not in the framework (looks like some kind of skill tree thing and limited stock scripts). If you have a sugestion, please describe as good as possible what your idea is and if you already have a working code sample, at least extract only the relevant part

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions