初始化 Line_Project_Bot:LP_Bot 重構版(介面重設計+平台環境改讀試算表)

根本原因:
LP_Bot 介面老舊且環境設定寫死在程式內,新增平台或環境都要改碼重建。

影響:
全新深色控制台介面;首頁改為「平台+環境+Token」,平台清單與連線設定
即時讀取 Google 試算表(quickopen 同款資料來源),選擇與 Token 會記憶於
localStorage;支援「開遊戲」直開跳過維護網址;SD 機台自製 Spin 面板
(押注/延遲/倍率停/轉數停+Log 終端)。

修法:
- 底層引擎(Engine/Common/define/FormTable*)自 LP_Bot 原封搬移
- UI 層全部重寫(Login/Lobby/SlotList/SDGame),antd 深色主題
- 新增 GoogleSheetService:service account 簽 JWT 讀 Sheets API,
  非安全來源 fallback jsrsasign
- 移除 React.StrictMode(雙重掛載會讓 NetManagerSD 單例連線互蓋)
- SD socket 依 gameUrl 協定強制 wss
- 機台 1310/1311/1801/1803/1804/1805 Spin 帶 mode:0 特例
  (依 SD3 客戶端 MainState 原始碼)
- credentials.json 不進版控,附 credentials.example.json 範本

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 11:04:49 +08:00
co-authored by Claude Fable 5
commit ebe8c3caca
445 changed files with 42552 additions and 0 deletions
@@ -0,0 +1,42 @@
{
"#slot_037#wheel_client" :
{
"cols" : ["Id","SymbolList"],
"rows" : [[1,[1,1,1,0,8,0,6,0,7,0,5,0,9,0,3,0,8,0,5,0,7,0,6,0,9,0,4,0,7,0,6,0,9,0,5,0,8,0]],[2,[1,1,1,0,8,0,6,0,7,0,5,0,9,0,3,0,8,0,5,0,7,0,6,0,9,0,4,0,7,0,6,0,9,0,5,0,8,0]],[3,[1,1,1,0,8,0,6,0,7,0,5,0,9,0,3,0,8,0,5,0,7,0,6,0,9,0,4,0,7,0,6,0,9,0,5,0,8,0]]]
},
"#slot_037#wheel" :
{
"cols" : ["Id"],
"rows" : []
},
"#slot_037#wheel_form" :
{
"cols" : ["Id"],
"rows" : []
},
"#slot_037#sound" :
{
"cols" : ["Id","Type","PathZnTw"],
"rows" : [[901,1,"sounds/Slot/Common/Event_GetCoins"],[902,1,"sounds/Slot/Common/Event_GetCoins_Win"],[903,1,"sounds/Slot/Common/Event_GetCoins_Big"],[904,1,"sounds/Slot/Common/Event_GetCoins_Mega"],[905,1,"sounds/Slot/Common/Event_Bigwin_Skip"],[1011,1,"sounds/Slot/Default/Event_Bet_01"],[1012,1,"sounds/Slot/Default/Event_Bet_08"],[37001,2,"sounds/Slot/Default/Empty_BGM"],[37002,1,"sounds/Slot/Default/Event_Click"],[37003,1,"sounds/Common/Lobby_InToMechine"],[37011,1,"sounds/Slot/Default/Event_Bet_01"],[37012,1,"sounds/Slot/Default/Event_Bet_01"],[37013,1,"sounds/Slot/Default/Event_Bet_02"],[37014,1,"sounds/Slot/Default/Event_Bet_02"],[37015,1,"sounds/Slot/Default/Event_Bet_03"],[37016,1,"sounds/Slot/Default/Event_Bet_03"],[37017,1,"sounds/Slot/Default/Event_Bet_04"],[37018,1,"sounds/Slot/Default/Event_Bet_04"],[37019,1,"sounds/Slot/Default/Event_Bet_05"],[37020,1,"sounds/Slot/Default/Event_Bet_05"],[37021,1,"sounds/Slot/Default/Event_Bet_06"],[37022,1,"sounds/Slot/Default/Event_Bet_06"],[37023,1,"sounds/Slot/Default/Event_Bet_07"],[37024,1,"sounds/Slot/Default/Event_Bet_07"],[37025,1,"sounds/Slot/Default/Event_Bet_08"],[37026,1,"sounds/Slot/Default/Event_Bet_08"],[37027,1,"sounds/Slot/Default/Event_Bet_09"],[37028,1,"sounds/Slot/Default/Event_Bet_09"],[37029,1,"sounds/Slot/Default/Event_Bet_10"],[37030,1,"sounds/Slot/Default/Event_Bet_10"],[37071,1,"sounds/Slot/Default/Event_ReelStop_01"],[37072,1,"sounds/Slot/Default/Event_ReelStop_01"],[37073,1,"sounds/Slot/Default/Event_ReelStop_01"],[37074,1,"sounds/Slot/Default/Event_ReelStop_01"],[37075,1,"sounds/Slot/Default/Event_ReelStop_01"],[37091,1,"sounds/Slot/Default/Event_AllLineWin"],[37096,2,"sounds/Slot/Default/Event_BigWinMusic"],[37097,2,"sounds/Slot/Default/Event_BigWinMusic"],[37098,2,"sounds/Slot/Default/Event_BigWinMusic"],[37099,2,"sounds/Slot/Default/Event_BigWinMusic"],[37100,2,"sounds/Slot/Default/Event_BigWinMusic"],[37101,1,"sounds/Slot/Default/Event_Bigwin_PartA"],[37102,1,"sounds/Slot/Default/Event_Bigwin_PartB"],[37103,1,"sounds/Slot/Default/Event_Bigwin_PartC"],[37105,1,"sounds/Slot/Default/Event_Bigwin_A"],[37106,1,"sounds/Slot/Default/Event_Bigwin_B"],[37107,1,"sounds/Slot/Default/Event_Bigwin_C"],[37108,1,"sounds/Slot/Default/Event_Bigwin_D"],[37111,2,"sounds/Slot/Default/Event_JackPot"],[37112,2,"sounds/Slot/Default/Event_JackPot"],[37113,2,"sounds/Slot/Default/Event_JackPot"],[37114,2,"sounds/Slot/Default/Event_JackPot"],[37115,2,"sounds/Slot/Default/Event_JackPot"],[37121,1,"sounds/Slot/Default/Event_GotScore"],[37601,1,"sounds/Slot/Default/Classic_Random1"],[37602,1,"sounds/Slot/Default/Classic_Random2"],[37603,1,"sounds/Slot/Default/Classic_Random3"]]
},
"#slot_037#line" :
{
"cols" : ["Id","LineId"],
"rows" : [[1,14]]
},
"#slot_037#pay" :
{
"cols" : ["Id","X1","X2","X3"],
"rows" : [[0,0,0,0],[1,0,0,5],[2,0,0,0],[3,0,0,0],[4,0,0,0],[5,0,0,50],[6,0,0,20],[7,0,0,10],[8,0,0,5],[9,0,0,3]]
},
"#slot_037#symbol" :
{
"cols" : ["Id","PicIndex","SameShift","ContinuousPic","PicNext","PicPrev"],
"rows" : [[0,null,0,null,null,null],[1,null,5,[1,10,11],10,null],[2,null,0,null,null,null],[3,null,0,null,null,null],[4,null,0,null,null,null],[5,null,0,null,null,null],[6,null,0,null,null,null],[7,null,0,null,null,null],[8,null,0,null,null,null],[9,null,0,null,null,null],[10,null,5,null,11,1],[11,null,5,null,null,10]]
},
"#slot_037#fixed" :
{
"cols" : ["Id","BValue","CValue"],
"rows" : [[1,1,null],[3,1,null],[4,20,null],[5,2,null],[6,0,null],[7,1,null],[1001,5,null],[1002,3,null],[1003,2,null],[1011,0,null],[1012,5,null],[1013,2,null],[1021,1,null],[1022,2,null],[1023,5,null],[1024,25,null],[1025,50,null],[1026,500,null],[1027,2000,null]]
}
}