La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 10:25:36


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Kustom
Novice
Inscrit le: 04 Fév 2005
Messages: 8
Répondre en citant
Posté le : 04/02/2005 16:21:57 Sujet du message : Quête faisable une fois

Hello !

Après une recherche effectuée, je me lance... J'espere ne pas ouvrir le clone d'un autre topic.

Je me suis lancé ds la création d'un monde persistant il n'y a pas longtemps et je me suis heurté à un problème.

Comment faire pour qu'une quête soit faisable une seule fois par personnage ?
Je trouve assez illogique que de pouvoir tuer "mégamob" 20 fois pour gagner 20 fois le même buttin que donne un PNJ. Voilà si qqn avait la réponse, ça m'arrangerait vraiment vu ma carence niveau scripts... :s
 
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 : 04/02/2005 16:45:33 Sujet du message :

A mon avit, ça se voit au niveau des variables,
Lors de la demande de quête, tu mets une variable à 1
Lorsque la quête est finie, la varialbe passe à 2
Et lorsque le joueur reparle au PnJ qui propose la quête, on fait un test, pour voir à combien est la variable, si elle est à 2, on passe à autre chose.
Je suis peut être pas super clair, mais regarde ICI y a un bon cour sur les varaibles.

Reste à voir si tu veux qu'elle résiste à un reboot, là je sais plus comment qu'on fait.

J'éspère avoir été clair et avoir répondu à ta question.
A + et bon courage pour ton mod
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
Kustom
Novice
Inscrit le: 04 Fév 2005
Messages: 8
Répondre en citant
Posté le : 04/02/2005 18:01:14 Sujet du message :

Merci de ta reponse rapide.

C'est exactement ca le problème, faut que ca résiste a un reboot... Surprised
Quant au cours je l'ai lu attentivement (ca veut pas dire que j'ai tt pigé non + Very Happy) et je remercie les auteurs sur ces petits tuto ma foi, très utiles !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Adam Reith
Ecuyer
Inscrit le: 13 Juin 2004
Messages: 49
Répondre en citant
Posté le : 04/02/2005 22:20:01 Sujet du message :

Tu peux attribuer des variables persistantes avec la base de données de bioware,

Cherche du coté de SetCampInt() et GetCampInt()
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kustom
Novice
Inscrit le: 04 Fév 2005
Messages: 8
Répondre en citant
Posté le : 07/02/2005 16:16:50 Sujet du message :

En bon francais ca donne quoi? Embarassed
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 08/02/2005 09:30:27 Sujet du message :

Pour attribuer une variable persistante tu utilise ça:
Code :
void main ()
{
object oJoueur = GetLastSpeaker();
SetCampaignInt("nom de la campagne", "nom de la variable", valeur, oJoueur);
}


Et pour vérifier une valeur:
Code :
int StartingConditional()
{
object oJoueur = GetLastSpeaker();
int iVariable = GetCampaignInt ("nom de la campagne", "nom de la variable", oJoueur);
if (iVariable == 0) // tu peux changer le 0 par ce que tu veux
return TRUE;
return FALSE;
}


Bon comme en se moment je n'ai pas aurora sous la main il peut y avoir une faute de frappe.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kustom
Novice
Inscrit le: 04 Fév 2005
Messages: 8
Répondre en citant
Posté le : 08/02/2005 12:50:23 Sujet du message :

Merci de cette approche Cool

En fait ca donne :

-Premiere partie de la conversation pour PNJ
--Premiere partie de la conversation pour PJ
----PNJ propose quete
------PJ accepte (quete ajoutee dans journal, fin conversation)
------PJ refuse (fin conversation)

