關於部落格
RPG製作大師XP腳本為主要更新

RPG製作大師VX腳本為其次更新

RPG製作大師VX_Ace目前不考慮

RPG製作大師MV腳本完全沒打算

留言完建議重新整理看看是否顯示

目前不處理本舖外腳本的相關問題

其他相關事項請觀看規定注意事項

本舖未來的經營計畫與VA的支援




var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-37462754-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

  • 303700

    累積人氣

  • 67

    今日人氣

    0

    追蹤人氣

【腳本】彈藥消耗


使用方法
打開腳本編輯器,對腳本「Main」按下右鍵,選擇插入,會出現1個空白腳本
在空白腳本內貼上以下腳本:
RPG Maker XP 適用
module Sword
  SWORD_AMMUNITION = []
#=======================================
#★魔劍工舖 - 彈藥消耗1.02(XP版)
#轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
#如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
SWORD_AMMU_INDE = 2 # 當攻擊選項被無效時,設定指標起始第幾個位置
# 設定需要消耗特定物品的武器,可自行增加SWORD_AMMUNITION[編號]
# 設置內容分別是 [需要彈藥的動畫編號, 彈藥物品編號, 消耗數量]
# 則使用該動畫的武器或是技能就需要指定數量的彈藥,不然無法使用!!
SWORD_AMMUNITION[1] = [11, 33, 1]
SWORD_AMMUNITION[2] = [12, 34, 1]
SWORD_AMMUNITION[3] = [83, 33, 1]
SWORD_AMMUNITION[4] = [84, 33, 1]
SWORD_AMMUNITION[5] = [85, 33, 1]
SWORD_AMMUNITION[6] = [86, 33, 4]
SWORD_AMMUNITION[7] = [87, 34, 3]
SWORD_AMMUNITION[8] = [88, 34, 1]
SWORD_AMMUNITION[9] = [89, 34, 1]
SWORD_AMMUNITION[10] = [90, 34, 4]
#--------------------------------------------------------------
  $Sword ? $Sword[10] = 101 : $Sword = {10=>101} # 腳本使用標誌
end
# 詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/24659202
#=======================================
#■ 處理戰鬥者的類別
class Game_Battler
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 可以使用技能的判定
  alias sword10_skill_can_use? skill_can_use?
  def skill_can_use?(skill_id)
    for i in 1...SWORD_AMMUNITION.size
      next if SWORD_AMMUNITION[i] == nil
      # 如果沒足夠的彈藥時就無效該技能
      if SWORD_AMMUNITION[i][0] == $data_skills[skill_id].animation2_id and
      $game_party.item_number(SWORD_AMMUNITION[i][1]) < SWORD_AMMUNITION[i][2]
        return false
      end
    end
    sword10_skill_can_use?(skill_id)
  end
end
#=======================================
#■ 處理戰鬥畫面的類別
class Scene_Battle
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 設定角色指令視窗
  alias sword10_phase3_setup_command_window phase3_setup_command_window
  def phase3_setup_command_window
    @actor_command_window.draw_item(0, Color.new(255, 255, 255)) # 重製顏色
    @sword_weapon = false
    # 武器無效的設置
    for i in SWORD_AMMUNITION
      next if (i == nil or @active_battler.weapon_id == 0)
      # 當指定的武器沒彈藥時的場合
      if i[0] == $data_weapons[@active_battler.weapon_id].animation2_id and
      $game_party.item_number(i[1]) < i[2]
        @actor_command_window.disable_item(0)
        @actor_command_window.index = SWORD_AMMU_INDE - 1
        @sword_weapon = true
        break
      end
    end
    sword10_phase3_setup_command_window
  end
  #-------------------------------------------------------------
  #● 更新畫面 (角色命令回合 : 基本命令)
  alias sword10_update_phase3_basic_command update_phase3_basic_command
  def update_phase3_basic_command
    # 攻擊選項無效的場合
    if @actor_command_window.index == 0 and @sword_weapon and Input.trigger?(Input::C)
      $game_system.se_play($data_system.cancel_se)
      return
    end
    sword10_update_phase3_basic_command
  end
  #-------------------------------------------------------------
  #● 產生基本行動結果
  alias sword10_make_basic_action_result make_basic_action_result
  def make_basic_action_result
    sword10_make_basic_action_result
    if @active_battler.is_a?(Game_Actor)
      for i in 1...$data_animations.size
        next if SWORD_AMMUNITION[i] == nil
        # 當發現對應的對方方動畫時的場合
        if SWORD_AMMUNITION[i][0] == @animation2_id
          $game_party.lose_item(SWORD_AMMUNITION[i][1], SWORD_AMMUNITION[i][2])
        end
      end
    end
  end
  #-------------------------------------------------------------
  #● 產生技能行動結果
  alias sword10_make_skill_action_result make_skill_action_result
  def make_skill_action_result
    sword10_make_skill_action_result
    if @active_battler.is_a?(Game_Actor)
      for i in 1...SWORD_AMMUNITION.size
        next if SWORD_AMMUNITION[i] == nil
        # 當發現對應的對方方動畫時的場合
        if SWORD_AMMUNITION[i][0] == @animation2_id
          $game_party.lose_item(SWORD_AMMUNITION[i][1], SWORD_AMMUNITION[i][2])
        end
      end
    end
  end
