[{"data":1,"prerenderedAt":561},["ShallowReactive",2],{"/docs/base/internal_banking":3,"/docs/base/internal_banking-surround":550},{"id":4,"title":5,"body":6,"description":539,"extension":540,"head":541,"meta":542,"navigation":543,"path":545,"schemaOrg":541,"seo":546,"sitemap":547,"stem":548,"__hash__":549},"docs/1.docs/base/internal_banking.md","Internal Job Banking",{"type":7,"value":8,"toc":533},"minimark",[9,14,27,30,34,37,74,77,110,113,117,128,307,325,329,371,408,443,520,529],[10,11,13],"h2",{"id":12},"overview","Overview",[15,16,17,18,22,23,26],"p",{},"sky_base includes an internal job banking backend for shared society accounts. It stores one row per job in the ",[19,20,21],"code",{},"sky_job_accounts"," table and keeps the current amount in the ",[19,24,25],{},"balance"," column.",[15,28,29],{},"This is useful when a banking script does not support a job account the way a Sky script expects it, or when you want a simple, stable backup for job balances.",[10,31,33],{"id":32},"configuration","Configuration",[15,35,36],{},"Use the internal backend as the main society banking system:",[38,39,45],"pre",{"className":40,"code":41,"filename":42,"language":43,"meta":44,"style":44},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.banking = \"sky\"\n","sky_base/config/config.lua","lua","",[19,46,47],{"__ignoreMap":44},[48,49,52,56,60,64,67,71],"span",{"class":50,"line":51},"line",1,[48,53,55],{"class":54},"sTEyZ","Config.",[48,57,59],{"class":58},"sBMFI","banking",[48,61,63],{"class":62},"sMK4o"," =",[48,65,66],{"class":62}," \"",[48,68,70],{"class":69},"sfazB","sky",[48,72,73],{"class":62},"\"\n",[15,75,76],{},"Or keep your existing banking resource and only use the internal table when the selected adapter fails:",[38,78,80],{"className":40,"code":79,"filename":42,"language":43,"meta":44,"style":44},"Config.banking = \"auto\"\nConfig.useSkyBankingFallback = true\n",[19,81,82,97],{"__ignoreMap":44},[48,83,84,86,88,90,92,95],{"class":50,"line":51},[48,85,55],{"class":54},[48,87,59],{"class":58},[48,89,63],{"class":62},[48,91,66],{"class":62},[48,93,94],{"class":69},"auto",[48,96,73],{"class":62},[48,98,100,102,105,107],{"class":50,"line":99},2,[48,101,55],{"class":54},[48,103,104],{"class":58},"useSkyBankingFallback",[48,106,63],{"class":62},[48,108,109],{"class":62}," true\n",[15,111,112],{},"The fallback only takes over for failed shared-account calls. If your external banking resource returns a valid balance or accepts the transaction, sky_base keeps using that resource.",[10,114,116],{"id":115},"database-table","Database Table",[15,118,119,120,123,124,127],{},"sky_base creates the table automatically on start when ",[19,121,122],{},"Config.banking = \"sky\""," or ",[19,125,126],{},"Config.useSkyBankingFallback = true",".",[38,129,133],{"className":130,"code":131,"language":132,"meta":44,"style":44},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","CREATE TABLE IF NOT EXISTS `sky_job_accounts` (\n    `job` VARCHAR(64) NOT NULL,\n    `balance` BIGINT NOT NULL DEFAULT 0,\n    `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n    PRIMARY KEY (`job`)\n) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n","sql",[19,134,135,165,194,217,237,264,282],{"__ignoreMap":44},[48,136,137,141,144,148,151,154,157,159,162],{"class":50,"line":51},[48,138,140],{"class":139},"sbssI","CREATE",[48,142,143],{"class":139}," TABLE",[48,145,147],{"class":146},"s2Zo4"," IF",[48,149,150],{"class":139}," NOT",[48,152,153],{"class":139}," EXISTS",[48,155,156],{"class":62}," `",[48,158,21],{"class":69},[48,160,161],{"class":62},"`",[48,163,164],{"class":54}," (\n",[48,166,167,170,173,175,179,182,185,188,191],{"class":50,"line":99},[48,168,169],{"class":62},"    `",[48,171,172],{"class":69},"job",[48,174,161],{"class":62},[48,176,178],{"class":177},"spNyl"," VARCHAR",[48,180,181],{"class":54},"(",[48,183,184],{"class":139},"64",[48,186,187],{"class":54},") ",[48,189,190],{"class":139},"NOT NULL",[48,192,193],{"class":54},",\n",[48,195,197,199,201,203,206,209,212,215],{"class":50,"line":196},3,[48,198,169],{"class":62},[48,200,25],{"class":69},[48,202,161],{"class":62},[48,204,205],{"class":177}," BIGINT",[48,207,208],{"class":139}," NOT NULL",[48,210,211],{"class":177}," DEFAULT",[48,213,214],{"class":139}," 0",[48,216,193],{"class":54},[48,218,220,222,225,227,230,232,234],{"class":50,"line":219},4,[48,221,169],{"class":62},[48,223,224],{"class":69},"created_at",[48,226,161],{"class":62},[48,228,229],{"class":139}," DATETIME",[48,231,208],{"class":139},[48,233,211],{"class":177},[48,235,236],{"class":54}," CURRENT_TIMESTAMP,\n",[48,238,240,242,245,247,249,251,253,256,259,262],{"class":50,"line":239},5,[48,241,169],{"class":62},[48,243,244],{"class":69},"updated_at",[48,246,161],{"class":62},[48,248,229],{"class":139},[48,250,208],{"class":139},[48,252,211],{"class":177},[48,254,255],{"class":54}," CURRENT_TIMESTAMP ",[48,257,258],{"class":139},"ON",[48,260,261],{"class":139}," UPDATE",[48,263,236],{"class":54},[48,265,267,270,273,275,277,279],{"class":50,"line":266},6,[48,268,269],{"class":177},"    PRIMARY KEY",[48,271,272],{"class":54}," (",[48,274,161],{"class":62},[48,276,172],{"class":69},[48,278,161],{"class":62},[48,280,281],{"class":54},")\n",[48,283,285,287,290,293,296,299,302,304],{"class":50,"line":284},7,[48,286,187],{"class":54},[48,288,289],{"class":177},"DEFAULT",[48,291,292],{"class":54}," CHARSET",[48,294,295],{"class":62},"=",[48,297,298],{"class":54},"utf8mb4 ",[48,300,301],{"class":177},"COLLATE",[48,303,295],{"class":62},[48,305,306],{"class":54},"utf8mb4_unicode_ci;\n",[15,308,309,310,313,314,317,318,321,322,324],{},"Job names are stored without the ",[19,311,312],{},"society_"," prefix. For example, both ",[19,315,316],{},"police"," and ",[19,319,320],{},"society_police"," use the ",[19,323,316],{}," row.",[10,326,328],{"id":327},"server-exports","Server Exports",[38,330,332],{"className":40,"code":331,"language":43,"meta":44,"style":44},"local balance = exports[\"sky_base\"]:getJobBalance(\"police\")\n",[19,333,334],{"__ignoreMap":44},[48,335,336,339,342,344,347,350,353,355,358,361,363,365,367,369],{"class":50,"line":51},[48,337,338],{"class":62},"local",[48,340,341],{"class":54}," balance ",[48,343,295],{"class":62},[48,345,346],{"class":54}," exports[",[48,348,349],{"class":62},"\"",[48,351,352],{"class":69},"sky_base",[48,354,349],{"class":62},[48,356,357],{"class":54},"]:",[48,359,360],{"class":146},"getJobBalance",[48,362,181],{"class":54},[48,364,349],{"class":62},[48,366,316],{"class":69},[48,368,349],{"class":62},[48,370,281],{"class":54},[38,372,374],{"className":40,"code":373,"language":43,"meta":44,"style":44},"exports[\"sky_base\"]:setJobBalance(\"police\", 25000)\n",[19,375,376],{"__ignoreMap":44},[48,377,378,381,383,385,387,389,392,394,396,398,400,403,406],{"class":50,"line":51},[48,379,380],{"class":54},"exports[",[48,382,349],{"class":62},[48,384,352],{"class":69},[48,386,349],{"class":62},[48,388,357],{"class":54},[48,390,391],{"class":146},"setJobBalance",[48,393,181],{"class":54},[48,395,349],{"class":62},[48,397,316],{"class":69},[48,399,349],{"class":62},[48,401,402],{"class":54},", ",[48,404,405],{"class":139},"25000",[48,407,281],{"class":54},[38,409,411],{"className":40,"code":410,"language":43,"meta":44,"style":44},"exports[\"sky_base\"]:addJobBalance(\"police\", 5000)\n",[19,412,413],{"__ignoreMap":44},[48,414,415,417,419,421,423,425,428,430,432,434,436,438,441],{"class":50,"line":51},[48,416,380],{"class":54},[48,418,349],{"class":62},[48,420,352],{"class":69},[48,422,349],{"class":62},[48,424,357],{"class":54},[48,426,427],{"class":146},"addJobBalance",[48,429,181],{"class":54},[48,431,349],{"class":62},[48,433,316],{"class":69},[48,435,349],{"class":62},[48,437,402],{"class":54},[48,439,440],{"class":139},"5000",[48,442,281],{"class":54},[38,444,446],{"className":40,"code":445,"language":43,"meta":44,"style":44},"local removed = exports[\"sky_base\"]:removeJobBalance(\"police\", 1500)\nif not removed then\n    print(\"Not enough money in the job account\")\nend\n",[19,447,448,485,499,515],{"__ignoreMap":44},[48,449,450,452,455,457,459,461,463,465,467,470,472,474,476,478,480,483],{"class":50,"line":51},[48,451,338],{"class":62},[48,453,454],{"class":54}," removed ",[48,456,295],{"class":62},[48,458,346],{"class":54},[48,460,349],{"class":62},[48,462,352],{"class":69},[48,464,349],{"class":62},[48,466,357],{"class":54},[48,468,469],{"class":146},"removeJobBalance",[48,471,181],{"class":54},[48,473,349],{"class":62},[48,475,316],{"class":69},[48,477,349],{"class":62},[48,479,402],{"class":54},[48,481,482],{"class":139},"1500",[48,484,281],{"class":54},[48,486,487,491,494,496],{"class":50,"line":99},[48,488,490],{"class":489},"s7zQu","if",[48,492,493],{"class":62}," not",[48,495,454],{"class":54},[48,497,498],{"class":489},"then\n",[48,500,501,504,506,508,511,513],{"class":50,"line":196},[48,502,503],{"class":146},"    print",[48,505,181],{"class":54},[48,507,349],{"class":62},[48,509,510],{"class":69},"Not enough money in the job account",[48,512,349],{"class":62},[48,514,281],{"class":54},[48,516,517],{"class":50,"line":219},[48,518,519],{"class":489},"end\n",[15,521,522,524,525,528],{},[19,523,469],{}," never allows the balance to go below zero. It returns ",[19,526,527],{},"false"," when the account has insufficient funds.",[530,531,532],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":44,"searchDepth":51,"depth":99,"links":534},[535,536,537,538],{"id":12,"depth":99,"text":13},{"id":32,"depth":99,"text":33},{"id":115,"depth":99,"text":116},{"id":327,"depth":99,"text":328},"Use sky_base as a lightweight fallback or replacement for society/job account balances.","md",null,{},{"icon":544},"i-lucide-landmark","/docs/base/internal_banking",{"title":5,"description":539},{"loc":545},"1.docs/base/internal_banking","jacNLyCN-bfD27aKgd-qhZ3q031SBDwtST95ju0UK4s",[551,557],{"title":552,"path":553,"stem":554,"description":555,"icon":556,"children":-1},"Discord Webhooks","/docs/base/discord_logs","1.docs/base/discord_logs","The Sky Base library allows integration with Discord through webhooks. This documentation provides details on how to configure Discord webhooks for various Sky-Systems scripts within the sky_base library.","i-simple-icons-discord",{"title":558,"path":559,"stem":560,"description":44,"children":-1},"Coinsystem V2","/docs/exclusives/coinsystem/coinsystem","1.docs/exclusives/1.coinsystem/1.coinsystem",1780323060623]