Oniromancie: Scripts - Extraire scripts de Scripts.rxdata sous forme de .rb


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (42 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

78 connectés actuellement

9263273 visiteurs
depuis l'ouverture

1443 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

La maison des Makers

Medator

Le Comptoir du Clikeur

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Extraire scripts de Scripts.rxdata sous forme de .rb
Script pour RPG Maker XP
Ecrit par RPG-man

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.

Voilà le script en question :



Portion de code:






#=======================================================
# * 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, @align) if text != 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. (812 messages postés)

Rubyste, C#iste, 17 ans, over-booké.

Réservé pour ajouts / explications :)

Blog de l'Usine en Folie| Vous l'attendez tous impatiemment ! | Geex


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

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. (7478 messages postés)

Citoyen d'Alent

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

Allez-y voir donc. Et followez-moi


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

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

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis