查看: 2433|回复: 4

[已经解决] 攻击回复效果范围

[复制链接]
梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
发表于 2016-4-24 17:36:25 | 显示全部楼层 |阅读模式

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

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

×
怎样随机攻击5个,6个.7个敌人和随机回复两个,3个,四个5个己方队友的HP
QQ截图20121216141427.png
梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-4-24 20:23:31 | 显示全部楼层
本帖最后由 夜狠简单 于 2016-4-24 20:31 编辑


360截图20160424202114072.jpg
[pre lang="ruby"]module RPG
  class UsableItem < BaseItem
    def initialize
      super
      @scope = 0
      @occasion = 0
      @speed = 0
      @animation_id = 0
      @common_event_id = 0
      @base_damage = 0
      @variance = 20
      @atk_f = 0
      @spi_f = 0
      @physical_attack = false
      @damage_to_mp = false
      @absorb_damage = false
      @ignore_defense = false
      @element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    def for_opponent?
      return [1, 2, 3, 4, 5, 6].include?(@scope)
    end
    def for_friend?
      return [7, 8, 9, 10, 11].include?(@scope)
    end
    def for_dead_friend?
      return [9, 10].include?(@scope)
    end
    def for_user?
      return [11].include?(@scope)
    end
    def for_one?
      return [1, 3, 4, 7, 9, 11].include?(@scope)
    end
    def for_two?
      return [5].include?(@scope)
    end
    def for_three?
      return [6].include?(@scope)
    end
    def for_random?
      return [4, 5, 6].include?(@scope)
    end
    def for_all?
      return [2, 8, 10].include?(@scope)
    end
    def dual?
      return [3].include?(@scope)
    end
    def need_selection?
      return [1, 3, 7, 9].include?(@scope)
    end
    def battle_ok?
      return [0, 1].include?(@occasion)
    end
    def menu_ok?
      return [0, 2].include?(@occasion)
    end
    attr_accessor :scope
    attr_accessor :occasion
    attr_accessor :speed
    attr_accessor :animation_id
    attr_accessor :common_event_id
    attr_accessor :base_damage
    attr_accessor :variance
    attr_accessor :atk_f
    attr_accessor :spi_f
    attr_accessor :physical_attack
    attr_accessor :damage_to_mp
    attr_accessor :absorb_damage
    attr_accessor :ignore_defense
    attr_accessor :element_set
    attr_accessor :plus_state_set
    attr_accessor :minus_state_set
  end
end
[/pre]


[pre lang="ruby"]#--------------------------------------------------------------------------
  # ● 生成技能或物品目标
  #     obj : 技能或物品
  #--------------------------------------------------------------------------
  def make_obj_targets(obj)
    targets = []
    if obj.for_opponent?
      if obj.for_random?
        if obj.for_one?         # 敌随机单体
          number_of_targets = 1
        elsif obj.for_two?      # 敌随机二体
          number_of_targets = 2
        else                    # 敌随机三体
          number_of_targets = 3
        end
        number_of_targets.times do
          targets.push(opponents_unit.random_target)
        end
      elsif obj.dual?           # 敌单体连续
        targets.push(opponents_unit.smooth_target(@target_index))
        targets += targets
      elsif obj.for_one?        # 敌单体
        targets.push(opponents_unit.smooth_target(@target_index))
      else                      # 敌全体
        targets += opponents_unit.existing_members
      end
    elsif obj.for_user?         # 使用者
      targets.push(battler)
    elsif obj.for_dead_friend?
      if obj.for_one?           # 我方单体(无法行动)
        targets.push(friends_unit.smooth_dead_target(@target_index))
      else                      # 我方全体(无法行动)
        targets += friends_unit.dead_members
      end
    elsif obj.for_friend?
      if obj.for_one?           # 我方单体
        targets.push(friends_unit.smooth_target(@target_index))
      else                      # 我方全体
        targets += friends_unit.existing_members
      end
    end
    return targets.compact
  end[/pre]
回复

使用道具 举报

梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
 楼主| 发表于 2016-4-24 21:34:33 | 显示全部楼层
夜狠简单 发表于 2016-4-24 20:23
module RPG
  class UsableItem < BaseItem
    def initialize

多谢了,可以用了
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-4-24 21:43:06 | 显示全部楼层
fjm 发表于 2016-4-24 21:34
多谢了,可以用了

增加4、5、6个随机敌人[pre lang="ruby"]=begin
scope
效果的范围

0:无
1:敌方单体
2:敌方全体
3:敌方单体 连击
4:敌方单体 随机目标
5:敌方二体 随机目标
6:敌方三体 随机目标
7:我方单体
8:我方全体
9:我方单个濒死者
10:我方所有濒死者
11:使用者自身

for_opponent?
判断效果范围是否对敌方队员有效,当效果范围之值为 1、2、3、4、5 或 6 时返回 true 。

for_friend?
判断效果范围是否对己方队员有效,当效果范围之值为 7、8、9、10 或 11 时返回 true 。

for_dead_friend?
判断效果范围是否对无法战斗的己方队员有效,当效果范围之值为 9或 10 时返回 true 。

for_user?
判断效果范围是否对使用者本身有效,当效果范围之值为 11 时返回 true 。

for_one?
判断效果范围是否对单体队员有效,当效果范围之值为 1、3、4、7、9 或 11 时返回 true 。

for_two?
判断效果范围是否对二体队员有效,当效果范围之值为 5 时返回 true 。

for_three?
判断效果范围是否对三体队员有效,当效果范围之值为  6 时返回 true 。

for_random?
判断效果范围是否对随机队员有效,当效果范围之值为 4、5 或 6 时返回 true 。

for_all?
判断效果范围是否对全体队员有效,当效果范围之值为 2、8 或 10 时返回 true 。

