魔劍工舖

關於部落格
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 RPG Maker VX 均可使用
module Sword
#=======================================

#★ 魔劍工舖 - 多功能限時效果 1.00
# 轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
# 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
=begin
========================================
● 設置方法
設置限時效果:$game_party.reckon_time(效果編號, 持續秒數, 參數)
判斷限時效果:$game_party.reckon_time?(效果編號)
解除限時效果:$game_party.relief_reckon_time(效果編號)
========================================
● 限時效果列表(效果編號.效果名稱:參數)「*」符號表示可不加
0.開關變更:[開關編號](不同的開關視為不同的限時效果,所以可重複使用)
1.經驗加乘:[百分比, 戰鬥以外是否也加乘*](將 * 參數移除表示OFF)
2.金錢加乘:[百分比, 戰鬥以外是否也加乘*](將 * 參數移除表示OFF)
3.移動速度:[變更移動速度, 還原移動速度*](將 * 參數移除表示目前移動速度)
4.遇敵減少:[不遇敵率, 減少遇敵步數*](將 * 參數移除表示恢復該地圖遇敵步數)
5.遇敵增加:[遇敵率]
========================================
詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/27027561
=end
  $Sword ? $Sword[39] = true : $Sword = {39=>true} # 腳本使用標誌
  $Sword_F12_Error = {39=>false} unless $Sword_F12_Error # F12除錯標誌
  ($Sword_VX = false ; RPG::Weather rescue $Sword_VX = true) if $Sword_VX == nil
  Sword39_Size = 1..5
end
#=======================================
#□ 進行有關全體圖像處理的模塊
class << Graphics
  #-------------------------------------------------------------
  #● 更新畫面
  alias sword39_update update unless $Sword_F12_Error[39]
  def update
    if $game_party
      Sword::Sword39_Size.each{|i| next if $game_party.reckon_times[i][0] == 0
      $game_party.relief_reckon_time(i) if Graphics.frame_count / Graphics.frame_rate >
      $game_party.reckon_times[i][0]}
      $game_party.reckon_times[0].each{|a, b| $game_party.relief_reckon_time(0, a) if
      Graphics.frame_count / Graphics.frame_rate > b}
    end
    sword39_update
  end
end
#=======================================
#■ 處理同伴的類別
class Game_Party
  attr_accessor :reckon_times # 計時秒數與資料
  attr_accessor :steps_record # 步數增加記錄標誌
  #-------------------------------------------------------------
  #● 初始化物件
  alias sword39_initialize initialize
  def initialize
    sword39_initialize ; @reckon_times = {0=>{}}
    Sword::Sword39_Size.each{|i| @reckon_times[i] = [0, []]}
  end
  #-------------------------------------------------------------
  #● 增加金錢 (減少)
  alias sword39_gain_gold gain_gold
  def gain_gold(n)
    #○ 金錢加乘(實際增加的處理)
    a = $Sword_VX ? ((not $game_temp.in_battle) and $game_party.reckon_times[2][2]) :
    ($game_temp.in_battle or $game_party.reckon_times[2][2])
    n = (n / 100.0 * $game_party.reckon_times[2][1]).to_i if reckon_time?(2) and a
    sword39_gain_gold(n)
  end
  #-------------------------------------------------------------
  #● 增加步數
  alias sword39_increase_steps increase_steps
  def increase_steps ; @steps_record = true ; sword39_increase_steps ; end
  #-------------------------------------------------------------
  #● 設置限時效果的方法
  def reckon_time(id, time, v)
    case id # 效果編號分歧(立即觸發效果用)
    when 0 #○ 開關變更(設為ON)
      @reckon_times[0][v[0]] = Graphics.frame_count / Graphics.frame_rate + time
      $game_switches[v[0]] = true ; $game_map.need_refresh = true ; return
    when 3 #○ 移動速度(修改速度)
      v[1] = $game_player.move_speed unless v[1] # 記憶移動速度
      $game_player.move_speed = v[0] # 設置新的移動速度
    end
    @reckon_times[id] = [Graphics.frame_count / Graphics.frame_rate + time] + v
  end
  #-------------------------------------------------------------
  #● 判斷限時效果的方法
  def reckon_time?(id, v = 0)
    return (not $game_party.reckon_times[0][v].nil?) if id == 0 #○ 開關變更(判斷開關)
    return $game_party.reckon_times[id][0] > 0
  end
  #-------------------------------------------------------------
  #● 解除限時效果的方法
  def relief_reckon_time(id, v = 0)
    case id # 效果編號分歧(立即解除效果用)
    when 0 #○ 開關變更(設為OFF)
      @reckon_times[0].delete(v)
      $game_switches[v] = false ; $game_map.need_refresh = true ; return
    when 3 #○ 移動速度(還原速度)
      $game_player.move_speed = $game_party.reckon_times[id][2]
    end
    $game_party.reckon_times[id] = [0, []]
  end
