Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Sorties: Dread Mac Farlane - episode 6 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

334 connectés actuellement

29368003 visiteurs
depuis l'ouverture

1004446 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Le Comptoir Du clickeur

Offgame

Tashiroworld

Zarok

Leo-Games

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!

Aller à la page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

Reprise du message précédent:

Gari - posté le 12/11/2020 à 11:52:23 (5899 messages postés) - honor

❤ 0

Oui, j'avais bien tout remplacé.

Je viens de tester de changer l'acteur, et il s'agit bien du dernier personnage dans l'équipe. Mais c'est naze, car sauf à avoir un seul perso, le HUD n'est jamais adapté au sprite. Donc là juste le script fait pas ce qu'il est sensé faire.
En plus j'avais pas vu, mais il ne se raffraîchit pas automatiquement quand on change de personnage (donc il faut un $scene = Scene_Map.new).

Je réessaye avec -1, vu que le refresh fonctionne. => non, c'est bien le dernier membre qui pointe au chômage.


Suite du sujet:

Gari - posté le 12/11/2020 à 18:03:10 (5899 messages postés) - honor

❤ 0

:bocal

Logiciel : RPG Maker XP
Source : http://www.rpg-maker.fr/index.php?page=scripts&id=51

En voulant prendre un screen du rendu de ce script, je suis tombé sur cette erreur :
- le jeu se lance bien (écran titre + nouveau jeu)
Par contre en appuyant sur Echap pour voir le menu :
"Line 15 Type Error occurred.
No implicit conversion from nil to integer"

La ligne en question :

Portion de code : Tout sélectionner

1
self.contents.font.size = $fontsize 




Roi of the Suisse - posté le 12/11/2020 à 20:39:10 (29802 messages postés) - honor -

❤ 0

Alerte neige !

$fontsize est nul car il n'a pas encore été défini.
Tu peux rajouter

Portion de code : Tout sélectionner

1
$fontsize = 14

juste au dessus.
Mais c'est un peu bête, je suppose que s'il a utilisé une variable c'est que ça doit servir à quelque chose...

D'ailleurs $fontface aura sans doute le même soucis. Tu devras sans doute mettre un nom de police dedans, genre "Arial"...



L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


Gari - posté le 12/11/2020 à 23:36:08 (5899 messages postés) - honor

❤ 0

Il n'y a pas moyen d'utiliser les paramètres de la police par défaut ?


Roi of the Suisse - posté le 13/11/2020 à 09:10:57 (29802 messages postés) - honor -

❤ 0

Alerte neige !

Bah dans RMXP on définit $fontface et $fontsize dans le script Main, donc ils devraient être définis, et tu ne devrais pas avoir ton erreur "nil" dont tu parles.

L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


Gari - posté le 13/11/2020 à 11:10:17 (5899 messages postés) - honor

❤ 0

Le Main par défaut dit ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
rescue Errno::ENOENT
  # Supplement Errno::ENOENT exception
  # If unable to open file, display message and end
  filename = $!.message.sub("No such file or directory - ", "")
  print("Unable to find file #{filename}.")
end



filename = $!.message.sub("No such file or directory - ", "") => ça appelle une font depuis où ? (c'est quoi l'autre script qui pourrait gérer ça ?)


Roi of the Suisse - posté le 13/11/2020 à 11:30:33 (29802 messages postés) - honor -

❤ 0

Alerte neige !

Dans RMXP il y a un script tout en bas qui s'appelle Main.
Là on écrit éventuellement :

Citation:

$fontface = "Arial"
$fontsize = 14

Ce qui modifie la police lorsque les scripts utilisent ces variables.

Ou bien on écrit :

Portion de code : Tout sélectionner

1
2
3
Font.default_name = "Arial"
Font.default_size = 14
Font.default_color.set(50, 0, 150)

Ce qui est plus canonique il me semble.
C'est ce que je fais en tout cas.

Dans ton script à problèmes, tu peux remplacer $fontface par Font.default_name et $fontsize par Font.default_size ça devrait marcher.



L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


Gari - posté le 13/11/2020 à 13:41:01 (5899 messages postés) - honor

❤ 0

En fait le problème c'est le Main par défaut de XP (la version pas crack) : il n'y a pas de définition de la font par défaut sur le script Main. J'ai parcouru les autres scripts, mais pas trouvé :F

Merci pour le coup de main, je vais tester ça.

---------------------------------
Logiciel : RPG Maker XP, peut-être VX
Type : nil to integer (XP) ou Syntax Error (VX)
https://www.rpg-maker.fr/index.php?page=scripts&id=139

Impossible de faire fonctionner ce script, que ce soit sur XP ou VX. Le script n'a à priori plus d'erreur liée à Oniro.
Pour les modules de touches, j'aurais eu tendance à placer le script tout en haut, mais vu que c'était pas mentionné je l'ai placé comme d'habitude au-dessus de Main.

J'ai aussi tenté de rajouter un & aux lignes mentionnées en commentaire, mais c'est pas une bonne idée (bloque l'écran titre de VX et saute celui de XP).
Sur XP, quand j'ai testé, le jeu crash quand j'appuie sur X (sensé mener au menu). J'avais paramétré pour qu'il se passe quelque chose avec la touche J.

J'ai aussi une autre question : dans les instructions, on parle de rajouter un end après les instructions. C'est bien en appel de script ou c'est le end de la condition en événement? (c'est pas clair)

Si personne n'a de solution, je masquerai ce script, vu qu'il existe déjà un script pour ça.

Merci d'avance :/


cortez - posté le 09/12/2021 à 18:24:50 (523 messages postés)

❤ 0

Bonjour,

J'ai une question lié aux formules de combat.

Logiciel : Rm XP (oui je suis un vieux de la vieille, que voulez vous)
Type : formules de combat

Je sais que la formule de "précision/évasion" d'un skill est la suivante :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
  def set_skill_hit_value(user, skill, effective)
    atk_hit = DAMAGE_ALGORITHM_TYPE > 1 ? user.agi : user.dex
    eva = 8 * self.agi / atk_hit + self.eva
    hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
    hit = self.cant_evade? ? 100 : hit
    hit_result = (rand(100) < hit)
    @evaded = true unless hit_result
    effective |= hit < 100
    return effective
  end



J'ai également compris que la valeur skill.eva est celle située dans l'onglet Skills dans le champ EVA ou EVA-F dans les parametres du skill en question.

Je sais également qu'une valeur EVA à 0 fait en sorte que le skill n'échoue jamais (sort de soin par exemple) et qu'une valeur de 100 fait en sorte que seul une cible avec 100 d'esquive peut esquiver le skill. (sans doute 5% du temps comme le calcul des critiques ?)

