查看: 4632|回复: 6

[RMVA发布] 被动技能

[复制链接]
梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2013-12-19 12:41:14 | 显示全部楼层 |阅读模式

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

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

×
不知道这个东西能不能发表,而且我是菜鸟,这东西又非常简单,而且有先例,只是先例里的计算方式和VA默认的计算方式有些不对,所以我重写了这个……
[pre lang="ruby" line="1"]=begin
# 被动技能脚本(只针对人物,敌人无效,因为敌人没有学会技能这一说)
# 使用方法:在数据库-技能-备注栏里添加备注(可多行),其中:
# <atk = i>            代表atk增加i
# <def = i>            代表def增加i
# <mat = i>            代表mat增加i
# <mdf = i>            代表mdf增加i
# <agi = i>            代表agi增加i
# <luk = i>            代表luk增加i
# <mhp = i>            代表mhp增加i
# <mmp = i>            代表mmp增加i
#
# <ratk = i>           代表atk增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <rdef = i>           代表def增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <rmat = i>           代表mat增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <rmdf = i>           代表mdf增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <ragi = i>           代表agi增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <rluk = i>           代表luk增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <rmhp = i>           代表mhp增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
# <rmmp = i>           代表mmp增加i%(如果学会多个这样的技能,最终增加的是(i1+i2+...+ix)%)
#
# <hit = i>             代表命中率增加i%
# <eva = i>             代表回避率增加i%
# <cri = i>             代表必杀率增加i%
# <cev = i>             代表必杀回避率增加i%
# <mev = i>             代表魔法回避率增加i%
# <mrf = i>             代表魔法反射率增加i%
# <cnt = i>             代表反击率增加i%
# <hrg = i>             代表HP再生率增加i%
# <mrg = i>             代表MP再生率增加i%
# <trg = i>             代表TP再生率增加i%
=end
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 获取技能数组的被动属性(加法)
  #--------------------------------------------------------------------------
  def get_skills_paramad(param_id)
    ren = 0
    case param_id
    when 0          #HP
      skills.each {|skill| ren += (skill.note =~ /<mhp = (\d+?)>/i ? $1.to_i : 0) }
    when 1          #MP
      skills.each {|skill| ren += (skill.note =~ /<mmp = (\d+?)>/i ? $1.to_i : 0) }
    when 2          #atk
      skills.each {|skill| ren += (skill.note =~ /<atk = (\d+?)>/i ? $1.to_i : 0) }
    when 3          #def
      skills.each {|skill| ren += (skill.note =~ /<def = (\d+?)>/i ? $1.to_i : 0) }
    when 4          #mat
      skills.each {|skill| ren += (skill.note =~ /<mat = (\d+?)>/i ? $1.to_i : 0) }
    when 5          #mdf
      skills.each {|skill| ren += (skill.note =~ /<mdf = (\d+?)>/i ? $1.to_i : 0) }
    when 6          #agi
      skills.each {|skill| ren += (skill.note =~ /<agi = (\d+?)>/i ? $1.to_i : 0) }
    when 7          #luk
      skills.each {|skill| ren += (skill.note =~ /<luk = (\d+?)>/i ? $1.to_i : 0) }
    else
    end
    return ren
  end
  
  #--------------------------------------------------------------------------
  # ● 获取技能数组的被动属性(乘法)
  #--------------------------------------------------------------------------
  def get_skills_parammu(param_id)
    ren = 0
    case param_id
    when 0          #HP
      skills.each {|skill| ren += (skill.note =~ /<rmhp = (\d+?)>/i ? $1.to_i : 0) }
    when 1          #MP
      skills.each {|skill| ren += (skill.note =~ /<rmmp = (\d+?)>/i ? $1.to_i : 0) }
    when 2          #atk
      skills.each {|skill| ren += (skill.note =~ /<ratk = (\d+?)>/i ? $1.to_i : 0) }
    when 3          #def
      skills.each {|skill| ren += (skill.note =~ /<rdef = (\d+?)>/i ? $1.to_i : 0) }
    when 4          #mat
      skills.each {|skill| ren += (skill.note =~ /<rmat = (\d+?)>/i ? $1.to_i : 0) }
    when 5          #mdf
      skills.each {|skill| ren += (skill.note =~ /<rmdf = (\d+?)>/i ? $1.to_i : 0) }
    when 6          #agi
      skills.each {|skill| ren += (skill.note =~ /<ragi = (\d+?)>/i ? $1.to_i : 0) }
    when 7          #luk
      skills.each {|skill| ren += (skill.note =~ /<rluk = (\d+?)>/i ? $1.to_i : 0) }
    else
    end
    return ren * 0.01
  end
  
  #--------------------------------------------------------------------------
  # ● 获取技能数组的被动特殊属性(加法)
  #--------------------------------------------------------------------------
  def get_skills_xparamad(xparam_id)
    ren = 0
    case xparam_id
    when 0          #命中率hit
      skills.each {|skill| ren += (skill.note =~ /<hit = (\d+?)>/i ? $1.to_i : 0) }
    when 1          #闪避率eva
      skills.each {|skill| ren += (skill.note =~ /<eva = (\d+?)>/i ? $1.to_i : 0) }
    when 2          #必杀率cri
      skills.each {|skill| ren += (skill.note =~ /<cri = (\d+?)>/i ? $1.to_i : 0) }
    when 3          #必杀回避率cev
      skills.each {|skill| ren += (skill.note =~ /<cev = (\d+?)>/i ? $1.to_i : 0) }
    when 4          #魔法回避率mev
      skills.each {|skill| ren += (skill.note =~ /<mev = (\d+?)>/i ? $1.to_i : 0) }
    when 5          #魔法反射率mrf
      skills.each {|skill| ren += (skill.note =~ /<mrf = (\d+?)>/i ? $1.to_i : 0) }
    when 6          #反击率cnt
      skills.each {|skill| ren += (skill.note =~ /<cnt = (\d+?)>/i ? $1.to_i : 0) }
    when 7          #HP再生率hrg
      skills.each {|skill| ren += (skill.note =~ /<hrg = (\d+?)>/i ? $1.to_i : 0) }
    when 8          #MP再生率mrg
      skills.each {|skill| ren += (skill.note =~ /<mrg = (\d+?)>/i ? $1.to_i : 0) }
    when 9          #TP再生率trg
      skills.each {|skill| ren += (skill.note =~ /<trg = (\d+?)>/i ? $1.to_i : 0) }
    else
    end
    return ren * 0.01
  end
  
  
  #--------------------------------------------------------------------------
  # ● 获取普通能力的基础值
  #--------------------------------------------------------------------------
  alias tan_game_actor_param_base param_base
  def param_base(param_id)
    tan_game_actor_param_base(param_id) + get_skills_paramad(param_id)
  end
  
  
  #--------------------------------------------------------------------------
  # ● 获取普通能力
  #--------------------------------------------------------------------------
  alias tan_game_actor_param param
  def param(param_id)
    value = param_base(param_id) + param_plus(param_id)
    value *= (param_rate(param_id) + get_skills_parammu(param_id)) * param_buff_rate(param_id)
    [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  end
   
  
  #--------------------------------------------------------------------------
  # ● 获取添加能力
  #--------------------------------------------------------------------------
  alias tan_game_actor_xparam xparam
  def xparam(xparam_id)
    tan_game_actor_xparam(xparam_id) + get_skills_xparamad(xparam_id)
  end
end[/pre]

评分

参与人数 1星屑 +300 收起 理由
怪蜀黍 + 300 发布奖

查看全部评分

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2013-12-19 12:49:05 | 显示全部楼层
首先,发布应该发到技术区吧?
然后,网上有更好的脚本
转载来源在此
  1. #==============================================================================
  2. # ★ RGSS3_パッシブスキル Ver1.01
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

  7. メモ欄に <パッシブ 5> という文字列が含まれるスキルを習得していると
  8. ID5番の武器を装備しているのと同じ効果が得られるようになります。

  9. Taroxd翻译:在技能备注输入 <パッシブ 5> ,那么习得该技能后,相当于装备了第5号武器。

  10. 2012.02.24  Ver1.01
  11.  ・パッシブスキルのみを習得している場合に発生する不具合を修正

  12. 2012.02.17 Ver1.0
  13.   公開

  14. =end

  15. #==============================================================================
  16. # □ 設定項目
  17. #==============================================================================
  18. module TMPASSIVE
  19.   INVISIBLE_TYPE = [3]      # 戦闘中のコマンドリストに表示しないスキルタイプ
  20. end

  21. #==============================================================================
  22. # ■ RPG::Skill
  23. #==============================================================================
  24. class RPG::Skill
  25.   #--------------------------------------------------------------------------
  26.   # ○ パッシブスキルの効果(武器ID)を返す
  27.   #--------------------------------------------------------------------------
  28.   def passive_effect
  29.     @passive_effect ||= /<パッシブ\s*(\d+)\s*>/ =~ @note ? $1.to_i : 0
  30.   end
  31. end

  32. #==============================================================================
  33. # ■ Game_Actor
  34. #==============================================================================
  35. class Game_Actor
  36.   #--------------------------------------------------------------------------
  37.   # ● 追加スキルタイプの取得
  38.   #--------------------------------------------------------------------------
  39.   alias tmpassive_game_actor_added_skill_types added_skill_types
  40.   def added_skill_types
  41.     if $game_party.in_battle
  42.       tmpassive_game_actor_added_skill_types - TMPASSIVE::INVISIBLE_TYPE
  43.     else
  44.       tmpassive_game_actor_added_skill_types
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 特徴を保持する全オブジェクトの配列取得
  49.   #--------------------------------------------------------------------------
  50.   alias tmpassive_game_actor_feature_objects feature_objects
  51.   def feature_objects
  52.     tmpassive_game_actor_feature_objects + passive_skills
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 通常能力値の加算値取得
  56.   #--------------------------------------------------------------------------
  57.   alias tmpassive_game_actor_param_plus param_plus
  58.   def param_plus(param_id)
  59.     passive_skills.inject(tmpassive_game_actor_param_plus(param_id)) {
  60.       |r, item| r += item.params[param_id] }
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ○ 習得しているパッシブスキルの効果(武器オブジェクト)の配列を返す
  64.   #--------------------------------------------------------------------------
  65.   def passive_skills
  66.     result = ((@skills.collect {|id| $data_skills[id] }).collect {
  67.       |skill| $data_weapons[skill.passive_effect] }).compact
  68.     result
  69.   end
  70. end



复制代码

点评

唉!为什么是日文呢?为什么又是英语呢?  发表于 2013-12-19 13:45
这个果然NB……之前没找到哇,我找到的是另一个……  发表于 2013-12-19 12:53
回复

使用道具 举报

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
回帖
420
发表于 2013-12-21 00:13:31 来自手机 | 显示全部楼层
加个自动附加状态(隐藏)的功能应该就实用了。
回复

使用道具 举报

梦石
0
星屑
4225
在线时间
2670 小时
注册时间
2012-3-1
回帖
680
发表于 2013-12-23 18:49:17 | 显示全部楼层
被动技能的脚本,这个似乎是个很好的例子

点评

谢谢。  发表于 2013-12-23 19:57
回复

使用道具 举报

梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-10-31
回帖
26
发表于 2013-12-28 22:05:18 来自手机 | 显示全部楼层
果断收藏!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
116 小时
注册时间
2008-4-24
回帖
55
发表于 2013-12-30 01:38:00 | 显示全部楼层
被动技能 以武器属性来表达,真好!
The DPS is who standing last.
回复

使用道具 举报

梦石
0
星屑
513
在线时间
66 小时
注册时间
2022-5-19
回帖
45
发表于 2022-5-21 19:52:15 | 显示全部楼层
感谢分享
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部