跳至主要內容

賭博系統

賭博系統為 EliteMobs 加入賭場。玩家可以在四款小遊戲中下注精英金幣,餘額不足時借債,並可能遭到討債人追捕。管理員可以調整大部分設定,包括二十一點、擲硬幣及比大小的賠付倍率。不過,拉霸機賠付與負債上限固定在程式碼中。


前置設定​

玩家透過特別設定的 NPC 進入遊戲,需要預設授予的 elitemobs.gambling.npc 權限。四款遊戲各有互動類型;莊家收益顯示則由 NPC 檔名決定。

要設定一個賭博 NPC,請建立一個 NPC 設定檔,並將 interactionType 設為以下其中一個值:

互動類型說明
GAMBLING_BLACKJACK開啟二十一點的下注選單
GAMBLING_COINFLIP開啟擲硬幣的下注選單
GAMBLING_SLOTS開啟拉霸機的下注選單
GAMBLING_HIGHERLOWER開啟比大小的下注選單

賭場老闆 NPC 不使用特殊的互動類型。要設定它,請建立一個檔名為 gambling_den_owner.yml 的 NPC。莊家收益顯示會依據這個檔名自動出現在該 NPC 上方。

EliteMobs 提供這五種角色的預製 NPC 設定,通常直接放置即可:

檔案角色
blackjack_dealer.yml二十一點(莊家 Vincent)
coin_flipper.yml擲硬幣(Lucky Pete)
slot_machine_operator.yml拉霸機(Spinner Sam)
card_shark.yml比大小(紙牌高手 Ace Morgan)
gambling_den_owner.yml莊家收益顯示

遊戲​

二十一點​

目標是在不超過 21 點的前提下盡量接近 21 點。此實作採用以下規則。

規則​

  • 玩家與莊家各發兩張牌。
  • 莊家的第二張牌在玩家停牌前都是蓋著的。
  • A 可算作 11 或 1(在可能的情況下會自動調整以避免爆牌)。
  • 花牌(J、Q、K)算作 10。
  • 莊家在 17 點停牌。
  • 每次抽牌都是獨立的取後放回抽樣,沒有可供算牌的有限牌堆。要牌後達到 21 點會自動停牌。
  • 選單為每手牌顯示五個牌位。額外抽到的牌即使無法顯示,仍會計入總點數。
  • 玩家起手拿到天生二十一點時立即獲得賠付,即使莊家也拿到天生二十一點亦然。

動作​

動作說明
Hit再抽一張牌。
Stand保留目前的手牌;接著由莊家行動。
Double Down再支付一份等額賭注,將總下注加倍,只抽一張牌,未爆牌則停牌。僅限持有 2 張牌時的首次操作,且剩餘餘額加可用信用額度必須足以支付追加賭注。

賠付​

結果預設倍率
一般獲勝(玩家點數勝過莊家,或莊家爆牌)2.0x
二十一點(前兩張牌就是 21 點)2.5x
和局(平手)1.0x(退還賭注)
落敗(玩家爆牌或莊家點數較高)0x(賭注損失)

關閉選單​

如果玩家在莊家回合期間關閉選單,莊家的手牌會自動打完並結算結果。如果玩家在停牌前關閉選單,賭注會被沒收。


擲硬幣​

一款簡單的 50/50 遊戲。選擇正面或反面,硬幣決定你的命運。

玩法​

  1. 遊戲開啟時會有一個正面按鈕與一個反面按鈕。
  2. 點擊其中一個做出選擇。
  3. 播放擲硬幣動畫。
  4. 顯示結果。

賠付​

結果預設倍率
猜對1.9x
立起(硬幣立在邊緣上)5.0x
猜錯0x(賭注損失)

立起結果​

硬幣有 1% 的機率會立在邊緣上,而非正面或反面。發生這種情況時,玩家無論選了什麼都必定獲勝,並獲得賭注的 5 倍賠付。這個罕見事件會顯示特別的聊天訊息與視覺效果。

