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

Project1

 找回密码
 注册会员
搜索
查看: 1989|回复: 3
打印 上一主题 下一主题

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
745
在线时间
1 小时
注册时间
2015-3-12
帖子
2
跳转到指定楼层
1
发表于 2015-3-12 11:54:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

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

感谢大神

Lv2.观梦者

梦石
0
星屑
331
在线时间
25 小时
注册时间
2013-2-17
帖子
15
4
发表于 2018-2-13 16:09:24 | 只看该作者
谢谢,我也用到了。
Querer es poder.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
745
在线时间
1 小时
注册时间
2015-3-12
帖子
2
3
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

2
发表于 2015-3-12 12:02:24 | 只看该作者
脚本中有关于前后卫位置的设定。
具体在Game_Party中的random_target_actor方法:
RUBY 代码复制
  1. def random_target_actor(hp0 = false)
  2.     # 初始化轮流
  3.     roulette = []
  4.     # 循环
  5.     for actor in @actors
  6.       # 符合条件的场合
  7.       if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
  8.         # 获取角色职业的位置 [位置]
  9.         position = $data_classes[actor.class_id].position
  10.         # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
  11.         n = 4 - position
  12.         # 添加角色的轮流 n 回
  13.         n.times do
  14.           roulette.push(actor)
  15.         end
  16.       end
  17.     end
  18.     # 轮流大小为 0 的情况
  19.     if roulette.size == 0
  20.       return nil
  21.     end
  22.     # 转轮盘赌,决定角色
  23.     return roulette[rand(roulette.size)]
  24.   end

这里面的这个部分:
RUBY 代码复制
  1. # 前卫的话 n = 4、中卫的话 n = 3、后卫的话 n = 2
  2. n = 4 - position

position代表角色位置的编号,前卫为0,中卫为1,后卫为2,计算出的权重相应为4,3,2
如要更改,可以这样(用下面这个脚本替换上面的):
RUBY 代码复制
  1. case position
  2. when 0
  3.   n = 7
  4. when 1
  5.   n = 2
  6. when 2
  7.   n = 1
  8. else
  9.   n = 0
  10. end

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 16:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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