Voici là ou je bloque, je souhaiterais savoir comment faire pour donner une valeur EVA dans le skill afin que celui-ci touche 30% du temps.

Si possible expliquer la syntaxe rgss1 afin que j'y vois plus clair.

Merci par avance.


Roi of the Suisse - posté le 12/12/2021 à 12:36:12 (29802 messages postés) - honor -

❤ 1

Alerte neige !

C'est "hit" qui donne le pourcentage que le skill fonctionne.

Portion de code : Tout sélectionner

1
hit_result = (rand(100) < hit)

Cette ligne choisit un nombre entre 0 et 100, et si ce nombre aléatoire est en dessous de "hit", le skill fonctionne. Ça veut dire que si "hit" vaut 90, le skill aura 90% de chances de réussir, alors que si "hit" vaut 10, le skill aura 10% de chances de réussir.


Portion de code : Tout sélectionner

1
hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100

Ici on apprend que dans le cas courant, hit = 100 - eva * skill.eva_f /100
Il y a deux taux d'évasion dans cette formule.
- "eva" est le taux d'évasion propre aux personnages impliqués dans le skill (cible et attaquant). Ce taux d'évasion lié aux personnages est calculé en fonction de l'agilité de la cible, et de l'agilité/dextérité de l'attaquant. C'est naturel en fait. Si la cible a beaucoup d'agilité, elle peut éviter le skill. Mais si l'attaquant à beaucoup d'agilité/dextérité, le skill est sûr de réussir.
- "skill.eva_f" est le taux d'évasion propre au skill. nous dit dans quelle proportion il faut prendre en compte l'esquive de la cible et la dextérité du lanceur (amalgamés dans "eva") dans le calcul de la réussite de l'attaque.

L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


Gari - posté le 12/12/2021 à 13:16:29 (5899 messages postés) - honor

❤ 0

Je sais pas si cortez va passer, mais j'ai bien fait de upper ce topic. ^^


cortez - posté le 12/12/2021 à 21:23:27 (523 messages postés)

❤ 0

Bonsoir,

Merci Roi, pour les explications. (plein de calculs en perspective, moi qui suis pas doué avec les chiffres..)

Donc pour résumer, je doit d'abord calculer
atk_hit = agi ou dex (selon le choix paramétré en BDD sur le skill)
eva = (8 x self.agi)/(atk_hit) + self.eva

Puis reprendre la formule "inversée"
skill.eva_f = 100 * ((100 - hit) / eva)


Donc pour Aluxes lv1 vs Ghost et le skill "Fire" on trouve :

Ghost
AGI 41
EVA 0

Aluxes (lv1)
DEX 59

Skill "Fire"
skill_eva-F = ?

Le système de combat utlilise une valeur DAMAGE_ALGORITHM_TYPE=0 donc atk_hit = user.dex

eva = 8 x 41/59 + 0
eva = 5.56

skill.eva_f = 100 * (100 - 30) / 5.56
skill.eva_f = 1258

Ya sans doute un souci dans les formules ? (la valeur max possible de skill_eva-F est de 100)


Roi of the Suisse - posté le 12/12/2021 à 23:33:37 (29802 messages postés) - honor -

❤ 0

Alerte neige !

Ah oui désolé, j'ai mal interprété le sens du skill.eva_f ! Ça n'est pas du tout le taux d'évasion du skill ! J'ai imaginé ça en lisant le code, mais en ouvrant le menu de RPG Maker, je me suis rendu compte qu'en fait skill.eva_f nous disait dans quelle proportion il fallait prendre en compte l'esquive de la cible / la dextérité du lanceur.
Si c'est 0, l'esquive de la cible/dextérité du lanceur n'a pas d'impact sur la réussite du skill. Le skill a toujours le même taux de réussite, indépendamment des personnages impliqués.
Si c'est 100, l'esquive de la cible/dextérité du lanceur a un impact important. La réussite du skill dépend beaucoup des personnages impliqués.
skill.eva_f rend la valeur "eva" plus ou moins importante. "eva" agrège l'esquive de la cible et la dextérité du lanceur.

Régler skill.eva_f pour avoir un taux de réussite du skill de 30% n'a donc aucun sens, et donne évidemment des valeurs aberrantes quand on fait le calcul :lol

Voici où se situe skill.eva_f dans le menu :

image



Tu as un pourcentage de réussite du skill dans le menu je vois !
C'est peut-être tout simplement ça que tu cherches ?

image



Sinon, c'est l'habileté du lanceur et l'esquive de la cible qu'il faut régler.
Imaginons qu'on ait un skill.eva_f à 100, c'est-à-dire que "eva" (esquive de la cible et dextérité du lanceur) va beaucoup influencer la réussite du skill.

hit = 100 - eva * skill.eva_f / 100
hit = 100 - eva * 100/100
hit = 100 - eva

"eva" va diminuer le taux de réussite du sort.
Si "eva" vaut 0, "hit" vaut 100. Si "eva" vaut 100, "hit" vaut 0.

atk_hit est la dextérité ou l'agilité du lanceur. Self est la cible ici.

eva = 8 * self.agi / atk_hit + self.eva
eva = 8 * 41 / 59 + 0
eva = 5
donc hit = 95.
Avec une dextérité du lanceur normale (59%), le sort réussira presque tout le temps (95%).

Tu peux regarder combien mettre dans atk_hit (dextérité du lanceur) pour avoir hit = 30.
hit = 30
eva = 100 - hit
eva = 70
eva = 8 * self.agi / atk_hit + self.eva
atk_hit = 8 * self.agi / (eva - self.eva)
atk_hit = 8 * 41 / (70 - 0)
atk_hit = 5
Donc si le lanceur a une dextérité toute pourrie (5%), le sort réussira dans 30% des cas.

Tu peux faire le même exercice en faisant cette fois varier self.agi (l’agilité de la cible) : si le fantôme a une agilité très élevée, le sort réussira dans 30% des cas, même si le lanceur a une dextérité normale.
Et il y a self.eva (esquive de la cible) aussi qui permet de rendre le fantôme meilleur en esquive.



Peut-être devrais-tu lire ce tutoriel qui explique le fonctionnement des scripts de combat de rpg maker xp :
https://www.rpg-maker.fr/tutoriels-461-rgss-modifier-les-formules-de-combat.html
J’espère que tu pourras en tirer deux-trois concepts utiles pour ce que tu fais.

L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


