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

Project1

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

[已经解决] 随机能力提升脚本无法初始角色

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4557
在线时间
807 小时
注册时间
2017-7-14
帖子
170

开拓者

跳转到指定楼层
1
发表于 2017-10-28 23:23:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
这个脚本是每次升级附加额外的能力值,但角色离队后再次加入,勾选初始角色,额外的能力值不会减少,
怎样才能初始角色后,这个脚本提升的能力值全部清零啊?
RUBY 代码复制
  1. #==============================================================================
  2. # ■ FE_Param
  3. #------------------------------------------------------------------------------
  4. # 设置各职业用的各数据
  5. # 制作者:feizhaodan
  6. # 版本: 1.1.0
  7. # 更新: 1.1.0 : 更改了随机式,从原来的非即下一项改为范围随机。
  8. #==============================================================================
  9. module FE_Param
  10.  
  11.     CLASSPER = {}   # 不要改
  12.  
  13.  
  14.     # 在这里设置各职业的提升几率
  15.     # 格式:
  16.     # CLASSPER[id] = {
  17.     # :para => n%,
  18.     #}
  19.     # id 输入职业ID
  20.     # para 代入属性标识(mhp, mmp, atk, def, mat, mdf, agi, luk)
  21.     # n 代入属性提升几率
  22.     CLASSPER[1] ={
  23.     :mhp        =>  60, # 血
  24.     :mmp        =>  40, # 魔
  25.     :atk        =>  70, # 攻
  26.     :def        =>  60, # 防
  27.     :mat        =>  20, # 魔攻
  28.     :mdf        =>  20, # 魔防
  29.     :agi        =>  50, # 敏
  30.     :luk        =>  10, # 幸运
  31.     }
  32.  
  33.     CLASSUP = {}    # 不要改
  34.  
  35.  
  36.     # 在这里设置各职业的提升量
  37.     # 格式:
  38.     # CLASSUP[id] = [mi, ma]
  39.     # id 输入职业ID
  40.     # mi 代入提升量最小值
  41.     # ma 代入提升量最大值
  42.     CLASSUP[1] = [5, 9]
  43. end
  44.  
  45.  
  46.  
  47. #==============================================================================
  48. # ■ Game_Actor
  49. #------------------------------------------------------------------------------
  50. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  51. # Game_Party 类请参考 ($game_party) 。
  52. #==============================================================================
  53.  
  54. class Game_Actor < Game_Battler
  55.   FEPARAM_LIST_ = [:mhp,:mmp,:atk,:def,:mat,:mdf,:agi,:luk]
  56.   #--------------------------------------------------------------------------
  57.   # ● 获取普通能力
  58.   #--------------------------------------------------------------------------
  59.   def param(param_id)
  60.     value = super
  61.     value += param_gained(param_id)
  62.     return [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取提升量
  66.   #--------------------------------------------------------------------------
  67.   def param_up
  68.     param_up = FE_Param::CLASSUP[@class_id]
  69.     up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
  70.     return up
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 获取提升率
  74.   #    param : 属性
  75.   #--------------------------------------------------------------------------
  76.   def param_per
  77.     @param_per = FE_Param::CLASSPER[@class_id] if @param_per == nil
  78.     return @param_per
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 获取已提升量
  82.   #    param : 属性
  83.   #--------------------------------------------------------------------------
  84.   def param_gained(param)
  85.     @param_gained = {} if @param_gained == nil
  86.     return 0 if @param_gained[param] == nil
  87.     return @param_gained[param]
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 升级
  91.   #--------------------------------------------------------------------------
  92.   alias fe_level_up level_up
  93.   def level_up
  94.     fe_level_up
  95.     gain_param
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 提升属性
  99.   #--------------------------------------------------------------------------
  100.   def gain_param
  101.     @param_gained = {} if @param_gained == nil
  102.     param_per
  103.     percentage = 0
  104.     @param_per.each_value do |v|
  105.       percentage += v
  106.     end
  107.     point = param_up
  108.     mhpper = @param_per[:mhp]
  109.     mmpper = @param_per[:mmp] + mhpper
  110.     atkper = @param_per[:atk] + mmpper
  111.     defper = @param_per[:def] + atkper
  112.     matper = @param_per[:mat] + defper
  113.     mdfper = @param_per[:mdf] + matper
  114.     agiper = @param_per[:agi] + mdfper
  115.     lukper = @param_per[:luk] + agiper
  116.     loop do
  117.      if point == 0
  118.         break
  119.       end
  120.       per = rand(percentage) + 1
  121.       p [mhpper,mmpper,atkper,defper,matper,mdfper,agiper,lukper,per]
  122.       case per
  123.       when 1...mhpper
  124.         i = FEPARAM_LIST_.index(:mhp)
  125.         @param_gained[i] = 0 if @param_gained[i] == nil
  126.         @param_gained[i] += 1
  127.         point -= 1
  128.       when mhpper...mmpper
  129.         i = FEPARAM_LIST_.index(:mmp)
  130.         @param_gained[i] = 0 if @param_gained[i] == nil
  131.         @param_gained[i] += 1
  132.         point -= 1
  133.       when mmpper...atkper
  134.         i = FEPARAM_LIST_.index(:atk)
  135.         @param_gained[i] = 0 if @param_gained[i] == nil
  136.         @param_gained[i] += 1
  137.         point -= 1
  138.       when atkper...defper
  139.         i = FEPARAM_LIST_.index(:def)
  140.         @param_gained[i] = 0 if @param_gained[i] == nil
  141.         @param_gained[i] += 1
  142.         point -= 1
  143.       when defper...matper
  144.         i = FEPARAM_LIST_.index(:mat)
  145.         @param_gained[i] = 0 if @param_gained[i] == nil
  146.         @param_gained[i] += 1
  147.         point -= 1
  148.       when matper...mdfper
  149.         i = FEPARAM_LIST_.index(:mdf)
  150.         @param_gained[i] = 0 if @param_gained[i] == nil
  151.         @param_gained[i] += 1
  152.         point -= 1
  153.       when mdfper...agiper
  154.         i = FEPARAM_LIST_.index(:agi)
  155.         @param_gained[i] = 0 if @param_gained[i] == nil
  156.         @param_gained[i] += 1
  157.         point -= 1
  158.       when agiper...lukper
  159.         i = FEPARAM_LIST_.index(:luk)
  160.         @param_gained[i] = 0 if @param_gained[i] == nil
  161.         @param_gained[i] += 1
  162.         point -= 1
  163.       end
  164.     end
  165.   end
  166. end

Lv3.寻梦者

梦石
1
星屑
2078
在线时间
920 小时
注册时间
2012-10-18
帖子
428

开拓者

2
发表于 2017-10-29 16:32:13 | 只看该作者
在下面插入这段
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   def clear_param_plus
  3.     super
  4.     @param_gained = {}
  5.   end
  6. end


点评

谢谢大佬,完美的解决了我的问题,话说大佬你真是神龙见首不见尾啊(*^__^*)  发表于 2017-10-29 16:59
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 19:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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