Arma 3 の無料ダウンロード コンテンツ Zeus 内で設置したオブジェクトを、コードにして出力する Zeus Editor, Streamlined スクリプト が BI フォーラム上で公開されました。
スクリプトでは、Zeus で設置した建物や小物、オブジェクトを設置したあとに操作をすると、オブジェクトの位置情報などをコードとして出力し、ミッション作成に役立ちます。
使いかた
エディタ内でプレイヤー ユニットを設置、そしてモジュールから Zeus にある“Game Master”モジュールに名前( ZE_Zeus
)をつけて設置します。
次にミッションを保存して、保存したファイルに“init.sqf”を作成して、スクリプトを貼り付けします。
//NOTE: Make sure Zeus module is named ZE_Zeus //Export function ZE_ExportEntities = { ZE_ObjectsExport = []; _mode = toLower (_this select 0); //Register objects to export switch (_mode) do { case "all": { { _obj = _x; _class = typeOf _obj; _pos = getPosATL _obj; _vec = [vectorDir _obj, vectorUp _obj]; _sim = simulationEnabled _obj; _grp = group _obj; _pack = [_class,_pos,_vec,_sim,_grp]; ZE_ObjectsExport = ZE_ObjectsExport + [_pack]; } forEach (curatorEditableObjects ZE_Zeus); }; case "sel": { { _obj = _x; if (typeName _obj == typeName objNull) Then { _class = typeOf _obj; _pos = getPosATL _obj; _vec = [vectorDir _obj, vectorUp _obj]; _sim = simulationEnabled _obj; _grp = group _obj; _pack = [_class,_pos,_vec,_sim,_grp]; ZE_ObjectsExport = ZE_ObjectsExport + [_pack]; }; } forEach (curatorSelected select 0); }; }; //Compile _compiledTxt = "//Exported with ZE"; { private ["_addTxt","_codeSpawn"]; _objArr = _x; _class = _objArr select 0; _pos = _objArr select 1; _vec = _objArr select 2; _sim = _objArr select 3; _grp = _objArr select 4; if (isNull _grp) Then { _codeSpawn = format [" _object = createVehicle [""%1"", [0,0,0], [], 0, ""CAN_COLLIDE""];",_class]; } else { _side = side _grp; _codeSpawn = format [" _object = createGroup %2 createUnit [""%1"", [0,0,0], [], 0, ""NONE""];",_class,_side]; }; if (_sim) Then { _addTxt = _codeSpawn + format [" _object setPosATL %2; _object setVectorDirAndUp %3; ", _class, _pos, _vec]; } else { _addTxt = _codeSpawn + format [" _object enableSimulation %4; _object setPosATL %2; _object setVectorDirAndUp %3; ", _class, _pos, _vec, _sim]; }; _compiledTxt = _compiledTxt + _addTxt; } forEach ZE_ObjectsExport; copyToClipboard _compiledTxt; }; //Enable editing function ZE_AddCuratorObjects = { _nearObjs = (getPos curatorCamera) nearObjects 25; ZE_Zeus addCuratorEditableObjects [_nearObjs,false]; }; //Handle Object simulation ZE_ObjectSimulation = { _mode = toLower (_this select 0); switch (_mode) do { case "enable": { {_x enableSimulation true} forEach (curatorSelected select 0); }; case "disable": { {_x enableSimulation false} forEach (curatorSelected select 0); }; }; }; //Key Stroke Handler key_ctrl = 29; key_shift = 42; key_c = 46; key_a = 30; key_e = 18; key_s = 31; pressed_ctrl = false; pressed_shift = false; pressed_c = false; pressed_a = false; pressed_e = false; pressed_s = false; //Add Keystroke EH ZE_AddKeyStrokeEH = { ZE_keyDownEHId = findDisplay 312 displayAddEventHandler ["KeyDown",{ if (_this select 1 == key_ctrl) then {pressed_ctrl = true;}; if (_this select 1 == key_shift) then {pressed_shift = true;}; if (_this select 1 == key_c) then {pressed_c = true;}; if (_this select 1 == key_a) then {pressed_a = true;}; if (_this select 1 == key_e) then {pressed_e = true;}; if (_this select 1 == key_s) then {pressed_s = true;}; }]; ZE_keyUpEHId = findDisplay 312 displayAddEventHandler ["KeyUp",{ if (_this select 1 == key_ctrl) then {pressed_ctrl = false;}; if (_this select 1 == key_shift) then {pressed_shift = false;}; if (_this select 1 == key_c) then {pressed_c = false;}; if (_this select 1 == key_a) then {pressed_a = false;}; if (_this select 1 == key_e) then {pressed_e = false;}; if (_this select 1 == key_s) then {pressed_s = false;}; }]; ["ZE_KeyStroke", "onEachFrame", { if (pressed_ctrl && pressed_a) ExitWith { ["ALL"] call ZE_ExportEntities; hint ""; ["CuratorAddAddons",["ZEUS objects copied to clipboard."]] calL BIS_fnc_showNotification; pressed_a = false; }; if (pressed_ctrl && pressed_c) ExitWith { ["SEL"] call ZE_ExportEntities; ["CuratorAddAddons",["SELETED objects copied to clipboard."]] calL BIS_fnc_showNotification; pressed_c = false; }; if (pressed_ctrl && pressed_shift && pressed_e) ExitWith { [] call ZE_AddCuratorObjects; ["CuratorAddAddons",["Nearby objects ENABLED for Zeus."]] calL BIS_fnc_showNotification; pressed_e = false; }; if (pressed_ctrl && pressed_shift && pressed_s) ExitWith { ["DISABLE"] call ZE_ObjectSimulation; ["CuratorAddAddons",["DISABLED simulation for selected objects."]] calL BIS_fnc_showNotification; pressed_s = false; }; if (pressed_ctrl && pressed_s) ExitWith { ["ENABLE"] call ZE_ObjectSimulation; ["CuratorAddAddons",["ENABLED simulation for selected objects."]] calL BIS_fnc_showNotification; pressed_s = false; }; }] call BIS_fnc_addStackedEventHandler; }; //Remove Keystroke EH ZE_RemoveKeyStrokeEH = { findDisplay 312 displayRemoveEventHandler ["KeyDown",ZE_keyDownEHId]; findDisplay 312 displayRemoveEventHandler ["KeyUp",ZE_keyUpEHId]; ["ZE_KeyStroke", "onEachFrame"] call BIS_fnc_removeStackedEventHandler; }; //Handle enable/disable of EH on Zeus start/end [] spawn { while {true} do { waitUntil {sleep 0.1; !(isNull findDisplay 312)}; [] spawn ZE_AddKeyStrokeEH; waitUntil {sleep 0.1; isNull findDisplay 312}; [] spawn ZE_RemoveKeyStrokeEH; }; };
次のショートカット キーで出力が可能です。
-
Ctrl + C
選択されているオブジェクトを出力。ドラッグで選択された複数のオブジェクトも可。
-
Ctrl + A
Zeus で編集可能なオブジェクトを出力
-
Ctrl + Shift + E
Zeus で近くに編集可能なオブジェクトを作成
-
Ctrl + S
とCtrl + Shift + S
選択したオブジェクトを計算するかどうかのトグル
クレジット
ted_hou
0 コメント:
コメントを投稿