cortez - posté le 13/12/2021 à 17:40:26 (523 messages postés)

❤ 0

Je comprend mieux pourquoi j'y arrivait pas..
C'est la valeur HIT rate que je doit modifier et dans la version RPGmakerXP de Steam, les champs de valeur sont tous mélangés (d'ailleurs après ta 1ere intervention j'ai eu des doutes sur la valeur Hit Rate)

image

Bref c'est résolu.
Merci les gars.


cortez - posté le 14/02/2022 à 13:23:32 (523 messages postés)

❤ 0

Bonjour,
C'est encore moi.. Entre ma disparition il y a plus de 5 ans et mon retour fin 2021 je me suis éveillé au codage (uniquement bash) et je souhaiterais élargir mes connaissances sur un domaine que j'aime bien, le making.

Et maintenant que j'en comprend la logique, il me manque quelques truc pour pouvoir explorer par mes propres moyens le rgss1 (rmXP quoi)

J'aimerais savoir si il est possible d'afficher le contenu des librairies ruby de rmXP, de dresser une liste des méthodes qui existent et voir le type de données (leur format surtout) des valeurs stockés dans les variables et tables (genre la table des objets, des joueurs....)

Le but c'est d'avoir des astuces et clés de compression afin de bosser par moi-même.

Merci par avance à ceux qui éclaireront ma lanterne.


Troma - posté le 24/07/2022 à 23:52:42 (6227 messages postés) -

❤ 0

Je procrastine

Bonsoir, quelqu'un saurait comment mettre une picture a la lace des battlers de ce script svp ? merci

https://www.rpg-maker.fr/scripts-287-afficher-le-niveau-des-heros-en-combat.html

Edit : Ah oui effectivement c'est un autre, autant pour moi, j'ai trouvé du coups en bidouillant, merci quand même (résolu)

ꀎꀎꀎꀎꀎꀎꀎ


Kravmaga-Boustifouette - posté le 25/07/2022 à 00:06:14 (223 messages postés) -

❤ 0

Ce script ne touche pas au battlers


Troma - posté le 02/08/2022 à 13:41:34 (6227 messages postés) -

❤ 0

Je procrastine

Bonjour, quelqu'un aurait les planches test pour ce script ?! elles ne s'affichent plus, merci.

https://www.rpg-maker.fr/scripts-21-animatedsprite-25.html

même une seule pour voir le nombre , les directions etc...

ꀎꀎꀎꀎꀎꀎꀎ


Roi of the Suisse - posté le 02/08/2022 à 15:22:27 (29802 messages postés) - honor -

❤ 0

Alerte neige !

Si tu parles de l'image mentionnée dans le script, la voici :
https://web.archive.org/web/20070126153358/https://img155.imageshack.us/img155/3114/sasukenonterminerp8.png

image

L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko


Troma - posté le 02/08/2022 à 16:09:08 (6227 messages postés) -

❤ 0

Je procrastine

Ca marche merci je vais voir ce que ca donne

ꀎꀎꀎꀎꀎꀎꀎ


Gari - posté le 23/08/2022 à 09:47:11 (5899 messages postés) - honor

❤ 0

Logiciel : RPG Maker VX


Problème 1
Bonjour, j'ai un petit problème avec le script de messages de Yanfly (génération YERD), c'est qu'il retourne automatiquement à la ligne quand on utilise une boîte pour le nom d'un perso.

Voici la portion de code que je pense concernée :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    #-------------------------------------------------------------
    # Name box REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\NB\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
      end
      "" }
    @text.gsub!(/\\NBL\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = true
      end
      "" }
    @text.gsub!(/\\NBU\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = false
      end
      "" }
    @text.gsub!(/\\NBU/i) { 
      @name_window.close
      @name_text.close
      @name_window_lock = false
      "" }
    @text.gsub!(/\\RNB\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
      end
      "" }
    @text.gsub!(/\\RNBL\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = true
      end
      "" }
    @text.gsub!(/\\RNBU\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = false
      end
      "" }
      
    # Close the Name Window
    unless @name_window_lock
      @name_window.close if !@name_window_open
      @name_text.close if !@name_window_open
    end
  end
  
  #--------------------------------------------------------------------------
  # overwrite update_message
  #--------------------------------------------------------------------------



Problème 2
On dirait que le script Neo Save System VI ne fonctionne pas des masses sur windows 10 (ou en tout cas pas sur ma version de Windows). J'ai testé sur la démo de présentation (seulement ce script), et il dit ne pas trouver les deux fichiers png (temp et save1_ss) alors que ceux-ci ne sont pas nécessaires. Si la sauvegarde existe déjà (avec les fichiers images donc), il est possible de charger la sauvegarde normalement, mais pas de sauvegarder par-dessus, ça met une ligne dans le style "Line 313: Errno::EACCESS occured. Permission Denied - temp.png or Save 1.png"

Edit : Celui-là est résolu, j'ai rajouté le script fix Game_Interpreter à VX à partir d'un jeu qui fonctionnait et maintenant plus de souci (même si je vois pas trop le rapport entre ce truc et les images).


Mack - posté le 23/08/2022 à 14:23:59 (2288 messages postés)

❤ 0

Gari a dit:

Logiciel : RPG Maker VX


Problème 1
Bonjour, j'ai un petit problème avec le script de messages de Yanfly (génération YERD), c'est qu'il retourne automatiquement à la ligne quand on utilise une boîte pour le nom d'un perso.

Voici la portion de code que je pense concernée :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    #-------------------------------------------------------------
    # Name box REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\NB\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
      end
      "" }
    @text.gsub!(/\\NBL\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = true
      end
      "" }
    @text.gsub!(/\\NBU\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = false
      end
      "" }
    @text.gsub!(/\\NBU/i) { 
      @name_window.close
      @name_text.close
      @name_window_lock = false
      "" }
    @text.gsub!(/\\RNB\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
      end
      "" }
    @text.gsub!(/\\RNBL\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = true
      end
      "" }
    @text.gsub!(/\\RNBU\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = false
      end
      "" }
      
    # Close the Name Window
    unless @name_window_lock
      @name_window.close if !@name_window_open
      @name_text.close if !@name_window_open
    end
  end
  
  #--------------------------------------------------------------------------
  # overwrite update_message
  #--------------------------------------------------------------------------



