創作內容

3 GP

[RMXP RGSS] 多重背包

作者:未来ずら│2014-01-23 17:16:06│巴幣:6│人氣:588
嗯...
可能會有人想做在特定狀況下切換角色時,持有物品會不同

曾看過月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

遊戲範例:





...明明說不想讓人套套樂,結果連續三篇都是套套腳本啊


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2319187
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

同標籤作品搜尋:RM|RGSS

留言共 1 篇留言

先行者
插件式腳本萬歲阿[e29]
話說您寫腳本真有靈感,我都沒想到可以寫這些腳本[e6]

01-23 17:41

未来ずら
自己專案有需求、為了方便就寫囉
反正很小且能獨立出來又有明顯的功能,搞不好有人剛好需要01-23 17:45
我要留言提醒:您尚未登入,請先登入再留言

3喜歡★qootm2 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[RMXP RGSS] ... 後一篇:[RGSS雜談] RPG...

追蹤私訊切換新版閱覽

作品資料夾

kktwtwyufoo大家
歡迎大家可以來到我的小屋看看我寫的文章及日記,當然也可以看看我的高中時期的插畫。再次非常歡迎大家喔!看更多我要大聲說3小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】