JeuxOnLineForumsPlusConnectés : 252 (sites) | 421 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Problème script "réunion" RSS
   
Répondre
Partager Outils Rechercher
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Oh, mais de quoi on se plaint, ce sont de tous petits problème ça...
Mais qu'ils meurent ces pingouins !


Bon OK, alors voyons à améliorer tout ça :

OnHeartBeat, cette fois-ci sans les chichis :
Code PHP:
//OnHeartBeat (by Jedaï)
//for the penguins...

void main()
{
    
//on récupère le pingouin dont le coeur bat..
    
object oSelf OBJECT_SELF;
    
    
//si il n'est pas assommé :
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on le fait causer
        
        //on fait le choix d'une phrase au hasard :
        
int nRand Random(10); //s'il y a dix phrases
        //la variable où on va mettre la phrase :
        
string sPhrase "";
        
        
//une animation (facultatif)
        
int nAnim = -1;
        
        
//ne pas oublier que Random(n) renvoit un nombre de 0 à n-1
        
switch( nRand )
        {
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_DRINK;
            break;
        case 
:
            
sPhrase "Rendez-nous nos sardines !";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_GREETING;
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_VICTORY1;
            break;
        case 
:
            
sPhrase "A bas la tyrannie des phoques !!";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        }
        
//rajoute des phrases et des anims autant que tu veux
        //attention, les anims doivent être des FIREFORGET
        
        
SpeakStringsPhrase );
        
        if( 
nAnim > -)
            
PlayAnimationnAnim );
    }
    else 
//s'il est endormi, on le fait ronfler
    
{
        
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
    }

Et un OnDamaged sérieusement relooké :
Code PHP:
//OnDamaged (by Jedaï)
//for the penguins

//Le nombre total de pingouins à assommer
int NB_PARTICIPANTS 15;

void main()
{
    
object oSelf OBJECT_SELF;
    
    
//l'état actuel du pingouin
    
int bState GetLocalIntoSelf"bAssomme" );
    
    
//le pingouin n'est pas encore assommé
    
if( ! bState )
    {
        
//on vérifie si ses points de vie sont descendus
        //en dessous de 100
        
if( GetCurrentHitPointsoSelf ) < 100 )
        {
            
//l'organisateur qui donne la quête, met le bon tag
            
object oBoss GetObjectByTag"le tag de l'organisateur" );
                
            
//le nombre de pingouins déjà assommés
            
int nNbAssomme GetLocalIntoBoss"nNb_Assomme" );
            
            
//Si oui, on l'assomme
            
effect eSleep EffectSleep();
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSleepoSelf );
            
//On le fait ronfler
            
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
            
            
//Et on le rend invulnérable
            
SetPlotFlagoSelfTRUE );
            
            
//On stocke qu'il est assommé
            
SetLocalIntoSelf"bAssomme"TRUE );
            
            
//on incrémente le nombre de pingouins assommés
            
nNbAssomme++;
            
//et on le stocke sur le pingouin en chef
            
SetLocalIntoBoss"nNb_Assomme"nNbAssomme );
            
            
//si tous les agitateurs ont été assommés
            
if( nNbAssomme >= NB_PARTICIPANTS )
            {
                
//le PJ qui vient de frapper le pingouin
                
object oPJ GetLastDamager();
                
                
//on fait agir le pingouin en chef
                
AssignCommandoBossClearAllActionsTRUE ) );
                
AssignCommandoBossActionSpeakString"Bravo, superbe !" +
                                                         
" Enfin un peu de calme" ) );
                
AssignCommandoBossActionStartConversationoPJ ) );
            }
        }
    }

Normalement ça devrait mieux marcher...quoique...
Lien direct vers le message - Vieux
Avatar de kaliyouga
kaliyouga
Roi
 
Avatar de kaliyouga
 
wow, merci !

Super cool ^^

il reste juste un petit pb...

Une fois le pingouin a terre et endormi, si on lui tente le coup de grace, cela ne lui fait pas de degats (heuresement!) MAIS il se relève... ce qui donne ca:

[IMG]http://******************/kalivideos/pingouin.JPG[/IMG]

^^

Bon, c'est un problème mineur, mais je ne sait comment l'éviter ;p

