А как быть с теми кто в анимации находился и убежал, или был убит во время анимации. Если отключать им речь, то теряется часть атмосферы боя.
Если правильно понимаю, то можно решить отключив эту анимацию в момент, когда она больше не нужна, а именно в момент ранения,смерти/удаления. Об этом я писал выше: ставишь им всем EH "hit", а в блоке EH пишешь код, который выводит их из анимации. В итоге прежде, чем по ним пройдут эффекты ранения или смерти/удаления, они уже прекратят анимацию и нежелательные эффекты не должны будут проявляться
Привет, Ibragim! Есть скрипт:
_victim = _this select 0 select 0;
_sleepTime = _this select 0 select 2;
if (isNull _victim || !alive _victim || vehicle _victim != _victim || stance _victim in ["PRONE","UNDEFINED"]) exitWith {};
_soundArray = ["hit_1", "hit_2", "hit_3", "hit_4", "hit_5", "hit_6", "hit_7", "hit_8", "hit_9", "hit_10", "hit_11", "hit_12", "hit_13", "hit_16", "hit_17", "hit_21", "hit_22", "hit_23", "hit_24", "hit_25", "hit_26", "hit_27", "hit_28", "hit_29", "hit_30", "hit_31", "hit_32", "hit_33", "hit_34", "hit_35", "hit_36", "hit_37", "hit_38", "hit_39", "hit_40", "hit_41", "hit_42", "hit_43", "hit_44", "hit_45", "hit_46", "hit_47", "hit_48", "hit_49", "hit_50", "hit_51", "hit_52", "hit_53", "hit_54", "hit_55", "hit_56", "hit_57", "hit_58"];
_soundToPlay = _soundArray select (floor(random(count _soundArray)));
if (_victim getVariable ["sound_switched", false]) exitWith {};
[_victim, [_soundToPlay, 100, 1]] remoteExec ["say3D", 0];
_victim setVariable ["sound_switched", true, true];
sleep 0.1;
_AnimArray_1 = ["AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDleft", "AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDright", "Acts_CrouchingCoveringRifle01", "RHSUSF_flashbang_cover"];
_AnimToPlay_1 = _AnimArray_1 select (floor(random(count _AnimArray_1)));
if (_victim getVariable ["anim_switched", false]) exitWith {};
[_victim, _AnimToPlay_1] remoteExec ["switchMove", 0];
_victim setVariable ["anim_switched", true, true];
sleep 1.9;
_AnimArray_2 = ["UnconsciousFaceDown", "UnconsciousReviveLegs_B", "UnconsciousReviveHead_A", "UnconsciousReviveDefault_B", "UnconsciousReviveDefault_A", "UnconsciousReviveBody_B", "UnconsciousFaceLeft", "Acts_LyingWounded_loop3", "acts_InjuredLyingRifle01", "Acts_InjuredCoughRifle02", "Acts_InjuredSpeakingRifle01", "Acts_InjuredLyingRifle02_180", "Acts_InjuredLookingRifle01", "Acts_InjuredLookingRifle02", "Acts_InjuredLookingRifle03", "Acts_InjuredLookingRifle04", "Acts_InjuredLookingRifle05", "Acts_InjuredAngryRifle01", "Acts_CivilInjuredLegs_1", "Acts_CivilInjuredChest_1", "Acts_CivilInjuredArms_1", "AmovPpneMstpSrasWrflDnon_injuredHealed", "AinjPpneMstpSnonWrflDnon_injuredHealed"];
_AnimToPlay_2 = _AnimArray_2 select (floor(random(count _AnimArray_2)));
[_victim, _AnimToPlay_2] remoteExec ["switchMove", 0];
if (_sleepTime > 0) then {
sleep _sleepTime;
};
Ты мне помог там здорово, спасибо.
Вызывается в init.sqf так: {_x addEventHandler ["Hit", {[_this] execVM "Soldier_Hit.sqf";}] } forEach (allUnits-playableUnits);
Судя по этому скрипту при "hit" бот проигрывает анимацию ранения, валяясь на земле. Вот именно в этот момент он не должен болтать приказы, а он менторским голосом повторяет их. Как отключить ему болтовню в этот момент?