т.е. - при клике на любой ключ, появлялись пункты меню...
Сам ExtraRC в том виде, в котором он есть, данного не позволяет, а ключей несколько сотен, и добавлять каждый это гиблое дело...
Но решить проблемку можно достаточно просто, - для этого дела, нам понадобится слегка модернизировать файл
ui_selectSlot.sqf
Сам файл теперь будет выглядеть так:
private ["_control","_button","_parent","_group","_pos","_item","_subItem","_conf","_name","_cfgActions","_numActions","_height","_menu","_config","_type","_script","_outputOriented","_compile","_array","_outputClass","_outputType","_erc_cfgActions", "_erc_numActions"];
disableSerialization;
_control = (_this select 0);
_button = (_this select 1);
_parent = findDisplay 106;
if (_button == 1) then
{
_group = _parent displayCtrl 6902;
_pos = ctrlPosition _group;
_pos set [0, ((_this select 2) + 0.48)];
_pos set [1, ((_this select 3) + 0.07)];
_item = gearSlotData _control;
_conf = configFile >> "cfgMagazines" >> _item;
if (!isClass _conf) then
{_conf = configFile >> "cfgWeapons" >> _item;};
_name = getText(_conf >> "displayName");
_cfgActions = _conf >> "ItemActions";
_numActions = (count _cfgActions);
_height = 0;
for "_i" from 0 to (_numActions - 1) do
{
_menu = _parent displayCtrl (1600 + _i);
_menu ctrlShow true;
_config = (_cfgActions select _i);
_type = getText (_config >> "text");
_script = getText (_config >> "script");
_outputOriented = getNumber (_config >> "outputOriented") == 1;
_height = _height + (0.025 * safezoneH);
_compile = format["_id = '%2' %1;",_script,_item];
uiNamespace setVariable ['uiControl', _control];
if (_outputOriented) then
{
_array = getArray (_config >> "output");
_outputClass = (_array select 0);
_outputType = (_array select 1);
_name = getText (configFile >> _outputType >> _outputClass >> "displayName");
_compile = format["_id = ['%2',%3] %1;",_script,_item,_array];
};
_menu ctrlSetText format[_type, _name];
_menu ctrlSetEventHandler ["Buttonclick", _compile];
};
// Ключи
_subItem = _item;
_subItem = toArray _subItem;
if ( (count _subItem) > 7 ) then
{_subItem resize 7;};
_subItem = toString _subItem;
if (_subItem == "ItemKey") then
{_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _subItem);}
else
{_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);};
_erc_numActions = (count _erc_cfgActions);
if (isClass _erc_cfgActions) then
{
for "_j" from 0 to (_erc_numActions - 1) do
{
_menu = _parent displayCtrl (1600 + _j + _numActions);
_menu ctrlShow true;
_config = (_erc_cfgActions select _j);
_text = getText (_config >> "text");
_script = getText (_config >> "script");
_height = _height + (0.025 * safezoneH);
uiNamespace setVariable ['uiControl', _control];
_menu ctrlSetText _text;
_compile= format["_item = '%2'; %1", _script, _item];
_menu ctrlSetEventHandler ["Buttonclick", _compile];
};
};
_pos set [3,_height];
_group ctrlShow true;
ctrlSetFocus _group;
_group ctrlSetPosition _pos;
_group ctrlCommit 0;
};
А чтобы добавить пункты ко всем ключам, в самом ExtraRC прописываем так: class ItemKey
{
class Ultima_Client_ExtraRC_Vehicle_Find_By_Key
{
text = "Найти технику";
script = "[] spawn Ultima_Client_Procedure_Vehicle_Find_By_Key;";
};
class Ultima_Client_ExtraRC_Vehicle_Set_Alarm
{
text = "Поставить на сигнализацию";
script = "[] spawn Ultima_Client_Procedure_Vehicle_Set_Alarm;";
};
};
*Пункты приведены для примера.











