查看: 2506|回复: 3

[已经解决] 怎么修改战斗中前中后卫被攻击的几率

[复制链接]
梦石
0
星屑
745
在线时间
1 小时
注册时间
2015-3-12
回帖
1
发表于 2015-3-12 11:54:26 | 显示全部楼层 |阅读模式

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

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

×
如题,我发现默认中,前卫中卫后卫被攻击的几率似乎是一样的。在脚本当中也没有发现有关前中后卫的区别。
那么问题来了,比如我想做一个游戏,法师职业是非常脆弱的,基本上被攻击就残血,那么我需要设置成前卫被攻击的几率是70%,中卫20%,后卫10%,应该如何弄?

感谢大神
梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-3-12 12:02:24 | 显示全部楼层
脚本中有关于前后卫位置的设定。
具体在Game_Party中的random_target_actor方法:
[pre lang="Ruby"]def random_target_actor(hp0 = false)
    # 初始化轮流
    roulette = []
    # 循环
    for actor in @actors
      # 符合条件的场合
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
        # 获取角色职业的位置 [位置]
        position = $data_classes[actor.class_id].position
        # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
        n = 4 - position
        # 添加角色的轮流 n 回
        n.times do
          roulette.push(actor)
        end
      end
    end
    # 轮流大小为 0 的情况
    if roulette.size == 0
      return nil
    end
    # 转轮盘赌,决定角色
    return roulette[rand(roulette.size)]
  end
[/pre]
这里面的这个部分:
[pre lang="Ruby"]# 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
n = 4 - position[/pre]
position代表角色位置的编号,前卫为0,中卫为1,后卫为2,计算出的权重相应为4,3,2
如要更改,可以这样(用下面这个脚本替换上面的):
[pre lang="Ruby"]case position
when 0
  n = 7
when 1
  n = 2
when 2
  n = 1
else
  n = 0
end[/pre]

评分

参与人数 1星屑 +200 收起 理由
hys111111 + 200 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
745
在线时间
1 小时
注册时间
2015-3-12
回帖
1
 楼主| 发表于 2015-3-12 12:36:06 | 显示全部楼层
RyanBern 发表于 2015-3-12 12:02
脚本中有关于前后卫位置的设定。
具体在Game_Party中的random_target_actor方法:
def random_target_actor ...

感谢大神。我有3年的的软件开发经验,懂C和python、我感觉我理解的应该没问题。跟您确认下,谢谢
改完是下面这样吧?

def random_target_actor(hp0 = false)
    # 初始化轮流
    roulette = []
    # 循环
    for actor in @actors
      # 符合条件的场合
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
        # 获取角色职业的位置 [位置]
        position = $data_classes[actor.class_id].position
        # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
        # n = 4 - position
        case position
          when 0
            n = 7
          when 1
            n = 2
          when 2
            n = 1
          else
            n = 0
        end
        # 添加角色的轮流 n 回
        n.times do
          roulette.push(actor)
        end
      end
    end
    # 轮流大小为 0 的情况
    if roulette.size == 0
      return nil
    end
    # 转轮盘赌,决定角色
    return roulette[rand(roulette.size)]
  end

点评

嗯,没问题,自己调参数就好了  发表于 2015-3-12 12:49
回复

使用道具 举报

梦石
0
星屑
380
在线时间
29 小时
注册时间
2013-2-17
回帖
12
发表于 2018-2-13 16:09:24 | 显示全部楼层
谢谢,我也用到了。
Querer es poder.
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部