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

Project1

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

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2014-5-21 17:18:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

点评

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

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42501
在线时间
7606 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 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
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2014-5-21 18:00:32 | 只看该作者

我还是来个更不规范的写法吧(50是状态id,未测试)
RUBY 代码复制
  1. class Game_BattlerBase
  2.   alias_method :def_without_state, :def
  3.   def def
  4.     def_without_state + (state?(50) ? atk - mat : 0)
  5.   end
  6. end

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 04:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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