Problème 2
On dirait que le script Neo Save System VI ne fonctionne pas des masses sur windows 10 (ou en tout cas pas sur ma version de Windows). J'ai testé sur la démo de présentation (seulement ce script), et il dit ne pas trouver les deux fichiers png (temp et save1_ss) alors que ceux-ci ne sont pas nécessaires. Si la sauvegarde existe déjà (avec les fichiers images donc), il est possible de charger la sauvegarde normalement, mais pas de sauvegarder par-dessus, ça met une ligne dans le style "Line 313: Errno::EACCESS occured. Permission Denied - temp.png or Save 1.png"

Edit : Celui-là est résolu, j'ai rajouté le script fix Game_Interpreter à VX à partir d'un jeu qui fonctionnait et maintenant plus de souci (même si je vois pas trop le rapport entre ce truc et les images).



Pas sur que ça suffise, tu peux filer la fonction "refresh_name_box" ?
( Et c'est quoi le problème du retour à la ligne ? xD )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Kravmaga-Boustifouette - posté le 23/08/2022 à 22:01:33 (223 messages postés) -

❤ 0

C'est difficile de savoir ce que fait cette portion de code toute seule. C'est dans quelle classe ? Que vaut @text ? Quelle opération fait refresh_name_box ?

Ce que fait ce code, c'est soutirer à @text une suite de caractères qui ressemble par exemple à "\nb[c*]" (c* étant un nombre indéfini de caractères, sauts de ligne exclus), et ensuite de faire tourner le bloc {} qui suit, avec $1 = c*.

Lorsque tu parles de noms entrés via une boîte, il s'agit de la boîte de base ou bien d'une boîte de Yanfly ? Et il s'agit de noms de héros, de variables de l'éditeur ou encore de variables ruby ?

Ce que tu peux tenter, par exemple, c'est de prendre la variable qui contient le nom problématique et de lui faire "variable.chomp!" pour enlever de possibles sauts de ligne de celle-ci.


Gari - posté le 24/08/2022 à 19:49:20 (5899 messages postés) - honor

❤ 0

Mack : le problème du retour à la ligne, c'est que quand il y a un choix, il sélectionne la ligne vide comme premier choix, et la deuxième ligne avec le premier choix annoncé est le deuxième choix quand sélectionné.
En gros :
[boîte avec le nom du perso]
[curseur premier choix sur ligne vide
curseur deuxième choix sur ligne du premier choix
ligne du deuxième choix non sélectionnable]

Euh, j'ai pas tout compris, mais :
- \nb[x] permet d'ajouter une boîte au-dessus de la boîte de dialogue standard. Il s'agit d'un ajout de Yanfly pour ajouter le nom d'un personnage (ça supporte les balises textes pour des variables ou non de héros).
- La classe c'est Window_Message < Window_Selectable
- pour ce que fait refresh_name_box, c'est défini ligne 620.
- Le reste je ne sais pas où regarder

Citation:

Ce que tu peux tenter, par exemple, c'est de prendre la variable qui contient le nom problématique et de lui faire "variable.chomp!" pour enlever de possibles sauts de ligne de celle-ci.

Je mets ça où ? Car en soi il s'agit d'une balise code qu'on met dans la boîte message, du style \nb[\n[1]] (ce qui afficherait l'acteur 1 de la bdd), et pas un appel de script. Et si c'est dans le script je n'ai aucune idée de où caser ça.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
#===============================================================================
# 
# Yanfly Engine RD - Custom Message System
# Last Date Updated: 2009.06.14
# Level: Easy, Lunatic
# 
# This is by no means a complex message system like Modern Algebra's ATS or
# Woratana's Neo Message System. If you want a message system with a lot of
# features, I highly recommend that you take a look at those. This message
# system here will supply the most basic functions and needs without adding
# too many extra features.
# 
# What this script has to offer is basic functionality for new tags, a namebox
# window, and drawn items, weapons, and armours along with their icons. There
# also exists a Lunatic Mode to create quick and easy custom shortcuts. For
# the most part, this script is plug and play.
# 
#===============================================================================
# Updates:
# ----------------------------------------------------------------------------
# o 2009.06.14 - Started script and finished.
#===============================================================================
# Instructions
#===============================================================================
# 
# Scroll down and bind ROW_VARIABLE to the desired variable. This variable will
# let you adjust how many rows can be viewed at once. If the rows are set to 0,
# it will display the default row amount of 4 rows.
# 
# The following are codes you may use when typing out your messages. Replace
# x, y with numbers unless specified otherwise.
# 
# Code:       Effect:
# \v[x]       Writes variable x's value.
# \n[x]       Writes actor x's name.
# \c[x]       Changes the colour of the text to x.
# \g          Displays the gold window.
# \.          Waits 15 frames (quarter second).
# \|          Waits 60 frames (a full second).
# \!          Waits until key is pressed.
# \>          Following text is instant.
# \<          Following text is no longer instant.
# \^          Skips to the next message.
# \\          Writes a "\" in the window.
# 
# \w[x]       Waits x frames (60 frames = 1 second).
# 
# \nb[x]      Creates a name window with x. Left side.
# \nbl[x]     Creates a name window with x. Locks the namebox. Left side.
# \nbu[x]     Creates a name window with x. Unlocks the namebox. Left side.
# \rnb[x]     Creates a name window with x. Right side.
# \rnbl[x]    Creates a name window with x. Locks the namebox. Right side.
# \rnbu[x]    Creates a name window with x. Unlocks the namebox. Right side.
# \nbu        Closes name window. Unlocks the namebox.
# 
# \fn[x]      Changes the font name to x. Set to 0 to reset font name.
# \fs[x]      Changes the font size to x. Set to 0 to reset font size.
# \fb         Changes the font to bold and back.
# \fi         Changes the font to italic
# \fh         Changes the font to shadowed and back.
# 
# \ac[x]      Writes actor x's class name.
# \as[x]      Writes actor x's subclass name. Requires Subclass System.
# \ax[x]      Writes actor x's combination class name. Requires Subclass System.
# \af[x]      Replaces face with actor x's face.
# \af[x:y]    Replaces face with actor x's face name but uses expression y.
# 
# \pn[x]      Writes ally's name in party slot x.
# \pc[x]      Writes ally's class name in party slot x.
# \ps[x]      Writes ally's subclass name in party slot x.
# \px[x]      Writes ally's combination class name in party slot x.
# \pf[x]      Replaces face with ally's face in party slot x.
# \pf[x:y]    Replaces face with ally's face name but uses expression y.
# 
# \nc[x]      Writes class ID x's name.
# \ni[x]      Writes item ID x's name.
# \nw[x]      Writes weapon ID x's name.
# \na[x]      Writes armour ID x's name.
# \ns[x]      Writes skill ID x's name.
# \nt[x]      Writes state ID x's name.
#
# \i[x]       Draws icon ID x into the message window.
# \ii[x]      Writes item ID x's name with icon included.
# \iw[x]      Writes weapon ID x's name with icon included.
# \ia[x]      Writes armour ID x's name with icon included.
# \is[x]      Writes skill ID x's name with icon included.
# \it[x]      Writes state ID x's name with icon included.
# 
#===============================================================================
#
# Compatibility
# - Incompatible: Any other message systems obviously.
# - Alias: Window_Message: initialize, update, dispose, new_page
# - Overwrites: Game_Interpreter: command_101, setup_choices
# - Overwrites: Window_Message: convert_special_characters, update_message
#
#===============================================================================
# Credits:
# Woratana for reference on stringing multiple message text.
# Modern Algebra for reference on a few misc methods.
#===============================================================================
 