end
#=======================================
#■ 處理角色的類別
class Game_Actor
  if $Sword_VX # 重定義VX的方法
    #-----------------------------------------------------------
    #● 獲取經驗(獲取雙倍經驗值用)〈VX〉
    alias sword39_gain_exp gain_exp
    def gain_exp(exp, show)
      #○ 經驗加乘(實際增加的處理)
      (exp = (exp / 100.0 * $game_party.reckon_times[1][1]).to_i) if
      $game_party.reckon_time?(1) and
      (not $game_temp.in_battle) and $game_party.reckon_times[1][2]
      sword39_gain_exp(exp, show)
    end
  else # 重定義XP的方法
    #-----------------------------------------------------------
    #● 變更 EXP〈XP〉
    alias sword39_exp= exp=
    def exp=(exp)
      #○ 經驗加乘(實際增加的處理)
      (exp = ((exp - @exp) / 100.0 * $game_party.reckon_times[1][1]).to_i) if
      $game_party.reckon_time?(1) and
      ($game_temp.in_battle or $game_party.reckon_times[1][2])
      self.sword39_exp = exp
    end
  end
end
#=======================================
#■ 處理角色的類別
class Game_Character
  attr_accessor :move_speed # 地圖移動速度
end
#=======================================
#■ 處理主角的類別
class Game_Player < Game_Character
  #-------------------------------------------------------------
  #● 獲取遇敵計數
  alias sword39_encounter_count encounter_count
  def encounter_count
    #○ 遇敵減少
    if $game_party.reckon_time?(4) and @encounter_count <= 1 and $game_party.steps_record
    if $game_party.reckon_times[4][1] > rand(100)
      @encounter_count += $game_party.reckon_times[4][2] ?
      $game_party.reckon_times[4][2] : $game_map.encounter_step
      $game_party.steps_record = false ; return @encounter_count
    end ; end
    #○ 遇敵增加
    if $game_party.reckon_time?(5) and $game_party.steps_record
    if $game_party.reckon_times[5][1] > rand(100)
      @encounter_count = 0
      $game_party.steps_record = false ; return @encounter_count
    end ; end
    $game_party.steps_record = false ; sword39_encounter_count
  end
end
#=======================================
#■ 處理敵人隊伍和戰鬥相關資料的類
class Game_Troop
  if $Sword_VX
    #-----------------------------------------------------------
    #● 計算經驗值總數
    alias sword39_exp_total exp_total
    def exp_total
      if $game_party.reckon_time?(1)
        return (sword39_exp_total / 100.0 * $game_party.reckon_times[1][1]).to_i
      else ; return sword39_exp_total
      end
    end
    #-----------------------------------------------------------
    #● 計算金錢總數
    alias sword39_gold_total gold_total
    def gold_total
      if $game_party.reckon_time?(2)
        return (sword39_gold_total / 100.0 * $game_party.reckon_times[2][1]).to_i
      else ; return sword39_gold_total
      end
    end
  end
end
#=======================================
#■ 戰鬥結束時、顯示獲得的 EXP 及金錢、寶物的視窗
class Window_BattleResult < Window_Base
  #-------------------------------------------------------------
  #● 更新內容
  alias sword39_initialize initialize
  def initialize(exp, gold, treasures)
    exp = (exp / 100.0 * $game_party.reckon_times[1][1]).to_i if
    $game_party.reckon_time?(1) #○ 經驗加乘(戰鬥結束顯示數值的處理)
    gold = (gold / 100.0 * $game_party.reckon_times[2][1]).to_i if
    $game_party.reckon_time?(2) #○ 金錢加乘(戰鬥結束顯示數值的處理)
    sword39_initialize(exp, gold, treasures)
  end
