Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

348 connectés actuellement

30732294 visiteurs
depuis l'ouverture

2272 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Le Comptoir Du clickeur

Planète Glutko

New RPG Maker

Tous nos partenaires

Devenir
partenaire



Dialogues dans un fichier txt 1.5

[Outil d'aide au développeur] Pour plus de facilité à vous repérer, vous pouvez mettre tous vos dialogues dans un fichier txt en utilisant ce script.

Script pour RPG Maker XP
Ecrit par Trebor777 (Guillaume777)
Publié par trebor777 (lui envoyer un message privé)
Signaler un script cassé

❤ 0

Auteur : Trebor777 (Guillaume777)
Logiciel : RPG Maker XP
Nombre de scripts : 1

Objectif du script:Au lieu de mettre chaque message dans chaque évènement, j'appelle juste une commande qui se réfère à un tableau, tableau rempli avec le contenu d'un fichier texte. Ce texte est créé dans le fichier Data.

Bien sûr, il y a une petite syntaxe à respecter, quand vous remplissez le fichier texte. J'ai mis un exemple à la fin.
Je me suis dit que ce script pourrait être utile,dans le cas, par exemple, d'une traduction, ou quelque chose d'autre. Chaque dialogue serait plus facile à trouver et à traduire.

INSTRUCTIONS:
Ce script a pour objectif de fonctionner avec le Dubealex's AMS, mais il pourrait fonctionner avec un nouveau projet, mais vous aurez juste 4 commandes au lieu... De beaucoup !

Alors allons-y !
Version 1.5

Quoi de neuf?
- Un seul script... Plus de méthode redéfinie dans window_message refresh method
- Entièrement compatible avec le Dubealex's AMS
- Aide commenté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
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
class Interpreter
  #--------------------------------------------------
  alias trebor_dial_command_101 command_101
  def command_101
    bool= trebor_dial_command_101
    $game_temp.message_text.gsub!(/\\[Dd]ial_pnj_ID\[([0-9]+)\]/) do
      $data_pnj[$1.to_i] != nil ? $game_temp.message_text=load_dial($data_pnj[$1.to_i]) : ""
    end
    $game_temp.message_text.gsub!(/\\[Dd]ial_story_ID\[([0-9]+)\]/) do
      $data_story[$1.to_i] != nil ? $game_temp.message_text=load_dial($data_story[$1.to_i]) : ""
    end
    if bool !=nil
      return bool
    end
  end
  #---------------------------------------------------
  def load_dial(str)  #str le message à transmettre type string
    @str=str.dup  # Enregistrement de la chaine originale
    @old_str=str.dup
    @command_array=[]
    @command_size=[]
    @command_trie=[]
    @com=[]
    @str=clear_com(@str)
    last_str=@old_str
    if str.size>=40
      nb = 40
      nb_ligne=(str.size/nb).ceil
      if nb_ligne>=4 
        last_str="Message trop long" 
      else
      for i in 1..nb_ligne
        deb_int=(nb*(i-1))
        fin_int=(nb*i)
        temp=@str[deb_int..fin_int]
        id_sp=temp.rindex(" ")
        if id_sp!=nil
          id=id_sp+(deb_int)
        else
          id =fin_int
        end
        str_g=@str[0..id]
        str_d=@str[(id+1)..(@str.size-1)]
        str_d==nil ? str_d="" : str_d=str_d
        @str=str_g+"\n"+str_d
      end
      for i in 0..@com.size-1
        deb_com=@com[i][1]
        nb_nl=@str[0..deb_com].count("\n")
        deb_com>1? str_fg=@str[0..deb_com+nb_nl-1] : str_fg=""
        deb_com>0? str_fd=@str[deb_com+nb_nl..@str.size] : str_fd=@str
        str_fg==nil ? str_fg="" : str_fg=str_fg
        str_fd==nil ? str_fd="" : str_fd=str_fd
        
        @str=str_fg+@com[i][0]+str_fd
      end
      last_str=@str
      end
    end
    return last_str # renvoie la chaine non nettoyée, découpée ou non
  end
  #---------------------------------
  def clear_com(str)
    begin
      last_text = str.clone
      str.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
    end until str == last_text
    str.gsub!(/\\[Nn]\[([0-9]+)\]/) do
      $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
    end
    str.gsub!(/\\[Mm]\[([0-9]+)\]/) do
      $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
    end
    str.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
      $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
    end
    str.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
      $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
    end
    str.gsub!(/\\[Mm]ap/) do
      $game_map.name    != nil ? $game_map.name    : ""
    end
    count_command(/\\[%]/,str)
    count_command(/\\[Ff]\[(.*?)\]/,str)
    count_command(/\\[Nn]ame\[(.*?)\]/,str)
    count_command(/\\[Pp]\[([-1,0-9]+)\]/,str)
    count_command(Regexp.new('/\\[Cc]\[([0123456789ABCDEF#]+)\]/'),str)
    count_command(/\\[Gg]/,str)
    count_command(/\\[Ss]\[([0-9]+)\]/,str)
    count_command(/\\[Aa]\[(.*?)\]/,str)
    count_command(/\\[Cc]\[([0-9]+)\]/,str)
    count_command(/\\[Tt]\[(.*?)\]/,str)
    count_command(/\\[.]/,str)
    count_command(/\\[|]/,str)
    count_command(/\\[>]/,str)
    count_command(/\\[<]/,str)
    count_command(/\\[!]/,str)
    count_command(/\\[~]/,str)
    count_command(/\\[Ee]\[([0-9]+)\]/,str)
    count_command(/\\[Ii]/,str)
    count_command(/\\[Oo]\[([0-9]+)\]/,str)
    count_command(/\\[Hh]\[([0-9]+)\]/,str)
    count_command(/\\[Bb]\[([0-9]+)\]/,str)
    count_command(/\\[Rr]\[(.*?)\]/,str)
    @command_trie=@command_array.sort {|x,y| x <=> y }
    for i in 0..@command_trie.size-1
      deb_com=@command_trie[i]
      j=@command_size[@command_array.index(deb_com)]
      fin_com=deb_com+j-1
      str_com=@old_str[deb_com..fin_com]
      if str_com[-1,1]!="]"
        str_com.chop!
      end
      @com.push([str_com,deb_com])
    end
    return str
  end
  #-----------------------------------------------------
  def count_command(reg,str)
    it = 0
    for i in 0..@old_str.size
      if @old_str.index(reg,it) !=nil 
        id=@old_str.index(reg,it)
        it=id+1
        @command_array.push(id)
        last_str_size=str.size
        str.sub!(reg, "")
        diff=last_str_size-str.size
        @command_size.push(diff)
      end
    end
  end
  #-----------------------------------------------------
end
#==========================================================================
class Scene_Title
  alias dial_main main
  def main
    dial_main
    #$data_pnj =create_data("text/pnj.txt")
    $data_story = create_data("text/story.txt")
  end
  #--------------------------------------------------------------------------
  def create_data(filename)
    data =nil
    if FileTest.exist?(filename)
      filestr= IO.readlines(filename)
      data=[]
      it = 0
      for line in filestr
        phrase = line.split('\244')
        if phrase.length>1
          data.push(phrase[1].chomp)
          it+=1
        else
          if phrase[0][0,1] !='#' and it>=1
            data[it-1]+=phrase[0].chomp 
          else
            next
          end
        end
      end
    end
    return data
  end
  #--------------------------------------------------------------------------
end



Maintenant, les contraintes du fichier texte:
- 2 fichiers à créer dans le dossier Data: PNJ.txt & story.txt
- Vous DEVEZ sauvegarder en format UTF-8 si vous utilisez les accents ou les caractères spéciaux, sinon RPG Maker ne les affichera pas.
- Un message pour une ligne.
- Chaque message doit commencer par: Idvalue\244
Le premier commence avec cette valeur d'ID : 0.
- Bien sûr, les ID continuent en ordre croissant ^^...

La commande de message dans l'évènement :
- Pour un PNJ : (les dialogues pas très importants)
Dial_pnj_ID[n°id]
- Pour un dialogue important:
Dial_story_ID[n°id]

Un exemple de fichier texte : (extrait de mon story.txt)

Citation:

O\244Bonjour message IdO.
1\244\N[1]Message plus long d'id 1, de type normal qu'on pourrait croiser dans n'importe quel jeu, et qui s'avère en effet très long, n'est-ce pas ? oui c'est vrai qu'il est long! Même très très très long...
2\244prout
3\244 Valeur de la variable 0022 :\V[22]
4\244 Or : \G
5\244 Nom de la map : \map




Mis à jour le 22 novembre 2020.






reelie - posté le 13/10/2010 à 02:55:12 (35 messages postés)

❤ 0

Marine

Vraiment compliqué :-/

Désolé.;)

Spoiler (cliquez pour afficher)



Hell, it's about time !


Tinei - posté le 04/05/2011 à 15:25:34 (7 messages postés)

❤ 0

Connaisseur

Salut, c'est vrai c'est pratique, surtout pour la traduction par exemple.

[a href="http://practilang.fr.nf"][img]http://img855.imageshack.us/img855/6305/signaturesi.png[/img][/a]


lolmaxz - posté le 10/08/2011 à 07:00:54 (17 messages postés)

❤ 0

la vie est comme un fil... Tu coupe le fil, et tu meur !

peut-tu donner un exemple de commande de script dans les évènements s.v.p car je croit que je fait quelque chose de mal. merci

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