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

Project1

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

[已经解决] 自定義顏色 . . .

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
9058
在线时间
1860 小时
注册时间
2010-7-18
帖子
974
跳转到指定楼层
1
发表于 2011-8-20 01:01:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

VX怎麼自定義顏色

我在windows_Base里找不到同XP的設定字型顏色的寫法

只有用數字判定哪種文字 , 咱要的是改顏色阿~~~~~~

咱要的是黑色 , 要怎麼設定 ?????????????????????????

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60834
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

2
发表于 2011-8-20 01:10:55 | 只看该作者
本帖最后由 orzfly 于 2011-8-20 02:30 编辑

修改 Graphics/System/Window (如果找不到就在 RM 里面素材管理器里从 RTP 里导出来) 右下角的颜色块。
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

3
发表于 2011-8-20 02:24:32 | 只看该作者
  1. self.contents.font.color = Color.new 0, 0, 0
复制代码
回复

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
736
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

4
发表于 2011-8-20 03:16:19 | 只看该作者
本帖最后由 各种压力的猫君 于 2011-8-20 03:26 编辑

修改Window_Message脚本,在约212-229行加入
@text.gsub!(/\\F\[C\#([a-f0-9]+)\]/i) {"\x10[#{$1}]"}

如下:
  1.   #--------------------------------------------------------------------------
  2.   # ● 特殊文字变换
  3.   #--------------------------------------------------------------------------
  4.   def convert_special_characters
  5.     @text.gsub!(/\\F\[C\#([a-f0-9]+)\]/i) {"\x10[#{$1}]"}
  6.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  7.     @text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
  8.     @text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
  9.     @text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
  10.     @text.gsub!(/\\G/)              { "\x02" }
  11.     @text.gsub!(/\\\./)             { "\x03" }
  12.     @text.gsub!(/\\\|/)             { "\x04" }
  13.     @text.gsub!(/\\!/)              { "\x05" }
  14.     @text.gsub!(/\\>/)              { "\x06" }
  15.     @text.gsub!(/\\</)              { "\x07" }
  16.     @text.gsub!(/\\\^/)             { "\x08" }
  17.     @text.gsub!(/\\\\/)             { "\\" }
  18.   end
复制代码
然后约283-309行加入
when "\x10"
        @text.sub!(/\[(\w+)\]/, "")
        r,g,b = $1.scan(/../)
        contents.font.color = Color.new(r.hex, g.hex, b.hex)

如下:
  1.       when "\x10"
  2.         @text.sub!(/\[(\w+)\]/, "")
  3.         r,g,b = $1.scan(/../)
  4.         contents.font.color = Color.new(r.hex, g.hex, b.hex)
  5.       when "\x01"                       # \C[n]  (更改文字色)
  6.         @text.sub!(/\[([0-9]+)\]/, "")
  7.         contents.font.color = text_color($1.to_i)
  8.         next
  9.       when "\x02"                       # \G  (显示所持金)
  10.         @gold_window.refresh
  11.         @gold_window.open
  12.       when "\x03"                       # \.  (等待 1/4 秒)
  13.         @wait_count = 15
  14.         break
  15.       when "\x04"                       # \|  (等待 1 秒)
  16.         @wait_count = 60
  17.         break
  18.       when "\x05"                       # \!  (等待输入)
  19.         self.pause = true
  20.         break
  21.       when "\x06"                       # \>  (瞬间显示 ON)
  22.         @line_show_fast = true
  23.       when "\x07"                       # \<  (瞬间显示 OFF)
  24.         @line_show_fast = false
  25.       when "\x08"                       # \^  (不等待输入)
  26.         @pause_skip = true
  27.       else                              # 普通文字
复制代码
然后显示文章的时候可以用\f[c#FF0000]的16进制表达法来更换颜色。

(提取自沉影不器的对话框加强版_改)





如果你没改过默认的Window_Message就复制下面的代码替换好了:
  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!(/\\F\[C\#([a-f0-9]+)\]/i) {"\x10[#{$1}]"}
  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.   # ● 设定窗口背景和位置
  230.   #--------------------------------------------------------------------------
  231.   def reset_window
  232.     @background = $game_message.background
  233.     @position = $game_message.position
  234.     if @background == 0   # 一般窗口
  235.       self.opacity = 255
  236.     else                  # 背景变暗并透明化
  237.       self.opacity = 0
  238.     end
  239.     case @position
  240.     when 0  # 上
  241.       self.y = 0
  242.       @gold_window.y = 360
  243.     when 1  # 中
  244.       self.y = 144
  245.       @gold_window.y = 0
  246.     when 2  # 下
  247.       self.y = 288
  248.       @gold_window.y = 0
  249.     end
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 结束文章显示
  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.   # ● 更新文章显示
  266.   #--------------------------------------------------------------------------
  267.   def update_message
  268.     loop do
  269.       c = @text.slice!(/./m)            # 获取一个文字
  270.       case c
  271.       when nil                          # 无法获取文字时
  272.         finish_message                  # 结束文章更新
  273.         break
  274.       when "\x00"                       # 新行
  275.         new_line
  276.         if @line_count >= MAX_LINE      # 当行数已至最大行数
  277.           unless @text.empty?           # 并还有有等待显示的文字时
  278.             self.pause = true           # 等待输入
  279.             break
  280.           end
  281.         end
  282.       when "\x10"
  283.         @text.sub!(/\[(\w+)\]/, "")
  284.         r,g,b = $1.scan(/../)
  285.         contents.font.color = Color.new(r.hex, g.hex, b.hex)
  286.       when "\x01"                       # \C[n](文字变色)
  287.         @text.sub!(/\[([0-9]+)\]/, "")
  288.         contents.font.color = text_color($1.to_i)
  289.         next
  290.       when "\x02"                       # \G  (显示金钱)
  291.         @gold_window.refresh
  292.         @gold_window.open
  293.       when "\x03"                       # \.  (等待四分之一秒)
  294.         @wait_count = 15
  295.         break
  296.       when "\x04"                       # \|  (等待一秒)
  297.         @wait_count = 60
  298.         break
  299.       when "\x05"                       # \!  (等待输入)
  300.         self.pause = true
  301.         break
  302.       when "\x06"                       # \>  (瞬间表示on)
  303.         @line_show_fast = true
  304.       when "\x07"                       # \<  (瞬间表示off)
  305.         @line_show_fast = false
  306.       when "\x08"                       # \^  (不等待输入)
  307.         @pause_skip = true
  308.       else                              # 一般文字
  309.         contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
  310.         c_width = contents.text_size(c).width
  311.         @contents_x += c_width
  312.       end
  313.       break unless @show_fast or @line_show_fast
  314.     end
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ● 结束文章更新
  318.   #--------------------------------------------------------------------------
  319.   def finish_message
  320.     if $game_message.choice_max > 0
  321.       start_choice
  322.     elsif $game_message.num_input_variable_id > 0
  323.       start_number_input
  324.     elsif @pause_skip
  325.       terminate_message
  326.     else
  327.       self.pause = true
  328.     end
  329.     @wait_count = 10
  330.     @text = nil
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ● 开始选择项
  334.   #--------------------------------------------------------------------------
  335.   def start_choice
  336.     self.active = true
  337.     self.index = 0
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● 开始数值输入
  341.   #--------------------------------------------------------------------------
  342.   def start_number_input
  343.     digits_max = $game_message.num_input_digits_max
  344.     number = $game_variables[$game_message.num_input_variable_id]
  345.     @number_input_window.digits_max = digits_max
  346.     @number_input_window.number = number
  347.     if $game_message.face_name.empty?
  348.       @number_input_window.x = x
  349.     else
  350.       @number_input_window.x = x + 112
  351.     end
  352.     @number_input_window.y = y + @contents_y
  353.     @number_input_window.active = true
  354.     @number_input_window.visible = true
  355.     @number_input_window.update
  356.   end
  357.   #--------------------------------------------------------------------------
  358.   # ● 刷新光标
  359.   #--------------------------------------------------------------------------
  360.   def update_cursor
  361.     if @index >= 0
  362.       x = $game_message.face_name.empty? ? 0 : 112
  363.       y = ($game_message.choice_start + @index) * WLH
  364.       self.cursor_rect.set(x, y, contents.width - x, WLH)
  365.     else
  366.       self.cursor_rect.empty
  367.     end
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ● 等待输入处理
  371.   #--------------------------------------------------------------------------
  372.   def input_pause
  373.     if Input.trigger?(Input::B) or Input.trigger?(Input::C)
  374.       self.pause = false
  375.       if @text != nil and not @text.empty?
  376.         new_page if @line_count >= MAX_LINE
  377.       else
  378.         terminate_message
  379.       end
  380.     end
  381.   end
  382.   #--------------------------------------------------------------------------
  383.   # ● 选择项处理
  384.   #--------------------------------------------------------------------------
  385.   def input_choice
  386.     if Input.trigger?(Input::B)
  387.       if $game_message.choice_cancel_type > 0
  388.         Sound.play_cancel
  389.         $game_message.choice_proc.call($game_message.choice_cancel_type - 1)
  390.         terminate_message
  391.       end
  392.     elsif Input.trigger?(Input::C)
  393.       Sound.play_decision
  394.       $game_message.choice_proc.call(self.index)
  395.       terminate_message
  396.     end
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 名称输入处理
  400.   #--------------------------------------------------------------------------
  401.   def input_number
  402.     if Input.trigger?(Input::C)
  403.       Sound.play_decision
  404.       $game_variables[$game_message.num_input_variable_id] =
  405.         @number_input_window.number
  406.       $game_map.need_refresh = true
  407.       terminate_message
  408.     end
  409.   end
  410. end
复制代码

点评

非显示文章的就用版主给的 self.contents.font.color = Color.new 0, 0, 0 不就好了 =-=  发表于 2011-8-20 04:56
话说又想起来 你这个只能让那啥 显示文章里面 用黑色的字……  发表于 2011-8-20 04:30
喂喂评分理由写错了吧好人君orz =-=  发表于 2011-8-20 03:35
:P 已添加  发表于 2011-8-20 03:23
处理\x10的东西呢……  发表于 2011-8-20 03:20

评分

参与人数 1星屑 +14 收起 理由
orzfly + 14 恶意灌水

查看全部评分

回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9058
在线时间
1860 小时
注册时间
2010-7-18
帖子
974
5
 楼主| 发表于 2011-8-20 13:00:44 | 只看该作者

汗 . . . VX咋這麼複雜
XP簡單多了= =
回复

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
686
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

6
发表于 2011-8-21 19:48:13 | 只看该作者
咦,忧雪姐的好奇怪。
不应该是Color.new(红, 绿, 蓝, 不透明度)嘛?

点评

插一句,方法的参数其实不用括号也行,例如 p 10 就是没加括号~  发表于 2011-8-29 20:20
好的谢谢前辈。  发表于 2011-8-21 20:01
可以试试看不带括号的版本是个什么结果……  发表于 2011-8-21 19:58
大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 17:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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