Einzelnen Beitrag anzeigen
Alt 24.02.2014, 20:36   #15 (permalink)
T-800a
Newbie
 
Benutzerbild von T-800a
 
Registriert seit: 20.01.2014
Ort: Siegerland
Alter: 39
Beiträge: 41
Standard

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_dfalsegetPos _d101dogGuard_soundRange ]; 
            
_d moveTo getPos _w;
        };

    }; 
// <-- EDIT 

    // Hier das 'Todes-Heulen' abspielen
    
playSound3D dogGuard_sHowl_dfalsegetPos _d101dogGuard_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 _eEdogGuard_scentRange ];
        
        if ( 
count _e then
        
{
            
playSound3D dogGuard_sBark_dfalsegetPos _d101dogGuard_soundRange ];
            
_t _e call BIS_fnc_selectRandom;

            
_d setVariable "dogGuard_pauseFollow"truefalse ];

            
_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_dfalsegetPos _d201dogGuard_soundRange ];
                ( 
group _w reveal _t];
                
sleep 2;
            };
            
            
waitUntil { if ( !( _n time ) OR { !alive _d } ) then _d setVariable "dogGuard_pauseFollow"falsefalse ]; true } else { sleep 1_d moveTo getPos _t; ( _d distance _t ) < }; };

            if ( ( 
_d distance _t ) < AND { alive _d } ) then 
            
{
                private [ 
"_tD" ];
                
                
_tD damage _t;
                
_t setDamage _tD 0.5 );
            };
            
            
_d setVariable "dogGuard_pauseFollow"falsefalse ];
            
sleep 35;
        };
        
sleep 5;
    }; 
__________________
for pony!

Geändert von T-800a (25.02.2014 um 21:46 Uhr).
T-800a ist offline