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

Project1

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

怎样制作一个不能使用物品的状态

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-6-17
帖子
46
跳转到指定楼层
1
发表于 2009-4-21 03:07:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

蚂蚁卡卡

梦石
0
星屑
116
在线时间
66 小时
注册时间
2007-12-16
帖子
3081
2
发表于 2009-4-21 04:23:34 | 只看该作者
http://rpg.blue/viewthread.php?tid=89368

状态 名字 改为 物封 就可以了
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~



  1. #==============================================================================
  2. # ■ Scene_Battle (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的类。
  5. #==============================================================================

  6. class Scene_Battle
  7.   #--------------------------------------------------------------------------
  8.   # ● 开始角色命令回合
  9.   #--------------------------------------------------------------------------
  10.   def start_phase3
  11.     # 转移到回合 3
  12.     @phase = 3
  13.     # 设置觉得为非选择状态
  14.     @actor_index = -1
  15.     @active_battler = nil
  16.     # 输入下一个角色的命令
  17.     phase3_next_actor
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 转到输入下一个角色的命令
  21.   #--------------------------------------------------------------------------
  22.   def phase3_next_actor
  23.     # 循环
  24.     begin
  25.       # 角色的明灭效果 OFF
  26.       if @active_battler != nil
  27.         @active_battler.blink = false
  28.       end
  29.       # 最后的角色的情况
  30.       if @actor_index == $game_party.actors.size-1
  31.         # 开始主回合
  32.         start_phase4
  33.         return
  34.       end
  35.       # 推进角色索引
  36.       @actor_index += 1
  37.       @active_battler = $game_party.actors[@actor_index]
  38.       @active_battler.blink = true
  39.     # 如果角色是在无法接受指令的状态就再试
  40.     end until @active_battler.inputable?
  41.     # 设置角色的命令窗口
  42.     phase3_setup_command_window
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 转向前一个角色的命令输入
  46.   #--------------------------------------------------------------------------
  47.   def phase3_prior_actor
  48.     # 循环
  49.     begin
  50.       # 角色的明灭效果 OFF
  51.       if @active_battler != nil
  52.         @active_battler.blink = false
  53.       end
  54.       # 最初的角色的情况下
  55.       if @actor_index == 0
  56.         # 开始同伴指令回合
  57.         start_phase2
  58.         return
  59.       end
  60.       # 返回角色索引
  61.       @actor_index -= 1
  62.       @active_battler = $game_party.actors[@actor_index]
  63.       @active_battler.blink = true
  64.     # 如果角色是在无法接受指令的状态就再试
  65.     end until @active_battler.inputable?
  66.     # 设置角色的命令窗口
  67.     phase3_setup_command_window
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 设置角色指令窗口
  71.   #--------------------------------------------------------------------------
  72.   def phase3_setup_command_window
  73.     # 同伴指令窗口无效化
  74.     @party_command_window.active = false
  75.     @party_command_window.visible = false
  76.     # 角色指令窗口无效化
  77.     @actor_command_window.active = true
  78.     @actor_command_window.visible = true
  79.     # 设置角色指令窗口的位置
  80.     @actor_command_window.x = @actor_index * 160
  81.     # 设置索引为 0
  82.     @actor_command_window.index = 0
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 刷新画面 (角色命令回合)
  86.   #--------------------------------------------------------------------------
  87.   def update_phase3
  88.     # 敌人光标有效的情况下
  89.     if @enemy_arrow != nil
  90.       update_phase3_enemy_select
  91.     # 角色光标有效的情况下
  92.     elsif @actor_arrow != nil
  93.       update_phase3_actor_select
  94.     # 特技窗口有效的情况下
  95.     elsif @skill_window != nil
  96.       update_phase3_skill_select
  97.     # 物品窗口有效的情况下
  98.     elsif @item_window != nil
  99.       update_phase3_item_select
  100.     # 角色指令窗口有效的情况下
  101.     elsif @actor_command_window.active
  102.       update_phase3_basic_command
  103.     end
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 刷新画面 (角色命令回合 : 基本命令)
  107.   #--------------------------------------------------------------------------
  108.   def update_phase3_basic_command
  109.     # 按下 B 键的情况下
  110.     if Input.trigger?(Input::B)
  111.       # 演奏取消 SE
  112.       $game_system.se_play($data_system.cancel_se)
  113.       # 转向前一个角色的指令输入
  114.       phase3_prior_actor
  115.       return
  116.     end
  117.     # 按下 C 键的情况下
  118.     if Input.trigger?(Input::C)
  119.       # 角色指令窗口光标位置分之
  120.       case @actor_command_window.index
  121.       when 0  # 攻击
  122.         # 演奏确定 SE
  123.         $game_system.se_play($data_system.decision_se)
  124.         # 设置行动
  125.         @active_battler.current_action.kind = 0
  126.         @active_battler.current_action.basic = 0
  127.         # 开始选择敌人
  128.         start_enemy_select
  129.       when 1  # 特技
  130.         # 演奏确定 SE
  131.         $game_system.se_play($data_system.decision_se)
  132.         # 设置行动
  133.         @active_battler.current_action.kind = 1
  134.         # 开始选择特技
  135.         start_skill_select
  136.       when 2  # 防御
  137.         # 演奏确定 SE
  138.         $game_system.se_play($data_system.decision_se)
  139.         # 设置行动
  140.         @active_battler.current_action.kind = 0
  141.         @active_battler.current_action.basic = 1
  142.         # 转向下一位角色的指令输入
  143.         phase3_next_actor
  144.       when 3  # 物品
  145.         # 当状态为5号时 不能使用物品
  146.         if id != nil and @active_battler.state?(5)
  147.           @actor_command_window.disable_item(3)
  148.           $game_system.se_play($data_system.buzzer_se)
  149.           return
  150.         end
  151.         # 演奏确定 SE
  152.         $game_system.se_play($data_system.decision_se)
  153.         # 设置行动
  154.         @active_battler.current_action.kind = 2
  155.         # 开始选择物品
  156.         start_item_select
  157.       end
  158.       return
  159.     end
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 刷新画面 (角色命令回合 : 选择特技)
  163.   #--------------------------------------------------------------------------
  164.   def update_phase3_skill_select
  165.     # 设置特技窗口为可视状态
  166.     @skill_window.visible = true
  167.     # 刷新特技窗口
  168.     @skill_window.update
  169.     # 按下 B 键的情况下
  170.     if Input.trigger?(Input::B)
  171.       # 演奏取消 SE
  172.       $game_system.se_play($data_system.cancel_se)
  173.       # 结束特技选择
  174.       end_skill_select
  175.       return
  176.     end
  177.     # 按下 C 键的情况下
  178.     if Input.trigger?(Input::C)
  179.       # 获取特技选择窗口现在选择的特技的数据
  180.       @skill = @skill_window.skill
  181.       # 无法使用的情况下
  182.       if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
  183.         # 演奏冻结 SE
  184.         $game_system.se_play($data_system.buzzer_se)
  185.         return
  186.       end
  187.       # 演奏确定 SE
  188.       $game_system.se_play($data_system.decision_se)
  189.       # 设置行动
  190.       @active_battler.current_action.skill_id = @skill.id
  191.       # 设置特技窗口为不可见状态
  192.       @skill_window.visible = false
  193.       # 效果范围是敌单体的情况下
  194.       if @skill.scope == 1
  195.         # 开始选择敌人
  196.         start_enemy_select
  197.       # 效果范围是我方单体的情况下
  198.       elsif @skill.scope == 3 or @skill.scope == 5
  199.         # 开始选择角色
  200.         start_actor_select
  201.       # 效果范围不是单体的情况下
  202.       else
  203.         # 选择特技结束
  204.         end_skill_select
  205.         # 转到下一位角色的指令输入
  206.         phase3_next_actor
  207.       end
  208.       return
  209.     end
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● 刷新画面 (角色命令回合 : 选择物品)
  213.   #--------------------------------------------------------------------------
  214.   def update_phase3_item_select
  215.     # 设置物品窗口为可视状态
  216.     @item_window.visible = true
  217.     # 刷新物品窗口
  218.     @item_window.update
  219.     # 按下 B 键的情况下
  220.     if Input.trigger?(Input::B)
  221.       # 演奏取消 SE
  222.       $game_system.se_play($data_system.cancel_se)
  223.       # 选择物品结束
  224.       end_item_select
  225.       return
  226.     end
  227.     # 按下 C 键的情况下
  228.     if Input.trigger?(Input::C)
  229.       # 获取物品窗口现在选择的物品资料
  230.       @item = @item_window.item
  231.       # 无法使用的情况下
  232.       unless $game_party.item_can_use?(@item.id)
  233.         # 演奏冻结 SE
  234.         $game_system.se_play($data_system.buzzer_se)
  235.         return
  236.       end
  237.       # 演奏确定 SE
  238.       $game_system.se_play($data_system.decision_se)
  239.       # 设置行动
  240.       @active_battler.current_action.item_id = @item.id
  241.       # 设置物品窗口为不可见状态
  242.       @item_window.visible = false
  243.       # 效果范围是敌单体的情况下
  244.       if @item.scope == 1
  245.         # 开始选择敌人
  246.         start_enemy_select
  247.       # 效果范围是我方单体的情况下
  248.       elsif @item.scope == 3 or @item.scope == 5
  249.         # 开始选择角色
  250.         start_actor_select
  251.       # 效果范围不是单体的情况下
  252.       else
  253.         # 物品选择结束
  254.         end_item_select
  255.         # 转到下一位角色的指令输入
  256.         phase3_next_actor
  257.       end
  258.       return
  259.     end
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 刷新画面画面 (角色命令回合 : 选择敌人)
  263.   #--------------------------------------------------------------------------
  264.   def update_phase3_enemy_select
  265.     # 刷新敌人箭头
  266.     @enemy_arrow.update
  267.     # 按下 B 键的情况下
  268.     if Input.trigger?(Input::B)
  269.       # 演奏取消 SE
  270.       $game_system.se_play($data_system.cancel_se)
  271.       # 选择敌人结束
  272.       end_enemy_select
  273.       return
  274.     end
  275.     # 按下 C 键的情况下
  276.     if Input.trigger?(Input::C)
  277.       # 演奏确定 SE
  278.       $game_system.se_play($data_system.decision_se)
  279.       # 设置行动
  280.       @active_battler.current_action.target_index = @enemy_arrow.index
  281.       # 选择敌人结束
  282.       end_enemy_select
  283.       # 显示特技窗口中的情况下
  284.       if @skill_window != nil
  285.         # 结束特技选择
  286.         end_skill_select
  287.       end
  288.       # 显示物品窗口的情况下
  289.       if @item_window != nil
  290.         # 结束物品选择
  291.         end_item_select
  292.       end
  293.       # 转到下一位角色的指令输入
  294.       phase3_next_actor
  295.     end
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 画面更新 (角色指令回合 : 选择角色)
  299.   #--------------------------------------------------------------------------
  300.   def update_phase3_actor_select
  301.     # 刷新角色箭头
  302.     @actor_arrow.update
  303.     # 按下 B 键的情况下
  304.     if Input.trigger?(Input::B)
  305.       # 演奏取消 SE
  306.       $game_system.se_play($data_system.cancel_se)
  307.       # 选择角色结束
  308.       end_actor_select
  309.       return
  310.     end
  311.     # 按下 C 键的情况下
  312.     if Input.trigger?(Input::C)
  313.       # 演奏确定 SE
  314.       $game_system.se_play($data_system.decision_se)
  315.       # 设置行动
  316.       @active_battler.current_action.target_index = @actor_arrow.index
  317.       # 选择角色结束
  318.       end_actor_select
  319.       # 显示特技窗口中的情况下
  320.       if @skill_window != nil
  321.         # 结束特技选择
  322.         end_skill_select
  323.       end
  324.       # 显示物品窗口的情况下
  325.       if @item_window != nil
  326.         # 结束物品选择
  327.         end_item_select
  328.       end
  329.       # 转到下一位角色的指令输入
  330.       phase3_next_actor
  331.     end
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 开始选择敌人
  335.   #--------------------------------------------------------------------------
  336.   def start_enemy_select
  337.     # 生成敌人箭头
  338.     @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
  339.     # 关联帮助窗口
  340.     @enemy_arrow.help_window = @help_window
  341.     # 无效化角色指令窗口
  342.     @actor_command_window.active = false
  343.     @actor_command_window.visible = false
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ● 结束选择敌人
  347.   #--------------------------------------------------------------------------
  348.   def end_enemy_select
  349.     # 释放敌人箭头
  350.     @enemy_arrow.dispose
  351.     @enemy_arrow = nil
  352.     # 指令为 [战斗] 的情况下
  353.     if @actor_command_window.index == 0
  354.       # 有效化角色指令窗口
  355.       @actor_command_window.active = true
  356.       @actor_command_window.visible = true
  357.       # 隐藏帮助窗口
  358.       @help_window.visible = false
  359.     end
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● 开始选择角色
  363.   #--------------------------------------------------------------------------
  364.   def start_actor_select
  365.     # 生成角色箭头
  366.     @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
  367.     @actor_arrow.index = @actor_index
  368.     # 关联帮助窗口
  369.     @actor_arrow.help_window = @help_window
  370.     # 无效化角色指令窗口
  371.     @actor_command_window.active = false
  372.     @actor_command_window.visible = false
  373.   end
  374.   #--------------------------------------------------------------------------
  375.   # ● 结束选择角色
  376.   #--------------------------------------------------------------------------
  377.   def end_actor_select
  378.     # 释放角色箭头
  379.     @actor_arrow.dispose
  380.     @actor_arrow = nil
  381.   end
  382.   #--------------------------------------------------------------------------
  383.   # ● 开始选择特技
  384.   #--------------------------------------------------------------------------
  385.   def start_skill_select
  386.     # 生成特技窗口
  387.     @skill_window = Window_Skill.new(@active_battler)
  388.     # 关联帮助窗口
  389.     @skill_window.help_window = @help_window
  390.     # 无效化角色指令窗口
  391.     @actor_command_window.active = false
  392.     @actor_command_window.visible = false
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ● 选择特技结束
  396.   #--------------------------------------------------------------------------
  397.   def end_skill_select
  398.     # 释放特技窗口
  399.     @skill_window.dispose
  400.     @skill_window = nil
  401.     # 隐藏帮助窗口
  402.     @help_window.visible = false
  403.     # 有效化角色指令窗口
  404.     @actor_command_window.active = true
  405.     @actor_command_window.visible = true
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 开始选择物品
  409.   #--------------------------------------------------------------------------
  410.   def start_item_select
  411.     # 生成物品窗口
  412.     @item_window = Window_Item.new
  413.     # 关联帮助窗口
  414.     @item_window.help_window = @help_window
  415.     # 无效化角色指令窗口
  416.     @actor_command_window.active = false
  417.     @actor_command_window.visible = false
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● 结束选择物品
  421.   #--------------------------------------------------------------------------
  422.   def end_item_select
  423.     # 释放物品窗口
  424.     @item_window.dispose
  425.     @item_window = nil
  426.     # 隐藏帮助窗口
  427.     @help_window.visible = false
  428.     # 有效化角色指令窗口
  429.     @actor_command_window.active = true
  430.     @actor_command_window.visible = true
  431.   end
  432. end
复制代码


5号状态附加 不能使用物品
《隋唐乱》完整解密版点击进入
米兰,让我怎么说离开……

曾经我也是一个有志青年,直到我膝盖中了一箭……

《隋唐乱》博客地址
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-16 04:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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