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: Final Destiny / Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

325 connectés actuellement

30743115 visiteurs
depuis l'ouverture

3488 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Eclipso

Alex d'Or

Le Comptoir Du clickeur

Kingdom Ultimate

Tous nos partenaires

Devenir
partenaire



Extraire scripts de Scripts.rxdata sous forme de .rb

[Outil d'aide au développeur] Permet d'extraire tous les scripts du fichier Scripts.rxdata sous forme de fichiers .rb.

Script pour RPG Maker XP
Ecrit par RPG-man
Publié par RPG-Man (lui envoyer un message privé)
Signaler un script cassé

❤ 0

Auteur : Josué Alavarez (RPG-Man)
Logiciel : RPG Maker XP
Nombre de scripts : 1

Voilà, j'ai analysé la structure du fichier Scripts.rxdata, afin de concocter un script permettant d'en extraire tous les scripts sous forme de fichiers Ruby (.rb). Celà permet principalement de pouvoir éditer tous ses scripts sous un IDE comme NetBeans au lieu du pauvre éditeur de scripts RM.
Quelques particularités :
- Les caractères invalides dans les noms de scripts seront transformés en 'l'.
- Des options sont intégrées pour modifier les noms des fichiers générés : inclure leur nom, numéro, code-octet etc...
Le script est à placer avant main. Il générera les fichiers dans le dossier "Data/Scripts/".

Il existe une version console du script, elle n'est pas là étant donné que presque personne n'a l'interpréteur Ruby.
Il n'existe pas d'exécutable car y'a un problème avec Zlib avec ç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
#=======================================================
# * Extraction Scripts RM
# --
# Par Josué Alvarez (RPG-man)
# - Date : 19/07/09
#=======================================================
module OPTIONS
        INCLURE_CODE_OCTET = false
        INCLURE_NUMERO = true
        INCLURE_NOM = true
end
@putsSprite= Sprite.new
@putsSprite.bitmap = Bitmap.new(640, 480)
@putsSprite.bitmap.font.size = 20
@putsSprite.bitmap.font.name = 'Arial'
@putsSprite.bitmap.font.color = Color.new(255, 255, 255, 255)
@putsSprite.z = 99999
@line = 0
Graphics.frame_rate = 80
def puts(chaine)
        if @line > 20
                @putsSprite.bitmap.clear
                @line = 0
        end
        @line.times do
                chaine = "\n#{chaine}"
        end
        @putsSprite.bitmap.put_texts(chaine.split('
'))
        Graphics.update
        @line += 1
end
 
  
#========================================
# * Chargement de Scripts.rxdata
#========================================
begin
        file = File.open('Data/Scripts.rxdata', 'r')
        data = Marshal.load(file)
        file.close
rescue
        puts "Erreur! #{$!}"
end
 
#========================================
# * Lecture du script
#========================================
def lire_script(data, n)
        parts = data[n]
        # * Chargement du code octet
        code_octet = parts[0]
        puts "Code_octet = #{code_octet}"
        # * Chargement du nom
        begin
                name = parts[1]
                old_name = parts[1]
                puts "Nom = #{name}"
        rescue
                name = ''
        end
        if name == nil
                name = ''
        end
        name = remplacer_caracteres(name)
        if old_name != name
                puts "Des caractères invalides ont été remplacés"
        end
        # * Chargement du script
        begin
                content = parts[2]
                script = Zlib::Inflate.inflate(content)
        rescue
                script = ''
        end
        if script == nil
                script = ''
        end
        ecrire_script(name, script, code_octet, n)
end
 
#========================================
# * Remplacer caractères
#========================================
def remplacer_caracteres(name)
        replace_char = "l"
        invalid_chars = ["/", "\\", "<", ">", "|", "*", ":", "?"]
        invalid_chars.each{ |char|
        name.gsub!(char, replace_char)
        }
        return name
end
 
#========================================
# * Ecriture du script
#========================================
def ecrire_script(name, script, code_octet, numero)
        # * Création du dossier
        if FileTest.exist?("Data/Scripts") == false
                Dir.mkdir("Data/Scripts")
        end
        # * Création du nom de fichier
        final_name = ''
        if OPTIONS::INCLURE_NUMERO == true
                final_name += "#{mettre_0(numero, 5)}"
                final_name += ' ' if OPTIONS::INCLURE_NOM == true or OPTIONS::INCLURE_CODE_OCTET == true
        end
        if OPTIONS::INCLURE_CODE_OCTET == true
                final_name += "#{code_octet}"
                final_name += ' ' if OPTIONS::INCLURE_NOM == true
        end
        if OPTIONS::INCLURE_NOM == true
                final_name += "#{name}"
        end
        # Création du fichier
        file = File.open("Data/Scripts/#{final_name}.rb", 'w+')
        file.write(script)
        # Pour avoir les caractères spéciaux gérés, il faut Dumper.
        # Cependant, cette méthode empêche la modification du 
        # ultérieure du scripts.
        #       Marshal.dump(script, file)
        file.close
        puts "Ecrit : #{final_name}"
end
 
#========================================
# * mettre des 0 devant un nombre
#========================================
def mettre_0(int, nombre_de_0)
        str = ("0"*(nombre_de_0 - 1)).to_s
        retour = "#{str}#{int}"
        nombre_de_0 -= 1
        for i in 0..nombre_de_0
                strings = ("0"*(nombre_de_0 - i)).to_s
                if int >= 10**i
                        retour = strings + int.to_s
                end
        end
        return retour
end
 
#=======================================
# * Ecriture rapide de texte
#=======================================
class Bitmap
        def put_texts(text)
                base = 20-self.height/2
                if self.font.nil?
                        self.font.size = 16
                        self.font.name = "Arial"
                        self.font.color = Color.new(255, 255, 255, 255)
                end
                @w = self.width if @w.nil? or !@w.is_a?(Fixnum)
                @h = self.height if @w.nil? or !@h.is_a?(Fixnum)
                @wlh = self.font.size if @wlh.nil? or !@wlh.is_a?(Fixnum)
                @align = 0 if @align.nil? #or !@align.is_a?(Fixnum)
                for i in 0..text.size
                        self.draw_text(Rect.new(10, base + @wlh*i, @w, @h+@wlh*i), text[i], @align) if text[i] != nil
                end
        end
end
 
# --
# * Lecture de tous les scripts
for i in 0...data.size
        begin
                lire_script(data, i)
        rescue
                puts "Erreur ! #{$!}"
        end
        puts "\n\n"
end
@putsSprite.dispose
Graphics.frame_rate = 40




Voilà, si vous avez des questions etc... n'hésitez pas à les poser.



RPG-man




RPG-man - posté le 20/07/2009 à 17:16:44 (0 messages postés)

❤ 0

J'aime mapper mais je sais pas mapper ...

Réservé pour ajouts / explications :)


natinusala - posté le 20/07/2009 à 19:06:54 (586 messages postés)

❤ 0

Mon avatar est une patate trysophille aux poils de moustache musclés.

Pas mal, 'ai pas testé (la flemme)

Mais, comment on re-compile après ?

edit : Ok, copier-coller...

Attends je vais chercher un stylo


Alkanédon - posté le 20/07/2009 à 23:26:16 (8355 messages postés) - -

❤ 0

Citoyen d'Alent

en plus, je viens de dl le ruby pour commencer à éditer... Merci pour le raccourcie...

Mes musiques


Koopa - posté le 24/07/2009 à 02:03:26 (61 messages postés)

❤ 0

Sympa l'idée de pouvoir éditer les scripts dans un IDE, si je reprends le Ruby j'y penserai : )

Jeux Terminés : L'affaire Paumais , Threat from outer Space Démo : Starfox : First strike on Lylat

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