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

Project1

 找回密码
 注册会员
搜索
查看: 2574|回复: 9

[已经过期] 请教我方或敌方有2人或2人以上有状态100时平分受到的伤害...

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
发表于 2019-7-16 18:13:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 taeckle 于 2019-7-16 21:57 编辑

先描述一下这个脚本:

条件:我方或敌方有2人或2人以上处于第100号状态下
结果:受到的伤害(不管是群体攻击技能或者单体攻击技能)平分

咱自己的思路是这样的:
1.判断我方或敌方活着的队伍里是否有2人或2人以上处于第100号状态下(这一步菜刀王大神在下面已经有说明)
2.如果第一步成立,统计我方或敌方活着的队伍里有第100号状态的人数,带入第666号公共变量。
3.统计有100号状态的人受到的总伤害,再除以第666号公共变量的数值
4.显示伤害,均等扣除HP,将第666号公共变量归0


小弟在四年前就在本网站注册了,虽然一个朋友都木有,但游戏制作的方法倒是学了一大堆,再次给各位经常回答咱的问题的大神说声谢谢!

Lv5.捕梦者

梦石
0
星屑
37641
在线时间
5308 小时
注册时间
2006-11-10
帖子
6541
发表于 2019-7-16 19:39:57 | 显示全部楼层
def 判断我方或敌方活着的队伍里是否有2人或2人以上处于第100号状态下
   f = [] ; ($game_party.actors + $game_troop.enemies).each {|i| f.push(i) if i.state?(100)}
   return f.size > 1
end

把它塞到main里就OK了,  然后就可以用 "判断我方或敌方活着的队伍里是否有2人或2人以上处于第100号状态下" 这个函数来判断了

点评

大神威武!请再受小弟一拜!  发表于 2019-7-16 21:22

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9128
在线时间
463 小时
注册时间
2015-5-8
帖子
865
 楼主| 发表于 2019-7-16 21:40:49 | 显示全部楼层
本帖最后由 taeckle 于 2019-7-16 21:59 编辑
灯笼菜刀王 发表于 2019-7-16 19:39
def 判断我方或敌方活着的队伍里是否有2人或2人以上处于第100号状态下
   f = [] ; ($game_party.actors +  ...


报告菜刀王大神,我把这个2人或2人以上有状态100时平分伤害脚本这样写了,你可否帮咱看下哪里不对(目前好像有不少BUG..):

#==============================================================================
class Game_Actor
  #--------------------------------------------------------------------------
  alias :xr_sd_set_hp :hp=
  def hp=(hp)
    hp = self.damage.is_a?(Numeric) && self.damage > 0 ? share_damage : hp
    xr_sd_set_hp(hp)
    @recipient = false
  end

#--------------------------------------------------------------------------
  def share_damage
    target_actor = share_object
    result = !!target_actor && target_actor.can_take_damage?
    if result
      @recipient = true
      self.damage = self.damage / $game_variables[666]
      target_actor.damage = self.damage
      @@dividingly=self.damage if self.index < target_actor.index
      target_actor.hp -= self.damage
      if self.index > target_actor.index and @aoeofenemy
      target_actor.damage+=@@dividingly;self.damage+=@@dividingly;@aoeofenemy=false
      end
  end
  return @hp - self.damage
  end

#--------------------------------------------------------------------------

  def share_object
   f = [] ; ($game_party.actors + $game_troop.enemies).each {|i| f.push(i) if i.state?(100)}
   return f.size > 1
  $game_variables[666] = f.size   
  end
#--------------------------------------------------------------------------
  def can_take_damage?
    return !@recipient && exist?
  end
end

#--------------------------------------------------------------------------------------------------
class Scene_Battle
  alias xr_sd_update_phase4_step5 update_phase4_step5
  def update_phase4_step5
    $game_party.actors.each{|a| a.damage_pop = !a.damage.nil?}
    xr_sd_update_phase4_step5
  end
end

#==============================================================================

点评

请找菜刀大神给你..  发表于 2019-7-17 16:04
我想把菜刀王大神上面的脚本活学活用起来,大神可以给咱用这个脚本举个例子吗?  发表于 2019-7-17 15:58
你的要求变了..写法完全不同..不能用回原來的写法..  发表于 2019-7-17 12:03
那咋弄啊。。  发表于 2019-7-16 22:16
你要的和菜刀大大写的根本无关系..  发表于 2019-7-16 22:05
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 18:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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