依照這些預設值,正反面各有 49.5% 的機率。期望返還為賭注的 0.495 × 1.9 + 0.01 × 5 = 0.9905 倍,合計莊家優勢為 0.95%。一般 1.9 倍擲硬幣的 5% 莊家優勢,只適用於停用立起結果的情況。倍率包含原始賭注。

關閉選單​

如果玩家在做出選擇前關閉選單,賭注會被沒收。


拉霸機​

轉動三個轉軸並湊出相同符號即可獲勝。越稀有的符號賠付越高。

玩法​

  1. 遊戲開啟時會有一個 3x3 的轉軸格與一個 Spin 按鈕。
  2. 點擊 Spin 開始轉動轉軸。
  3. 每個轉軸會依序伴隨動畫停下。
  4. 中間那一列(賠付線)決定結果。

符號與賠付​

各轉軸依下表權重獨立抽取符號。三個相同符號的賠付倍率是 100 / weight。中間一列恰好有兩個相同符號,即可獲得該符號三個相同賠付的 25%,包括第一與第三格相同的情況。這是包含賭注的總返還額:櫻桃或檸檬配對的返還低於原始賭注,即使選單顯示獲勝也是如此。

符號權重機率三連賠付二連賠付
Cherry3535%2.86x0.71x
Lemon2828%3.57x0.89x
Orange2020%5.0x1.25x
Golden Bell1010%10.0x2.5x
Silver Bar55%20.0x5.0x
Lucky 722%50.0x12.5x

三個 Lucky 7 就是頭獎,並會有特別的視覺與音效。

關閉選單​

如果玩家在轉動前關閉選單,賭注會被沒收。

結果顯示後,Spin Again 會再收取一份等額賭注並返回準備畫面。玩家接著需要點擊 Spin;在兩步之間關閉選單會損失剛收取的賭注。


比大小​

一款以連勝為核心的紙牌遊戲。猜下一張牌比目前這張大還是小,並累積倍率。你可以隨時兌現,也可以孤注一擲。

玩法​

  1. 抽出一張牌並顯示(數值範圍為 2 到 14,其中 A = 14)。
  2. 猜下一張牌會比目前這張大還是小。
  3. 如果猜對,你的倍率會提高,翻出的牌會成為新的目前牌。
  4. 只要至少猜對一次,你就可以隨時兌現。
  5. 如果猜錯,你會失去全部賭注。
  6. 如果下一張牌與目前的牌相同,算作落敗。

連勝倍率​

每猜對一次,你的獎金就會乘上所設定的倍率(預設 1.3x)。倍率會疊加:

連勝倍率(預設)押注 100 金幣的賠付
11.3x130
21.69x169
32.197x219.7
42.856x285.6
53.713x371.3
.........
12~23.3x~2,330

最大連勝與自動兌現​

最大連勝為 12。當玩家達成 12 次猜對時,系統會自動為他們兌現並發放獎金。這可以避免倍率失控。

關閉選單​

如果玩家在擁有連勝時關閉選單,系統會自動為他們兌現並發放目前的獎金。如果他們在做出任何猜測前就關閉,賭注會被沒收。


下注​

在任何遊戲開始之前,玩家會看到一個下注選單來選擇他們的賭注。

下注上下限​

設定預設值
最低下注10

沒有可設定的最高下注。選單使用整數金幣賭注;All In 將餘額與可用信用額度相加後,捨去小數部分。

minBet 決定 Reset 金額及減少按鈕的下限。初始金額是 max(minBet, 10)。這不是通用交易限制:All In 可以設定低於 minBet 的正數金額,只要付得起,目前的 Play 就會接受。不要依賴此設定在所有操作中強制最低下注額。

下注選單控制項​

