ホーム › フォーラム › TRI Gaming フォーラム › ARMA3 ミッションエディットスレ › 返信先: ARMA3 ミッションエディットスレ
2017年7月17日 11:23 PM
#228484
JFetch(ふぇっち)
参加者
ミッション中に、自分と同じ装備のAIをすぐ近くにスポーンさせて自分のグループに参加させるscript
/*
v1.0.000
*サーバ上で実行する
*大量に本スクリプトを呼び出さないようにする
Parameters:
1: Unit: 装備の参照元ユニット
2: Group: スポーンするユニットが所属するグループ
-> *nilやnullの場合は新規にグループを作成
3: Position: スポーンする場所(座標)
-> *未指定の場合はパラメータ1で指定したユニットの近くにスポーン
Example:
*player1というのはユニットに付けた名前(Variable Name)
_nil = [player1] execVM "spawnIdenticalUnit.sqf" // player1と同じ装備のユニットをplayer1の近くにスポーン
Other:
[player1, group player1] // 同じ装備のユニットを近くに作成し、同じグループに入れる
[player1, group player1, getPos player2] // 上記とほぼ同じだが沸く場所がplayer2の近くになる
*スポーンしたユニットの値が欲しい時
_spawnedUnit = [player1] call (compile preprocessFileLineNumbers "spawnIdenticalUnit.sqf")
Return: Spawned Unit
*/
spawnIdenticalUnit.sqf
#define VARNAME_SAVED_INV "TRI_savedInventory"
if !(isServer) exitWith {};
private ["_unit", "_grp", "_spawnPos"];
_unit = param [0, objNull, [objNull]];
_grp = param [1, grpNull, [grpNull]];
_spawnPos = param [2, [], [[]], [2, 3]];
if (isNull _unit) exitWith {};
private ["_side", "_unitClass", "_clone"];
_side = side _unit;
_unitClass = typeOf _unit;
// 装備内容の保存
[_unit, [_unit, VARNAME_SAVED_INV]] call BIS_fnc_saveInventory;
// スポーンさせるユニットの作成
if (isNull _grp) then {_grp = createGroup [_side, true]};
if (_spawnPos isEqualTo []) then {_spawnPos = getPos _unit};
_clone = _grp createUnit [_unitClass, _spawnPos, [], 0, "FORM"];
// 装備のコピー(反映, 読込)
[_clone, [_unit, VARNAME_SAVED_INV]] call BIS_fnc_loadInventory;
_clone