|
|
Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Функция чтения конфига |
Функция чтения конфига |
› Вторник
› 28.07.2015
› 20:52
› Сообщение #
Заливаете скрипт в файл, вставляете название техники в строку (в конце файла, обозначено красным)
запускаете просмотр в редакторе, полученный текст заносится в Буфер обмена, выходите из игры, открываете Блокнот всавляете текст. разметка такая же как в конфиге. tab = 0; ent = toString [13,10]; fn_getClass = { private ["_cf", "_tx", "_cn", "_bc", "_tab", "_arr"]; _tab = ""; for "_b" from 0 to tab do {_tab = _tab + " "}; tab = tab + 1; _cf = _this; _tx = ent + _tab + format ["Class %1 {%2",configName _this, ent]; _tab = _tab + " "; for "_a" from 0 to (count _cf) -1 do { _cn = (_cf select _a); if (isClass _cn) then { _bc = (_cf >> configName _cn) Call fn_getClass; _tx = _tx + _bc + ent; } else { private ["_t"]; if (isText _cn) then { _t = getText (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, str _t , ent]; } else { if (isNumber _cn) then { _t = getNumber (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, _t , ent]; } else { if (isArray _cn) then { _t = getArray (_cf >> configName _cn); _arr = toArray str _t; _arr set [0, 123]; _arr set [(count _arr) - 1, 125]; _t = toString _arr; _tx = _tx + _tab + format ["%1[] = %2;%3", configName _cn, _t , ent]; }}}}}; tab = tab - 1; _tx + _tab + "};"; }; _cf = configFile >> "CfgVehicles" >> "Tank"; _nm = _cf Call fn_getClass; hint str _nm; copyToClipboard str _nm; Основной класс "CfgVehicles" можно заменить. например чтобы получить полный конфиг Всех звуков, можно написать _cf = configFile >> "CfgSounds"; |
› Пятница
› 18.09.2015
› 19:15
› Сообщение #
Код tab = 0; ent = toString [13,10]; fn_getClass = { private ["_cf", "_tx", "_cn", "_bc", "_tab"]; _tab = ""; for "_b" from 0 to tab do {_tab = _tab + " "}; tab = tab + 1; _cf = _this; _tx = ent + _tab + format ["Class %1 {%2",configName _this, ent]; _tab = _tab + " "; for "_a" from 0 to (count _cf) -1 do { _cn = (_cf select _a); if (isClass _cn) then { _bc = (_cf >> configName _cn) Call fn_getClass; _tx = _tx + _bc + ent; } else { private ["_t"]; if (isText _cn) then { _t = getText (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, str _t , ent]; } else { if (isNumber _cn) then { _t = getNumber (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, _t , ent]; } else { if (isArray _cn) then { _t = getArray (_cf >> configName _cn); _tx = _tx + _tab + format ["%1[] = %2;%3", configName _cn, _t , ent]; }}}}}; tab = tab - 1; _tx + _tab + "};"; }; fn_getClass2 = { private ["_cf", "_tx", "_cn", "_bc", "_tab"]; _tab = ""; for "_b" from 0 to tab do {_tab = _tab + " "}; tab = tab + 1; _cf = _this; _tx = ent + _tab + format ["Class %1 {%2",configName _this, ent]; _tab = _tab + " "; for "_a" from 0 to (count _cf) -1 do { _cn = (_cf select _a); if (!isClass _cn) then { private ["_t"]; if (isText _cn) then { _t = getText (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, str _t , ent]; } else { if (isNumber _cn) then { _t = getNumber (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, _t , ent]; } else { if (isArray _cn) then { _t = getArray (_cf >> configName _cn); _tx = _tx + _tab + format ["%1[] = %2;%3", configName _cn, _t , ent]; }}}}}; tab = tab - 1; _tx + _tab + "};"; }; _cf = configFile >> "CfgVehicles"; _nm = _cf Call fn_getClass; hint str _nm; copyToClipboard str _nm; Если нужно вытащить только общую инфу об объектах в классе. Добавлено (18.09.2015, 14:01) Код tab = 0; ent = toString [13,10]; fn_getClass2 = { private ["_cf", "_tx", "_cn", "_bc", "_tab"]; _tab = ""; for "_b" from 0 to tab do {_tab = _tab + " "}; tab = tab + 1; _cf = _this; _tx = ent + _tab + format ["Class %1 {%2",configName _this, ent]; _tab = _tab + " "; for "_a" from 0 to (count _cf) -1 do { _cn = (_cf select _a); if (!isClass _cn) then { private ["_t"]; if (isText _cn) then { _t = getText (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, str _t , ent]; } else { if (isNumber _cn) then { _t = getNumber (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, _t , ent]; } else { if (isArray _cn) then { _t = getArray (_cf >> configName _cn); _tx = _tx + _tab + format ["%1[] = %2;%3", configName _cn, _t , ent]; }}}}}; tab = tab - 1; _tx + _tab + "};"; }; fn_getClass = { private ["_cf", "_tx", "_cn", "_bc", "_tab"]; _tab = ""; for "_b" from 0 to tab do {_tab = _tab + " "}; tab = tab + 1; _cf = _this; _tx = ent + _tab + format ["Class %1 {%2",configName _this, ent]; _tab = _tab + " "; for "_a" from 0 to (count _cf) -1 do { _cn = (_cf select _a); if (isClass _cn) then { _bc = (_cf >> configName _cn) Call fn_getClass2; _tx = _tx + _bc + ent; } else { private ["_t"]; if (isText _cn) then { _t = getText (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, str _t , ent]; } else { if (isNumber _cn) then { _t = getNumber (_cf >> configName _cn); _tx = _tx + _tab + format ["%1 = %2;%3", configName _cn, _t , ent]; } else { if (isArray _cn) then { _t = getArray (_cf >> configName _cn); _tx = _tx + _tab + format ["%1[] = %2;%3", configName _cn, _t , ent]; }}}}}; tab = tab - 1; _tx + _tab + "};"; }; _cf = configFile >> "CfgVehicles" >> "Tank"; _nm = _cf Call fn_getClass; hint str _nm; copyToClipboard str _nm; поправка Добавлено (18.09.2015, 14:42) Добавлено (18.09.2015, 19:15) Код private ["_cfgArray","_xPos","_yPos","_veh","_type"]; { diag_log _type; _TEXT = '"'; _cnt=0; _type = _x; _cfgArray = "((getText (_x >> 'vehicleClass') == _type) && (getNumber (_x >> 'scope') >= 2) && (getText (_x >> 'picture') != "") && (getText (_x >> 'displayName') != ""))" configClasses (configFile >> "CfgVehicles"); { _TEXT = _TEXT + configName _x+'","'; _cnt=_cnt+1; if (_cnt > 10) then { _cnt = 0; diag_log _TEXT; _TEXT = '"'; }; } forEach _cfgArray; diag_log _TEXT; } foreach in ["Car","Ship","Air","Armored","Submarine","Autonomous","Support"]; Пример кода для А3 - вытаскивает (в diag_log) всю технику указанных классов. Для получения техники RHS используйте классы RHS (http://class.rhsmods.org/rhsafrf/CfgVehicleClasses.html) |
› Воскресенье
› 14.04.2019
› 10:43
› Сообщение #
Можно использовать минимальный скрипт для чтения например всех названий техники
_cf = []; _cf = configFile >> "CfgVehicles" ; _ms = []; for "_a" from 0 to (count _cf) - 1 do { _ms set [_a, ConfigName (_cf select _a)]; }; hint "ok"; copyToClipboard str _ms; далее, из списка берём нужный объект и читаем его конфиг. |
| |||
| |||
Чат сайта |