嗯...
可能會有人想做在特定狀況下切換角色時,持有物品會不同
曾看過月X傳奇用了50個變量、記錄了初期能取得的50樣道具數、然後消除物品、然後換人、劇情過後再把物品弄回來。很繁瑣、而且遊戲進行到後期這招也不適用
有了RGSS,想要多少背包,就有多少
腳本:
#==============================================================================
# ■ 多重背包
#------------------------------------------------------------------------------
# 存入背包,並產生新背包: $game_party.save_temporary_backpack(寄放位置[, 識別名稱])
# 讀取背包:$game_party.load_temporary_backpack(寄放位置)
# 查看記憶狀況:$game_party.show_temporary_backpack
#------------------------------------------------------------------------------
# <使用上有其他問題的連絡方式>
# http://blog.yam.com/user/qootm2.html
# 或
# http://home.gamer.com.tw/homeindex.php?owner=qootm2
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ● 定義實例變數
#--------------------------------------------------------------------------
attr_reader :temporary_backpack # 寄放欄
#--------------------------------------------------------------------------
# ● 把目前背包存至寄放欄(注意,使用後身上物品會被清空)
# index:背包要存入哪個欄位
# name:背包名稱(識別用)
#--------------------------------------------------------------------------
def save_temporary_backpack(index=nil, name=nil)
if index == nil
p "沒指定寄放欄位!"
return
end
# 初次調用時初始化寄放欄
@temporary_backpack = [] if @temporary_backpack.nil?
# if index == nil
# name = @temporary_backpack.size.to_s + " 號背包" if name == nil
# @temporary_backpack.push([@items, @weapons, @armors, name])
# else
# 沒有指定名稱時,將名稱設為 「XX 號背包」
name = "#{index} 號背包" if name == nil
@temporary_backpack[index] = [@items, @weapons, @armors, name]
# end
# 清除身上物品
@items = {}
@weapons = {}
@armors = {}
end
#--------------------------------------------------------------------------
# ● 從寄放欄取回指定背包
# index:哪個背包
#--------------------------------------------------------------------------
def load_temporary_backpack(index)
begin
@items = @temporary_backpack[index][0]
@weapons = @temporary_backpack[index][1]
@armors = @temporary_backpack[index][2]
rescue
p "這欄位沒寄放背包!"
end
end
#--------------------------------------------------------------------------
# ● 檢視目前寄放的背包
#--------------------------------------------------------------------------
def show_temporary_backpack
if @temporary_backpack == nil or @temporary_backpack == []
p "沒任何背包被寄放!"
return
end
pack = []
for i in 0...@temporary_backpack.size
next if @temporary_backpack[i] == nil
pack.push(["欄位 #{i}", @temporary_backpack[i][3]])
end
p pack
end
end
使用法:1.記憶身上物品,
並且換一個新背包 (識別名稱可省略)
$game_party.save_temporary_backpack(寄放位置[, 識別名稱])範例:
# 目前物品存入位置1 $game_party.save_temporary_backpack(1) # 目前物品存入位置3,名稱定為「阿爾西斯的包包」 $game_party.save_temporary_backpack(3,"阿爾西斯的包包") |
※再次提醒,使用此方法後,身上物品會被清空※識別名稱省略時會將背包名稱設定為:
儲存編號+背包※雖然定義上存入位置也是可選參數,但沒指定的話會出現警告視窗,然後什麼事都沒發生
主要是為了避免使用上的混亂,覺得沒問題的話可以把這功能開啟,我只有上註解。
2.換成指定背包
$game_party.load_temporary_backpack(寄放位置)範例:
# 換成3號背包 $game_party.load_temporary_backpack(3) |
※目前身上道具會
整個替換成指定背包的內容
3.查看寄物櫃
$game_party.show_temporary_backpack※只能簡單看到背包名稱與寄放欄位,無法檢查背包內容
原理說明:RMXP記錄身上道具使用了三個Hash:道具(@items)、武器(@weapons)、防具(@armors)
而多重背包就是多設一個像是「寄物櫃」的變量,然後再把上面三個變量存進去而已
所以完全就是代入變量的概念
想要的話還可以另外做個介面檢視其他背包,不過若要使用其他背包的道具,必須連增減道具(gain_item)一起改
衝突:三個方法都是新定義的應該沒衝突吧...
除非把存放道具的變量改了,不過既然會做這件事,整合自然也不是問題了
改造項目:Game_Party
遊戲範例:無
...明明說不想讓人套套樂,結果連續三篇都是套套腳本啊