Chief
|
Дата: Среда, 22.10.2014, 13:22 | Сообщение # 1 |
Сообщений: 145
Администраторы
|
Обзор
Следующий код отображает библиотеку функций в любой момент игры:
В двухмерном редакторе, для того, чтобы отобразить просмотрщик функций - нажмите комбинацию 'Ctrl + F или щелкните по иконке: Иконка
Особенности:
- Выводит все функции из файла конфигурации или Description.ext - Отображает имя, путь, описание и код выбранной функции - Код можно просто скопировать в буфер обмена
Выполнение
Одиночная игра
Функции можно запустить в процессе миссии, для intro и outro характерен следующий синтаксис:
_fnc = [params] call functionName;
или
_fnc = [params] spawn functionName;
Мультиплеер
Функции заменяют устаревший Multiplayer framework. При помощи BIS_fnc_MP, вы можете удаленно вызвать функцию на конкретном клиенте и сделать ее постоянной, так что она будет выполняться автоматически для клиента по JIP.
[params,"functionName",target,isPersistent] call BIS_fnc_MP;
Графический интерфейс пользователя
Библиотека может ссылаться на функции, которые хранятся в UInamespace
_fnc = [params] call (uinamespace getvariable 'functionName');
или _fnc = [params] spawn (uinamespace getvariable 'functionName'); Конфигурация
В файле конфигурации, список функций задан в контейнере CfgFunction. Новые функции могут быть добавлены в файл миссии или кампании description.ext. class CfgFunctions { file = "A3\functions_f\initFunctions.sqf"; class A3 { tag = "BIS"; requiredAddons[] = {"A3_Data_F"}; // Необязательный параметр классов CfgPatches class category { file = "A3\functions_f\Misc"; class Test1 {description="Testing file 2";}; class Test2 {description="Testing file 3"; file="test.sqf"}; class Test3 {description="Testing file 4 (FSM)"; ext=".fsm"}; }; }; }; Если путь файла не задан для конкретной функции, система автоматически будет его искать здесь:
'file\category\fn_function.sqf"
(При условии, что функции заданы в файле description.ext)
Когда параметр file (файл) задан в корневой категории, система будет искать все функции в данной директории.Результат вышеизложенного кода:
- BIS_fnc_Test1 - загрузит скрипт
A3\functions_f\Misc\category\fn_Test1.sqf
- BIS_fnc_Test2 - - загрузит скрипт
test.sqf из директории миссии
- BIS_fnc_Test3 - загрузит FSM
A3\functions_f\Misc\category\Test4.fsm
Необязательные параметры класса функций:
description - Краткое описание функции. В последующем устареет с появлением скриптовых заголовков, которые станут основным источником информации. ext - тип файла, может быть как ".sqf", так и ".fsm" (имеется ввиду заскриптованный FSM). По умолчанию - ".sqf". file - необязательный параметр; задает прямой путь к файлу recompile (введено с появлением Arma 3) - функция будет повторно компилирована при запуске миссии forced (введено с появлением Arma 3) - функция автоматически выполнится при запуске миссии Отладка
Применение функций отладки позволяет регистрировать параметры, отображать ошибки и заносить протоколы в файл RPT ( отчет об ошибках). Выходные данные этих функций автоматически содержит имя той из которой они были получены.
Для того, чтобы предотвратить спам RPT файла, протоколирование по умолчанию отключено. Чтобы включить его, поместите следующие параметры в файл Description.ext вашей миссии:
Строго рекомендуется использовать следующие фукнции:
BIS_fnc_param BIS_fnc_log BIS_fnc_error BIS_fnc_halt Примеры данных на выходе:
"Параметр конфигурации 'splendid' не задан в CfgArma." call BIS_fnc_halt; "Log: ПРЕКРАЩЕНИЕ ДЕЙСТВИЯ: [BIS_fnc_isSplendid] Параметр конфигурации 'splendid' не задан в CfgArma."
_mission = [BIS_Player] call BIS_fnc_endMission; "Log: ОШИБКА: [BIS_fnc_endMission] 0: BIS_Player является типом OBJECT, а должен быть STRING. Замените на "end1"
["Постоянное выполнение невозможно при target равном %1. Замените на %2 или %3.",typename 0,typename objnull,typename false] call BIS_fnc_error; "Log: ОШИБКА: Постоянное выполнение невозможно при скалярном значении target. Замените на OBJECT или BOOL."
42 call BIS_fnc_log; "BIS_fnc_log: [BIS_fnc_myFunction]: 42"
["Random number is %1",random 999] call BIS_fnc_log; "BIS_fnc_log: [BIS_fnc_myFunction] Случайное значение - 808.768" Повторная компиляция По соображениям безопасности, компиляция всех функций проиходит при помощи compileFinal и не могут быть переписаны в дальнейшем. При написании и тестировании функции, требуется перезапустить игру даже при незначительных изменениях.
Чтобы совершить повторную компиляцию функций missionNamespace, разместите следующий параметр в файл Description.ext вашей миссии:
allowFunctionsRecompile = 1; Режим отладки
Разботчики имеют доступ к нескольским режимам отладки через функции BIS_fnc_functionsDebug.
Нет отладки По умолчанию Сохранить карту скрипта Переменная _fnc_scriptMap отслеживает выполнение скрипта, прогресс сохраняется в заголовок скрипта Сохранить и заносит в протокол карту скрипта (script map) Переменная _fnc_scriptMap отслеживает выполнение скрипта, прогресс сохраняется в заголовок скрипта и заносится в протокол отладки ( журнал отладки)
Повторная компиляция функции должна быть разрешена Мета переменные
Система добавляет заголовок со стандартными мета данными всем функциям. В заголовке определены следующие локальные переменные: _fnc_scriptName: STRING - Имя функции _fnc_) _fnc_scriptNameParent: STRING - Имя функции, которая была запущена от текущей (используйте _fnc_scriptName, когда имя родительской функции не установлено) _fnc_scriptMap: ARRAY - Список всех родительских скриптов ( доступны только в режиме отладки 1 и выше, смотрите вышеизложенную информацию)
Данные значения НЕ НУЖНО изменять!!! Порядок инициализации
1. Функции 2. Инициализации обработчиков событий 3. Файл Mission.sqm 4. Файл Init.sqf 5. Файл Init.sqs 6. Triggers
|
|
|