查看: 1971|回复: 2

[已经解决] 一个“较复杂”状态设置的问题

[复制链接]
梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
回帖
668
发表于 2014-5-21 17:18:55 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 负零 于 2014-5-21 23:27 编辑

如何实现类似"防御力上升一个数值,这个数值是攻击力与魔法攻击力的差值。"
简单表达就是“防御力提升“攻击力与魔法攻击力的差值”这一数值”。
求大神指点下思路和实现方法。
------------------------------------------------------------------------------------以下为追加
QQ图片20140521225253.jpg 请问这个怎么破?

点评

已经说是不规范的了0.0……  发表于 2014-5-22 13:53
self.def  发表于 2014-5-22 06:16
快点让楼上的管理员发卡(死  发表于 2014-5-21 18:50

老黄鸡

梦石
4
星屑
45714
在线时间
7951 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2014-5-21 17:42:46 | 显示全部楼层
Game_BattlerBase里面267行有一个定义
  1. def param
复制代码
这个方法会取得某项属性,里面的value就是最终会返回的值,最后一行为矫正,可以先不管。
你是希望这个状态再其他状态之前生效,就写在
  1. value = param_base(param_id) + param_plus(param_id)
复制代码
后面,如果想最后再加上这个属性,就写在
  1. value *= param_rate(param_id) * param_buff_rate(param_id)
复制代码
后面,写什么内容呢,为了系统化一点,我们写成这样
  1. value += param_spec(param_id)
复制代码
这一句加入的位置取决于你上面的选择。
然后在方法后面定义一个新方法。
(这里本来应该在增加和移除buff的方法做修改的,那样才是规范的
但这里图省事,就直接遍历状态了。)
  1.   def param_spec(param_id)
  2.     ret = 0 # 默认返回值
  3.     case param_id
  4.     when 3 # 判断通过这个方法获取的属性是不是def
  5.       if @states.include?(6) #如果拥有6号状态
  6.         ret += (self.mat-self.atk).abs
  7.       end
  8.     end
  9.     return ret
  10.   end
复制代码
加入这个方法之后你可以试试效果了。
另外提醒你一下,这个示范的写法是极其不规范的,
如果你只有少量特殊状态可以凑合用,大量的话还是建议规范写
在battler里面加入buff_exflags数组,add_state里面判断状态来改变buff_flags
往里存的是symbol名,然后写好方法,在获取属性里面遍历buff_exflag一个个call累加即可。

点评

谢谢,我正在研究你的方法,谢谢指导思路。  发表于 2014-5-21 23:03
认可该楼。  发表于 2014-5-21 22:08
真尼玛给跪拜了,1是技术,2是头像。  发表于 2014-5-21 18:23
好神速的回答  发表于 2014-5-21 17:56

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 大触你好

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

…あたしは天

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

开拓者贵宾

发表于 2014-5-21 18:00:32 | 显示全部楼层

我还是来个更不规范的写法吧(50是状态id,未测试)
[pre lang="ruby" line="1"]
class Game_BattlerBase
  alias_method :def_without_state, :def
  def def
    def_without_state + (state?(50) ? atk - mat : 0)
  end
end[/pre]

点评

请你再帮我破个问题...  发表于 2014-5-21 22:54
认可该楼。  发表于 2014-5-21 22:09
谢谢。能同时认可两个答案吗?  发表于 2014-5-21 18:32

评分

参与人数 2星屑 +250 收起 理由
myownroc + 50 再给50凑一张卡吧←_←
fux2 + 200 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部