JeuxOnLineForumsPlusConnectés : 809 (sites) | 1458 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Réponse à un sphinx RSS
   
Répondre
Partager Outils Rechercher
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 

Réponse à un sphinx

Voilà, je voudrais faire un sphinx qui pose une colle aux PJ. Bon, pour la créature et la question, y a pas de problème. Là où ça se corse, c'est que je voudrais que le sphinx ne donne pas plusieurs choix de réponses mais que le PJ donne sa réponse comme s'il parlait normalement.

Mais comment faire?

De plus, je voudrais que - s'il ne répond pas dans les 2 minutes, des monstres apparaissent
- s'il répond faux, des monstres apparaissent
- s'il répond juste, le sphinx lui donne une clé

Et aussi, que le sphinx choisissent aléatoirement entre 4-5 questions que j'aurais définies.

Voila, si quelqu'un a une idée de script, où le mettre, ...

Merci d'avance.
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Il faut que tu utilise les ListenPatterns, que tu mette ton pnj sphinx en pret a ecouter et lui injecter la rponse. Ensuite le reste est assez simple

Tout ce fait avec les Patterns (pour la reponse )
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
oui, mais vois-tu, j'y comprend pas grand chose en script, ... je ne sais meme pas ce que sont les patterns (en français, ca correspond à quoi car j'ai l'éditeur en fr).

si tu pouvais me montrer un peu ce que je dois faire!
Lien direct vers le message - Vieux
Avatar de Ormus
Ormus
Roi
 
Avatar de Ormus
 
Voilà une explication (mais tu n'as probablement pas besoin de tout comprendre) :
http://forums.jeuxonline.info/showth...hreadid=130468

Donc après le passage ou les sphinx pose l'énigme tu lui met un SetListenPattern() avec comme argument la bonne réponse (ce qui fait qu'une fois la bonne réponse entendue son évènement OnConversation sera déclenché). Puis avec AssignCommand tu lui ordonnes d'attendre 2 minutes (ActionWait()) puis de faire apparaître les monstres. (ceci dit peut-être qu'on peut faire avec DelayCommand)

Ensuite, dans le OnConversation tu vérifies avec GetListenPatternNumber() si l'évènement à été déclenché par l'entente de la bonne réponse ( ), si oui ClearAllActions() pour annuler l'apparition des monstres, puis tu lui donnes la clé (me rappelle plus la fonction...GiveItem peut-être).

Voilà je garantis pas du tout que ça marche mais c'est comme ça que je verrais la chose
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Dans le OnConversation de ton sphnix

Code PHP:
 #include "NW_I0_GENERIC"
void main()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    }
if (
iNb == 1000)
    {
    
//Ton code si c'est la bonne reponce ici
    
}
    else
    {
    
//Code du si ce n'est pas la bonne reponce
    
}



Dans le OnSpawn du sphinx

Code PHP:
#include "NW_I0_GENERIC"

