Project1

标题: 怎么在战斗中设置一种特殊伤害的颜色? [打印本页]

作者: he11120    时间: 2012-4-13 21:05
标题: 怎么在战斗中设置一种特殊伤害的颜色?
例如我想水属性伤害为蓝色,火属性伤害为红色,等等、、、可以实现吗?dsu_plus_rewardpost_czw
作者: 步兵中尉    时间: 2012-4-14 12:29
你说的颜色是击中目标后目标闪的颜色还是之后一直闪那个颜色?
作者: he11120    时间: 2012-4-19 02:41
人工顶起,有人帮忙没?(貌似这个不能实现?)
作者: 吉井明久    时间: 2012-4-19 06:35
本帖最后由 吉井明久 于 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 12:50
手机不便所以连贴了望谅解(帖子太长编辑会破坏掉…)

在 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 红绿蓝透明。

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

因为木有电脑又想当好人…
作者: he11120    时间: 2012-4-19 13:20
本帖最后由 he11120 于 2012-4-19 13:27 编辑

damage(@battler.damage,@battler.critical,@battler.damage_color) ,战斗,这个出错。���

未命名.jpg (15 KB, 下载次数: 9)

未命名.jpg





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1