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

Project1

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

[已经解决] 关于角色防具装备后会心率增加

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
257 小时
注册时间
2007-6-6
帖子
219
跳转到指定楼层
1
发表于 2011-5-12 14:28:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  如何实现防具装备后角色的会心率增加?但是又不影响其他角色和怪的会心率,谢谢各位。

Lv1.梦旅人

梦石
0
星屑
129
在线时间
0 小时
注册时间
2011-5-12
帖子
3
2
发表于 2011-5-12 14:46:45 | 只看该作者
路过了啊,进来帮忙支持一下啊
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
30 小时
注册时间
2011-4-22
帖子
9
3
发表于 2011-5-12 16:24:56 | 只看该作者
Game_Battler3的58行开始
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
指的是100中的随机数小于4倍乘以攻击者的灵巧除以受伤害者的速度时,伤害加倍,也就是会心
所以你只要调高武器加的灵巧(比如调成999),应该能次次出会心
如果你不介意灵巧影响到其他因素(比如攻击击中判定,或者一些与灵巧相关的技能的威力)可以这样做比较简单
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
257 小时
注册时间
2007-6-6
帖子
219
4
 楼主| 发表于 2011-5-12 16:46:58 | 只看该作者
回复 lilihappies 的帖子

这样没意义了- -我想把会心的算法去掉然后用变量来控制会心率,请问下“if攻击者是角色1”这个怎么写成程序语言?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
30 小时
注册时间
2011-4-22
帖子
9
5
发表于 2011-5-12 17:44:26 | 只看该作者
本帖最后由 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
  写的不太好,你可以看着自己改……   
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
257 小时
注册时间
2007-6-6
帖子
219
6
 楼主| 发表于 2011-5-12 19:54:41 | 只看该作者
回复 lilihappies 的帖子

太谢谢了。。不过贪得无厌一下- -!要实现防具装备后会心+20%(比方),卸下后会心-20%,应该怎么弄?太麻烦的话就不用写了,你已经帮了我很大的忙了。。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
30 小时
注册时间
2011-4-22
帖子
9
7
发表于 2011-5-12 21:43: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%的会心加成也就消失了
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
257 小时
注册时间
2007-6-6
帖子
219
8
 楼主| 发表于 2011-5-12 22:35:36 | 只看该作者
回复 lilihappies 的帖子

了解了,太谢谢你了!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
40 小时
注册时间
2011-4-30
帖子
62
9
发表于 2011-5-18 02:48:21 | 只看该作者

脚本还是有点不懂..
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
257 小时
注册时间
2007-6-6
帖子
219
10
 楼主| 发表于 2011-5-20 14:55:45 | 只看该作者
回复 shidou 的帖子

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 23:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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