Project1

标题: 【VX】请问怎么增加对话框的最大行数,max_line修改了没用 [打印本页]

作者: 晚安    时间: 2011-12-14 10:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 各种压力的猫君    时间: 2011-12-14 11:03
本帖最后由 各种压力的猫君 于 2011-12-14 12:10 编辑

脚本里修改没用的。
直接把编辑器脱壳用资源修改工具改对话框大小。


貌似我理解有误……当我没说
作者: 小白玩家    时间: 2011-12-14 11:18
我搜到的是这个诶
请问大家真对话加强脚本怎么改对话框大小
猫君说:88行   super(80, 304, 480, 160)
             968行 super(x-16, y-16, 32 + designate_text.size * 12, 56)

            第一个是窗口
        第二个是文字
地址http://rpg.blue/forum.php?mod=vi ... 6%E5%A4%A7%E5%B0%8F
直接改脚本吗
作者: 各种压力的猫君    时间: 2011-12-14 15:36
如果你只改了游戏里窗口的值,你会发现不改软件的话每个显示文章你只能写4行
(窗口一共就那么大……)当然可以用变通方式实现,比如先用事件脚本把半句话代入变量,
然后显示文章用\v[n]的形式载入进去。
作者: eve592370698    时间: 2011-12-21 23:22
本帖最后由 eve592370698 于 2011-12-21 23:25 编辑
小白玩家 发表于 2011-12-14 11:18
我搜到的是这个诶
请问大家真对话加强脚本怎么改对话框大小↓
猫君说:88行   super(80, 304, 480, 160)


vx输入文章内容的脚本是

