Project1

标题: vx中 有没有在战斗中变更武器的脚本啊?? [打印本页]

作者: quanhome    时间: 2011-2-12 01:01
标题: vx中 有没有在战斗中变更武器的脚本啊??
本帖最后由 DeathKing 于 2011-3-2 23:13 编辑

只看到有xp的,,,vx中 能不能简单的实现这个啊。。主要就是要实现不同的属性的武器来针对克制不同的怪用的。。。。。求助。。。
作者: l65591397    时间: 2011-2-12 02:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: Rion幻音    时间: 2011-2-12 02:51
战斗中按Q或者W再按确定键就行了~
  1. #==============================================================================
  2. # ☆Scene_Battle_Window_ActorCommand_Equip Ver. 1.02
  3. #------------------------------------------------------------------------------
  4. #  バトル画面で、アクター行動中にL,Rを押すと装備変更画面が出る。
  5. #
  6. # Ver.1.02~:装備変更でターン消費&装備変更可能部位設定
  7. #==============================================================================

  8. #//////////////////////////////////////
  9. #「装備変更」の名称変更
  10. #//////////////////////////////////////
  11. module Vocab
  12.   SobiCange ="Equip"
  13. end

  14. #//////////////////////////////////////
  15. #「装備変更」のウィンドウ位置
  16. #初期:x=480,y=0
  17. #//////////////////////////////////////
  18. SOBI_CHANGE_WINDOW_X=480
  19. SOBI_CHANGE_WINDOW_Y=0

  20. #//////////////////////////////////////
  21. #戦闘中で「装備変更」可能部位設定
  22. # false:不可,true:可能
  23. #//////////////////////////////////////
  24. SOBI_CHANGE_BUI={
  25.   0=>true,  #武器 & 盾 (両手武器,二刀流の関係で武器と盾は同時設定とします)
  26.   1=>false,  #頭
  27.   2=>false,  #体
  28.   3=>true,  #装飾品
  29. }

  30. #//////////////////////////////////////
  31. #「装備変更」で1ターン消費しますか?
  32. #0:しない.1:する(装備1つに対し1ターン)
  33. #//////////////////////////////////////
  34. SOBI_CHANGE_TURN =0

  35. #///////////////////////////////////////////////////////
  36. #「装備変更」で1ターン消費する時の言葉集
  37. #///////////////////////////////////////////////////////
  38. module Vocab
  39.   SobiCange_TurnWord0 ="%sの装備変更!"       #1行目に表示される文
  40.   SobiCange_TurnWord1 ="%sは%sを装備した。"     #無事装備変更が行えた場合
  41.   SobiCange_TurnWord2 ="%sは%sを装備し直した。" #装備変更のアイテムが同じだった場合
  42.   SobiCange_TurnWord3 ="%sは%sを外した。"       #何も装備しなかった場合
  43.   SobiCange_TurnWord4 ="%sは何もしなかった。"   #装備なし→装備なし
  44. end


  45. #//////////////////////////////////////
  46. #↓以下は本スクリプト
  47. #//////////////////////////////////////
  48. class Window_ActorCommand2 < Window_Command
  49.   #--------------------------------------------------------------------------
  50.   # ☆ オブジェクト初期化 <新規追加>
  51.   #--------------------------------------------------------------------------
  52.   def initialize
  53.     super(128, [], 1,1)
  54.     self.active = false
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ☆ セットアップ <新規追加>
  58.   #     actor : アクター
  59.   #--------------------------------------------------------------------------
  60.   def setup(actor)
  61.     s1 = Vocab::SobiCange
  62.     @commands = [s1]
  63.     @item_max = 1
  64.     refresh
  65.     self.index = 0
  66.   end
  67. end


  68. class Window_Equip < Window_Selectable
  69.   #--------------------------------------------------------------------------
  70.   # ☆ バトル時のみのリフレッシュ <新規追加>
  71.   #--------------------------------------------------------------------------
  72.   def battle_refresh
  73.     self.contents.clear
  74.     @data = []
  75.     for item in @actor.equips do @data.push(item) end
  76.     @item_max = @data.size
  77.     self.contents.font.color = system_color
  78.     if @actor.two_swords_style
  79.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  80.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  81.     else
  82.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  83.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  84.     end
  85.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  86.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  87.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  88.     draw_item_name(@data[0], 92, WLH * 0, SOBI_CHANGE_BUI[0])
  89.     draw_item_name(@data[1], 92, WLH * 1, SOBI_CHANGE_BUI[0])
  90.     draw_item_name(@data[2], 92, WLH * 2, SOBI_CHANGE_BUI[1])
  91.     draw_item_name(@data[3], 92, WLH * 3, SOBI_CHANGE_BUI[2])
  92.     draw_item_name(@data[4], 92, WLH * 4, SOBI_CHANGE_BUI[3])
  93.   end
  94. end


  95. class Scene_Battle < Scene_Base
  96.   #--------------------------------------------------------------------------
  97.   # ☆ 開始処理 <追加変更>
  98.   #--------------------------------------------------------------------------
  99.   def start
  100.     super
  101.     $game_temp.in_battle = true
  102.     @spriteset = Spriteset_Battle.new
  103.     @message_window = Window_BattleMessage.new
  104.     @action_battlers = []
  105.     create_info_viewport
  106.    
  107.     @lose_equip_item =[]                              #追加
  108.     @gain_equip_item =[]                              #追加
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ☆ フレーム更新 <追加変更>
  112.   #--------------------------------------------------------------------------
  113.   def update
  114.     super
  115.     update_basic(true)
  116.     update_info_viewport                  # 情報表示ビューポートを更新
  117.     if $game_message.visible
  118.       @info_viewport.visible = false
  119.       @message_window.visible = true
  120.     end
  121.     unless $game_message.visible          # メッセージ表示中以外
  122.       return if judge_win_loss            # 勝敗判定
  123.       update_scene_change
  124.       if @target_enemy_window != nil
  125.         update_target_enemy_selection     # 対象敵キャラ選択
  126.       elsif @target_actor_window != nil
  127.         update_target_actor_selection     # 対象アクター選択
  128.       elsif @skill_window != nil
  129.         update_skill_selection            # スキル選択
  130.       elsif @item_window != nil
  131.         update_item_selection             # アイテム選択
  132.       elsif @party_command_window.active
  133.         update_party_command_selection    # パーティコマンド選択
  134.       elsif @actor_command_window.active
  135.         update_actor_command_selection    # アクターコマンド選択
  136.       elsif @actor_command_window2.active
  137.         update_actor_command2_selection    # アクターコマンド選択 #追加
  138.       elsif @equip_window != nil
  139.         equip_update    # 装備選択 #追加
  140.       else
  141.         process_battle_event              # バトルイベントの処理
  142.         process_action                    # 戦闘行動
  143.         process_battle_event              # バトルイベントの処理
  144.       end
  145.     end
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ☆ 情報表示ビューポートの作成 <追加変更>
  149.   #--------------------------------------------------------------------------
  150.   def create_info_viewport
  151.     @info_viewport = Viewport.new(0, 288, 544, 128)
  152.     @info_viewport.z = 100
  153.     @status_window = Window_BattleStatus.new
  154.     @party_command_window = Window_PartyCommand.new
  155.     @actor_command_window = Window_ActorCommand.new
  156.     @actor_command_window2 = Window_ActorCommand2.new #追加
  157.     @status_window.viewport = @info_viewport
  158.     @party_command_window.viewport = @info_viewport
  159.     @actor_command_window.viewport = @info_viewport
  160.     @actor_command_window2.viewport = @info_viewport #追加
  161.     @status_window.x = 128
  162.     @actor_command_window.x = 544
  163.     @actor_command_window2.x = SOBI_CHANGE_WINDOW_X #
  164.     @actor_command_window2.y = SOBI_CHANGE_WINDOW_Y #
  165.     @info_viewport.visible = false
  166.     @actor_command_window2.visible = false #追加
  167.     @actor_command_window2.active = false #追加
  168.     @actor_command_window2.back_opacity=245# 追加
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ☆ 情報表示ビューポートの解放 <追加変更>
  172.   #--------------------------------------------------------------------------
  173.   def dispose_info_viewport
  174.     @status_window.dispose
  175.     @party_command_window.dispose
  176.     @actor_command_window.dispose
  177.     @actor_command_window2.dispose #追加
  178.     @info_viewport.dispose
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ☆ 情報表示ビューポートの更新 <追加変更>
  182.   #--------------------------------------------------------------------------
  183.   def update_info_viewport
  184.     @party_command_window.update
  185.     @actor_command_window.update
  186.     @actor_command_window2.update #追加
  187.     @status_window.update
  188.     if @party_command_window.active and @info_viewport.ox > 0
  189.       @info_viewport.ox -= 16
  190.     elsif @actor_command_window.active and @info_viewport.ox < 128
  191.       @info_viewport.ox += 16
  192.     elsif @actor_command_window2.active and @info_viewport.ox < 128 #追加
  193.       @info_viewport.ox += 16
  194.     end
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ☆ アクターコマンド選択の開始 <追加変更>
  198.   #--------------------------------------------------------------------------
  199.   def start_actor_command_selection
  200.     @party_command_window.active = false
  201.     @actor_command_window2.active = false #追加
  202.     @actor_command_window2.visible = false #追加
  203.     @actor_command_window.setup(@active_battler)
  204.     @actor_command_window.active = true
  205.     if @command_temp!=nil
  206.       @actor_command_window.index = @command_temp #追加
  207.       @command_temp = nil                         #追加
  208.     else
  209.       @actor_command_window.index = 0
  210.     end
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ☆ アクターコマンド2選択の開始 <新規追加>
  214.   #--------------------------------------------------------------------------
  215.   def start_actor_command2_selection
  216.     @party_command_window.active = false
  217.     @actor_command_window.active = false
  218.     @actor_command_window2.setup(@active_battler)
  219.    
  220.     @actor_command_window2.active = true
  221.     @actor_command_window2.visible = true #
  222.     @actor_command_window2.index = 0
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ☆ アクターコマンド選択の更新 <追加変更>
  226.   #--------------------------------------------------------------------------
  227.   def update_actor_command_selection
  228.     if Input.trigger?(Input::B)
  229.       Sound.play_cancel
  230.       prior_actor
  231.     elsif Input.trigger?(Input::C)
  232.       case @actor_command_window.index
  233.       when 0  # 攻撃
  234.         Sound.play_decision
  235.         @active_battler.action.set_attack
  236.         start_target_enemy_selection
  237.       when 1  # スキル
  238.         Sound.play_decision
  239.         start_skill_selection
  240.       when 2  # 防御
  241.         Sound.play_decision
  242.         @active_battler.action.set_guard
  243.         next_actor
  244.       when 3  # アイテム
  245.         Sound.play_decision
  246.         start_item_selection
  247.       end
  248.     elsif Input.press?(Input::L) or Input.press?(Input::R) #追加
  249.       @command_temp  = @actor_command_window.index         #追加
  250.       start_actor_command2_selection                       #追加
  251.     end
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ☆ アクターコマンド選択の更新 <新規追加>
  255.   #--------------------------------------------------------------------------
  256.   def update_actor_command2_selection
  257.     unless Input.press?(Input::L) or Input.press?(Input::R) #追加
  258.       start_actor_command_selection #追加
  259.     end
  260.     if Input.trigger?(Input::B)
  261.       Sound.play_cancel
  262.       @actor_command_window2.active = false #追加
  263.       @actor_command_window2.visible = false #追加
  264.       @command_temp=0                                      #追加
  265.       
  266.       prior_actor
  267.     elsif Input.trigger?(Input::C)
  268.       case @actor_command_window2.index
  269.       when 0  # 装備変更
  270.         Sound.play_decision
  271.         start_equip_selection #追加
  272.        end
  273.     end
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ☆ 定数 <新規追加>
  277.   #---------------------------------------------------------------------------
  278.   EQUIP_TYPE_MAX = 5                      # 装備部位の数
  279.   #--------------------------------------------------------------------------
  280.   # ☆ 装備選択の開始 <新規追加>
  281.   #--------------------------------------------------------------------------
  282.   def start_equip_selection
  283.     @help_window = Window_Help.new
  284.     create_equip_item_windows
  285.     @equip_window = Window_Equip.new(208, 56, @active_battler)
  286.     @equip_window.help_window = @help_window
  287.     @equip_index=0 #if @equip_index==nil
  288.     @equip_window.index = @equip_index
  289.     @equip_status_window =Window_EquipStatus.new(0, 56, @active_battler)
  290.     @equip_status_window.active = false
  291.    
  292.     @equip_window.battle_refresh
  293.     @equip_window.active = true
  294.    
  295.     @actor_command_window.active = false
  296.     @actor_command_window2.active = false
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ☆ アイテムウィンドウの作成 <新規追加>
  300.   #--------------------------------------------------------------------------
  301.   def create_equip_item_windows
  302.     @item_windows = []
  303.     for i in 0...EQUIP_TYPE_MAX
  304.       @item_windows[i] = Window_EquipItem.new(0, 208, 544, 80, @active_battler, i)
  305.       @item_windows[i].help_window = @help_window
  306.       @item_windows[i].visible = (@equip_index == i)
  307.       @item_windows[i].y = 208
  308.       @item_windows[i].height = 80
  309.       @item_windows[i].active = false
  310.       @item_windows[i].index = -1
  311.     end
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ☆ アイテムウィンドウの更新 <新規追加>
  315.   #--------------------------------------------------------------------------
  316.   def update_equip_item_windows
  317.     for i in 0...EQUIP_TYPE_MAX
  318.       @item_windows[i].visible = (@equip_window.index == i)
  319.       @item_windows[i].update
  320.     end
  321.     @equip_item_window = @item_windows[@equip_window.index]
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ☆ 装備ウィンドウの更新 <新規追加>
  325.   #--------------------------------------------------------------------------
  326.   def update_equip_window
  327.     @equip_window.update
  328.   end
  329.   #--------------------------------------------------------------------------
  330.   # ☆ ステータスウィンドウの更新 <新規追加>
  331.   #--------------------------------------------------------------------------
  332.   def update_equip_status_window
  333.     if @equip_window.active
  334.       @equip_status_window.set_new_parameters(nil, nil, nil, nil)
  335.     elsif @equip_item_window.active
  336.       temp_actor = @active_battler.clone
  337.       temp_actor.change_equip(@equip_window.index, @equip_item_window.item, true)
  338.       new_atk = temp_actor.atk
  339.       new_def = temp_actor.def
  340.       new_spi = temp_actor.spi
  341.       new_agi = temp_actor.agi
  342.       @equip_status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
  343.     end
  344.     @equip_status_window.update
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ☆ フレーム更新 <新規追加>
  348.   #--------------------------------------------------------------------------
  349.   def equip_update
  350.     @help_window.update
  351.     update_equip_window
  352.     update_equip_status_window
  353.     update_equip_item_windows
  354.     if @equip_window.active
  355.       update_equip_selection
  356.     elsif @equip_item_window.active
  357.       update_equip_item_selection
  358.     end
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ☆ 装備選択の終了 <新規追加>
  362.   #--------------------------------------------------------------------------
  363.   def end_equip_selection
  364.     if @equip_window != nil
  365.       @equip_window.dispose
  366.       @equip_window = nil
  367.       @equip_status_window.dispose
  368.       @equip_status_window = nil
  369.       dispose_equip_item_windows
  370.       @help_window.dispose
  371.       @help_window = nil
  372.     end

  373.     if SOBI_CHANGE_TURN ==0
  374.       @actor_command_window2.active = true
  375.     else
  376.       @actor_command_window2.active = false #追加
  377.       @actor_command_window2.visible = false #追加
  378.       @actor_command_window.active = true
  379.     end
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ☆ アイテムウィンドウの解放 <新規追加>
  383.   #--------------------------------------------------------------------------
  384.   def dispose_equip_item_windows
  385.     for window in @item_windows
  386.       window.dispose
  387.     end
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ☆ 装備部位選択の更新 <新規追加>
  391.   #--------------------------------------------------------------------------
  392.   def update_equip_selection
  393.     if Input.trigger?(Input::B)
  394.       Sound.play_cancel
  395.       end_equip_selection
  396.     elsif Input.trigger?(Input::C)
  397.       if    @equip_window.index == 0 and SOBI_CHANGE_BUI[0] != true
  398.         Sound.play_buzzer
  399.       elsif @equip_window.index == 1 and SOBI_CHANGE_BUI[0] != true
  400.         Sound.play_buzzer
  401.       elsif @equip_window.index == 2 and SOBI_CHANGE_BUI[1] != true
  402.         Sound.play_buzzer
  403.       elsif @equip_window.index == 3 and SOBI_CHANGE_BUI[2] != true
  404.         Sound.play_buzzer
  405.       elsif @equip_window.index == 4 and SOBI_CHANGE_BUI[3] != true
  406.         Sound.play_buzzer
  407.         
  408.       else
  409.         if @active_battler.fix_equipment
  410.           Sound.play_buzzer
  411.         else
  412.           Sound.play_decision
  413.           @equip_window.active = false
  414.           @equip_item_window.active = true
  415.           @equip_item_window.index = 0
  416.         end
  417.       end
  418.     end
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   # ☆ 装備アイテム選択の更新 <新規追加>
  422.   #--------------------------------------------------------------------------
  423.   def update_equip_item_selection
  424.     if Input.trigger?(Input::B)
  425.       Sound.play_cancel
  426.       @equip_window.active = true
  427.       @equip_item_window.active = false
  428.       @equip_item_window.index = -1
  429.     elsif Input.trigger?(Input::C)
  430.       Sound.play_equip
  431.       
  432.       if SOBI_CHANGE_TURN ==1
  433.         equip_item =  @equip_item_window.item
  434.         index      =  @equip_window.index
  435.         last_equip_item =@active_battler.equips[index]

  436.         @active_battler.action.set_sobi_change(index, equip_item,last_equip_item)
  437.         
  438.         @active_battler.battle_change_equip_item_lose(equip_item,last_equip_item)

  439.         @lose_equip_item[@actor_index]=equip_item
  440.         @gain_equip_item[@actor_index]=last_equip_item
  441.         
  442.         @equip_window.active = true
  443.         @equip_item_window.active = false
  444.         @equip_item_window.index = -1
  445.         end_equip_selection
  446.         next_actor
  447.       else
  448.         @active_battler.change_equip(@equip_window.index, @equip_item_window.item)
  449.         @equip_window.active = true
  450.         @equip_item_window.active = false
  451.         @equip_item_window.index = -1
  452.         @equip_window.battle_refresh
  453.         for equip_item_window in @item_windows
  454.           equip_item_window.refresh
  455.         end
  456.       end     
  457.       
  458.     end
  459.   end
  460.   #--------------------------------------------------------------------------
  461.   # ☆ 前のアクターのコマンド入力へ <追加変更>
  462.   #--------------------------------------------------------------------------
  463.   def prior_actor
  464.     loop do
  465.       if @actor_index == 0
  466.         start_party_command_selection
  467.         return
  468.       end
  469.       @status_window.index = @actor_index -= 1
  470.       @active_battler = $game_party.members[@actor_index]
  471.       next if @active_battler.auto_battle
  472.       break if @active_battler.inputable?
  473.     end
  474.    
  475.     if SOBI_CHANGE_TURN ==1                               #追加
  476.       lose  = @gain_equip_item[@actor_index]              #追加
  477.       gain  = @lose_equip_item[@actor_index]              #追加
  478.       @active_battler.battle_change_equip_item_gain(lose,gain) #追加
  479.         
  480.       @gain_equip_item[@actor_index] = nil                #追加
  481.       @lose_equip_item[@actor_index] = nil                #追加
  482.     end                                                   #追加
  483.    
  484.     start_actor_command_selection
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ☆ 戦闘行動の実行 <追加変更>
  488.   #--------------------------------------------------------------------------
  489.   def execute_action
  490.     case @active_battler.action.kind
  491.     when 0  # 基本
  492.       case @active_battler.action.basic
  493.       when 0  # 攻撃
  494.         execute_action_attack
  495.       when 1  # 防御
  496.         execute_action_guard
  497.       when 2  # 逃走
  498.         execute_action_escape
  499.       when 3  # 待機
  500.         execute_action_wait
  501.       when 4 # 装備変更              #追加
  502.         execute_action_sobi_change    #追加
  503.       end
  504.     when 1  # スキル
  505.       execute_action_skill
  506.     when 2  # アイテム
  507.       execute_action_item
  508.     end
  509.   end
  510.   #--------------------------------------------------------------------------
  511.   # ☆ 戦闘行動の実行 :装備変更 <新規追加>
  512.   #--------------------------------------------------------------------------
  513.   def execute_action_sobi_change
  514.     item = @active_battler.action.sobi_item
  515.     index= @active_battler.action.sobi_index
  516.     last_item = @active_battler.action.last_sobi_item
  517.    
  518.     text =  sprintf(Vocab::SobiCange_TurnWord0,@active_battler.name)
  519.     @message_window.add_instant_text(text)
  520.     wait(45)
  521.         
  522.     Sound.play_equip
  523.     if item != nil
  524.       if item != last_item
  525.         text = sprintf(Vocab::SobiCange_TurnWord1, @active_battler.name,item.name)
  526.       else
  527.         text = sprintf(Vocab::SobiCange_TurnWord2, @active_battler.name,item.name)
  528.       end
  529.     else
  530.       if last_item != nil
  531.         text = sprintf(Vocab::SobiCange_TurnWord3, @active_battler.name,last_item.name)
  532.       else
  533.         text = sprintf(Vocab::SobiCange_TurnWord4, @active_battler.name)
  534.       end
  535.     end
  536.    
  537.     @active_battler.battle_change_equip(index, item)
  538.     @message_window.add_instant_text(text)
  539.     wait(60)
  540.   end
  541. end


  542. class Game_BattleAction
  543.   attr_accessor :sobi_item                    # 装備アイテム
  544.   attr_accessor :last_sobi_item                    # 最後に装備してたアイテム
  545.   attr_accessor :sobi_index                   # 装備部位
  546.   #--------------------------------------------------------------------------
  547.   # ☆ 装備変更を設定 <新規追加>
  548.   #--------------------------------------------------------------------------
  549.   def set_sobi_change(sobi_index, sobi_item,last_sobi_item)
  550.     @kind = 0
  551.     @basic = 4
  552.     @sobi_item   = sobi_item
  553.     @sobi_index  = sobi_index
  554.     @last_sobi_item   = last_sobi_item
  555.   end
  556.   #--------------------------------------------------------------------------
  557.   # ☆ 装備変更判定 <新規追加>
  558.   #--------------------------------------------------------------------------
  559.   def sobi_change?
  560.     return (@kind == 0 and @basic == 4)
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ☆ 装備アイテムオブジェクト取得 <新規追加>
  564.   #--------------------------------------------------------------------------
  565.   def sobi_item
  566.     return @sobi_item
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ☆ 装備部位オブジェクト取得 <新規追加>
  570.   #--------------------------------------------------------------------------
  571.   def sobi_index
  572.     return @sobi_index
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ☆ 最後に装備していたアイテムオブジェクト取得 <新規追加>
  576.   #--------------------------------------------------------------------------
  577.   def last_sobi_item
  578.     return @last_sobi_item
  579.   end
  580. end


  581. class Game_Actor < Game_Battler
  582.   #--------------------------------------------------------------------------
  583.   # ☆ バトル時装備の変更 (オブジェクトで指定) <新規追加>
  584.   #     equip_type : 装備部位 (0..4)
  585.   #     item       : 武器 or 防具 (nil なら装備解除)
  586.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  587.   #--------------------------------------------------------------------------
  588.   def battle_change_equip(equip_type, item, test = false)
  589.     last_item = equips[equip_type]

  590.     $game_party.gain_item(item, 1) #減ってますから,もとに戻す
  591.     return if $game_party.item_number(item) == 0 if item != nil
  592.     $game_party.gain_item(last_item, 1)
  593.     $game_party.lose_item(item, 1)
  594.    
  595.     item_id = item == nil ? 0 : item.id
  596.         
  597.     case equip_type
  598.     when 0  # 武器
  599.       @weapon_id = item_id
  600.       unless two_hands_legal?             # 両手持ち違反の場合
  601.         change_equip(1, nil, test)        # 逆の手の装備を外す
  602.       end
  603.     when 1  # 盾
  604.       @armor1_id = item_id
  605.       unless two_hands_legal?             # 両手持ち違反の場合
  606.         change_equip(0, nil, test)        # 逆の手の装備を外す
  607.       end
  608.     when 2  # 頭
  609.       @armor2_id = item_id
  610.     when 3  # 身体
  611.       @armor3_id = item_id
  612.     when 4  # 装飾品
  613.       @armor4_id = item_id
  614.     end
  615.   end
  616.   #--------------------------------------------------------------------------
  617.   # ☆ バトル時装備の変更のアイテムの減 (オブジェクトで指定) <新規追加>
  618.   #     equip_type : 装備部位 (0..4)
  619.   #     item       : 武器 or 防具 (nil なら装備解除)
  620.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  621.   #--------------------------------------------------------------------------
  622.   def battle_change_equip_item_lose(item,last_item, test = false)
  623.     return if $game_party.item_number(item) == 0 if item != nil
  624.       $game_party.lose_item(item, 1)
  625.   end
  626.   #--------------------------------------------------------------------------
  627.   # ☆ バトル時装備の変更のアイテムの増 (オブジェクトで指定) <新規追加>
  628.   #     equip_type : 装備部位 (0..4)
  629.   #     item       : 武器 or 防具 (nil なら装備解除)
  630.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  631.   #--------------------------------------------------------------------------
  632.   def battle_change_equip_item_gain(item,last_item, test = false)
  633.       $game_party.gain_item(last_item, 1)
  634.   end
  635. end


  636. #////////////////////////////////////////////////////////////////
  637. #作成者:ehime
  638. #http://www.abcoroti.com/~nekoneko/index.html
  639. #readmeやスタッフロールの明記,使用報告は任意.
  640. #////////////////////////////////////////////////////////////////

复制代码

作者: quanhome    时间: 2011-2-12 15:23
感谢 ls 两位,,脚 本 我试了下,很好。 可是我的系统已经被我改过了。所以不兼容了。不过还是很感谢。我又想到用公共事件做   用 $scene = Scene_Equip.new( $game_party.last_actor_index) 来直接调出 装备菜单,,可是返回时却直接到了地图画面,没有返回战斗中,,,这个返回原来的战斗画面 大概要怎么写啊,,,先感谢了。。要是用公共事件做  具体怎么做好啊。。。。。
作者: Rion幻音    时间: 2011-2-12 22:55
回复 quanhome 的帖子

如果使用公共事件调用装备窗口的话会使战斗强制退出,所以不能~稍微整合我发的脚本就能了~




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