Project1

标题: 普通攻击同伴伤害计算 [打印本页]

作者: 黑米馒头    时间: 2014-8-14 12:03
标题: 普通攻击同伴伤害计算
在脚本里设置了个 【状态】,效果为当角色附加该状态时,普通攻击同伴,可当角色附加该状态的时候,攻击同伴就报错误了。

普通攻击同伴.rar

2.51 MB, 下载次数: 43


作者: 千夙    时间: 2014-8-14 13:10
可参考混乱状态
作者: 恐惧剑刃    时间: 2014-8-14 13:27
本帖最后由 恐惧剑刃 于 2014-8-14 13:38 编辑

在添加攻击对象序列那里,判断  如果有该状态 随机添加友军。
(之所以简略是考虑到你用的不是默认脚本)

具体在Scene_Battle 4 的 make_basic_action_result

你可以搜索一下 def make_basic_action_result 并且转到“Scene_Battle 四”

找到这两行——
# 设置对像方的战斗者序列
@target_battlers = [target]


之后加上几行
if @active_battler.states.include?(20) #20号状态混乱
  if @target_battlers.is_a?(Game_Actor)
    @target_battlers = $game_party.random_target_actor#如果是角色中招就随机一个同伴
   else
       @target_battlers = $game_troop.random_target_enemy#如果是敌人中招就随机一个敌人
   end
end
作者: 黑米馒头    时间: 2014-8-14 14:45
本帖最后由 黑米馒头 于 2014-8-14 14:47 编辑
恐惧剑刃 发表于 2014-8-14 13:27
在添加攻击对象序列那里,判断  如果有该状态 随机添加友军。
(之所以简略是考虑到你用的不是默认脚本)


那样改了还是不行,我知道哪里出问题了,你帮我看下要怎么改

在Game_Battler 3里
默认的  # ● 应用通常攻击效果
  计算基本伤害是这样的
  1.       # 计算基本伤害
  2.     atk = [attacker.atk - self.pdef / 2, 0].max
  3.       self.damage = atk * (20 + attacker.str) / 20
复制代码
我这个脚本是这样
  1.           # 计算基本伤害
  2.       atk = [attacker.atk - self.pdef / 1, attacker.atk / 10].max
  3.        if  @active_battler.is_a?(Game_Actor)
  4.          for kds in self.actions
  5.            if $data_skills[kds.skill_id].element_set.include?(42)
  6.               atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
  7.               break
  8.            elsif $data_skills[kds.skill_id].element_set.include?(41)
  9.               atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
  10.            end
  11.          end
  12.        end
  13.        if  @active_battler.is_a?(Game_Enemy)
  14.          for kds in self.skills
  15.            if $data_skills[kds].element_set.include?(42)
  16.               atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
  17.               break
  18.            elsif $data_skills[kds].element_set.include?(41)
  19.               atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
  20.            end
  21.          end
  22.        end
  23.       self.damage = atk*2 + attacker.str/5
复制代码
我这是这样的所以出问题了,有没办法在不影响这些数据的情况下,是这个脚本不出现问题呢。
作者: 恐惧剑刃    时间: 2014-8-14 17:15
疏忽了忘了加[]
改一下
target = $game_party.random_target_actor
@target_battlers = [target]  #角色

target = $game_troop.random_target_enemy
@target_battlers = [target]  #敌人
作者: 恐惧剑刃    时间: 2014-8-14 21:14
本帖最后由 恐惧剑刃 于 2014-8-14 21:30 编辑

梦三的模版??这个有难度。。。

找到【KDS改】Game_Battler 3
63到72行全部注释掉
#if  @active_battler.is_a?(Game_Enemy)
#  for kds in self.skills
#    if $data_skills[kds].element_set.include?(42)
#       atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
#       break
#    elsif $data_skills[kds].element_set.include?(41)
#       atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
#    end
#  end
#end

这样就可以看到敌人互殴了。


某模版,感觉效果不好,如果不嫌弃可以修改下用(反正我也不打算继续完善它了)。(——请稍等待编辑)
下载地址 腾讯微云 http://url.cn/VePDDF

参考截图








作者: 黑米馒头    时间: 2014-8-15 07:39
恐惧剑刃 发表于 2014-8-14 21:14
梦三的模版??这个有难度。。。

找到【KDS改】Game_Battler 3

我就是不知道这几句去掉之后会影响到什么地方。
这个【普通攻击同伴】的状态,有个问题,就是会攻击自己,有没办法改成,只攻击队友,当队伍里只有自己的时候就防御。
作者: 恐惧剑刃    时间: 2014-8-15 15:54
本帖最后由 恐惧剑刃 于 2014-8-15 15:56 编辑

# 计算基本伤害
atk = [attacker.atk - self.pdef / 1, attacker.atk / 10].max
if @active_battler.is_a?(Game_Enemy)# @active_battler.is_a?(Game_Actor)   
for kds in self.actions
     if $data_skills[kds.skill_id].element_set.include?(42)
        atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
        break
     elsif $data_skills[kds.skill_id].element_set.include?(41)
        atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
     end
   end
end
if @active_battler.is_a?(Game_Actor)# @active_battler.is_a?(Game_Enemy)   
for kds in self.skills
     if $data_skills[kds].element_set.include?(42)
        atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
        break
     elsif $data_skills[kds].element_set.include?(41)
        atk = [@active_battler.atk - self.pdef*110/100, @active_battler.atk / 11].max
     end
   end
end
self.damage = atk*2 + attacker.str/5

角色才有 skills 敌人有的是 actions,暂不知道梦三为何不报错。
这一段代码就计算 伤害 用的
比如
atk = [@active_battler.atk - self.pdef*120/100, @active_battler.atk / 12].max
就是说
atk(伤害这个基本数值)的值是:攻击者的攻击力减去(自身的物理防御乘以120除以100) 再与 攻击者的攻击力除以12 比大小 且取较大的值(自身就是被攻击者)
self.damage = atk*2 + attacker.str/5 就是计算伤害了,使用了上边的基本伤害值

去掉这几行仅仅影响伤害的计算




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