woila

encore merci
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 

Et voilà les terrifiants pingouins zombies...

Je pensais que le Plot suffirait à éviter qu'il se réveille mais visiblement....

On va tenter deux choses, si la première marchait, ça serait mieux que la seconde mais bon...

Alors premier essai, si le OnDamaged marche toujours sur les pingouins, malgré qu'il ne soit pas endommagé (sic), on peut rétablir l'effet de sommeil dessus :
Code PHP:
//OnDamaged (by Jedaï)
//for the penguins

//Le nombre total de pingouins à assommer
int NB_PARTICIPANTS 15;

void main()
{
    
object oSelf OBJECT_SELF;
    
    
//le pingouin n'est pas encore assommé
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on vérifie si ses points de vie sont descendus
        //en dessous de 100
        
if( GetCurrentHitPointsoSelf ) < 100 )
        {
            
//l'organisateur qui donne la quête, met le bon tag
            
object oBoss GetObjectByTag"le tag de l'organisateur" );
                
            
//le nombre de pingouins déjà assommés
            
int nNbAssomme GetLocalIntoBoss"nNb_Assomme" );
            
            
//Si oui, on l'assomme
            
effect eSleep EffectSleep();
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSleepoSelf );
            
//On le fait ronfler
            
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
            
            
//Et on le rend invulnérable
            
SetPlotFlagoSelfTRUE );
            
            
//On stocke qu'il est assommé
            
SetLocalIntoSelf"bAssomme"TRUE );
            
            
//on incrémente le nombre de pingouins assommés
            
nNbAssomme++;
            
//et on le stocke sur le pingouin en chef
            
SetLocalIntoBoss"nNb_Assomme"nNbAssomme );
            
            
//si tous les agitateurs ont été assommés
            
if( nNbAssomme >= NB_PARTICIPANTS )
            {
                
//le PJ qui vient de frapper le pingouin
                
object oPJ GetLastDamager();
                
                
//on fait agir le pingouin en chef
                
AssignCommandoBossClearAllActionsTRUE ) );
                
AssignCommandoBossActionSpeakString"Bravo, superbe !" +
                                                         
" Enfin un peu de calme" ) );
                
AssignCommandoBossActionStartConversationoPJ ) );
            }
        }
    }
    else 
//si le PJ s'acharne
    
{
        
//on rétablit l'effet de sommeil
        
ApplyEffectToObjectDURATION_TYPE_PERMANENTEffectSleep(), oSelf );
    }

Sinon, si ça marche pas (mais uniquement si ça ne marche pas), on rétablira l'effet de sommeil sur le OnHeartBeat, même si ça va faire bizarre de les voir se ré-effondrer tout seul...

Code PHP:
//OnHeartBeat (by Jedaï)
//for the penguins...

void main()
{
    
//on récupère le pingouin dont le coeur bat..
    
object oSelf OBJECT_SELF;
    
    
//si il n'est pas assommé :
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on le fait causer
        
        //on fait le choix d'une phrase au hasard :
        
int nRand Random(10); //s'il y a dix phrases
        //la variable où on va mettre la phrase :
        
string sPhrase "";
        
        
//une animation (facultatif)
        
int nAnim = -1;
        
        
//ne pas oublier que Random(n) renvoit un nombre de 0 à n-1
        
switch( nRand )
        {
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_DRINK;
            break;
        case 
:
            
sPhrase "Rendez-nous nos sardines !";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_GREETING;
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_VICTORY1;
            break;
        case 
:
            
sPhrase "A bas la tyrannie des phoques !!";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        }
        
//rajoute des phrases et des anims autant que tu veux
        //attention, les anims doivent être des FIREFORGET
        
        
SpeakStringsPhrase );
        
        if( 
nAnim > -)
            
PlayAnimationnAnim );
    }
    else 
//s'il est endormi, on le fait ronfler
    
{
        
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
        
        
//on rétablit l'effet de sommeil
        
ApplyEffectToObjectDURATION_TYPE_PERMANENTEffectSleep(), oSelf );
    }

Voilà, en espérant que le premier marche !
Lien direct vers le message - Vieux
Avatar de kaliyouga
kaliyouga
Roi
 
