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

  • 305763

    累積人氣

  • 6

    今日人氣

    0

    追蹤人氣

【腳本】技能冷卻


使用方法
打開腳本編輯器,對腳本「Main」按下右鍵,選擇插入,會出現1個空白腳本
在空白腳本內貼上以下腳本:
RPG Maker XPRPG Maker VX 均可使用,但VX的使用者自定設置要做更改!!
module Sword
  ON = true ; OFF = false ; Sword15_Cooling = Array.new
#=======================================
#★ 魔劍工舖 - 技能冷卻1.02
# 轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
# 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
Sword15_XPVX = 0 # 此腳本用於XP時設為0;此腳本用在VX時設為1
Sword15_Battle = 0  # 戰鬥結束時的冷卻狀態,0為不需冷卻;1為記憶;2為需冷卻
Sword15_Menu1 = OFF # 選單中的技能畫面,是否要顯示剩餘的冷卻時間
Sword15_Menu2 = 0 # 選單中的使用標準,0為一律可用;1為沒冷卻中時可用;
                                  # 2為沒冷卻中時可用(使用後變更為冷卻中);3為一律不可用
Sword15_Enemy = OFF # 敵人使用冷卻技能時,是否需要冷卻
Sword15_Text = ' 剩V回合' # 技能冷卻的顯示內容,V表示剩餘冷卻回合數
#--------------------------------------------------------------
#○ 技能冷卻回合(Sword15_Cooling[技能編號] = 冷卻回合數)
Sword15_Cooling[57] = 3
Sword15_Cooling[58] = 3
Sword15_Cooling[59] = 4
Sword15_Cooling[60] = 5
=begin
========================================
=end
  $Sword ? $Sword[15] = 101 : $Sword = {15=>101} # 腳本使用標誌
end
# 詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/25549943
#=======================================
#■ 處理臨時資料的類別
class Game_Temp
  attr_accessor :skill_id # 技能編號(選單用)
  alias sword15_initialize initialize
  def initialize
    @skill_id = 0 ; sword15_initialize
  end
end
#=======================================
#■ 處理戰鬥者的類別
class Game_Battler
  include Sword # 連接自定設置
  attr_accessor :cooling  # 冷卻技能表
  #-------------------------------------------------------------
  #● 初始化物件
  alias sword15_initialize initialize
  def initialize
    sword15_initialize
    @cooling = {}
    Sword15_Cooling.each_index do |index|
      next if Sword15_Cooling[index] == nil # 沒設置冷卻時間的技能跳過
      if Sword15_Battle == 2 ; @cooling[index] = Sword15_Cooling[index]
      else ; @cooling[index] = 0 ; end
    end
  end
  #-------------------------------------------------------------
  #● 可以使用技能的判定
  alias sword15_skill_can_use? skill_can_use?
  def skill_can_use?(skill_id)
    if Sword15_Enemy or self.is_a?(Game_Actor)
      skill_id = skill_id.id if Sword15_XPVX == 1 # 將數據轉成編號(VX)
      if (not $game_temp.in_battle) # 不是戰鬥中時
        return sword15_skill_can_use?(skill_id) if Sword15_Menu2 == 0 # 一律可用
        return false if Sword15_Cooling.has_key?(skill_id) if Sword15_Menu2 == 3
      end
      return false if self.cooling[skill_id] > 0 if self.cooling[skill_id] # 冷卻技能不可使用
      skill_id = $data_skills[skill_id] if Sword15_XPVX == 1 # 將編號轉成數據(VX)
    end
    sword15_skill_can_use?(skill_id)
  end
end
#=======================================
#■ 處理角色的類別
class Game_Actor < Game_Battler
  include Sword # 連接自定設置
  attr_reader   :actor_id # 角色編號
  attr_accessor :cooling  # 冷卻技能表
  #-------------------------------------------------------------
  #● 初始化物件
  alias sword15_setup setup
  def setup(actor_id)
    sword15_setup(actor_id)
    @cooling = {}
    Sword15_Cooling.each_index do |index|
      next if Sword15_Cooling[index] == nil # 沒設置冷卻時間的技能跳過
      if Sword15_Battle == 2 ; @cooling[index] = Sword15_Cooling[index]
      else ; @cooling[index] = 0 ; end
    end
  end
  #-------------------------------------------------------------
  #● 變更 SP(XP)
  if Sword15_Menu2 == 2 and Sword15_Battle != 0
    if Sword15_XPVX == 0 ; alias sword15_sp= sp=
    else ; alias sword15_mp= mp= ; end
    def sp=(a)
      @cooling[$game_temp.skill_id] = Sword15_Cooling[$game_temp.skill_id] if
      Sword15_Cooling[$game_temp.skill_id] != nil # 自定設置有設定就設置冷卻回合
      self.sword15_sp = a
    end
    #-----------------------------------------------------------
    #●  變更 MP(VX)
    def mp=(a)
      @cooling[$game_temp.skill_id] = Sword15_Cooling[$game_temp.skill_id] if
      Sword15_Cooling[$game_temp.skill_id] != nil # 自定設置有設定就設置冷卻回合
      self.sword15_mp = a
    end
  end
