#===============================================================
# ° [VX] Afficher les objets trouvés/reçu sur la map
# _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
# ° Par Blockade
# °
https://rpg-maker-vx.bbactif.com/forum.htm# ° Crée le 12/04/10
# ° Version 1.1
# ° Remerciment à Khai ( http://ktbanh.wordpress.com/)
# _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
# ° Notes de version :
# ~ v 1.0
# - Sortie du script
# ~ v 1.1
# - Permet de gagner de l'expérience
# _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
# ° Fonctionnalités (v 1.1)
# - Affiche une fenêtre avec les objets obtenu
# - Gestion des gains multiples
# - Adaptable en fonction des situations
# - Possibilité de gagner de l'expérience
# _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
# ° Installation :
# Insérez le script au dessus de main & jetez un coup d'œil au module de
# configuration
# _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
# ° Utilisation
# >> Dans le cas d'un butin simple (1 seul objet)
# Dans l'event, selectioner "Appel de script", et mettre :
# gain(type,index,num,lieu)
# Type = Le type de l'objet (1 : Objets / 2 : Armes / 3 : Armures / 4 : Gils / 5 : Exp)
# Index = L'ID de l'objet obtenu (0 en cas de gils) /!\ Il faut mettre un 0 ou un autre chiffre, en cas de gils,
# et ne sourtout pas mettre gain(4,123) ou gain(4,123,1)
# les arguments num (et lieu) seraient décalé et le script
# ne comprendrais pas.
# /!\ Pour le gain d'expérience, mettez l'ID de votre héros, ou 0 pour toute l'équipe
# Num = La quantité d'objets/gils reçus
#
# /!\ Lieu est facultatif, pour les données affiché par défaut voir le module de configuration
# Lieu = Le lieu d'où le script est appelé. Il peut s'agir de différentes situation, si il est appelé d'un
# coffre par exemple, le texte d'intitulé changera en "Butin trouvé", si un PNJ les donnes alors il
# affichera "Butin reçu". Les textes et son sont changeables dans le module de configuration.
# Par défaut on trouve :
# - Rien : Texte par défaut
# - 1 : Coffre
# - 2 : PNJ
# - 3 : Autres
# /!\ Ce sont les utilisation par défaut, vous pouvez très bien modifier ! Il suffit de modifier
# dans le module de configuration les valeurs des textes et sons !
# => Pour ceux qui s'y connaissent un peu en script, il peuvent rajouter des options, cherchez la méthode :
# def set_text(lieu) (~ ligne 273) et modifiez le case comme ceci :
# case lieu
#~ when 0 # Par défaut
#~ title = "Butin"
#~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_defaut}", Config_Contenu::Volume_defaut, Config_Contenu::Tempo_defaut) if Config_Contenu::Musique_defaut
#~ when 1 # Coffre
#~ title = Config_Contenu::Text_coffre
#~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_coffre}", Config_Contenu::Volume_coffre, Config_Contenu::Tempo_coffre) if Config_Contenu::Musique_coffre
#~ when 2 # PNJ
#~ title = Config_Contenu::Text_pnj
#~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_pnj}", Config_Contenu::Volume_pnj, Config_Contenu::Tempo_pnj) if Config_Contenu::Musique_pnj
#~ when 3 # Recu (Autres coffre/PNJ)
#~ title = Config_Contenu::Text_autre
#~ Audio.se_play("Audio/SE/#{Config_Contenu::SE_autre}",Config_Contenu::Volume_autres, Config_Contenu::Tempo_autres) if Config_Contenu::Musique_coffre
#~ when x
# title = "Votre texte"
# Audio.se_play("Audio/SE/nom_de_votre_se",volume_du_se, tempo_du_se)
# end
# => Ou x est le nombre pour appeler votre option, et nom_de_votre_se & volume_du_se & tempo_du_se sont explicites
#
# Exemple : gain(1,5,7,2) va donner l'objet (1) Ether (qui a pour ID 5) en 7 exemplaire avec l'option 1 (Coffre, par défaut)
#
# >> Dans le cas d'un butin multiples (> 1 seul objet)
# Ce sont exactement les même réglages sauf que si vous voulez donner un ether x6 et une massue x1 avec option PNJ
# gain([1,2], [5,1] , [6,1] , 2)
# type index num lieu
# C'est le même fonctionement sauf sous forme de tableau !
# /!\ Attention il ne peut pas avoir plusieurs options de lieu.
# _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#===============================================================
# Début de la configuration
module Config_Contenu
#------------------------------------------
# >> Configuration des textes
#------------------------------------------
Text_gain_gold = "Gils obtenus" # Texte affiché avant la quantité d'argent obtenu
Text_quantite = "x" # Texte situé avant la quantité d'objet gagné
Text_gain_exp = "Exp. obtenue" # Texte affiché avant la quantité d'argent obtenu
Afficher_level_up = true # Afficher les nouveau sorts si le héros gagne un niveau
#------------------------------------------
# >> Configuration des graphiques
#------------------------------------------
Update_spiriteset = true # Continuer à faire bouger les autotitles lors de l'apparition de la fenêtre (L'eau par exemple)
Update_event = false # Continuer à exécuter les events
#------------------------------------------
# >> Configuration des icones
#------------------------------------------
Icone_argent = 85 # L'ID de l'icône affichée pour l'argent
Icone_exp = 95 # L'ID de l'icône affichée pour l'expérience
#------------------------------------------
# >> Configuration du titre affiché
#------------------------------------------
# > Par défaut
Text_defaut = "Butin" # Texte affiché par défaut lors de l'obtention d'un butin
Musique_defaut = true # Jouer le SE ? (par défaut)
SE_defaut = "Saint5" # Le SE joué par défaut lors de l'obtention d'un butin
Volume_defaut = 100 # Le volume du SE joué par défaut
Tempo_defaut = 100 # Le tempo du SE joué par défaut
# > Un coffre (Lieu = 1)
Text_coffre = "Butin trouvé" # Texte affiché lors de l'obtention d'un butin (Lieu = 1)
Musique_coffre = true # Jouer le SE ? (Lieu = 1)
SE_coffre = "Chest" # Le SE joué lors de l'obtention d'un butin (Lieu = 1)
Volume_coffre= 100 # Le volume du SE joué (Lieu = 1)
Tempo_coffre = 100 # Le tempo du SE joué (Lieu = 1)
# > Un PNJ (Lieu = 2)
Text_pnj = "Butin reçu" # Texte affiché lors de l'obtention d'un butin (Lieu = 2)
Musique_pnj = true # Jouer le SE ? (Lieu = 2)
SE_pnj = "Saint5" # Le SE joué lors de l'obtention d'un butin (Lieu = 2)
Volume_pnj = 100 # Le volume du SE joué (Lieu = 2)
Tempo_pnj = 100 # Le tempo du SE joué (Lieu = 2 )
# > Autres (Objet caché...) (Lieu = 3)
Text_autre = "Butin trouvé" # Texte affiché lors de l'obtention d'un butin (Lieu = 3)
Musique_autre = true # Jouer le SE ? (Lieu = 3)
SE_autre = "Saint5" # Le SE joué lors de l'obtention d'un butin (Lieu = 3)
Volume_autre = 100 # Le volume du SE joué (Lieu = 3)
Tempo_autre = 100 # Le tempo du SE joué (Lieu = 3)
end
# Fin de la configuration
#===============================================================
#--------------------------------------------------------------------------
# * Méthode qui appelle la scene
# type : 1 : Objets / 2 : Armes / 3 : Armures / 4 : Gils
# index : L'ID de l'objet obtenu (0 en cas de gils)
# num : Le nombre d'objets/gils obtenus
# lieu : texte de description (facultatif)
#--------------------------------------------------------------------------
def gain(type,index,num,lieu=0)
$scene = Scene_Contenu.new(type,index,num,lieu)
end
#==============================================================================
# ** Scene_Contenu
#------------------------------------------------------------------------------
# La classe qui gère les fenêtres de contenu de coffre
#==============================================================================
class Scene_Contenu < Scene_Base
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize(type,index,num,lieu)
@type = type ; @index = index
@num = num ; @lieu = lieu
@spriteset = Spriteset_Map.new
@gain_multiples = (@type.is_a?(Array)? true : false)
donner_butin
afficher_fenetres
ajuster_position_fenetres
afficher_texte
end
#--------------------------------------------------------------------------
# * Donne le butin gagné
#--------------------------------------------------------------------------
def donner_butin
if @gain_multiples
for i in 0...@type.size
case @type[i]
when 1
$game_party.gain_item($data_items[@index[i]], @num[i])
when 2
$game_party.gain_item($data_weapons[@index[i]], @num[i])
when 3
$game_party.gain_item($data_armors[@index[i]], @num[i])
when 4
$game_party.gain_gold(@num[i])
when 5
if @index[i] == 0
$game_party.members.each{|member|
member.change_exp(member.exp + @num[i],Config_Contenu::Afficher_level_up)
}
else
actor = $game_actors[@index[i]]
actor.change_exp(actor.exp + @num[i],Config_Contenu::Afficher_level_up)
end
end
end
else
case @type
when 1
$game_party.gain_item($data_items[@index], @num)
when 2
$game_party.gain_item($data_weapons[@index], @num)
when 3
$game_party.gain_item($data_armors[@index], @num)
when 4
$game_party.gain_gold(@num)
when 5
if @index == 0
$game_party.members.each{|member|
member.change_exp(member.exp + @num,Config_Contenu::Afficher_level_up)
}
else
actor = $game_actors[@index]
actor.change_exp(actor.exp + @num,Config_Contenu::Afficher_level_up)
end
end
end
end
#--------------------------------------------------------------------------
# * Affiche les fenêtres de butin
#--------------------------------------------------------------------------
def afficher_fenetres
@window_lieu = Window_Lieu.new
@window_butin = Window_Butin.new(@type)
end
#--------------------------------------------------------------------------
# * Centre les fenêtre sur l'écran
#--------------------------------------------------------------------------
def ajuster_position_fenetres
@window_lieu.x=(544-@window_lieu.width)/2
@window_butin.x = (544-@window_butin.width)/2
if @gain_multiples
@window_lieu.y = (416-@window_lieu.height-@window_butin.height)/2
@window_butin.y = @window_lieu.y + @window_butin.height-25*(@type.size-1)
else
@window_lieu.y=(416-@window_lieu.height-@window_butin.height)/2
@window_butin.y =(416-@window_lieu.height+@window_butin.height)/2
end
end
#--------------------------------------------------------------------------
# * Affiche le texte voulu
#--------------------------------------------------------------------------
def afficher_texte
@window_lieu.set_text(@lieu)
if @gain_multiples
y = 0
for i in 0...@type.size
special = false
case @type[i]
when 1
nom = $data_items[@index[i]].name
icone = $data_items[@index[i]].icon_index
when 2
nom = $data_weapons[@index[i]].name
icone = $data_weapons[@index[i]].icon_index
when 3
nom = $data_armors[@index[i]].name
icone = $data_armors[@index[i]].icon_index
when 4
nom = Config_Contenu::Text_gain_gold
icone = Config_Contenu::Icone_argent
special = true
when 5
nom = Config_Contenu::Text_gain_exp
icone = Config_Contenu::Icone_exp
special = true
end
@window_butin.set_gain(0,y,nom,icone,@num[i],special)
y += 25
end
else
argent = false
case @type
when 1
nom = $data_items[@index].name
icone = $data_items[@index].icon_index
when 2
nom = $data_weapons[@index].name
icone = $data_weapons[@index].icon_index
when 3
nom = $data_armors[@index].name
icone = $data_armors[@index].icon_index
when 4
nom = Config_Contenu::Text_gain_gold
icone = Config_Contenu::Icone_argent
special = true
when 5
nom = Config_Contenu::Text_gain_exp
icone = Config_Contenu::Icone_exp
special = true
end
@window_butin.set_gain(0,0,nom,icone,@num,special)
end
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
@spriteset.update if Config_Contenu::Update_spiriteset
$game_map.update if Config_Contenu::Update_event
$scene = Scene_Map.new if Input.trigger?(Input::B) or Input.trigger?(Input::C)
end
#--------------------------------------------------------------------------
# * Termine la scene
#--------------------------------------------------------------------------
def terminate
@spriteset.dispose
@window_lieu.dispose
@window_butin.dispose
end
end
#==============================================================================
# ** Window_Lieu
#------------------------------------------------------------------------------
# La fenêtre qui gère le titre général du butin obtenu
#==============================================================================
class Window_Lieu < Window_Base
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize
super(0,0,250,56)
end
#--------------------------------------------------------------------------
# * Affiche le texte dans la fenêtre (/!\ Personalisable)
#--------------------------------------------------------------------------
def set_text(lieu)
case lieu
when 0 # Par défaut
title = "Butin"
Audio.se_play("Audio/SE/#{Config_Contenu::SE_defaut}", Config_Contenu::Volume_defaut, Config_Contenu::Tempo_defaut) if Config_Contenu::Musique_defaut
when 1 # Coffre
title = Config_Contenu::Text_coffre
Audio.se_play("Audio/SE/#{Config_Contenu::SE_coffre}", Config_Contenu::Volume_coffre, Config_Contenu::Tempo_coffre) if Config_Contenu::Musique_coffre
when 2 # PNJ
title = Config_Contenu::Text_pnj
Audio.se_play("Audio/SE/#{Config_Contenu::SE_pnj}", Config_Contenu::Volume_pnj, Config_Contenu::Tempo_pnj) if Config_Contenu::Musique_pnj
when 3 # Recu (Autres coffre/PNJ)
title = Config_Contenu::Text_autre
Audio.se_play("Audio/SE/#{Config_Contenu::SE_autre}",Config_Contenu::Volume_autres, Config_Contenu::Tempo_autres) if Config_Contenu::Musique_coffre
end
self.contents.draw_text(0,0,contents.width,WLH,title,1)
end
end
#==============================================================================
# ** Window_Butin
#------------------------------------------------------------------------------
# La fenêtre qui gère les objets obtenus
#==============================================================================
class Window_Butin < Window_Base
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize(type)
if type.is_a?(Array)
super(0,0,250,56 + 25*(type.size-1))
else
super(0,0,250,56)
end
end
#--------------------------------------------------------------------------
# * Affiche les objets/gils gagnés
#--------------------------------------------------------------------------
def set_gain(x,y,butin,icone,num,special)
@num = num
draw_icon(icone,x,y)
self.contents.draw_text(x+25,y,150,WLH,butin)
if special
self.contents.draw_text(x,y,contents.width,WLH,@num,2)
else
self.contents.draw_text(x,y,contents.width,WLH,Config_Contenu::Text_quantite + @num.to_s,2)
end
end
end