Project1

标题: 如何禁止某个角色使用技能? [打印本页]

作者: 351323331    时间: 2013-3-14 13:01
标题: 如何禁止某个角色使用技能?
本帖最后由 351323331 于 2013-3-16 15:17 编辑

例如,角色2为战士,我想在该角色战斗时特技选项为灰色并且不能使用(其他角色不影响)。请问如何通过判断职业或者角色id达到这样的效果?
作者: 原野清平    时间: 2013-3-14 19:26
直接把技能改成无法使用行吗?
作者: a364774426    时间: 2013-3-14 23:11
本帖最后由 a364774426 于 2013-3-14 23:17 编辑

这里有一个直接将指定角色特技选项去掉的办法。
第一步:用一下脚本替换掉“Window_ActorCommand”
  1. class Window_ActorCommand < Window_Command
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     super(128, [], 1, 4)
  7.     self.active = false
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 设置
  11.   #     actor : 角色
  12.   #--------------------------------------------------------------------------
  13.   def setup(actor)
  14.     s1 = Vocab::attack
  15.     s2 = Vocab::skill
  16.     s3 = Vocab::guard
  17.     s4 = Vocab::item
  18.     if actor.class.skill_name_valid     # 是否指定职业技能文字
  19.       s2 = actor.class.skill_name       # 替换「技能」命令文字
  20.     end
  21.     if actor.id == 1
  22.       @commands = [s1,s3,s4]
  23.       @item_max = 3
  24.       else
  25.     @commands = [s1, s2, s3, s4]
  26.     @item_max = 4
  27.     end
  28.     refresh
  29.     self.index = 0
  30.   end
  31. end
复制代码
第二步,在Scene_Battle中找到
  1. def update_actor_command_selection
复制代码
将其下的一段替换为:
  1.     if Input.trigger?(Input::B)
  2.       Sound.play_cancel
  3.       prior_actor
  4.     elsif Input.trigger?(Input::C)
  5.       case @actor_command_window.index
  6.       when 0  # 攻击
  7.         Sound.play_decision
  8.         @active_battler.action.set_attack
  9.         start_target_enemy_selection
  10.       when 1  # 技能
  11.         Sound.play_decision
  12.         if @active_battler.id == 1
  13.         @active_battler.action.set_guard
  14.         next_actor
  15.         else
  16.         start_skill_selection
  17.         end
  18.       when 2  # 防御
  19.         Sound.play_decision
  20.         if @active_battler.id == 1
  21.           start_item_selection
  22.         else
  23.         @active_battler.action.set_guard
  24.         next_actor
  25.         end
  26.       when 3  # 物品
  27.         Sound.play_decision
  28.         start_item_selection
  29.       end
  30.     end
  31.   end
复制代码
大功告成
注意其中的关键语句"if actor.id == 1"和"if @active_battler.id == 1"
其含义是,假如是一号角色,会怎么样怎么样,这里的1号角色的职业是战士
假如你有多个角色是战士职业,那么可以换另外一种写法:
“if [1,2,3].include?(actor.id)”或者"if [1,2,3].include?(@active_battler.id)"

作者: 351323331    时间: 2013-3-15 12:19
本帖最后由 351323331 于 2013-3-15 22:43 编辑
a364774426 发表于 2013-3-14 23:11
这里有一个直接将指定角色特技选项去掉的办法。
第一步:用一下脚本替换掉“Window_ActorCommand”第二步, ...


手机上的,晚点试试。先谢了。

自己改了下,可以达到我想要的效果。再次感谢。




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