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

Project1

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

[已经解决] 如何在普通版本下实现会心一击和属性挂钩

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
跳转到指定楼层
1
发表于 2011-4-28 22:41:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
最近在用RTAB时发现实现会心一击只要在属性中选择必杀就可以了。
不知道这种效果能否在不用RTAB的普通版中实现?
如果有的话求教具体方法
步兵中尉

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2011-4-29 12:35:28 | 只看该作者
武器和技能都要么?

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
3
 楼主| 发表于 2011-4-29 21:42:39 | 只看该作者
两个都实现最好,如果麻烦的话就实现装备也可以
步兵中尉
回复 支持 反对

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
4
发表于 2011-4-29 22:01:53 | 只看该作者
  1. class Game_Battler
  2.   Critical_element_id = 17 #17号属性必杀
  3.   def attack_effect(attacker)
  4.     self.critical = false
  5.     hit_result = (rand(100) < attacker.hit)
  6.     if hit_result == true
  7.       atk = [attacker.atk - self.pdef / 2, 0].max
  8.       self.damage = atk * (20 + attacker.str) / 20
  9.       self.damage *= elements_correct(attacker.element_set)
  10.       self.damage /= 100
  11.       if self.damage > 0
  12.         if (rand(100) < 4 * attacker.dex / self.agi) or attacker.element_set.include?(Critical_element_id)
  13.           # ↑修改此句
  14.           self.damage *= 2
  15.           self.critical = true
  16.         end
  17.         if self.guarding?
  18.           self.damage /= 2
  19.         end
  20.       end
  21.       if self.damage.abs > 0
  22.         amp = [self.damage.abs * 15 / 100, 1].max
  23.         self.damage += rand(amp+1) + rand(amp+1) - amp
  24.       end
  25.       eva = 8 * self.agi / attacker.dex + self.eva
  26.       hit = self.damage < 0 ? 100 : 100 - eva
  27.       hit = self.cant_evade? ? 100 : hit
  28.       hit_result = (rand(100) < hit)
  29.     end
  30.     if hit_result == true
  31.       remove_states_shock
  32.       self.hp -= self.damage
  33.       @state_changed = false
  34.       states_plus(attacker.plus_state_set)
  35.       states_minus(attacker.minus_state_set)
  36.     else
  37.       self.damage = "Miss"
  38.       self.critical = false
  39.     end
  40.     return true
  41.   end
  42.   def skill_effect(user, skill)
  43.     self.critical = false
  44.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  45.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  46.       return false
  47.     end
  48.     effective = false
  49.     effective |= skill.common_event_id > 0
  50.     hit = skill.hit
  51.     if skill.atk_f > 0
  52.       hit *= user.hit / 100
  53.     end
  54.     hit_result = (rand(100) < hit)
  55.     effective |= hit < 100
  56.     if hit_result == true
  57.       power = skill.power + user.atk * skill.atk_f / 100
  58.       if power > 0
  59.         power -= self.pdef * skill.pdef_f / 200
  60.         power -= self.mdef * skill.mdef_f / 200
  61.         power = [power, 0].max
  62.       end
  63.       rate = 20
  64.       rate += (user.str * skill.str_f / 100)
  65.       rate += (user.dex * skill.dex_f / 100)
  66.       rate += (user.agi * skill.agi_f / 100)
  67.       rate += (user.int * skill.int_f / 100)
  68.       self.damage = power * rate / 20
  69.       self.damage *= elements_correct(skill.element_set)
  70.       self.damage /= 100
  71.       if self.damage > 0
  72.         if self.guarding?
  73.           self.damage /= 2
  74.         end
  75.       end
  76.       # 添加处↓
  77.       if skill.element_set.include?(Critical_element_id)
  78.         self.damage *= 2
  79.         self.critical = true
  80.       end
  81.       # 添加处↑
  82.       if skill.variance > 0 and self.damage.abs > 0
  83.         amp = [self.damage.abs * skill.variance / 100, 1].max
  84.         self.damage += rand(amp+1) + rand(amp+1) - amp
  85.       end
  86.       eva = 8 * self.agi / user.dex + self.eva
  87.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  88.       hit = self.cant_evade? ? 100 : hit
  89.       hit_result = (rand(100) < hit)
  90.       effective |= hit < 100
  91.     end
  92.     if hit_result == true
  93.       if skill.power != 0 and skill.atk_f > 0
  94.         remove_states_shock
  95.         effective = true
  96.       end
  97.       last_hp = self.hp
  98.       self.hp -= self.damage
  99.       effective |= self.hp != last_hp
  100.       @state_changed = false
  101.       effective |= states_plus(skill.plus_state_set)
  102.       effective |= states_minus(skill.minus_state_set)
  103.       if skill.power == 0
  104.         self.damage = ""
  105.         unless @state_changed
  106.           self.damage = "Miss"
  107.         end
  108.       end
  109.     else
  110.       self.damage = "Miss"
  111.     end
  112.     unless $game_temp.in_battle
  113.       self.damage = nil
  114.     end
  115.     return effective
  116.   end
  117. end
复制代码

评分

参与人数 1星屑 +400 梦石 +2 收起 理由
「旅」 + 400 + 2

查看全部评分


http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
5
 楼主| 发表于 2011-4-30 00:10:13 | 只看该作者
最后询问一句,这个脚本包括特技了吗?

点评

感谢,马上认可  发表于 2011-4-30 13:19
包括了,如果不想要特技的话把skill_effect(user, skill)和下面的全部删掉就可以了  发表于 2011-4-30 10:29
步兵中尉
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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