魔劍工舖

關於部落格
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);
})();

  • 296198

    累積人氣

  • 10

    今日人氣

    0

    訂閱人氣

【腳本】開關式技能狀態


使用方法
打開腳本編輯器,對腳本「Main」按下右鍵,選擇插入,會出現1個空白腳本
在空白腳本內貼上以下腳本:
RPG Maker XP 適用
module Sword
  ON = true ; OFF = false ; Sword34_EquipSkill = Hash.new
#=======================================
#★ 魔劍工舖 - 開關式技能狀態1.00(XP版)
# 轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
# 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
Sword34_SPorON = ON # 是否要將原本的SP消耗數值顯示變更為顯示ON或OFF
Sword34_ONorOFF = ['ON', 'OFF'] # 設定顯示是否打開的內容 ['開', '關']
Sword34_Return = ON # 當選擇了開關式技能時,是否還要繼續執行技能資料
Sword34_Remove = ON # 當開啟某個狀態時,其他的開關式狀態是否也要解除掉
#--------------------------------------------------------------
#○ 裝備技能資料設置(Sword34_EquipSkill[技能編號] = 附加的狀態編號)
Sword34_EquipSkill[1] = 31
Sword34_EquipSkill[2] = 30
=begin
========================================
# 詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/26348696
=end
end
if Sword::Sword34_SPorON # 如果想將SP消耗改為開關內容時
  #======================================
  #■ 在沒有存檔的情況下
  class Game_Temp
    attr_reader    :sp_cost # 儲存所有技能的SP消耗所需量
    #-----------------------------------------------------------
    #● 初始化物件
    alias sword34_initialize initialize
    def initialize
      sword34_initialize
      (@sp_cost = [] ; (1...$data_skills.size).each{|i|
      @sp_cost[i] = $data_skills[i].sp_cost}) if Sword::Sword34_SPorON
    end
  end
  #======================================
  #■ 處理戰鬥者的類別
  class Game_Battler
    #-----------------------------------------------------------
    #● 可以使用技能的判定
    alias sword34_skill_can_use? skill_can_use?
    def skill_can_use?(skill_id)
      skill_string = nil # 字符串轉回SP消耗的標誌
      if $data_skills[skill_id].sp_cost.is_a?(String) # 當SP消耗為文字時(開關文字)
        skill_string = $data_skills[skill_id].sp_cost
        $data_skills[skill_id].sp_cost = $game_temp.sp_cost[skill_id]
      end
      a = sword34_skill_can_use?(skill_id)
      $data_skills[skill_id].sp_cost = skill_string if skill_string
      return a
    end
  end
  #======================================
  #■ 技能畫面、戰鬥畫面、顯示可以使用的技能的瀏覽視窗
  class Window_Skill < Window_Selectable
    include Sword # 連接自定設置
    #-----------------------------------------------------------
    #● 描繪項目
    alias sword34_draw_item draw_item
    def draw_item(index)
      sp_cost = $data_skills[@data[index].id].sp_cost
      if Sword34_EquipSkill[@data[index].id] # 當該技能為開關式技能時
      if @actor.state?(Sword34_EquipSkill[@data[index].id]) # 當持有該狀態時
        $data_skills[@data[index].id].sp_cost = Sword34_ONorOFF[0]
      else ; $data_skills[@data[index].id].sp_cost = Sword34_ONorOFF[1] # 不持有狀態時
      end ; end
      sword34_draw_item(index)
      $data_skills[@data[index].id].sp_cost = sp_cost
    end
  end
end
#=======================================
#■ 處理戰鬥畫面的類別
class Scene_Battle
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 更新畫面 (角色命令回合 : 選擇技能)
  alias sword34_update_phase3_skill_select update_phase3_skill_select
  def update_phase3_skill_select
    if state_id = Sword34_EquipSkill[@skill_window.skill.id] ; if Input.trigger?(Input::C)
      actor = $game_party.actors[@actor_index]
      if actor.state?(state_id) ; actor.remove_state(state_id) # 解除狀態
      else ; actor.add_state(state_id) # 附加狀態
        Sword34_EquipSkill.each_value{|v|
        actor.remove_state(v) if v != state_id} if Sword34_Remove
      end
      $game_system.se_play($data_system.decision_se)
      @skill_window.refresh ; @status_window.refresh
      return if Sword34_Return
    end ; end
    sword34_update_phase3_skill_select
  end
end
#=======================================
#■ 處理技能畫面的類別
class Scene_Skill
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 更新畫面 (技能視窗被活化的情況下)
  alias sword34_update_skill update_skill
  def update_skill
    if state_id = Sword34_EquipSkill[@skill_window.skill.id] ; if Input.trigger?(Input::C)
      if @actor.state?(state_id) ; @actor.remove_state(state_id) # 解除狀態
      else ; @actor.add_state(state_id) # 附加狀態
        Sword34_EquipSkill.each_value{|v|
        @actor.remove_state(v) if v != state_id} if Sword34_Remove
      end
      $game_system.se_play($data_system.decision_se)
      @skill_window.refresh ; @status_window.refresh
      return if Sword34_Return
    end ; end
  end
end
 
RPG Maker VX 適用
module Sword
  ON = true ; OFF = false ; Sword34_EquipSkill = Hash.new