end
 
RPG Maker VX 適用
module Sword
  SWORD_AMMUNITION = []
#=======================================
#★魔劍工舖 - 彈藥消耗1.01(VX版)
#轉貼腳本請著名出處:
http://blog.yam.com/a870053jjkj/
#如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
SWORD_AMMU_INDE = 2 # 當攻擊選項被無效時,設定指標起始第幾個位置
# 設定需要消耗特定物品的武器,可自行增加SWORD_AMMUNITION[編號]
# 設置內容分別是 [需要彈藥的動畫編號, 彈藥物品編號, 消耗數量]
# 則使用該動畫的武器或是技能就需要指定數量的彈藥,不然無法使用!!
SWORD_AMMUNITION[1] = [13, 5, 1]
#--------------------------------------------------------------
  $Sword ? $Sword[10] = 100 : $Sword = {10=>100} # 腳本使用標誌
end
# 詳細設置說明請參考:
http://blog.yam.com/a870053jjkj/article/24659202
#=======================================
#■ 處理戰鬥者的類
class Game_Battler
  include Sword # 連接自定設置
  alias sword10_skill_can_use? skill_can_use?
  def skill_can_use?(skill)
    if self.is_a?(Game_Actor)
      if self.weapon_id != 0
        a = skill.animation_id == -1 ?
        $data_weapons[self.weapon_id].animation_id : skill.animation_id
        for i in 1...SWORD_AMMUNITION.size
          next if SWORD_AMMUNITION[i] == nil
          # 如果沒足夠的彈藥時就無效該技能
          if SWORD_AMMUNITION[i][0] == a and
          $game_party.item_number($data_items[SWORD_AMMUNITION[i][1]]) <
          SWORD_AMMUNITION[i][2]
            return false
          end
        end
      end
    end
    sword10_skill_can_use?(skill)
  end