void main()
{
    
SetAssociateListenPatterns();
    
SetListeningPatterns();
    
SetListening(OBJECT_SELFTRUE);
    
SetListenPattern(OBJECT_SELF"**reponse**"1000);

PS : si tu as aurora qui te traduit les fonctions en francais je veux bien aussi
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
Qu'est ce que tu entend par //ton code si c'est la bonne réponse?

prenons un exemple : si c'est la question traditionnelle genre : quel est l'animal qui au matin de sa naissance marche à 4 pattes, à midi 2 pattes et au soir 3 pattes? réponse l'homme
ca va donner quoi? (homme=TRUE)?

ou alors GiveItemToPCByTag "clé"?



et si je veux poser 3-4 questions et qu'il choississent aléatoirement?

EDIT : bon, j'ai un peu essayé mais ca va pas.

- dans le OnConversation : tu as mis PJ=GetLastSpeaker. est ce que c'est pas PC au lieu de PJ?

- comme code pour la bonne réponse, j'ai mis
Code PHP:
CreateItemOnObject("anneaudelagui001"GetPCSpeaker(), 
. Est-ce bon?

-dans le OnSpawn, tu as mis la ligne:

SetListenPattern(OBJECT_SELF, "**reponse**", 1000);

est-ce que les ** sont importants ou pas?
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
ton code c'est ton script puisque tu voulais qu'il donne une clef si il donne la bonne reponse ou summon,er des monstre en cas de mauvaise reponse

Pour generer aleatoirement il faut jouer avec un random et un switch/case et les variables

pour la reponse ca donnera ca :

Code PHP:
SetListenPattern(OBJECT_SELF"**homme**"1000); 
les ** comme tu dis represente les reste des proles qui ne sont donc sans importance

Et si tu dis "l'homme c'est nul" la il te validera la reponse si tu les enleve il faudra que tu dise juste "homme"

pour ta ligne de create elle n'est pas bonne puisque non complete

Que ce soit oPJ ou oPC ca ne change rien car c'est un objet que tu declare le tout est de garder le meme dans le reste du code tu peu meme metrtre oTartenpion mais il faut que tu change les oPJ de mon code par oTartenpion et ca marchera aussi
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
alors, pour la ligne de create, j'avais pas bien copier, c'etait

CreateItemOnObject("anneaudelagui001", GetPCSpeaker(), 1);

donc dans ma ligne pour la bonne réponse, ca donne:

SetListenPattern(OBJECT_SELF, "**homme**", 1000);
CreateItemOnObject("anneaudelagui001", GetPCSpeaker(), 1);

comme ca c'est bon? car ca donne rien!

autre question ( un peu con!) : pour la question du sphinx, je fais un dialogue normal? si oui, je dois mettre une branche de dialogue pour le Pj ou pas?

si je veux que le sphinx dise "c'est bon" après la bonne réponse,

le ActionSpeakString("c'est bon"); je dois le mettre ou? entre le SetListenPattern et le CreateItemOnObject?
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
mais non .......................

Tu vois pas que la ligne de la reponce est a mettre dans le OnSpawn du pnj ....

Et tu met ca la ou je le dis en dessous de la phrase //ton code ici

Code PHP:
CreateItemOnObject("resrefdelobjetacreer",GetLastSpeaker()); 
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Code PHP:
#include "NW_I0_GENERIC"
void main()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    }
if (
iNb == 1000)
    {
    
//Ton code si c'est la bonne reponce ici
     
AssignCommand(OBJECT_SELF,SpeakString("C'est bon"));
     
CreateItemOnObject("resrefdelitem",oPJ);
    }
    else
    {
    
//Code du si ce n'est pas la bonne reponce
    
}



Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
Tilt !

merci, j'ai pigé! Fallait le temps. Mais bon, tout le monde ne comprend pas très bien les scripts.

Bon, aussi,... ahem... c'est quoi la ligne pour invoquer un monstre? (le resref du monstre est "shguard001 ")
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
Code PHP:
CreateObject(OBJECT_TYPE_CREATURE,"shguard001 ",GetLocation(GetWaypointByTag("WP"))); 
Et place un Waypoint de TAG "WP" la ou tu veux que le monstre soit summoné
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
Bon, on reprend. Voila ce que donne mon script :

Code PHP:

#include "NW_I0_GENERIC"
void main()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    }
if (
iNb == 1000)
    {
    
ActionWait(120.0);
    
//Ton code si c'est la bonne reponce ici
     
AssignCommand(OBJECT_SELF,SpeakString("Felicitations, tu as trouve la reponse"));
     
CreateItemOnObject("cl001",oPJ);
    }
    else
    {
    
//Code du si ce n'est pas la bonne reponce
       
AssignCommand(OBJECT_SELF,SpeakString("Desole, tu as perdu!"));
    
CreateObject(OBJECT_TYPE_CREATURE,"gardsphinx",GetLocation(GetWaypointByTag("WP")));
    }



y a trois problèmes :

- le premier, c'est que mon sphinx pose la question mais n'attend pas de réponse pour dire que c'est perdu. j'ai mis un ActionWait, mais apparemment il n'est pas à la bonne place, ou il est mal placé!

- le deuxième problème, c'est qu'il invoque des blaireaux!! alors que mon garde est un garde d'acier! j'ai essayé avec le ResRef et le Tag, rien n'y fait. (j'ai vérifié, mon garde et le blaireau n'ont ni le meme tag ni le meme resref!)(EDIT : j'ai remarqué qq chose : quand je mets le tag d'une créature générique, ca fonctionne, par contre si je mets le tag d'une créature personnalisée, il m'invoque des blaireaux)(Re-EDIT : problème réglé. pour les deux autres, ca va toujours pas!)

- enfin, dernièrement, c'est qu'il invoque sans cesse les blaireaux, il ne s'arrete pas!

Help please!
Lien direct vers le message - Vieux
Avatar de xelone
xelone
Dauphin
 
Avatar de xelone
 
Hou hou, quelqu'un peut m'aider?
Lien direct vers le message - Vieux
Avatar de Tyrion
Tyrion
Roi
 
Avatar de Tyrion
 
vu la ou tu as mis ton ActionWait() ca veu dire que le sphinx va attendre 120 seconde avant de dire au PJ que l reponse est juste

Essaye sans l' utiliser mais en gerans la reponse par dialogue car la le script est fait pour etre sans dialogue

peu etre gerer le probleme par variable.

Citation:
Hou hou, quelqu'un peut m'aider?
La patience est un art qui s'acquiert avec de l'experience (a méditer)
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Réponse à un sphinx
   

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 23h24.
   

© 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