end
$Sword_F12_Error[39] = true # F12除錯標誌
 
設置方法
開關變更
$game_party.reckon_time(0, 持續秒數, [開關編號])
將指定的開關變更為ON一次,所以在啟用該限時效果時,變更開關的值依然可行
不過當這個限時效果解除時,依然會使開關變回OFF的狀態
這個限時效果和其他的不同,該限時效果可以設置多重的限時效果
只要指定的開關編號不一樣,每個開關的持續時間效果互不影響
可以製造多個開關變更的限時效果是可行的
所以在其他的設置方法中,這個限時效果的設置可能不太一樣
 
經驗加乘
$game_party.reckon_time(1, 持續秒數, [經驗值百分比])
$game_party.reckon_time(1, 持續秒數, [經驗值百分比, true])
限時間內所獲得到的經驗值將會增加
設置法1通常只有在戰鬥時獲得經驗值才會計算該效果的加乘
設置法2則包含戰鬥、事件...等等任何增加經驗值的動作都會因此效果加乘
經驗值百分比:獲得經驗的百分比,設為100表示完整的經驗值
       設為50則經驗值減半,設為200則經驗值增加1倍,依此類推
 
金錢加乘
$game_party.reckon_time(2, 持續秒數, [金錢百分比])
$game_party.reckon_time(2, 持續秒數, [金錢百分比, true])
限時間內所獲得到的金錢將會增加
設置法1通常只有在戰鬥時獲得的金錢才會計算該效果的加乘
設置法2則包含戰鬥、事件...等等任何增加金錢的動作都會因此效果加乘
金錢百分比:獲得金錢的百分比,設為100表示完整的金錢
      設為50則金錢獲得減半,設為200則金錢增加1倍,依此類推
 
移動速度
$game_party.reckon_time(3, 持續秒數, [移動速度])
$game_party.reckon_time(3, 持續秒數, [移動速度, 還原速度])
限時間內在地圖上的我方角色移動速度變更,通常只變更1次
所以在執行該效果時變更角色的移動速度時,依然速度會遭到變更
但是效果時間還是照算,當效果時間到達時照樣恢復到指定的速度
移動速度:變更的移動速度,採用事件的移動速度1~6的設定來設置
還原速度:效果時間到時變更的速度,採用事件的移動速度1~6的設定來設置
     在設置法1中這無需設定,通常會之接採用目前角色的移動速度
     (該效果發動之前的角色移動速度為準)
 
遇敵減少
$game_party.reckon_time(4, 持續秒數, [不遇敵率])
當遇敵步數為0時(RM預設的遇敵判定),則開始依據不遇敵率決定是否遇怪
當機率成功時,則遇敵步數會重新計算,機率失敗時就遇到戰鬥
不遇敵率:設1~100的機率,通常設為100的話為完全不遇敵
 
遇敵增加
$game_party.reckon_time(5, 持續秒數, [遇敵率])
角色每移動一次計算一次遇敵率,機率成功就遇到該地圖設定的戰鬥隊伍
機率失敗就什麼也不做,遇敵步數一樣是有在計算的
遇敵步數為0的話,不考慮其他因素的話,通常是一定遇會遇戰鬥的
遇敵率:設1~100的機率,通常設為100為每走一步就一定會遇到怪
 
判斷是否執行限時效果
$game_party.reckon_time?(效果編號)
$game_party.reckon_time?(0, 開關編號)
判斷是否還有限時效果,開關變更效果必須用設置法2,其他效果都使用設置法1
《返回值》如果目前該角色有該限時效果就返回true,沒限時效果就返回false
 
解除限時效果
$game_party.relief_reckon_time(效果編號)
$game_party.relief_reckon_time(0, 開關編號)
解除指定的限時效果,如果沒該限時效果就什麼事情也不做
開關變更效果必須用設置法2,其他效果都使用設置法1
 

相簿設定
標籤設定
相簿狀態