#=======================================
#★ 魔劍工舖 - 開關式技能狀態1.00(VX版)
# 轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
# 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
Sword34_SPorON = ON # 是否要將原本的SP消耗數值顯示變更為顯示ON或OFF
Sword34_ONorOFF = ['ON', 'OFF'] # 設定顯示是否打開的內容 ['開', '關']
Sword34_Return = ON # 當選擇了開關式技能時,是否還要繼續執行技能資料
Sword34_Remove = ON # 當開啟某個狀態時,其他的開關式狀態是否也要解除掉
#--------------------------------------------------------------
#○ 裝備技能資料設置(Sword34_EquipSkill[技能編號] = 附加的狀態編號)
Sword34_EquipSkill[33] = 18
Sword34_EquipSkill[34] = 16
=begin
========================================
# 詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/26348696
=end
  $Sword ? $Sword[34] = 100 : $Sword = {34=>100} # 腳本使用標誌
end
#=======================================
#■ 處理戰鬥者的類
class Game_Battler
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 計算技能消耗魔力
  alias sword34_calc_mp_cost calc_mp_cost
  def calc_mp_cost(skill)
    if Sword34_EquipSkill[skill.id] and Sword34_SPorON and (not @sword34)
      return state?(Sword34_EquipSkill[skill.id]) ? Sword34_ONorOFF[0] : Sword34_ONorOFF[1]
    end
    sword34_calc_mp_cost(skill)
  end
  #-------------------------------------------------------------
  #● 可以使用技能的判定
  alias sword34_skill_can_use? skill_can_use?
  def skill_can_use?(skill)
    @sword34 = true
    a = sword34_skill_can_use?(skill)
    @sword34 = false
    return a
  end
end
#=======================================
#■ 處理戰鬥畫面的類別
class Scene_Battle
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 更新畫面 (角色命令回合 : 選擇技能)
  alias sword34_update_skill_selection update_skill_selection
  def update_skill_selection
    if state_id = Sword34_EquipSkill[@skill_window.skill.id] ; if Input.trigger?(Input::C)
      actor = $game_party.members[@actor_index]
      if actor.state?(state_id) ; actor.remove_state(state_id) # 解除狀態
      else ; actor.add_state(state_id) # 附加狀態
        Sword34_EquipSkill.each_value{|v|
        actor.remove_state(v) if v != state_id} if Sword34_Remove
      end
      Sound.play_decision
      index = @skill_window.index
      @skill_window.refresh ; @status_window.refresh # 更新窗口
      @skill_window.index = index
      return if Sword34_Return # 是否中斷
    end ; end
    sword34_update_skill_selection
  end
end
#=======================================
#■ 處理技能畫面的類別
class Scene_Skill
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 更新畫面 (技能視窗被活化的情況下)
  alias sword34_update_skill_selection update_skill_selection
  def update_skill_selection
    if state_id = Sword34_EquipSkill[@skill_window.skill.id] ; if Input.trigger?(Input::C)
      if @actor.state?(state_id) ; @actor.remove_state(state_id) # 解除狀態
      else ; @actor.add_state(state_id) # 附加狀態
        Sword34_EquipSkill.each_value{|v|
        @actor.remove_state(v) if v != state_id} if Sword34_Remove
      end
      Sound.play_decision
      index = @skill_window.index
      @skill_window.refresh ; @status_window.refresh # 更新窗口
      @skill_window.index = index
      return if Sword34_Return # 是否中斷
    end ; end
    sword34_update_skill_selection
  end
end
  
 
使用者自定設置說明
Sword34_SPorON = ON
是否要將技能窗口中的開關式技能的顯示的SP(MP)消耗量變更為開關文字表示
ON:顯示開關文字內容,詳細可參考Sword34_ONorOFF設置的內容
OFF:顯示SP(MP)消耗量,簡單來說就是不做更改維持原樣
 
Sword34_ONorOFF = ['開的文字內容', '關的文字內容']
Sword34_SPorON設為ON時這個設置才會生效
設定SP(MP)消耗量變更為開關文字內容的文字設定
 
Sword34_Return = ON
設定是否要繼續執行開關式技能的技能處理,例如你將攻擊性技能設為開關式狀態
則你選擇了該技能之後,開關變化會照變,但是會有可以選擇攻擊目標的奇怪現象
ON:不繼續執行,也就是選擇了開關式技能後,只會變更開關狀態,不會繼續執行
       所以可以在同個回合內不斷的變更開關式狀態
OFF:繼續執行,要選擇敵人就選擇敵人...但是開關照樣會在你選擇1次更改一次
         不希望會這樣的話,就在該技能的資料庫中的目標進行修改
 
Sword34_Remove = ON
設定是否限制只能開啟一個開關式技能的開關
ON:限制1個,如果你選擇開了1個開關式狀態,則其他的開關式狀態也會跟著關閉
OFF:無限制,看你要開幾個開關都隨玩家高興!!
 
Sword34_EquipSkill[技能編號] = 附加的狀態編號
設定開關式技能的資料,可自行添加多個Sword34_EquipSkill設置
技能編號:設定要視為是開關式技能的技能編號
附加的狀態編號:該開關式技能控制的狀態編號
 
相簿設定
標籤設定
相簿狀態