设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2247|回复: 7
打印 上一主题 下一主题

[已经解决] 普通攻击同伴伤害计算

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
跳转到指定楼层
1
发表于 2014-8-14 12:03:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在脚本里设置了个 【状态】,效果为当角色附加该状态时,普通攻击同伴,可当角色附加该状态的时候,攻击同伴就报错误了。

普通攻击同伴.rar

2.51 MB, 下载次数: 43

点评

报错了跟伤害计算有什么关系啊?  发表于 2014-8-14 12:32

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

Lv2.观梦者

梦石
0
星屑
250
在线时间
233 小时
注册时间
2013-8-2
帖子
587
2
发表于 2014-8-14 13:10:45 | 只看该作者
可参考混乱状态

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 我很赞同

查看全部评分

我忘了,我要怎么遗忘。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
3
发表于 2014-8-14 13:27:50 | 只看该作者
本帖最后由 恐惧剑刃 于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
4
 楼主| 发表于 2014-8-14 14:45:34 | 只看该作者
本帖最后由 黑米馒头 于 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
复制代码
我这是这样的所以出问题了,有没办法在不影响这些数据的情况下,是这个脚本不出现问题呢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
5
发表于 2014-8-14 17:15:17 | 只看该作者
疏忽了忘了加[]
改一下
target = $game_party.random_target_actor
@target_battlers = [target]  #角色

target = $game_troop.random_target_enemy
@target_battlers = [target]  #敌人

点评

还是不行。。有空帮忙弄下  发表于 2014-8-14 17:52
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
6
发表于 2014-8-14 21:14:27 | 只看该作者
本帖最后由 恐惧剑刃 于 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

参考截图







回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3591
在线时间
1890 小时
注册时间
2010-6-19
帖子
1211
7
 楼主| 发表于 2014-8-15 07:39:15 | 只看该作者
恐惧剑刃 发表于 2014-8-14 21:14
梦三的模版??这个有难度。。。

找到【KDS改】Game_Battler 3

我就是不知道这几句去掉之后会影响到什么地方。
这个【普通攻击同伴】的状态,有个问题,就是会攻击自己,有没办法改成,只攻击队友,当队伍里只有自己的时候就防御。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
8
发表于 2014-8-15 15:54:06 | 只看该作者
本帖最后由 恐惧剑刃 于 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 就是计算伤害了,使用了上边的基本伤害值

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

评分

参与人数 1梦石 +1 收起 理由
︶ㄣ牛排ぶ + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-11 13:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表