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

Project1

 找回密码
 注册会员
搜索

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

查看数: 7694 | 评论数: 22 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-6-23 23:03

正文摘要:

新人的话不是很懂脚本,尝试弄了几天,还是不行,搜索过发觉只有一般数值突破上限, 自己姑且在脚本找到几个吧。 Game_Battler下面第 @result.missed = (@result.used && rand >= item_hit(user, item)) 问题是 ...

回复

lirn 发表于 2012-6-26 16:37:29
以后发现问题再来提问
lirn 发表于 2012-6-26 11:42:05
本帖最后由 lirn 于 2012-6-26 16:47 编辑
  1.   @result.missed = (@result.used && (rand+1) >= (item_hit(user,item)-item_eva(user,item)))
  2.     @result.evaded = false
复制代码
我稍微改了一下,普通攻击,技能尚未测试,大概做到了命中减回避大于100就必中,50大概是半中,25%的话每10次大概都有2-3次MISS。

为什么RAND后面要加1?,命中与回避相同的的时候,HIT-EVA应该=0吧。


出现问题了……防御也MISS了……似乎技能是必然MISS,即使对方回避率为0……错在哪里?


====================================================================

问题是大概是找到了,物理系技能返回的是回避,物理技能返回的是魔法回避,这些技能对自己也有的命中与回避也有影响,但不知道必中的类型是哪个,也不知道
  1.   def item_hit(user, item)
  2.     rate = item.success_rate * 0.01         # 取得成功率
  3.     rate *= user.hit if item.physical?      # 物理攻击:计算命中率的乘积
  4.     rate *= user.hit if item.magical?
  5.     return rate                             # 返回计算后的命中率
  6.   end
复制代码
在这个公式当中出现了问题,比如说技能成功率为50%,命中200,回避100,那么实际的计算公式是200*0.5-100=0,而不是(200-100)*0.5=50.


于是乎,改成这样,暂时还没发现问题
  1. #--------------------------------------------------------------------------
  2.   # ● 计算技能/物品的命中率
  3.   #--------------------------------------------------------------------------
  4.   def item_hit(user, item)
  5.        rate = item.success_rate * 0.01         # 取得成功率
  6.     rate *= (user.hit-eva) if item.physical?      # 物理攻击:计算命中率的乘积
  7.     rate *= (user.hit-mev) if item.magical?  #魔法攻击:计算命中率的乘积
  8.       return rate                             # 返回计算后的命中率
  9.   end
复制代码

  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 = false
复制代码
lirn 发表于 2012-6-25 17:26:49
feizhaodan 发表于 2012-6-25 10:23
是出错的脚本的附近= =

似乎有些可行,但是命中率有些奇怪,100命中打100回避的是百分百命中,100命中打110回避的是40%-50%命中

点评

十分感谢。  发表于 2012-6-25 17:43
不知道了。我这只是给你思路。具体自己学学吧。  发表于 2012-6-25 17:34
lirn 发表于 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
lirn 发表于 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 = ([email protected] && 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 = [email protected] = item_eva(user,item) ……这句出错。  发表于 2012-6-25 11:14
难道是在原脚本状态下出错的?不是的话把你改的放出来并且指出哪行错了  发表于 2012-6-25 10:42
feizhaodan 发表于 2012-6-25 10:23:07
lirn 发表于 2012-6-25 09:52
周边脚本?我基本上没动什么,用的两个都是在图书馆下的,作者都是后知后觉。 ...

是出错的脚本的附近= =

点评

感谢帮助  发表于 2012-6-26 16:35
feizhaodan 发表于 2012-6-25 08:54:23
lirn 发表于 2012-6-24 21:58
似乎不行呢。

把周边脚本放上来。只给个错误提示我不知道哪里错了。
s05s0039 发表于 2012-6-25 00:12:59
路過。。。
招式庫有必中選項。。100迴 還是必中
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-23 15:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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