La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 22:02:47


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 20/04/2005 12:21:03 Sujet du message : Dialogue avec PNJ qui va s'asseoir [règlé]

Salut,
Je souhaite qu'à l'issue d'un dialogue, le PNJ aille s'asseoir sur une chaise. Là non seulement il devra rester assis, même si on lui parle, mais aussi lancer un autre dialogue si on s'adresse à lui.

Pour finir, à la fin de ce second dialoque, il devra retourner à sa place initiale

C'est tout Razz

Voici un script que j'ai récupéré ici, pour faire asseoir le PNJ.
NWScript :
void main()
{
    ClearAllActions();
    ActionWait(15.0);
    ActionMoveToObject( GetWaypointByTag( "Ben_01" ), FALSE, 0.0 );
    int i = 1;

    object oChair = GetNearestObjectByTag("chaise", OBJECT_SELF,i);
    int bFoundChair = FALSE;
    while (bFoundChair == FALSE && GetIsObjectValid(oChair) == TRUE)
    {

//Cette chaise est libre
if (GetIsObjectValid(GetSittingCreature(oChair)) == FALSE)
    {
    bFoundChair = TRUE;
    ActionSit(oChair);
    }
    else
    {
    i++;
    oChair = GetNearestObjectByTag("chaise", OBJECT_SELF,i);
    }
    }
    if (bFoundChair == FALSE)
    {
    ClearAllActions();

ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD);
}
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

Je l'ai mis à la fin du dialogue comme action conséquente, et ça marche, sauf qu'il ne reste pas assis si on lui parle ! Autre problème, il court vers la chaise au lieu de marcher normalement...

Pour ce faire j'ai ce script :
NWScript :
if(GetCommandable(OBJECT_SELF)){
    {
        BeginConversation();
        }
    ClearAllActions();
    int nChair = 1;
    object oChair;
    oChair = GetNearestObjectByTag("chaise", OBJECT_SELF, nChair);
    ActionSit(oChair);
    }
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.

à mettre dans le "ONConversation" du PNJ. Il faudrait y rajouter une autre condition : à la fin du dialogue je fais passer une variable à 1. Il faudrait rajouter cette condition dans cet autre script pour qu'il reste assis uniquement si le premier dial est terminé, mais comment faire ?
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
Dernière édition par Eldorane le 21/04/2005 15:54:45; édité 2 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 20/04/2005 12:59:00 Sujet du message :

NWScript :

if (GetLocalInt(OBJECT_SELF,"dial1")==1)
{

if(GetCommandable(OBJECT_SELF)){
{
BeginConversation();
}
ClearAllActions();
int nChair = 1;
object oChair;
oChair = GetNearestObjectByTag("chaise", OBJECT_SELF, nChair);
ActionSit(oChair);
}
}

else ExecuteScript("nw_c2_default4", OBJECT_SELF);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Mais le problème c'est que il est bien précisé sur le script que tu utilises pour qu'il reste assis que :

Citation :
Make sure you have a sit command in
OnSpawn part of your NPC. Otherwise
This will make the NPC sit AFTER the
conversation.
Enfin, fait quand même le test avec différent type de chaise, parfois moi le PNJ restait assis et si je changeais de chaise, il se levait puis allait à nouveau s'assoir.(ça fonctionne avec une chaise toute basique medium chair)

Sinon pour pas qu'il court sur la chaise :

