Project1

标题: 给想给武器加暴击效果却不能的童鞋 [打印本页]

作者: a364774426    时间: 2012-1-30 22:05
标题: 给想给武器加暴击效果却不能的童鞋
我本身是一个脚本盲,就是在给状态定义暴击几率的脚本上添加了一个Weapon。本来我只是试试看,没想到居然成功了。
  1. module RPG
  2.   #=============================================================================
  3.   # ■ Weapon
  4.   #=============================================================================
  5.   class Weapon
  6.     def read_note(section, mismatch = nil)
  7.       self.note.each_line do |line|
  8.         
  9.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  10.       end
  11.       return mismatch
  12.     end
  13.   end
  14. end



  15. module Enhance_Weapon
  16.   CRITICAL_MAX = 999

  17. end


  18. module RPG
  19.   class Weapon
  20.     def cri_plus
  21.       return read_note("cri_plus")
  22.     end
  23.    

  24.   end
  25. end


  26. class Game_Actor
  27.   include Enhance_Weapon
  28.   alias :base_cri :cri
  29.   def cri
  30.     n = base_cri
  31.     weapons.each do |weapon|
  32.       n += weapon.cri_plus || 0
  33.     end
  34.     return [n , CRITICAL_MAX].min
  35.   end
  36.   
  37. end

  38. module RPG
  39.   #=============================================================================
  40.   # ■ State
  41.   #=============================================================================
  42.   class State
  43.     def read_note(section, mismatch = nil)
  44.       self.note.each_line do |line|
  45.         ## 不希望忽略大小写,则删掉下一行最后一个i
  46.         eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
  47.       end
  48.       return mismatch
  49.     end
  50.   end
  51. end

  52. # 设定模块,设定三项能力值的最大值

  53. module Enhance_State
  54.   CRITICAL_MAX = 999
  55.   HIT_MAX = 999
  56.   EVA_MAX = 999
  57. end

  58. # RPG::State模块,定义读取三种附加能力
  59. module RPG
  60.   class State
  61.     def cri_plus
  62.       return read_note("cri_plus")
  63.     end
  64.    
  65.     def hit_plus
  66.       return read_note("hit_plus")
  67.     end
  68.    
  69.     def eva_plus
  70.       return read_note("eva_plus")
  71.     end
  72.   end
  73. end

  74. # 致命一击、命中率和闪躲率的追加定义
  75. class Game_Actor
  76.   include Enhance_State
  77.   alias :enhance_cri :cri
  78.   def cri
  79.     n = enhance_cri
  80.     states.each do |state|
  81.       n += state.cri_plus || 0
  82.     end
  83.     return [n , CRITICAL_MAX].min
  84.   end
  85.   
  86.   alias :enhance_hit :hit
  87.   def hit
  88.     n = enhance_hit
  89.     states.each do |state|
  90.       n += state.hit_plus || 0
  91.     end
  92.     return [n , HIT_MAX].min
  93.   end
  94.   
  95.   alias :enhance_eva :eva
  96.   def eva
  97.     n = enhance_eva
  98.     states.each do |state|
  99.       n += state.eva_plus || 0
  100.     end
  101.     return [n , EVA_MAX].min
  102.   end
  103. end
复制代码
方法就是在备注栏里加入cri_plus =10就可以了
其中10代表增加10点暴击几率。100就必定暴击了。
啊啊啊啊,高手莫笑哈。

作者: 黒毛    时间: 2012-1-31 09:01
看上去好厉害{:nm_5:}
作者: 垨護Satr婞諨    时间: 2012-2-1 20:55
谢谢楼主分享
作者: muyumuyulnny    时间: 2012-2-9 22:23
本帖最后由 muyumuyulnny 于 2012-2-9 22:44 编辑

用了这个脚本之后,游戏初始时给角色装备上附加必杀的武器,游戏开始后再将装备卸掉,然后查看状态貌似会出错。。。


‘‘

我也是新手,不过,我把
n = base_cri
weapons.each do |weapon|
n += weapon.cri_plus || 0
改成
n = base_cri
    weapons.each do |weapon|
     if weapon != nil
      n += weapon.cri_plus || 0
     else
     end
之后貌似不报错了,等我再试试。



──muyumuyulnny于2012-2-9 22:47补充以上内容’’
作者: 狂人狂者    时间: 2012-2-12 14:33
很白痴的问一句...备注栏在哪儿




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