$imported = {} if $imported == nil
$imported["CustomMessageSystem"] = true
 
module YE
  module MESSAGE
    
    # This adjusts how many rows are shown. On screen. If it's 0 or under, a
    # maximum of 4 rows will be shown. If it's above, it will show that many
    # rows and texts following it immediately after will also display that many
    # extra rows.
    ROW_VARIABLE = 90
    
    # This adjusts the icon width. Used mostly for monospaced fonts so that
    # icons will not break the alignment.
    ICON_WIDTH = 24
    
    # This determines where you would like the namebox window to appear relative
    # to the message window. Adjust the following accordingly.
    NAME_WINDOW_X = 0        # Adjusts X position offset from Message Window.
    NAME_WINDOW_Y = 40       # Adjusts Y position offset from Message Window.
    NAME_WINDOW_W = 20       # Adjusts extra width added to the Name Window.
    NAME_WINDOW_H = 40       # Adjusts the height of the Name Window.
    NAME_COLOUR   = 0        # Default colour used for name box.
    
    # The following lets you adjust whether or not you would like to see the
    # back of the name window.
    NAME_WINDOW_SHOW_BACK = true
    
    # The following allows you to adjust the font defaults for ALL text in the
    # game. This includes the text outside of the message window and includes
    # the text within the menu windows.
    FONT_NAME = ["Cambria", "Cambria", "Cambria"]
    FONT_SIZE = 20
    FONT_BOLD = false
    FONT_ITALIC = false
    FONT_SHADOW = true
    
    
  end # MESSAGE
end # YE
 
#===============================================================================
# How to Use: Lunatic Mode
#===============================================================================
# 
# This portion is for those who know how to script.
# 
# \X[x] or \X[x:y] or \X[x:y:z]
# These let you create your own custom tags. If you use the first tag, there is
# one case for the "custom_convert" definition to return. If you use the second
# tag, there will be two cases for you to select from. And likewise, if there's
# three tags, then the z case will also be taken into account of.
# 
#===============================================================================
 
class Window_Message < Window_Selectable
  
  def custom_convert(x_case, y_case = 0, z_case = 0)
    text = ""
    case x_case
    #---------------------------------------------------------------------------
    # //////////////////////////////////////////////////////////////////////////
    # This is where you begin adding in your own custom converted tags.
    #---------------------------------------------------------------------------
    when 1 # Show the full name of the actor.
      case y_case # This is the extra case for the actor.
      when 1
        text = "\\n[1] von Xiguel"
      when 2
        text = "Michelle \\n[2]"
      when 3
        text = "\\n[3] Manfred"
      when 4
        text = "\\n[4] Fernaeus"
      end
      
    when 2 # Show how much gold the party has.
      text = $game_party.gold
      
    when 3 # Show party's max level
      text = $game_party.max_level
      
    #---------------------------------------------------------------------------
    # This is the part you guys shouldn't touch afterwards.
    # //////////////////////////////////////////////////////////////////////////
    #---------------------------------------------------------------------------""
    end
    return text
  end
  
end # Window_Message
 
#===============================================================================
# Editting anything past this point may potentially result in causing computer
# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.
# Therefore, edit at your own risk.
#===============================================================================
 
Font.default_size = YE::MESSAGE::FONT_SIZE
Font.default_name = YE::MESSAGE::FONT_NAME
Font.default_bold = YE::MESSAGE::FONT_BOLD
Font.default_italic = YE::MESSAGE::FONT_ITALIC
Font.default_shadow = YE::MESSAGE::FONT_SHADOW
 
#===============================================================================
# Window_Message
#===============================================================================
 
