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

Project1

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

[已经过期] 请教10号角色和20号角色同时在战斗队伍中时平分伤害的写法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
1
发表于 2019-7-1 15:11:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 taeckle 于 2019-7-1 16:13 编辑

目前想到的是要考虑4种情况:
①10号角色或20号角色受到单体攻击伤害平分
②群体攻击技能造成的伤害平分
③10号角色或20号角色受到反弹来的伤害平分
④敌普通攻击造成的伤害平分

然后就不会写了。。。




Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
13
 楼主| 发表于 2019-7-16 06:47:59 | 只看该作者
soulsaga 发表于 2019-7-10 10:51
#--------------------------------------------------------------------------
  def share_damage
    ...


请教大神这个平分伤害的脚本的条件要改为只限于我方(或敌方)队伍中有第100号状态的队友(或敌人)的话那个def share_object该怎么写啊?

原来的条件是这么写的:

  def share_object
    return nil if ![10, 20].include?(@actor_id)
    return $game_party.actors.find{|a| a.id == (@actor_id == 10 ? 20 : 10) }
  end

现条件改为只限于我方(或敌方)队伍中有第100号状态的队友(或敌人)的话那个def share_object该怎么写啊?

点评

不会...  发表于 2019-7-16 14:03
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33284
在线时间
10511 小时
注册时间
2009-3-15
帖子
4758
12
发表于 2019-7-10 10:51:01 | 只看该作者
本帖最后由 soulsaga 于 2019-7-15 01:17 编辑
taeckle 发表于 2019-7-10 02:22
继续召唤大神。。平分伤害这4个字原来这么难。。


RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   def share_damage
  3.     target_actor = share_object
  4.     result = !!target_actor && target_actor.can_take_damage?
  5.     if result
  6.       @recipient = true
  7.       self.damage = self.damage / 2
  8.       target_actor.damage = self.damage
  9.       @@平分伤害=self.damage if self.index < target_actor.index
  10.       target_actor.hp -= self.damage
  11.       if self.index > target_actor.index and @敌群攻
  12.       target_actor.damage+=@@平分伤害;self.damage+=@@平分伤害;@敌群攻=false
  13.       end
  14.   end
  15.   return @hp - self.damage
  16.   end


更新脚本..测试正常..

点评

报告大神,是咱自己的打错字母的问题,现在没问题了,这个平分伤害的脚本完工了!  发表于 2019-7-16 06:38
问题来了,我把上面那个脚本所有3个“平分伤害”改成“dividingly”就不平分伤害了。。如果不改就还能平分,,,  发表于 2019-7-16 06:29
还有受到群体攻击技能攻击时也不平分伤害了。。。  发表于 2019-7-16 06:17
报告大神,目前最新的脚本当10号和20号受到带有群体攻击率的单体攻击技能攻击时,具体来说当此单体攻击技能变成群体攻击时,又不平分了。。  发表于 2019-7-16 06:11
已更新脚本..  发表于 2019-7-15 01:26
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
11
 楼主| 发表于 2019-7-10 02:22:41 | 只看该作者
继续召唤大神。。平分伤害这4个字原来这么难。。

点评

报告大神,又有问题了,按照你目前的脚本受到单体攻击技能时显示的伤害一样,但扣的血量又不一样了。。  发表于 2019-7-14 06:09
已更新脚本..人呢..  发表于 2019-7-11 15:21
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33284
在线时间
10511 小时
注册时间
2009-3-15
帖子
4758
10
发表于 2019-7-4 23:09:31 | 只看该作者
本帖最后由 soulsaga 于 2019-7-5 09:58 编辑

RUBY 代码复制
  1. #==============================================================================
  2. class Game_Actor
  3.   #--------------------------------------------------------------------------
  4.   alias :xr_sd_set_hp :hp=
  5.   def hp=(hp)
  6.     hp = self.damage.is_a?(Numeric) && self.damage > 0 ? share_damage : hp
  7.     xr_sd_set_hp(hp)
  8.     @recipient = false
  9.   end
  10.   #--------------------------------------------------------------------------
  11. def share_damage
  12.     target_actor = share_object
  13.     result = !!target_actor && target_actor.can_take_damage?
  14.     if result
  15.       @recipient = true
  16.       self.damage = self.damage / 2
  17.       target_actor.damage = self.damage
  18.       @平分伤害=self.damage if @平分伤害.nil?
  19.       if self.index > target_actor.index and @敌群攻
  20.       target_actor.hp -= self.damage;target_actor.damage+=self.damage;self.damage+=@平分伤害;@敌群攻=false
  21.       end
  22.   end
  23.   return @hp - self.damage
  24.   end
  25. #--------------------------------------------------------------------------
  26.   def share_object
  27.     return nil if ![10, 20].include?(@actor_id)
  28.     return $game_party.actors.find{|a| a.id == (@actor_id == 10 ? 20 : 10) }
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   def can_take_damage?
  32.     return !@recipient && exist?
  33.   end
  34. end
  35. #==============================================================================
  36. class Scene_Battle
  37.   #--------------------------------------------------------------------------
  38.   alias xr_sd_update_phase4_step5 update_phase4_step5
  39.   def update_phase4_step5
  40.     $game_party.actors.each{|a| a.damage_pop = !a.damage.nil?}
  41.     xr_sd_update_phase4_step5
  42.   end
  43. end
  44. #=============================================================================


