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

Project1

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

[已经解决] 请问一并改变人物对多个状态的抗性值

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

跳转到指定楼层
1
发表于 2015-10-11 15:15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如,我将状态10、15、25等数个状态设定为毒状态,然后设我的某人物对毒有150%的抗性,希望能让所有的毒都看这个抗性,不需要逐个重复设置,免疫也是如此。

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

2
发表于 2015-10-11 15:20:04 | 只看该作者
逐个设置很麻烦吗?还有能比逐个设置(O(n))更快的方式?

点评

也或者直接用状态抗性来代表所有同类状态的抗性,例如4号是毒状态,那么4号状态的抗性可以对应XX号、XX号……等数十个状态的抗性值  发表于 2015-10-11 15:32
例如,我增加了个毒抵抗的属性,属性值为70%,那么所有被我标注为毒的状态在计算完有效度之后赋予时再和这个数值相乘  发表于 2015-10-11 15:29
所以我就想,能否把他们都分为一个组,这个组就让某属性来代表,然后这些特定状态赋予时计算这个属性的有效度来当做成功率  发表于 2015-10-11 15:26
如果只有毒都还好说,但一个装备可能抗性多种状态例如毒+盲目+冻结,特性栏不知道要添加多少行,很容易写漏,也极不方便检查  发表于 2015-10-11 15:25
比如说我突然新作了个一个带毒技能的怪,那么我还要去找以前所有解除、抵抗、免疫毒的所有装备和状态进行修改  发表于 2015-10-11 15:24
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

3
发表于 2015-10-11 15:35:01 | 只看该作者
本帖最后由 taroxd 于 2015-10-11 15:54 编辑

可以更改人物的 all_features 方法。当人物满足某些条件时,往 all_features 里面添加东西

按照你的要求,可以将特性分组。把一组的特性写在一个状态里(或者装备之类的都可以,脚本中的示例是 40,42)。
比如说这样(未测试)
RUBY 代码复制
  1. class Game_BattlerBase
  2.   alias_method :af_20151011, :all_features
  3.  
  4.   def all_features
  5.     features = af_20151011
  6.  
  7.     # 如果角色的职业 ID 为 1
  8.     # Enemy 的 @class_id 为 nil,不会被判定
  9.     if @class_id == 1
  10.       # 特性列表中添加 40 号状态的所有特性
  11.       features.push $data_states[40].features
  12.     end
  13.  
  14.     # 如果拥有 41 号状态
  15.     if state? 41
  16.       # 特性列表中添加 42 号状态的所有特性
  17.       features.push $data_states[42].features
  18.     end
  19.  
  20.     features
  21.   end
  22. end


也可以通过备注栏读取的方式,对每个 feature_object 的备注栏进行读取,按上面那段脚本的方式添加特性。比如说(依旧没测试):
RUBY 代码复制
  1. class Game_BattlerBase
  2.   alias_method :af_20151011, :all_features
  3.  
  4.   def all_features
  5.  
  6.     feature_objects.each_with_object af_20151011 do |fo, features|
  7.       # 备注 <feature x>  x 为状态的ID
  8.       fo.note.scan /<feature\s+(\d+)>/i do |(id)|
  9.         features.push $data_states[id]
  10.       end
  11.     end
  12.  
  13.   end
  14. end

点评

不会脚本的我还是让状态100%附加更可行一点……  发表于 2015-10-11 15:58
有事闪了 代码你自己写吧,和这层的差不多  发表于 2015-10-11 15:57
那请用类似的方式修改方法 state_rate。本楼中的两种方式都可以  发表于 2015-10-11 15:53
我觉得还是用属性来当判断状态成功率更可行。给状态增加备注什么的,然后这个状态计算成功率的时候最终乘以个某状态  发表于 2015-10-11 15:52
而且还是要每个状态都去添加抗性,例如我增加了一个毒状态,那么所有和毒相关的都要去添加这个状态,虽然相比原本的功能来说更不容易出错了  发表于 2015-10-11 15:49

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
VIPArcher + 1 认可答案
jianyulei + 10 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 23:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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