Project1

标题: 自动加血 变量怎么写 才最好 [打印本页]

作者: z2z4    时间: 2012-12-18 14:33
标题: 自动加血 变量怎么写 才最好
就如标题说的  战斗结束后 自动加血  跟网游一样  当然有个药库 回血后 药库会减少
作者: j433463    时间: 2012-12-18 15:41
那就是非战斗时保持满血了,并行公共事件判断角色 hp < mhp 时,使用补血物品,
直到 hp == mhp 或补血物品用光为止。

Game_battler 默认脚本的 def on_battle_end 战斗结束处理部份,也可以加上消耗补血物品的语法补血。


作者: j433463    时间: 2012-12-19 07:14
本帖最后由 j433463 于 2012-12-19 07:15 编辑

如果是战斗后自动血魔全满,那很简单,
在 Game_battler 战斗结束处理的 def on_battle_end 中,
加个 actor.recover_all 完全还原就行了,
或是 actor.hp = actor.mhp actor.mp = actor.mmp

但要说像网游那样,网游有战斗后自动满血魔的吗?
那好像是内挂或外挂才有的自动喝药水补血功能,
一般来说,我只见过单机游戏战斗后走路回血魔,
还是你指的是网游那样站着不动或坐下来会慢慢回血回魔?




作者: j433463    时间: 2012-12-19 08:36
喔,那就是在 Game_battler 战斗结束处理的 def on_battle_end 中,
加个判断:
  1. actor.hp = actor.mhp if actor.hp < actor.hp / 4
复制代码
试试看,HP 小于四分之一时会不会补满?
如果会,再复制一行贴在下面,
把 .hp 改成 .mp,.mhp 改成 .mmp,
就是回魔了。
作者: j433463    时间: 2012-12-19 09:36
本帖最后由 j433463 于 2012-12-19 09:55 编辑

那就另一个方式,写一个公共事件,譬如 id 为 008 公共事件,
这个公共事件就是判断角色喝药水回复的,
然后在默认脚本 Scene_battle 中找到:
  1.   #--------------------------------------------------------------------------
  2.   # ● 结束前处理
  3.   #--------------------------------------------------------------------------
  4.   def pre_terminate
  5.     super
  6.     Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map)
  7.     Graphics.fadeout(60) if SceneManager.scene_is?(Scene_Title)
  8.   end
复制代码
的 super 下加一行
  1.     $game_temp.reserve_common_event(8)
复制代码
也就是说,只是改脚本在战斗结束时执行一次八号公共事件,
只有一行,纯粹是呼叫执行公共事件。

因为你要的是喝药水回复,还必须分歧条件判断角色身上有没有带药水,有药水才能喝,
这个在事件中你比较容易编写,而且可以写得比较细,还自己看得懂,
用变数代入每个角色的 HP,分歧条件当 HP 小于某数时使用药水,
MP 也一样。

如果是设置一个大药罐,每次战斗后自动用它来回复,每次回复药罐的水量会随之减少,
这也可以在公共事件中自己做,药罐的量就是一个变量,回复多少生命,减多少药量,
我不知道还有什么问题。





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1