TinlenvaL
Messages : 233
| Sujet: Afficher un faceset. Dim 26 Sep - 12:00 | |
| Alors voilà ce script permet d'afficher UNE image dans les messages, pour savoir en gros "qui parle". Exemple : Pour ce faire, il faut télécharger des images que vous trouvez sur le net, puis les enregistrer dans : Mes documents RPGXP/[Nom de votre projet]/Graphics/Pictures. Ensuite, vous créez un event, la commande "Afficher un message" Puis là vous faites : \f[Nom_de_votre_ressource] 'Votre Message'.
Vous ne devez pas mettre : \f[Nom_de_votre_ressource.png]Pour installer le script, appuyer sur F11, et remplacez le Window_Message par celui-ci fourni ci-dessous : - Spoiler:
- Code:
-
#============================================================================== # Window_Message #------------------------------------------------------------------------------ # #==============================================================================
class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def initialize super(80, 304, 480, 160) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font = Font.new("Arial") self.visible = false self.z = 9998 @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 @pic_width = 96 @pic_height = 96 self.active = false self.index = -1 end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def dispose terminate_message $game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def terminate_message self.active = false self.pause = false self.index = -1 self.contents.clear @contents_showing = false
if $game_temp.message_proc != nil $game_temp.message_proc.call end
$game_temp.message_text = nil $game_temp.message_proc = nil $game_temp.choice_start = 99 $game_temp.choice_max = 0 $game_temp.choice_cancel_type = 0 $game_temp.choice_proc = nil $game_temp.num_input_start = 99 $game_temp.num_input_variable_id = 0 $game_temp.num_input_digits_max = 0
if @gold_window != nil @gold_window.dispose @gold_window = nil end end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color x = y = 0 @cursor_width = 0
if $game_temp.choice_start == 0 x = 8 end
if $game_temp.message_text != nil text = $game_temp.message_text
begin last_text = text.clone text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] } end until text == last_text text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end text.gsub!(/\\[Ww]\[([0-9]+)\]/) do @pic_width = $1.to_i "" end text.gsub!(/\\[Hh]\[([0-9]+)\]/) do @pic_height = $1.to_i "" end text.gsub!(/\\[Ff]\[([\w]+)\]/) do temp = RPG::Cache.picture($1) pic_x = self.contents.width - @pic_width - 10 pic_y = self.contents.height / 2 - @pic_height / 2 dest = Rect.new(pic_x,pic_y,@pic_width, @pic_height) src = Rect.new(0,0,temp.width, temp.height) self.contents.stretch_blt(dest, temp, src) "" end
text.gsub!(/\\\\/) { "\000" } text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001#{$1}" } text.gsub!(/\\[Gg]/) { "\002" }
while ((c = text.slice!(/./m)) != nil)
if c == "\000" c = "\"
end
if c == "\001" text.sub!(/\[([0-9]+)\]/, "") color = $1.to_i if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end
if c == "\002" if @gold_window == nil @gold_window = Window_Gold.new @gold_window.x = 560 - @gold_window.width if $game_temp.in_battle @gold_window.y = 192 else @gold_window.y = self.y >= 128 ? 32 : 384 end @gold_window.opacity = self.opacity @gold_window.back_opacity = self.back_opacity end next end
if c == "\n" if y >= $game_temp.choice_start @cursor_width = [@cursor_width, x].max end y += 1 x = 0
if y >= $game_temp.choice_start x = 8 end next end
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
x += self.contents.text_size(c).width end end
if $game_temp.choice_max > 0 @item_max = $game_temp.choice_max self.active = true self.index = 0 end
if $game_temp.num_input_variable_id > 0 digits_max = $game_temp.num_input_digits_max number = $game_variables[$game_temp.num_input_variable_id] @input_number_window = Window_InputNumber.new(digits_max) @input_number_window.number = number @input_number_window.x = self.x + 8 @input_number_window.y = self.y + $game_temp.num_input_start * 32 end end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def reset_window if $game_temp.in_battle self.y = 16 else case $game_system.message_position when 0 # ? self.y = 16 when 1 # ? self.y = 160 when 2 # ? self.y = 304 end end if $game_system.message_frame == 0 self.opacity = 255 else self.opacity = 0 end self.back_opacity = 160 end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def update super
if @fade_in self.contents_opacity += 24 if @input_number_window != nil @input_number_window.contents_opacity += 24 end if self.contents_opacity == 255 @fade_in = false end return end
if @input_number_window != nil @input_number_window.update
if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number $game_map.need_refresh = true
@input_number_window.dispose @input_number_window = nil terminate_message end return end
if @contents_showing
if $game_temp.choice_max == 0 self.pause = true end
if Input.trigger?(Input::B) if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0 $game_system.se_play($data_system.cancel_se) $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1) terminate_message end end
if Input.trigger?(Input::C) if $game_temp.choice_max > 0 $game_system.se_play($data_system.decision_se) $game_temp.choice_proc.call(self.index) end terminate_message end return end
if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true reset_window refresh Graphics.frame_reset self.visible = true self.contents_opacity = 0 if @input_number_window != nil @input_number_window.contents_opacity = 0 end @fade_in = true return end
if self.visible @fade_out = true self.opacity -= 48 if self.opacity == 0 self.visible = false @fade_out = false $game_temp.message_window_showing = false end return end end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end
Script Testé et Fonctionnel. Voilà ! J'espère qu'il vous aidera !! EDIT de magi : Il y avait un petit bug dans le script mais il est réparé. Le script n'est pas de moi
Dernière édition par tinlenval le Dim 26 Sep - 12:29, édité 1 fois | |
|
Aenki
Messages : 6953
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 12:27 | |
| - Citation :
- Alors voilà ce script permet d'afficher des images dans les messages, pour savoir en gros "qui parle".
Un faceset. | |
|
TinlenvaL
Messages : 233
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 12:29 | |
| Oui en plus je me suis trompé, on ne peux mettre qu'un seul Faceset par message ^^. | |
|
Léo
Messages : 6241
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 13:57 | |
| Mais normalement RM peut faire ça sans script non ? Enfin, j'ai jamais touché à XP donc je ne sais pas si c'est le cas, mais quand même ça m'étonnerai.. | |
|
Aenki
Messages : 6953
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 13:59 | |
| Léo > Nan, rmxp c'est tellement de la merde qu'il n'y en a pas. | |
|
3phy
Messages : 7438
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 13:59 | |
| XP ne peut pas afficher de faceset. M'enfin c'est normal, c'est XP. Y fait rien XP. S'pas comme 2003 où tu peux tout faire avec les event.
M'enfin c'est bien pour les malheureux qui utilisent encore XP sans savoir qu'il y a beaucoup mieux. | |
|
Tasslehoff
Messages : 284
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 14:41 | |
| Quand on sait un peu scripter XP est bien plus interresant que 2k3. | |
|
Léo
Messages : 6241
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 14:56 | |
| - Citation :
- XP ne peut pas afficher de faceset.
Ah, bah dans ce cas ce script devient très utile alors. | |
|
TinlenvaL
Messages : 233
| |
Kjata
Messages : 2934
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 15:08 | |
| C'est un bon script qui complète XP car cette fonction me parait quand même vachement importante dans un RPG. ^^ | |
|
tfkmaster
Messages : 2011
| Sujet: Re: Afficher un faceset. Dim 26 Sep - 15:11 | |
| Moi j'utilise XP car cé le meilleur entre event/script puissance/facilité Pour moi il suffit de 2 ou 3 script pour qu'il devienne interressant, et meme juste modifier quelques scripts de bases suffit, je le sait car cé ce que j'avait fait. Tjaak >> par forcement, regarde les FF, je les aient jamais vu marcher au faceset dans les dialogues (quoique la 3D montre assez bien qui parle), meme cé pas vraiment une obligation, cé plutot secondaire quand on voit pas le perso parler surtout. | |
|
Aenki
Messages : 6953
| Sujet: Re: Afficher un faceset. Lun 27 Sep - 12:44 | |
| Moi, perso. Je trouve que les scripts ne servent à rien. Je trouve que c'est mieux quand on voit un CMS réalisé en event qu'un CMS en script,... [/débat_on] | |
|
Léo
Messages : 6241
| Sujet: Re: Afficher un faceset. Lun 27 Sep - 12:48 | |
| | |
|
Aenki
Messages : 6953
| Sujet: Re: Afficher un faceset. Lun 27 Sep - 12:49 | |
| +1 Léo. | |
|
Contenu sponsorisé
| Sujet: Re: Afficher un faceset. | |
| |
|