Project1

标题: 会心一击技能 [打印本页]

作者: 神蛋威武    时间: 2011-2-11 09:20
标题: 会心一击技能
本帖最后由 fux2 于 2011-2-13 14:20 编辑

我想做一个使用后下回合必定打出会心一击的技能。
我让技能放出后触发公共事件,公共事件把变量15设成了100,然后把GAME_BATTLER3里的会心一击修正脚本改成了如下
if rand(100) < $game_variables[15]
         self.damage *= 2
         self.critical = true
       end
else
      if rand(100) < 4 * attacker.dex / self.dex
      self.damage *= 2
      self.critical = true
     end
end

但结果是所有人物(包括怪)都会打出会心一击= =怎么能只让技能使用者打出会心一击?
后来又不知道是什么情况,说我脚本的363行(就是整个gamebattler的最后一行)有问题
作者: 帅气的袋鼠    时间: 2011-2-11 10:44
把判断条件变为“如果当前角色拥有状态X的时候”试试看...

脚本盲在语句方面帮不上忙,有请高手另行补上...
作者: 觉醒の赤翼    时间: 2011-2-11 16:19
本帖最后由 觉醒の赤翼 于 2011-2-11 16:19 编辑

这个attacker是双方共用的,所以应该加一个状态判断
你应该会写所以我就不写了,要的话吱一声
作者: 神蛋威武    时间: 2011-2-11 18:41
回复 觉醒の赤翼 的帖子

= =你写一下吧。。我脚本盲。这个还是我看了1个小时F1帮助以后好不容易憋出来的
作者: 忧雪の伤    时间: 2011-2-11 18:44
  1. if rand(100) < $game_variables[15]
  2.          self.damage *= 2
  3.          self.critical = true
  4.        end
复制代码
这样写的话不是100%变成会心吗……
作者: 神蛋威武    时间: 2011-2-11 18:45
回复 忧雪の伤 的帖子

嗯= =我就是想要100%发动会心一击。。。
作者: 神蛋威武    时间: 2011-2-11 19:18
回复 神蛋威武 的帖子

我把脚本改成了
     if  $game_variables[15]=100

          $game_actors[1].damage *= 2

          $game_actors[1].critical = true

        end
      else
          if rand(100) < 4 * attacker.dex / self.agi

          self.damage *= 2

          self.critical = true

        end
这次说我这段的第一行有问题。。。。求解啊
作者: 后知后觉    时间: 2011-2-11 19:24
if attacker.state?(66)   # 如果攻击者带有第66号状态
  self.damage *= 2
  self.critical = true
else
  默认的算法
end

然后把该状态设置为 不可抵抗
并且1回合后100%解除.当然了.几个回合后解除可以根据需要设置
作者: 忧雪の伤    时间: 2011-2-11 19:37
本帖最后由 忧雪の伤 于 2011-2-11 19:38 编辑
神蛋威武 发表于 2011-2-11 19:18
回复 神蛋威武 的帖子

我把脚本改成了
  1.    if  $game_variables[15] == 100
复制代码

作者: 觉醒の赤翼    时间: 2011-2-11 21:14
懒的说明了,直接丢工程
修改的地方还是在Game_Battle3 Project1.rar (186.17 KB, 下载次数: 86)
作者: 神蛋威武    时间: 2011-2-12 10:20
回复 后知后觉 的帖子

= =你这个我试过了,但是不行啊,还是没有打出暴击
作者: 觉醒の赤翼    时间: 2011-2-12 11:47
哎,还是得自己写

1.首先要有一个状态,比如我那里面的17号就是专注,动画还有几回合解除什么的自己解决

2.在Game_Battler3的57行左右,将
if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end

(应该是这个吧)

改成

        if attacker.state?(17)#17号状态,去翻数据库的17号状态和81号特技   
          self.damage *= 2
          self.critical = true
        elsif rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end

差不多就是这样,有问题接着问(为了认可)
作者: 神蛋威武    时间: 2011-2-12 12:08
回复 觉醒の赤翼 的帖子

= =那个,问下else,下一行if,和elsif有啥区别
作者: 觉醒の赤翼    时间: 2011-2-12 12:09
本帖最后由 觉醒の赤翼 于 2011-2-12 12:10 编辑

回复 神蛋威武 的帖子

f1自行搜索
elsif

然后选择条件分歧的那个




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