| 赞 | 40 |
| VIP | |
| 好人卡 | |
| 积分 | 50 |
| 经验 | |
| 最后登录 | 2026-9-17 |
| 在线时间 | 5234 小时 |
八宝粥的基叔
- 梦石
- 0
- 星屑
- 4957
- 在线时间
- 5234 小时
- 注册时间
- 2009-4-29
- 回帖
- 14054

|
发表于 2012-9-24 15:58:59
|
显示全部楼层
本帖最后由 protosssonny 于 2012-9-24 16:08 编辑
话说P叔不是只回答VX区的问题的吗?
今天怎么来VA区抢生意啦。
嗷呜,P叔偶尔也想越越限嘛,不好意思啦。
P叔帮你制作了一个范例,里面的注释写得非常详细,请你拿去好好研究吧。
范例在此:
Project1.rar
(301.32 KB, 下载次数: 184)
由于只能上传小于999K的附件,所以请在System文件夹下自行添加RGSS300.dll文件!
添加的两种魔法和两种状态:
P叔魔法1(技能ID127):给予单个敌人无属性伤害,有概率让自己附加省魔状态。省魔状态时发动P叔魔法2不消耗MP。
P叔魔法2(技能ID128):给予单个敌人无属性伤害。有概率让自己附加魔攻增强状态,使得P叔魔法1伤害变得异常恐怖。
省魔状态(状态ID26)
魔攻增强状态(状态ID27)
脚本在此:
[pre lang="ruby" line="1"]#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# 处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 应用技能/物品的效果
#--------------------------------------------------------------------------
def item_apply(user, item)
@result.clear
@result.used = item_test(user, item)
@result.missed = (@result.used && rand >= item_hit(user, item))
@result.evaded = (!@result.missed && rand < item_eva(user, item))
special_state(user, item) # 添加本行,调用自定义函数special_state
if @result.hit?
unless item.damage.none?
@result.critical = (rand < item_cri(user, item))
make_damage_value(user, item)
execute_damage(user)
end
item.effects.each {|effect| item_effect_apply(user, item, effect) }
item_user_effect(user, item)
end
end
#--------------------------------------------------------------------------
# ● 特技附加指定的状态效果(自定义函数)
#--------------------------------------------------------------------------
def special_state(user, item)
return unless item.is_a?(RPG::Skill) # 如果item不是技能就返回,什么也不做
case item.id # 当item的ID为:
when 127 # ID为127时,表示127号技能(P叔技能1)
user.add_state(26) if rand(100) < 45# 45%概率技能使用者附加26号状态(省魔)
when 128 # ID为128时,表示128号技能(P叔技能2)
user.add_state(27) if rand(100) < 45# 45%概率技能使用者附加27号状态(魔攻增强)
end
end
end
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
# 管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 判定是否足够扣除技能的使用消耗
#--------------------------------------------------------------------------
def skill_cost_payable?(skill)
# 如果战斗者是携带26号状态(省魔)并且被判定的技能为128号技能(P叔技能2)时,
# 就返回“真”,即不判定耗魔,直接允许使用128号技能。
return true if self.state?(26) and skill.id == 128
# 当除了以上情况的时候才判定耗魔
tp >= skill_tp_cost(skill) and mp >= skill_mp_cost(skill)
end
#--------------------------------------------------------------------------
# ● 扣除技能的使用消耗
#--------------------------------------------------------------------------
def pay_skill_cost(skill)
# 只有不是“战斗者是携带26号状态(省魔)并且被判定的技能为128号技能(P叔技能2)”
# 的情况时,才计算MP消耗。
self.mp -= skill_mp_cost(skill) unless self.state?(26) and skill.id == 128
self.tp -= skill_tp_cost(skill)
end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
# 处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 计算伤害
#--------------------------------------------------------------------------
def make_damage_value(user, item)
value = item.damage.eval(user, self, $game_variables)
# 如果item是一种技能,并且技能ID为121(P叔技能1),并且使用者是携带27号状态(魔攻
# 增强),当以上三个条件同时满足时,伤害增加1000,P叔技能1的伤害变得非常恐怖。
value += 1000 if item.is_a?(RPG::Skill) and item.id == 127 and user.state?(27)
value *= item_element_rate(user, item)
value *= pdr if item.physical?
value *= mdr if item.magical?
value *= rec if item.damage.recover?
value = apply_critical(value) if @result.critical
value = apply_variance(value, item.damage.variance)
value = apply_guard(value)
@result.make_damage(value.to_i, item)
end
end [/pre] |
评分
-
查看全部评分
|