un scrypt sur les énigmes

Répondre
Partager Rechercher
voila deja merci a tous pour votre et pour vos idées tres interessante.

je fais des epreuves pour les joueurs dans mon modules, a la fin de chaque épreuves il y aura une énigmes par exemple celle du sphinx:


je me leve le matin a 4 pattes
je marche le midi sur 2 pattes
je marche le soir a 3 pattes

qui suis je???


bon alors la 3 solutions :

-la premieres faire 15 reponces differentes et au bout d'un moment le pj meme sans chercher va trouver la reponse en les faisant une par une.

-La deusieme 15 reponces differentes mais s'il ce trompe le renvoyer au debut de l'epreuve, il doit tous refaire, (rique que le pj ce lasse) mais au bout d'un moment il va bien trouvez meme s'il connait pas la reponse.

-la troisieme c'est de mettre en condition la bonne reponce( si le pj a au moin 15 en INT la reponce aparrait)


bon tous ca c'est pas convaincant il y a pas moyen de faire un scrypt avec le pj qui tape lui meme ca reponce sur le clavier si c'est la bonne il recoit ca recompence?


voila merci a tous j'espert que je suis claire

je vais te dire qu'a la longue j'ai un peu abandonné car ça ne donnait pas tout a fait ce que je voulais et surtout car je n m'y connais pas fortement en script ! donc je me suis fait un bete dialogue avec 5-6 propositions et c'est sur qu'au bout de 30 min, il y en a un qui trouve la réponse et la donne a tout le monde, donc lors de chaque upload, je changeais la question. mais c une boucle sans fin.

voila si t'arrive a tout résoudre, veux tu bien mettre le mode d'emploi?

merci
oui, tu peux declencher les patternes via un dialogue.

Pour xelone, la faute en revient au prinicpe d'enigmes sur un monde persistant, pas aux patternes


