La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 28/04/2025 23:22:46


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 16/12/2003 11:46:41 Sujet du message : stoper un PC dans sa course

Bien...le probleme du jour

details du probleme

A- le PC passe sur le trigger et il s'arrete peu après : le dialogue apparait et il se met à genoux Very Happy

B- s'il continue sa course : OK pour le dialogue mais il ne se met pas à genoux Mad

voilà le script :

NWScript :

void main()
{
object oEntering = GetEnteringObject();
if (GetIsPC(oEntering))
        {
        if (GetLocalInt(oEntering,"a_genoux")==TRUE)
            {
            }
        else
            {

  AssignCommand(oEntering, SpeakString("Par Luchtucruz, ma citee..."));
          ActionPauseConversation();
          AssignCommand(oEntering, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 0.7, 5.0));
            SetLocalInt(oEntering,"a_genoux",TRUE);
            }
        }
}
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.


y a t il une fonction qui peut obliger le PC à s'arrêter et tomber à genoux (en perdant la main sur le PC qq secondes)

à vos neurones

(ne pas tenir compte de ma variable a_genoux)

amicalement
_________________
Rien ne vaut la recherche lorsqu'on veut trouver quelque chose.

[J. R. R. Tolkien]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lavok
Légende vivante
Inscrit le: 22 Oct 2002
Messages: 434
Localisation: Sphère planaire
Répondre en citant
Posté le : 16/12/2003 12:22:46 Sujet du message :


yellow submarine a écrit :
y a t il une fonction qui peut obliger le PC à s'arrêter et tomber à genoux (en perdant la main sur le PC qq secondes)
Oui : 'SetCommandable(FALSE, oEntering)' et 'ClearAllActions(oEntering)'.
_________________
ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera.

Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 16/12/2003 12:47:12 Sujet du message :


Lavok a écrit :

yellow submarine a écrit :
y a t il une fonction qui peut obliger le PC à s'arrêter et tomber à genoux (en perdant la main sur le PC qq secondes)
Oui : 'SetCommandable(FALSE, oEntering)' et 'ClearAllActions(oEntering)'.
ClearAllActions ne fonctionne pas comme tu dis Lavok. Il faut faire AssignCommand(oEntering, ClearAllActions())
En l'occurrence, il est bon de préciser à quoi servent ces fonctions. SetCommandable (avec le premier paramètre à FALSE) empêche le joueur de continuer à transmettre des commandes à son personnage. Le ClearAllActions va ensuite vider complètement la queue d'action du personnage, ce qui permet d'y insérer autre chose (comme ce que tu cherches à faire). Après cela, il ne faut pas oublier de remettre SetCommandable avec le premier paramètre à TRUE pour que le joueur reprenne la main sur son personnage. Le mieux est d'ailleurs de l'insérer dans la file d'action après les actions forcées que l'on souhaite lui faire faire, de la façon suivante :
Code :

AssignCommand(oEntering, ActionDoCommand(SetCommandable(TRUE, oEntering)));

De cette façon la restitution du contrôle au joueur est ajouté à la queue d'action et jouée après les actions forcées.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 16/12/2003 12:50:25 Sujet du message :

merci encore


Lavok a écrit :
Oui : 'SetCommandable(FALSE, oEntering)' et 'ClearAllActions(oEntering)'.
bien je vais tester cela

amicalement
_________________
Rien ne vaut la recherche lorsqu'on veut trouver quelque chose.

[J. R. R. Tolkien]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Lavok
Légende vivante
Inscrit le: 22 Oct 2002
Messages: 434
Localisation: Sphère planaire
Répondre en citant
Posté le : 16/12/2003 13:13:42 Sujet du message :


lendraste a écrit :


Lavok a écrit :

yellow submarine a écrit :
y a t il une fonction qui peut obliger le PC à s'arrêter et tomber à genoux (en perdant la main sur le PC qq secondes)
Oui : 'SetCommandable(FALSE, oEntering)' et 'ClearAllActions(oEntering)'.
ClearAllActions ne fonctionne pas comme tu dis Lavok. Il faut faire AssignCommand(oEntering, ClearAllActions())
En l'occurrence, il est bon de préciser à quoi servent ces fonctions. SetCommandable (avec le premier paramètre à FALSE) empêche le joueur de continuer à transmettre des commandes à son personnage. Le ClearAllActions va ensuite vider complètement la queue d'action du personnage, ce qui permet d'y insérer autre chose (comme ce que tu cherches à faire). Après cela, il ne faut pas oublier de remettre SetCommandable avec le premier paramètre à TRUE pour que le joueur reprenne la main sur son personnage. Le mieux est d'ailleurs de l'insérer dans la file d'action après les actions forcées que l'on souhaite lui faire faire, de la façon suivante :
Code :
 
AssignCommand(oEntering, ActionDoCommand(SetCommandable(TRUE, oEntering)));