-2ème partie de la conversation pour PNJ si quête faite (detecte un objet ds l'inventaire)
--2ème partie de la conversation pour PJ si quête faite (detecte un objet ds l'inventaire)
---Fin de la conversation pour PJ si quête non faite (pas d'objet dans inventaire
--PNJ prend l'objet dans l'inventaire et donne qqchose en echange, fin de conversation
---Fin de la conversation pour PJ

-3ème partie de la conversation pour PNJ (plus rien à dire)
--32ème partie de la conversation pour PJ (plus rien à dire), fin.

Voilà en gros la plan ; mais ou mettre la variable persistante ?
Non ce n'est pas casse tete Laughing

Ensuite, les scripts :

Dites moi si je me trompe Sad

Code :
void main ()
{
object oJoueur = GetLastSpeaker();
SetCampaignInt("nom de la campagne", "nom de la variable", valeur, oJoueur);
}


C'est a placer dans "Action conséquente" ? A quoi correspond "nom de la campagne" ? "Nom de la variable" correspond au nom de l'autre script (celui en condition d'execution) ?

En gros, voila ce que ca donne d'apres ce que j'ai pu comprendre Very Happy

-Premiere partie de la conversation pour PNJ
--Premiere partie de la conversation pour PJ
----PNJ propose quete
------PJ accepte (quete ajoutee dans journal, fin conversation)
------PJ refuse (fin conversation)

-2ème partie de la conversation pour PNJ si quête faite (detecte un objet ds l'inventaire)(Je case les variables ici, dans actions consequentes et condition d'execution)
--2ème partie de la conversation pour PJ si quête faite (detecte un objet ds l'inventaire)(Si la variable est égale a 0 le PJ a deja fait la quete, fin de conversation on va pas plus loin dans la quete)
--2ème partie de la conversation pour PJ si quête faite (detecte un objet ds l'inventaire) (Si la variable est égale a 1, donc le PJ n'a pas encore fait la quete, on va pas plus loin dans la quete)
---Fin de la conversation pour PJ si quête non faite (pas d'objet dans inventaire)
---Fin de la conversation pour PJ si variable egale a 0
--PNJ prend l'objet dans l'inventaire et donne qqchose en echange, fin de conversation
---Fin de la conversation pour PJ

-3ème partie de la conversation pour PNJ (plus rien à dire)
--3ème partie de la conversation pour PJ (plus rien à dire), fin.

Desole pour l'embrouille mais je fais de mon mieux Embarassed
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mars
Seigneur
Inscrit le: 31 Mar 2004
Messages: 199
Répondre en citant
Posté le : 08/02/2005 16:19:26 Sujet du message :

Bon alors je vais te donner un exemple pour une quete simple, du style va chercher l'objet x et ramene le au PNJ.

Lorsque le PNJ propose la quete et que le PJ accepte on fixe une variable sur le PJ.

PNJ: Bonjour, vous pouvez me ramener une fraise.
-PJ:Oui Biensur.(ici on fixe une variable persistante "script 1")
-PJ:Non pas le temps.

Script1:
Code :
void main ()
{
object oJoueur = GetLastSpeaker();
SetCampaignInt("nom de la campagne", "nom de la variable", valeur, oJoueur);
}

Tu peux changer "nom de la campagne et nom de la variable par ce que tu veux, a toi de voir comment tu veux t'organiser.

Ensuite pour que le PNJ demande au PJ si il a trouvé des fraises, on vérifie la valeur de la variable

PNJ: Vous m'avez rapporté mes fraises ? (dans la condition d'execution on place le script 2)
-PJ: Oui
-PJ: Non

Script 2:
Code :
int StartingConditional()
{
object oJoueur = GetLastSpeaker();
int iVariable = GetCampaignInt ("nom de la campagne", "nom de la variable", oJoueur);
if (iVariable == 0) // tu peux changer le 0 par ce que tu veux
return TRUE;
return FALSE;
}


Voila avec ça tu devrais t'en sortir. bon courage.

[Edit]
Pense a placer corectement ton dialogue, puisque Aurora prend les phrases de haut en bas, il vérifie si il y a une condition et si elle est respecté si oui la phrase est lu.
Je ne sais pas si je suis tres clair, je vais te donner un exemple.

1ere phrase du PNJ:
Merci, je n'ai plus besoin de rien (si variable est égal a 100)

2eme phrase du PNJ:
M'avez vous rapportés des fraises ? (si variable est égale à 50)
Réponse PJ:
-Oui* (on fixe la variable à 100)
-Non (on fait rien)

3ème phrase du PNJ:
Pouvez vous me rapporter des fraises ?
Réponse PJ
-Oui (On fixe la variable a 50)
-Non (on fait rien)

*Je te conseil de mettre dans la condition d'execution du oui une vérification dans l'inventaire pour que le PJ est bien la fraise sur lui.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kustom
Novice
Inscrit le: 04 Fév 2005
Messages: 8
Répondre en citant
Posté le : 08/02/2005 17:47:43 Sujet du message :

Merci Mars! Je pense avoir pigé C'est top !

Mais il reste un petit probleme, en effet, le 1er script n'est pas compilé :

NWScript :
void main ()
{
object oJoueur = GetLastSpeaker();
SetCampaignInt("nom de la campagne", "nom de la variable", valeur, oJoueur);
}
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.


Voila ce que l'editeur dit :

Code :
ERREUR : VARIABLE DEFINED WITHOUT TYPE


A cette ligne :

NWScript :
SetCampaignInt("nom de la campagne", "nom de la variable", valeur, oJoueur);
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.


J'espere ne pas trop t'embeter avec cela Confused
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Klemmth
Seigneur
Inscrit le: 26 Juin 2004
Messages: 176
Localisation: france
Répondre en citant
Posté le : 08/02/2005 18:24:22 Sujet du message :

remplace valeur par un nombre, et met des noms à toi pour les valeurs entre ".
Et à ta place j'utiliserai
GetPCSpeaker()
au lieu de GetLastSpeaker() qui peut te renvoyer un PNJ au lieu du PJ.
_________________
...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Kustom
Novice
Inscrit le: 04 Fév 2005
Messages: 8
Répondre en citant
Posté le : 09/02/2005 22:15:59 Sujet du message :

Un grand merci a Mars d'avoir tout fait a ma place Embarassed et a Klemmth d'avoir cloturé ce script!
C'est top !
 
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 32.517ms