(quoique tu puisse prevoir, grace aux patterns et aux CUSTOMTOKEN de creer un PNJ qui va permettre a un DM de modifier ingame les enigme et les reponses proposées. Comme ca, le DM a juste a parler a un NPC pour lui donner l'enigme et la liste de reponse, et peut aller faire autre chose...)
Pour les énigmes au dialogue multiple, c'est clair que c'est lourd quand on peut essayer toutes les solutions. Une idée, tu mets dans le script des réponses une variable. Et tu rajoutes une branche au dialogue qui vérifie la variable. Si elle est là, le PJ a droit au message,
- Vous avez déjà répondu et vous vous êtes trompé. Au revoir.
et version moins sympa:
- Perdu... et il n'y a pas d'autre essai ( Prend ça dans ta face )
Code PHP:

object oPC=GetPCSpeaker
effect eVis 
EffectVisualEffect(246);
int nDamage nDamage GetCurrentHitPoints(oPC) - 1;
effect eDam EffectDamage(nDamage,DAMAGE_TYPE_MAGICAL);
DelayCommand(1.0ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoPC));
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoPC); 
Comment ça c'est méchant ?
Si j'avais voulu être méchant, j'aurais rajouté un spawn de monstre juste après...
Citation :
(quoique tu puisse prevoir, grace aux patterns et aux CUSTOMTOKEN de creer un PNJ qui va permettre a un DM de modifier ingame les enigme et les reponses proposées. Comme ca, le DM a juste a parler a un NPC pour lui donner l'enigme et la liste de reponse, et peut aller faire autre chose...) [/i]


mais au plus simple le pnj ne peux pas avoir un repertoir de 6 énigmes qui donnera au joueur de facon aléatoire ?
Euh, si.

mais bon, au niveau script, ce sera pas le plus simple.(enfin, si, suffit de faire des sous-fonctions :
Code PHP:

void LoadEnigme1();
void LoadEnigme2();
void LoadEnigme3();
void LoadEnigme4();
void main()
{
object oPC GetLastSpeaker();
if (!
GetIsPC(oPC))
return;

switch (
d6())
{
case 
1LoadEnigme1();
case 
2LoadEnigme2();
case 
3LoadEnigme3();
default :  
LoadEnigme4();
}
}
void LoadEnigme1()
{
SetCustomToken(10001,"Phrase 1");
SetCustomToken(10002,"Phrase 2");
SetCustomToken(10003,"Phrase 3");
SetListeningPattern(1001,"**homme**");
}
void LoadEnigme2()
{
SetCustomToken(10001,"Phrase 1");
SetCustomToken(10002,"Phrase 2");
SetCustomToken(10003,"Phrase 3");
SetListeningPattern(1001,"**feu**");

enfin, bref, un truc du genre, quoi ^^;
Pourquoi ne pas reprendre le systeme pour poster des nouvelles ( le crieur je crois ), avec utilisation d un panneau ( comme dit au dessus ) par le DM pour ajouter/enlever/modifier une enigme dans la liste d enigme possible pour le sphinx. Puis le sphinx fait un random sur le nombre d'enigme disponible et la pose au PJ.

Y en a ici qui font ca tres bien ya juste a se balader un peu et prendre des bout a droite, a gauche

Ps: j aime le systeme de " tu trouves pas ? bah ...... c bete " et à la limite, laisser une 2eme chance, le tout en passant par les paterns pour que le sphinx merite vraiment son nom et que un minimum de reflexion soit necessaire.

Psbis: on peut aussi mixer avec le systeme de l'intelligence mini et/ou d'une classe/race prerequise.
L'intelligence, pour apporter un niveau de RP : le barbare bourru, ayant 6 en int et ne sachant ni lire ni ecrire, ne pourra pas repondre à la question "A quelle chiffre la lettre grec theta peut elle faire penser ??" , alors que le mago ou le palouf avec 12+ en int pourront.
Idem pour classe/race, pour des question specifique au moine ou aux villes souteraines naines.
je sais pas si cela peut intéresser quelqu'un mais j'ai mis en place un autre système pour les énigmes dans mon module garantissant tout suspense ... mais un éventuel suicide du joueur aussi parfois ..

Je m'explique : Un récipient est placé avec les lettres de l'alphabet en quantité suffisante ; à coté un autre objet ou l'énigme apparais et un troisième objet lui avec inventaire visant à récupérer la solution parsemé d'un script (sur le OnClose) où il faut juste changer le mot de la solution qui vérifie si les lettres du mot sont contenues dans le récipient. Mon script ouvre une porte mais c'est selon votre imagination ... ainsi une variante pourrais tout aussi vérifier certains objets en vue de fabrication diverses.
J'ai une version où il faut mettre les lettres dans l'ordre et une autre ou cela n'a pas d'importance. Voila si ça intéresse, je peux mettre ce script à disposition.
bon il y a tous plein d'idée très intéressante mais dur pour moi a mettre en place alors je vais commencer par le commencement.


réalisation de l'énigme avec réponse joueur en patern:



donc dans le dialogue pnj je met:


je me lève le matin a 4 pattes
je marche le midi sur 2 pattes
je marche le soir a 3 pattes


en suite pour que je joueur répond en parlant je dit mettre un scrypt patern dans action consequence du pj avec le mot homme comme bonne réponse



alors le scypt ressemble a ca?


Code PHP:


void main
()
{
  
SetListenPattern(OBJECT_SELF"**homme**"1);

oula est a quoi ca ressemble par exemple un SetListening

a ca?

Code PHP:


void main
()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    }
if (
iNb == 1000)
    {
    
     
AssignCommand(OBJECT_SELF,SpeakString("tu as trouvé bravo !!"));
      
    }
    else
    {
    
//le scrypt de Archamedes
{
AssignCommand(OBJECT_SELF,SpeakString(" mais non reflechis un peux !!"));
}
      
object oPC=GetPCSpeaker
effect eVis 
EffectVisualEffect(246);
int nDamage nDamage GetCurrentHitPoints(oPC) - 1;
effect eDam EffectDamage(nDamage,DAMAGE_TYPE_MAGICAL);
DelayCommand(1.0ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoPC));
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoPC);
}



bon évidement ca marche car suis un tres amuvais regroupe ur et scypteur

mais bon j'avais espoir

Oulah, vi... ^^;

l'idee, quand on regroupe, c'est un peu comme de factoriser en math : on repere ce qui se ressemble, et on le regroupe.

genre :

Code PHP:

object oPC GetLastSpeaker();

et 

object oPJ 
GetPCSpeaker(); 
a priori, la, si on est dans le même script, on doit pouvoir regrouper les oPC et des oPJ (en remplacant dans les fonction idoine.

Ensuite, on fait attention aux fonction de retour puisque ca interrompt le main.

donc, en gros, on a ca :

Code PHP:

void main()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    return;
    }
if (
iNb == 1000)
    {
    
     
AssignCommand(OBJECT_SELF,SpeakString("tu as trouvé bravo !!"));
      
    }
else
    {
    
//le scrypt de Archamedes
        
{
        
AssignCommand(OBJECT_SELF,SpeakString(" mais non reflechis un peux !!")); //ici, honnetement, les {} sont inutiles.
        
}

    
effect eVis EffectVisualEffect(246);
    
int nDamage nDamage GetCurrentHitPoints(oPJ) - 1;
    
effect eDam EffectDamage(nDamage,DAMAGE_TYPE_MAGICAL);
    
DelayCommand(1.0ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoPJ));
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoPJ);
    }



