设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2791|回复: 7
打印 上一主题 下一主题

在对话中方便地使用多字体

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
跳转到指定楼层
1
发表于 2007-1-14 02:57:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
你是否为了改变对话的字体,颜色和字号大小,而不断地输入一大堆\c[n]\s[n]之类的东东……这个脚本就是用来方便切换的……

{/hx}{/hx}{/hx}虽然是很简单的内容,但是好象还是有很多人在问……所以做了个简便的脚本……

  作用:在对话中方便的使用\f[n]切换第二种,第三种,第四种字号大小、颜色都不一样的字体。而不需要重复的输入一堆诸如\c[n]\s[n]的命令字符来切换(有时候弄得连输入对话框都挤得换行了)……
  适用:默认脚本0冲突
  冲突可能:不知道有没有人做过这个(没有挖坟的习惯……),由于脚本里定义了Window_Message的refresh,使用了其他整合的对话脚本应该会冲突……如果需要用到这个功能的朋友,可以对照里面的增添修改内容把你的脚本修改一下,应该可以达到效果……{/hx}(用ctrl+F搜“增添修改”来查看)



由于我对脚本也不是了解很深,有出错的地方,希望大家指出,谢谢了{/hx}{/hx}

范例工程下载:
http://rpg.blue/UP_PIC/200705/� ... 使用多字体.rar

●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
     比如\f[0]或者\f[9]等,否则必然出现脚本错误!!



  1. #==================================================================
  2. #   66RPG      对话使用第二字体
  3. #==================================================================
  4. #------------------------------------------------------------
  5. #这个脚本的念头是在论坛上问类似问题时,受simounF的回答,而启发的
  6. #
  7. #由于目前我对脚本的了解也只是皮毛,有不正确的地方,请大家给我指点一下喔
  8. #对此脚本有疑问请在bbs.66RPG.com给我站内短信吧……>_<   猫哥哥
  9. #==============================================================
  10. #
  11. #★使用方法★:将本脚本插入到main脚本之前。
  12. #           先设置下面的预处理内容,然后用\f[n]来在对话里切换字体(默认的n=0~4)
  13. #          和整合的对话脚本可能有冲突,懂脚本的自己修改一下吧
  14. #
  15. #          \f[1]回到默认
  16. #          \f[2]使用第二字体
  17. #          \f[3]使用第三字体
  18. #          \f[4]使用第四字体
  19. #   ●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
  20. #     比如\f[0]或者\f[9]等,否则必然出现脚本错误!!
  21. #
  22. #=================预先处理=======================
  23. #
  24. ###########①默认字体(如果修改了main或者Window_Base里的默认字体,把这里设置一下)-------
  25. #
  26. $cat_默认文字字体 ="黑体"    #默认的黑体
  27. $cat_默认字体大小 =22        #默认的22号
  28. $cat_默认字体颜色 = Color.new(255,255,255,255)   #默认用的白色
  29. #不懂怎么换颜色的菜鸟看这里:  ↑上面这个括号里,四个数值分别是(红,绿,蓝,透明度),取值范围是(0~255),想要什么颜色自己更该数值试试看吧。
  30. #
  31. ###########②第二字体的设置#########################
  32. $cat_使用的第二字体 ="楷体_GB2312"
  33. $cat_使用的第二字体大小 =22
  34. $cat_使用的第二字体颜色 = Color.new(255,55,55,255) #红
  35. ##################################################
  36. #
  37. ###########③第三字体的设置#########################
  38. $cat_使用的第三字体 ="宋体"
  39. $cat_使用的第三字体大小 =22
  40. $cat_使用的第三字体颜色 = Color.new(225,225,80,255) #黄
  41. ##################################################
  42. #
  43. ###########④第四字体的设置#########################
  44. $cat_使用的第四字体 ="华文行楷"
  45. $cat_使用的第四字体大小 =42
  46. $cat_使用的第四字体颜色 = Color.new(0,0,123,255) #蓝
  47. ######################################################
  48. #
  49. #----------定义部分-------------
  50. #——字体---
  51. class Window_Base
  52.   def font_style(n)
  53.    case n
  54.    when 1
  55.      return $cat_默认文字字体
  56.    when 2
  57.      return $cat_使用的第二字体
  58.    when 3
  59.      return $cat_使用的第三字体
  60.    when 4
  61.      return $cat_使用的第四字体
  62.    end
  63. end
  64. #---大小---
  65. def font_size(n)
  66.    case n
  67.    when 1
  68.      return $cat_默认字体大小
  69.    when 2
  70.      return $cat_使用的第二字体大小
  71.    when 3
  72.      return $cat_使用的第三字体大小
  73.    when 4
  74.      return $cat_使用的第四字体大小
  75.    end
  76. end
  77. #----颜色------
  78. def text_color2nd(n)
  79.    case n
  80.    when 1
  81.      return $cat_默认字体颜色
  82.    when 2
  83.      return $cat_使用的第二字体颜色
  84.    when 3
  85.      return $cat_使用的第三字体颜色
  86.    when 4
  87.      return $cat_使用的第四字体颜色
  88.    end
  89.   end
  90. end
  91. #----------重新定义刷新--------------------
  92. class Window_Message
  93.   
  94.   def refresh
  95.    self.contents.clear
  96. #======增添修改的部分=============================
  97.    self.contents.font.color = $cat_默认字体颜色  #
  98.    self.contents.font.name = $cat_默认文字字体   #
  99.    self.contents.font.size = $cat_默认字体大小   #
  100. #=================================================
  101.    
  102.    x = y = 0
  103.    @cursor_width = 0
  104.    # 到选择项的下一行字
  105.    if $game_temp.choice_start == 0
  106.      x = 8
  107.    end
  108.    # 有等待显示的文字的情况下
  109.    if $game_temp.message_text != nil
  110.      text = $game_temp.message_text
  111.      # 限制文字处理
  112.      begin
  113.        last_text = text.clone
  114.        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  115.      end until text == last_text
  116.      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  117.        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  118.      end
  119.      # 为了方便、将 "\\\\" 变换为 "\000"
  120.      text.gsub!(/\\\\/) { "\000" }
  121.      # "\\C" 变为 "\001" に、"\\G" 变为 "\002"
  122.      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  123.      text.gsub!(/\\[Gg]/) { "\002" }
  124.      
  125. #=====增添修改修改的部分================================
  126.      text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\003[#{$1}]" }#
  127. #=======================================================
  128.      
  129.      # c 获取 1 个字 (如果不能取得文字就循环)
  130.      while ((c = text.slice!(/./m)) != nil)
  131.        # \\ 的情况下
  132.        if c == "\000"
  133.          # 还原为本来的文字
  134.          c = "\\"
  135.        end
  136.        # \C[n] 的情况下
  137.        if c == "\001"
  138.          # 更改文字色
  139.          text.sub!(/\[([0-9]+)\]/, "")
  140.          color = $1.to_i
  141.          if color >= 0 and color <= 7
  142.            self.contents.font.color = text_color(color)
  143.          end
  144.          # 下面的文字
  145.          next
  146.        end
  147.       
  148. #=========增添修改的部分============================================================
  149.               # \F[n] 的情况下
  150.        if c == "\003"
  151.          # 更改文字字体
  152.          text.sub!(/\[([0-9]+)\]/, "")
  153.          style = $1.to_i
  154.          color2nd = $1.to_i
  155.          size = $1.to_i
  156.          if style >= 1 and style <= 4 # 4是字体最大的编号,增加字体要加大这个数字
  157.             color2nd >= 1 and color2nd <= 4 # 如果修改了上面的最大值,这里也要改
  158.             size >= 1 and size <= 4 # 如果修改了上面的最大值,这里也要改
  159.            self.contents.font.name = font_style(style)
  160.            self.contents.font.color = text_color2nd(color2nd)
  161.            self.contents.font.size = font_size(size)
  162.          end
  163.          # 下面的文字
  164.          next
  165.        end
  166. #=====================================================================
  167.       
  168.        # \G 的情况下
  169.        if c == "\002"
  170.          # 生成金钱窗口
  171.          if @gold_window == nil
  172.            @gold_window = Window_Gold.new
  173.            @gold_window.x = 560 - @gold_window.width
  174.            if $game_temp.in_battle
  175.              @gold_window.y = 192
  176.            else
  177.              @gold_window.y = self.y >= 128 ? 32 : 384
  178.            end
  179.            @gold_window.opacity = self.opacity
  180.            @gold_window.back_opacity = self.back_opacity
  181.          end
  182.          # 下面的文字
  183.          next
  184.        end
  185.        # 另起一行文字的情况下
  186.        if c == "\n"
  187.          # 刷新选择项及光标的高
  188.          if y >= $game_temp.choice_start
  189.            @cursor_width = [@cursor_width, x].max
  190.          end
  191.          # y 加 1
  192.          y += 1
  193.          x = 0
  194.          # 移动到选择项的下一行
  195.          if y >= $game_temp.choice_start
  196.            x = 8
  197.          end
  198.          # 下面的文字
  199.          next
  200.        end
  201.        # 描绘文字
  202.        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  203.        # x 为要描绘文字的加法运算
  204.        x += self.contents.text_size(c).width
  205.      end
  206.    end
  207.    # 选择项的情况
  208.    if $game_temp.choice_max > 0
  209.      @item_max = $game_temp.choice_max
  210.      self.active = true
  211.      self.index = 0
  212.    end
  213.    # 输入数值的情况
  214.    if $game_temp.num_input_variable_id > 0
  215.      digits_max = $game_temp.num_input_digits_max
  216.      number = $game_variables[$game_temp.num_input_variable_id]
  217.      @input_number_window = Window_InputNumber.new(digits_max)
  218.      @input_number_window.number = number
  219.      @input_number_window.x = self.x + 8
  220.      @input_number_window.y = self.y + $game_temp.num_input_start * 32
  221.    end
  222. end
  223. end
复制代码


山寨产品龟速制作中……

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
2
 楼主| 发表于 2007-1-14 02:57:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
你是否为了改变对话的字体,颜色和字号大小,而不断地输入一大堆\c[n]\s[n]之类的东东……这个脚本就是用来方便切换的……

{/hx}{/hx}{/hx}虽然是很简单的内容,但是好象还是有很多人在问……所以做了个简便的脚本……

  作用:在对话中方便的使用\f[n]切换第二种,第三种,第四种字号大小、颜色都不一样的字体。而不需要重复的输入一堆诸如\c[n]\s[n]的命令字符来切换(有时候弄得连输入对话框都挤得换行了)……
  适用:默认脚本0冲突
  冲突可能:不知道有没有人做过这个(没有挖坟的习惯……),由于脚本里定义了Window_Message的refresh,使用了其他整合的对话脚本应该会冲突……如果需要用到这个功能的朋友,可以对照里面的增添修改内容把你的脚本修改一下,应该可以达到效果……{/hx}(用ctrl+F搜“增添修改”来查看)



由于我对脚本也不是了解很深,有出错的地方,希望大家指出,谢谢了{/hx}{/hx}

范例工程下载:
http://rpg.blue/UP_PIC/200705/� ... 使用多字体.rar

●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
     比如\f[0]或者\f[9]等,否则必然出现脚本错误!!



  1. #==================================================================
  2. #   66RPG      对话使用第二字体
  3. #==================================================================
  4. #------------------------------------------------------------
  5. #这个脚本的念头是在论坛上问类似问题时,受simounF的回答,而启发的
  6. #
  7. #由于目前我对脚本的了解也只是皮毛,有不正确的地方,请大家给我指点一下喔
  8. #对此脚本有疑问请在bbs.66RPG.com给我站内短信吧……>_<   猫哥哥
  9. #==============================================================
  10. #
  11. #★使用方法★:将本脚本插入到main脚本之前。
  12. #           先设置下面的预处理内容,然后用\f[n]来在对话里切换字体(默认的n=0~4)
  13. #          和整合的对话脚本可能有冲突,懂脚本的自己修改一下吧
  14. #
  15. #          \f[1]回到默认
  16. #          \f[2]使用第二字体
  17. #          \f[3]使用第三字体
  18. #          \f[4]使用第四字体
  19. #   ●注意,在未对本脚本做修改的情况下,请不要使用n=1~4之外的数字
  20. #     比如\f[0]或者\f[9]等,否则必然出现脚本错误!!
  21. #
  22. #=================预先处理=======================
  23. #
  24. ###########①默认字体(如果修改了main或者Window_Base里的默认字体,把这里设置一下)-------
  25. #
  26. $cat_默认文字字体 ="黑体"    #默认的黑体
  27. $cat_默认字体大小 =22        #默认的22号
  28. $cat_默认字体颜色 = Color.new(255,255,255,255)   #默认用的白色
  29. #不懂怎么换颜色的菜鸟看这里:  ↑上面这个括号里,四个数值分别是(红,绿,蓝,透明度),取值范围是(0~255),想要什么颜色自己更该数值试试看吧。
  30. #
  31. ###########②第二字体的设置#########################
  32. $cat_使用的第二字体 ="楷体_GB2312"
  33. $cat_使用的第二字体大小 =22
  34. $cat_使用的第二字体颜色 = Color.new(255,55,55,255) #红
  35. ##################################################
  36. #
  37. ###########③第三字体的设置#########################
  38. $cat_使用的第三字体 ="宋体"
  39. $cat_使用的第三字体大小 =22
  40. $cat_使用的第三字体颜色 = Color.new(225,225,80,255) #黄
  41. ##################################################
  42. #
  43. ###########④第四字体的设置#########################
  44. $cat_使用的第四字体 ="华文行楷"
  45. $cat_使用的第四字体大小 =42
  46. $cat_使用的第四字体颜色 = Color.new(0,0,123,255) #蓝
  47. ######################################################
  48. #
  49. #----------定义部分-------------
  50. #——字体---
  51. class Window_Base
  52.   def font_style(n)
  53.    case n
  54.    when 1
  55.      return $cat_默认文字字体
  56.    when 2
  57.      return $cat_使用的第二字体
  58.    when 3
  59.      return $cat_使用的第三字体
  60.    when 4
  61.      return $cat_使用的第四字体
  62.    end
  63. end
  64. #---大小---
  65. def font_size(n)
  66.    case n
  67.    when 1
  68.      return $cat_默认字体大小
  69.    when 2
  70.      return $cat_使用的第二字体大小
  71.    when 3
  72.      return $cat_使用的第三字体大小
  73.    when 4
  74.      return $cat_使用的第四字体大小
  75.    end
  76. end
  77. #----颜色------
  78. def text_color2nd(n)
  79.    case n
  80.    when 1
  81.      return $cat_默认字体颜色
  82.    when 2
  83.      return $cat_使用的第二字体颜色
  84.    when 3
  85.      return $cat_使用的第三字体颜色
  86.    when 4
  87.      return $cat_使用的第四字体颜色
  88.    end
  89.   end
  90. end
  91. #----------重新定义刷新--------------------
  92. class Window_Message
  93.   
  94.   def refresh
  95.    self.contents.clear
  96. #======增添修改的部分=============================
  97.    self.contents.font.color = $cat_默认字体颜色  #
  98.    self.contents.font.name = $cat_默认文字字体   #
  99.    self.contents.font.size = $cat_默认字体大小   #
  100. #=================================================
  101.    
  102.    x = y = 0
  103.    @cursor_width = 0
  104.    # 到选择项的下一行字
  105.    if $game_temp.choice_start == 0
  106.      x = 8
  107.    end
  108.    # 有等待显示的文字的情况下
  109.    if $game_temp.message_text != nil
  110.      text = $game_temp.message_text
  111.      # 限制文字处理
  112.      begin
  113.        last_text = text.clone
  114.        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  115.      end until text == last_text
  116.      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  117.        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  118.      end
  119.      # 为了方便、将 "\\\\" 变换为 "\000"
  120.      text.gsub!(/\\\\/) { "\000" }
  121.      # "\\C" 变为 "\001" に、"\\G" 变为 "\002"
  122.      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  123.      text.gsub!(/\\[Gg]/) { "\002" }
  124.      
  125. #=====增添修改修改的部分================================
  126.      text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\003[#{$1}]" }#
  127. #=======================================================
  128.      
  129.      # c 获取 1 个字 (如果不能取得文字就循环)
  130.      while ((c = text.slice!(/./m)) != nil)
  131.        # \\ 的情况下
  132.        if c == "\000"
  133.          # 还原为本来的文字
  134.          c = "\\"
  135.        end
  136.        # \C[n] 的情况下
  137.        if c == "\001"
  138.          # 更改文字色
  139.          text.sub!(/\[([0-9]+)\]/, "")
  140.          color = $1.to_i
  141.          if color >= 0 and color <= 7
  142.            self.contents.font.color = text_color(color)
  143.          end
  144.          # 下面的文字
  145.          next
  146.        end
  147.       
  148. #=========增添修改的部分============================================================
  149.               # \F[n] 的情况下
  150.        if c == "\003"
  151.          # 更改文字字体
  152.          text.sub!(/\[([0-9]+)\]/, "")
  153.          style = $1.to_i
  154.          color2nd = $1.to_i
  155.          size = $1.to_i
  156.          if style >= 1 and style <= 4 # 4是字体最大的编号,增加字体要加大这个数字
  157.             color2nd >= 1 and color2nd <= 4 # 如果修改了上面的最大值,这里也要改
  158.             size >= 1 and size <= 4 # 如果修改了上面的最大值,这里也要改
  159.            self.contents.font.name = font_style(style)
  160.            self.contents.font.color = text_color2nd(color2nd)
  161.            self.contents.font.size = font_size(size)
  162.          end
  163.          # 下面的文字
  164.          next
  165.        end
  166. #=====================================================================
  167.       
  168.        # \G 的情况下
  169.        if c == "\002"
  170.          # 生成金钱窗口
  171.          if @gold_window == nil
  172.            @gold_window = Window_Gold.new
  173.            @gold_window.x = 560 - @gold_window.width
  174.            if $game_temp.in_battle
  175.              @gold_window.y = 192
  176.            else
  177.              @gold_window.y = self.y >= 128 ? 32 : 384
  178.            end
  179.            @gold_window.opacity = self.opacity
  180.            @gold_window.back_opacity = self.back_opacity
  181.          end
  182.          # 下面的文字
  183.          next
  184.        end
  185.        # 另起一行文字的情况下
  186.        if c == "\n"
  187.          # 刷新选择项及光标的高
  188.          if y >= $game_temp.choice_start
  189.            @cursor_width = [@cursor_width, x].max
  190.          end
  191.          # y 加 1
  192.          y += 1
  193.          x = 0
  194.          # 移动到选择项的下一行
  195.          if y >= $game_temp.choice_start
  196.            x = 8
  197.          end
  198.          # 下面的文字
  199.          next
  200.        end
  201.        # 描绘文字
  202.        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  203.        # x 为要描绘文字的加法运算
  204.        x += self.contents.text_size(c).width
  205.      end
  206.    end
  207.    # 选择项的情况
  208.    if $game_temp.choice_max > 0
  209.      @item_max = $game_temp.choice_max
  210.      self.active = true
  211.      self.index = 0
  212.    end
  213.    # 输入数值的情况
  214.    if $game_temp.num_input_variable_id > 0
  215.      digits_max = $game_temp.num_input_digits_max
  216.      number = $game_variables[$game_temp.num_input_variable_id]
  217.      @input_number_window = Window_InputNumber.new(digits_max)
  218.      @input_number_window.number = number
  219.      @input_number_window.x = self.x + 8
  220.      @input_number_window.y = self.y + $game_temp.num_input_start * 32
  221.    end
  222. end
  223. end
复制代码


山寨产品龟速制作中……
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-10-3
帖子
25
3
发表于 2007-1-14 03:23:47 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
4
 楼主| 发表于 2007-1-14 03:33:29 | 只看该作者
{/pz}由于定义了Message的刷新方法,应该会有冲突的
…………你可以改一下……{/gg}{/gg}



默认脚本使用比较好……
山寨产品龟速制作中……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

5
发表于 2007-1-14 03:55:22 | 只看该作者
做的不错!
楼主加油!
「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
769
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
6
发表于 2007-1-14 04:07:26 | 只看该作者
我一直都用华文新魏{/hx}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
7
 楼主| 发表于 2007-1-14 05:43:27 | 只看该作者
以下引用轮回者于2007-1-13 19:55:22的发言:

做的不错!
楼主加油!


{/hx}谢谢鼓励,我会加油的{/cy}

山寨产品龟速制作中……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
238 小时
注册时间
2006-10-2
帖子
417
8
 楼主| 发表于 2007-1-17 18:44:28 | 只看该作者


{/wx}有没有人能指点一下怎么写后面的刷新,可以避开和其他对话的脚本冲突么?……

山寨产品龟速制作中……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-4 21:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表