end
#=======================================
#■ 處理戰鬥畫面的類
class Scene_Battle
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 開始角色命令選擇
  alias sword10_start_actor_command_selection start_actor_command_selection
  def start_actor_command_selection
    sword10_start_actor_command_selection
    return if @active_battler.weapon_id == 0 # 沒裝武器就不判定
    for i in 1...SWORD_AMMUNITION.size
      next if SWORD_AMMUNITION[i] == nil
      # 如果沒足夠的彈藥時就無效該技能
      if SWORD_AMMUNITION[i][0] ==
      $data_weapons[@active_battler.weapon_id].animation_id and
      $game_party.item_number($data_items[SWORD_AMMUNITION[i][1]]) <
      SWORD_AMMUNITION[i][2]
        @actor_command_window.draw_item(0, false)
      end
    end
  end
  #-------------------------------------------------------------
  # ● 更新角色命令選擇
  def update_actor_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      prior_actor
    elsif Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0  # 攻擊
        if @active_battler.weapon_id != 0
          # 開始判斷動畫是否消耗並處理
          for i in 1...SWORD_AMMUNITION.size
            next if SWORD_AMMUNITION[i] == nil
            # 如果沒足夠的彈藥時就無效該技能
            if SWORD_AMMUNITION[i][0] ==
            $data_weapons[@active_battler.weapon_id].animation_id and
            $game_party.item_number($data_items[SWORD_AMMUNITION[i][1]]) <
            SWORD_AMMUNITION[i][2]
              Sound.play_buzzer
              return
            end
          end
        end
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when 1  # 技能
        Sound.play_decision
        start_skill_selection
      when 2  # 防禦
        Sound.play_decision
        @active_battler.action.set_guard
        next_actor
      when 3  # 物品
        Sound.play_decision
        start_item_selection
      end
    end
  end
  #--------------------------------------------------------------------------
  #● 執行戰鬥行動:攻擊
  alias sword10_execute_action_attack execute_action_attack
  def execute_action_attack
    if @active_battler.is_a?(Game_Actor)
      if @active_battler.weapon_id != 0
        # 開始判斷動畫是否消耗並處理
        for i in 1...SWORD_AMMUNITION.size
          next if SWORD_AMMUNITION[i] == nil # 如果沒足夠的彈藥時就無效該技能
          if SWORD_AMMUNITION[i][0] ==
          $data_weapons[@active_battler.weapon_id].animation_id and
          $game_party.item_number($data_items[SWORD_AMMUNITION[i][1]]) >
          SWORD_AMMUNITION[i][2]
            $game_party.gain_item($data_items[SWORD_AMMUNITION[i][1]],
            -SWORD_AMMUNITION[i][2])
          end
        end
      end
    end
    sword10_execute_action_attack
  end
  #-------------------------------------------------------------
  #● 執行戰鬥行動:使用技能
  alias sword10_execute_action_skill execute_action_skill
  def execute_action_skill
    if @active_battler.is_a?(Game_Actor)
      if @active_battler.weapon_id != 0
        # 當技能動畫為與武器相同時的處理
        a = @active_battler.action.skill.animation_id == -1 ?
        $data_weapons[@active_battler.weapon_id].animation_id :
        @active_battler.action.skill.animation_id
        # 開始判斷動畫是否消耗並處理
        for i in 1...SWORD_AMMUNITION.size
          next if SWORD_AMMUNITION[i] == nil # 如果沒足夠的彈藥時就無效該技能
          if SWORD_AMMUNITION[i][0] == a and
          $game_party.item_number($data_items[SWORD_AMMUNITION[i][1]]) >
          SWORD_AMMUNITION[i][2]
            $game_party.gain_item($data_items[SWORD_AMMUNITION[i][1]],
            -SWORD_AMMUNITION[i][2])
          end
        end
      end
    end
    sword10_execute_action_skill
  end
end
 
 
使用者自定設置說明
SWORD_AMMU_INDE = 2
設定當普通攻擊無效的時,選項的起始位置設定
如果因為但要不足而無法攻擊,選項一開始還指著已經不能按的 [攻擊],不是很心酸...XD
所以可以用此設置來變更選項的位置
 
SWORD_AMMUNITION[編號] = [動畫編號, 物品編號, 數量]
編號:請依照數字的順序(1、2、3、4、5)的方式設置下去,用於系統循環之用
   可以自行新增多個SWORD_AMMUNITION[編號]
動畫編號:指定1個動畫編號,則如果武器或是技能的對象方動畫為此設置的動畫編號之時
     則這個武器或是技能將會視為是需要消耗的彈藥的武器或技能
物品編號:設定該動畫編號需要消耗的物品編號
數量:設定消耗該物品編號的數量
 
舉個例來說,假設我們要將武器銅弓設定成需要消耗箭矢1個(假設箭矢物品編號是33)
確定銅弓的對象方動畫的編號是11,則SWORD_AMMUNITION設定成[11, 33, 1]
 
相簿設定
標籤設定
相簿狀態