查看: 4253|回复: 14

[已经解决] 我要死了 弄了一天都没弄出来 怎么改变字体颜色

[复制链接]
梦石
0
星屑
50
在线时间
53 小时
注册时间
2008-9-14
回帖
21
发表于 2016-8-28 16:22:24 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 cvb666 于 2016-8-28 18:34 编辑

点击展开/收起 module ActorQuality
  #总评分级次
  QUALITY_AMOUNT = 8
  #各级次显示字母
  QUALITY_LETTER = [ "D", "C", "B", "A", "S", "SS", "SSS", "SSSS"]
  #每级评分
  QUALITY_MARK = [1, 2, 3, 4, 5, 6, 7, 8]
  #分母
  QUALITY_DENOMINATOR = 1000
  #各级次所对应分子,配合分母就是概率
  #QUALITY_MOLECULAR = [1, 3, 7, 15, 31, 15, 7, 3, 1]
  QUALITY_MOLECULAR = [180, 80, 60, 16, 6, 3, 2, 1]
  #各级次对应成长率
  QUALITY_CHANGE = [0.25, 0.33, 0.5, 0.85, 1.5, 2.3, 3, 4]
  #是否显示
  QUALITY_SHOW = false
end

class Game_Actor < Game_Battler
  
  attr_accessor :tan_quality_param#各属性级次数组
  attr_accessor :tan_all_quality_param#总评分
  attr_accessor :tan_game_actor_temp#临时变量
  
  #--------------------------------------------------------------------------
  # ● 属性级次初始化
  #--------------------------------------------------------------------------
  def init_tan_quality_param
    @tan_quality_param = [0] * 8#各属性级次数组初始化
    @tan_all_quality_param = 0#总评分初始化
    @tan_game_actor_temp = [0] * ActorQuality::QUALITY_AMOUNT#临时变量初始化
    @tan_game_actor_temp.count.times {|i|
      if i == 0
        @tan_game_actor_temp = ActorQuality::QUALITY_MOLECULAR
      else
        @tan_game_actor_temp = @tan_game_actor_temp[i-1] + ActorQuality::QUALITY_MOLECULAR
      end
    }
    8.times {|i|
      v = rand(ActorQuality::QUALITY_DENOMINATOR)
      @tan_game_actor_temp.each_with_index {|i2, i3|
        if v < i2
          @tan_quality_param = i3
          break
        end
      }
      @tan_all_quality_param += ActorQuality::QUALITY_MARK[@tan_quality_param]
    }
    init_tan_all_quality_param
    self.hp = self.mhp
    self.mp = self.mmp
  end
  #--------------------------------------------------------------------------
  # ● 计算总评分,并将总评分转化成评价
  #--------------------------------------------------------------------------
  def init_tan_all_quality_param
    @tan_all_quality_param = (@tan_all_quality_param / 8.0).round
    ActorQuality::QUALITY_MARK.count.times {|i|
      if @tan_all_quality_param <= ActorQuality::QUALITY_MARK
        @tan_all_quality_param = i
        break
      end
    }
  end
  #--------------------------------------------------------------------------
  # ● 设置(人物初始化重写)
  #--------------------------------------------------------------------------
  alias tan_quality_setup setup
  def setup(actor_id)
    tan_quality_setup(actor_id)
    init_tan_quality_param
  end
  #--------------------------------------------------------------------------
  # ● 获取普通能力的基础值(重写)
  #--------------------------------------------------------------------------
  alias tan_quality_param_base param_base
  def param_base(param_id)
    v = tan_quality_param_base(param_id)
    i = @tan_quality_param[param_id] if @tan_quality_param
    v = v * ActorQuality::QUALITY_CHANGE.to_f if i
    return v.to_i
  end
  #--------------------------------------------------------------------------
  # ● 获取普通能力的最大值(为了防止属性爆表后还是999不能突破1000,特意修改该方法)
  #--------------------------------------------------------------------------
  def param_max(param_id)
    return 99999
  end
end

