Un peu de vie dans une taverne

Répondre
Partager Rechercher
Pour donner un peu de vie aux convives d une taverne ( par exemple) et eviter que les NPC se regardent dans les yeux sans rien faire, je vous propose ce petit script à mettre sur le HB du NPC :

Code PHP:

void animation(object Objstring anim)
{
    
PlayCustomAnimation(Obj,anim,1);
}



void main()
{
    
if (
IsInConversation(OBJECT_SELF) || GetIsInCombat()) return;
    
object chaise=GetNearestObjectByTag("chaise");
    
object PNJ=OBJECT_SELF;
    
location Lloc=Location(GetArea(chaise),GetPosition(chaise),GetFacing(chaise)+180);
    
AssignCommand(PNJ,JumpToLocation(Lloc));
    

//*    PlayCustomAnimation(PNJ, "sitidle", 1);


        
int nRandom=Random(6);
            if (
nRandom==0)
            {
                
animation(PNJ,"siteat");
            }
            else if  (
nRandom==1)
            {
                
animation(PNJ,"sitdrink");
            }
            else if  (
nRandom==2)
            {
                
animation(PNJ,"sittalk");
            }
             else if  (
nRandom==3)
            {
                
animation(PNJ,"sitidle");
            }
             else if  (
nRandom==4)
            {
                
animation(PNJ,"sitidle");
            }
             else if  (
nRandom==4)
            {
                
animation(PNJ,"sitfidget");
            }
            else if  (
nRandom==5)
            {
                
animation(PNJ,"sitidle");
            }

Ne me demandez pas pourquoi j ai mis le PlayCustomAnimation dans une fonction a part, j avais quelque chose en tete, mais je l ai perdu en cours de route.

Un autre script qui permet d avoir un NPC qui joue de la musique, danse bref anim aussi une auberge :

Code PHP:

void main()
{
    
int nRandom=Random(6);
if (
IsInConversation(OBJECT_SELF) || GetIsInCombat()) return;

        if (
nRandom==0)
        
PlayCustomAnimation(OBJECT_SELF,"dance02"1);
    else if (
nRandom==1)
        
PlayCustomAnimation(OBJECT_SELF,"walkguitar"1);
    else if (
nRandom==2)
        
PlayCustomAnimation(OBJECT_SELF,"idleguitar"1);
    else if (
nRandom==3)
        
PlayCustomAnimation(OBJECT_SELF,"playguitar"1);    
    else if (
nRandom==4)
        
PlayCustomAnimation(OBJECT_SELF,"playguitar"1);        
    else if (
nRandom==5)
        
PlayCustomAnimation(OBJECT_SELF,"wave"1);
    else
        
PlayCustomAnimation(OBJECT_SELF,"walkguitar"1);

oui, merci

Hum mais tu trouves pas que c'est un peu beaucoup dans le HB du NPC ?
Je rajouterai une chance qu'il ne fasse rien, du genre le Random(6) le passer a Random(10) et que de 7 à 10 il ne fait rien, parce que une animation toute les 6 secondes me parrait un peu beaucoup surtout si tu en as plusieurs.
Citation :
Publié par nosfe_
oui, merci

Hum mais tu trouves pas que c'est un peu beaucoup dans le HB du NPC ?
Je rajouterai une chance qu'il ne fasse rien, du genre le Random(6) le passer a Random(10) et que de 7 à 10 il ne fait rien, parce que une animation toute les 6 secondes me parrait un peu beaucoup surtout si tu en as plusieurs.
il faut savoir que le walkwaypoint et les SetSpawnInCondition (CREATURE_VAR_USE_SPAWN_AMBIENT) sont eux aussi basés sur le OHB des créatures. Un random(6) ne surcharge pas beaucoup le serveur
De plus le jeu désactive les IA et les scripts des créatures quand aucun joueur ne se trouve dans la zone où elles sont placées
Citation :
Hum mais tu trouves pas que c'est un peu beaucoup dans le HB du NPC ?
Ce qu'il propose est vraiment une goutte d'eau dans l'océan du OnHeartbeat.

Il faut balayer un peu cette vieille légende qui dit que le "OnHeartbeat" c'est mal.
Prenez par exemple les scripts "OnPhysicalAttacked" et "OnDamaged" des monstres lors d'un combat, et dites-vous qu'un "OnHeartbeat" fait pâle figure à côté de ces deux évènements. Le tout est d'avoir un script qui n'est pas trop gourmand. On peut très bien y mettre un script de 1000 lignes qui exécute des commandes simples.

Un joueur niveau 20 spécialisé à deux armes et qui aurait au moins 6 attaques par round lancerait donc 6 fois le script "OnPhysicalAttacked", et jusqu'à 6 fois le script "OnDamaged".
Oui, je suis d accord avec kortex et deyonara, et de toutes façon les creatures on deja un HB.

J ai testé ce script avec une taverne et une 10 aines de NPC, et je n ai rien constaté come ralantissement. Ne pas oublier aussi que par rapport à NWN I, la puissance de nos proc a considerablement augmenté.

AU fait je ne le savait pas, mais j ai decouvert que les HB de zones sont tout le temps actives, meme quand un joueur n est pas dans la zone...
Citation :
Publié par Ariok
AU fait je ne le savait pas, mais j ai decouvert que les HB de zones sont tout le temps actives, meme quand un joueur n est pas dans la zone...
pour info, tous les OHB sont actifs tous le temps, même s'il n'y a pas de joueurs dans la zone, mis à part les OHB des créatures
Pour ma part si j'ai un script qui se met sur le OHB, et qu'il nécessite la présence de joueur dans la zone afin d'être visible et donc efficace, je préfère mettre une créature, dont je change l'apparence en HommeInvisble, sans colision dans ses propriétés (mais je ne pense pas qu'elles soient calculées )
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés