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

Project1

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

关键词统一变色

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-7-11
帖子
96
跳转到指定楼层
1
发表于 2008-8-17 19:39:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv4.逐梦者

ST戰士

梦石
11
星屑
82
在线时间
1155 小时
注册时间
2007-5-5
帖子
3489

第5届短篇游戏比赛季军

2
发表于 2008-8-17 20:01:09 | 只看该作者
http://rpg.blue/web/htm/news667.htm

可以直接使用 HTML 来更换颜色,
例如:#000000 就是黑色。
我是昵称 JIN 的迅雷進,是一位以日本特攝講解爲主的馬來西亞 YouTuber。

歡迎瀏覽我的頻道:JinRaiXin -迅雷進-
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-7-11
帖子
96
3
 楼主| 发表于 2008-8-17 20:27:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39905
在线时间
5796 小时
注册时间
2006-11-10
帖子
6671
4
发表于 2008-8-17 23:40:13 | 只看该作者
禾老大的增补功能范例一头

http://rpg.blue/viewthread.php?tid=88854
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-7-11
帖子
96
5
 楼主| 发表于 2008-8-18 01:40:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-13
帖子
126
6
发表于 2008-8-18 03:21:12 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

7
发表于 2008-8-18 04:33:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-7-11
帖子
96
8
 楼主| 发表于 2008-8-19 16:37:27 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3133
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

