查看: 2577|回复: 2

[已经过期] CP制战斗模式下可以攻击敌人两次吗

[复制链接]
梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
发表于 2016-3-25 22:31:01 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
两连击或3连击,要是技能能连击感觉也可以
梦石
0
星屑
606
在线时间
797 小时
注册时间
2014-7-1
回帖
501

开拓者

发表于 2016-3-25 22:55:00 | 显示全部楼层
本帖最后由 jiushiainilip19 于 2016-3-25 23:01 编辑

方法有很多 就看你想用哪一种了

第一方法: 在Game_Battler 3战斗类中定义 直接指定CP值 CP的初始化是0  最高是65535
            
于是可以写成这样 以技能类来说明
[pre lang="ruby"]
if user.is_a?(Game_Actor) && user.id==1
   user.cp+=65535 if rand(100)<30
end
#角色是一号角色 30%的几率CP+满=连击
[/pre]

第二方法:用脚本 技能连击脚本 你搜索一下 我暂时贴出我用到的
[pre lang="ruby"]
# ===================================================================
# 连击效果(完美版) 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
[/pre]



第三方法:在  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)就是在行动一次
如果想要角色就在角色的行动结果中写 下面有定义 可以无限添加

[pre lang="ruby"]
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
[/pre]


以上方法都可以做出连击效果  第一种绝对没有冲突  第二种看注释就好 第三种只要没有在其他地方定义的话就不会有问题 如果有就仔细看看是否可以自行更改
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复

使用道具 举报

梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
 楼主| 发表于 2016-3-28 17:02:35 | 显示全部楼层
jiushiainilip19 发表于 2016-3-25 22:55
方法有很多 就看你想用哪一种了

第一方法: 在Game_Battler 3战斗类中定义 直接指定CP值 CP的初始化是0   ...


多谢,我是新手,还是有点没明白,第一个的话在第几行修改呢,第二个的话,改了名称以后第108行会出错,第三个没明白
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部