楼主: lirn

[已经解决] 求命中回避上限下限突破的方法以及一些相关的附带问题。

[复制链接]

Mr.Gandum

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

贵宾

发表于 2012-6-24 19:29:09 | 显示全部楼层
本帖最后由 feizhaodan 于 2012-6-25 12:41 编辑
lirn 发表于 2012-6-24 19:21
1:RAND产生的数字不是整数吗?
2:首先,我是把回避给取消了,无论命中如何,都不会MISS;然后设置一个 ...


1,rand后面没有(x)的时候产生的是0-1之间的随机数。
2,我明白了。大概就是
  1. @result.missed = false
  2. @result.evaded = item_eva(user,item) > (item_hit(user,item)-1+rand(item_hit(user,item)))
复制代码
第二行的解释,
  1. @result.missed = false
复制代码
这行让攻击永远发生命中判定。
  1. @result.evaded = item_eva(user,item) > ((item_hit(user,item)-1..item_hit(user,item)).to_a.sample)
复制代码
这行让回避判定变为当被攻击方的回避大于攻击方德(命中-1)这个数值到(命中)数值之间的一个随机数时,回避攻击。

是这样么?���
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2012-6-24 19:53:24 | 显示全部楼层
没错,不过这个之前还有个物品是否能使用的@result.used = item_test(user, item),那是不是在在前面加上@result.used &&  ?

即

@result.evaded = (@result.used && item_eva(user,item) > ((item_hit(user,item)-1..item_hit(user,item)).to_a.sample))

回复

使用道具 举报

Mr.Gandum

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

贵宾

发表于 2012-6-24 20:06:12 | 显示全部楼层
本帖最后由 feizhaodan 于 2012-6-24 20:06 编辑
lirn 发表于 2012-6-24 19:53
没错,不过这个之前还有个物品是否能使用的@result.used = item_test(user, item),那是不是在在前面加上@r ...


是要加,但是你括号放错位置了。
这样方的话,最终将会变成
  1. true或者false > 数字
复制代码
这样。要把@result.used和其他的分开放。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2012-6-24 21:58:49 | 显示全部楼层
feizhaodan 发表于 2012-6-24 20:06
是要加,但是你括号放错位置了。
这样方的话,最终将会变成这样。要把@result.used和其他的分开放。 ...

QQ截图20120624215801.png

似乎不行呢。
回复

使用道具 举报

梦石
0
星屑
54
在线时间
434 小时
注册时间
2011-7-9
回帖
152
发表于 2012-6-25 00:12:59 | 显示全部楼层
路過。。。
招式庫有必中選項。。100迴 還是必中
D
回复

使用道具 举报

Mr.Gandum

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

贵宾

发表于 2012-6-25 08:54:23 | 显示全部楼层
lirn 发表于 2012-6-24 21:58
似乎不行呢。

把周边脚本放上来。只给个错误提示我不知道哪里错了。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2012-6-25 09:52:38 | 显示全部楼层
feizhaodan 发表于 2012-6-25 08:54
把周边脚本放上来。只给个错误提示我不知道哪里错了。

1.png

周边脚本?我基本上没动什么,用的两个都是在图书馆下的,作者都是后知后觉。
回复

使用道具 举报

Mr.Gandum

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

贵宾

发表于 2012-6-25 10:23:07 | 显示全部楼层
lirn 发表于 2012-6-25 09:52
周边脚本?我基本上没动什么,用的两个都是在图书馆下的,作者都是后知后觉。 ...

是出错的脚本的附近= =

点评

感谢帮助  发表于 2012-6-26 16:35
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2012-6-25 10:38:37 | 显示全部楼层
  1. #--------------------------------------------------------------------------
  2.   # ● 应用技能/物品的效果
  3.   #--------------------------------------------------------------------------
  4.   def item_apply(user, item)
  5.     @result.clear
  6.     @result.used = item_test(user, item)
  7.     @result.missed = (@result.used && rand >= item_hit(user, item))  # 命中判定
  8.     @result.evaded = (!@result.missed && rand < item_eva(user, item))# 回避判定
  9.     if @result.hit?
  10.       unless item.damage.none?
  11.         @result.critical = (rand < item_cri(user, item))
  12.         make_damage_value(user, item)
  13.         execute_damage(user)
  14.       end
  15.       item.effects.each {|effect| item_effect_apply(user, item, effect) }
  16.       item_user_effect(user, item)
  17.     end
  18.   end
复制代码
这是正常的原脚本

点评

原脚本正常,就是将你写下的替换成在第7,第8行之后,第8行错误,也就是 @result.missed = false@result.evaded = item_eva(user,item) ……这句出错。  发表于 2012-6-25 11:14
难道是在原脚本状态下出错的?不是的话把你改的放出来并且指出哪行错了  发表于 2012-6-25 10:42
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1019 小时
注册时间
2012-4-25
回帖
693
 楼主| 发表于 2012-6-25 11:15:50 | 显示全部楼层
feizhaodan 发表于 2012-6-25 10:23
是出错的脚本的附近= =

替换之后

第8行,也就是@result.evaded = item_eva(user,item) > ((item_hit(user,item)-1..item_hit(user,item)).to_a.sample)

这句出错

点评

在我的那楼更新了下,你看看把。  发表于 2012-6-25 12:41
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部