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

Project1

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

[已经解决] 技能如何做出在特定场合下消费不同的效果?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3646
在线时间
899 小时
注册时间
2017-10-30
帖子
347
跳转到指定楼层
1
发表于 2018-2-24 12:41:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 MireniamuYuki 于 2018-2-24 12:46 编辑

比如某个角色有24号恢复HP技能(可在任意场合使用),战斗时正常消耗MP100。为了增加游戏难度,这个技能在非战斗(也就是菜单中使用技能时)使用时消耗2倍或更多的MP。
如果用脚本来的话应该要修改原来的哪个地方?或者加一段新的?
啥都会,啥都不擅长
一个VA群:679174724 欢迎来玩

Lv4.逐梦者

梦石
8
星屑
4801
在线时间
1567 小时
注册时间
2014-1-9
帖子
402

开拓者

2
发表于 2018-2-24 13:17:43 | 只看该作者
在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
复制代码



点评

已解决,非常感谢。但是一个小问题就是这样一来所有其他的技能也会显示消耗MP为原来的2倍……能否只指定某个技能只有这种效果?  发表于 2018-2-24 13:29
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
4801
在线时间
1567 小时
注册时间
2014-1-9
帖子
402

开拓者

3
发表于 2018-2-24 13:55:01 | 只看该作者
余音·魔眼 发表于 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
复制代码

点评

2 * (skill.mp_cost * mcr).to_i if item,id == X#X号技能消耗2为倍数 写法优化一下,这位的写法可能看起来很长  发表于 2018-2-25 11:39

评分

参与人数 2星屑 +50 +1 收起 理由
RaidenInfinity + 50 认可答案
MireniamuYuki + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 13:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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