class Window_Message < Window_Selectable
  
  #--------------------------------------------------------------------------
  # alias initialize
  #--------------------------------------------------------------------------
  alias initialize_cms initialize unless $@
  def initialize
    initialize_cms
    var = $game_variables[YE::MESSAGE::ROW_VARIABLE]
    @max_rows = (var <= 0) ? 4 : var
    nheight = YE::MESSAGE::NAME_WINDOW_H
    @name_window = Window_Base.new(YE::MESSAGE::NAME_WINDOW_X, 0, 100, nheight)
    @name_text = Window_Base.new(YE::MESSAGE::NAME_WINDOW_X, 0, 100, 56)
    @name_window.openness = 0
    @name_text.openness = 0
    @name_text.opacity = 0
    @name_window.z = self.z + 1
    @name_text.z = @name_window.z + 1
    @name_window_lock = false
  end
  
  #--------------------------------------------------------------------------
  # alias dispose
  #--------------------------------------------------------------------------
  alias dispose_cms dispose unless $@
  def dispose
    dispose_cms
    @name_window.dispose if @name_window != nil
    @name_text.dispose if @name_text != nil
  end
  
  #--------------------------------------------------------------------------
  # close
  #--------------------------------------------------------------------------
  def close
    super
    @name_window.close
    @name_text.close
    @name_window_lock = false
  end
  
  #--------------------------------------------------------------------------
  # alias update
  #--------------------------------------------------------------------------
  alias update_cms update unless $@
  def update
    @name_window.update
    @name_text.update
    refresh_size
    update_cms
  end
  
  #--------------------------------------------------------------------------
  # refresh_size
  #--------------------------------------------------------------------------
  def refresh_size
    var = $game_variables[YE::MESSAGE::ROW_VARIABLE]
    @max_rows = (var <= 0) ? 4 : var
    calc_height = @max_rows * 24 + 32
    if self.height != calc_height
      self.height = calc_height
      create_contents
    end
  end
  
  #--------------------------------------------------------------------------
  # overwrite reset_window
  #--------------------------------------------------------------------------
  def reset_window
    var = $game_variables[YE::MESSAGE::ROW_VARIABLE]
    wheight = var <= 0 ? 4 * 24 + 32 : var * 24 + 32
    @background = $game_message.background
    @position = $game_message.position
    self.opacity = (@background == 0) ? 255 : 0
    case @position
    when 0  # Top
      self.y = 0
      @gold_window.y = 360
    when 1  # Middle
      self.y = (Graphics.height - wheight) / 2
      @gold_window.y = 0
    when 2  # Bottom
      self.y = (Graphics.height - wheight)
      @gold_window.y = 0
    end
  end
 
  #--------------------------------------------------------------------------
  # overwrite convert_special_characters
  #--------------------------------------------------------------------------
  def convert_special_characters
    @name_window_open = false
    #-------------------------------------------------------------
    # Lunatic REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\X\[(\d+)\]/i) {
      custom_convert($1.to_i) }
    @text.gsub!(/\\X\[(\d+):(\d+)\]/i) {
      custom_convert($1.to_i, $2.to_i) }
    @text.gsub!(/\\X\[(\d+):(\d+):(\d+)\]/i) {
      custom_convert($1.to_i, $2.to_i, $3.to_i) }
    
    #-------------------------------------------------------------
    # Default REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\V\[(\d+)\]/i)    { $game_variables[$1.to_i] }
    @text.gsub!(/\\V\[(\d+)\]/i)    { $game_variables[$1.to_i] }
    @text.gsub!(/\\N\[(\d+)\]/i)    { $game_actors[$1.to_i].name }
    @text.gsub!(/\\C\[(\d+)\]/i)    { "\x01{#{$1}}" }
    @text.gsub!(/\\G/i)             { "\x02" }
    @text.gsub!(/\\\./)             { "\x03" }
    @text.gsub!(/\\\|/)             { "\x04" }
    @text.gsub!(/\\!/)              { "\x05" }
    @text.gsub!(/\\>/)              { "\x06" }
    @text.gsub!(/\\</)              { "\x07" }
    @text.gsub!(/\\\^/)             { "\x08" }
    @text.gsub!(/\\\\/)             { "\\" }
    
    #-------------------------------------------------------------
    # New REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\W\[(\d+)\]/i)    { "\x09{#{$1}}" }
    @text.gsub!(/\\I\[(\d+)\]/i)    { "\x10{#{$1}}" }
    @text.gsub!(/\\FS\[(\d+)\]/i)   { "\x11{#{$1}}" }
    @text.gsub!(/\\FN\[(.*?)\]/i)   { "\x12{#{$1}}" }
    @text.gsub!(/\\FB/i)            { "\x13" }
    @text.gsub!(/\\FI/i)            { "\x14" }
    @text.gsub!(/\\FH/i)            { "\x15" }
    
    #-------------------------------------------------------------
    # Automatic Actor REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\AN\[(\d+)\]/i) { 
      if $game_actors[$1.to_i] != nil
        $game_actors[$1.to_i].name
      else
        ""
      end }
    @text.gsub!(/\\AC\[(\d+)\]/i) { 
      if $game_actors[$1.to_i] != nil
        $game_actors[$1.to_i].class.name
      else
        ""
      end }
    @text.gsub!(/\\AS\[(\d+)\]/i) { 
      if $imported["SubclassSelectionSystem"] and 
      $game_actors[$1.to_i] != nil and
      $game_actors[$1.to_i].subclass != nil
        $game_actors[$1.to_i].subclass.name
      else
        ""
      end }
    @text.gsub!(/\\AX\[(\d+)\]/i) { 
      combination_class($game_actors[$1.to_i]) }
    @text.gsub!(/\\AF\[(\d+)\]/i) { 
      if $game_actors[$1.to_i] != nil
        $game_message.face_name = $game_actors[$1.to_i].face_name
        $game_message.face_index = $game_actors[$1.to_i].face_index
      end
      "" }
    @text.gsub!(/\\AF\[(\d+):(\d+)\]/i) { 
      if $game_actors[$1.to_i] != nil
        $game_message.face_name = $game_actors[$1.to_i].face_name
        $game_message.face_index = $2.to_i
      end
      "" }
    
    #-------------------------------------------------------------
    # Automatic Party REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\PN\[(\d+)\]/i) { 
      if $game_party.members[$1.to_i] != nil
        $game_party.members[$1.to_i].name
      else
        ""
      end }
    @text.gsub!(/\\PC\[(\d+)\]/i) { 
      if $game_party.members[$1.to_i] != nil
        $game_party.members[$1.to_i].class.name
      else
        ""
      end }
    @text.gsub!(/\\PS\[(\d+)\]/i) { 
      if $imported["SubclassSelectionSystem"] and 
      $game_party.members[$1.to_i] != nil and
      $game_party.members[$1.to_i].subclass != nil
        $game_party.members[$1.to_i].subclass.name
      else
        ""
      end }
    @text.gsub!(/\\PX\[(\d+)\]/i) { 
      combination_class($game_party.members[$1.to_i]) }
    @text.gsub!(/\\PF\[(\d+)\]/i) { 
      if $game_party.members[$1.to_i] != nil
        $game_message.face_name = $game_party.members[$1.to_i].face_name
        $game_message.face_index = $game_party.members[$1.to_i].face_index
      end
      "" }
    @text.gsub!(/\\PF\[(\d+):(\d+)\]/i) { 
      if $game_party.members[$1.to_i] != nil
        $game_message.face_name = $game_party.members[$1.to_i].face_name
        $game_message.face_index = $2.to_i
      end
      "" }
    
    #-------------------------------------------------------------
    # Auto Class, Item, Weapon, and Armour REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\NC\[(\d+)\]/i) { 
      $data_classes[$1.to_i].name }
    @text.gsub!(/\\NI\[(\d+)\]/i) { 
      $data_items[$1.to_i].name }
    @text.gsub!(/\\NW\[(\d+)\]/i) { 
      $data_weapons[$1.to_i].name }
    @text.gsub!(/\\NA\[(\d+)\]/i) { 
      $data_armors[$1.to_i].name }
    @text.gsub!(/\\NS\[(\d+)\]/i) { 
      $data_skills[$1.to_i].name }
    @text.gsub!(/\\NT\[(\d+)\]/i) { 
      $data_states[$1.to_i].name }
    @text.gsub!(/\\II\[(\d+)\]/i) { 
      "\x10{#{$data_items[$1.to_i].icon_index}}" +
      "#{$data_items[$1.to_i].name}"}
    @text.gsub!(/\\IW\[(\d+)\]/i) { 
      "\x10{#{$data_weapons[$1.to_i].icon_index}}" +
      "#{$data_weapons[$1.to_i].name}"}
    @text.gsub!(/\\IA\[(\d+)\]/i) { 
      "\x10{#{$data_armors[$1.to_i].icon_index}}" +
      "#{$data_armors[$1.to_i].name}"}
    @text.gsub!(/\\IS\[(\d+)\]/i) { 
      "\x10{#{$data_skills[$1.to_i].icon_index}}" +
      "#{$data_skills[$1.to_i].name}"}
    @text.gsub!(/\\IT\[(\d+)\]/i) { 
      "\x10{#{$data_states[$1.to_i].icon_index}}" +
      "#{$data_states[$1.to_i].name}"}
      
    #-------------------------------------------------------------
    # Name box REGEXP Conversions
    #-------------------------------------------------------------
    @text.gsub!(/\\NB\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
      end
      "" }
    @text.gsub!(/\\NBL\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = true
      end
      "" }
    @text.gsub!(/\\NBU\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s)
        @name_window_lock = false
      end
      "" }
    @text.gsub!(/\\NBU/i) { 
      @name_window.close
      @name_text.close
      @name_window_lock = false
      "" }
    @text.gsub!(/\\RNB\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
      end
      "" }
    @text.gsub!(/\\RNBL\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = true
      end
      "" }
    @text.gsub!(/\\RNBU\[(.*?)\]/i) { 
      if $1.to_s != nil
        refresh_name_box($1.to_s, 1)
        @name_window_lock = false
      end
      "" }
      
    # Close the Name Window
    unless @name_window_lock
      @name_window.close if !@name_window_open
      @name_text.close if !@name_window_open
    end
  end
  
  #--------------------------------------------------------------------------
  # overwrite update_message
  #--------------------------------------------------------------------------
  def update_message
    loop do
      text_height = [contents.font.size + (contents.font.size / 5), WLH].max
      c = @text.slice!(/./m)            # Get next text character
      case c
      #----------------------------------------------------------------------
      # Default Cases
      #----------------------------------------------------------------------
      when nil    # There is no text that must be drawn
        finish_message                  # Finish update
        break
      when "\x00" # New line
        new_line
        if @line_count >= @max_rows     # If line count is maximum
          unless @text.empty?           # If there is more
            self.pause = true           # Insert number input
            break
          end
        end
      when "\x01" # \C[n]  (text character color change)
        @text.sub!(/\{(\d+)\}/, "")
        contents.font.color = text_color($1.to_i)
        next
      when "\x02" # \G  (gold display)
        @gold_window.refresh
        @gold_window.open
      when "\x03" # \.  (wait 1/4 second)
        @wait_count = 15
        break
      when "\x04" # \|  (wait 1 second)
        @wait_count = 60
        break
      when "\x05" # \!  (Wait for input)
        self.pause = true
        break
      when "\x06" # \>  (Fast display ON)
        @line_show_fast = true
      when "\x07" # \<  (Fast display OFF)
        @line_show_fast = false
      when "\x08" # \^  (No wait for input)
        @pause_skip = true
        
      #----------------------------------------------------------------------
      # New Cases
      #----------------------------------------------------------------------
      when "\x09" # \|  Wait x frames
        @text.sub!(/\{(\d+)\}/, "")
        @wait_count = $1.to_i
        break
      when "\x10" # \i  Draws icon ID x
        @text.sub!(/\{(\d+)\}/, "")
        icon = $1.to_i
        icon_width = (24 - YE::MESSAGE::ICON_WIDTH) / 2
        draw_icon(icon, @contents_x - icon_width, @contents_y)
        @contents_x += YE::MESSAGE::ICON_WIDTH
      when "\x11" # \fs Font Size Change
        @text.sub!(/\{(\d+)\}/, "")
        size = $1.to_i
        if size <= 0 # If 0, revert back to the default font size.
          size = Font.default_size
        end
        contents.font.size = size
        text_height = [size + (size / 5), WLH].max
      when "\x12" # \fs Font Name Change
        @text.sub!(/\{(.*?)\}/, "")
        name = $1.to_s
        if name == "0" # If 0, revert back to the default font.
          name = Font.default_name
        end
        contents.font.name = name
      when "\x13" # \fb Font bold
        contents.font.bold = contents.font.bold ? false : true
      when "\x14" # \fi Font italic
        contents.font.italic = contents.font.italic ? false : true
      when "\x15" # \fi Font shadowed
        contents.font.shadow = contents.font.shadow ? false : true
        
      #----------------------------------------------------------------------
      # Finish Up
      #----------------------------------------------------------------------
      else                              # Normal text character
        contents.draw_text(@contents_x, @contents_y, 40, text_height, c)
        c_width = contents.text_size(c).width
        @contents_x += c_width
      end
      break unless @show_fast or @line_show_fast
    end
  end
  
  #--------------------------------------------------------------------------
  # alias new_page
  #--------------------------------------------------------------------------
  alias new_page_cms new_page unless $@
  def new_page
    new_page_cms
    contents.font.name = Font.default_name
    contents.font.size = Font.default_size
    contents.font.bold = Font.default_bold
    contents.font.italic = Font.default_italic
    contents.font.shadow = Font.default_shadow
  end
  
  #--------------------------------------------------------------------------
  # combination_class
  #--------------------------------------------------------------------------
  def combination_class(actor)
    return "" if actor == nil
    class1 = actor.class.name
    return class1 unless $imported["SubclassSelectionSystem"]
    return class1 if actor.subclass == nil
    class2 = actor.subclass.name
    text = sprintf(YE::SUBCLASS::DISPLAY_FORMAT, class1, class2)
    return text unless YE::SUBCLASS::USE_COMPLEX_CLASS_NAMES
    if YE::SUBCLASS::COMPLEX_CLASS_NAMES_FULL.include?(text)
      text = YE::SUBCLASS::COMPLEX_CLASS_NAMES_FULL[text]
    end
    return text
  end
  
  #--------------------------------------------------------------------------
  # refresh_name_box
  #--------------------------------------------------------------------------
  def refresh_name_box(name, side = 0)
    return if $game_temp.in_battle
    font_colour = YE::MESSAGE::NAME_COLOUR
    font_name = Font.default_name
    font_size = Font.default_size
    font_bold = Font.default_bold
    font_italic = Font.default_italic
    font_shadow = Font.default_shadow
    icon = 0
    name_width = 0
    #---Convert Special Characters
    name = name.gsub(/\x01\{(\d+)\}/i) { 
      font_colour = $1.to_i
      ""}
    name = name.gsub(/\x09\{(\d+)\}/i) {""}
    name = name.gsub(/\x10\{(\d+)\}/i) { 
      icon = $1.to_i
      name_width += YE::MESSAGE::ICON_WIDTH
      ""}
    name = name.gsub(/\x11\{(\d+)\}/i) {
      font_size = $1.to_i
      ""}
    name = name.gsub(/\x12\{(.*?)\}/i) {
      font_name = $1.to_s
      ""}
    name = name.gsub(/\x13/i) {
      font_bold = true
      ""}
    name = name.gsub(/\x14/i) {
      font_italic = true
      ""}
    name = name.gsub(/\x15/i) {
      font_shadow = true
      ""}
    #---Convert Special Characters
    @name_text.contents.font.name = font_name
    @name_text.contents.font.size = font_size
    @name_text.contents.font.bold = font_bold
    @name_text.contents.font.italic = font_italic
    @name_text.contents.font.shadow = font_shadow
    name_width += @name_text.contents.text_size(name).width
    name_width += YE::MESSAGE::NAME_WINDOW_W
    @name_window.width = name_width + 40
    @name_text.width = @name_window.width
    var = $game_variables[YE::MESSAGE::ROW_VARIABLE]
    wheight = var <= 0 ? 4 * 24 + 32 : var * 24 + 32
    position = $game_message.position
    case position
    when 0
      @name_window.y = self.height - YE::MESSAGE::NAME_WINDOW_H
      @name_window.y += YE::MESSAGE::NAME_WINDOW_Y
    when 1
      @name_window.y = (Graphics.height - wheight) / 2
      @name_window.y -= YE::MESSAGE::NAME_WINDOW_Y
    when 2
      @name_window.y = (Graphics.height - wheight)
      @name_window.y -= YE::MESSAGE::NAME_WINDOW_Y
    end
    offset = (@name_text.height - @name_window.height) / 2
    @name_text.y = @name_window.y - offset
    if YE::MESSAGE::NAME_WINDOW_SHOW_BACK and $game_message.background == 0
      @name_window.opacity = 255
    else
      @name_window.opacity = 0
    end
    if side == 0
      @name_window.x = YE::MESSAGE::NAME_WINDOW_X
    else
      @name_window.x = Graphics.width - YE::MESSAGE::NAME_WINDOW_X
      @name_window.x -= @name_window.width
    end
    @name_text.x = @name_window.x
    @name_window.create_contents
    @name_text.create_contents
    txh = [font_size + (font_size / 5), WLH].max
    @name_text.contents.font.color = text_color(font_colour)
    @name_text.contents.font.name = font_name
    @name_text.contents.font.size = font_size
    @name_text.contents.font.bold = font_bold
    @name_text.contents.font.italic = font_italic
    @name_text.contents.font.shadow = font_shadow
    if icon > 0
      iw = YE::MESSAGE::ICON_WIDTH
      @name_text.draw_icon(icon, YE::MESSAGE::NAME_WINDOW_W / 2, 0)
      @name_text.contents.draw_text(iw, 0, name_width + 8 - iw, txh, name, 1)
    else
      @name_text.contents.draw_text(0, 0, name_width + 8, txh, name, 1)
    end
    @name_window.open
    @name_text.open
    @name_window_open = true
  end
  
