D'ailleurs, Gouloudrouioul, pourrais-tu éclairer ma lanterne, pliz?
Aurais-tu la gentillesse de m'expliquer ce que signifie "etat_patatipatata" dans tes scripts npc et comment passer d'un état 1 à 2? Tout ce que j'ai compris là dessus, c'est que le changement d'état (mais qu'est-ce qu'un état? le fait que le npc soit passé d'un pathblock à un autre par exemple? Comment est-ce pris en compte? Comment le définir dans un script? Pourquoi pour certains npc l'état 5 n'existe pas alors qu'il y a l'état=4 puis l'état=6? Pourquoi 42?)
D'abord je tiens à préciser que si tu veux apprendre comment faire des scripts, il ne vaut mieux pas s'inspirer de ceux de ma map
. Je suis du genre très très bordélique, et des fois il peut être difficile de comprendre le lien entre les différents fichiers. Concernant les états, tout d'abord deux choses à clarifier :
- etat_patatatipatata ne correspond à aucune "instruction" officielle, c'est juste moi qui ai choisi d'appeler cela ainsi. Tu peux très bien appeler ça "patate" ou "cerise", pour ce que ça changera.
- les nombres n'ont pas de signification particulière (si j'ai mis 42, donc, c'est juste pour le fun).
Voilà, maintenant explication ! Je vais essayer de t'expliquer le plus clairement possible, mais comme je ne connais pas tes bases en javascript, je risque de m'éparpiller un peu.
En gros lorsque dans un script tu mets "objet = 1", objet sera défini comme étant 1 (jusque là je pense que c'est limpide). A partir de là tu peux faire dire plusieurs choses différentes à tes NPC's. Par exemple, si "objet = 1", le chat affichera "patate" lorsque tu cliqueras sur un NPC, tandis que si "objet = 0", le chat affichera "cerise".
Je ne sais pas si tu sais comment fonctionne, basiquement, un script. En gros tu poses une condition, qui se caractérise comme ceci : "if (objet == 1)". Si cette condition est vérifiée - c'est à dire si objet est bien égal à 1 et non pas à autre chose - le reste du script se déroulera.
Un exemple commenté, d'un script qui ne s'active QUE si tu cliques sur un NPC :
if (etat_arbrophileprison < 1)
<-- la condition en question, < 1 signifiant 0. Donc, si etat_arbrophileprison est égal à 0, les instructions qui suivent s'activeront.
{
<-- délimite le début des instructions.
etat_arbrophileprison=15;
<-- si la première condition est respectée, etat_arbrophile prison passera de 0 à 15. Je fais cela pour éviter que le dialogue se réaffiche une seconde fois si l'on reclique sur le NPC. Puisque 15 n'est assigné à aucune commande, si tu cliques il ne se passera rien.
sound.playSoundUI("sound.dialogues");
<-- une instruction pour faire le son des dialogues.
chat.print("<Arbrophile> Merci mec, tu m'as libere !")
chat.print("Si tu as besoin de quoi que ce soit, viens me voir.")
<-- affiche ce texte dans la barre de tchat.
time.sleep(4);
<-- laisse 4 unités de temps s'écouler avant l'instruction suivante.
sound.playSoundUI("sound.dialogues");
chat.print("Moi et mes autres freres spirituels nous ferons")
chat.print("un plaisir de te venir en aide.")
etat_arbrophileprison=0;
<-- etat_arbrophileprison passe de 15 à 0, afin de permettre au joueur de relire le dialogue s'il clique une nouvelle fois sur le NPC. La boucle est bouclée.
}
<-- délimite la fin des instructions.
if (etat_arbrophileprison == 2)
<-- Lorsque etat_arbrophileprison sera égal à 2, les instructions suivantes s'afficheront, et non pas les précédentes.
{
sound.playSoundUI("sound.dialogues");
chat.print("<Arbrophile> Emmene nous des cookies si tu")
chat.print("veux qu'on t'aide.")
}
En gros, tout cela te permet d'établir des "paliers".
Admettons que tu veuilles qu'un seigneur ne dévoile son secret qu'une fois que le héros aura atteint une grotte magique. Le script basique que tu devras faire est celui-ci :
if (seigneur < 1)
{
chat.print("<Seigneur> Je ne te révélerai mon secret que si tu trouves la grotte magique.")
}
if (seigneur == 1)
{
chat.print("<Seigneur> Tu as donc trouvé cette grotte ! Mon secret c'est que je dors toujours avec mon doudou.")
}
Tu devras assigner ce script dans la partie "OnInteract" du NPC.
Au préalable, tu devras également avoir mis l'instruction suivante dans ton script "OnNewSave" :
seigneur = 0;
Pourquoi ? Car "OnNewSave" active les scripts dès que tu commences une nouvelle partie. Ainsi, lorsque tu chargeras pour la première fois le jeu, celui-ci détermineras d'office que l'état de seigneur est égal à 0, te permettant donc de lui parler. Si tu ne fais pas ça, lorsque tu cliqueras sur le seigneur, le tchat affichera que "seigneur n'est pas défini".
Pour changer l'état de seigneur en 1, il y a plusieurs façons. Tu peux établir un simple script où il y a marqué : "seigneur = 1;". Tu assignes ce script à un Script Block, que tu relies à des Triggers. Lorsque tu passeras sur les Triggers, le script assigné au Script Block s'activera, et changera par conséquent l'état de seigneur en 1. C'est tout con. Tu peux installer tout ça à l'entrée de la grotte, et c'est imparable.
Tu peux aussi le faire via un NPC. Admettons que tu décides d'en mettre un dans la grotte secrète. Sur sa case OnInteract, tu mets un script avec les instructions suivantes :
chat.print("Je suis dans une grotte.");
seigneur = 1;
L'état de seigneur sera changé de cette façon, sans que le joueur ne le remarque.
Voilà, j'ai développé le plus possible, mais c'est un vaste sujet avec beaucoup de ramifications, j'ignore donc si j'ai été clair ou non. Si tu as la moindre question par rapport à tout ça, je suis dispo