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

Project1

 找回密码
 注册会员
搜索
查看: 1783|回复: 3

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

[复制链接]

Lv3.寻梦者

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

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

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

x
想要个一个角色设定一个能在战斗中叠加能力值的技能...于是就理所应当的用到了公共事件的处理...然而发现一个问题就是...用变量载入初始数值之后...还原似乎是件很麻烦的事...首先翻到Scene_Battle 1脚本的战斗结束函数那里...决定在这里重载角色的能力值...但是首先遇到的问题就是这里不会写==(准确的来说是不知道角色表示方法)。然后又想到一个问题就是...如果我没有用这个技能,并且以正常的方式增加了能力值...在任意一次战斗过后就会还原该能力值...也想请问一下有没有解决这个问题的方法

Lv3.寻梦者

梦石
0
星屑
1066
在线时间
172 小时
注册时间
2010-10-11
帖子
23
发表于 2019-5-1 04:16:45 | 显示全部楼层
本帖最后由 719783572 于 2019-5-1 05:18 编辑

把你"战斗中叠加能力值"的公共事件发出来才能详尽地解决。
比如用1号变量来控制角色的力量值上升,那要还原就修改Scene_Battle 1的140行。
把140行“#解除战斗用状态”往下一段
改成
RUBY 代码复制
  1. # 解除战斗用状态
  2. for actor in $game_party.actors
  3.    actor.remove_states_battle
  4.    actor.str -= $game_variables[1]
  5. end

但这样的结果就是队伍里所有角色都要扣掉等同于1号变量的力量值。(除非这个能力叠加是全队增益)
或者如果是指定1号角色使用叠加能力值技能的,那就把actor.str改成$game_actors[1].str

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

点评

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

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9467
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

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

举个例子来说,如果你希望战斗中,学会 X 号技能的角色叠加变量 Y 的力量值,你可以这样去写
RUBY 代码复制
  1. class Game_Actor
  2.   def str
  3.     # 以下省略已有定义
  4.     # ....
  5.     n += $game_variables[Y] if $game_temp.in_battle && skill_learn?(X)
  6.     return n
  7.   end
  8. end

体会一下上面的方法是不是比之前的思路好多了?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 19:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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