Project1

标题: 技能如何做出在特定场合下消费不同的效果? [打印本页]

作者: MireniamuYuki    时间: 2018-2-24 12:41
标题: 技能如何做出在特定场合下消费不同的效果?
本帖最后由 MireniamuYuki 于 2018-2-24 12:46 编辑

比如某个角色有24号恢复HP技能(可在任意场合使用),战斗时正常消耗MP100。为了增加游戏难度,这个技能在非战斗(也就是菜单中使用技能时)使用时消耗2倍或更多的MP。
如果用脚本来的话应该要修改原来的哪个地方?或者加一段新的?
作者: 余音·魔眼    时间: 2018-2-24 13:17
在Game_BattlerBase里面的skill_mp_cost(skill)方法:
  1.   def skill_mp_cost(skill)
  2.     (skill.mp_cost * mcr).to_i
  3.   end
复制代码
加个场景判断,
也就是SceneManager模块中的scene_is?(scene_class)方法:

  1.   def self.scene_is?(scene_class)
  2.     @scene.instance_of?(scene_class)
  3.   end
复制代码
scene_class为场景的类名。
如果你要在菜单的技能场景中使用物品消耗2倍及以上MP的话就是以下这样:

  1. class Game_BattlerBase
  2.   
  3.   def skill_mp_cost(skill)
  4.     if SceneManager.scene_is?(Scene_Skill)
  5.       2 * (skill.mp_cost * mcr).to_i#2为倍数
  6.     elsif SceneManager.scene_is?(Scene_Battle)#因为默认脚本中需要使用技能的场景只有两个,一个是在菜单的技能界面中,所以还有一个就是在战斗场景中
  7.       (skill.mp_cost * mcr).to_i
  8.     end
  9.   end
  10.   
  11. end
复制代码




作者: 余音·魔眼    时间: 2018-2-24 13:55
余音·魔眼 发表于 2018-2-24 13:17
在Game_BattlerBase里面的skill_mp_cost(skill)方法:加个场景判断,
也就是SceneManager模块中的scene_is? ...
  1. class Game_BattlerBase
  2.   
  3.   def skill_mp_cost(skill)
  4.     if SceneManager.scene_is?(Scene_Skill)
  5.       case skill.id#技能ID
  6.       when 24#24为技能ID
  7.         倍数 * (skill.mp_cost * mcr).to_i
  8.       when #技能ID
  9.         倍数 * (skill.mp_cost * mcr).to_i
  10.       when #技能ID
  11.         倍数 * (skill.mp_cost * mcr).to_i
  12.       else
  13.         (skill.mp_cost * mcr).to_i
  14.       end
  15.     elsif SceneManager.scene_is?(Scene_Battle)#因为默认脚本中需要使用技能的场景只有两个,一个是在菜单的技能界面中,所以还有一个就是在战斗场景中
  16.       (skill.mp_cost * mcr).to_i
  17.     end
  18.   end
  19.   
  20. end
复制代码





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