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

Project1

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

[已经解决] 怎么永久增加人物特殊的属性【已解决】

[复制链接]

Lv4.逐梦者 (版主)

梦石
0
星屑
6886
在线时间
7027 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

1
发表于 2016-10-16 21:46:20 | 显示全部楼层
本帖最后由 RaidenInfinity 于 2016-10-16 22:15 编辑

RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.  
  3.   alias :xparam_add_initialize :initialize
  4.   def initialize(actor_id)
  5.     xparam_add_initialize(actor_id)
  6.     xparam_extra_clear
  7.   end
  8.  
  9.   def xparam(xparam_id)
  10.     features_sum(FEATURE_XPARAM, xparam_id) + @xparam_extra[xparam_id]
  11.   end
  12.  
  13.   def xparam_plus(xparam_id, value)
  14.     @xparam_extra[xparam_id] += value  
  15.   end
  16.  
  17.   def xparam_add(type,value) #百分比 比如1%是0.01
  18.     case(type)
  19.       when :hit; xparam_plus(0,value) #HIT 命中率
  20.       when :eva; xparam_plus(1,value) #EVAsion 回避率
  21.       when :cri; xparam_plus(2,value) #CRItical 暴击率
  22.       when :cev; xparam_plus(3,value) #Critical EVasion 暴击回避率
  23.       when :mev; xparam_plus(4,value) #Magic EVasion 魔法回避率
  24.       when :mrf; xparam_plus(5,value) #Magic ReFlect 魔法反弹率
  25.       when :cnt; xparam_plus(6,value) #CouNTerattack 物理反击率
  26.       when :hrg; xparam_plus(7,value) #Hp ReGen 生命恢复率
  27.       when :mrg; xparam_plus(8,value) #Mp ReGen 魔法恢复率
  28.       when :trg; xparam_plus(9,value) #Tp ReGen 特技值恢复率
  29.     end
  30.   end  
  31.  
  32.   def xparam_extra_clear
  33.    @xparam_extra = [0,0,0,0,0,0,0,0,0,0]
  34.   end
  35. end


插入此插件脚本,然后记得要开启新的游戏。 如果想要继续现有的存档(不建议),请用触发一个事件脚本指令然后存档:
  1. $data_actors.count.times{|i|
  2.   next if i == 0
  3.   $game_actors[i].xparam_extra_clear
  4. }
复制代码


要增加或减少特殊属性,就要使用事件脚本指令
  1. $game_actors[人物ID].xparam_add(特殊属性代号,百分比的数值)
复制代码

或者
  1. $game_actors[人物ID].xparam_plus(特殊属性ID,百分比的数值)
复制代码


例子:
增加3号角色的回避率5%
  1. $game_actors[3].xparam_add(:eva,0.05)
复制代码

点评

在用事件的初始化之后补这行事件脚本指令  发表于 2018-3-5 08:03
$game_actors[人物ID].xparam_extra_clear  发表于 2018-3-5 08:02
请问版主大大,这样加了后即使初始化角色也不会初始化加的能力,有办法初始化加的能力吗,或者强制能力等于多少!!!  发表于 2018-3-5 01:45
读档的时候$data_actors.count.times{|i| next if i == 0 $game_actors[i].xparam_extra_clear }也可以吧···  发表于 2016-10-24 00:48

评分

参与人数 2星屑 +300 梦石 +1 收起 理由
怪蜀黍 + 250 + 1 楼主认可的解答
鑫晴 + 50 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6886
在线时间
7027 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

2
发表于 2016-10-19 10:33:31 | 显示全部楼层
本帖最后由 RaidenInfinity 于 2016-10-19 10:36 编辑
  1. $data_actors.count.times{|i|
  2.       next if i == 0
  3.       $game_actors[i].xparam_extra_clear
  4.     }
复制代码


这段“事件脚本指令”(事件的第三页右下角,在事件内插入一段脚本)的用途是修复已有的存档,避免新定义的数值/变量因不存在存档中而报错。如果你并没有这种需求,而是重新开始游戏,就不需要这个了。

另外如果有报错或其他状况,请附上出错的讯息,和出错的脚本部分,以便获得协助。

点评

谢谢,已经解决!!:-)  发表于 2017-12-27 23:59
后面那个*是要乘(*)还是加(+)就看你自己了。  发表于 2017-12-27 20:07
解决方法是把第10行(假设除了x换成s之外没有任何其他更动)换成 features_pi(FEATURE_SPARAM, sparam_id) * @sparam_extra[sparam_id]  发表于 2017-12-27 20:06
sparam是乘算而不是加算。直接改我在5楼贴的脚本是绝对会出事的。  发表于 2017-12-27 20:04
大大我想增加特殊能力,我把xparam改成sparam,其他功能都正常,就是战斗时候使用药品不能回血了?求帮帮我吧  发表于 2017-12-27 19:27
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 17:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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