Project1

标题: 关于角色防具装备后会心率增加 [打印本页]

作者: xiezhen6805    时间: 2011-5-12 14:28
标题: 关于角色防具装备后会心率增加
  如何实现防具装备后角色的会心率增加?但是又不影响其他角色和怪的会心率,谢谢各位。dsu_plus_rewardpost_czw
作者: yunda    时间: 2011-5-12 14:46
路过了啊,进来帮忙支持一下啊
作者: lilihappies    时间: 2011-5-12 16:24
Game_Battler3的58行开始
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
指的是100中的随机数小于4倍乘以攻击者的灵巧除以受伤害者的速度时,伤害加倍,也就是会心
所以你只要调高武器加的灵巧(比如调成999),应该能次次出会心
如果你不介意灵巧影响到其他因素(比如攻击击中判定,或者一些与灵巧相关的技能的威力)可以这样做比较简单
作者: xiezhen6805    时间: 2011-5-12 16:46
回复 lilihappies 的帖子

这样没意义了- -我想把会心的算法去掉然后用变量来控制会心率,请问下“if攻击者是角色1”这个怎么写成程序语言?
作者: lilihappies    时间: 2011-5-12 17:44
本帖最后由 lilihappies 于 2011-5-12 17:46 编辑

你好,不太清楚你想做成什么样的系统
会心貌似只在普通攻击有效,也就是我上面提到的那几行

要特定某个角色的算法,用if attacker.id == ?我是指放在那个算会心的函数里的情况下
不过这样就跟装备的防具没有关系了
如果你想装备了某样装备的某角色会心率发生变化(也就是用不同的算法)
把Game_Battler3那段换成:
      if self.damage > 0
        a = (attacker.is_a?(Game_Actor))?1:0 #(判定攻击者是否为游戏同伴)
        if a ==1
          a += (attacker.weapon_id == 5)?1:0 #(判定是否装备了id为5的武器,weapon_id和数字可以更换)
        end
        case a
        when 2
          #装备了id为5的武器的情况下,其他的算法,例如次次会心↓
          self.damage *= 2
          self.critical = true
        when 0..1
          if rand(100) < 4 * attacker.dex / self.agi
            self.damage *= 2
            self.critical = true
          end
        end
        if self.guarding?
          self.damage /= 2
        end
      end
  写的不太好,你可以看着自己改……   
作者: xiezhen6805    时间: 2011-5-12 19:54
回复 lilihappies 的帖子

太谢谢了。。不过贪得无厌一下- -!要实现防具装备后会心+20%(比方),卸下后会心-20%,应该怎么弄?太麻烦的话就不用写了,你已经帮了我很大的忙了。。
作者: lilihappies    时间: 2011-5-12 21:43
你可以到帮助里去看下,有一个叫角色数据类RPG::Actor,这里的attacker其实代入的是这个类得成员,所以从id到armor4_fix这些属性attacker都可以用
要换成防具只要将a += (attacker.weapon_id == 5)?1:0 这里的判断改成
a += (attacker.armor1_id  == 5)?1:0 ,那么判断的就是是否装备了id号为5的盾

你说的加上20%的会心,严格来计算的话
rand(100) < 4 * attacker.dex / self.agi
这个式子的右边取决于攻击者的灵巧和受到伤害对象的速度,假设都不变,即假设4 * attacker.dex / self.agi为常量a,在其不变的状态下增长20%的会心
rand(100)是在0~99间随机产生一个整数,视其为几率相等的状况,每个数产生的几率为1/100,那么低于常量a的情况有a%的可能,超出100%就是次次会心

要想让会心增长20%,假设修改了常量a,使其变为b
那么a(1+20%) = b,所以只要把rand(100) < 4 * attacker.dex / self.agi
改成rand(100) < 4 * attacker.dex * 1.2/ self.agi即可

把这个式子放在when 2的判定条件下,如果卸下装备了则自动回到when 0..1的条件,20%的会心加成也就消失了
作者: xiezhen6805    时间: 2011-5-12 22:35
回复 lilihappies 的帖子

了解了,太谢谢你了!
作者: shidou    时间: 2011-5-18 02:48

脚本还是有点不懂..
作者: xiezhen6805    时间: 2011-5-20 14:55
回复 shidou 的帖子

知道rand(100)是指0-99之间的一个随机值就OK了,其他的看英文都能看懂,模仿着写就行,- -自己编我就编不出来。。rand(100)<100指的就是100%会心率。。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1