这次3人正常..

点评

10号角色和20号角色受到的伤害数字显示一样,但两个角色真实扣除的HP不一样  发表于 2019-7-8 22:24
是显示正确实际伤害不对还是2人承受伤害量不同?  发表于 2019-7-8 14:57
我新建一个工程测试的,伤害数字显示一样,但真实扣除的HP不一样。。  发表于 2019-7-8 07:48
不是一样?  发表于 2019-7-7 20:21
报告大神,目前不会跳出了,伤害显示也都正确,我方第3者也有伤害扣除,只是10号和20角色真实扣除的HP还不是统一的。。  发表于 2019-7-7 19:36
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33284
在线时间
10511 小时
注册时间
2009-3-15
帖子
4758
9
发表于 2019-7-4 19:03:13 | 只看该作者
本帖最后由 soulsaga 于 2019-7-4 22:52 编辑

搞错了............

点评

这就是完整脚本啊..你还想要什么..  发表于 2019-7-4 23:10
好像这个脚本当我方第3个角色在场时受到群体攻击不掉血了,,  发表于 2019-7-4 20:30
结合上面芯☆淡茹水大神的脚本  发表于 2019-7-4 20:16
大神可否重开一楼把这个平分伤害的脚本完整的写在下面呐。。  发表于 2019-7-4 20:15
改好了  发表于 2019-7-4 19:28
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33284
在线时间
10511 小时
注册时间
2009-3-15
帖子
4758
8
发表于 2019-7-4 16:59:10 | 只看该作者
话说群体攻击伤害怎么平分法?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
7
 楼主| 发表于 2019-7-4 15:23:40 | 只看该作者
本帖最后由 taeckle 于 2019-7-4 15:39 编辑
soulsaga 发表于 2019-7-3 19:53
class Game_Battler
  alias aoe_skill_effect skill_effect
def skill_effect(user, skill)


大神这个脚本我还有个问题:

敌方攻击第10号角色时第20号角色受到的伤害值代入第100号公共变量里该怎么写呐?

这是我自己写的,貌似不对。。。

      if target.is_a?(Game_Actor) && target.id == 10
        if @active_battler.is_a?(Game_Actor)         
         for actor in $game_party.actors
          if actor.id == 20 && actor.hp > 0   
          $game_variables[100] = actor.damage ?????? #这里不会写...
          actor.damage_pop = true
          end
        end        
      end

点评

在脚本一行写啊..你也太新手了吧..  发表于 2019-7-4 16:28
怎么用 p actor.damage啊?  发表于 2019-7-4 16:11
如果你想知道自己有没写错..用p actor.damage 你就知道了..  发表于 2019-7-4 16:07
其他角色被打完伤害是空的..你获取不到..要不就只能被打时记录..但是后面角色伤害你怎么都没戏  发表于 2019-7-4 15:57
不存在的..伤害是顺序执行..不会同时出现让你获取到..  发表于 2019-7-4 15:50
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33284
在线时间
10511 小时
注册时间
2009-3-15
帖子
4758
6
发表于 2019-7-3 19:53:11 | 只看该作者
本帖最后由 soulsaga 于 2019-7-7 09:23 编辑

RUBY 代码复制
  1. class Game_Battler
  2.   alias aoe_skill_effect skill_effect
  3. def skill_effect(user, skill)
  4.    @敌群攻=false
  5.    @敌群攻=true if $game_variables[17] > 1 and user.is_a?(Game_Enemy)
  6.    aoe_skill_effect(user, skill)
  7. end
  8. end

点评

写漏了..更新一下..  发表于 2019-7-3 20:02
多谢大神!  发表于 2019-7-3 19:57

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武!

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
5
 楼主| 发表于 2019-7-3 09:58:34 | 只看该作者
芯☆淡茹水 发表于 2019-7-2 08:23
上面的脚本没有考虑到 分摊伤害对象 死亡的情况。


大神我在想这个问题是不是要分四种情况来写:
①仅角色10受到伤害为true时
②仅角色20受到伤害为true时
③角色10和角色20同时受到的伤害为true时
④角色10和角色20都没受到伤害


大神可否以第3种情况为例随手写一下呐,咱也好自己研究研究啦


点评

我看到有的游戏里有这种设定,某些技能是单体技能,但能一定几率出群体攻击效果  发表于 2019-7-3 19:53
什么意思...不是默认的你自己研究..  发表于 2019-7-3 19:45
这是因为还有些攻击技能不是100%群攻,也不是100%单体。。。  发表于 2019-7-3 19:20
我觉得不可能是同时?  发表于 2019-7-3 12:16
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-17 05:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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