end
#=======================================
#■ 技能畫面、戰鬥畫面、顯示可以使用的技能的瀏覽視窗
class Window_Skill < Window_Selectable
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 描繪項目
  alias sword15_draw_item draw_item
  def draw_item(index)
    if Sword15_Menu1 or $game_temp.in_battle # 允許顯示或戰鬥時的場合
      text = '' # 負責存入冷卻內容的變量
      if @actor.cooling[@data[index].id] ; if @actor.cooling[@data[index].id] > 0
        text = Sword15_Text ; text = text.gsub(/\[Vv]/) { @actor.cooling[@data[index].id] }
        @data[index].name += text
      end ; end
    end
    sword15_draw_item(index)
    @data[index].name = @data[index].name.gsub(/#{text}/) { '' }
  end
end
#=======================================
#■ 處理戰鬥畫面的類別
class Scene_Battle
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 戰鬥結束
  alias sword15_battle_end battle_end
  def battle_end(result)
    sword15_battle_end(result)
    actor = Sword15_XPVX == 0 ? $game_party.actors : $game_party.members
    xpvx = Sword15_XPVX == 0 ? 1 : 0
    if Sword15_Battle == 0 # 當指定為「不需冷卻」的場合
      (0...actor.size).each {|i| $game_actors[actor[i].id].cooling = Hash.new}
    elsif Sword15_Battle == 2 # 當指定為「需冷卻」的場合
      (0...actor.size).each do |i| ; (1..Sword15_Cooling.size).each do |ii|
        $game_actors[actor[i].id].cooling[ii] = Sword15_Cooling[ii] + xpvx if
        Sword15_Cooling[ii] != nil # 當有設置冷卻時代入冷卻回合
      end ; end
    end
  end
  #-------------------------------------------------------------
  #● 產生技能行動結果(XP)
  if Sword15_XPVX == 0 ; alias sword15_make_skill_action_result make_skill_action_result
  else ; alias sword15_make_skill_action_result execute_action_skill ; end
  def make_skill_action_result
    #○ 確認敵人是否可使用該技能
    skill_id = Sword15_XPVX == 0 ? @active_battler.current_action.skill_id :
    @active_battler.action.skill_id # 縮短腳本長度
    skill = Sword15_XPVX == 0 ?
    $data_skills[@active_battler.current_action.skill_id] :
    $data_skills[@active_battler.action.skill_id]
    no = false
    a = Sword15_XPVX == 0 ?
    @active_battler.current_action.forcing : @active_battler.action.forcing
    b = Sword15_XPVX == 0 ? skill.id : skill
    unless a ; unless @active_battler.skill_can_use?(b)
      @phase4_step = 1 if no # 跳轉到階段1
      no = true
    end ; end
    sword15_make_skill_action_result unless no
    #○ 設置冷卻回合
    return if @active_battler.cooling[skill_id] > 0 if @active_battler.cooling[skill_id] != nil
    xpvx = Sword15_XPVX == 0 ? 1 : 0 # XP和VX的回合數值修正
    @active_battler.cooling[skill_id] = Sword15_Cooling[skill_id] + xpvx if
    Sword15_Cooling[skill_id] != nil # 如果自定設置有設定就設置冷卻回合
    $game_temp.forcing_battler = nil if no # 清除強制行動對象
  end
  #-------------------------------------------------------------
  #● 執行戰鬥行動:使用技能(VX)
  def execute_action_skill
    make_skill_action_result
  end
  #-------------------------------------------------------------
  #● 更新畫面 (主回合步驟 6 : 更新)(XP)
  if Sword15_XPVX == 0 ; alias sword15_update_phase4_step6 update_phase4_step6
  else ; alias sword15_update_phase4_step6 set_next_active_battler ; end
  def update_phase4_step6
    sword15_update_phase4_step6
    return if @active_battler == nil # 如果行動方是空的就中斷
    @active_battler.cooling.each_key do |i|
      @active_battler.cooling[i] -= 1 if @active_battler.cooling[i] > 0
    end
  end
  #-------------------------------------------------------------
  #● 設置下一戰鬥者行動(VX)
  def set_next_active_battler
    update_phase4_step6
  end
end
#=======================================
#■ 處理技能畫面的類別
class Scene_Skill
  include Sword # 連接自定設置
  #-------------------------------------------------------------
  #● 更新畫面 (技能視窗被活化的情況下) (XP)
  if Sword15_XPVX == 0 ; alias sword15_update_skill update_skill
  else ; alias sword15_update_skill update_skill_selection ; end
  def update_skill
    $game_temp.skill_id = @skill_window.skill.id
    sword15_update_skill
    $game_temp.skill_id = nil if $scene.is_a?(Scene_Skill)
  end
  #-------------------------------------------------------------
  #● 更新技能選擇(VX)
  def update_skill_selection
    update_skill
  end
end
 
 
使用者自定設置說明
Sword15_XPVX = 0
如果你是使用RPG製作大師XP(RPG Maker XP),這個就要設成0
如果你是使用RPG製作大師VX(RPG Maker VX),這個就要設成1
因為XP和VX的預設腳本有些不一樣,可能有窗口大小或是位置不對、某些功能會無效
還會有發生錯誤的情況,可由此設置來自動更改適合的腳本進行運行!!
 
Sword15_Battle = 0
設定戰鬥結束時,恢復的預設冷卻狀況,可以設置0、1、2這三個數值
0:不需冷卻,也就是戰鬥結束時所有需要冷卻回合歸0,下一場戰鬥時就能馬上在使用
   例:假設某技能還需要冷卻4回合就結束戰鬥了,下場戰鬥時,該技能的冷卻時間沒了
1:記憶,簡單來說就是保持原樣到下場戰鬥,還剩多少冷卻回合下場就要冷卻這些回合
   例:假設某技能還需要冷卻2回合就結束戰鬥了,下場戰鬥時,就要在等2回合才可使用
2:需冷卻,其實這個效果已經偏向 集氣 技能了...,一開始戰鬥,都一定要先冷卻才行
   冷卻的回合是依照Sword15_Cooling設置的內容為準
   例:假設這技能預設冷卻時間為4回合,但在剩餘2回合時結束了戰鬥
   下場戰鬥時,照樣一開場就要冷卻4回合才能使用該技能!!
 
Sword15_Menu1 = OFF
設定選單中是否要顯示冷卻訊息文字(也可想成是是否無效Sword15_Text設置的效果)
ON表示顯示;OFF表示不顯示,但不管有沒有顯示
能不能使用該技能並不在於此設置的修改範圍中,請看設置Sword15_Menu2 
 
Sword15_Menu2 = 0
設定當在選單中的技能畫面時,使用需要冷卻的技能情況
0:無視是否該技能正在冷卻中,可在選單中任意使用(但是冷卻狀態不解除)
1:當技能在冷卻中時,該技能不可使用;沒在冷卻時,該技能可以使用
2:和此設置設為1的功能相同,只不過使用技能後,則會變更為冷卻狀態
3:只要是冷卻技能(有在Sword15_Cooling設置的技能),就禁止在選單中使用
 
Sword15_Enemy = OFF NEW
設定敵人使用憤怒技能時,敵人的技能是否需要冷卻
ON表示要;OFF表示不要(可以隨意的放?!)
敵人一開場需不需要冷卻才能使用技能是依照Sword15_Battle設置影響
Sword15_Battle為1或2不需冷卻,Sword15_Battle為3則一開始就要冷卻
 
Sword15_Text = ' 剩V回合'
設定用來顯示剩餘的冷卻回合的內容,通常這內容會放在技能畫面中的技能名稱右邊
此外...這個訊息只有在正在冷卻中的技能才會顯示,其他場合通常不會顯示出來
可以使用控制碼「V」,這個控制碼代表為剩餘的冷卻回合數值
 
Sword15_Cooling[技能編號] = 回合數
設定需要冷卻的技能列表,同時也是開通某技能為冷卻技能的標誌,可以當腳本辨識用...
簡單來說...有設置冷卻回合數的技能,將視為需冷卻的技能(Sword15_Battle設2時的判斷)
可以自行增加多個Sword15_Cooling設置
 
相簿設定
標籤設定
相簿狀態