$game_message.texts.push("文章内容请在两个半角双引号之间
第2行
第三行
第四行
下面那个代码大小仅仅支持到第五行")


最关键的是不能识别段落符(尝试着输入,结果段落符变成了方块)
修复方法如下,请注意我加了一个条件请注意,这个代码只能在默认的分辨率上使用不支持daipeng76的高分辨率模板,他的分辨率扩展目前正在研究中
  1. #==============================================================================
  2. # ** Window_Message
  3. #------------------------------------------------------------------------------
  4. #  This message window is used to display text.
  5. #==============================================================================

  6. class Window_Message < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # * Constants
  9.   #--------------------------------------------------------------------------
  10.   MAX_LINE = 4                            # Maximum number of lines
  11.   #--------------------------------------------------------------------------
  12.   # * Object Initialization
  13.   #--------------------------------------------------------------------------
  14.   def initialize
  15.     super(0, 288, 544, 158)
  16.     self.z = 200
  17.     self.active = false
  18.     self.index = -1
  19.     self.openness = 0
  20.     @opening = false            # WIndow opening flag
  21.     @closing = false            # Window closing flag
  22.     @text = nil                 # Remaining text to be displayed
  23.     @contents_x = 0             # X coordinate for drawing next character
  24.     @contents_y = 0             # Y coordinate for drawing next character
  25.     @line_count = 0             # Line count drawn up until now
  26.     @wait_count = 0             # Wait count
  27.     @background = 0             # Background type
  28.     @position = 2               # Display position
  29.     @show_fast = false          # Fast forward flag
  30.     @line_show_fast = false     # Fast forward by line flag
  31.     @pause_skip = false         # Input standby omission flag
  32.     create_gold_window
  33.     create_number_input_window
  34.     create_back_sprite
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # * Dispose
  38.   #--------------------------------------------------------------------------
  39.   def dispose
  40.     super
  41.     dispose_gold_window
  42.     dispose_number_input_window
  43.     dispose_back_sprite
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # * Frame Update
  47.   #--------------------------------------------------------------------------
  48.   def update
  49.     super
  50.     update_gold_window
  51.     update_number_input_window
  52.     update_back_sprite
  53.     update_show_fast
  54.     unless @opening or @closing             # Window is not opening or closing
  55.       if @wait_count > 0                    # Waiting within text
  56.         @wait_count -= 1
  57.       elsif self.pause                      # Waiting for text advancement
  58.         input_pause
  59.       elsif self.active                     # Inputting choice
  60.         input_choice
  61.       elsif @number_input_window.visible    # Inputting number
  62.         input_number
  63.       elsif @text != nil                    # More text exists
  64.         update_message                        # Update message
  65.       elsif continue?                       # If continuing
  66.         start_message                         # Start message
  67.         open                                  # Open window
  68.         $game_message.visible = true
  69.       else                                  # If not continuing
  70.         close                                 # Close window
  71.         $game_message.visible = @closing
  72.       end
  73.     end
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # * Create Gold Window
  77.   #--------------------------------------------------------------------------
  78.   def create_gold_window
  79.     @gold_window = Window_Gold.new(384, 0)
  80.     @gold_window.openness = 0
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # * Create Number Input Window
  84.   #--------------------------------------------------------------------------
  85.   def create_number_input_window
  86.     @number_input_window = Window_NumberInput.new
  87.     @number_input_window.visible = false
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # * Create Background Sprite
  91.   #--------------------------------------------------------------------------
  92.   def create_back_sprite
  93.     @back_sprite = Sprite.new
  94.     @back_sprite.bitmap = Cache.system("MessageBack")
  95.     @back_sprite.visible = (@background == 1)
  96.     @back_sprite.z = 190
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # * Dispose of Gold Window
  100.   #--------------------------------------------------------------------------
  101.   def dispose_gold_window
  102.     @gold_window.dispose
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # * Dispose of Number Input Window
  106.   #--------------------------------------------------------------------------
  107.   def dispose_number_input_window
  108.     @number_input_window.dispose
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # * Dispose of Background Sprite
  112.   #--------------------------------------------------------------------------
  113.   def dispose_back_sprite
  114.     @back_sprite.dispose
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # * Update Gold Window
  118.   #--------------------------------------------------------------------------
  119.   def update_gold_window
  120.     @gold_window.update
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # * Update Number Input Window
  124.   #--------------------------------------------------------------------------
  125.   def update_number_input_window
  126.     @number_input_window.update
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # * Update Background Sprite
  130.   #--------------------------------------------------------------------------
  131.   def update_back_sprite
  132.     @back_sprite.visible = (@background == 1)
  133.     @back_sprite.y = y - 16
  134.     @back_sprite.opacity = openness
  135.     @back_sprite.update
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # * Update Fast Forward Flag
  139.   #--------------------------------------------------------------------------
  140.   def update_show_fast
  141.     if self.pause or self.openness < 255
  142.       @show_fast = false
  143.     elsif Input.trigger?(Input::C) and @wait_count < 2
  144.       @show_fast = true
  145.     elsif not Input.press?(Input::C)
  146.       @show_fast = false
  147.     end
  148.     if @show_fast and @wait_count > 0
  149.       @wait_count -= 1
  150.     end
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # * Determine if the Next Message Should be Displayed Continuously
  154.   #--------------------------------------------------------------------------
  155.   def continue?
  156.     return true if $game_message.num_input_variable_id > 0
  157.     return false if $game_message.texts.empty?
  158.     if self.openness > 0 and not $game_temp.in_battle
  159.       return false if @background != $game_message.background
  160.       return false if @position != $game_message.position
  161.     end
  162.     return true
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # * Start Message
  166.   #--------------------------------------------------------------------------
  167.   def start_message
  168.     @text = ""
  169.     for i in 0...$game_message.texts.size
  170.       @text += "    " if i >= $game_message.choice_start
  171.       @text += $game_message.texts[i].clone + "\x00"
  172.     end
  173.     @item_max = $game_message.choice_max
  174.     convert_special_characters
  175.     reset_window
  176.     new_page
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # * New Page
  180.   #--------------------------------------------------------------------------
  181.   def new_page
  182.     contents.clear
  183.     if $game_message.face_name.empty?
  184.       @contents_x = 0
  185.     else
  186.       name = $game_message.face_name
  187.       index = $game_message.face_index
  188.       draw_face(name, index, 0, 0)
  189.       @contents_x = 112
  190.     end
  191.     @contents_y = 0
  192.     @line_count = 0
  193.     @show_fast = false
  194.     @line_show_fast = false
  195.     @pause_skip = false
  196.     contents.font.color = text_color(0)
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # * New Line
  200.   #--------------------------------------------------------------------------
  201.   def new_line
  202.     if $game_message.face_name.empty?
  203.       @contents_x = 0
  204.     else
  205.       @contents_x = 112
  206.     end
  207.     @contents_y += WLH
  208.     @line_count += 1
  209.     @line_show_fast = false
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # * Convert Special Characters
  213.   #--------------------------------------------------------------------------
  214.   def convert_special_characters
  215.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  216.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  217.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  218.     @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  219.     @text.gsub!(/\\G/)              { "\x02" }
  220.     @text.gsub!(/\\\./)             { "\x03" }
  221.     @text.gsub!(/\\\|/)             { "\x04" }
  222.     @text.gsub!(/\\!/)              { "\x05" }
  223.     @text.gsub!(/\\>/)              { "\x06" }
  224.     @text.gsub!(/\\</)              { "\x07" }
  225.     @text.gsub!(/\\\^/)             { "\x08" }
  226.     @text.gsub!(/\\\\/)             { "\\" }
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # * Set Window Background and Position
  230.   #--------------------------------------------------------------------------
  231.   def reset_window
  232.     @background = $game_message.background
  233.     @position = $game_message.position
  234.     if @background == 0   # Normal window
  235.       self.opacity = 255
  236.     else                  # Dim Background and Make it Transparent
  237.       self.opacity = 0
  238.     end
  239.     case @position
  240.     when 0  # Top
  241.       self.y = 0
  242.       @gold_window.y = 360
  243.     when 1  # Middle
  244.       self.y = 144
  245.       @gold_window.y = 0
  246.     when 2  # Bottom
  247.       self.y = 288
  248.       @gold_window.y = 0
  249.     end
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # * End Message
  253.   #--------------------------------------------------------------------------
  254.   def terminate_message
  255.     self.active = false
  256.     self.pause = false
  257.     self.index = -1
  258.     @gold_window.close
  259.     @number_input_window.active = false
  260.     @number_input_window.visible = false
  261.     $game_message.main_proc.call if $game_message.main_proc != nil
  262.     $game_message.clear
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # * Update Message
  266.   #--------------------------------------------------------------------------
  267.   def update_message
  268.     loop do
  269.       c = @text.slice!(/./m)            # Get next text character
  270.       case c
  271.       when nil                          # There is no text that must be drawn
  272.         finish_message                  # Finish update
  273.         break
  274.       when "\x00"                       # New line
  275.         new_line
  276.         if @line_count >= MAX_LINE      # If line count is maximum
  277.           unless @text.empty?           # If there is more
  278.             self.pause = true           # Insert number input
  279.             break
  280.           end
  281.         end
  282.       when "\x01"                       # \C[n]  (text character color change)
  283.         @text.sub!(/\[([0-9]+)\]/, "")
  284.         contents.font.color = text_color($1.to_i)
  285.         next
  286.       when "\x02"                       # \G  (gold display)
  287.         @gold_window.refresh
  288.         @gold_window.open
  289.       when "\x03"                       # \.  (wait 1/4 second)
  290.         @wait_count = 15
  291.         break
  292.       when "\x04"                       # \|  (wait 1 second)
  293.         @wait_count = 60
  294.         break
  295.       when "\x05"                       # \!  (Wait for input)
  296.         self.pause = true
  297.         break
  298.       when "\x06"                       # \>  (Fast display ON)
  299.         @line_show_fast = true
  300.       when "\x07"                       # \<  (Fast display OFF)
  301.         @line_show_fast = false
  302.       when "\x08"                       # \^  (No wait for input)
  303.         @pause_skip = true
  304.       when "\n"
  305.         @contents_y += contents.text_size(c).height
  306.         @contents_x = 0
  307.       else                              # Normal text character
  308.         contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
  309.         c_width = contents.text_size(c).width
  310.         @contents_x += c_width
  311.       end
  312.       break unless @show_fast or @line_show_fast
  313.     end
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # * End Message Update
  317.   #--------------------------------------------------------------------------
  318.   def finish_message
  319.     if $game_message.choice_max > 0
  320.       start_choice
  321.     elsif $game_message.num_input_variable_id > 0
  322.       start_number_input
  323.     elsif @pause_skip
  324.       terminate_message
  325.     else
  326.       self.pause = true
  327.     end
  328.     @wait_count = 10
  329.     @text = nil
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # * Start Choices
  333.   #--------------------------------------------------------------------------
  334.   def start_choice
  335.     self.active = true
  336.     self.index = 0
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # * Start Number Input
  340.   #--------------------------------------------------------------------------
  341.   def start_number_input
  342.     digits_max = $game_message.num_input_digits_max
  343.     number = $game_variables[$game_message.num_input_variable_id]
  344.     @number_input_window.digits_max = digits_max
  345.     @number_input_window.number = number
  346.     if $game_message.face_name.empty?
  347.       @number_input_window.x = x
  348.     else
  349.       @number_input_window.x = x + 112
  350.     end
  351.     @number_input_window.y = y + @contents_y
  352.     @number_input_window.active = true
  353.     @number_input_window.visible = true
  354.     @number_input_window.update
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # * Update cursor
  358.   #--------------------------------------------------------------------------
  359.   def update_cursor
  360.     if @index >= 0
  361.       x = $game_message.face_name.empty? ? 0 : 112
  362.       y = ($game_message.choice_start + @index) * WLH
  363.       self.cursor_rect.set(x, y, contents.width - x, WLH)
  364.     else
  365.       self.cursor_rect.empty
  366.     end
  367.   end
  368.   #--------------------------------------------------------------------------
  369.   # * Text Advancement Input
  370.   #--------------------------------------------------------------------------
  371.   def input_pause
  372.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  373.       self.pause = false
  374.       if @text != nil and not @text.empty?
  375.         new_page if @line_count >= MAX_LINE
  376.       else
  377.         terminate_message
  378.       end
  379.     end
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # * Choice Input
  383.   #--------------------------------------------------------------------------
  384.   def input_choice
  385.     if Input.trigger?(Input::B)
  386.       if $game_message.choice_cancel_type > 0
  387.         Sound.play_cancel
  388.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  389.         terminate_message
  390.       end
  391.     elsif Input.trigger?(Input::C)
  392.       Sound.play_decision
  393.       $game_message.choice_proc.call(self.index)
  394.       terminate_message
  395.     end
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # * Number Input Processing
  399.   #--------------------------------------------------------------------------
  400.   def input_number
  401.     if Input.trigger?(Input::C)
  402.       Sound.play_decision
  403.       $game_variables[$game_message.num_input_variable_id] =
  404.         @number_input_window.number
  405.       $game_map.need_refresh = true
  406.       terminate_message
  407.     end
  408.   end
  409. end
复制代码

作者: 小白玩家    时间: 2011-12-21 23:30
效果如下图,怎么改善,或者我使用方法出错?

2.jpg (79.18 KB, 下载次数: 25)

2.jpg

1.jpg (244.77 KB, 下载次数: 29)

1.jpg





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1