Avatar de kaliyouga
 
Malheuresement aucun des deux ne marchent...

J'ai juste remarqué qu'avec le premier, le pingouin met plus de temps a tomber et a s'endormir...

voila
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
OK, on revient à notre première idée, avec une petite correction :

Code PHP:
//OnDamaged (by Jedaï)
//for the penguins

//Le nombre total de pingouins à assommer
int NB_PARTICIPANTS 15;

void main()
{
    
object oSelf OBJECT_SELF;
    
    
//le pingouin n'est pas encore assommé
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on vérifie si ses points de vie sont descendus
        //en dessous de 100
        
if( GetCurrentHitPointsoSelf ) < 100 )
        {
            
//l'organisateur qui donne la quête, met le bon tag
            
object oBoss GetObjectByTag"le tag de l'organisateur" );
                
            
//le nombre de pingouins déjà assommés
            
int nNbAssomme GetLocalIntoBoss"nNb_Assomme" );
            
            
//Si oui, on l'assomme
            
effect eSleep EffectSleep();
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSleepoSelf );
            
//On le fait ronfler
            
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
            
            
//Et on le rend immunisé à la mort immédiate
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTEffectImmunityIMMUNITY_TYPE_DEATH ), oSelf );
            
            
//On stocke qu'il est assommé
            
SetLocalIntoSelf"bAssomme"TRUE );
            
            
//on incrémente le nombre de pingouins assommés
            
nNbAssomme++;
            
//et on le stocke sur le pingouin en chef
            
SetLocalIntoBoss"nNb_Assomme"nNbAssomme );
            
            
//si tous les agitateurs ont été assommés
            
if( nNbAssomme >= NB_PARTICIPANTS )
            {
                
//le PJ qui vient de frapper le pingouin
                
object oPJ GetLastDamager();
                
                
//on fait agir le pingouin en chef
                
AssignCommandoBossClearAllActionsTRUE ) );
                
AssignCommandoBossActionSpeakString"Bravo, superbe !" +
                                                         
" Enfin un peu de calme" ) );
                
AssignCommandoBossActionStartConversationoPJ ) );
            }
        }
    }
    else 
//si le PJ s'acharne
        
{
            
//on soigne le pingouin pour éviter qu'il ne meure
            
effect eSoin EffectHealGetTotalDamageDealt() );
            
ApplyEffectToObjectDURATION_TYPE_INSTANTeSoinoSelf );
            
            
//et on le rendort
            
effect eSleep EffectSleep();
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSleepoSelf );
        }

J'espère que ce coup ci ça le fera...

Code PHP:
//OnHeartBeat (by Jedaï)
//for the penguins...

void main()
{
    
//on récupère le pingouin dont le coeur bat..
    
object oSelf OBJECT_SELF;
    
    
//si il n'est pas assommé :
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on le fait causer
        
        //on fait le choix d'une phrase au hasard :
        
int nRand Random(10); //s'il y a dix phrases
        //la variable où on va mettre la phrase :
        
string sPhrase "";
        
        
//une animation (facultatif)
        
int nAnim = -1;
        
        
//ne pas oublier que Random(n) renvoit un nombre de 0 à n-1
        
switch( nRand )
        {
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_DRINK;
            break;
        case 
:
            
sPhrase "Rendez-nous nos sardines !";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_GREETING;
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_VICTORY1;
            break;
        case 
:
            
sPhrase "A bas la tyrannie des phoques !!";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        }
        
//rajoute des phrases et des anims autant que tu veux
        //attention, les anims doivent être des FIREFORGET
        
        
SpeakStringsPhrase );
        
        if( 
nAnim > -)
            
PlayAnimationnAnim );
    }
    else 
//s'il est endormi, on le fait ronfler
    
{
        
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
    }

On va finir par y arriver
Lien direct vers le message - Vieux
Avatar de kaliyouga
kaliyouga
Roi
 
Avatar de kaliyouga
 
hum :)
Le premier script fait que le pingouin meurt quand il est attaqué a terre...

Le deuxieme ne change rien, le pingouin se relève et ne se recouche pas.


Enfin bon, on avance

