Project1

标题: 如何让装备只能更换不能卸下这个== [打印本页]

作者: 暴走杀神    时间: 2020-9-23 22:53
标题: 如何让装备只能更换不能卸下这个==
本帖最后由 暴走杀神 于 2020-9-23 22:55 编辑

我只要让武器这个地方只能换不能卸下的这种效果

QQ截图20200923225135.png (194.75 KB, 下载次数: 8)

QQ截图20200923225135.png

作者: ada01    时间: 2020-9-24 00:14
把固定装备改成只能更换而不能卸下装备

  1. #==============================================================================
  2. # ■ Scene_Equip
  3. #------------------------------------------------------------------------------
  4. # 處理裝備畫面的類別。
  5. #==============================================================================

  6. class Scene_Equip
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化目標
  9.   #     actor_index : 角色索引
  10.   #     equip_index : 裝備索引
  11.   #--------------------------------------------------------------------------
  12.   def initialize(actor_index = 0, equip_index = 0)
  13.     @actor_index = actor_index
  14.     @equip_index = equip_index
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 主處理
  18.   #--------------------------------------------------------------------------
  19.   def main
  20.     # 取得角色
  21.     @actor = $game_party.actors[@actor_index]
  22.     # 製作視窗
  23.     @help_window = Window_Help.new
  24.     @left_window = Window_EquipLeft.new(@actor)
  25.     @right_window = Window_EquipRight.new(@actor)
  26.     @item_window1 = Window_EquipItem.new(@actor, 0)
  27.     @item_window2 = Window_EquipItem.new(@actor, 1)
  28.     @item_window3 = Window_EquipItem.new(@actor, 2)
  29.     @item_window4 = Window_EquipItem.new(@actor, 3)
  30.     @item_window5 = Window_EquipItem.new(@actor, 4)
  31.     # 聯結提示視窗
  32.     @right_window.help_window = @help_window
  33.     @item_window1.help_window = @help_window
  34.     @item_window2.help_window = @help_window
  35.     @item_window3.help_window = @help_window
  36.     @item_window4.help_window = @help_window
  37.     @item_window5.help_window = @help_window
  38.     # 設定游標位置
  39.     @right_window.index = @equip_index
  40.     refresh
  41.     # 執行轉變
  42.     Graphics.transition
  43.     # 主循環
  44.     loop do
  45.       # 更新遊戲畫面
  46.       Graphics.update
  47.       # 更新輸入訊息
  48.       Input.update
  49.       # 更新畫面
  50.       update
  51.       # 如果畫面切換的話的就中斷循環
  52.       if $scene != self
  53.         break
  54.       end
  55.     end
  56.     # 準備轉變
  57.     Graphics.freeze
  58.     # 釋放視窗
  59.     @help_window.dispose
  60.     @left_window.dispose
  61.     @right_window.dispose
  62.     @item_window1.dispose
  63.     @item_window2.dispose
  64.     @item_window3.dispose
  65.     @item_window4.dispose
  66.     @item_window5.dispose
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 更新
  70.   #--------------------------------------------------------------------------
  71.   def refresh
  72.     # 設定物品視窗的可視狀態
  73.     @item_window1.visible = (@right_window.index == 0)
  74.     @item_window2.visible = (@right_window.index == 1)
  75.     @item_window3.visible = (@right_window.index == 2)
  76.     @item_window4.visible = (@right_window.index == 3)
  77.     @item_window5.visible = (@right_window.index == 4)
  78.     # 取得當前裝備中的物品
  79.     item1 = @right_window.item
  80.     # 設定當前的物品視窗到 @item_window
  81.     case @right_window.index
  82.     when 0
  83.       @item_window = @item_window1
  84.     when 1
  85.       @item_window = @item_window2
  86.     when 2
  87.       @item_window = @item_window3
  88.     when 3
  89.       @item_window = @item_window4
  90.     when 4
  91.       @item_window = @item_window5
  92.     end
  93.     # 右側視窗被更新的情況下
  94.     if @right_window.active
  95.       # 刪除變更裝備後的能力
  96.       @left_window.set_new_parameters(nil, nil, nil)
  97.     end
  98.     # 物品視窗被更新的情況下
  99.     if @item_window.active
  100.       # 取得現在選中的物品
  101.       item2 = @item_window.item
  102.       # 變更裝備
  103.       last_hp = @actor.hp
  104.       last_sp = @actor.sp
  105.       @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
  106.       # 取得變更裝備後的能力值
  107.       new_atk = @actor.atk
  108.       new_pdef = @actor.pdef
  109.       new_mdef = @actor.mdef
  110.       # 返回到裝備
  111.       @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
  112.       @actor.hp = last_hp
  113.       @actor.sp = last_sp
  114.       # 取出左側視窗
  115.       @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
  116.     end
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 更新畫面
  120.   #--------------------------------------------------------------------------
  121.   def update
  122.     # 更新視窗
  123.     @left_window.update
  124.     @right_window.update
  125.     @item_window.update
  126.     refresh
  127.     # 右側視窗被更新的情況下: 取用 update_right
  128.     if @right_window.active
  129.       update_right
  130.       return
  131.     end
  132.     # 物品視窗被更新的情況下: 取用 update_item
  133.     if @item_window.active
  134.       update_item
  135.       return
  136.     end
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 更新畫面 (右側視窗被更新的情況下)
  140.   #--------------------------------------------------------------------------
  141.   def update_right
  142.     # 按下B鍵的情況下
  143.     if Input.trigger?(Input::B)
  144.       # 演奏取消 SE
  145.       $game_system.se_play($data_system.cancel_se)
  146.       # 切換到選單畫面
  147.       $scene = Scene_Menu.new(2)
  148.       return
  149.     end
  150.     # 按下C鍵的情況下
  151.     if Input.trigger?(Input::C)
  152.       # 固定裝備的情況下
  153.       
  154.       
  155.       
  156.       #-------------------------------------------(將固定裝備改成可更換不卸下)
  157.       #if @actor.equip_fix?(@right_window.index)
  158.         # 演奏循環 SE
  159.        # $game_system.se_play($data_system.buzzer_se)
  160.         #return
  161.       #end
  162.       #-------------------------------------------(將固定裝備改成可更換不卸下)
  163.       
  164.       
  165.       # 演奏確定 SE
  166.       $game_system.se_play($data_system.decision_se)
  167.       # 更新物品視窗
  168.       @right_window.active = false
  169.       @item_window.active = true
  170.       @item_window.index = 0
  171.       return
  172.     end
  173.     # 按下R鍵的情況下
  174.     if Input.trigger?(Input::R)
  175.       # 演奏游標 SE
  176.       $game_system.se_play($data_system.cursor_se)
  177.       # 移至下一位角色
  178.       @actor_index += 1
  179.       @actor_index %= $game_party.actors.size
  180.       # 切換到別的裝備畫面
  181.       $scene = Scene_Equip.new(@actor_index, @right_window.index)
  182.       return
  183.     end
  184.     # 按下L鍵的情況下
  185.     if Input.trigger?(Input::L)
  186.       # 演奏游標 SE
  187.       $game_system.se_play($data_system.cursor_se)
  188.       # 移至上一位角色
  189.       @actor_index += $game_party.actors.size - 1
  190.       @actor_index %= $game_party.actors.size
  191.       # 切換到別的裝備畫面
  192.       $scene = Scene_Equip.new(@actor_index, @right_window.index)
  193.       return
  194.     end
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 更新畫面 (物品視窗被更新的情況下)
  198.   #--------------------------------------------------------------------------
  199.   def update_item
  200.     # 按下B鍵的情況下
  201.     if Input.trigger?(Input::B)
  202.       # 演奏取消 SE
  203.       $game_system.se_play($data_system.cancel_se)
  204.       # 更新右側視窗
  205.       @right_window.active = true
  206.       @item_window.active = false
  207.       @item_window.index = -1
  208.       return
  209.     end
  210.     # 按下C鍵的情況下
  211.     if Input.trigger?(Input::C)
  212.       # 演奏裝備 SE
  213.       $game_system.se_play($data_system.equip_se)
  214.       # 取得物品視窗現在選擇的裝備資料
  215.       item = @item_window.item
  216.       # 變更裝備
  217. #-------------------------------------------(將固定裝備改成可更換不卸下)      
  218.       
  219. #      @actor.equip(@right_window.index, item == nil ? 0 : item.id)

  220.          
  221.       if @actor.equip_fix?(@right_window.index)
  222.       if item == nil
  223.         # 演奏循環 SE   
  224.       $game_system.se_play($data_system.buzzer_se)
  225.         return
  226.       end
  227.       end
  228.       $game_system.se_play($data_system.equip_se)
  229.       @actor.equip(@right_window.index, item == nil ? 0 : item.id)


  230. #-------------------------------------------(將固定裝備改成可更換不卸下)



  231.       # 更新右側視窗
  232.       @right_window.active = true
  233.       @item_window.active = false
  234.       @item_window.index = -1
  235.       # 再次製作右側視窗、物品視窗的內容
  236.       @right_window.refresh
  237.       @item_window.refresh
  238.       return
  239.     end
  240.   end
  241. end
复制代码





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