Project1

标题: 如何在ZTBS中实现连击效果[一次进攻伤害数与普通攻击相同] [打印本页]

作者: 小酋旺旺    时间: 2011-8-14 09:00
标题: 如何在ZTBS中实现连击效果[一次进攻伤害数与普通攻击相同]
本帖最后由 小酋旺旺 于 2011-8-14 13:05 编辑

首先我是模仿黑暗圣剑传说来制作连击脚本。
我先在 Game_Battle 3 的 def skill_effect(user, skill) 的 return effective 前添加:
case skill.id
when 45 # 连击
  self.attack_effect(user)
    if self.hp > 0
      $message_string = "连击"
    end
end

再在 ZTBS 我方动作 中添加新阶段:
case $game_system.tactics_step
…………
when 901
  double_attack1
when 902
  double_attack2
…………
end

接着在 阶段9 末尾的 return 前加上:
if $message_string == "连击"
  @double_damage = @targets[ i ].damage
  $game_system.tactics_step = 901
else
  $game_system.tactics_step = 10
end

然后再加上这么个东东:
#--------------------------------------------------------------------------
# ● 刷新画面 (主回合步骤 901,902 : 连击技能)
#--------------------------------------------------------------------------
def double_attack1
  @active_battler.animation_id = @animation1_id
  @active_battler.animation_hit = true
  for i in @targets.keys
    $game_map.events[ i ].animation_id = @animation2_id
    $game_map.events[ i ].animation_hit = (@targets[ i ].damage != "Miss")
    if @double_damage != nil
      $game_map.events[ i ].damage = @double_damage
    end
  end
  $game_system.tactics_step = 902
end
def double_attack2
  for i in @targets.keys
    $game_map.events[ i ].damage = @double_damage
    if $game_map.events[ i ].damage != nil
      $game_map.events[ i ].damage_pop = true
    end
  end
$game_system.tactics_step = 10
end

测试的结果是:确实出现了两次攻击,但是第二次攻击虽然显示了动画和伤害却没有扣血,还有第一次攻击后消失的敌人第二次攻击时还会显示动画和伤害;更严重的是,就是以这样的方式打败敌人后,角色不会获得任何经验金钱物品。请问这里有什么原因?如果要修正那该怎么下手?dsu_plus_rewardpost_czw
作者: Wind2010    时间: 2011-8-14 10:49
LZ不需要把$message_string量重置下么?不然发动了一个连击技能后其他技能都变成连击技能了
然后在攻击前再调用这个试试:
  1. # 动作结果作成
  2.         case @attacker.current_action.kind
  3.         when 0
  4.           make_basic_action_result
  5.         when 1
  6.           make_skill_action_result
  7.         when 2
  8.           make_item_action_result
  9.         end
复制代码

作者: 小酋旺旺    时间: 2011-8-14 11:04
Wind2010 发表于 2011-8-14 10:49
LZ不需要把$message_string量重置下么?不然发动了一个连击技能后其他技能都变成连击技能了
然后在攻击前再 ...

这位爷,请问怎么调用?{:nm_3:}
作者: Wind2010    时间: 2011-8-14 11:11
小酋旺旺 发表于 2011-8-14 11:04
这位爷,请问怎么调用?

例如就在double_attack1和double_attack2下面加上什么的
作者: 小酋旺旺    时间: 2011-8-14 11:28
Wind2010 发表于 2011-8-14 11:11
例如就在double_attack1和double_attack2下面加上什么的

其实我真的不知怎样才是正确调用。我只是把你提供的那段脚本直接插在if $message_string == "连击"下面,虽说第二次攻击扣了血,但是第一次攻击后消失的敌人第二次攻击时仍然会显示伤害(动画就没显)。{:nm_9:}


小酋旺旺于2011-8-14 13:04补充以下内容:
有个更严重的问题,就是以这样的方式打败敌人后,角色不会获得任何经验金钱物品。
作者: dbshy    时间: 2011-8-14 17:01
但是第二次攻击虽然显示了动画和伤害却没有扣血

这个我没有手上脚本 不知道

第一次攻击后消失的敌人第二次攻击时还会显示动画和伤害

因为没有判断 都会进入902阶段


其实我觉得根本不必多加2个阶段 而是在进入10阶段后判断一下
如果是连击 再进入第6阶段(不知道记错没有)




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