Derniers sujets
[Tuto Ren'Py] Les dialogues avancés (**)
4 participants
Site pour apprendre à dessiner manga :: Apprendre à dessiner :: Jeux vidéos et Visual Novels :: Ren'Py :: Tutoriels
Page 1 sur 1
[Tuto Ren'Py] Les dialogues avancés (**)
Bonsoir,
Commentaire
Bon, vous êtes assez nombreux à m'avoir posé ce genre de question en MP sur comment on demande le nom d'un joueur etc... Effectivement, y'a pas de tuto dessus parce que c'est assez complexe et assez rare dans les VN de donner un nom. Certains m'ont aussi demandé comment on gère le facteur aléatoire comme dans le pierre-feuille-ciseau de mon VN
Connaissances requises :
- Variables lvl 2 (**)
- Menu lvl 2 (**)
A quoi ça sert ?
Demander à l'utilisateur d'entrer des données. Gérer le facteur hasard. Embellir les dialogues.
A quoi ça ressemble ?
Désolé, j'ai assez la flemme de prendre des captures d'écran pour ça... J'ai décomposé mon jeu en plusieurs étapes :
-Le jeu va me demander mon nom.
-Ensuite, il va me demander sur quel forum j'ai trouvé ce tuto.
-Si je réponds faux, je meurs dans d'atroce souffrance et c'est le GAME OVER.
-Si je réponds juste, le jeu jette un dé et moi aussi.
-Si le jeu fais plus que moi, je meurs aussi dans d'atroce souffrance. Sinon, je gagne.
-Divers commandes HS qui embellissent le dialogue
Mais comment tu fais ça ?
Nous savons utiliser les variables et les menus. Il ne reste plus qu'à combiner les deux avec des fonctions spéciales.
D'abord, créons une variable qui demande son nom au joueur. En cherchant sur internet, on trouve la formule suivante :
Pour ma part, ma version utilisée dans mon VN (route homme) est légèrement différente. Pour éviter les noms vides, j'ai la formule :
"Il y avait bien mon prénom :" la phrase affichée à l'écran.
"Minato" le prénom écrit par défaut.
Dans ce cas là, c'est quoi le "or "Minato"" en plus de la première formule ? C'est pour attraper les petits malins qui ne mettent pas de nom. Si tu effaces tout et que tu appuies sur entrée, ça te mettra Minato comme prénom, tu peux essayer toi même
Maintenant que le nom a été stocké, on peut l'utiliser comme une variable normale dans un nom, un dialogue... On peut aussi l'utiliser pour créer un personnage (voir le tuto de création de personnage, vous remplacez les guillemets
Sur ce, je m'en vais écouter du PON PON PON en boucle, sauvez moi D:
Bon, il reste deux choses à vous apprendre pour le dialogues, les deux dernières que je connais, courage !
Pour créer un personnage avec un nom qui change, on utilise :
Puis vous pouvez changer "mon_nom" à volonté. La commande utilisée dans le VN pour Elusia est par exemple :
L'option color sert à indiquer la couleur de son prénom et l'option suivante... Bah testez, c'est comme ça qu'on apprend
La seconde et dernière chose, c'est comment mettre un avatar dans le dialogue. Flemme d'expliquer alors je vous donne à l'arrache celle utilisée dans mon VN :
- "m", le nom de la variable du "personnage du joueur"
- "j", le nom du joueur
- "color", la couleur dans laquelle sera écrit son nom
- "left padding" le nombre de pixel séparant votre texte du bord gauche de la fenêtre. Mettez donc plus que la taille de votre image.
- "Side image" est l'image qui sera affichée à chaque fois que ce personnage parle.
- "two window" le titre est assez parlant mais testez comme je l'ai dit plus haut.
Sur ce, j'ai fini. je n'ai absolument plus rien à vous apprendre sur les dialogues et les menus ; vous avez atteint mon niveau. Amusez vous bien
Voir aussi :
- Les tutos à venir.
Commentaire
Bon, vous êtes assez nombreux à m'avoir posé ce genre de question en MP sur comment on demande le nom d'un joueur etc... Effectivement, y'a pas de tuto dessus parce que c'est assez complexe et assez rare dans les VN de donner un nom. Certains m'ont aussi demandé comment on gère le facteur aléatoire comme dans le pierre-feuille-ciseau de mon VN
Connaissances requises :
- Variables lvl 2 (**)
- Menu lvl 2 (**)
A quoi ça sert ?
Demander à l'utilisateur d'entrer des données. Gérer le facteur hasard. Embellir les dialogues.
A quoi ça ressemble ?
Désolé, j'ai assez la flemme de prendre des captures d'écran pour ça... J'ai décomposé mon jeu en plusieurs étapes :
-Le jeu va me demander mon nom.
-Ensuite, il va me demander sur quel forum j'ai trouvé ce tuto.
-Si je réponds faux, je meurs dans d'atroce souffrance et c'est le GAME OVER.
-Si je réponds juste, le jeu jette un dé et moi aussi.
-Si le jeu fais plus que moi, je meurs aussi dans d'atroce souffrance. Sinon, je gagne.
-Divers commandes HS qui embellissent le dialogue
Mais comment tu fais ça ?
Nous savons utiliser les variables et les menus. Il ne reste plus qu'à combiner les deux avec des fonctions spéciales.
D'abord, créons une variable qui demande son nom au joueur. En cherchant sur internet, on trouve la formule suivante :
- Code:
$ name = renpy.input("What is your name?", "Joe User", length=20)
Pour ma part, ma version utilisée dans mon VN (route homme) est légèrement différente. Pour éviter les noms vides, j'ai la formule :
- Code:
$ j = renpy.input("Il y avait bien mon prénom :", "Minato", length=15) or "Minato"
"Il y avait bien mon prénom :" la phrase affichée à l'écran.
"Minato" le prénom écrit par défaut.
Dans ce cas là, c'est quoi le "or "Minato"" en plus de la première formule ? C'est pour attraper les petits malins qui ne mettent pas de nom. Si tu effaces tout et que tu appuies sur entrée, ça te mettra Minato comme prénom, tu peux essayer toi même
Maintenant que le nom a été stocké, on peut l'utiliser comme une variable normale dans un nom, un dialogue... On peut aussi l'utiliser pour créer un personnage (voir le tuto de création de personnage, vous remplacez les guillemets
- Code:
name "[name]"
"Ordinatueur" "Comment allez vous, [name] ?"
name "Je veux vivre, j'ai une famille avec 74 enfants à nourrir moi !"
"Ordinatueur" "Oh ? Où avez vous trouvé ce tuto ?"
- Code:
$ reponse = renpy.input("J'ai trouvé ce tuto sur :", length=10)
if reponse == "Sekai":
pass
else:
"Ordinatueur" "Mauvaise réponse. Je vous condamne à écouter PON PON PON jusqu'à ce que mort s'en suive et mort s'en suivra."
name "AAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHH !!!!!"
return
"Ordinatueur" "Bonne réponse."
"Ordinatueur" "Jouons à un jeu de dé."
$ jet_ordi = renpy.random.randint(5,6)
- Code:
$ jet_joueur = renpy.random.randint(1,4)
Sur ce, je m'en vais écouter du PON PON PON en boucle, sauvez moi D:
Bon, il reste deux choses à vous apprendre pour le dialogues, les deux dernières que je connais, courage !
Pour créer un personnage avec un nom qui change, on utilise :
- Code:
$ moi = DynamicCharacter("mon_nom")
Puis vous pouvez changer "mon_nom" à volonté. La commande utilisée dans le VN pour Elusia est par exemple :
- Code:
$ e = DynamicCharacter("fille", color="#FF69B4", show_two_window=True)
- Code:
$ fille = "Elusia"
L'option color sert à indiquer la couleur de son prénom et l'option suivante... Bah testez, c'est comme ça qu'on apprend
La seconde et dernière chose, c'est comment mettre un avatar dans le dialogue. Flemme d'expliquer alors je vous donne à l'arrache celle utilisée dans mon VN :
- Code:
$ m = DynamicCharacter("j",
color="#58D3F7",
window_left_padding=160,
show_side_image=Image("minato.png", xalign=0.03, yalign=0.97), show_two_window=True)
- "m", le nom de la variable du "personnage du joueur"
- "j", le nom du joueur
- "color", la couleur dans laquelle sera écrit son nom
- "left padding" le nombre de pixel séparant votre texte du bord gauche de la fenêtre. Mettez donc plus que la taille de votre image.
- "Side image" est l'image qui sera affichée à chaque fois que ce personnage parle.
- "two window" le titre est assez parlant mais testez comme je l'ai dit plus haut.
Sur ce, j'ai fini. je n'ai absolument plus rien à vous apprendre sur les dialogues et les menus ; vous avez atteint mon niveau. Amusez vous bien
Voir aussi :
- Les tutos à venir.
Ryouzanki- Maître
- Messages : 1008
Age : 33
Re: [Tuto Ren'Py] Les dialogues avancés (**)
PONPON dashIte shImaeba II nO~~
ZENZEN sh'naI no tsumaranai deshO~~
Super tutoriel, comme d'habitude.
ZENZEN sh'naI no tsumaranai deshO~~
Super tutoriel, comme d'habitude.
Dreamy- Artiste reconnu (e)
- Messages : 804
Age : 30
Re: [Tuto Ren'Py] Les dialogues avancés (**)
Nice Ryou, j'ai encore appris plein de chose intéressante
Mais pourrais-tu expliquer la différence entre "Character" et "DynamicCharacter" ?
Mais pourrais-tu expliquer la différence entre "Character" et "DynamicCharacter" ?
Re: [Tuto Ren'Py] Les dialogues avancés (**)
Merci beaucoup pour le tuto ^^
Par contre j'ai la même question que Rannime-V, quelle est la différence entre un DynamicCharacter et un Character normal, parce que si on crée une fonction et qu'on l'utilise pour faire un Character de base, ça marche aussi et on peut le modifier en route.
Et j'ai une autre question, imaginons que je met une image à la fin du dialogue (ex, un coeur) mais que je veux que l'image change au fur et à mesure que les stats (ex, l'amour) montent ou descendent, comment fait-on ?
moi j'ai écris ça dans le bloc init :
Mais ça ne marche pas, même si l'amour est à 100, le coeur reste vert. J'ai testé d'autre méthode mais le résultat reste le même. Où ai-je fait un faute (et c'est possible de faire ça) ?
Par contre j'ai la même question que Rannime-V, quelle est la différence entre un DynamicCharacter et un Character normal, parce que si on crée une fonction et qu'on l'utilise pour faire un Character de base, ça marche aussi et on peut le modifier en route.
Et j'ai une autre question, imaginons que je met une image à la fin du dialogue (ex, un coeur) mais que je veux que l'image change au fur et à mesure que les stats (ex, l'amour) montent ou descendent, comment fait-on ?
moi j'ai écris ça dans le bloc init :
- Code:
if amour_hikaru >= 0 and amour_hikaru <= 50:
$ h = Character("Hikaru", color="#C60800", what_color="#C60800",
ctc=anim.Filmstrip("coeur vert.png", (20, 20), (2, 1), .30, xpos=655, ypos=577, xanchor=0, yanchor=0),
ctc_position="fixed")
elif amour_hikaru == 100:
$ h = Character("Hikaru", color="#C60800", what_color="#C60800",
ctc=anim.Filmstrip("coeur blanc.png", (20, 20), (2, 1), .30, xpos=655, ypos=577, xanchor=0, yanchor=0),
ctc_position="fixed")
elif amour_hikaru >= 71 and amour_hikaru <= 99:
$ h = Character("Hikaru", color="#C60800", what_color="#C60800",
ctc=anim.Filmstrip("coeur rouge.png", (20, 20), (2, 1), .30, xpos=655, ypos=577, xanchor=0, yanchor=0),
ctc_position="fixed")
elif amour_hikaru >= 51 and amour_hikaru <= 70:
$ h = Character("Hikaru", color="#C60800", what_color="#C60800",
ctc=anim.Filmstrip("coeur rose.png", (20, 20), (2, 1), .30, xpos=655, ypos=577, xanchor=0, yanchor=0),
ctc_position="fixed")
else:
$ h = Character("Hikaru", color="#C60800", what_color="#C60800",
ctc=anim.Filmstrip("coeur brisé.png", (20, 20), (2, 1), .30, xpos=655, ypos=577, xanchor=0, yanchor=0),
ctc_position="fixed")
Mais ça ne marche pas, même si l'amour est à 100, le coeur reste vert. J'ai testé d'autre méthode mais le résultat reste le même. Où ai-je fait un faute (et c'est possible de faire ça) ?
Chibi_Zaké- Gribouilleur
- Messages : 113
Age : 28
Re: [Tuto Ren'Py] Les dialogues avancés (**)
Fu fu fu... Je vous défie donc de demander à un joueur d'entrer son nom et de créer un personnage avec. En effet, le nom entré par le joueur sera entré dans une variable MAIS la fonction classique "Character" ne peut pas prendre de variable comme paramètre. Alors que celle "DynamicCharacter" prend en charge les variables. Personnellement, ça reste discutable mais je l'utilise pour tous les personnages parce que "DynamicCharacter" actualise en permanence son contenu ce qui inclut que si on change la variable, ça la change aussi dans le personnage. Tu peux t'amuser à recréer un personnage à chaque fois si tu veux avec "Character" mais c'est assez crade nan ? XD
Vos questions me font plaisir parce qu'elles indiquent que vous ne vous contentez pas de simplement copier coller mon code. \o/
Pour ton problème Chibi_Zaké, je ne sais pas où t'es allée me pêcher "ctc" et "anim.Filmstrip" :
Je te laisse utiliser le code de ton choix. Voici le code du programme complet dont je me suis servit pour vérifier que ce que j'ai dit fonctionne :
Vos questions me font plaisir parce qu'elles indiquent que vous ne vous contentez pas de simplement copier coller mon code. \o/
Pour ton problème Chibi_Zaké, je ne sais pas où t'es allée me pêcher "ctc" et "anim.Filmstrip" :
Je ne sais absolument pas ce que ça fait cette commande. Ce que tu me demandes est quand même de haut niveau alors je n'expliquerais que succinctement mais d'après ton programme, tu déclares un personnage statique. Tu ne demandes au programme de vérifier qu'une seule et unique fois ta variable "amour_hikaru" dans le "init". Donc il regarde et créé un personnage avec un coeur vert. Ensuite vu que le personnage est dynamique, il ne revérifiera plus (d'où le personnage toujours avec un coeur vert). Il faut donc mettre la condition DANS le personnage et pas avant comme tu l'as fait. Comme ça, on va vérifier à chaque fois que le personnage est appelé.ctc=anim.Filmstrip("coeur vert.png", (20, 20), (2, 1), .30, xpos=655, ypos=577, xanchor=0, yanchor=0),
ctc_position="fixed")
Je te laisse utiliser le code de ton choix. Voici le code du programme complet dont je me suis servit pour vérifier que ce que j'ai dit fonctionne :
- Code:
init:
$ sentiment = 'normal'
$ e = Character('Elusia',
color="#FF69B4",
window_left_padding=160,
show_side_image=ConditionSwitch(
"sentiment == 'normal'", "e_normal.png",
"sentiment == 'amitie'", "e_amitie.png",
"sentiment == 'amour'", "e_amour.png",
)
)
label start:
e "Je suis normale."
$ sentiment = 'amitie'
"(Après un mois ensemble.)"
e "Je suis ton amie."
$ sentiment = 'amour'
"(Après un an ensemble.)"
e "Je suis ta petite amie."
return
Ryouzanki- Maître
- Messages : 1008
Age : 33
Re: [Tuto Ren'Py] Les dialogues avancés (**)
Merci pour les réponses ^^
Pour les codes je les ai pris sur le site de Ren'py (et surtout sur le tutoriel intégré dans le logiciel), je trouvais les effet sympa ^^ ça rajoute une petite image après la réplique d'un perso (ici en bas à droite de ma boîte de dialogue)
Le anime.Filmstrip indique une image qui bouge (dans mon cas, c'est comme si le coeur faisait boum boum) et le ctc c'est pour bloquer la position il me semble (sinon il le met juste après le dernier mot de la réplique)
Pour les codes je les ai pris sur le site de Ren'py (et surtout sur le tutoriel intégré dans le logiciel), je trouvais les effet sympa ^^ ça rajoute une petite image après la réplique d'un perso (ici en bas à droite de ma boîte de dialogue)
Le anime.Filmstrip indique une image qui bouge (dans mon cas, c'est comme si le coeur faisait boum boum) et le ctc c'est pour bloquer la position il me semble (sinon il le met juste après le dernier mot de la réplique)
Chibi_Zaké- Gribouilleur
- Messages : 113
Age : 28
Re: [Tuto Ren'Py] Les dialogues avancés (**)
LOL. Le code que je t'ai donné est quasiment donné ainsi sur le site de Ren'Py. (cf : http://www.renpy.org/wiki/renpy/doc/cookbook/Conditional_Side_Images )
Ryouzanki- Maître
- Messages : 1008
Age : 33
Sujets similaires
» [Tuto Ren'Py] Les dialogues (*)
» Aide vetement
» [Tuto Ren'Py] Les menus lvl 2 (**)
» [Tuto Ren'Py] Et si on installait Ren'Py ?
» [Tuto Ren'Py] Les menus lvl 1 (*)
» Aide vetement
» [Tuto Ren'Py] Les menus lvl 2 (**)
» [Tuto Ren'Py] Et si on installait Ren'Py ?
» [Tuto Ren'Py] Les menus lvl 1 (*)
Site pour apprendre à dessiner manga :: Apprendre à dessiner :: Jeux vidéos et Visual Novels :: Ren'Py :: Tutoriels
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Jeu 27 Aoû 2015 - 15:50 par Méréthide
» [Aide] voici toutes les aides que j'ai trouver pour le corps humain, mains pied.....
Jeu 27 Aoû 2015 - 15:29 par Blu
» SEKAI TOURNOI - DUEL 3 les oeuvres
Jeu 27 Aoû 2015 - 15:22 par TheGreatestTitan
» Une idée d'histoire (besoin d'avis)
Mer 26 Aoû 2015 - 14:53 par lidairui
» Pause de l'été !
Lun 24 Aoû 2015 - 21:34 par Fire Ball
» Tablette Graphique Wacom Latence, Bug sur Gimp v.2.8.14
Lun 24 Aoû 2015 - 17:37 par Asuka-ETS
» SEKAI TOURNOI - Résultats et thèmes du DUEL 3
Ven 21 Aoû 2015 - 20:50 par Alyss
» SEKAI TOURNOI - DUEL 2 Les oeuvres *^*
Jeu 20 Aoû 2015 - 13:28 par miyakisan
» League of Legend
Lun 17 Aoû 2015 - 23:51 par Ryouzanki
» mauvaise nouvelle et bonne nouvelle pour les fan de monster hunter
Dim 16 Aoû 2015 - 21:25 par Atiliyah
» Appel à la création : Création d'une nouvelle ban pour le fow !
Sam 15 Aoû 2015 - 11:59 par Méréthide
» SEKAI TOURNOI - Résultats et thèmes du DUEL 2
Sam 8 Aoû 2015 - 21:25 par miyakisan
» Concours d'été - Juillet/Août [2015] - Matsuri -
Sam 8 Aoû 2015 - 3:42 par ashiiko
» SEKAI TOURNOI - DUEL 1 Les oeuvres *^*
Ven 7 Aoû 2015 - 8:03 par G
» varier l'épaisseur du trait - gimp
Lun 3 Aoû 2015 - 20:56 par Fire Ball