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 前然后进行修改。
module RPG
class Sprite < ::Sprite
def damage(value, critical, color = nil)
dispose_damage
if value.is_a?(Numeric)
damage_string = value.abs.to_s
else
damage_string = value.to_s
end
bitmap = Bitmap.new(160, 48)
bitmap.font.name = "Arial Black"
bitmap.font.size = 32
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text( 1, 12-1, 160, 36, damage_string, 1)
bitmap.draw_text(-1, 12 1, 160, 36, damage_string, 1)
bitmap.draw_text( 1, 12 1, 160, 36, damage_string, 1)
if color
bitmap.font.color = color.clone
elsif value.is_a?(Numeric) and value < 0
bitmap.font.color.set(176, 255, 144)
else
bitmap.font.color.set(255, 255, 255)
end
bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
if critical
bitmap.font.size = 20
bitmap.font.color.set(0, 0, 0)
bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
bitmap.draw_text( 1, -1, 160, 20, "CRITICAL", 1)
bitmap.draw_text(-1, 1, 160, 20, "CRITICAL", 1)
bitmap.draw_text( 1, 1, 160, 20, "CRITICAL", 1)
bitmap.font.color.set(255, 255, 255)
bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
end
@_damage_sprite = ::Sprite.new(self.viewport)
@_damage_sprite.bitmap = bitmap
@_damage_sprite.ox = 80
@_damage_sprite.oy = 20
@_damage_sprite.x = self.x
@_damage_sprite.y = self.y - self.oy / 2
@_damage_sprite.z = 3000
@_damage_duration = 40
end
end
end
复制代码
首先加入这段脚本然后就支持改颜色了。但是修改颜色还需要修改别处的代码。
可以在 Sprite_Battler 里面找到这段
#傷害
if @battler.damage_pop
damage(@battler.damage,@battler.critical)
@battler.damage=nil
@battler.critical=false
@battler.damage_pop=false
end
复制代码
将其改成
#傷害
if @battler.damage_pop
damage(@battler.damage,@battler.critical, @battler.damage_color)
@battler.damage=nil
@battler.critical=false
@battler.damage_color=nil
@battler.damage_pop=false
end
复制代码
接下去在 Game_Battler 里面
找到一堆 attr_accessor,在其下面加上
attr_accessor :damage_color
复制代码
在这里的 def initialize 里,加上
@damage_color = nil
复制代码
现在接下来就需要修改伤害计算的部分了。这部分中午再说。现在我要出去。���������
作者:
吉井明久
时间:
2012-4-19 12:50
手机不便所以连贴了望谅解(帖子太长编辑会破坏掉…)
在 Game_Battler 里面找到 def elements_correct 换成这个
def elements_correct(element_set)
# 無屬性的情況
if element_set == []
# 返回 100
return 100
end
# 返回提供的屬性中最弱的屬性
# ※定義 element_rate 的方法是由本身、 Game_Actor 類別和 Game_Enemy 類別
# 所定義。
weakest = -100
for i in element_set
x = self.element_rate(i)
if x > weakest
weakest = x
self.damage_color = ELEMENTS_DAMAGE_COLOR[i]
end
end
return weakest
end
复制代码
然后开个新页面放接下来的配置…
class Game_Battler
ELEMENTS_DAMAGE_COLOR = {
1 => Color.new(255, 0, 0, 255),
2 => Color.new(255, 255, 0, 255),
3 => Color.new(0, 0, 255, 255),
}
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)
下载附件
保存到相册
2012-4-19 13:27 上传
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1