下注選單提供數個控制項:

  • Increment Buttons —— 提供三種增減級距。餘額至少 100 且無負債時,使用餘額的 5%、10%、25%,捨去小數且至少為 1。否則使用固定的 10、50、100。
  • All In —— 把賭注設為玩家負擔得起的上限(包含可用信用額度)。
  • Reset —— 把賭注重設為最低值。
  • Play —— 以目前的賭注開始遊戲。只有在玩家負擔得起該賭注時才會啟用。
  • Cancel —— 不下注並關閉選單。

選單顯示目前餘額。負債為正時才顯示負債與可用信用額度兩行,但沒有負債的玩家也能使用信用額度。


負債系統​

玩家可以透過負債來下注超過自身餘額的金額。賭場提供的信用額度上限是固定的。

負債如何運作​

  1. 當玩家下的注超過其餘額時,超出的部分會被加為賭債。
  2. 玩家可累積的最高負債為 500 金幣。這是寫死的,無法設定。
  3. 玩家無法下會使其負債超過上限的注。
  4. 當玩家獲勝時,獎金會先用來償還負債,剩餘部分才加入餘額。透過 EliteMobs 獲得的其他貨幣收入也會先還債,啟用 Vault 整合時亦然。購買附魔的退款不經過債務回收。

可用信用額度​

負債為有限數值時,可用信用額度為 max(0, maxDebt - currentDebt)。玩家有負債時,下注選單會顯示此額度。

負債警告​

當玩家陷入負債時,他們會收到一則警告訊息。只要背著未清償的負債,討債人就可能上門找他們。


討債人 BOSS​

討債人是一個會生成出來追捕背負賭債玩家的自訂 BOSS。

生成條件​

  • 玩家必須有未清償的賭債。
  • 系統每 60 分鐘(可設定)會對所有線上玩家執行一次週期性檢查。
  • 初始化後,首次檢查會等待一個完整間隔。距離對該玩家的上次生成嘗試,也必須至少經過一個間隔;外掛關閉時會重設此計時。
  • 每次檢查都有 50% 的機率(可設定)為符合條件的玩家生成討債人。
  • 每位玩家同一時間只能有一個討債人處於活躍狀態。
  • 討債人使用自訂 BOSS 檔案 debt_collector.yml。

週期性資格檢查本身不排除世界或遊戲模式,但正常的自訂 BOSS 生成仍可能失敗。還清負債會阻止未來的週期性生成,卻不會自動移除已存在的討債人。

等級縮放​

隨附的 debt_collector.yml 使用動態等級與 scaledCombat: true,戰鬥計算會配合各個玩家。生命值與傷害倍率由此 BOSS 檔案決定。生成流程不會直接指派被追蹤玩家的戰鬥等級;修改 BOSS 設定也會改變其縮放行為。

行為​

  • 討債人會嘗試十個水平距離為 5 到 10 格的地表位置。若都不合適,則退回到玩家高度,並在每個水平軸偏移最多 5 格的位置。
  • 它會立刻鎖定它被生成出來針對的那位玩家。
  • 它預設有 600 秒的逾時(10 分鐘)。如果在那段時間內沒有被擊殺,它就會消失並警告玩家它會再回來。

結果​

結果效果
討債人被擊殺已記錄的追蹤目標若在線上就會收到回歸訊息,即使是其他玩家擊殺亦然。負債不會減少。
玩家死於討債人的直接攻擊死者負債減少 50 金幣(可設定),還清時會收到通知。討債人於 5 秒後移除。死亡處理要求最後造成傷害的實體本身就是 debt_collector.yml BOSS,不會追溯投射物發射者或之後的環境死亡。
管理器逾時移除討債人並傳送警告。未來某次週期性檢查中,若玩家仍符合條件且隨機判定成功,可能再次生成。

賭場老闆​

