|
Bon, ba puisque g trimé dessus pdt qq temps, autant éviter à d'autres d'avoir à trop défricher
Je ne prétend pas être une référence en la matière, et je me trompe surement à certains endroits, y a probablement mieux, c'est juste que ce système est tellement genial que je trouve dommage de pas en parler au moins une bonne fois C'est toute fois un système assez complexe, qui demande qq base en script, pas la mort, mais bon, faut qd même avoir fais quelques scripts en plus des tutoriaux je pense ^_^ Alors : Qu'est ce que c'est ? En gros, un fialogue qui se construit au fur et à mesure qu'il est euh, dialogué ( ). En moins gros, il s'agit de créer un dialogue à l'aide de scripts, et d'un "dialogue", créé avec le toolset normal, plus que minimaliste. Pourquoi faire ? C'est géré par script, à l'aide de string, donc, on peut tout faire ^_^ Faire un perso à la Norbert de BG1 (le taré à Nashkel) dévient un jeu d'enfant, pire, simuler la folie chez un personnage et changeant à chaque fois certain mots et certaine formule devient vraiment possible, c'est à dire que ses délires peuvent êtres complètement aléatoires (je pense éssayer de faire un truc du style ) Sympa aussi, ca permet d'alleger le nombre de script. Et ben oui, pour faire un dialogue tentaculaire avec moult test différent et moult "récompenses" différentes ne demande plus 15 milliards de scripts, en fait, une dizaine permet de faire absolument tout avec le dialogue (met du genre TOUT ) En fait, il n'y a pas vraiment de limite, statistiques pour les DM, Dialogue modifiable in game, éphémérides, personnalisation en tout genre (vous trouviez que les tokens n'était pas assez nombreux ? réjouissez vous ) moi personnleemnt j'ai fais avec ca un truc qui aurait demandé au mnimum un bon millier de scripts d'actions comséquente, et là j'en suis à grosso modo 20 Mais coment ca marche ? Ca utilise les CUSTOM token Il s'agit, au moment ou l'on donne la réponse, d'assigner à différents token la valeur que l'onveut, token qui sont utilisé dans les dialogues. C'est pas clair ? C'est normal. Bon, alors : dialogue basique : [PNJ] Boujour ! Je m'apelle Pé n'Ji ! ---[PJ1]salut ! ------[PNJ] Comment va ? ---------[PJ][fin du dialogue] ---[PJ2]Va voir ailleurs si j'y suis ![fin du dialogue] ---[PJ3]oyo ? ------[PNJ]Quelle langue parle tu ? ---------[PJ1]Go Men à Saï ! ------------[PNJ]Dsl je ne comprend pas.[fin du dialogue] ---------[PJ2]C'est pas tes ognions ![fin du dialogue] ---------[PJ3]Ki té ?[retour début] basique non ? Alors un dialogue dynamique ca serait plutot : [PNJ] <CUSTOM8000> ---[PJ1] <CUSTOM8001>[retour début] ---[PJ2] <CUSTOM8002>[retour début] ---[PJ3] <CUSTOM8003>[retour début] Alors, maintenant ca va p-e s'éclairer : Il y a un script que s'éffectue avant le dialogue, c'est le test, la "condition d'éxécution" si vous mettez un truc du style : Code PHP:
(pas la peine d'essayer, c'est juste pour comprendre hein ) La, ca va afficher un truc du genre : 1 - Bonjour .... (réponse) 2 - Comment va ? (réponse) 3 - Bonjour .... etc. sans fin. pas top. On fait le même genre de chose sur les réponse possibles et disparu les CUSTOMXXXX ! Bon, maintenant, comment obtenir ce qu'on veut ? comment controler ce qui est dit/proposé ? Pour cela, il faut approfondir un peu plus la "théorie", si vous avez compris jusque là (si je vous ai pas égaré en chein, avec mon légendaire sens de l'orientation). Le seul moyen pour savoir sur quel phrase le PJ clique, ce sont les "actions conséquente". c'est a ce moment là, quand on choisit sa réponse, qu'il faut "créer la futur dialogue", un ensemble PNJ PJ PJ PJ Lors du test qui suit (immédiatment, mais chronologiquement c'est ca) les différents CUSTOM tokens prennent leurs valeurs. ca va ? On récapitule : 1:test => assigne les différente répliques aux tokens 2:action conséquente => suivant le choix du PJ, on construit un nouveau dialogue 3:test => assign les nouvelles valeurs aux custom il faut comprendre que les CUSTOM token sont utilisé par tout le module. Donc il faut leur donner une valeur et l'afficher dans l'instant dans un dialogue, sinon ba ca va plus, après par contre si on change de valeur, tant que le dialogue n'est pas refait (choix d'une réplique qui arrête puis on reprend ou bien choix d'un réplique qui permet de continuer) Alors, comment on fait ca ? Avec des SetLocalString et des GetLocalString un Set dans les actions conséquentes, et un Get dans le test Mais coment savoir quel valeur donner ? comment savoir où on en est ? Et bien avec des SetLocalInt et des GetLocalInt en fait, quand on créé un dialogue, en plus d'assigner à chaque "étage" une valeur pour le token (par étage, comprendre réplique, une pour le PNJ et plusieurs pour le PJ, un étage = une réplique), on assigne un entier, qu'on récupere avant de créer un nouveau dialogue, et qui indique lequel créer. script de test pour une réplique de PJ : Code PHP:
Code PHP:
alors, a chaque dialogue correspond en fait un nombre, quand le switch tombe sur ce nombre, il créé le dialogue. Si vous avez suivi, normalement ici cliquer sur "fin de dialogue" arrêteras le dialogue. En effet si aucune string n'est assigne à DIALOGUE_0, alors le test renvoi FALSE, et le dialogue s'arrête. Il faut bien penser à tout "néttoyer" avant de sortir dans les script d'arrêt du dialogue par exemple. En fait, personnellement l'utilise des fonction pour gerer tout cela. Une qui "créé" les dialogue, un switch en fait, une qui applique les effet (un autre switch) et une qui rassemble ces deux là. en gros : Code PHP:
Code PHP:
2 pour la deuxieme réplique, etc. moi j'ai mis 8 réplique pour le PJ, c'est correct tout en restant lisible Les deux fonctions utilisée : Code PHP:
Code PHP:
Oui, il y a quelque chose qui cloche. Je sais Où sont les dialogue ? Et bien dans les fonctions Dia(); dont la forme est : Code PHP:
choisir 1 entrainera un nouveau dialogue et une action choisir 2 entrainera un nouveau dialogue choisir 3 arrêteras le dialogue la structure du tout peut paraitre lourde et inutile, mais elle prend sont interêt quand on arive à un grand nombre de noeuds différents dans le dialogue normalement, maintenant vous devriez pouvoir créer un dialogue dynamique, je pense . . . peut être . . . (c pas vous qui seriez bête hein, mais moi ) Bon, un truc sympa avec ce système, c'est le "revenir en arrière" Le revenir en arrière Bon, avec ce systeme il est assez facil de faire des "précédent" "suivant" ce que moi j'ai fais : J'enregistre le numero du dialogue que je viens de construire à la fin du BuildDia, avec : Code PHP:
Code PHP:
[PJ] *revenir en arrière* avec en action conséquente un DoDia, avec en entrée 9, le numéro de la réplique (qui ne change pas cependant, c'est toujours la même, donc pas de CUSTOM8009 ) et un test qui vérifie qu'on a au moins une référence de dialogue entrée, sinon ca n'est pas la peine d'afficher la réplique dans le DoDia on insere : Code PHP:
Je n'est pas fais de module demo par faute de temps, mais le DMWand utilise ce système, enfin, ce genre de systeme lol, ainsi que le crieur de rue de RAT (c'est lui qui m'a conseillé ces deux trucs ), et mon machin dès que je le finis Bon, si j'ai oublié un truc, ba je completerais si personne le vois avant moi dsl pour l'ortographe désastreuse . . . mais c lisible il me semble Tout cela n'est absolument pas utilisable comme ca Il faut comprendre le machin et réemployer les bases donnée ici edit tardif : il paraitrait que ce topic aide à comprendre (il y est qu'estion d'un dialogue no dynamique, mais qui utilise un pitit bout du principe |
21/05/2003, 22h18 |
|
[info] Les dialogues dynamiques
Suivre |
|
Partager | Rechercher |
Suivre |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|