本帖最后由 jiushiainilip19 于 2016-3-25 23:01 编辑
方法有很多 就看你想用哪一种了
第一方法: 在Game_Battler 3战斗类中定义 直接指定CP值 CP的初始化是0 最高是65535
于是可以写成这样 以技能类来说明
if user.is_a?(Game_Actor) && user.id==1 user.cp+=65535 if rand(100)<30 end #角色是一号角色 30%的几率CP+满=连击
if user.is_a?(Game_Actor) && user.id==1
user.cp+=65535 if rand(100)<30
end
#角色是一号角色 30%的几率CP+满=连击
第二方法:用脚本 技能连击脚本 你搜索一下 我暂时贴出我用到的
# =================================================================== # 连击效果(完美版) v1.2 by SailCat # =================================================================== # 数据库设定(特技): # 名称:技能名称,连击次数(要用半角逗号) # 例如:超究舞神霸斩,11 # 狮子心,16 # 陨石,9 # 注意这是连击次数,实际攻击的回数是这个回数+1回。 # 省略逗号连同后面的参数的话,连击次数默认为零。 # 连击次数是负数的话,将取绝对值处理。 # 视觉效果是发动动画只放1回,击中动画放N回,伤害值显示N次, # 所以,如使用了齐时战斗的话,要修改倒数第四行,该行内容为: # @phase4_step = 4 # 改为@phase4_step = 3 # 其他:RTAB不适用 # =================================================================== module RPG class Skill def name name = @name.split(/,/)[0] return name != nil ? name : "" end def hit_count name = @name.split(/,/)[1] return name != nil ? name.to_i.abs : 0 end end class Sprite < ::Sprite def effect? @_whiten_duration > 0 or @_appear_duration > 0 or @_escape_duration > 0 or @_animation_duration > 0 end def damage_effect? @_damage_duration > 0 or @_collapse_duration > 0 end end end class Spriteset_Battle def damage_effect? for sprite in @enemy_sprites + @actor_sprites return true if sprite.damage_effect? end return false end end class Scene_Battle alias sailcat_update_phase4_step1 update_phase4_step1 alias sailcat_make_skill_action_result make_skill_action_result alias sailcat_update_phase4_step5 update_phase4_step5 def update_phase4_step1 @hit_count = 0 $game_variables[51] = 0 #$game_variables[86] = 0 sailcat_update_phase4_step1 end def make_skill_action_result sailcat_make_skill_action_result @hit_count = @skill.hit_count end def update_phase4_step5 sailcat_update_phase4_step5 if @hit_count > 0 $game_variables[51] += 1 for target in @target_battlers.clone if @active_battler.dead? return end if target.dead? if @target_battlers.size > 1 @target_battlers.delete(target) else @target_battlers.delete(target) if target.is_a?(Game_Enemy) target = $game_troop.smooth_target_enemy(target.index) else target = $game_party.smooth_target_actor(target.index) end if target.is_a?(Game_Battler) @target_battlers.push(target) end end end end if @target_battlers.size == 0 return end for target in @target_battlers if target.damage != nil @phase4_step = 5 return end target.skill_effect(@active_battler, @skill) end # 如果你应用了23种战斗特效的公共事件版脚本请去掉下面几行的注释 if @common_event_id > 0 common_event = $data_common_events[@common_event_id] $game_system.battle_interpreter.setup(common_event.list, 0) end @hit_count -= 1 $game_temp.enemy_hpsp_refresh = false @phase4_step = 4 end end end
# ===================================================================
# 连击效果(完美版) v1.2 by SailCat
# ===================================================================
# 数据库设定(特技):
# 名称:技能名称,连击次数(要用半角逗号)
# 例如:超究舞神霸斩,11
# 狮子心,16
# 陨石,9
# 注意这是连击次数,实际攻击的回数是这个回数+1回。
# 省略逗号连同后面的参数的话,连击次数默认为零。
# 连击次数是负数的话,将取绝对值处理。
# 视觉效果是发动动画只放1回,击中动画放N回,伤害值显示N次,
# 所以,如使用了齐时战斗的话,要修改倒数第四行,该行内容为:
# @phase4_step = 4
# 改为@phase4_step = 3
# 其他:RTAB不适用
# ===================================================================
module RPG
class Skill
def name
name = @name.split(/,/)[0]
return name != nil ? name : ""
end
def hit_count
name = @name.split(/,/)[1]
return name != nil ? name.to_i.abs : 0
end
end
class Sprite < ::Sprite
def effect?
@_whiten_duration > 0 or
@_appear_duration > 0 or
@_escape_duration > 0 or
@_animation_duration > 0
end
def damage_effect?
@_damage_duration > 0 or
@_collapse_duration > 0
end
end
end
class Spriteset_Battle
def damage_effect?
for sprite in @enemy_sprites + @actor_sprites
return true if sprite.damage_effect?
end
return false
end
end
class Scene_Battle
alias sailcat_update_phase4_step1 update_phase4_step1
alias sailcat_make_skill_action_result make_skill_action_result
alias sailcat_update_phase4_step5 update_phase4_step5
def update_phase4_step1
@hit_count = 0
$game_variables[51] = 0
#$game_variables[86] = 0
sailcat_update_phase4_step1
end
def make_skill_action_result
sailcat_make_skill_action_result
@hit_count = @skill.hit_count
end
def update_phase4_step5
sailcat_update_phase4_step5
if @hit_count > 0
$game_variables[51] += 1
for target in @target_battlers.clone
if @active_battler.dead?
return
end
if target.dead?
if @target_battlers.size > 1
@target_battlers.delete(target)
else
@target_battlers.delete(target)
if target.is_a?(Game_Enemy)
target = $game_troop.smooth_target_enemy(target.index)
else
target = $game_party.smooth_target_actor(target.index)
end
if target.is_a?(Game_Battler)
@target_battlers.push(target)
end
end
end
end
if @target_battlers.size == 0
return
end
for target in @target_battlers
if target.damage != nil
@phase4_step = 5
return
end
target.skill_effect(@active_battler, @skill)
end
# 如果你应用了23种战斗特效的公共事件版脚本请去掉下面几行的注释
if @common_event_id > 0
common_event = $data_common_events[@common_event_id]
$game_system.battle_interpreter.setup(common_event.list, 0)
end
@hit_count -= 1
$game_temp.enemy_hpsp_refresh = false
@phase4_step = 4
end
end
end
第三方法:在 Scene_Battle 4 中 全局搜索 def make_action_orders
在数据编辑器中翻到系统--然后在属性那里
$data_skills[enemy.current_action.skill_id].element_set.include?(40)
就是在那里选择一个作为双击选择 40是我的 你可以随便添加到多少
然后在技能对应的属性那里打上勾勾就代表这个技能50%几率打出双击
@action_battlers.push(enemy) 敌人行动一次
继续添加@action_battlers.push(enemy)就是在行动一次
如果想要角色就在角色的行动结果中写 下面有定义 可以无限添加
def make_action_orders # 初始化序列 @action_battlers @action_battlers = [] # 添加敌人到 @action_battlers 序列 for enemy in $game_troop.enemies #-------------------------------------------------------------------------- #当敌人行为为特技并且使用了带有40号属性的特技 #敌人几率二连击 if enemy.current_action.kind == 1 and $data_skills[enemy.current_action.skill_id].element_set.include?(40) if rand(100) <= 50 @action_battlers.push(enemy) end end #-------------------------------------------------------------------------- @action_battlers.push(enemy) end # 添加角色到 @action_battlers 序列 for actor in $game_party.actors #-------------------------------------------------------------------------- #当角色行为为特技并且使用了带有18号属性的特技#剑几率三连击 # if actor.current_action.kind == 1 and $data_skills[actor.current_action.skill_id].element_set.include?(18) # if rand(100) <= 20 # @action_battlers.push(actor) # @action_battlers.push(actor) # end # end #-------------------------------------------------------------------------- @action_battlers.push(actor) end # 确定全体的行动速度 for battler in @action_battlers battler.make_action_speed end # 按照行动速度从大到小排列 @action_battlers.sort! {|a,b| b.current_action.speed - a.current_action.speed } end
def make_action_orders
# 初始化序列 @action_battlers
@action_battlers = []
# 添加敌人到 @action_battlers 序列
for enemy in $game_troop.enemies
#--------------------------------------------------------------------------
#当敌人行为为特技并且使用了带有40号属性的特技 #敌人几率二连击
if enemy.current_action.kind == 1 and $data_skills[enemy.current_action.skill_id].element_set.include?(40)
if rand(100) <= 50
@action_battlers.push(enemy)
end
end
#--------------------------------------------------------------------------
@action_battlers.push(enemy)
end
# 添加角色到 @action_battlers 序列
for actor in $game_party.actors
#--------------------------------------------------------------------------
#当角色行为为特技并且使用了带有18号属性的特技#剑几率三连击
# if actor.current_action.kind == 1 and $data_skills[actor.current_action.skill_id].element_set.include?(18)
# if rand(100) <= 20
# @action_battlers.push(actor)
# @action_battlers.push(actor)
# end
# end
#--------------------------------------------------------------------------
@action_battlers.push(actor)
end
# 确定全体的行动速度
for battler in @action_battlers
battler.make_action_speed
end
# 按照行动速度从大到小排列
@action_battlers.sort! {|a,b|
b.current_action.speed - a.current_action.speed }
end
以上方法都可以做出连击效果 第一种绝对没有冲突 第二种看注释就好 第三种只要没有在其他地方定义的话就不会有问题 如果有就仔细看看是否可以自行更改 |