essaye aussi d'indenter ton script, pour le comprendre mieux

ie : met des tabulation par niveau de boucle.
comme ca :

Code PHP:

main()
{
if ()
    {
    if ()
        {
        }
    }

La, on voit tout de suite ce que fais le premier if, et ce que fait le second.

et on voit bien que le second est inclu dans le premier.
merci beaucoup bon je resume un peux le scrypt se compile bien
je le met dans le Onconvesation

Code PHP:


void main
()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    return;
    }
if (
iNb == 1000)
    {

     
AssignCommand(OBJECT_SELF,SpeakString("tu as trouvé bravo !!"));

    }
else
    {
    
//le scrypt de Archamedes
        
{
        
AssignCommand(OBJECT_SELF,SpeakString(" mais non reflechis un peux !!")); //ici, honnetement, les {} sont inutiles.
        
}

    
effect eVis EffectVisualEffect(246);
    
int nDamage /*nDamage*/ GetCurrentHitPoints(oPJ) - 1;
    
effect eDam EffectDamage(nDamage,DAMAGE_TYPE_MAGICAL);
    
DelayCommand(1.0ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoPJ));
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoPJ);
    }



voila bon il ce compile bien, et quand je donne la bonne reponce il me dit " tu as trouvé bravo" mais si je met une mauvaise reponce rien ne se passe
if initial tu veux dire comme ca?
scypt?


Code PHP:

void main()
{
int iNb GetListenPatternNumber();
object oPJ GetLastSpeaker();

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    return;
    }
if (
iNb == 1000)
    {

     
AssignCommand(OBJECT_SELF,SpeakString("tu as trouvé bravo !!"));

    }
else
    {
    
//le scrypt de Archamedes
        
{
        
AssignCommand(OBJECT_SELF,SpeakString(" mais non reflechis un peux !!")); //ici, honnetement, les {} sont inutiles.
 
effect eVis EffectVisualEffect(246);
    
int nDamage /*nDamage*/ GetCurrentHitPoints(oPJ) - 1;
    
effect eDam EffectDamage(nDamage,DAMAGE_TYPE_MAGICAL);
    
DelayCommand(1.0ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoPJ));
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoPJ);

        }

        }



non meme comme ca des que je me trompe il se passe rien
bon je laisse tombé, le scrypt D'Achamedes car il se compile bien mais impossible de le faire marcher suis pas assez compètent.
sinon sur le scyptr de depart:

Code PHP:


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

if (
iNb == -1)
    {
    
ClearAllActions();
    
BeginConversation();
    }
if (
iNb == 1000)
    {
     
  
 
AssignCommand(OBJECT_SELF,SpeakString("tu as trouvé bravo !!"));

      
    }
    else
    {
         
AssignCommand(OBJECT_SELF,SpeakString(" mais non reflechis un peux !!"));        }




je voudrais faire plus simple quand il donne la bonne réponse il ouvre un dialogue
il donne une mauvaise réponse il ouvre un autre dialogue est ce possible je sais que l'on peux fair ouvrir un dialogue avec ce scrypt

Code PHP:

 void main()
{
object oPC GetLastUsedBy();
if (
GetIsPC(oPC))
    {
    
ActionStartConversation(oPC"tag du dialogue",TRUE);
    }

enfin je crois
Répondre

Connectés sur ce fil

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