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

Project1

 找回密码
 注册会员
搜索

怎么在战斗中设置一种特殊伤害的颜色?

查看数: 1762 | 评论数: 5 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-4-13 21:05

正文摘要:

例如我想水属性伤害为蓝色,火属性伤害为红色,等等、、、可以实现吗?

回复

吉井明久 发表于 2012-4-19 12:50:15
手机不便所以连贴了望谅解(帖子太长编辑会破坏掉…)

在 Game_Battler 里面找到 def elements_correct 换成这个
  1.   def elements_correct(element_set)
  2.     # 無屬性的情況
  3.     if element_set == []
  4.       # 返回 100
  5.       return 100
  6.     end
  7.     # 返回提供的屬性中最弱的屬性
  8.     # ※定義 element_rate 的方法是由本身、 Game_Actor 類別和 Game_Enemy 類別
  9.     #   所定義。
  10.     weakest = -100
  11.     for i in element_set
  12.       x = self.element_rate(i)
  13.       if x > weakest
  14.         weakest = x
  15.         self.damage_color = ELEMENTS_DAMAGE_COLOR[i]
  16.       end
  17.     end
  18.     return weakest
  19.   end
复制代码


然后开个新页面放接下来的配置…
  1. class Game_Battler
  2.   ELEMENTS_DAMAGE_COLOR = {
  3.     1 => Color.new(255, 0, 0, 255),
  4.     2 => Color.new(255, 255, 0, 255),
  5.     3 => Color.new(0, 0, 255, 255),
  6.   }
  7. end
复制代码

前面是属性 ID,切记不要有前导零(001 写成 1 才可以)后面就是颜色值了,RGBA 红绿蓝透明。

代码全手写未测试,因此如果遇到问题请及时反馈并告知错误所在行及其内容。

因为木有电脑又想当好人…

点评

好滴,待我去测试。  发表于 2012-4-19 13:08

评分

参与人数 1星屑 +32 收起 理由
lsu666666 + 32 大好人 捏捏!~

查看全部评分

吉井明久 发表于 2012-4-19 06:35:03
本帖最后由 吉井明久 于 2012-4-19 13:28 编辑

楼主君您说的是伤害数字的颜色(默认是白色)还是击中后闪烁的颜色(默认是红色)?

控制这些动画的代码位于 RPG::Sprite 这个内部模块中。代码可以从帮助文件或者 http://rpg.blue/manual/rpgxp/rgss/gc_rpg_sprite.html 获得。可以把这个代码调节到脚本编辑器 Main 前然后进行修改。
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     def damage(value, critical, color = nil)
  4.       dispose_damage
  5.       if value.is_a?(Numeric)
  6.         damage_string = value.abs.to_s
  7.       else
  8.         damage_string = value.to_s
  9.       end
  10.       bitmap = Bitmap.new(160, 48)
  11.       bitmap.font.name = "Arial Black"
  12.       bitmap.font.size = 32
  13.       bitmap.font.color.set(0, 0, 0)
  14.       bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
  15.       bitmap.draw_text( 1, 12-1, 160, 36, damage_string, 1)
  16.       bitmap.draw_text(-1, 12 1, 160, 36, damage_string, 1)
  17.       bitmap.draw_text( 1, 12 1, 160, 36, damage_string, 1)
  18.       if color
  19.         bitmap.font.color = color.clone
  20.       elsif value.is_a?(Numeric) and value <  0
  21.         bitmap.font.color.set(176, 255, 144)
  22.       else
  23.         bitmap.font.color.set(255, 255, 255)
  24.       end
  25.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  26.       if critical
  27.         bitmap.font.size = 20
  28.         bitmap.font.color.set(0, 0, 0)
  29.         bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
  30.         bitmap.draw_text( 1, -1, 160, 20, "CRITICAL", 1)
  31.         bitmap.draw_text(-1,  1, 160, 20, "CRITICAL", 1)
  32.         bitmap.draw_text( 1,  1, 160, 20, "CRITICAL", 1)
  33.         bitmap.font.color.set(255, 255, 255)
  34.         bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
  35.       end
  36.       @_damage_sprite = ::Sprite.new(self.viewport)
  37.       @_damage_sprite.bitmap = bitmap
  38.       @_damage_sprite.ox = 80
  39.       @_damage_sprite.oy = 20
  40.       @_damage_sprite.x = self.x
  41.       @_damage_sprite.y = self.y - self.oy / 2
  42.       @_damage_sprite.z = 3000
  43.       @_damage_duration = 40
  44.     end
  45.   end
  46. end
复制代码
首先加入这段脚本然后就支持改颜色了。但是修改颜色还需要修改别处的代码。

可以在 Sprite_Battler 里面找到这段
  1. #傷害
  2. if @battler.damage_pop
  3.   damage(@battler.damage,@battler.critical)
  4.   @battler.damage=nil
  5.   @battler.critical=false
  6.   @battler.damage_pop=false
  7. end
复制代码
将其改成
  1. #傷害
  2. if @battler.damage_pop
  3.   damage(@battler.damage,@battler.critical, @battler.damage_color)
  4.   @battler.damage=nil
  5.   @battler.critical=false
  6.   @battler.damage_color=nil
  7.   @battler.damage_pop=false
  8. end
复制代码
接下去在 Game_Battler 里面
找到一堆 attr_accessor,在其下面加上
  1. attr_accessor :damage_color
复制代码
在这里的 def initialize 里,加上
  1. @damage_color = nil
复制代码
现在接下来就需要修改伤害计算的部分了。这部分中午再说。现在我要出去。���������

点评

这样连伤害美化那个脚本我都可以去掉了对不对。  发表于 2012-4-19 13:39
非常感谢!  发表于 2012-4-19 13:39
第15,16行是12-1,不是12 1  发表于 2012-4-19 13:34
神触啊!  发表于 2012-4-19 12:14
拍拍手.......  发表于 2012-4-19 06:49
he11120 发表于 2012-4-19 02:41:05
人工顶起,有人帮忙没?(貌似这个不能实现?)

点评

应该是的。话说可以试试这个字体 Georgia  发表于 2012-4-19 13:42
那几个应该是加号 在下面Cirtical那里也有这个符号漏了(抱歉不知道为什么手机发不出加号  发表于 2012-4-19 13:39
几处大写的"CRTICAL"可以自由发挥 不过要都一样噢  发表于 2012-4-19 13:37
bitmap.font.color.set(176, 255, 144)是回复时的颜色 bitmap.font.color.set(255, 255, 255) 是伤害默认颜色  发表于 2012-4-19 13:36
其实第一段代码里bitmap.font.name = "Arial Black"是字体 bitmap.font.size = 32是大小 这是默认的 可以自由发挥哟。  发表于 2012-4-19 13:35
步兵中尉 发表于 2012-4-14 12:29:25
你说的颜色是击中目标后目标闪的颜色还是之后一直闪那个颜色?

点评

这个我无能为力  发表于 2012-4-14 15:27
伤害数字  发表于 2012-4-14 15:15
目测是在说伤害数字……  发表于 2012-4-14 12:51

评分

参与人数 1星屑 +120 收起 理由
钢铁列兵 + 120

查看全部评分

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

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

GMT+8, 2024-11-30 13:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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