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

Project1

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

【VX】敌人的行动优先值求解

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1433
在线时间
1705 小时
注册时间
2011-8-17
帖子
818
跳转到指定楼层
1
发表于 2011-12-15 19:09:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x

数据库里敌人下面的那些行动优先值的几率还是不太理解,求比较详细的说明(举例最佳)
roguelike求生RPG研发中....

Lv2.观梦者

梦石
0
星屑
448
在线时间
628 小时
注册时间
2011-9-27
帖子
3996
2
发表于 2011-12-15 19:15:15 | 只看该作者
本帖最后由 小白玩家 于 2011-12-15 19:27 编辑

同样的条件下优先值高的先执行,10最大,1最小
比如条件都是平时的话 敌人 攻击的优先值5 使用吸血技能优先值为10
那么敌人不会攻击,都是吸血了
如果 攻击优先值5 使用吸血的优先6 那么都有可能,吸血的几率大一点(差不太多
小白的理解,不对的请指出哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
3
发表于 2011-12-15 19:25:09 | 只看该作者
本帖最后由 wbsy8241 于 2011-12-15 19:30 编辑

所有行动值加起来再随机取最小值到最大值中间取一个值 来决定位置(我语言表达能力不行= =)

比如: 3 4 5 6
总值= 3+4+5+6 = 18
那各值的出现率是
3/18  4/18  5/18  6/18

随机1-18 比如是8
那(3+4)<8  (3+4+5)>8
所以用5的那个技能

PS:附图

点评

看了下脚本 发现不对 看楼下  发表于 2011-12-15 19:45
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

4
发表于 2011-12-15 19:33:54 | 只看该作者
以下转自Ace的帮助,不知道VX一不一样
[行动]中定义的行动中、在战斗中使用的将根据以下规则决定

(1)收集满足条件的行动。假如没有满足条件的行动将不进行任何行动。

(2)在满足条件的行动中,选择其中最高优先级的行动和与其优先级相差2以内的行动作为候补。

(3)在采用候补中、与最高优先级相差1与2的分别赋予最高优先级的2/3、1/3的采用几率。在有复数个相同优先级的行动时、其采用几率相等。

【例1】行动优先级为[5][5]时

各为50%。

【例2】行动优先级为[6][5][4][3]时

[6]为50%、[5]为33.3%(50%的2/3)、[4]为16.6(50%的1/3)、[3]不会做为候补。

【例3】行动优先级为[5][3][3]时

[5]为60%、[3][3]各为20%(60%的1/3)。

(4)根据候补的采用几率、使用随机数来决定。

不是这个就是楼上吧= =

点评

我明白了6达到了60% 10的话达到了100% O(∩_∩)O~~  发表于 2011-12-15 19:40
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
448
在线时间
628 小时
注册时间
2011-9-27
帖子
3996
5
发表于 2011-12-15 19:35:03 | 只看该作者
那么优先值为 5和 10的话
5是普通攻击
10是吸血
总值= 5+10 = 15?
为什么我测试的时候 一次普通攻击都不会出现呢
随机1-15吗

点评

(2)(3)的内容看看= =  发表于 2011-12-15 19:59
那么是你没贴全吗 楼上的例子里没有啊  发表于 2011-12-15 19:57
不对,假如有9的话,那就是[10]的是50%,[9]的是33.3%,7以下(含)不会执行=  发表于 2011-12-15 19:56
就是字面上得意思诶 10的话几率100% 不执行其他动作(同样条件下  发表于 2011-12-15 19:43
点评意味不明= =  发表于 2011-12-15 19:41
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
6
发表于 2011-12-15 19:58:36 | 只看该作者
本帖最后由 wbsy8241 于 2011-12-15 20:11 编辑
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成战斗行动
  3.   #--------------------------------------------------------------------------
  4.   def make_action
  5.     @action.clear
  6.     return unless movable?
  7.     available_actions = []
  8.     rating_max = 0
  9.     for action in enemy.actions  #循环所有行动
  10.       next unless conditions_met?(action)  #跳过条件不足项
  11.       if action.kind == 1
  12.         next unless skill_can_use?($data_skills[action.skill_id])  #跳过不能使用技能的情况
  13.       end
  14.       available_actions.push(action)  #添加到可用行动列表
  15.       rating_max = [rating_max, action.rating].max  #取所有值中间的最大优先值
  16.     end
  17.     ratings_total = 0
  18.     rating_zero = rating_max - 3  #设定最小优先值是最大优先值-3
  19.     for action in available_actions  #循环所有可用行动
  20.       next if action.rating <= rating_zero  #跳过优先值小于最小优先值项
  21.       ratings_total += action.rating - rating_zero  #总随机数+(此技能优先值-最小优先值)
  22.     end
  23.     return if ratings_total == 0
  24.     value = rand(ratings_total)  #随机取值
  25.     for action in available_actions  #循环所有可用行动
  26.       next if action.rating <= rating_zero  #跳过优先值小于最小优先值项
  27.       if value < action.rating - rating_zero  #随机值小于(此技能优先值-最小优先值)
  28.         @action.kind = action.kind              #的情况判断为使用这个技能
  29.         @action.basic = action.basic
  30.         @action.skill_id = action.skill_id
  31.         @action.decide_random_target
  32.         return
  33.       else
  34.         value -= action.rating - rating_zero  #随机值-(此技能优先值-最小优先值)
  35.       end
  36.     end
  37.   end
复制代码
例:
A:3
B:4
C:5
D:5
E:6

最大值为6
最小值为 6-3 = 3

排除优先值为 3 包括3以下的可能

重设技能的优先值
B = 4-3 = 1  (概率1/8)
C = 5-3 = 2  (概率2/8)
D = 5-3 = 2  (概率2/8)
E = 6-3 = 3  (概率3/8)
随机总值= 1+ 2+2+3 = 8

然后就根据我上面的回复计算得到用什么技能

我以前粗略看了没发现会排除 小于最大可能性-3的可能



证例3
【例3】行动优先级为[5][3][3]时

[5]为60%、[3][3]各为20%(60%的1/3)。

最小值是5-3 = 2
实际用于计算各值为
[5] = 5-2 = 3  (概率3/5 = 60%)
[3] = 3-2 = 1  (概率1/5 = 20%)
[3] = 3-2 = 1  (概率1/5 = 20%)

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
仲秋启明 + 200 + 2 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

虚空人形

梦石
0
星屑
4604
在线时间
2037 小时
注册时间
2011-8-11
帖子
3398

贵宾

7
发表于 2011-12-15 23:51:00 | 只看该作者
同样的条件下优先值高的执行概率高,10最大,0最小
在两行动的优先值差值相等时,两者的数值越大,优先值大的那个发动的概率越高。
比如条件都是平时的话 敌人 攻击的优先值5 某技能优先值为3,则敌人隔三差五发技能。
敌人 攻击的优先值9 某技能优先值为7,就基本都在攻击。
如果 攻击优先值10技能的优先8 就总是攻击。
我原以为是@wbsy8241那样,可我测试游戏时发现不是。

点评

我测试正常  发表于 2011-12-16 00:41
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-31 05:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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