PHP-Code:
[ _d, _w ] spawn
{
private [ "_d", "_w" ];
_d = _this select 0;
_w = _this select 1;
while { alive _d } do
{
waitUntil { if ( !alive _d ) exitWith {}; sleep 1; ! ( _d getVariable [ "dogGuard_pauseFollow", false ] ) };
if ( alive _d ) then
{
_d moveTo getPos _w;
sleep 2;
};
if ( alive _d AND { !alive _w } ) exitWith
{
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_d moveTo getPos _w;
};
}; // <-- EDIT
// Hier das 'Todes-Heulen' abspielen
playSound3D [ dogGuard_sHowl, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
};
Sobald der Hund ja tot ist wird die While-Schleife ja beendet und das was im Script danach kommt abgearbeitet.
Zum Thema Attacke: Habe ich auch schon dran überlegt, aber ich fands langweilig dem Ziel einfach Schaden zuzufügen ohne das der Hund eine passende Attacke macht. Ich hab nämlich keine passende Animation gefunden.
Mit Schaden aber ohne tolle Animation könnte die 'Auf-Spür-Schleife' dann so aussehen:
PHP-Code:
while { alive _d } do
{
private [ "_e", "_t", "_n" ];
if ( !alive _w ) exitWith {};
_e = _d nearEntities [ _eE, dogGuard_scentRange ];
if ( count _e > 0 ) then
{
playSound3D [ dogGuard_sBark, _d, false, getPos _d, 10, 1, dogGuard_soundRange ];
_t = _e call BIS_fnc_selectRandom;
_d setVariable [ "dogGuard_pauseFollow", true, false ];
_n = time + dogGuard_trackTime;
waitUntil { if ( !( _n > time ) OR { !alive _d } ) then { true } else { sleep 1; _d moveTo getPos _t; ( _d distance _t ) < 10 }; };
if ( alive _d AND { _n > time } ) then
{
playSound3D [ dogGuard_sAttack, _d, false, getPos _d, 20, 1, dogGuard_soundRange ];
( group _w ) reveal [ _t, 2 ];
sleep 2;
};
waitUntil { if ( !( _n > time ) OR { !alive _d } ) then { _d setVariable [ "dogGuard_pauseFollow", false, false ]; true } else { sleep 1; _d moveTo getPos _t; ( _d distance _t ) < 2 }; };
if ( ( _d distance _t ) < 2 AND { alive _d } ) then
{
private [ "_tD" ];
_tD = damage _t;
_t setDamage ( _tD + 0.5 );
};
_d setVariable [ "dogGuard_pauseFollow", false, false ];
sleep 35;
};
sleep 5;
};