9
发表于 2008-8-19 17:19:28 | 只看该作者
我只是想说……XP的制作人员们写那么长段的refresh你们不累吗……
改是改完了,和其他对话脚本冲突率99%
  1. #==============================================================================
  2. # 统一定义对话关键词颜色 by 沉影不器
  3. #------------------------------------------------------------------------------
  4. # 功能描述:在游戏对话中,经常为了突出某个关键词而用特定颜色描绘该词
  5. #           (这个关键词可能是某个人名地名或者物品、武器名之类)
  6. #           该脚本允许统一定义这些关键词显示的颜色
  7. #           比如“金箍棒”固定显示黄色、“紫水晶”固定显示紫色之类
  8. #
  9. # 使用说明:① 从脚本第22行开始定义各个关键词与颜色的对应关系,格式为
  10. #              颜色代码=>["显示为此颜色的关键词1", "显示为此颜色的关键词2"...]
  11. #              颜色代码是Window_Base中text_color(n)的取色代码
  12. #              例:text_color(0) 表示普通文字色
  13. #           ② 特殊情况下让某个已定义的关键词失效的办法:
  14. #              在对话中把关键词用@格开        例:金@箍棒
  15. #           ③ 显示@符号的方法是连续两个@     例:@@
  16. #           ④ 根据snstar2006建议新增: 允许用户自定义关键词颜色,格式为
  17. #              颜色代码(从32号开始)=>[红,绿,蓝[,不透明度]]
  18. #              自定义的颜色从脚本第30行开始
  19. #------------------------------------------------------------------------------
  20. #         注:不要定义包含转义字符(串)的关键词,理由不需要展开说明吧?
  21. #==============================================================================
  22.   KEY_WORDS = {                         # 定义各个关键词与颜色对应关系
  23.   1 =>["凤翅镏金铛","宇文成都"],
  24.   2 =>["紫金王朝","科比"],
  25.   3 =>["奥运","绿色"],
  26.   4 =>["选择项也支持关键词变色"],
  27.   32=>["自定义关键词颜色"],
  28.   }
  29.   
  30.   CUSTOM_COLOR = {                      # 自定义关键词的颜色
  31.   32=>[0, 0, 0],
  32.   33=>[255, 64, 64, 128]
  33.   }
  34.   
  35. #==============================================================================
  36. # ■ Window_Base
  37. #==============================================================================
  38. class Window_Base < Window
  39.   #--------------------------------------------------------------------------
  40.   # ● 获取文字颜色色
  41.   #     n : 文字颜色编号 (0~31)
  42.   #--------------------------------------------------------------------------
  43.   alias old_t text_color
  44.   def text_color(n)
  45.     # 转移取色器
  46.     return text_color_plus(n) if n > 31
  47.     old_t(n)
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ◎ 用户定义的取色器
  51.   #     n : 文字颜色编号 (32~)
  52.   #--------------------------------------------------------------------------
  53.   def text_color_plus(n)
  54.     color_arg = CUSTOM_COLOR[n]
  55.     # 超过已定义范围时,返回普通颜色
  56.     return normal_color if color_arg == nil
  57.     alpha = color_arg[3] == nil ? 255 : color_arg[3]
  58.     color = Color.new(color_arg[0], color_arg[1], color_arg[2], alpha)
  59.     return color
  60.   end
  61. end

  62. #==============================================================================
  63. # ■ Window_Message
  64. #==============================================================================
  65. class Window_Message < Window_Selectable
  66.   def refresh
  67.     self.contents.clear
  68.     self.contents.font.color = normal_color
  69.     x = y = 0
  70.     @cursor_width = 0
  71.     # 到选择项的下一行字
  72.     if $game_temp.choice_start == 0
  73.       x = 8
  74.     end
  75.     # 有等待显示的文字的情况下
  76.     if $game_temp.message_text != nil
  77.       text = $game_temp.message_text
  78.       @text = text
  79.       # 限制文字处理
  80.       begin
  81.         last_text = text.clone
  82.         text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
  83.       end until text == last_text
  84.       text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
  85.         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  86.       end
  87.       # 为了方便、将 "\\\\" 变换为 "\000"
  88.       text.gsub!(/\\\\/) { "\000" }
  89.       # "\\C" 变为 "\001" 、"\\G" 变为 "\002"
  90.       text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
  91.       text.gsub!(/\\[Gg]/) { "\002" }
  92.       #############################
  93.       convert_keywords_color
  94.       ###############################
  95.       # c 获取 1 个字 (如果不能取得文字就循环)
  96.       while ((c = text.slice!(/./m)) != nil)
  97.         # \\ 的情况下
  98.         if c == "\000"
  99.           # 还原为本来的文字
  100.           c = "\\"
  101.         end
  102.         # \C[n] 的情况下
  103.         if c == "\001"
  104.           # 更改文字色
  105.           text.sub!(/\[([0-9]+)\]/, "")
  106.           color = $1.to_i
  107.           if color >= 0 and color <= 7
  108.             self.contents.font.color = text_color(color)
  109.           end
  110.           # 下面的文字
  111.           next
  112.         end
  113.         # \G 的情况下
  114.         if c == "\002"
  115.           # 生成金钱窗口
  116.           if @gold_window == nil
  117.             @gold_window = Window_Gold.new
  118.             @gold_window.x = 560 - @gold_window.width
  119.             if $game_temp.in_battle
  120.               @gold_window.y = 192
  121.             else
  122.               @gold_window.y = self.y >= 128 ? 32 : 384
  123.             end
  124.             @gold_window.opacity = self.opacity
  125.             @gold_window.back_opacity = self.back_opacity
  126.           end
  127.           # 下面的文字
  128.           next
  129.         end
  130.         # 另起一行文字的情况下
  131.         if c == "\n"
  132.           # 刷新选择项及光标的高
  133.           if y >= $game_temp.choice_start
  134.             @cursor_width = [@cursor_width, x].max
  135.           end
  136.           # y 加 1
  137.           y += 1
  138.           x = 0
  139.           # 移动到选择项的下一行
  140.           if y >= $game_temp.choice_start
  141.             x = 8
  142.           end
  143.           # 下面的文字
  144.           next
  145.         end
  146.         # 描绘文字
  147.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  148.         # x 为要描绘文字的加法运算
  149.         x += self.contents.text_size(c).width
  150.       end
  151.     end
  152.     # 选择项的情况
  153.     if $game_temp.choice_max > 0
  154.       @item_max = $game_temp.choice_max
  155.       self.active = true
  156.       self.index = 0
  157.     end
  158.     # 输入数值的情况
  159.     if $game_temp.num_input_variable_id > 0
  160.       digits_max = $game_temp.num_input_digits_max
  161.       number = $game_variables[$game_temp.num_input_variable_id]
  162.       @input_number_window = Window_InputNumber.new(digits_max)
  163.       @input_number_window.number = number
  164.       @input_number_window.x = self.x + 8
  165.       @input_number_window.y = self.y + $game_temp.num_input_start * 32
  166.     end
  167.   end
  168.   
  169.   #--------------------------------------------------------------------------
  170.   # ◎ 自定义关键词颜色
  171.   #--------------------------------------------------------------------------
  172.   def convert_keywords_color
  173.     for key in KEY_WORDS.keys
  174.       for key_words in KEY_WORDS[key]
  175.         @text.gsub!(key_words) {"\x01[#{key}]" + key_words + "\x01[0]"}
  176.       end
  177.     end
  178.     # 如果存在冲突,基本上就是此处了
  179.     # 把"\#x"任改一串基本不用的字符串就行
  180.     @text.gsub!(/@@/) { "\#x" }
  181.     @text.gsub!(/@/) { "" }
  182.     @text.gsub!("\#x") { "@" }
  183.   end
  184. end
复制代码
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
4 小时
注册时间
2008-7-11
帖子
96
10
 楼主| 发表于 2008-8-19 20:53:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-23 01:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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