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

Project1

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

[已经过期] 更改能力值的问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2014-12-25 22:22:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
  1.   def tp=(tp)
  2.     @tp = [[tp, max_tp].min, 0].max
  3.   end
复制代码
表示绕了几个弯在Game_BattlerBase里找到了这个···是所有能力要能+-=就在这里弄一段就行了吗···@三途亚梦 @taroxd @VIPArcher 如果是的话有没有什么快捷的方法一次性添加其余没添加的能力的···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
 楼主| 发表于 2014-12-27 21:39:34 | 只看该作者
VIPArcher 发表于 2014-12-25 05:52
不是,其他能力值并不是实例变量。而是去读取数据库里职业里的数据再加上附加值再咋咋咋一通计算后的结果。 ...
  1. class Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取属性值。param: 基础值 features: 特性列表, const: 设置的常量
  4.   #--------------------------------------------------------------------------
  5.   def taroxd_paramex(param, features, const)
  6.     features.each do |type|
  7.       list = const[type]
  8.       next unless list
  9.       [*send(type)].each do |item|
  10.         settings = list[item.id]
  11.         if settings.kind_of?(Numeric)
  12.           param += settings
  13.         elsif settings.respond_to?(:[])
  14.           new_param = settings[param]
  15.           param = new_param if new_param
  16.         end
  17.       end
  18.     end
  19.     param.to_i
  20.   end
  21. end
  22. #--------------------------------------------------------------------------
  23. # ● 定义所有设置的属性
  24. #--------------------------------------------------------------------------
  25. actor_features = [:actor, :class, :weapons, :armors, :states]
  26. enemy_features = [:enemy, :states]
  27. Taroxd::ParamEx.constants(false).each do |name|
  28.   const = Taroxd::ParamEx.const_get name
  29.   name = name.downcase
  30.   if [Game_Actor, Game_Enemy].any? {|klass| klass.method_defined? name }
  31.     raise NameError.new("Parameter `#{name}' already exists!", name)
  32.   end
  33.   Game_Actor.send :define_method, name do
  34.     taroxd_paramex(@level, actor_features, const)
  35.   end
  36.   Game_Enemy.send :define_method, name do
  37.     taroxd_paramex(0, enemy_features, const)
  38.   end
  39. end
复制代码
问题似乎出在这···
  Game_Actor.send :define_method, name do
    taroxd_paramex(@level, actor_features, const)
  end
@level那应该要+@add_XXX什么的···可我用@add_{name}会直接出错···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

4
 楼主| 发表于 2014-12-27 01:54:54 | 只看该作者
VIPArcher 发表于 2014-12-25 05:52
不是,其他能力值并不是实例变量。而是去读取数据库里职业里的数据再加上附加值再咋咋咋一通计算后的结果。 ...

话说我把这一段脚本的add_去掉了以后会出错···绘制横值槽那NaN什么的···
是因为这个?

  1.   def mhp;  param(0);   end    # 最大HP          Maximum Hit Point
  2.   def mmp;  param(1);   end    # 最大MP          Maximum Magic Point
复制代码
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
 楼主| 发表于 2014-12-25 23:38:34 | 只看该作者
VIPArcher 发表于 2014-12-25 05:52
不是,其他能力值并不是实例变量。而是去读取数据库里职业里的数据再加上附加值再咋咋咋一通计算后的结果。 ...

如果是用taroxd的脚本加的属性@add_mhp就改成module::taroxd::什么的?

点评

这我不知道,我没玩过那个脚本。c神如果理解了上面的脚本在干嘛,那么或许你就会做了。  发表于 2014-12-25 23:46
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10229
在线时间
5019 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-12-25 22:52:13 | 只看该作者
是所有能力要能+-=就在这里弄一段就行了吗···
不是,其他能力值并不是实例变量。而是去读取数据库里职业里的数据再加上附加值再咋咋咋一通计算后的结果。你要是想要做成这种效果需要改的东西还是蛮多的,例如可以这样
  1. class Game_BattlerBase
  2.   attr_accessor :add_mhp,:add_mmp # ,.......
  3.   #--------------------------------------------------------------------------
  4.   # ● 初始化对象
  5.   #--------------------------------------------------------------------------
  6.   alias add_param initialize
  7.   def initialize
  8.     @add_mhp = @add_mmp = 0
  9.    
  10.     #.....
  11.    
  12.     add_param
  13.   end
  14.   def param_add(param_id)
  15.     case param_id
  16.     when 0 then @add_mhp
  17.     when 1 then @add_mmp
  18.       
  19.     #.......
  20.    
  21.     else 0
  22.     end
  23.   end
  24.   
  25.   #--------------------------------------------------------------------------
  26.   # ● 获取普通能力
  27.   #--------------------------------------------------------------------------
  28.   def param(param_id)
  29.     value = param_base(param_id) + param_plus(param_id) + param_add(param_id)
  30.     value *= param_rate(param_id) * param_buff_rate(param_id)
  31.     [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  32.   end
  33. end
  34. #然后事件里调用的是 角色.add_mhp += X 这样子
复制代码
完全未测试,而且只是随便写的。c神自己应该可以理解。就不多说啥了

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-22 16:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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