[{"data":1,"prerenderedAt":538},["ShallowReactive",2],{"/docs/exclusives/coinsystem/custom-rewards":3,"/docs/exclusives/coinsystem/custom-rewards-surround":528},{"id":4,"title":5,"body":6,"description":43,"extension":520,"head":521,"meta":522,"navigation":338,"path":523,"schemaOrg":521,"seo":524,"sitemap":525,"stem":526,"__hash__":527},"docs/1.docs/exclusives/1.coinsystem/5.custom-rewards.md","Custom Rewards",{"type":7,"value":8,"toc":514},"minimark",[9,14,27,30,34,37,148,222,224,228,234,398,407,409,413,419,499,510],[10,11,13],"h2",{"id":12},"overview","Overview",[15,16,17,18,22,23,26],"p",{},"Coinsystem can send custom shop rewards to ",[19,20,21],"code",{},"Functions.GiveCustomReward"," inside ",[19,24,25],{},"sky_base/config/sv_functions.lua",".\nUse this hook for rewards that are not handled by the default item, money, weapon, coin, or vehicle integrations.",[28,29],"hr",{},[10,31,33],{"id":32},"reward-structure","Reward Structure",[15,35,36],{},"Every custom reward uses the same reward table structure:",[38,39,44],"pre",{"className":40,"code":41,"language":42,"meta":43,"style":43},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    label = \"Pet Dog\",\n    sort = \"pet\",\n    name = \"dog\",\n    amount = 1,\n    img = \"dog.png\"\n}\n","lua","",[19,45,46,55,78,95,112,126,142],{"__ignoreMap":43},[47,48,51],"span",{"class":49,"line":50},"line",1,[47,52,54],{"class":53},"sTEyZ","{\n",[47,56,58,61,65,68,72,75],{"class":49,"line":57},2,[47,59,60],{"class":53},"    label ",[47,62,64],{"class":63},"sMK4o","=",[47,66,67],{"class":63}," \"",[47,69,71],{"class":70},"sfazB","Pet Dog",[47,73,74],{"class":63},"\"",[47,76,77],{"class":53},",\n",[47,79,81,84,86,88,91,93],{"class":49,"line":80},3,[47,82,83],{"class":53},"    sort ",[47,85,64],{"class":63},[47,87,67],{"class":63},[47,89,90],{"class":70},"pet",[47,92,74],{"class":63},[47,94,77],{"class":53},[47,96,98,101,103,105,108,110],{"class":49,"line":97},4,[47,99,100],{"class":53},"    name ",[47,102,64],{"class":63},[47,104,67],{"class":63},[47,106,107],{"class":70},"dog",[47,109,74],{"class":63},[47,111,77],{"class":53},[47,113,115,118,120,124],{"class":49,"line":114},5,[47,116,117],{"class":53},"    amount ",[47,119,64],{"class":63},[47,121,123],{"class":122},"sbssI"," 1",[47,125,77],{"class":53},[47,127,129,132,134,136,139],{"class":49,"line":128},6,[47,130,131],{"class":53},"    img ",[47,133,64],{"class":63},[47,135,67],{"class":63},[47,137,138],{"class":70},"dog.png",[47,140,141],{"class":63},"\"\n",[47,143,145],{"class":49,"line":144},7,[47,146,147],{"class":53},"}\n",[149,150,151,164],"table",{},[152,153,154],"thead",{},[155,156,157,161],"tr",{},[158,159,160],"th",{},"Key",[158,162,163],{},"Description",[165,166,167,178,192,202,212],"tbody",{},[155,168,169,175],{},[170,171,172],"td",{},[19,173,174],{},"label",[170,176,177],{},"Display name shown to the player.",[155,179,180,185],{},[170,181,182],{},[19,183,184],{},"sort",[170,186,187,188,191],{},"Custom reward type. Use this value in ",[19,189,190],{},"GiveCustomReward"," to decide what should happen.",[155,193,194,199],{},[170,195,196],{},[19,197,198],{},"name",[170,200,201],{},"Internal reward name, item name, vehicle model, pet id, or any identifier your integration needs.",[155,203,204,209],{},[170,205,206],{},[19,207,208],{},"amount",[170,210,211],{},"Amount to give.",[155,213,214,219],{},[170,215,216],{},[19,217,218],{},"img",[170,220,221],{},"Image used in the UI or configurator.",[28,223],{},[10,225,227],{"id":226},"server-hook","Server Hook",[15,229,230,231,233],{},"Add your custom delivery logic in ",[19,232,25],{},":",[38,235,237],{"className":40,"code":236,"filename":25,"language":42,"meta":43,"style":43},"function Functions.GiveCustomReward(source, reward)\n    if reward.sort == \"pet\" then\n        exports[\"some_petscript\"]:GivePet(source, reward.name, reward.amount)\n        return\n    end\n\n    if reward.sort == \"license\" then\n        exports[\"some_license_script\"]:AddLicense(source, reward.name)\n        return\n    end\nend\n",[19,238,239,270,294,324,329,334,340,359,382,387,392],{"__ignoreMap":43},[47,240,241,245,249,252,254,257,261,264,267],{"class":49,"line":50},[47,242,244],{"class":243},"s7zQu","function",[47,246,248],{"class":247},"s2Zo4"," Functions",[47,250,251],{"class":53},".",[47,253,190],{"class":247},[47,255,256],{"class":63},"(",[47,258,260],{"class":259},"sHdIc","source",[47,262,263],{"class":63},",",[47,265,266],{"class":259}," reward",[47,268,269],{"class":63},")\n",[47,271,272,275,278,281,284,286,288,291],{"class":49,"line":57},[47,273,274],{"class":243},"    if",[47,276,277],{"class":53}," reward.",[47,279,184],{"class":280},"sBMFI",[47,282,283],{"class":63}," ==",[47,285,67],{"class":63},[47,287,90],{"class":70},[47,289,290],{"class":63},"\" ",[47,292,293],{"class":243},"then\n",[47,295,296,299,301,304,306,309,312,315,317,320,322],{"class":49,"line":80},[47,297,298],{"class":53},"        exports[",[47,300,74],{"class":63},[47,302,303],{"class":70},"some_petscript",[47,305,74],{"class":63},[47,307,308],{"class":53},"]:",[47,310,311],{"class":247},"GivePet",[47,313,314],{"class":53},"(source, reward.",[47,316,198],{"class":280},[47,318,319],{"class":53},", reward.",[47,321,208],{"class":280},[47,323,269],{"class":53},[47,325,326],{"class":49,"line":97},[47,327,328],{"class":243},"        return\n",[47,330,331],{"class":49,"line":114},[47,332,333],{"class":243},"    end\n",[47,335,336],{"class":49,"line":128},[47,337,339],{"emptyLinePlaceholder":338},true,"\n",[47,341,342,344,346,348,350,352,355,357],{"class":49,"line":144},[47,343,274],{"class":243},[47,345,277],{"class":53},[47,347,184],{"class":280},[47,349,283],{"class":63},[47,351,67],{"class":63},[47,353,354],{"class":70},"license",[47,356,290],{"class":63},[47,358,293],{"class":243},[47,360,362,364,366,369,371,373,376,378,380],{"class":49,"line":361},8,[47,363,298],{"class":53},[47,365,74],{"class":63},[47,367,368],{"class":70},"some_license_script",[47,370,74],{"class":63},[47,372,308],{"class":53},[47,374,375],{"class":247},"AddLicense",[47,377,314],{"class":53},[47,379,198],{"class":280},[47,381,269],{"class":53},[47,383,385],{"class":49,"line":384},9,[47,386,328],{"class":243},[47,388,390],{"class":49,"line":389},10,[47,391,333],{"class":243},[47,393,395],{"class":49,"line":394},11,[47,396,397],{"class":243},"end\n",[399,400,401],"tip",{},[15,402,403,404,406],{},"Keep custom reward logic server-side. The ",[19,405,260],{}," argument is the player receiving the reward.",[28,408],{},[10,410,412],{"id":411},"config-example","Config Example",[15,414,415,416,418],{},"Create a reward in the Coinsystem config or configurator with the same ",[19,417,184],{}," value:",[38,420,422],{"className":40,"code":421,"language":42,"meta":43,"style":43},"{\n    label = \"Police Dog\",\n    sort = \"pet\",\n    name = \"police_dog\",\n    amount = 1,\n    img = \"police_dog.png\"\n}\n",[19,423,424,428,443,457,472,482,495],{"__ignoreMap":43},[47,425,426],{"class":49,"line":50},[47,427,54],{"class":53},[47,429,430,432,434,436,439,441],{"class":49,"line":57},[47,431,60],{"class":53},[47,433,64],{"class":63},[47,435,67],{"class":63},[47,437,438],{"class":70},"Police Dog",[47,440,74],{"class":63},[47,442,77],{"class":53},[47,444,445,447,449,451,453,455],{"class":49,"line":80},[47,446,83],{"class":53},[47,448,64],{"class":63},[47,450,67],{"class":63},[47,452,90],{"class":70},[47,454,74],{"class":63},[47,456,77],{"class":53},[47,458,459,461,463,465,468,470],{"class":49,"line":97},[47,460,100],{"class":53},[47,462,64],{"class":63},[47,464,67],{"class":63},[47,466,467],{"class":70},"police_dog",[47,469,74],{"class":63},[47,471,77],{"class":53},[47,473,474,476,478,480],{"class":49,"line":114},[47,475,117],{"class":53},[47,477,64],{"class":63},[47,479,123],{"class":122},[47,481,77],{"class":53},[47,483,484,486,488,490,493],{"class":49,"line":128},[47,485,131],{"class":53},[47,487,64],{"class":63},[47,489,67],{"class":63},[47,491,492],{"class":70},"police_dog.png",[47,494,141],{"class":63},[47,496,497],{"class":49,"line":144},[47,498,147],{"class":53},[500,501,502],"warning",{},[15,503,504,505,507,508,251],{},"The ",[19,506,184],{}," value in the reward config must match the value you check in ",[19,509,21],{},[511,512,513],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":43,"searchDepth":50,"depth":57,"links":515},[516,517,518,519],{"id":12,"depth":57,"text":13},{"id":32,"depth":57,"text":33},{"id":226,"depth":57,"text":227},{"id":411,"depth":57,"text":412},"md",null,{},"/docs/exclusives/coinsystem/custom-rewards",{"title":5,"description":43},{"loc":523},"1.docs/exclusives/1.coinsystem/5.custom-rewards","V9UdRWPH3bjAFXexj5lZ2ltUyASmJi3p-ZJqfuyw3fQ",[529,534],{"title":530,"path":531,"stem":532,"description":533,"children":-1},"Tebex VIP Tiers","/docs/exclusives/coinsystem/vip-tiers","1.docs/exclusives/1.coinsystem/4.vip-tiers","Configure Tebex subscriptions to deliver VIP tiers in Coinsystem V2.",{"title":535,"path":536,"stem":537,"description":43,"children":-1},"Battle Pass V3","/docs/exclusives/battlepass/battlepass","1.docs/exclusives/2.battlepass/1.battlepass",1780054809579]