查看: 2283|回复: 6

[已经解决] 请问如果根据角色的位置来决定被攻击的几率

[复制链接]
梦石
0
星屑
2970
在线时间
390 小时
注册时间
2010-12-4
回帖
104
发表于 2017-2-21 21:57:08 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 letppigogo 于 2017-2-21 22:24 编辑

请问如果根据角色的位置来决定被攻击的几率,不是前卫中卫后卫那种。
比如,从左往右开始数,第一个是1号位,第二个是2号位,以此类推。请问如何设置1号位的角色被攻击的几率比2、3 、4位高呢?
梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2017-2-21 23:52:36 | 显示全部楼层
普攻情况下,攻击队伍第一个角色几率大
[pre lang="ruby"]#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# 处理同伴的类。包含金钱以及物品的信息。本类的实例
# 请参考 $game_party。
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # ● 对像角色的随机确定
  #     hp0 : 限制为 HP 0 的角色
  #--------------------------------------------------------------------------
def random_target_actor(hp0 = false)
    # 初始化轮流
    roulette = []
    # 循环
    for actor in @actors
      # 符合条件的场合
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
=begin
         # 获取角色职业的位置 [位置]
         position = $data_classes[actor.class_id].position
         #position 位置(0:前卫,1:中卫,2:后卫)。
         #即是前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
         n = 4 - position
=end
        
        #角色在队伍第一位就被攻击率最高,随后依次降低,如果不是这种规律换算法
        n = self.actors.size- self.actors.index(actor)
        # 添加角色的轮流 n 回
        n.times do
          roulette.push(actor)
        end
      end
    end
    # 轮流大小为 0 的情况
    if roulette.size == 0
      return nil
    end
    # 转轮盘赌,决定角色
    return  roulette[rand(roulette.size)]
  end
end[/pre]

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
2970
在线时间
390 小时
注册时间
2010-12-4
回帖
104
 楼主| 发表于 2017-2-22 08:14:34 | 显示全部楼层
本帖最后由 letppigogo 于 2017-2-22 08:18 编辑
夜狠简单 发表于 2017-2-21 23:52
[fold=普攻情况下,攻击队伍第一个角色几率大]
#======================================================= ...


万分感谢,不过请问一下,20行的=begin和26=end是什么作用?是讲21到25行无效话吗?
另外还有,如果我只是要提高第一个角色的被攻击率,另外几个的几率相同的话,要如何调整?
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2017-2-22 12:01:50 | 显示全部楼层
letppigogo 发表于 2017-2-22 08:14
万分感谢,不过请问一下,20行的=begin和26=end是什么作用?是讲21到25行无效话吗?
另外还有,如果我只 ...

用条件语句或者判断语句判断 self.actors.index(actor) 的值
self.actors.index(actor)==0的时候是队伍中一号队员 1的时候是队伍中二号队员
case  self.actors.index(actor)
when 0
n=4
else #其他角色
n=2
end
回复

使用道具 举报

梦石
0
星屑
2970
在线时间
390 小时
注册时间
2010-12-4
回帖
104
 楼主| 发表于 2017-2-22 15:05:43 | 显示全部楼层
夜狠简单 发表于 2017-2-22 12:01
用条件语句或者判断语句判断 self.actors.index(actor) 的值
self.actors.index(actor)==0的时候是队伍中 ...

请问,是这样子吗?

        # 获取角色职业的位置 [位置]
#        position = $data_classes[actor.class_id].position
        # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
#        n = 4 - position
        #角色在队伍第一位就被攻击率最高,随后依次降低,如果不是这种规律换算法
        n = self.actors.size- self.actors.index(actor)
        case  self.actors.index(actor)
        when 0
        n=4
        else #其他角色
        n=2
      end
        # 添加角色的轮流 n 回
        n.times do
          roulette.push(actor)
        end
      end
    end

点评

谢谢你的帮助  发表于 2017-2-22 18:09
嗯,不过这些写以后前面那句n = self.actors.size- self.actors.已经没啥用了,可以注释掉  发表于 2017-2-22 17:10
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部