Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: [resolu]Empecher de passer le texte Ven 16 Mar 2012 - 0:30 | |
| Bonsoir voila en fait j'utilise le advanced message system que voici - Code:
-
# ??? XRXS 9. ???????????????? ver..12d ??? # Original Script by ?? ??, ??, RaTTiE # Script from: http://f26.aaacafe.ne.jp/~xxms/RPGXP_XRXS9.htm # #Advanced Version by: dubealex # #To found all my NEW features, press CONTROL+F and search for the word "#NEW" #To found the code where the "Skip Letter By Letter mode", search for "# SKIP" # # You can found all the command list on my website # rmxp.dubealex.com # Go in the "Script" section.
#============================================================================== # ¦ Window_Message #============================================================================== class Window_Message < Window_Selectable # ??????? DEFAULT_TYPING_ENABLE = true # false???????? #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- alias xrxs9_initialize initialize def initialize $defaultfonttype = "Arial" $defaultfontsize = 24 # IF for any reasons the FONT doesn't appears in your game, this is # because you are using a different version of RMXP. Look in the class MAIN # (under this one) # Go at line #10 and #12, and just copy the word that begins with a $ sign # and replace what is after the equal sign on lign #27 and 28 of this class.
xrxs9_initialize # ?????????????""??? if $soundname_on_speak == nil then $soundname_on_speak = "" end # ?????????? $gaiji_file = "./Graphics/Gaiji/sample.png" # ????????? if FileTest.exist?($gaiji_file) @gaiji_cache = Bitmap.new($gaiji_file) else @gaigi_cache = nil end # ??????????? @opacity_text_buf = Bitmap.new(32, 32) end #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- alias xrxs9_terminate_message terminate_message def terminate_message if @name_window_frame != nil @name_window_frame.dispose @name_window_frame = nil end if @name_window_text != nil @name_window_text.dispose @name_window_text = nil end xrxs9_terminate_message end #-------------------------------------------------------------------------- # ? ?????? #-------------------------------------------------------------------------- def refresh # ??? self.contents.clear self.contents.font.color = normal_color self.contents.font.name = $fontface @x = @y = @max_x = @max_y = @indent = @lines = 0 @face_indent = 0 @opacity = 255 @cursor_width = 0 @write_speed = 0 @write_wait = 0 @mid_stop = false @face_file = nil # @popchar ? -2 ?????????-1??????????? # 0????? ???????0?????1???????? @popchar = -2 # ??????????? if $game_temp.choice_start == 0 @x = 8 end # ???????????·??? if $game_temp.message_text != nil @now_text = $game_temp.message_text # ?????\F?·??? if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then # ???????? if FileTest.exist?("Graphics/Pictures/" + $1 + ".png") # ?????? @face_file = $1 + ".png" self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) # ?? 128??????????????? @x = @face_indent = 128 end @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" } end # ?????? begin last_text = @now_text.clone # \V??????????(????) @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) } end until @now_text == last_text @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : "" end #NEW #Dubealex Show Monster Name Feature @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : "" end #End new command #NEW #Dubealex Show Item Price Feature @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : "" end #End new command #NEW #Dubealex Show Hero Class Name Feature @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : "" end #End new command #NEW #Dubealex Show Current Map Name Feature @now_text.gsub!(/\\[Mm]ap/) do $game_map.name != nil ? $game_map.name : "" end #End new command # \name?·??? name_window_set = false if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil # ???? name_window_set = true name_text = $1 # \name[]????? @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" } end # ????????? if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then @popchar = $1.to_i if @popchar == -1 @x = @indent = 48 @y = 4 end @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" } end # ????????? @max_choice_x = 0 if @popchar >= 0 @text_save = @now_text.clone @max_x = 0 @max_y = 4 for i in 0..3 line = @now_text.split(/\n/)[3-i] @max_y -= 1 if line == nil and @max_y <= 4-i next if line == nil line.gsub!(/\\\w\[(\w+)\]/) { "" } cx = contents.text_size(line).width @max_x = cx if cx > @max_x if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end self.width = @max_x + 32 + @face_indent self.height = (@max_y - 1) * 32 + 64 @max_choice_x -= 68 @max_choice_x -= @face_indent*216/128 else @max_x = self.width - 32 - @face_indent for i in 0..3 line = @now_text.split(/\n/)[i] next if line == nil line.gsub!(/\\\w\[(\w+)\]/) { "" } cx = contents.text_size(line).width if i >= $game_temp.choice_start @max_choice_x = cx if cx > @max_choice_x end end @max_choice_x += 8 end # ?????????????? @cursor_width = 0 #if @lines >= $game_temp.choice_start # @cursor_width = [@cursor_width, @max_choice_x - @face_indent].max #end # ????"\\\\" ? "\000" ??? @now_text.gsub!(/\\\\/) { "\000" } # "\\C" ? "\001" ??"\\G" ? "\002" ?? # "\\S" ? "\003" ??"\\A" ? "\004" ??? @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" } @now_text.gsub!(/\\[Gg]/) { "\002" } @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" } @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" } #NEW #Dubealex Font Change Features @now_text.gsub!(/\\[Tt]\[(.*?)\]/) { "\050[#{$1}]" } #End of dubealex feature @now_text.gsub!(/\\[.]/) { "\005" } @now_text.gsub!(/\\[|]/) { "\006" } # ???????????????\016??????? @now_text.gsub!(/\\[>]/) { "\016" } @now_text.gsub!(/\\[<]/) { "\017" } @now_text.gsub!(/\\[!]/) { "\020" } @now_text.gsub!(/\\[~]/) { "\021" } @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" } # ???????(????) @now_text.gsub!(/\\[Ii]/) { "\023" } # ?????????(????) @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" } # ?????????(????) @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" } # ????(????) @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" } # ????(????) @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" } # ?????????????? reset_window # \name?·??? if name_window_set # ??????? off_x = 0 off_y = -10 # ???????????(??? 2 ???) space = 2 x = self.x + off_x - space / 2 y = self.y + off_y - space / 2 w = self.contents.text_size(name_text).width + 8 + space h = 26 + space @name_window_frame = Window_Frame.new(x, y, w, h) @name_window_frame.z = self.z + 1 # ?????????????????? x = self.x + off_x + 4 y = self.y + off_y @name_window_text = Air_Text.new(x, y, name_text) @name_window_text.z = self.z + 2 end end # ???????? reset_window # ?????? 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 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 @now_text = nil if @now_text == "" # ?? # ???????????·??? if @now_text != nil and @mid_stop == false if @write_wait > 0 @write_wait -= 1 return end text_not_skip = DEFAULT_TYPING_ENABLE while true # ?? x y ???? @max_x = @x if @max_x < @x @max_y = @y if @max_y < @y # c ? 1 ????? (????????????????) if (c = @now_text.slice!(/./m)) != nil # \\ ??? if c == "\000" # ???????? c = "\\" end # \C[n] ??? if c == "\001" @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "") temp_color = $1 color = temp_color.to_i leading_x = temp_color.to_s.slice!(/./m) if leading_x == "#" self.contents.font.color = hex_color(temp_color) next end if color >= 0 and color <= 7 self.contents.font.color = text_color(color) end next end
# \G ??? if c == "\002" # ???????????? if @gold_window == nil and @popchar <= 0 @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 # ????? c = "" end # \S[n] ??? if c == "\003" # ?????? @now_text.sub!(/\[([0-9]+)\]/, "") speed = $1.to_i if speed >= 0 and speed <= 19 @write_speed = speed end # ????? c = "" end # \A[soundname] ??? if c == "\004" # ???????????????? @now_text.sub!(/\[(.*?)\]/, "") buftxt = $1.dup.to_s # ????????"/"?·??? if buftxt.match(/\//) == nil and buftxt != "" then # ????"Audio/SE/"????? $soundname_on_speak = "Audio/SE/" + buftxt else # ·????????? $soundname_on_speak = buftxt.dup end # ????? c = "" elsif c == "\004" # ????? c = "" end # \. ??? if c == "\005" @write_wait += 5 c = "" end # \| ??? if c == "\006" @write_wait += 20 c = "" end # \> ??? if c == "\016" text_not_skip = false c = "" end # \<??? if c == "\017" text_not_skip = true c = "" end # \!??? if c == "\020" @mid_stop = true c = "" end # \~??? if c == "\021" terminate_message return end # \I???(????) if c == "\023" # ??@x??????????? @indent = @x c = "" end # \O???(????) if c == "\024" @now_text.sub!(/\[([0-9]+)\]/, "") @opacity = $1.to_i color = self.contents.font.color self.contents.font.name = $fontface self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255) c = "" end # \H???(????) if c == "\025" @now_text.sub!(/\[([0-9]+)\]/, "") self.contents.font.size = [[$1.to_i, 6].max, 32].min c = "" end # \B???(????) if c == "\026" @now_text.sub!(/\[([0-9]+)\]/, "") @x += $1.to_i c = "" end #NEW #Dubealex Font Change Command if c == "\050" @now_text.sub!(/\[(.*?)\]/, "") buftxt = $1.dup.to_s if buftxt.match(/\//) == nil and buftxt != "" then self.contents.font.name = buftxt end c = "" end #end of font change command # \R???(????) if c == "\027" @now_text.sub!(/\[(.*?)\]/, "") # ????? @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity) # ?????SE??? if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end c = "" end # ???????????????(????) if c == "\030" # ???????????? @now_text.sub!(/\[(.*?)\]/, "") # ??????? self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24)) # ?????SE??? if $soundname_on_speak != "" Audio.se_play($soundname_on_speak) end @x += 24 # ????? c = "" end # ??????? if c == "\n" # y ? 1 ??? @lines += 1 @y += 1 @x = 0 + @indent + @face_indent # ??????????? if @lines >= $game_temp.choice_start @x = 8 + @indent + @face_indent # ??????? @cursor_width = @max_choice_x end # ????? c = "" end # ??????? if c == "\022" # []????? @now_text.sub!(/\[([0-9]+)\]/, "") # ????? @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i) # ????? c = "" end if c != "" # ????? self.contents.draw_text(0+@x, 32 * @y, 40, 32, c) @x += self.contents.text_size(c).width # ?????SE??? if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end end # B?????????? # SKIP # This allow you to SKIP the letter by letter using a button # At your own choice # Here's how to customize it: # Replace the letter in the end of the line "if Input.trigger?(Input::C)" # That is on line #512 # By the letter of your choice: # # B = Escape, 0 (On The NumPad), X # C = Enter, Space Bar and C # A = Shift, Z if Input.press?(Input::C) text_not_skip = false end else text_not_skip = true break end # ???? if text_not_skip break end end @write_wait += @write_speed 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 if @mid_stop @mid_stop = false return else terminate_message end end return end # ??????????????????????????·??? if @fade_out == false and $game_temp.message_text != nil @contents_showing = true $game_temp.message_window_showing = true 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 #-------------------------------------------------------------------------- # ? ????????? # parameter : ????? #-------------------------------------------------------------------------- def get_character(parameter) # ???????? case parameter when 0 # ????? return $game_player else # ??????? events = $game_map.events return events == nil ? nil : events[parameter] end end #-------------------------------------------------------------------------- # ? ???????????????? #-------------------------------------------------------------------------- def reset_window # ?? if @popchar >= 0 events = $game_map.events if events != nil character = get_character(@popchar) x = [[character.screen_x - 0 - self.width / 2, 4].max, 636 - self.width].min y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min self.x = x self.y = y end elsif @popchar == -1 self.x = -4 self.y = -4 self.width = 648 self.height = 488 else 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 self.x = 80 if @face_file == nil self.width = 480 else self.width = 600 self.x -= 60 end self.height = 160 end end self.contents = Bitmap.new(self.width - 32, self.height - 32) self.contents.font.color = normal_color self.contents.font.name = $fontface if @face_file != nil self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96)) end if @popchar == -1 self.opacity = 255 self.back_opacity = 0 elsif $game_system.message_frame == 0 self.opacity = 255 self.back_opacity = 255 else self.opacity = 0 self.back_opacity = 255 end end #-------------------------------------------------------------------------- # ? ???? #-------------------------------------------------------------------------- # x :x?? # y :y?? # num :???? # ???:???(@x???) #-------------------------------------------------------------------------- def gaiji_draw(x, y, num) # ??????????????????? if @gaiji_cache == nil return 0 else # ???????????????????????????? if @gaiji_cache.width < num * 24 return 0 end
# ???????? if self.contents.font.size >= 20 and self.contents.font.size <= 24 size = 24 else size = self.contents.font.size * 100 * 24 / 2200 end
# ??????stretch_blt??? self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))
# ?????SE??? if $soundname_on_speak != "" then Audio.se_play($soundname_on_speak) end
# ???????? return size end end #-------------------------------------------------------------------------- # ? line_height #-------------------------------------------------------------------------- # ???:????(@y???)?????? #-------------------------------------------------------------------------- def line_height # ?????????????????????32?????? return 32
# ???????? if self.contents.font.size >= 20 and self.contents.font.size <= 24 return 32 else return self.contents.font.size * 15 / 10 end end #-------------------------------------------------------------------------- # ? ?????? #-------------------------------------------------------------------------- # target :?????Bitmap??????? # x :x?? # y :y?? # str :????????,????????? # ,????2???·??????????????? # opacity:???(0~255) # ??? :???(@x???)? #-------------------------------------------------------------------------- def ruby_draw_text(target, x, y, str,opacity) # ?????????????????? sizeback = target.font.size # ???????? target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2 rubysize = [rubysize, 6].max # opacity???????????????????? opacity = [[opacity, 0].max, 255].min # str?split?????split_s??? split_s = str.split(/,/)
# split_s?nil????""?????(?????) split_s[0] == nil ? split_s[0] = "" : nil split_s[1] == nil ? split_s[1] = "" : nil
# height?width??? height = sizeback + rubysize width = target.text_size(split_s[0]).width
# ?????????(?????????????????·??) target.font.size = rubysize ruby_width = target.text_size(split_s[1]).width target.font.size = sizeback
buf_width = [target.text_size(split_s[0]).width, ruby_width].max
# ????????????????1/2????????(????) width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
# opacity?255(????)???????? if opacity == 255 # ????? target.font.size = rubysize target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1]) target.font.size = sizeback # ????? target.draw_text(x, y, width, target.font.size, split_s[0]) return width else # ???????height?width??????????????? # ??????????? if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height @opacity_text_buf.dispose @opacity_text_buf = Bitmap.new(buf_width, height) # ???????????????? else @opacity_text_buf.clear end # ??????????? # ????? @opacity_text_buf.font.size = rubysize @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1) @opacity_text_buf.font.size = sizeback # ????? @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1) # ??????????????? if sub_x >= 0 target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) # ??????????????? else target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity) end # ???????? return width end end #-------------------------------------------------------------------------- # ? \V?? #-------------------------------------------------------------------------- # option :??????????????????index??????????? # index :?????? # ??? :????(??????????????) #-------------------------------------------------------------------------- def convart_value(option, index) # option?nil????""???(?????) option == nil ? option = "" : nil
# option?downcase????? option.downcase!
# \030???????????????\030[?????????]???? case option when "i" unless $data_items[index].name == nil r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name) end when "w" unless $data_weapons[index].name == nil r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name) end when "a" unless $data_armors[index].name == nil r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name) end when "s" unless $data_skills[index].name == nil r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name) end else r = $game_variables[index] end
r == nil ? r = "" : nil return r end #-------------------------------------------------------------------------- # ? ?? #-------------------------------------------------------------------------- def dispose terminate_message
# ????????? if @gaiji_cache != nil unless @gaiji_cache.disposed? @gaiji_cache.dispose end end
# ????????????? unless @opacity_text_buf.disposed? @opacity_text_buf.dispose end
$game_temp.message_window_showing = false if @input_number_window != nil @input_number_window.dispose end super end #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def update_cursor_rect if @index >= 0 n = $game_temp.choice_start + @index self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32) else self.cursor_rect.empty end end end #============================================================================== # ¦ Window_Frame (??????????????) #============================================================================== class Window_Frame < Window_Base #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) self.contents = nil #self.back_opacity = 240 end #-------------------------------------------------------------------------- # ? ?? #-------------------------------------------------------------------------- def dispose super end end #============================================================================== # ¦ Air_Text (???????????? = ??????????????????) #============================================================================== class Air_Text < Window_Base #-------------------------------------------------------------------------- # ? ????????? #-------------------------------------------------------------------------- def initialize(x, y, designate_text) super(x-16, y-16, 32 + designate_text.size * 12, 56) self.opacity = 0 self.back_opacity = 0 self.contents = Bitmap.new(self.width - 32, self.height - 32) w = self.contents.width h = self.contents.height self.contents.font.name = $fontface self.contents.font.color = normal_color self.contents.draw_text(0, 0, w, h, designate_text) end #-------------------------------------------------------------------------- # ? ?? #-------------------------------------------------------------------------- def dispose self.contents.clear super end end
Et j'aimerais faire en sorte que pendant une cinématique, on ne puisse pas passer le texte, car niveau timing avec la musique et tout c'est vraiment pas top. Voila voila cordialement
Dernière édition par Shyno19 le Ven 16 Mar 2012 - 18:02, édité 1 fois |
|