Project1

标题: 状态法 如何 达到暂时增加 Maxhp 和Maxmp的效果? [打印本页]

作者: 浆糊行不行    时间: 2011-11-2 21:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黑之翅膀    时间: 2011-11-2 23:42
你好,欢迎光临,请看图。再见!




作者: 皮卡星    时间: 2011-11-3 00:16
必须脚本调用的……
不过默认脚本里面好像没有暂时增加MaxHP和MaxMP
可以自行修改脚本
(注释神马的……)
作者: 黑之翅膀    时间: 2011-11-3 00:32
被我发现了:10秒后自动变回



作者: MSQ    时间: 2011-11-3 14:08
本帖最后由 MSQ 于 2011-11-4 14:55 编辑

抱歉,偶的方法经测试,会产生叠加效果。(丢脸丢大了~~{:nm_2:} )
本来想删去的,但想一想,还是留着抛砖引玉吧~~
图裂了~~囧






作者: shinliwei    时间: 2011-11-4 09:47
本帖最后由 shinliwei 于 2011-11-4 10:54 编辑
  1. # 设定模块,设定五项能力值的最大值

  2. module Enhance_State
  3.   CRITICAL_MAX = 100
  4.   HIT_MAX = 100
  5.   EVA_MAX = 100
  6.   MAXHP_MAX = 9999
  7.   MAXMP_MAX = 9999
  8.   ODDS_MAX =30
  9.   DEF_MAX =999
  10.   AGI_MAX =999
  11.   SPI_MAX =999
  12.   ATK_MAX =999
  13. end

  14. # RPG::State模块,定义读取三种附加能力
  15. module RPG
  16.   class State
  17.     def cri_plus
  18.       return read_note("cri_plus")
  19.     end
  20.    
  21.     def hit_plus
  22.       return read_note("hit_plus")
  23.     end
  24.    
  25.     def eva_plus
  26.       return read_note("eva_plus")
  27.     end
  28.    
  29.     def maxhp_plus
  30.       return read_note("maxhp_plus")
  31.     end
  32.    
  33.     def maxmp_plus
  34.       return read_note("maxmp_plus")
  35.     end
  36.    
  37.     def odds_plus
  38.       return read_note("odds_plus")
  39.     end
  40.    
  41.     def def_plus
  42.       return read_note("def_plus")
  43.     end
  44.    
  45.     def atk_plus
  46.       return read_note("atk_plus")
  47.     end
  48.    
  49.     def spi_plus
  50.       return read_note("spi_plus")
  51.     end
  52.    
  53.     def agi_plus
  54.       return read_note("agi_plus")
  55.     end
  56.   end
  57. end

  58. # 致命一击、命中率和闪躲率等的追加定义
  59. class Game_Actor
  60.   include Enhance_State
  61.   alias :enhance_cri :cri
  62.   def cri
  63.     n = enhance_cri
  64.     states.each do |state|
  65.       next if state.cri_plus == nil
  66.       n += state.cri_plus
  67.     end
  68.     return [n , CRITICAL_MAX].min
  69.   end
  70.   
  71.   alias :enhance_hit :hit
  72.   def hit
  73.     n = enhance_hit
  74.     states.each do |state|
  75.       next if state.hit_plus == nil
  76.       n += state.hit_plus
  77.     end
  78.     return [n , HIT_MAX].min
  79.   end
  80.   
  81.   alias :enhance_eva :eva
  82.   def eva
  83.     n = enhance_eva
  84.     states.each do |state|
  85.       next if state.eva_plus == nil
  86.       n += state.eva_plus
  87.     end
  88.     return [n , EVA_MAX].min
  89.   end
  90.   
  91.   alias :enhance_maxhp :maxhp
  92.   def maxhp
  93.     n = enhance_maxhp
  94.     states.each do |state|
  95.       next if state.maxhp_plus == nil
  96.       n += state.maxhp_plus
  97.     end
  98.     return [n , MAXHP_MAX].min
  99.   end

  100.   alias :enhance_maxmp :maxmp
  101.   def maxmp
  102.     n = enhance_maxmp
  103.     states.each do |state|
  104.       next if state.maxmp_plus == nil
  105.       n += state.maxmp_plus
  106.     end
  107.     return [n , MAXMP_MAX].min
  108.   end
  109.   
  110.   alias :enhance_odds :odds
  111.   def odds
  112.     n = enhance_odds
  113.     states.each do |state|
  114.       next if state.odds_plus == nil
  115.       n += state.odds_plus
  116.     end
  117.     return [n , ODDS_MAX].min
  118.   end
  119.   
  120.   alias :enhance_def :def
  121.   def def
  122.     n = enhance_def
  123.     states.each do |state|
  124.       next if state.def_plus == nil
  125.       n += state.def_plus
  126.     end
  127.     return [n , DEF_MAX].min
  128.   end
  129.   
  130.   alias :enhance_atk :atk
  131.   def atk
  132.     n = enhance_atk
  133.     states.each do |state|
  134.       next if state.atk_plus == nil
  135.       n += state.atk_plus
  136.     end
  137.     return [n , ATK_MAX].min
  138.   end
  139.   
  140.   alias :enhance_spi :spi
  141.   def spi
  142.     n = enhance_spi
  143.     states.each do |state|
  144.       next if state.spi_plus == nil
  145.       n += state.spi_plus
  146.     end
  147.     return [n , SPI_MAX].min
  148.   end
  149.   
  150.   alias :enhance_agi :agi
  151.   def agi
  152.     n = enhance_agi
  153.     states.each do |state|
  154.       next if state.agi_plus == nil
  155.       n += state.agi_plus
  156.     end
  157.     return [n , AGI_MAX].min
  158.   end
  159. end
复制代码
使用方法,脚本插在main之前,在状态的备注栏里写maxhp_plus = 200即表示体力上限增加200

cri爆击
hit命中
eva回避
maxhp体力上限
maxmp法力上限



作者: 小白玩家    时间: 2011-11-4 14:52
本帖最后由 小白玩家 于 2011-11-4 15:10 编辑

事件写错了 下面才对
这样啊 没人和我说

111.jpg (18.38 KB, 下载次数: 18)

111.jpg

作者: 我妻由乃    时间: 2011-11-6 00:14
  1. class Game_Battler
  2.   @@对MaxHP有影响的状态 = {
  3.   #状态ID 影响值(若为浮点数则计算百分比)
  4.   2 => 50, #非末尾行补上半角逗号
  5.   3 => 0.2 # 20%
  6.   }
  7.   @@对MaxMP有影响的状态 = {
  8.   #同上
  9.   2 => 5,
  10.   3 => 2.0 # 200%
  11.   }
  12.   alias gasai_yuno_mh maxhp
  13.   def maxhp
  14.     record = @maxhp_plus
  15.     @@对MaxHP有影响的状态.each{|k,v| (@maxhp_plus += v.is_a?(Float) ? base_maxhp * (v - 1) : v) if state?(k)}
  16.     @maxhp_plus = @maxhp_plus.round
  17.     ans = gasai_yuno_mh
  18.     @maxhp_plus = record
  19.     return ans
  20.   end
  21.   alias gasai_yuno_mm maxmp
  22.   def maxmp
  23.     record = @maxmp_plus
  24.     @@对MaxMP有影响的状态.each{|k,v| (@maxmp_plus += v.is_a?(Float) ? base_maxmp * (v - 1) : v) if state?(k)}
  25.     @maxmp_plus = @maxmp_plus.round
  26.     ans = gasai_yuno_mm
  27.     @maxmp_plus = record
  28.     return ans
  29.   end
  30. end
复制代码





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