merci a toi de m'aider comme ca
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Ah bon, IMMUNITY_TYPE_DEATH ne prévient pas le coup de grâce ?

Bon alors voyons....

Mets ces deux scripts, on va voir ce que ça va donner :
Code PHP:
//OnHeartBeat (by Jedaï)
//for the penguins...

void main()
{
    
//on récupère le pingouin dont le coeur bat..
    
object oSelf OBJECT_SELF;
    
    
//si il n'est pas assommé :
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on le fait causer
        
        //on fait le choix d'une phrase au hasard :
        
int nRand Random(10); //s'il y a dix phrases
        //la variable où on va mettre la phrase :
        
string sPhrase "";
        
        
//une animation (facultatif)
        
int nAnim = -1;
        
        
//ne pas oublier que Random(n) renvoit un nombre de 0 à n-1
        
switch( nRand )
        {
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_DRINK;
            break;
        case 
:
            
sPhrase "Rendez-nous nos sardines !";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_GREETING;
            break;
        case 
:
            
sPhrase "";
            
nAnim ANIMATION_FIREFORGET_VICTORY1;
            break;
        case 
:
            
sPhrase "A bas la tyrannie des phoques !!";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        case 
:
            
sPhrase "";
            break;
        }
        
//rajoute des phrases et des anims autant que tu veux
        //attention, les anims doivent être des FIREFORGET
        
        
SpeakStringsPhrase );
        
        if( 
nAnim > -)
            
PlayAnimationnAnim );
    }
    else 
//s'il est endormi, on le fait ronfler
    
{
        
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
    }
}


//OnDamaged (by Jedaï)
//for the penguins

//Le nombre total de pingouins à assommer
int NB_PARTICIPANTS 15;

void main()
{
    
object oSelf OBJECT_SELF;
    
    
//le pingouin n'est pas encore assommé
    
if( ! GetLocalIntoSelf"bAssomme" ) )
    {
        
//on vérifie si ses points de vie sont descendus
        //en dessous de 100
        
if( GetCurrentHitPointsoSelf ) < 100 )
        {
            
//l'organisateur qui donne la quête, met le bon tag
            
object oBoss GetObjectByTag"le tag de l'organisateur" );
                
            
//le nombre de pingouins déjà assommés
            
int nNbAssomme GetLocalIntoBoss"nNb_Assomme" );
            
            
//Si oui, on l'assomme
            
effect eSleep EffectSleep();
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSleepoSelf );
            
//On le fait ronfler
            
ApplyEffectToObjectDURATION_TYPE_INSTANTEffectVisualEffectVFX_IMP_SLEEP ), oSelf );
            
            
//Et on le rend invincible
            
SetPlotFlagoSelfTRUE );
            
            
//On stocke qu'il est assommé
            
SetLocalIntoSelf"bAssomme"TRUE );
            
            
//on incrémente le nombre de pingouins assommés
            
nNbAssomme++;
            
//et on le stocke sur le pingouin en chef
            
SetLocalIntoBoss"nNb_Assomme"nNbAssomme );
            
            
//si tous les agitateurs ont été assommés
            
if( nNbAssomme >= NB_PARTICIPANTS )
            {
                
//le PJ qui vient de frapper le pingouin
                
object oPJ GetLastDamager();
                
                
//on fait agir le pingouin en chef
                
AssignCommandoBossClearAllActionsTRUE ) );
                
AssignCommandoBossActionSpeakString"Bravo, superbe !" +
                                                         
" Enfin un peu de calme" ) );
                
AssignCommandoBossActionStartConversationoPJ ) );
            }
        }
    }
    else 
//si le PJ s'acharne
        
{
            
SetPlotFlagoSelfFALSE );
        
            
//et on le rendort
            
effect eSleep EffectSleep();
            
ApplyEffectToObjectDURATION_TYPE_PERMANENTeSleepoSelf );
            
            
SetPlotFlagoSelfTRUE );
        }


Mais si, un jour nous y arriverons !
Lien direct vers le message - Vieux
Avatar de kaliyouga
kaliyouga
Roi
 
Avatar de kaliyouga
 
wow merci ^^

c'est parfait

cool
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Problème script "réunion"
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 05h32.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite