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

Project1

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

[已经解决] 无盾牌时战斗中“防御”选项无效。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
187 小时
注册时间
2006-9-3
帖子
175
跳转到指定楼层
1
发表于 2012-4-14 19:44:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求解做法。
...........

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

2
发表于 2012-4-14 19:59:25 | 只看该作者
从Scene_Battle3那里的第137行到when 3那里开始改成如下:
  1. when 2  # 防御
  2.         # 演奏确定 SE
  3.         if $game_actors[@actor_index].armor != nil
  4.           $game_system.se_play($data_system.decision_se)
  5.           # 设置行动
  6.           @active_battler.current_action.kind = 0
  7.           @active_battler.current_action.basic = 1
  8.           # 转向下一位角色的指令输入
  9.           phase3_next_actor
  10.         else
  11.           # 演奏冻结 SE
  12.           $game_system.se_play($data_system.buzzer_se)
  13.         end
  14.       when 3  # 物品
复制代码

点评

再说那也不是 nil ……  发表于 2012-4-14 20:12
没有考虑选项的灰度问题。  发表于 2012-4-14 20:03
回复

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

3
发表于 2012-4-14 20:05:12 | 只看该作者
本帖最后由 忧雪の伤 于 2012-4-14 20:14 编辑
  1. class Scene_Battle
  2.   alias yukinoshyan_phase3_setup_command_window phase3_setup_command_window
  3.   def phase3_setup_command_window *args
  4.     yukinoshyan_phase3_setup_command_window *args
  5.     if @active_battler.armor1_id.zero?
  6.       @actor_command_window.disable_item 2
  7.     else
  8.       @actor_command_window.refresh
  9.     end
  10.   end
  11.   def update_phase3_basic_command
  12.     if Input.trigger?(Input::B)
  13.       $game_system.se_play($data_system.cancel_se)
  14.       phase3_prior_actor
  15.       return
  16.     end
  17.     if Input.trigger?(Input::C)
  18.       case @actor_command_window.index
  19.       when 0
  20.         $game_system.se_play($data_system.decision_se)
  21.         @active_battler.current_action.kind = 0
  22.         @active_battler.current_action.basic = 0
  23.         start_enemy_select
  24.       when 1
  25.         $game_system.se_play($data_system.decision_se)
  26.         @active_battler.current_action.kind = 1
  27.         start_skill_select
  28.       when 2
  29.         if @active_battler.armor1_id.zero?
  30.           return $game_system.se_play($data_system.buzzer_se)
  31.         end
  32.         $game_system.se_play($data_system.decision_se)
  33.         @active_battler.current_action.kind = 0
  34.         @active_battler.current_action.basic = 1
  35.         phase3_next_actor
  36.       when 3  
  37.         $game_system.se_play($data_system.decision_se)
  38.         @active_battler.current_action.kind = 2
  39.         start_item_select
  40.       end
  41.       return
  42.     end
  43.   end
  44. end
复制代码

点评

方便帮我加个防御需要消耗30SP吗?(无SP也不可防御)  发表于 2012-4-14 22:02
谢谢版主。  发表于 2012-4-14 21:49
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
187 小时
注册时间
2006-9-3
帖子
175
4
 楼主| 发表于 2012-4-14 22:10:38 | 只看该作者
本帖最后由 he11120 于 2012-4-14 22:10 编辑
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #==============================================================================
  5. # 选项动态加强
  6. # 作者:carol3
  7. #==============================================================================
  8. # ■ Window_Command
  9. #------------------------------------------------------------------------------
  10. #  一般的命令选择行窗口。
  11. #==============================================================================

  12. class Window_Command < Window_Selectable
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化对像
  15.   # width : 窗口的宽
  16.   # commands : 命令字符串序列
  17.   #--------------------------------------------------------------------------
  18.   def initialize(width, commands)
  19.     # 由命令的个数计算出窗口的高
  20.     super(0, 0, width, commands.size * 32 + 32)
  21.     @item_max = commands.size
  22.     @commands = commands
  23.     self.contents = Bitmap.new(width - 32, @item_max * 32)
  24.     @item = []
  25.     self.index = 0
  26.     refresh
  27.     @oldindex = 0
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 刷新
  31.   #--------------------------------------------------------------------------
  32.   def refresh
  33.     self.contents.clear
  34.     for i in 0...@item_max
  35.       if i != self.index
  36.         draw_item_dis(i)
  37.       else
  38.         draw_item_active(i,@item[i])
  39.       end
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 描绘项目
  44.   # index : 项目编号
  45.   # color : 文字色
  46.   #--------------------------------------------------------------------------
  47.   def draw_item_dis(index)
  48.     self.contents.font.size -= 2
  49.     self.contents.font.color = disabled_color
  50.     rect = Rect.new(4+5, 32 * index, self.contents.width - 24, 32)
  51.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  52.     self.contents.draw_text(rect, @commands[index])
  53.     self.contents.font.size += 2
  54.   end
  55.   def draw_item_active(index, type)
  56.     self.contents.font.color = Color.new(0,0,0,255)
  57.     self.contents.draw_text(5,32*index+1,self.contents.width,32, @commands[index])
  58.     if type==1
  59.       self.contents.font.color = disabled_color
  60.     else
  61.       self.contents.font.color = Color.new(255,255,0,255)
  62.     end
  63.     self.contents.draw_text(4,32*index,self.contents.width,32, @commands[index])
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 项目无效化
  67.   # index : 项目编号
  68.   #--------------------------------------------------------------------------
  69.   def disable_item(index)
  70.     @item[index] = 1
  71.   end  
  72.   #--------------------------------------------------------------------------
  73.   # ● 刷新方法更新
  74.   #--------------------------------------------------------------------------
  75.   def update
  76.     super
  77.     #——这里使用的刷新方法比直接refresh节约很多内存
  78.     if self.index != @oldindex
  79.       @oldindex = self.index
  80.       refresh
  81.     end
  82.   end
  83. end

  84. #==============================================================================
  85. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  86. #==============================================================================
复制代码
我用了这个动态菜单选项的,选项灰度有点问题。(如果一个角色有盾牌,另一个没有,第二轮(同一场战斗)有盾牌的“防御”选项也变成灰的.(但还可以用)
...........
回复

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

5
发表于 2012-4-15 09:50:27 | 只看该作者
本帖最后由 忧雪の伤 于 2012-4-15 09:53 编辑
he11120 发表于 2012-4-14 22:10
我用了这个动态菜单选项的,选项灰度有点问题。(如果一个角色有盾牌,另一个没有,第二轮(同一场战斗)有 ...
  1. class Scene_Battle
  2.   alias yukinoshyan_phase3_setup_command_window phase3_setup_command_window
  3.   def phase3_setup_command_window *args
  4.     @actor_command_window.instance_variable_get(:@item)[2] = 0
  5.     yukinoshyan_phase3_setup_command_window *args
  6.     if @active_battler.armor1_id.zero? || @active_battler.mp < 30
  7.       @actor_command_window.disable_item 2
  8.     else
  9.       @actor_command_window.refresh
  10.     end
  11.   end
  12.   def update_phase3_basic_command
  13.     if Input.trigger?(Input::B)
  14.       $game_system.se_play($data_system.cancel_se)
  15.       phase3_prior_actor
  16.       return
  17.     end
  18.     if Input.trigger?(Input::C)
  19.       case @actor_command_window.index
  20.       when 0
  21.         $game_system.se_play($data_system.decision_se)
  22.         @active_battler.current_action.kind = 0
  23.         @active_battler.current_action.basic = 0
  24.         start_enemy_select
  25.       when 1
  26.         $game_system.se_play($data_system.decision_se)
  27.         @active_battler.current_action.kind = 1
  28.         start_skill_select
  29.       when 2
  30.         if @active_battler.armor1_id.zero? || @active_battler.mp < 30
  31.           return $game_system.se_play($data_system.buzzer_se)
  32.         end
  33.         $game_system.se_play($data_system.decision_se)
  34.         @active_battler.mp = @active_battler.mp - 30
  35.         @active_battler.current_action.kind = 0
  36.         @active_battler.current_action.basic = 1
  37.         phase3_next_actor
  38.       when 3  
  39.         $game_system.se_play($data_system.decision_se)
  40.         @active_battler.current_action.kind = 2
  41.         start_item_select
  42.       end
  43.       return
  44.     end
  45.   end
  46. end
复制代码

点评

非常感谢,不过你上面的“MP”写错了,在RMXP里是“SP”  发表于 2012-4-15 16:01
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
288 小时
注册时间
2010-6-24
帖子
56
6
发表于 2012-4-15 09:54:09 | 只看该作者
能冒昧问句:你这防御能减少多少伤害?要不然我们防御还打算回血回魔的,你这里还掉魔。
(善意提醒,可以无视,哈)

点评

默认减少50%,盾牌好的属性能减少多一些,最高100%。  发表于 2012-4-15 15:54
再多嘴下,哈!!!首先你的创意很不错!不过 一半很多吗?玩家减少一次攻击机会,换一半伤害,这笔交易都有点不合算。哈,我随便扯的,别见怪  发表于 2012-4-15 13:14
系统默认防御时减少一半伤害  发表于 2012-4-15 10:13
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 02:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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