#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  状态画面中,显示角色基本信息的窗口。(新增评分信息)
#==============================================================================
class Window_Status < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 绘制基本信息(增加HP、MP评分以及总评分)
  #--------------------------------------------------------------------------
  alias draw_basic_info_quality draw_basic_info
  def draw_basic_info(x, y)
    draw_basic_info_quality(x, y)
    s = ActorQuality::QUALITY_LETTER[@actor.tan_all_quality_param] + "级"
    draw_text(x + 45, y + line_height * 0, 108, line_height, s, 2)
    s = ActorQuality::QUALITY_LETTER[@actor.tan_quality_param[0]]
    draw_text(x + 120, y + line_height * 2, 36, line_height, s, 2)
    s = ActorQuality::QUALITY_LETTER[@actor.tan_quality_param[1]]
    draw_text(x + 120, y + line_height * 3, 36, line_height, s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 绘制能力值(增加其他属性评分)
  #--------------------------------------------------------------------------
  alias draw_parameters_actor_quality draw_parameters
  def draw_parameters(x, y)
    draw_parameters_actor_quality(x, y)
    6.times {|i|
      s = ActorQuality::QUALITY_LETTER[@actor.tan_quality_param[i + 2]]
      change_color(normal_color)
      draw_text(x + 200, y + line_height * i, 36, line_height, s, 2)
    }
  end
end


如何才能把 #各级次显示字母
  QUALITY_LETTER = [ "D", "C", "B", "A", "S", "SS", "SSS", "SSSS"]
改变颜色啊?????????????

QUALITY_LETTER = [ '\C[1]D', "C", "B", "A", "S", "SS", "SSS", "SSSS"]
这个办法行不通
YY图片20160828174936.jpg

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2016-8-28 16:29:02 | 显示全部楼层
本帖最后由 百里_飞柳 于 2016-8-28 17:55 编辑

推荐附上几张脚本原效果图,而且把脚本放到code框里(如果会toggle折叠就更好了)

[pre lang="ruby"]这里是code框[/pre]

这是toggle框标题这是toggle框内容
回复

使用道具 举报

梦石
0
星屑
50
在线时间
53 小时
注册时间
2008-9-14
回帖
21
 楼主| 发表于 2016-8-28 17:47:57 | 显示全部楼层
百里_飞柳 发表于 2016-8-28 16:29
推荐附上几张脚本原效果图,而且把脚本放到code框里(如果会toggle折叠就更好了) ...

code框是什么 toggle是什么我才刚学的 我什么都不懂啊`
回复

使用道具 举报

梦石
0
星屑
9687
在线时间
3224 小时
注册时间
2011-3-24
回帖
616

开拓者

发表于 2016-8-28 17:58:40 | 显示全部楼层
draw_basic_info这个函数里
在draw_text之前 添加
self.contents.font.color = Color.new(R, G, B)
R G B的范围在0-255 填上你要的颜色
别忘了最后把颜色改回默认的normal_color
>>→Lanza Games 2020←<<
Lanza Schneider
浪子心,孤星梦永远流浪……
~不会放弃,我的精力永远充沛~
>>>>>Lanza Adventure<<<<<
>>>>>Lanza的新年派对!<<<<<
>>>>>Lanza的口袋心脏病!<<<<<
回复

使用道具 举报

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2016-8-28 18:02:37 | 显示全部楼层
[pre lang="ruby"]#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  状态画面中,显示角色基本信息的窗口。(新增评分信息)
#==============================================================================
class Window_Status < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 绘制基本信息(增加HP、MP评分以及总评分)
  #--------------------------------------------------------------------------
  alias draw_basic_info_quality draw_basic_info
  def draw_basic_info(x, y)
    draw_basic_info_quality(x, y)
    s = ActorQuality::QUALITY_LETTER[@actor.tan_all_quality_param] + "级"
    color = Color.new(255,0,0) #此处修改等级后的字母颜色 RGB模式
    change_color(color)
    draw_text(x + 45, y + line_height * 0, 108, line_height, s, 2)
    s = ActorQuality::QUALITY_LETTER[@actor.tan_quality_param[0]]

    color = Color.new(0,0,255) #此处修改HP后的字母颜色 RGB模式
    change_color(color)
    draw_text(x + 120, y + line_height * 2, 36, line_height, s, 2)

    s = ActorQuality::QUALITY_LETTER[@actor.tan_quality_param[1]]
    color = Color.new(0,0,255) #此处修改MP后的字母颜色 RGB模式
    change_color(color)
    draw_text(x + 120, y + line_height * 3, 36, line_height, s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 绘制能力值(增加其他属性评分)
  #--------------------------------------------------------------------------
  alias draw_parameters_actor_quality draw_parameters
  def draw_parameters(x, y)
    draw_parameters_actor_quality(x, y)
    6.times {|i|
      s = ActorQuality::QUALITY_LETTER[@actor.tan_quality_param[i + 2]]
      color = Color.new(0,255,0) #此处修改属性后的所有字母颜色 RGB模式
      change_color(color)
      #change_color(normal_color)
      draw_text(x + 200, y + line_height * i, 36, line_height, s, 2)
    }
    change_color(normal_color)
  end
end
[/pre]

未测试。

点评

这个需要把原脚本最后那些同样的删掉,再复制过去的;不过看样子楼主应该已经可以解决问题了,我就不更新了。  发表于 2016-8-28 19:37
回复

使用道具 举报

梦石
0
星屑
50
在线时间
53 小时
注册时间
2008-9-14
回帖
21
 楼主| 发表于 2016-8-28 18:11:41 | 显示全部楼层
Mr.Jin 发表于 2016-8-28 17:58
draw_basic_info这个函数里
在draw_text之前 添加
self.contents.font.color = Color.new(R, G, B)

你这个是整体改颜色 我是想C是绿色 B是蓝色A是紫色 S是橙色这样改`````
回复

使用道具 举报

梦石
0
星屑
50
在线时间
53 小时
注册时间
2008-9-14
回帖
21
 楼主| 发表于 2016-8-28 18:16:32 | 显示全部楼层
百里_飞柳 发表于 2016-8-28 18:02
#==============================================================================
# ■ Window_Status
# ...

测试了 点状态就报错``
回复

使用道具 举报

梦石
0
星屑
9687
在线时间
3224 小时
注册时间
2011-3-24
回帖
616

开拓者

发表于 2016-8-28 18:21:55 | 显示全部楼层
cvb666 发表于 2016-8-28 18:11
你这个是整体改颜色 我是想C是绿色 B是蓝色A是紫色 S是橙色这样改`````

那你变通一下
  1. colors = [
  2.         Color.new(64, 64, 64),
  3.         Color.new(0, 255, 0),
  4.         Color.new(0, 128, 160),
  5.         Color.new(192, 0, 192),
  6.         Color.new(255, 97, 0)
  7. ]
  8. s = ActorQuality::QUALITY_LETTER[@actor.tan_all_quality_param]
  9. self.contents.font.color = colors[QUALITY_LETTER.index(s)]
复制代码


类似这样的,注意每一次s赋值后都加一句变颜色的语句
>>→Lanza Games 2020←<<
Lanza Schneider
浪子心,孤星梦永远流浪……
~不会放弃,我的精力永远充沛~
>>>>>Lanza Adventure<<<<<
>>>>>Lanza的新年派对!<<<<<
>>>>>Lanza的口袋心脏病!<<<<<
回复

使用道具 举报

梦石
0
星屑
50
在线时间
53 小时
注册时间
2008-9-14
回帖
21
 楼主| 发表于 2016-8-28 18:32:22 | 显示全部楼层

完全不知道你说的是啥意思 大哥你能说的通俗易懂一点吗?你这代码我要放在什么地方我都不知道 我只会复制代码 不会看代码 你这个代码复制进去还是会报错`   还有  注意每一次s赋值后都加一句变颜色的语句 是 什么意思

点评

算了 你把工程传上来 我给你改  发表于 2016-8-28 18:34
回复

使用道具 举报

梦石
0
星屑
50
在线时间
53 小时
注册时间
2008-9-14
回帖
21
 楼主| 发表于 2016-8-28 18:55:09 | 显示全部楼层
http://pan.baidu.com/s/1qY8IDcC 超过2M不能上传 我放到我的网盘了 ```
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部