Fandom

武装突袭 Wiki

Functions Library 2.0

简体 | 繁體

4,827个页面创建
于此维基上
添加新页面
评论0 分享

您使用了广告屏蔽软件!


Wikia通过广告运营为用户提供免费的服务。我们对用户通过嵌入广告屏蔽软件访问网站进行了使用调整。

如果您使用了广告屏蔽软件,将无法使用我们的服务。请您移除广告屏蔽软件,以确保页面正常加载。


Functions Library 2.0 is pack of routine script functions available from anywhere in game. Main difference from older Functions Library is that it runs automatically and doesn't require Functions manager to be present.

Usage 编辑

params are parameters required by given function. If you wish to skip a param (e.g. leave it's default value), use nil on its index (valid only if BIS_fnc_param is used by the function).

Singleplayer 编辑

Functions can be launched in mission, intro and outro using this syntax:

_fnc = [params] call functionName;

or

_fnc = [params] spawn functionName;

Multiplayer 编辑

Functions replaces obsolete Multiplayer Framework. You can use BIS_fnc_MP to remotely call function on specific clients and set them to be persistent, so they'll be executed automatically for client upon JIP.

[params,"functionName",target,isSpawn,isPersistent] call BIS_fnc_MP;

GUI 编辑

Anywhere outside running mission (user interface), refer to functions stored in UInamespace

_fnc = [params] call (uinamespace getvariable 'functionName');

or

_fnc = [params] spawn (uinamespace getvariable 'functionName');


In-game functions viewer 编辑

File:Take On Helicopters Functions Viewer.jpg

Use following code to display function library anywhere in game:

[] call BIS_fnc_help;

In 2D editor, press 'Ctrl + F' to display the viewer or click on icon: 20px

Features:

  • Listing through all functions from config or description.ext files.
  • Displaying name, path, description and code of selected functions.
  • Code can be easily copied to clipboard.

Adding new functions 编辑

List of functions is defined in config under CfgFunctions container. New ones can be also added in description.ext file of mission or campaign.

class CfgFunctions
{
	file = "hsim\ModulesCore_H\modules\functions";
	class BIS
	{
		class category1
		{
			class Test1 		{description="Testing file 1"};
		};
	};
	class HSim
	{
		tag = "BIS";
		class category2
		{
			file = "hsim\modules_h\functions";
			class Test2 		{description="Testing file 2";};
			class Test3 		{description="Testing file 3"; file="test.sqf"};
			class Test4 		{description="Testing file 4 (FSM)"; ext=".fsm"};
		};
	};
};
  • If 'file' path is not set for the given function, system will search for file in
    • 'file\category\fn_function.sqf" (if functions is defined in description.ext)
  • When file= parameter is defined in category root, all functions in given category will be searched for in this directory.
  • Default ext= is .sqf. You can optionally use .fsm, but no other extensions are compatible. Define .fsm even when you're settings file= leading directly to the file.

Result is:

  • BIS_fnc_Test1 - will load script hsim\ModulesCore_H\modules\functions\category1\test1.sqf from functions directory (see above)
  • BIS_fnc_Test2 - will load script hsim\modules_h\functions\category2\Test2.sqf
  • BIS_fnc_Test3 - will load script test.sqf from mission directory
  • BIS_fnc_Test4 - will load FSM hsim\modules_h\functions\category2\Test4.fsm

Debugging 编辑

Debug Functions 编辑

Use debug functions to register params, display errors and log messages. Printed output of these functions automatically contains name of function from which it was called.

 ! Usage of following functions is mandatory:

Examples of debug outputs:

"Helicopter class is empty." call bis_fnc_halt;
[3104] Log: HALT: [BIS_fnc_heliportHeliAddMission] Helicopter class is empty.

_mission = [_this,0,worldname,""] call bis_fnc_param;
[3104] Log: ERROR: [BIS_fnc_endMission] 0: HSim_Player is type OBJECT, must be STRING. "United_States_H" used instead.

["Helicopter '%1' not found.",_heliPlayer] call bis_fnc_error;
[3104] Log: ERROR: [BIS_fnc_heliportHeliAddMission] Helicopter 'MYHELICOPTER' not found.

42 call bis_fnc_log;
[3104] array ["Log: [BIS_fnc_heliportInit] ",42]

["Random number is %1",random 999] call bis_fnc_log;
[3104] Log: [BIS_fnc_heliportInit] Random number is 808.768


Debug Mode 编辑

Developers can access several debug modes using BIS_fnc_functionsDebug function.

  1. No debug
    • Default
  2. Save script map
    • Variable _fnc_scriptMap tracking script execution progress is stored in function header
  3. Save and log script map
    • Variable _fnc_scriptMap tracking script execution progress is stored in functions header and it's printed to debug log.

Debug Variables 编辑

Store following variables into profileNameSpace to toggle various debug options:

  • BIS_fnc_initRecompileEditor - recompiles functions every time you click on 'Preview' button in editor ensuring changes made in functions are present on mission start.


Meta Variables 编辑

System is adding header with basic meta data to all functions. Following local variables are defined there:

  • _fnc_scriptName: STRING - Function name (<tag>_fnc_<name>)
  • _fnc_scriptNameParent: STRING - Name of function from which current one was called (_fnc_scriptName used when not defined)
  • _fnc_scriptMap: ARRAY - List of all parent scripts (available only in debug mode 1 and higher, see above).
 ! Please do not modify these values!


Initialization Order 编辑

  1. Functions
  2. Init Event Handlers
  3. Mission.sqm
  4. Init.sqf
  5. Init.sqs
  6. Triggers

更多维基

随机维基