dual?
判断效果范围是否对单体敌方队员连续有效,当效果范围之值为 3 时返回 true 。

need_selection?
判断效果范围是否对需要选取目标有效,当效果范围之值为 1、3、7 或 9 时返回 true 。

battle_ok?
判断物品是否可以在战斗中使用,当使用场合为 0 或 1 时返回 true 。

menu_ok?
判断物品是否可以在菜单中使用,当使用场合为 0 或 2 时返回 true 。

=end
module RPG
  class UsableItem < BaseItem
    def initialize
      super
      @scope = 0
      @occasion = 0
      @speed = 0
      @animation_id = 0
      @common_event_id = 0
      @base_damage = 0
      @variance = 20
      @atk_f = 0
      @spi_f = 0
      @physical_attack = false
      @damage_to_mp = false
      @absorb_damage = false
      @ignore_defense = false
      @element_set = []
      @plus_state_set = []
      @minus_state_set = []
    end
    def for_opponent?
      #添加随机4、5、6个敌人的scope标志12,13,14
      return [1, 2, 3, 4, 5, 6,12,13,14].include?(@scope)
    end
    def for_friend?
      return [7, 8, 9, 10, 11].include?(@scope)
    end
    def for_dead_friend?
      return [9, 10].include?(@scope)
    end
    def for_user?
      return [11].include?(@scope)
    end
    def for_one?
      return [1, 3, 4, 7, 9, 11].include?(@scope)
    end
    def for_two?
      return [5].include?(@scope)
    end
    def for_three?
      return [6].include?(@scope)
    end
    #添加随机4、5、6个敌人
    def for_four?
      return [12].include?(@scope)
    end
    def for_five?
      return [13].include?(@scope)
    end
    def for_six?
      return [14].include?(@scope)
    end
    #########
    def for_random?
      #添加随机4、5、个敌人的scope标志12,13,14
      return [4, 5, 6,12,13,14].include?(@scope)
    end
    def for_all?
      return [2, 8, 10].include?(@scope)
    end
    def dual?
      return [3].include?(@scope)
    end
    def need_selection?
      return [1, 3, 7, 9].include?(@scope)
    end
    def battle_ok?
      return [0, 1].include?(@occasion)
    end
    def menu_ok?
      return [0, 2].include?(@occasion)
    end
    attr_accessor :scope
    attr_accessor :occasion
    attr_accessor :speed
    attr_accessor :animation_id
    attr_accessor :common_event_id
    attr_accessor :base_damage
    attr_accessor :variance
    attr_accessor :atk_f
    attr_accessor :spi_f
    attr_accessor :physical_attack
    attr_accessor :damage_to_mp
    attr_accessor :absorb_damage
    attr_accessor :ignore_defense
    attr_accessor :element_set
    attr_accessor :plus_state_set
    attr_accessor :minus_state_set
  end
end
  

class Game_BattleAction
  #--------------------------------------------------------------------------
  # ● 生成技能或物品目标
  #     obj : 技能或物品
  #--------------------------------------------------------------------------
  def make_obj_targets(obj)
    targets = []
    #范围为4个的物品
    #$data_items[x].scope=12
    #范围为5个的物品
    #$data_items[x].scope=13
    #范围为4个的技能
    #$data_skills[x].scope=12
    #范围为5个的技能
    $data_skills[83].scope=13
    #范围为6个的技能
    $data_skills[84].scope=14
    #

    if obj.for_opponent? #判断效果范围是否对敌方队员有效,当效果范围之值为 1、2、3、4、5 或 6 时返回 true 。
      if obj.for_random?#判断效果范围是否对随机队员有效,当效果范围之值为 4、5 或 6 时返回 true 。
        if obj.for_one?         # 敌随机单体
          number_of_targets = 1
        elsif obj.for_two?      # 敌随机二体
          number_of_targets = 2
        elsif  obj.for_three?     # 敌随机三体
          number_of_targets = 3
        elsif obj.for_four?      #敌随机四体
          number_of_targets = 4
        elsif obj.for_five?      #敌随机五体
          number_of_targets = 5
        else
          number_of_targets = 6 #敌随机六+体
        end
        number_of_targets.times do
          targets.push(opponents_unit.random_target)
        end
      elsif obj.dual?           # 敌单体连续
        targets.push(opponents_unit.smooth_target(@target_index))
        targets += targets
      elsif obj.for_one?        # 敌单体
        targets.push(opponents_unit.smooth_target(@target_index))
      else                      # 敌全体
        targets += opponents_unit.existing_members
      end
    elsif obj.for_user?         # 使用者
      targets.push(battler)
    elsif obj.for_dead_friend?
      if obj.for_one?           # 我方单体(无法行动)
        targets.push(friends_unit.smooth_dead_target(@target_index))
      else                      # 我方全体(无法行动)
        targets += friends_unit.dead_members
      end
    elsif obj.for_friend?
      if obj.for_one?           # 我方单体
        targets.push(friends_unit.smooth_target(@target_index))
      else                      # 我方全体
        targets += friends_unit.existing_members
      end
    end
    return targets.compact
  end
end[/pre]

优化.zip

807.09 KB, 下载次数: 59

评分

参与人数 1梦石 +2 收起 理由
正太君 + 2 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
2245
在线时间
1015 小时
注册时间
2015-10-17
回帖
1077
 楼主| 发表于 2016-4-25 17:32:18 | 显示全部楼层
夜狠简单 发表于 2016-4-24 21:43
[fold=增加4、5、6个随机敌人]=begin
scope
效果的范围

多谢,RMVA中怎样实现这效果,现在我主要用RMVA做游戏

点评

VA有自己的区!VA有自己的区!VA有自己的区!  发表于 2016-4-25 18:34
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部