NWScript :
{
bFoundChair = TRUE;
ActionMoveToObject(oChair,FALSE,0.5);
ActionSit(oChair);
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Citation :

Il faudrait y rajouter une autre condition : à la fin du dialogue je fais passer une variable à 1. Il faudrait rajouter cette condition dans cet autre script pour qu'il reste assis uniquement si le premier dial est terminé, mais comment faire ?
Mais s'il est assit c'est que le premier dial est terminé, c'est pas ce que tu dis plus haut ?

Citation :
Je souhaite qu'à l'issue d'un dialogue, le PNJ aille s'asseoir sur une chaise
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 20/04/2005 13:56:46 Sujet du message :

Bon, déjà le PNJ va tranquillement s'assoier à la fin du 1er dialogue.
Mais il ne reste pas assis lorsqu'on lui adresse la parole.

J'ai changé le tag de la chaise, pris des chaises simples d'origine etc...



Citation :
Mais s'il est assit c'est que le premier dial est terminé, c'est pas ce que tu dis plus haut ?
Oui, mais comme j'ai mis ce script dans le ONConversation du PNJ, il va aller s'asseoir dés qu'on lui parle, même si le 1er dial n'est pas terminé !
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Darkavanger
Grand Chevalier
Inscrit le: 15 Déc 2004
Messages: 114
Répondre en citant
Posté le : 20/04/2005 15:17:46 Sujet du message :


Citation :
Mais il ne reste pas assis lorsqu'on lui adresse la parole.
je suis quasiment sûr que c'est impossible, j'avais lu ça quelque part, sur ce forum il me semble d'ailleur, et on m'a répondu que c'était impossible.

L'erreur est humaine, et je peus me tromper, mais c'est ce que je sais là dessus.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 20/04/2005 16:29:41 Sujet du message :

Je viens de le dire plus haut.

Un PNJ ne reste assis quand on lui parle, UNIQUEMENT si il s'assoit dans son onSpawn, je livre ici le script entier avec les commentaires de l'auteur.

NWScript :
////////////////////////////// //////////////
////////////////////////////// //////////////
//////  NPC - Sit and Talk
//////  Causes NPC to sit and face in the
//////  Direction of the chair while talking
//////  to the PC.
////////////////////////////// //////////////
////////////////////////////// //////////////
//////  Scripted by: Weeping Ashes
//////  Date:  July 1, 2002
//////  Scripting Time:  33hrs 14 mins
//////  Is aware he is a newbie...
////////////////////////////// //////////////
////////////////////////////// //////////////
/////  Make sure you have a sit command in
/////  OnSpawn part of your NPC.  Otherwise
/////  This will make the NPC sit AFTER the
/////  conversation.
////////////////////////////// //////////////
////////////////////////////// //////////////
void main()
{
    if(GetCommandable(OBJECT_SELF)){
    //This sets the NPC as the speaker
    {
        BeginConversation();
        //This starts the conversation script.
        }
    ClearAllActions();
    // Clears the actions so the NPC will not follow you with his/her eyes
    int nChair = 1;
    object oChair;
    oChair = GetNearestObjectByTag("CaisseBanc", OBJECT_SELF, nChair);
    ActionSit(oChair);
    //Sits the NPC down
    }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.



Je l'utilise sur des PNJ qui s'asseyent directement à leur spawn et ça fonctionne, effectivement sur un banc le gars ne se lève pas quand on lance le dialogue par exemple.

Mais pour on cas présent, le script ne te sert à rien et je peux assurer à 99% qu'il n'y a pas de solution à ce probleme.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 20/04/2005 20:31:47 Sujet du message :

ok, c'est clair maintenant ! merci !!!!
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 20/04/2005 23:07:04 Sujet du message :

J'ai tout de même un autre question (et oui encore une !)

pour les variables incrémentée comme ça :
NWScript :
SetLocalInt(GetPCSpeaker(), "xxxxx", 1);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


elles ne concernent qu'un seul PJ. Si j'utilise ça en multi, elle ne sera mise à 1 que pour le GetPCSpeaker ! Est il possible de l'incrémenter pour tout le groupe ?
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 20/04/2005 23:28:41 Sujet du message :

NWScript :
float nDistance = 10.0;
object oPC = GetPCSpeaker();
object oTest = GetFirstObjectInShape(SHAPE_SPHERE, nDistance, GetLocation(oPC));

while (oTest != OBJECT_INVALID)
{
if (GetIsPC(oTest)) SetLocalInt(oTest, "xxx", 1);

oTest = GetNextObjectInShape(SHAPE_SPHERE, nDistance, GetLocation(oPC));
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Le premier incrémenté sera le PJ qui parle à ton PNJ, puis ensuite tous les joueurs dnas un rayon de 10m.

je pensais que tu t'en souviendrai Mad
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Eldorane
Héros
Inscrit le: 18 Oct 2003
Messages: 298
Localisation: Moselle
Répondre en citant
Posté le : 21/04/2005 01:10:12 Sujet du message :

J'ai la mémoire courte .. manque de phosphore sans doute...

et une fois de plus MERCI Stan ! SmileSmileSmileSmile
_________________

Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication !

_________________
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 47.25ms