end # Window_Message
 
#===============================================================================
# Game_Interpreter
#===============================================================================
 
class Game_Interpreter
  
  #--------------------------------------------------------------------------
  # overwrite Show Text
  #--------------------------------------------------------------------------
  def command_101
    unless $game_message.busy
      $game_message.face_name = @params[0]
      $game_message.face_index = @params[1]
      $game_message.background = @params[2]
      $game_message.position = @params[3]
      flow = true
      loop {
        if @list[@index].code == 101 and meet_stringing_conditions and flow
          @index += 1
        else
          break
        end
        flow = @row_check
        while @list[@index].code == 401 and meet_stringing_conditions
          $game_message.texts.push(@list[@index].parameters[0])
          @index += 1
        end }
      if @list[@index].code == 102 # Show choices
        setup_choices(@list[@index].parameters)
      elsif @list[@index].code == 103 # Number input processing
        setup_num_input(@list[@index].parameters)
      end
      set_message_waiting # Set to message wait state
    end
    return false
  end
  
  #--------------------------------------------------------------------------
  # overwrite setup_choices
  #--------------------------------------------------------------------------
  def setup_choices(params)
    var = $game_variables[YE::MESSAGE::ROW_VARIABLE]
    rows = (var <= 0) ? 4 : var
    if $game_message.texts.size <= rows - params[0].size
      $game_message.choice_start = $game_message.texts.size
      $game_message.choice_max = params[0].size
      for s in params[0]
        $game_message.texts.push(s)
      end
      $game_message.choice_cancel_type = params[1]
      $game_message.choice_proc = Proc.new { |n| @branch[@indent] = n }
      @index += 1
    end
  end
  
  #--------------------------------------------------------------------------
  # meet_stringing_conditions
  #--------------------------------------------------------------------------
  def meet_stringing_conditions
    var = $game_variables[YE::MESSAGE::ROW_VARIABLE]
    rows = (var <= 0) ? 4 : var
    @row_check = (rows > 4) ? true : false
    return true if rows > $game_message.texts.size
    return false
  end
  
end # Game_Interpreter
 
#===============================================================================
#
# END OF FILE
#
#==============================================================================


Le script complet, si ça peut aider (je supprimerai plus tard).


Kravmaga-Boustifouette - posté le 25/08/2022 à 02:53:34 (223 messages postés) -

❤ 0

Ah oui c'est probablement pas ce que je pense alors
Essaie toujours de remplacer ligne 318 ".name" par ".name.slice(/.*/)" au cas où ?

Le retour à la ligne se produit uniquement lors d'un choix ?


Gari - posté le 25/08/2022 à 08:48:07 (5899 messages postés) - honor

❤ 0

Non, elle se produit à chaque fois. Il s'avère qu'il ne fallait pas faire de retour à la ligne dans la boîte de dialogue. En gros le maker faisait :

Citation:

\nb[nom]
blabla


Le bug pour les choix reste anormal, mais je peux contourner ça en ajoutant une boîte vide devant les boîtes concernées (VX détecte automatiquement si les choix peuvent être insérés dans la boîte de message précédente, et comme il y a un saut à la ligne le log doit mal placer son curseur).

Du coup je pense que vérifier si une ligne a été sautée après \nb[x] et la supprimer devrait pouvoir résoudre mon problème ?

Aller à la page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers