Posté par : Jivy
Auteur : Tonyryu
Version : 1.01
#===============================================
# ■ Scan_Ressource
#------------------------------------------------------------------------------
# Script permettant de générer un fichier texte contenant le récapitulatif des
# Ressources utilisées dans le projet.
# Créateur : Tonyryu
# Date : 20/08/2006
# Version : 1.01 : 09/10/2006
# Téléchargé sur : http://www.battlezone-studio.com
#
#===============================================
class Scan_Ressource
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
# initialiser la base de données
$data_actors = load_data("Data/Actors.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
$data_map_infos = load_data("Data/MapInfos.rxdata")
$data_scripts = load_data("Data/Scripts.rxdata")
# initialiser données du jeu
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
#tableaux de ressource
@tab_G_Animations = []
@tab_G_Autotiles = []
@tab_G_Battlebacks = []
@tab_G_Battlers = []
@tab_G_Characters = []
@tab_G_Fogs = []
@tab_G_Gameovers = []
@tab_G_Icons = []
@tab_G_Panoramas = []
@tab_G_Pictures = []
@tab_G_Tilesets = []
@tab_G_Titles = []
@tab_G_Transitions = []
@tab_G_Windowskins = []
@tab_A_BGM = []
@tab_A_BGS = []
@tab_A_ME = []
@tab_A_SE = []
# Rechercher dans les fichiers de la base de données
rechercher_actors
rechercher_skills
rechercher_items
rechercher_weapons
rechercher_armors
rechercher_ennemies
rechercher_event_group_ennemies
rechercher_annimations
rechercher_tilesets
rechercher_common_events
rechercher_system
rechercher_map_infos
rechercher_scripts
# Ecrire le compte-rendu
ecrire_fic
end
#--------------------------------------------------------------------------
# ● rechercher_actors
#--------------------------------------------------------------------------
def rechercher_actors
for i in 1...$data_actors.size
obj_scan = $data_actors[i]
ajouter_Characters( obj_scan.character_name ) if obj_scan.character_name != ""
ajouter_Battlers( obj_scan.battler_name ) if obj_scan.battler_name != ""
end
end
#--------------------------------------------------------------------------
# ● rechercher_skills
#--------------------------------------------------------------------------
def rechercher_skills
for i in 1...$data_skills.size
obj_scan = $data_skills[i]
ajouter_Icons( obj_scan.icon_name ) if obj_scan.icon_name != ""
ajouter_SE( obj_scan.menu_se.name ) if obj_scan.menu_se.name != ""
end
end
#--------------------------------------------------------------------------
# ● rechercher_items
#--------------------------------------------------------------------------
def rechercher_items
for i in 1...$data_items.size
obj_scan = $data_items[i]
ajouter_Icons( obj_scan.icon_name ) if obj_scan.icon_name != ""
ajouter_SE( obj_scan.menu_se.name ) if obj_scan.menu_se.name != ""
end
end
#--------------------------------------------------------------------------
# ● rechercher_weapons
#--------------------------------------------------------------------------
def rechercher_weapons
for i in 1...$data_weapons.size
obj_scan = $data_weapons[i]
ajouter_Icons( obj_scan.icon_name ) if obj_scan.icon_name != ""
end
end
#--------------------------------------------------------------------------
# ● rechercher_armors
#--------------------------------------------------------------------------
def rechercher_armors
for i in 1...$data_armors.size
obj_scan = $data_armors[i]
ajouter_Icons( obj_scan.icon_name ) if obj_scan.icon_name != ""
end
end
#--------------------------------------------------------------------------
# ● rechercher_ennemies
#--------------------------------------------------------------------------
def rechercher_ennemies
for i in 1...$data_enemies.size
obj_scan = $data_enemies[i]
ajouter_Battlers( obj_scan.battler_name ) if obj_scan.battler_name != ""
end
end
#--------------------------------------------------------------------------
# ● rechercher_event_groupe_ennemies
#--------------------------------------------------------------------------
def rechercher_event_group_ennemies
for i in 1...$data_troops.size
troop_scan = $data_troops[i]
for page in troop_scan.pages
scaner_page_event( page.list )
end
end
end
#--------------------------------------------------------------------------
# ● rechercher_annimations
#--------------------------------------------------------------------------
def rechercher_annimations
for i in 1...$data_animations.size
animation_scan = $data_animations[i]
ajouter_Animations( animation_scan.animation_name )
for timing in animation_scan.timings
ajouter_SE( timing.se.name )
end
end
end
#--------------------------------------------------------------------------
# ● rechercher_tilesets
#--------------------------------------------------------------------------
def rechercher_tilesets
for i in 1...$data_tilesets.size
tileset_scan = $data_tilesets[i]
ajouter_Tilesets( tileset_scan.tileset_name )
for autotile in tileset_scan.autotile_names
ajouter_Autotiles( autotile )
end
ajouter_Panoramas( tileset_scan.panorama_name )
ajouter_Fogs( tileset_scan.fog_name )
ajouter_Battlebacks( tileset_scan.battleback_name )
end
end
#--------------------------------------------------------------------------
# ● rechercher_common_events
#--------------------------------------------------------------------------
def rechercher_common_events
for i in 1...$data_common_events.size
scaner_page_event( $data_common_events[i].list )
end
end
#--------------------------------------------------------------------------
# ● rechercher_system
#--------------------------------------------------------------------------
def rechercher_system
ajouter_Windowskins($data_system.windowskin_name)
ajouter_Titles($data_system.title_name)
ajouter_Gameovers($data_system.gameover_name)
ajouter_Transitions($data_system.battle_transition)
ajouter_BGM($data_system.title_bgm.name)
ajouter_BGM($data_system.battle_bgm.name)
ajouter_ME($data_system.battle_end_me.name)
ajouter_ME($data_system.gameover_me.name)
ajouter_SE($data_system.cursor_se.name)
ajouter_SE($data_system.decision_se.name)
ajouter_SE($data_system.cancel_se.name)
ajouter_SE($data_system.buzzer_se.name)
ajouter_SE($data_system.equip_se.name)
ajouter_SE($data_system.shop_se.name)
ajouter_SE($data_system.save_se.name)
ajouter_SE($data_system.load_se.name)
ajouter_SE($data_system.battle_start_se.name)
ajouter_SE($data_system.escape_se.name)
ajouter_SE($data_system.actor_collapse_se.name)
ajouter_SE($data_system.enemy_collapse_se.name)
end
#--------------------------------------------------------------------------
# ● rechercher_map_infos
#--------------------------------------------------------------------------
def rechercher_map_infos
for i in 0...$data_map_infos.size
#charger la carte correspondante
# nom de la map
nomFichierMap = sprintf("Data/Map%03d.rxdata", i + 1)
if FileTest.exist?( nomFichierMap )
map_a_scanner = load_data(nomFichierMap)
ajouter_BGM( map_a_scanner.bgm.name )
ajouter_BGS( map_a_scanner.bgs.name )
# Récupérer le tableau d'événement de la map
map_a_scanner.events.each { | id, event|
for page in event.pages
ajouter_Characters(page.graphic.character_name)
scaner_page_event( page.list )
end
}
end
end
end
#--------------------------------------------------------------------------
# ● rechercher_scripts
#--------------------------------------------------------------------------
def rechercher_scripts
for i in 1...$data_scripts.size
script_scan = Zlib::Inflate.inflate($data_scripts[i][2])
end
end
#--------------------------------------------------------------------------
# ● scaner_page_event
# param :
# - list_cmd : liste des commandes d'une page d'évent
#--------------------------------------------------------------------------
def scaner_page_event(liste_cmd)
for index in 0...liste_cmd.size
# Parametres de la commande
parameters = liste_cmd[index].parameters
# Selon la commande de l'event
case liste_cmd[index].code
when 111 # Conditions...
if parameters[0] == 12
scaner_script(parameters[1])
end
when 131 # Changer l'apparence des fenêtres...
ajouter_Windowskins( parameters[0] )
when 132 # Changer la musique de combat...
ajouter_BGM( parameters[0].name )
when 133 # Changer la musique de victoire...
ajouter_ME( parameters[0].name )
when 204 # Modifier les propriétés de la carte...
case parameters[0]
when 0
ajouter_Panoramas( parameters[1] )
when 1
ajouter_Fogs( parameters[1] )
when 2
ajouter_Battlebacks( parameters[1] )
end
when 209 # Déplacer/modifier un évènement...
index_route = 0
liste_route = parameters[1].list
when 509 # ...Déplacer/modifier un évènement...
command = liste_route[index_route]
case command.code
when 41
ajouter_Characters( command.parameters[0] )
when 44
ajouter_SE( command.parameters[0].name )
when 45
scaner_script( command.parameters[0] )
end
index_route += 1
when 222 # Exécuter la transition...
ajouter_Transitions( parameters[0] )
when 231 # Afficher une image...
ajouter_Pictures( parameters[1] )
when 241 # Jouer un fond musical (BGM)...
ajouter_BGM( parameters[0].name )
when 245 # Jouer un fond sonore (BGS)...
ajouter_BGS( parameters[0].name )
when 249 # Jouer un effet musical (ME)...
ajouter_ME( parameters[0].name )
when 250 # Jouer un effet sonore (SE)...
ajouter_SE( parameters[0].name )
when 322 # Modifier l'apparence d'un héros...
ajouter_Characters( parameters[1] )
ajouter_Battlers( parameters[3] )
when 655 # Script suite
scaner_script( parameters[0] )
end
end
end
#--------------------------------------------------------------------------
# ● scaner_script
# param :
# - script : texte du script à scaner
#--------------------------------------------------------------------------
def scaner_script(script)
# position dans le script
position = 0
# recherche de l'utilisation des modules de ressource graphique "RPG::Cache::" sans utilisation de variable
script.scan(/RPG::Cache\.(.*)\(\"(.*)\".*\)/) {
case $1
when "animation"
ajouter_Animations( $2 )
when "autotile"
ajouter_Autotiles( $2 )
when "battleback"
ajouter_Battlebacks( $2 )
when "battler"
ajouter_Battlers( $2 )
when "character"
ajouter_Characters( $2 )
when "fog"
ajouter_Fogs( $2 )
when "gameover"
ajouter_Gameovers( $2 )
when "icon"
ajouter_Icons( $2 )
when "panorama"
ajouter_Panoramas( $2 )
when "picture"
ajouter_Pictures( $2 )
when "tileset"
ajouter_Tilesets( $2 )
when "title"
ajouter_Titles( $2 )
when "transition"
ajouter_Transitions( $2 )
when "windowskin"
ajouter_Windowskins( $2 )
end
}
# Recherche de l'utilisation des fonctions de chargement de musique sans utilisation de variable
script.scan(/$game_system\.(.*)\(\"(.*)\"\)/) {
case $1
when "bgm_play"
ajouter_BGM( $2 )
when "bgs_play"
ajouter_BGS( $2 )
when "se_play"
ajouter_SE( $2 )
when "me_play"
ajouter_ME( $2)
end
}
end
#--------------------------------------------------------------------------
# ● ajouter_Animations
#--------------------------------------------------------------------------
def ajouter_Animations( nom_ressource )
@tab_G_Animations.push( nom_ressource ) if !@tab_G_Animations.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Autotiles
#--------------------------------------------------------------------------
def ajouter_Autotiles( nom_ressource )
@tab_G_Autotiles.push( nom_ressource ) if !@tab_G_Autotiles.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Battlebacks
#--------------------------------------------------------------------------
def ajouter_Battlebacks( nom_ressource )
@tab_G_Battlebacks.push( nom_ressource ) if !@tab_G_Battlebacks.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Battlers
#--------------------------------------------------------------------------
def ajouter_Battlers( nom_ressource )
@tab_G_Battlers.push( nom_ressource ) if !@tab_G_Battlers.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Characters
#--------------------------------------------------------------------------
def ajouter_Characters( nom_ressource )
@tab_G_Characters.push( nom_ressource ) if !@tab_G_Characters.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Fogs
#--------------------------------------------------------------------------
def ajouter_Fogs( nom_ressource )
@tab_G_Fogs.push( nom_ressource ) if !@tab_G_Fogs.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Gameovers
#--------------------------------------------------------------------------
def ajouter_Gameovers( nom_ressource )
@tab_G_Gameovers.push( nom_ressource ) if !@tab_G_Gameovers.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Icons
#--------------------------------------------------------------------------
def ajouter_Icons( nom_ressource )
@tab_G_Icons.push( nom_ressource ) if !@tab_G_Icons.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Panoramas
#--------------------------------------------------------------------------
def ajouter_Panoramas( nom_ressource )
@tab_G_Panoramas.push( nom_ressource ) if !@tab_G_Panoramas.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Pictures
#--------------------------------------------------------------------------
def ajouter_Pictures( nom_ressource )
@tab_G_Pictures.push( nom_ressource ) if !@tab_G_Pictures.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Tilesets
#--------------------------------------------------------------------------
def ajouter_Tilesets( nom_ressource )
@tab_G_Tilesets.push( nom_ressource ) if !@tab_G_Tilesets.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Titles
#--------------------------------------------------------------------------
def ajouter_Titles( nom_ressource )
@tab_G_Titles.push( nom_ressource ) if !@tab_G_Titles.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Transitions
#--------------------------------------------------------------------------
def ajouter_Transitions( nom_ressource )
@tab_G_Transitions.push( nom_ressource ) if !@tab_G_Transitions.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_Windowskins
#--------------------------------------------------------------------------
def ajouter_Windowskins( nom_ressource )
@tab_G_Windowskins.push( nom_ressource ) if !@tab_G_Windowskins.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_BGM
#--------------------------------------------------------------------------
def ajouter_BGM( nom_ressource )
@tab_A_BGM.push( nom_ressource ) if !@tab_A_BGM.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_BGS
#--------------------------------------------------------------------------
def ajouter_BGS( nom_ressource )
@tab_A_BGS.push( nom_ressource ) if !@tab_A_BGS.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_ME
#--------------------------------------------------------------------------
def ajouter_ME( nom_ressource )
@tab_A_ME.push( nom_ressource ) if !@tab_A_ME.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ajouter_SE
#--------------------------------------------------------------------------
def ajouter_SE( nom_ressource )
@tab_A_SE.push( nom_ressource ) if !@tab_A_SE.include?(nom_ressource) and nom_ressource != ""
end
#--------------------------------------------------------------------------
# ● ecrire_fic
#--------------------------------------------------------------------------
def ecrire_fic
# Si dossier existe
if Dir["Ressources"] != ["Ressources"]
# Créer le dossier
Dir.mkdir("Ressources")
end
# Sauvegarder le dossier du projet
dossier_racine = Dir.pwd
# ouvrir un nouveau fichier
@file_ressource = File.new("Ressources/Ressources.txt", "w")
@file_ressource.write("Ce fichier est généré par un script de Tonyryu, merci de le mettre dans le remerciement\n\n\n")
@file_ressource.write("Récapitulatif des ressources utilisées par le projet, (*) signifie que les ressources sont déjà dans le dossier du projet :\n\n\n")
@file_ressource.write("** Ressources Graphiques **\n")
tab_graphic = [ ["Animations", @tab_G_Animations ],
["Autotiles", @tab_G_Autotiles ],
["Battlebacks", @tab_G_Battlebacks ],
["Battlers", @tab_G_Battlers ],
["Characters", @tab_G_Characters ],
["Fogs", @tab_G_Fogs ],
["Gameovers", @tab_G_Gameovers ],
["Icons", @tab_G_Icons ],
["Panoramas", @tab_G_Panoramas ],
["Pictures", @tab_G_Pictures ],
["Tilesets", @tab_G_Tilesets ],
["Titles", @tab_G_Titles ],
["Transitions", @tab_G_Transitions ],
["Windowskins", @tab_G_Windowskins ]]
for ress_graphique in tab_graphic
@file_ressource.write("\n\n- " + ress_graphique[0] + " :\n\n")
# changer de dossier
Dir.chdir(dossier_racine + "/Graphics/" + ress_graphique[0] + "/" )
for nom_ressource in ress_graphique[1]
# vérifier la présence du fichier dans le dossier
@file_ressource.write("* ") if Dir[nom_ressource + ".*"].size != 0
@file_ressource.write("#{nom_ressource}\n")
end
end
@file_ressource.write("\n\n** Ressources Audio **\n\n")
tab_audio = [ ["BGM", @tab_A_BGM ],
["BGS", @tab_A_BGS ],
["ME", @tab_A_ME ],
["SE", @tab_A_SE ] ]
for ress_audio in tab_audio
@file_ressource.write("\n\n- " + ress_audio[0] + " :\n\n")
# changer de dossier
Dir.chdir(dossier_racine + "/Audio/" + ress_audio[0] + "/" )
for nom_ressource in ress_audio[1]
# vérifier la présence du fichier dans le dossier
@file_ressource.write("* ") if Dir[nom_ressource + ".*"].size != 0
@file_ressource.write("#{nom_ressource}\n")
end
end
@file_ressource.close
Dir.chdir(dossier_racine)
end
#--------------------------------------------------------------------------
# ● dispose
#--------------------------------------------------------------------------
def dispose
# destruction des données utilisées
$data_actors = nil
$data_skills = nil
$data_items = nil
$data_weapons = nil
$data_armors = nil
$data_enemies = nil
$data_troops = nil
$data_states = nil
$data_animations = nil
$data_tilesets = nil
$data_common_events = nil
$data_system = nil
$data_map_infos = nil
$data_scripts = nil
$game_temp = nil
$game_system = nil
$game_switches = nil
$game_variables = nil
$game_self_switches = nil
$game_screen = nil
$game_actors = nil
$game_party = nil
$game_troop = nil
$game_map = nil
$game_player = nil
@tab_G_Animations = nil
@tab_G_Autotiles = nil
@tab_G_Battlebacks = nil
@tab_G_Battlers = nil
@tab_G_Characters = nil
@tab_G_Fogs = nil
@tab_G_Gameovers = nil
@tab_G_Icons = nil
@tab_G_Panoramas = nil
@tab_G_Pictures = nil
@tab_G_Tilesets = nil
@tab_G_Titles = nil
@tab_G_Transitions = nil
@tab_G_Windowskins = nil
@tab_A_BGM = nil
@tab_A_BGS = nil
@tab_A_ME = nil
@tab_A_SE = nil
end
end
#--------------------------------------------------------------------------
# ● chercher_ressource
# param :
#--------------------------------------------------------------------------
def chercher_ressource
scan = Scan_Ressource.new
scan.dispose
end

