Discord 角色扮演伺服器怎麼管理商店、庫存和銀行(D&D、DayZ、GTA RP)
D&D 或角色扮演伺服器可以準備一張 CordBase 資料表放玩家物品欄(每件物品一列,附上持有人),另一張放商店庫存(每件物品一列,附上數量)。玩家用斜線指令查詢,工作人員用 /shop update ... _mode:Decrement 修改數量。它記錄庫存,但不會幫你經營商店。
大多數伺服器一開始用釘選訊息、試算表或經濟機器人。釘選訊息在兩個人同時編輯時就會亂掉,試算表在 Discord 外面,經濟機器人則是圍繞著用積分買東西設計的。這篇指南改在 Discord 裡建立單純的紀錄,用的是我們做的 CordBase。物品欄和商店大約十分鐘就能設定好。
如果你的玩家也需要角色卡,免費的角色卡模板提供可以複製貼上的 D&D 5e、角色扮演、奇幻和科幻角色卡。
完成後你會有
- 一個
/inventory指令(add、query、view、update、delete、leaderboard),記錄每個角色身上帶的東西。 - 一個
/shop指令,記錄商人有哪些庫存、價格多少。 - 選用的
/bank指令,用單純的數字記錄每位成員的存款和借款。 - 身分組權限:玩家可以查詢,只有工作人員能改數量。
第 1 步:設定每個角色的物品欄
物品欄的部分跟公會倉庫指南的設定一樣:安裝物品庫存表模板(item、quantity、owner、rarity、notes),把 slug 改成 inventory,給玩家讀取權限,給 GM 或工作人員身分組寫入權限。有兩件事在角色扮演伺服器比在公會倉庫更重要。
第一,update 和 view 這類指令要你從清單裡選一列,而清單只顯示資料表的第一個文字欄位。如果 Mara 和 Joss 都有一瓶 Healing Potion,清單裡會出現兩個一模一樣的項目,所以把持有人寫進物品名稱:Healing Potion (Mara)。owner 欄位還是可以依成員篩選。
第二,寫入權限涵蓋每一列,不只是玩家自己的那列,所以有寫入權限的玩家可以編輯任何人的物品欄。寫入權限留給工作人員,玩家給讀取權限。
/inventory add item:Healing Potion (Mara) quantity:3 owner:@Mara rarity:Common
/inventory update row:Healing Potion (Mara) quantity:1 _mode:Decrement
/inventory query owner:@Mara 列出 Mara 拿著的所有東西。查詢會先顯示最新的資料列(預設 10 筆,用 limit 最多 25 筆),而且只顯示前四個欄位,所以重要的欄位要放前面。「增加(加到目前的值上)」是加上去,「減少(從目前的值扣除)」是減掉,「設定(取代目前的值)」(預設)是直接取代。
第 2 步:加一張商店庫存資料表
Free 方案有兩張資料表,物品欄加商店剛好放得下。在控制台建立一張叫 Shop 的資料表,欄位如下:item(文字,必填)、stock(數字,必填)、price(數字)、category(選項,用你自己的選擇項,例如 Weapons、Ammo、Medical)和 notes(文字)。欄位類型建立後就不能改,所以數量和價格要設成數字。
/shop add item:Bandage stock:40 price:25 category:Medical/shop update row:Bandage stock:1 _mode:Decrement記錄一筆銷售。角色扮演裡發生交易時,由工作人員執行。/shop update row:Bandage stock:20 _mode:Increment記錄一次補貨。/shop update row:Bandage price:30修改價格。/shop query stock:0列出賣完的物品(完全相符,不是「小於」)。
_mode 會套用到同一個指令裡帶的每個數字。如果你用「減少(從目前的值扣除)」同時送出 stock 和 price,兩個都會減少。請分成兩個指令修改。
如果是載具經銷商,用同樣的結構,欄位改成 vehicle、stock、price 和一個 dealer 欄位(使用者類型),然後 /shop query dealer:@Kade 就會顯示某位經銷商的車。
庫存可以變成負數。數量到 0 時沒有東西會阻止減少,所以如果你在意,就要檢查數量。
第 3 步:用單純的紀錄管理銀行和借款(選用)
建立一張叫 Bank 的資料表,欄位有 account(文字,必填,放第一個讓列選擇器顯示它)、member(使用者)、balance(數字)、loan_owed(數字)和 notes(文字)。物品欄和商店已經用掉兩張免費資料表,所以第三張需要 Pro。
/bank add account:Mara member:@Mara balance:500 loan_owed:0/bank update row:Mara balance:200 _mode:Increment記錄一筆存款。/bank update row:Mara loan_owed:100 _mode:Decrement記錄一筆還款。/bank leaderboard column:loan_owed把最大筆的欠款排在最前面。
沒有利息、到期日或自動轉帳。數字由工作人員輸入。也沒有變更歷史:view 只顯示誰建立了這一列、最後一次修改是什麼時候,看不到舊的值。如果你需要紀錄軌跡,加一張 Transactions 資料表(account、amount、kind、date),每次資金移動就新增一列。如果是公會共用的資源,請看公會倉庫指南。
什麼時候別的工具比較適合
CordBase 沒有商店結帳、沒有玩家能賺或花的貨幣,也沒有成員之間的付款。指令永遠是資料表名稱加上一個固定動作,所以你沒辦法自訂一個 /withdraw。它不會讀取訊息,所以在聊天裡打「-100 arrows」什麼都不會發生。如果你想要成員賺金幣、到商店買東西的虛擬經濟,請用 UnbelievaBoat 這類經濟機器人。如果你要規則和擲骰,請用 Avrae 這類跑團機器人(見角色卡指南)。如果你需要公式,試算表比較好。
值得知道的限制
常見問題
可以有 /withdraw 指令,或讓玩家自己買東西嗎?
不行。每張資料表在自己的名稱底下有固定的動作:add、query、view、update、delete 和 leaderboard。最接近的是 /shop update row:... stock:1 _mode:Decrement,有寫入權限的人都能執行。不會向玩家收費,也沒有貨幣移動。
每位玩家可以只看到或只編輯自己的物品欄嗎?
權限做不到。有讀取權限的人可以查詢整張資料表,有寫入權限的人可以修改任何一列。成員可以用 /inventory query owner:@yourname 篩選出自己的物品。
Free 方案放得下嗎?
物品欄和商店資料表放得下,因為 Free 可以有 2 張資料表,每張 100 列。第三張資料表,例如銀行,需要每月 $8 的 Pro。