Project1

标题: VX中显示文章的字号变大 [打印本页]

作者: sco3396507    时间: 2008-3-18 21:35
标题: VX中显示文章的字号变大
比如说发火的时候表示愤怒会把字体变大 怎么做到 只要几个字 不要全部的那种 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 精灵使者    时间: 2008-3-18 21:40
这个……我以前试验过修改大小,但是最大只能到28……不能太大了……
作者: sco3396507    时间: 2008-3-18 21:41
修改到28怎么修改啊
作者: 精灵使者    时间: 2008-3-18 21:44
这个啊。
你参考我的那个《杀熊者传说》那里来设定吧。

  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章的信息窗口。
  5. #==============================================================================

  6. class Window_Message < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 常量
  9.   #--------------------------------------------------------------------------
  10.   MAX_LINE = 4                            # 最大行数
  11.   #--------------------------------------------------------------------------
  12.   # ● 初始化对象
  13.   #--------------------------------------------------------------------------
  14.   def initialize
  15.     super(0, 288, 544, 128)
  16.     self.z = 200
  17.     self.active = false
  18.     self.index = -1
  19.     self.openness = 0
  20.     @opening = false            # 窗口正在打开的标志
  21.     @closing = false            # 窗口正在关闭的标志
  22.     @text = nil                 # 已经没有可显示的文章
  23.     @contents_x = 0             # 下一条文字描绘的 X 坐标
  24.     @contents_y = 0             # 下一条文字描绘的 Y 坐标
  25.     @line_count = 0             # 现在描绘的行数
  26.     @wait_count = 0             # 等待计数
  27.     @background = 0             # 背景类型
  28.     @position = 2               # 显示位置
  29.     @show_fast = false          # 快速显示标志
  30.     @line_show_fast = false     # 以行为单位快速显示
  31.     @pause_skip = false         # 省略等待输入标志
  32.     create_gold_window
  33.     create_number_input_window
  34.     create_back_sprite
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 释放
  38.   #--------------------------------------------------------------------------
  39.   def dispose
  40.     super
  41.     dispose_gold_window
  42.     dispose_number_input_window
  43.     dispose_back_sprite
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 更新画面
  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             # 除窗口关闭以外
  55.       if @wait_count > 0                    # 文章内等待中
  56.         @wait_count -= 1
  57.       elsif self.pause                      # 等待文章翻页待机中
  58.         input_pause
  59.       elsif self.active                     # 正在输入选择项
  60.         input_choice
  61.       elsif @number_input_window.visible    # 正在输入数值
  62.         input_number
  63.       elsif @text != nil                    # 还有剩余的文章
  64.         update_message                        # 更新消息
  65.       elsif continue?                       # 继续的情况
  66.         start_message                         # 开始消息
  67.         open                                  # 打开窗口
  68.         $game_message.visible = true
  69.       else                                  # 不继续的情况
  70.         close                                 # 关闭窗口
  71.         $game_message.visible = @closing
  72.       end
  73.     end
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 生成所持金窗口
  77.   #--------------------------------------------------------------------------
  78.   def create_gold_window
  79.     @gold_window = Window_Gold.new(384, 0)
  80.     @gold_window.openness = 0
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 生成数值输入窗口
  84.   #--------------------------------------------------------------------------
  85.   def create_number_input_window
  86.     @number_input_window = Window_NumberInput.new
  87.     @number_input_window.visible = false
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 生成背景活动块
  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.   # ● 释放所持金窗口
  100.   #--------------------------------------------------------------------------
  101.   def dispose_gold_window
  102.     @gold_window.dispose
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 释放数值输入窗口
  106.   #--------------------------------------------------------------------------
  107.   def dispose_number_input_window
  108.     @number_input_window.dispose
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 释放背景活动块
  112.   #--------------------------------------------------------------------------
  113.   def dispose_back_sprite
  114.     @back_sprite.dispose
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 更新所持金窗口
  118.   #--------------------------------------------------------------------------
  119.   def update_gold_window
  120.     @gold_window.update
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 更新数值输入窗口
  124.   #--------------------------------------------------------------------------
  125.   def update_number_input_window
  126.     @number_input_window.update
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 更新背景活动块
  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.   # ● 更新快速显示标志
  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.   # ● 判断下一消息继续显示
  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.   # ● 开始显示消息
  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.   # ● 更换页面处理
  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.   # ● 换行处理
  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.   # ● 特殊文字变换
  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!(/\\F\[([0-9]+)\]/i) { "\x09[#{$1}]" }
  227.     @text.gsub!(/\\\\/)             { "\\" }
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 设置窗口背景与位置
  231.   #--------------------------------------------------------------------------
  232.   def reset_window
  233.     @background = $game_message.background
  234.     @position = $game_message.position
  235.     if @background == 0   # 普通窗口
  236.       self.opacity = 255
  237.     else                  # 背景变暗、透明
  238.       self.opacity = 0
  239.     end
  240.     case @position
  241.     when 0  # 上
  242.       self.y = 0
  243.       @gold_window.y = 360
  244.     when 1  # 中
  245.       self.y = 144
  246.       @gold_window.y = 0
  247.     when 2  # 下
  248.       self.y = 288
  249.       @gold_window.y = 0
  250.     end
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 消息结束
  254.   #--------------------------------------------------------------------------
  255.   def terminate_message
  256.     self.active = false
  257.     self.pause = false
  258.     self.index = -1
  259.     @gold_window.close
  260.     @number_input_window.active = false
  261.     @number_input_window.visible = false
  262.     $game_message.main_proc.call if $game_message.main_proc != nil
  263.     $game_message.clear
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ● 更新消息
  267.   #--------------------------------------------------------------------------
  268.   def update_message
  269.     loop do
  270.       c = @text.slice!(/./m)            # 获取下一条文字
  271.       case c
  272.       when nil                          # 没有可以显示的文字
  273.         finish_message                  # 更新结束
  274.         break
  275.       when "\x00"                       # 换行
  276.         new_line
  277.         if @line_count >= MAX_LINE      # 行数为最大时
  278.           unless @text.empty?           # 如果还有增加则继续
  279.             self.pause = true           # 等待输入
  280.             break
  281.           end
  282.         end
  283.       when "\x01"                       # \C[n]  (更改文字色)
  284.         @text.sub!(/\[([0-9]+)\]/, "")
  285.         contents.font.color = text_color($1.to_i)
  286.         next
  287.       when "\x02"                       # \G  (显示所持金)
  288.         @gold_window.refresh
  289.         @gold_window.open
  290.       when "\x03"                       # \.  (等待 1/4 秒)
  291.         @wait_count = 15
  292.         break
  293.       when "\x04"                       # \|  (等待 1 秒)
  294.         @wait_count = 60
  295.         break
  296.       when "\x05"                       # \!  (等待输入)
  297.         self.pause = true
  298.         break
  299.       when "\x06"                       # \>  (瞬间显示 ON)
  300.         @line_show_fast = true
  301.       when "\x07"                       # \<  (瞬间显示 OFF)
  302.         @line_show_fast = false
  303.       when "\x08"                       # \^  (不等待输入)
  304.         @pause_skip = true
  305.       when "\x09"
  306.         @text.sub!(/\[([0-9]+)\]/, "")
  307.         contents.font.size = $1.to_i
  308.         next
  309.       else                              # 普通文字
  310.         contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
  311.         c_width = contents.text_size(c).width
  312.         @contents_x += c_width
  313.       end
  314.       break unless @show_fast or @line_show_fast
  315.     end
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● 消息更新结束
  319.   #--------------------------------------------------------------------------
  320.   def finish_message
  321.     if $game_message.choice_max > 0
  322.       start_choice
  323.     elsif $game_message.num_input_variable_id > 0
  324.       start_number_input
  325.     elsif @pause_skip
  326.       terminate_message
  327.     else
  328.       self.pause = true
  329.     end
  330.     @wait_count = 10
  331.     @text = nil
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 开始选择项
  335.   #--------------------------------------------------------------------------
  336.   def start_choice
  337.     self.active = true
  338.     self.index = 0
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● 开始输入数值
  342.   #--------------------------------------------------------------------------
  343.   def start_number_input
  344.     digits_max = $game_message.num_input_digits_max
  345.     number = $game_variables[$game_message.num_input_variable_id]
  346.     @number_input_window.digits_max = digits_max
  347.     @number_input_window.number = number
  348.     if $game_message.face_name.empty?
  349.       @number_input_window.x = x
  350.     else
  351.       @number_input_window.x = x + 112
  352.     end
  353.     @number_input_window.y = y + @contents_y
  354.     @number_input_window.active = true
  355.     @number_input_window.visible = true
  356.     @number_input_window.update
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ● 更新光标
  360.   #--------------------------------------------------------------------------
  361.   def update_cursor
  362.     if @index >= 0
  363.       x = $game_message.face_name.empty? ? 0 : 112
  364.       y = ($game_message.choice_start + @index) * WLH
  365.       self.cursor_rect.set(x, y, contents.width - x, WLH)
  366.     else
  367.       self.cursor_rect.empty
  368.     end
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● 文章显示输入处理
  372.   #--------------------------------------------------------------------------
  373.   def input_pause
  374.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  375.       self.pause = false
  376.       if @text != nil and not @text.empty?
  377.         new_page if @line_count >= MAX_LINE
  378.       else
  379.         terminate_message
  380.       end
  381.     end
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 选择项输入处理
  385.   #--------------------------------------------------------------------------
  386.   def input_choice
  387.     if Input.trigger?(Input::B)
  388.       if $game_message.choice_cancel_type > 0
  389.         Sound.play_cancel
  390.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  391.         terminate_message
  392.       end
  393.     elsif Input.trigger?(Input::C)
  394.       Sound.play_decision
  395.       $game_message.choice_proc.call(self.index)
  396.       terminate_message
  397.     end
  398.   end
  399.   #--------------------------------------------------------------------------
  400.   # ● 数值输入处理
  401.   #--------------------------------------------------------------------------
  402.   def input_number
  403.     if Input.trigger?(Input::C)
  404.       Sound.play_decision
  405.       $game_variables[$game_message.num_input_variable_id] =
  406.         @number_input_window.number
  407.       $game_map.need_refresh = true
  408.       terminate_message
  409.     end
  410.   end
  411. end
复制代码

这个是我修改的,可以用\f[字号大小]来改变字号。p.s.注意用完以后将其改回默认(使用命令\f[22]) [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




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