查看: 2284|回复: 3

[已经解决] 如何在任意一次战斗结束后设定某个角色的能力值

[复制链接]
梦石
0
星屑
1293
在线时间
118 小时
注册时间
2017-7-14
回帖
112
发表于 2019-4-30 21:57:58 | 显示全部楼层 |阅读模式

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

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

×
想要个一个角色设定一个能在战斗中叠加能力值的技能...于是就理所应当的用到了公共事件的处理...然而发现一个问题就是...用变量载入初始数值之后...还原似乎是件很麻烦的事...首先翻到Scene_Battle 1脚本的战斗结束函数那里...决定在这里重载角色的能力值...但是首先遇到的问题就是这里不会写==(准确的来说是不知道角色表示方法)。然后又想到一个问题就是...如果我没有用这个技能,并且以正常的方式增加了能力值...在任意一次战斗过后就会还原该能力值...也想请问一下有没有解决这个问题的方法
梦石
0
星屑
1281
在线时间
172 小时
注册时间
2010-10-11
回帖
13
发表于 2019-5-1 04:16:45 | 显示全部楼层
本帖最后由 719783572 于 2019-5-1 05:18 编辑

把你"战斗中叠加能力值"的公共事件发出来才能详尽地解决。
比如用1号变量来控制角色的力量值上升,那要还原就修改Scene_Battle 1的140行。
把140行“#解除战斗用状态”往下一段
改成
[pre lang="ruby"]# 解除战斗用状态
for actor in $game_party.actors
   actor.remove_states_battle
   actor.str -= $game_variables[1]
end[/pre]
但这样的结果就是队伍里所有角色都要扣掉等同于1号变量的力量值。(除非这个能力叠加是全队增益)
或者如果是指定1号角色使用叠加能力值技能的,那就把actor.str改成$game_actors[1].str

总之,你得说清楚到底怎么个叠加能力值,公共事件你怎么写,是全队增益还是单体,把你的思路说出来,要么就把工程放上来

点评

emmm...因为只有一个角色需要叠加能力值...所以说参考了一下大佬的判定写法就处理完了(也修改了自己的统计方法)...只要在循环的时候加if就行QWQ  发表于 2019-5-1 10:44
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2019-5-29 09:22:27 | 显示全部楼层
一般处理不同来源的能力值的比较好的方法是直接去改掉 Game_Actor/Game_Battler 的相关方法,安全无毒,而且没有后遗症。
一般不太建议用“需要的时候加,不需要时候减”的思路,这个思路比较老了,而且存在的问题楼主也已经发现了。

举个例子来说,如果你希望战斗中,学会 X 号技能的角色叠加变量 Y 的力量值,你可以这样去写
[pre lang="Ruby"]class Game_Actor
  def str
    # 以下省略已有定义
    # ....
    n += $game_variables[Y] if $game_temp.in_battle && skill_learn?(X)
    return n
  end
end
[/pre]
体会一下上面的方法是不是比之前的思路好多了?
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部