NinjaXP78 Admin
Messages : 128 Date d'inscription : 11/01/2008 Age : 29 Localisation : Yvelines (78)
| Sujet: Message écris lettre par lettre Mar 15 Jan - 11:55 | |
| Nom du script : Window_MessageAuteur : InconnuFonction : Voici un script qui permet l'affichage des textes lettre par lettre plutôt que d'un coup. Remarque : FonctionnelInstallation : Allez dans l'éditeur de script ( F11 ) et suivez les instructions ci-dessous . - Code:
-
class Window_Message < Window_Selectable # ------------------------------------ def initialize super(80, 304, 480, 160) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.z = 9998 @update_text = true @fade_in = false @fade_out = false @contents_showing = false @cursor_width = 0 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 @update_text = true @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!(/\\\\/) { "\000" } @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } @text.gsub!(/\\[Gg]/) { "\002" } 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_text if @text != nil 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 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 $game_system.se_play($data_system.decision_se) return 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 @update_text = false #�š end # ------------------------------------ def update super if @fade_in self.contents_opacity = 255 if @input_number_window != nil @input_number_window.contents_opacity = 255 end if self.contents_opacity == 255 @fade_in = false end 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 @update_text update_text return end if $game_temp.choice_max == 0 self.pause = true end if self.pause == true && Input.dir4 != 0 terminate_message 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 terminate_message if self.pause == true 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 = 0 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 UTILISATIONSi vous voulez supprimez le son (hyper saoûlant) lorsque le texte défile supprimez tout simplement la ligne 135 : - Code:
-
$game_system.se_play($data_system.decision_se)
| |
|
dinonico Bon membre
Messages : 52 Date d'inscription : 13/01/2008 Age : 31 Localisation : Saint-Quentin (aisne, Picardie)
| Sujet: Re: Message écris lettre par lettre Mar 15 Jan - 14:35 | |
| J'adore les scripts des messages surtout celui là Ces un bon script qui donne envie de le prendre | |
|
Guan Yu Testeur
Messages : 43 Date d'inscription : 13/01/2008 Age : 32
| Sujet: Re: Message écris lettre par lettre Mar 15 Jan - 15:01 | |
| | |
|
Korion Nouveau
Messages : 2 Date d'inscription : 13/01/2008
| Sujet: Re: Message écris lettre par lettre Mar 15 Jan - 15:28 | |
| utile pour faire par exemple un type qui agonise (genre il a du mal à parler). c'est le genre de détails qui font qu'un jeu donne l'effet d'être travaillé... | |
|
ZZZZhack Testeur
Messages : 66 Date d'inscription : 13/01/2008 Age : 34 Localisation : Ne te retourne surtout pas !
| Sujet: Re: Message écris lettre par lettre Mar 15 Jan - 23:36 | |
| Un script bien fait mais assez chiant, je l'avais déja bien sur ^^ | |
|
emixam2 Testeur
Messages : 54 Date d'inscription : 14/01/2008 Age : 35 Localisation : Devant un ordinateur
| Sujet: Re: Message écris lettre par lettre Jeu 17 Jan - 0:53 | |
| Moi je trouve qe le script Advanced_Messages es mieux. Il possède plus de fonction et ne possède pas le bruitdes lettre qi s'écrive. | |
|
Contenu sponsorisé
| Sujet: Re: Message écris lettre par lettre | |
| |
|