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 |