Caution : Quiche inside !

Répondre
Partager Rechercher
commençons par le commencement : J'ai récemment masterisé mon premier module (merci à Ange Musicien pour l'aide sur le client MJ), mais, Ô horreur, les PJ qui arrivaient après le passage du premier joueur ne pouvaient plus faire les quêtes puisque le premier les avaient prises à son compte...

Alors voilà, j'aimerai faire une nouvelle quête qui aurait le shéma suivant : ramener un objet à un PNJ (rien de plus simple). Il y aurait une douzaine d'objets similaires dans le module cachés à différents endroits (avec le même tag et le même blueprint) afin que chq nouveau PJ puisse en ramener un et donc finir la quête. Mais comment faire pour que chq nouveau PJ initie la quête en parlant au PNJ ?

C'est vrai, c'est sans doute très quiche comme question, mais il faut se mettre à la place de mes joueurs qui déboulent à partir de la deuxième position... Ils peuvent plus faire les quêtes et m'obligent à tout refaire à la main en tant que DM (et c'est du boulot quant on est dans le feu de l'action...)
__________________
Les Nitrox et les Trimix, ne sont que des froussards qui ont peur de la narcose !
J'ai déjà lu les cours sur les dialogues (merci Lumina), et j'ai aussi cliqué sur le petit lien que tu as mis. Mais je n'ai rien trouvé dans les cours qui explique comment faire pour qu'une quête déjà initiée puisse recommencer depuis le début avec un autre PJ ni dans ton lien...

ceci dit, tout est dans mon titre alors...
Bien, la premiere chose a voir, c'est que la plupart des quetes sont initialisées comme ceci :

Code PHP:

void main()
{

if (
GetLocalInt(OBJECT_SELF,"nQuest1")==FALSE)
    {
    ...
Action relatives a la quete...;
    
SetLocalInt(OBJECT_SELF,"nQuest1",TRUE);
    }

On remarque donc que le PNJ stocke une variable "quete_effectuée" appelée "nQuest1" sur lui, et qu'il regarde si cette quête est effctuée ou non avant de faire ce qu'il a à faire.

La solution la plus simple,

remplacer par :

Code PHP:

void main()
{
object oPC GetPCSpeaker();
if (
GetLocalInt(oPC,"nQuest1")==FALSE)
    {
    ...
Action relatives a la quete...;
    
SetLocalInt(oPC,"nQuest1",TRUE);
    }

Ainsi, le Pnj verifie sur le PC si la quete est effectuée, et non plus sur lui-même : corrolaire : si le PC est different, la quete est vierge, donc "reinitialisée"...

Hope this'll help
Il faut néanmoins noter que beaucoup de quête ne peuvent pas être refaite une fois terminées, il faut donc éviter que le PNJ les redonne à d'autres PJ, après qu'elle ait été achevée.

Dans ce cas, l'état final de la quête est stocké sur le PNJ et l'état transitoire est stocké sur les PJs, de façon que le PNJ puisse donner la quête à tous les PJs, tant qu'elle n'est pas achevée.


La conception d'une quête devrait toujours passer par l'implémentation technique de façon à éviter les incohérences, il vaut toujours mieux préparer à l'avance le système qu'on va mettre en place plutôt que de rajouter des variables au petit bonheur la chance

Mmmm...mais qu'est-ce que je dit moi...
Répondre

Connectés sur ce fil

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