Project1

标题: 请教我方或敌方有2人或2人以上有状态100时平分受到的伤害... [打印本页]

作者: taeckle    时间: 2019-7-16 18:13
标题: 请教我方或敌方有2人或2人以上有状态100时平分受到的伤害...
本帖最后由 taeckle 于 2019-7-16 21:57 编辑

先描述一下这个脚本:

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

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


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


作者: 灯笼菜刀王    时间: 2019-7-16 19:39
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号状态下" 这个函数来判断了
作者: taeckle    时间: 2019-7-16 21:40
本帖最后由 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

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




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