在Arma 3中使用自定义合成产生。我目前正在使用“LARs Composition Spawn Script”(https://forums.bistudio.com/forums/topic/191902-eden-composition-spawning/)来生成自定义合成。地图周围的产卵成分就像一个魅力。
在合成中有一个对象(AI),其中varname为“quest_giver”。对于这个特定的对象,我想添加一个Action。我目前的代码是:
// SPAWN RANDOM COMPOSITION ON RANDOM POSITION
_spawned_composition = [ _random_composition, _pos, [0,0,0], random 360 ] call LARS_fnc_spawnComp;
// GET OBJECTS FROM THE SPAWNED COMP BACK (ARRAY)
_objects = [_spawned_composition] call LARs_fnc_getCompObjects;
// TRYING TO ITERATE THROUGH OBJECTS TO FIND "quest_giver"
// AND ADD ACTION TO IT.
{
_type = typeName _x;
if (_type == "GROUP") then {
_units = units _x;
{
_var = missionNamespace getVariable ["name", _x];
_name = typeOf _var;
if (_name == "quest_giver") then {
player globalChat format["%1",_name];
//_speak = _x addAction ["Speak", {hint format ["Hello, it works !"]}];
};
} forEach _units;
};
} forEach _objects;
If(_name == "quest_giver")
处的错误,其中_name是OBJECT,但“quest_giver”当然是STRING。所以我得到Error Generic error in expression
。
然而,_var = missionNamespace getVariable [“name”,_ x];返回“quest_giver”。但它作为一个OBJECT,因为typeOf _var返回“OBJECT”而不是STRING。
我猜不出这里最简单的事情。任何想法,如果这甚至可以在理论上起作用?
我想要实现的目标
我在添加操作部分之前和之后了解我的方法,但无法弄清楚如何向此特定对象添加操作。 ......
答案 0 :(得分:1)
除非我弄错了,你似乎对如何获得该单位的名字感到困惑? 可能你想从单元的命名空间中获取名称var(如果你正在使用的东西确实把它放在那里):
_name = _x getVariable ["name" /*var name*/, "" /*default value*/];
if (_name == "quest_giver") then {
//...
或更可能(如果它是关于通过编辑器设置的名称),名称为function:
if ((name _x) == "quest_giver") then {