賭場老闆在頭上以浮動文字顯示莊家收益。數值是記錄的賭注減去賠付,包含借債支付的賭注。它不是獨立銀行餘額,也不是已從債務人收回的現金總額。

  • 正收益以綠色顯示(例如 +1234.56)。
  • 負收益(玩家贏的比輸的多)以紅色顯示(例如 -567.89)。
  • 該顯示每秒更新一次。
  • 莊家收益會保存到 house_earnings.yml,並在伺服器重新啟動後保留。

設定​

所有賭博設定都存放在 GamblingSettings.yml 中。以下是影響遊戲玩法的主要設定。

一般設定​

鍵說明預設值
gamblingEnabled啟用或停用整套賭博系統。停用時,賭博 NPC 不會運作,討債人也不會生成。true
minBetReset 金額及減少按鈕的下限;請參閱上文 All In 的限制。10

註:最高負債(500.0)是寫死的,無法設定。

載入器要求 minBet、討債人檢查間隔及逾時為正整數;機率必須是 0 到 1 之間的有限值。賠付倍率與死亡減債額必須有限且非負。無效值會產生警告,並在已載入的設定中替換為預設值。

賠付倍率​

鍵說明預設值
payouts.blackjack.normal二十一點一般獲勝的賠付倍率。2.0
payouts.blackjack.blackjack拿到天生二十一點(前兩張牌就是 21 點)的賠付倍率。2.5
payouts.coinFlip.normal猜對正反面的賠付倍率。1.9 倍賠付僅在停用立起結果時產生 5% 莊家優勢。1.9
payouts.coinFlip.edgeChance硬幣立在邊緣上(額外獲勝)的機率(0.0 到 1.0)。設為 0.0 可停用。0.01
payouts.coinFlip.edgePayout硬幣立在邊緣上時的賠付倍率。5.0
payouts.higherLower.multiplierV2比大小中每猜對一次所套用的倍率。以乘法疊加。1.3
擲硬幣設定限制

擲硬幣的設定共用同一個 YAML 區段:

payouts:
coinFlip:
normal: 1.9
edgeChance: 0.01
edgePayout: 5.0

如果你現有的檔案直接在 payouts.coinFlip 儲存了一個數字,請將該值移到 normal 底下,並加入兩項立起設定。EliteMobs 會停用賭博系統並回報需要修正,但不會改寫檔案。修正後請重新載入。

拉霸機賠付​

拉霸機的賠付無法設定。它們是使用 100 / weight 公式,從符號權重自動計算出來的:

符號權重三連賠付二連賠付
Cherry352.86x0.71x
Lemon283.57x0.89x
Orange205.0x1.25x
Bell1010.0x2.50x
Bar520.0x5.00x
Lucky 7250.0x12.50x

GamblingSettings.yml 中根本沒有任何 payouts.slots.* 鍵 —— 該檔案中唯一與拉霸機相關的項目是 slots.* 的 UI 字串(按鈕名稱、標籤、結果標題)。賠付一律由寫死的符號權重推導而來。

討債人設定​

鍵說明預設值
debtCollector.spawnChance每次檢查時討債人生成的機率(0.0 到 1.0)。0.5
debtCollector.checkIntervalMinutes每隔多久(以分鐘計)檢查一次是否該為負債玩家生成討債人。60
debtCollector.timeoutSeconds討債人若未被擊殺,多久(以秒計)之後會消失。600
debtCollector.debtReductionOnPlayerDeath討債人擊殺玩家時所減免的負債金額。50.0

經濟安全性​

賭注在開啟遊戲前扣除。擲硬幣與拉霸機在結果動畫前結算;比大小在每次動畫前記錄猜測,兌現時付款。二十一點在莊家抽牌結束後結算,若在莊家回合關閉選單,則立即完成該手牌。賠付四捨五入至兩位小數,並包含原始賭注。共用結果處理器可防止同一筆待結算賠付重複發放。

玩家斷線導致背包關閉時,也適用上述關閉選單規則。這些保護無法讓未完成的遊戲在伺服器當機或外掛關閉後恢復;請避免在遊戲進行中重新啟動。