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

Project1

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

[已经解决] 如何禁止某个角色使用技能?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2019
在线时间
1871 小时
注册时间
2009-8-17
帖子
256
跳转到指定楼层
1
发表于 2013-3-14 13:01:54 手机端发表。 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 351323331 于 2013-3-16 15:17 编辑

例如,角色2为战士,我想在该角色战斗时特技选项为灰色并且不能使用(其他角色不影响)。请问如何通过判断职业或者角色id达到这样的效果?

Lv1.梦旅人

梦石
0
星屑
75
在线时间
435 小时
注册时间
2012-7-31
帖子
796
2
发表于 2013-3-14 19:26:15 | 只看该作者
直接把技能改成无法使用行吗?

点评

他想把选项中的“特技”变灰并且无法按下。  发表于 2013-3-14 22:33
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
3
发表于 2013-3-14 23:11:58 | 只看该作者
本帖最后由 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)"

点评

就不知道这样去掉选项LZ是否会认可,毕竟LZ是要求选项变灰。但是P叔认可了喵。  发表于 2013-3-15 14:03

评分

参与人数 2星屑 +1 梦石 +1 收起 理由
351323331 + 1 认可答案
怪蜀黍 + 1 没测试,但目测脚本写对了,回答得很精彩!.

查看全部评分

这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2019
在线时间
1871 小时
注册时间
2009-8-17
帖子
256
4
 楼主| 发表于 2013-3-15 12:19:46 手机端发表。 | 只看该作者
本帖最后由 351323331 于 2013-3-15 22:43 编辑
a364774426 发表于 2013-3-14 23:11
这里有一个直接将指定角色特技选项去掉的办法。
第一步:用一下脚本替换掉“Window_ActorCommand”第二步, ...


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

自己改了下,可以达到我想要的效果。再次感谢。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 02:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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