De cette façon la restitution du contrôle au joueur est ajouté à la queue d'action et jouée après les actions forcées.
(Je ne faisais que citer ces deux fonctions ; apparement, j'aurais dû aussi le préciser et les expliquer)
_________________
ToB : Une seule chose semble certaine : tant que le trône de sang de Bhaal restera vide, le chaos règnera.

Moi : Une seule chose semble certaine : tant que la tête de singe de Bush restera vide, le chaos règnera.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 16/12/2003 13:36:35 Sujet du message :

si j ai tout compris cela doit donner cela :


NWScript :

void main()
{
object oEntering = GetEnteringObject();
if (GetIsPC(oEntering))
        {
        if (GetLocalInt(oEntering,"a_genoux")==TRUE)
            {
            }
        else
            {
  SetCommandable(FALSE, oEntering);
  AssignCommand(oEntering, ClearAllActions());

// mes commandes
  AssignCommand(oEntering, SpeakString("Par Luchtucruz, ma citee..."));
          ActionPauseConversation();
    AssignCommand(oEntering, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 0.7, 5.0));
            SetLocalInt(oEntering,"a_genoux",TRUE);

    AssignCommand(oEntering, ActionDoCommand(SetCommandable(TRUE, oEntering)));

      }
    }
}
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 j'ai pas du tout comprendre car :

le dialogue ok Smile
mais la suite est KKKatastrophique Laughing

il ne se met pas à genoux et je perd définitevement la main Crying or Very sad

amicalement
_________________
Rien ne vaut la recherche lorsqu'on veut trouver quelque chose.

[J. R. R. Tolkien]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lendraste
Grand Maître Chanteur du Conseil
Inscrit le: 20 Fév 2003
Messages: 1403
Localisation: Quelque part ailleurs
Répondre en citant
Posté le : 16/12/2003 15:05:50 Sujet du message :


yellow submarine a écrit :

mais j'ai pas du tout comprendre car :

le dialogue ok Smile
mais la suite est KKKatastrophique Laughing

il ne se met pas à genoux et je perd définitevement la main Crying or Very sad

amicalement
En fait, je me demandais ce que ActionPauseConversation venait faire là ? Il n'y a aucune conversation en cours à ce moment non ? Car si j'ai bien compris, c'est au moment ou le personnage entre dans un trigger que se déclenche l'animation ? Je ne suis pas sûr que le ActionPauseConversation soit responsable, mais il ne faut rien négliger.
Par ailleurs, je tiens à préciser que avec ou sans le SetCommandable, l'animation fonctionnera. Donc, pour faire tes tests, je te suggère de les mettre en remarque jusqu'à ce que tu sois sûr de ton coup.
Si j'ai bien compris, la fonction de la variable "a_genoux" est d'empêcher que l'animation soit jouée plus d'une fois (si le personnage entre à nouveau dans le trigger). Ce test peut être évité en détruisant le trigger, tout simplement.
Voici ce que cela donnerait (je mets en remarque les SetCommandable qui sont optionnels pour le moment) :
NWScript :

void main()
{
  object oEntering = GetEnteringObject();
  if (GetIsPC(oEntering))
  {
   
    AssignCommand(oEntering, ClearAllActions());
    AssignCommand(oEntering, ActionSpeakString(""));
    AssignCommand(oEntering, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 0.7, 5.0));
   
    DestroyObject(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.


Important aussi, le ActionSpeakString à la place du SpeakString. Le premier va s'ajouter dans la queue d'action (ce qui est utile si l'on souhaite insérer une action d'attente (ActionWait) avant une parole) ce qui n'est pas le cas du second qui se joue immédiatement.
Essaye ça pour voir (dans un premier temps en laissant le contrôle à ton personnage). Je serais tout de même étonné que cela ne fonctionne pas.

PS : j'ai corrigé la phrase prononcée par le personnage en supposant que celui-ci parlait d'une "cité". Désolé si ce n'est pas le cas.
_________________
Lendraste de Loreval
Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel.
La cité des mensonges - 1
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Numéro ICQ Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 16/12/2003 15:50:25 Sujet du message :

Parfait c'est parfait Cool

amicalement
_________________
Rien ne vaut la recherche lorsqu'on veut trouver quelque chose.

[J. R. R. Tolkien]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 16/12/2003 15:59:47 Sujet du message :

j'ai oublié


lendraste a écrit :

(je mets en remarque les SetCommandable qui sont optionnels pour le moment)
j'ai laissé les SetCommadable en option et ca fonctionne très bien ainsi

encore merci

amicalement

ps: c'est une cité avec des poules, c'est pour cela que j'ai rajouté des "E") Embarassed
_________________
Rien ne vaut la recherche lorsqu'on veut trouver quelque chose.

[J. R. R. Tolkien]
 
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 66.09ms