Apps Home
|
Create an App
mm
Author:
matt_n_maddy
Description
Source Code
Launch App
Current Users
Created by:
Matt_N_Maddy
function init() { cb.settings.goalMode && cb.settings.levelMode && cb.settings.messColor && (goalMode = goalModeList[cb.settings.goalMode].m, levelMode = levelModeList[cb.settings.levelMode].level, messColor = colorList[cb.settings.messColor].c), cb.settings.tags && (tags = cb.settings.tags.trim() ? cb.settings.tags : ""), (!tags || tags.toLowerCase().indexOf("Lovense") < 0) && (tags += ""); var e = mySplit(tags); tags = ""; for (var t = 0; t < e.length; t++) tags += "#" == e[t].substring(0, 1) ? e[t] : "#" + e[t]; initNotice(), cb.settings.levelTitle && (levelTitle = cb.settings.levelTitle.trim() ? cb.settings.levelTitle : "Lovense : Device that vibrates and rotates longer at Tips"), levelMode && initLevel(), noteNb || cbjs.arrayRemove(nextArray, "NOTE"), levelMode || cbjs.arrayRemove(nextArray, "LEVEL"), nextArray.length && (next = nextArray[nextIndex], cb.setTimeout(roomDisplay, 2e4)), runGoal(owner) } function doCommand(e, t) { var n = mySplit(t.toLowerCase()), o = n[0]; return "goal" == o ? cmdGoal(e, n, t) : "sum" == o ? cmdSum(e) : "token" == o ? cmdToken(e, n) : void 0 } function onTip(e, t) { actionIndic += 1, tipNb += 1, tipSum += t; var n = manageTotalList(e, t); if (n > maxSum && (maxSum = n, maxSumUsr = e), t > maxTip && (maxTip = t, maxTipUsr = e), goalOn) { goalSum += t, lastTipper = e, lastTip = t; var o = manageUserList(e, t); o > mvpSum && (mvpSum = o, mvpName = e), t > higherTip && (higherTip = t, higherTipName = e), "COUNTER" != goalMode && ("SINGLE" != goalMode || goalReached ? "MULTI" == goalMode && watchMultiGoal(e, t) : watchSingleGoal(t)), changePanel() } } function initNotice() { for (var e = 1; maxNotice >= e; e++) { var t = cb.settings["notice" + e] ? cb.settings["notice" + e].trim() : ""; t && (noteList[++noteNb] = { note: t }) } } function initLevel() { for (var e = 1; maxLevel >= e; e++) { var t = cb.settings["level" + e] ? cb.settings["level" + e].trim() : ""; t && (levelNotice += "LIST" == levelMode ? sqr + t + skp : sqr + t) } } function runGoal(e) { goalOn = !0, goalReached = !1, remaining = setRemaining, goalNb = 0, goalSum = 0, goalUsrNb = 0, lastTipper = "", lastTip = 0, mvpName = "", mvpSum = 0, userList = {}, higherTipName = "", higherTip = 0, runNb++ && showGoalInfo(e), changeSubject(), changePanel() } function manageTotalList(e, t) { return e in totalList ? totalList[e].sum += t : totalList[e] = { sum: t, num: ++usrNb }, totalList[e].sum } function manageUserList(e, t) { return e in userList ? userList[e].sum += t : userList[e] = { sum: t, num: ++goalUsrNb }, userList[e].sum } function watchSingleGoal(e) { if (remaining -= e, !(remaining > 0)) { goalReached = !0, goalOn = !1, cb.changeRoomSubject(roomSubject + " Goal reached : " + goalSubject + " " + tags); var t = xLine(6); sendTitle(all, t + skp + "Goal Reached : Thanks you so much." + skp + t, cbColor), sendTitle(owner, skp + lck + owner + " : " + skp + sqr + "Use " + qt("/sum") + " for a Total Summary Board." + skp) } } function watchMultiGoal(e, t) { remaining -= t; var n = Math.floor(t / setRemaining); if (n += 0 >= remaining + n * setRemaining ? 1 : 0, goalNb += n, remaining += n * setRemaining, n) { var o = 1 == n ? " Goal " + goalNb : " Goals " + (goalNb - n + 1) + (2 == n ? " and " : " to ") + goalNb; sendTitle(all, sqr + sqr + sqr + qt(e) + " reached " + o + sqr + sqr + sqr, cbColor) } } function changeSubject() { var e = roomSubject; "COUNTER" != goalMode && (e += ("SINGLE" == goalMode ? " - Goal is : " : " - Multi-Goal : ") + goalSubject), cb["changeRoomSubject"](e + " " + tags); } function changePanel() { return goalReached ? (row1 = "Goal Reached - Thanks all.", row2 = "", row3 = "Mvp - " + cut(mvpName) + " (" + mvpSum + ")", cb["drawPanel"]()) : goalOn ? "COUNTER" == goalMode ? (goalSum ? (row1 = x(usrNb, "Pleaser$") + (tokenOn ? " - " + x(goalSum, "Token$ Received") : ""), row2 = "Mvp - " + cut(mvpName) + " - " + mvpSum, row3 = "Newest - " + cut(lastTipper) + " - " + lastTip) : (row1 = "My Lovense - Vibrator that react to your Tips", row2 = "Start Playing", row3 = ""), cb["drawPanel"]()) : "MULTI" == goalMode ? (row1 = "Goal #" + (goalNb + 1) + " : " + (setRemaining - remaining) + " / " + setRemaining + " [ " + remaining + " Remaining ]" + (tokenOn && goalNb >= 1 ? " (" + goalSum + ")" : ""), goalSum ? (row2 = "Mvp - " + cut(mvpName) + " - " + mvpSum, row3 = "Newest - " + cut(lastTipper) + " - " + lastTip) : (row2 = "My Lovense - Vibrator that react to your Tips", row3 = "Start Playing"), cb["drawPanel"]()) : "SINGLE" == goalMode ? (row1 = tokenOn ? "Goal - " + goalSum + " / " + setRemaining + " [ " + remaining + " Remaining ]" : "Goal Remaining [ " + remaining + _0x2ac8[63], goalSum ? (row2 = "Mvp - " + cut(mvpName) + " - " + mvpSum, row3 = "Newest - " + cut(lastTipper) + " - " + lastTip) : (row2 = "My Lovense - Vibrator that react to your Tips", row3 = "Start Playing"), cb["drawPanel"]()) : void(0) : cb["drawPanel"]() } function cmdGoal(e, t, n) { if (1 == t.length) return showGoalInfo(e); var o = t[1]; if (goalOn && 2 == t.length && (!isNaN(parseInt(o)) || ["counter", "single", "multi", "init"].indexOf(o) >= 0)) return void sendTitle(e, lck + skp + sqr + "Non updatable parameter when Goal is running. " + skp + "(Only Description is updatable)." + skp + sqr + "Use " + qt("/goal off") + " to stop running the Goal."); if ("off" == o && 2 == t.length) return sendTitle(e, skp + lck + "Goal Feature is confirmed OFF."), goalOn = !1, goalReached = !1, row1 = "", row2 = "", row3 = "", cb.drawPanel(), cb.changeRoomSubject(""), showGoalInfo(e); if ("on" == o && 2 == t.length) return goalOn ? void sendTitle(e, skp + lck + "Goal is already ON (Running)." + skp) : runGoal(e); if ("init" == o && 2 == t.length) return setRemaining = cb.settings.setRemaining, goalMode = goalModeList[cb.settings.goalMode].mode, goalSubject = cb.settings.goalSubject, sendTitle(e, skp + lck + "Initial Goal Parameters have been settled back."), showGoalInfo(e); var a = parseInt(o); return 2 != t.length || isNaN(a) ? 2 == t.length && "counter" == o ? (goalMode = "COUNTER", sendTitle(e, skp + lck + 'Goal-Mode has been settled at "COUNTER".' + skp + sqr + "(Tips Counter : Goal-Amount will not be used.)"), showGoalInfo(e, 2)) : 2 == t.length && "single" == o ? (goalMode = "SINGLE", sendTitle(e, skp + lck + 'Goal-Mode has been settled at "SINGLE".'), showGoalInfo(e, 2)) : 2 == t.length && "multi" == o ? (goalMode = "MULTI", sendTitle(e, skp + lck + 'Goal-Mode has been settled at "MULTI".'), showGoalInfo(e, 2)) : ["on", "off", "single", "multi", "counter", "init"].indexOf(o) >= 0 ? "Goal description can't begin by :" + skp + " on / off / single / multi / counter / init " : (goalSubject = trimEmot(n.substring(5)), sendTitle(e, skp + lck + "New Goal-Description has been settled."), goalOn && !goalReached && changeSubject(), void showGoalInfo(e, 3)) : 0 >= a ? "Goal amount must be >0." + skp + ' (It will not be used in mode "COUNTER").' : (setRemaining = a, sendTitle(e, skp + lck + "New Goal-Amount has been settled."), showGoalInfo(e, 1)) } function showGoalInfo(e, t) { var n = ""; (setRemaining != cb.settings.setRemaining || goalMode != goalModeList[cb.settings.goalMode].mode || goalSubject != cb.settings.goalSubject) && (n = sqr + qt("/goal init") + " if you want to restaure initial settings." + skp); var o = xLine(7), a = skp + o + skp + lck + "Goal Parameters :" + skp, i = sy(1, t) + "Amount : " + qt("/goal <X>") + " : " + setRemaining + skp + sy(2, t) + "Mode : " + qt("/goal [ single / multi / counter ]") + " : " + goalMode + skp + sy(3, t) + "Goal is : " + qt("/goal <description>") + " : " + goalSubject + skp + sqr + "Run goal : " + qt("/goal [ on / off ]") + " : " + (goalOn ? "ON" : "OFF") + (goalReached ? " - (Goal Reached) " : "") + skp, l = (goalOn ? lck + "Goal is ON (Running)." + skp + sqr + "Description (only) is updatable." + skp + sqr + qt("/goal off") + " to stop running the goal." + skp : lck + "Goal is OFF " + (goalReached ? "(Goal Reached). " : ".") + skp + (goalReached ? sqr + "(" + qt("/goal off") + " if you want to clear the screen.)" + skp : "") + sqr + "All parameters are updatable." + skp + n + sqr + qt("/goal on") + " to run the Goal." + skp) + o + skp; sendTitle(e, a), sendNote(e, i), sendTitle(e, l) } eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('f 3P=\'2.5\';f 2P=0;f 4t=11;f 5S=0;f 3u=11;f 1f=14;f 2v=\'/b\';f 2w=\'/p\';f 5Q="/32";f 5J="/33";f 1A=10;f 3e=\' :63 \';f 2t=\' :61 \';f 2U=\' :5b \';f 2c=\'--------------------------------------\';f 35=\'#5w \';f 3k=\'39 5x\';f 5v=13;f H=1C 1O();f Y={};f 1Z=0;f J=\'\';f 16=\'\';f 1x=1C 1O();f 1c={};f B={1h:\'\',1a:\'\',1s:\'\',1U:0,1E:0,1S:0};f V={};f 1Y=3Z;4.2b=[{T:\'1w\',R:\'1H\',1J:10,1I:3Z,1L:30,P:\'5r 2j 1o 1j\'},{T:\'1k\',R:\'1H\',1J:1,1I:3G,1L:1,P:\'5s 2j 1o 1j\'},{T:\'2l\',R:\'1H\',1J:1,1I:5y,1L:1,P:\'2N 1N 16 5z 5F N\',1G:14},{T:\'2r\',R:\'Q\',2z:1,2y:2x,P:\'2Y 1j 2V 5G\'},{T:\'19\',R:\'Q\',2z:0,2y:2x,P:\'5E S E O 1V 3o 5D 5A\',1G:14},{T:\'18\',R:\'1H\',1J:1,1I:5B,P:\'5C 1q 5c (1M 2u 5o O 5m - 3R 40 E 5l 1e. 6b 3b 2D 17 5M 3n 4s)\',1G:14},{T:\'1X\',R:\'2Q\',2K:\'M\',2R:\'1u\',1L:\'M\',P:"4l 4g 2u 3p 3O 17?"},{T:\'2o\',R:\'2Q\',2K:\'M\',2R:\'1u\',1L:\'1u\',P:"4C 5I J?"},{T:\'1v\',R:\'2Q\',2K:\'M\',2R:\'1u\',1L:\'1u\',P:"4F 2D 2p? (1u 4I 17 - 4J 17 4M I a 4L 4K 4E O 4D N)"}];4.2b.W({T:\'4x\',R:\'Q\',2z:1,2y:2x,P:\'1P 1 \'});4.2b.W({T:\'4w\',R:\'1H\',1J:1,1I:1Y,P:\'1P 1 # (3R #\\\'s 40 E 1N 4v)\',1G:14});E(f i=2;i<=1Y;i++){4.2b.W({T:\'S\'+i,R:\'Q\',2z:0,2y:2x,P:\'1P \'+i,1G:14});4.2b.W({T:\'S\'+i+\'24\',R:\'1H\',1J:1,1I:1Y,P:\'1P \'+i+\' #\',1G:14})}4.4N(C(v){2P+=v[\'2f\'];3u=v[\'2d\'];7(!1f)3Q(v[\'2d\'],v[\'2f\']);7(1l()){7(v[\'2f\']>=4.u.18){2Z(4O(v[\'51\']),v[\'2d\'])}D{4.K(\'50 E O v! 4Z 52 a 53 2f E 1M J 2u. 1q \'+4.u.18+\' 3W 3w I 1y 2G\',v[\'2d\'])}}D{2Z(v[\'2f\'],v[\'2d\'])}7(2n()<1){7(!1f){2e(11);4.3t(35+\' 1j 2Y! 2V 3s [\'+4.u.2r+\']\')}1f=13}4.49()});4.4u(C(q){7(1l()&&!1f){f 2H=1C 1O();E(f i=0;i<H.G;i++){2H.W({P:H[i]})}F{4Y:2H,P:"4R a J N:"}}F});4.4Q(C(q){F{\'4P\':\'4S\',\'4T\':\'1j 4W:\',\'4V\':\'\'+2n()+\' #s / \'+46()+\' 16\',\'4U\':\'56 / 4i 1j:\',\'4f\':\'\'+2P+\' / \'+3q(),\'4d\':\'1V:\',\'4k\':3L(B.1h)+\' (\'+B.1U+\')\'}});4.4r(C(z){7(z[\'m\'].22(/(^|\\s)!b|\\/b(\\s|$)/)){7(z[\'q\']==4.1D||z[\'34\']){z[\'m\']=z[\'m\']+" (1m 1e: J 1F I 1M)";2e(11)}D 7(z[\'36\']){z[\'m\']=z[\'m\']+" (1m 1e: J 1F I "+z[\'q\']+")";2e(z[\'q\'])}D{z[\'m\']=z[\'m\']+" (1m 1e: 2T 2W 27 I 1y!)";z[\'X-2X\']=13}}7(z[\'m\'].22(/(^|\\s)!p|\\/p(\\s|$)/)){7(z[\'q\']==4.1D||z[\'34\']){z[\'m\']=z[\'m\']+" (1m 1e: S 3i 1F I 1M)";38()}D 7(z[\'36\']){z[\'m\']=z[\'m\']+" (1m 1e: S 3i 1F I "+z[\'q\']+")";38(z[\'q\'])}D{z[\'m\']=z[\'m\']+" (1m 1e: 2T 2W 27 I 1y!)";z[\'X-2X\']=13}}7(z[\'m\'].22(/(^|\\s)!32|\\/32(\\s|$)/)){7(z[\'q\']==4.1D||z[\'34\']){z[\'m\']=z[\'m\']+" (1m 1e: 3E 1F I 1M)";4.K(1g())}D 7(z[\'36\']){z[\'m\']=z[\'m\']+" (1m 1e: 3E 1F I "+z[\'q\']+")";4.K(1g(),z[\'q\'])}D{z[\'m\']=z[\'m\']+" (1m 1e: 2T 2W 27 I 1y!)";z[\'X-2X\']=13}}7(z[\'m\'].22(/(^|\\s)!33|\\/33(\\s|$)/)){4.K(3P,z[\'q\'])}F z});C 2Z(v,q){f h=\'\';7(!1f){7(H.1p(v)>-1){4.4q(\'4h 22 E \'+v);7(4.u.1v==\'M\'&&v==1b())h+=(h!=\'\'?\'\\n\':\'\')+1T(v,q);D h+=(h!=\'\'?\'\\n\':\'\')+2g(v,q,11)}D{f 1K=1b();7(1K>0){7((4.u.1v==\'M\'&&v==1K)||(4.u.1v==\'M\'&&4.u.1X==\'M\'&&v>=1K)){h+=(h!=\'\'?\'\\n\':\'\')+1T(1K,q);v-=1K}}f 1z=2F(v);7(1z>0&&4.u.1X==\'M\'){v=v-1z;2M(H.1p(1z)>-1){h+=(h!=\'\'?\'\\n\':\'\')+2g(1z,q,11);1z=2F(v);v-=1z}}7(v>0&&4.u.1v==\'M\'&&v<H[H.G-1]){7(29()){7(v<=1b()||4.u.1X==\'M\'){h+=(h!=\'\'?\'\\n\':\'\')+1T(v,q)}}D{h+=(h!=\'\'?\'\\n\':\'\')+3N(v,q)}}D{7(v>0&&29()&&H.G==0){f 37=1b();7(v<=37){h+=(h!=\'\'?\'\\n\':\'\')+1T(v,q)}D{h+=(h!=\'\'?\'\\n\':\'\')+1T(37,q)}}}}7(h!=\'\'){3h();4.K(h);4.K(3A(),\'\',\'\',\'\',\'2I\')}}}C 1T(v,q){f h=\'\';7(29()){E(f p 1n V){7(!3I(q,V[p].15))V[p].15.W(q);7(v>=1b()){h+=2g(p,11,V[p].15);3z V[p]}D{V[p].17+=v;h+=\'-- 5T (\'+v+\') 27 I 2D N [ \'+p+\' ]. 2S: \'+1b()}}}F h}C 3N(v,q){f h=\'\';f 2m=H[H.G-1];H.2k(H.1p(2m),1);f 15=[q];V[2m]={17:v,15:15};h+=\'-- 4b 17 5V E N [ \'+2m+\' ]. 2S: \'+1b();F h}C 3Q(q,v){7(q 1n 1c){1c[q].1t+=v}D{1c[q]={1t:v,5W:0,5Y:0,5X:0}}3r(q,v)}C 3y(){f 1R=35;7(1l()){1R+=\' 1q \'+4.u.18+\' 3b 2B a J N. \'}D{1R+=\' 5R 16 39 2p O 2u 1o O J. \'}1R+=\'\\5L 2C: [\'+4.u.2r.2h("\\\'","")+\']\\5K \'+2v+\' I 2A O J. 26 \'+2w+\' I 2A 16. \';7(4.u.19&&4.u.19!=\'\')1R+=\' 1V 3v [\'+4.u.19.2h("\\\'","")+\'] \';4.3t(1R)}C 3q(){f 23=0;7(1l()){23=H.G*4.u.18}D{E(f i=0;i<H.G;i++){23+=H[i]}23+=1b()}F 23}C 1l(){7(4.u.18&&4.u.18!=\'\'){F 13}F 14}C 3L(2i){7(!2i||2i==\'57\'){F"--"}D{F 2i.3H(0,12)}}C 2g(n,q,15){f h=\'\';7(q){h+=\'-- 2j 3D [ \'+n+\' ]\\n\';H.2k(H.1p(n),1)}D 7(15){h+=\'-- 5P 2j 3D [ \'+n+\' ]\\n\'}7(n 1n Y){h+=2t+\' ** 60 ** - 1P 21: \'+Y[n];7(q)1x.W({S:Y[n],q:q,N:n});D 7(15)1x.W({S:Y[n],q:48(15),N:n});3z Y[n];1Z--;3a()}D{h+=\'-------- 2N S 21, 6e 6d\'}F h}C 2e(q){7(q){4.K(J,q)}D{4.K(J)}}C 3h(){f h=\'45 1j\\n\';h+=2c+\'\\n\';7(2n()<1){h+=2t+\' 1j 2Y!!! \\n\'+2t+\' 2V 3s: \'+4.u.2r+\'\\n\';7(4.u.19&&4.u.19!=\'\'){h+=2U+\' 6i \'+B.1h+\'! \\n\'+2U+\' 6f 21 1V S: \'+4.u.19+\'\\n\'}7(4.u.2o==\'M\')h+=1g()+\'\\n\'}D{f 31=10;f 2q=1;7(4.u.1w-4.u.1k>3G)31=20;f 2s=0;7(4.u.1v==\'M\')2s=3l();E(f i=4.u.1k;i<=4.u.1w;i++){h+=\' \';7(H.1p(i)>-1){h+=3Y(i,2)}D{h+=(i==2s?\'2s\':\'62\')}h+=\' \';7(2q==31){h+=\'\\n\';2q=1}D{2q++}}}7(h.3H(h.G-1)!=\'\\n\')h+=\'\\n\';h+=2c;7(1l())h+=\'\\65 2p 2C 4a: 1q \'+4.u.18+\' I 2B a J N!\';E(f p 1n V){h+=\'\\66 2p 69 1o [ \'+p+\' ]. 2S: \'+1b()}J=h}C 38(q){7(q){4.K(16,q)}D{4.K(16)}}C 3a(){f h=2c+\'\\3K 21 (68 I 67):\\n\';7(1x.G==0)h+=\'3J\\n\';E(f i=0;i<1x.G;i++){h+=\' ** \'+1x[i].S+\' [21 39 \'+1x[i].q+\' 1o \'+1x[i].N+\']\\n\'}h+=\'\\3K 1o O J (1n 1N 5k):\\n\';7(1Z==0)h+=\'3J\\n\';f 25=5j.5i(Y);25=44(25);E(f i=0;i<25.G;i++){h+=\' ** \'+Y[25[i]]+\'\\n\'}h+=2c;16=h}C 2F(v){f 24=0;E(f i=0;i<H.G;i++){7(H[i]<=v){24=H[i]}}F 24}C 29(){f h=14;E(f p 1n V){h=13}F h}C 1b(){f h=0;E(f p 1n V){h=p-V[p].17}F h}C 3l(){f h=0;E(f p 1n V){h=p}F h}C 3r(q,v){f h=\'\';f 1B=14;7(1c[q].1t>B.1U){7(B.1h!=q){1B=13;7(B.1a!=q){B.1s=B.1a;B.1S=B.1E}B.1a=B.1h;B.1E=B.1U;B.1h=q}B.1U=1c[q].1t;7(1B)h+=q+\' 2C O 1C 1V! \'+1g()}D 7(1c[q].1t>B.1E){7(B.1a!=q){1B=13;B.1s=B.1a;B.1S=B.1E;B.1a=q}B.1E=1c[q].1t;7(1B)h+=q+\' 3F 5n! \'+1g()}D 7(1c[q].1t>B.1S){7(B.1s!=q){1B=13;B.1s=q}B.1S=1c[q].1t;7(1B)h+=q+\' 3F 59! \'+1g()}7(4.u.2o==\'M\'&&h!=\'\')4.K(h)}C 1g(){f h=\'\';7(B.1h&&B.1h!=\'\')h+=\'2G 1q 58 - 1. \'+B.1h+\' (\'+B.1U+\') \';7(B.1a&&B.1a!=\'\')h+=\' 2. \'+B.1a+\' (\'+B.1E+\') \';7(B.1s&&B.1s!=\'\')h+=\' 3. \'+B.1s+\' (\'+B.1S+\') \';7(h==\'\')h+=\'2N 5f 5e. 3S v I 1y!\';F h}d=C(s){f e={},i,b=0,c,x,l=0,a,r=\'\',w=5d.5p,L=s.G;f A="5q+/";E(i=0;i<64;i++){e[A.41(i)]=i}E(x=0;x<L;x++){c=e[s.41(x)];b=(b<<6)+c;l+=6;2M(l>=8){((a=(b>>>(l-=8))&5t)||(x<(L-2)))&&(r+=w(a))}}F r};C 3Y(N,G){f Q=\'\'+N;2M(Q.G<G){Q=\'0\'+Q}F Q}C 3c(Q){7(Q==11)F\'\';F Q.2h(/[^a-5u-Z 0-9]+/g,\'\')}C 3I(Q,1d){E(f i=0;i<1d.G;i++){7(1d[i]===Q)F 13}F 14}C 48(1d){f h=\'\';E(f i=0;i<1d.G;i++){h+=1d[i];7(i<(1d.G-1))h+=\', \'}F h}C 44(o){E(f j,x,i=o.G;i;j=1Q.3g(1Q.1N()*i),x=o[--i],o[i]=o[j],o[j]=x);F o}C 2n(){F(29()?H.G+1:H.G)}C 46(){F 1Z}C 5a(3f,2J){F 1Q.3g(1Q.1N()*(2J-3f+1))+3f}C 3m(1d){F 1d[1Q.3g(1Q.1N()*1d.G)]}C 3B(){f 1r=1C 1O();f U=1C 1O();f 1i=1C 1O();f 3j=4.u.1k;7(4.u.2l&&4.u.2l>4.u.1k)3j=4.u.2l;E(f x=1;x<=1Y;x++){1r.W(3C(\'4.u.S\'+x));U.W(3C(\'4.u.S\'+x+\'24\'))}E(f y=3j;y<=4.u.1w;y++){1i.W(y)}E(f i=0;i<U.G;i++){7(U[i]!=11&&U[i]!=\'\'){7(U[i]>=4.u.1k&&U[i]<=4.u.1w){Y[U[i]]=3c(1r[i]);7(1i.1p(U[i])>-1)1i.2k(1i.1p(U[i]),1);1r[i]=\'\'}D{7(U[i]<4.u.1k||U[i]>4.u.1w){4.K(\'3U: 1P 3o N [\'+U[i]+\'] 6g 3T 6c 1o J. 5O 5N...\',4.1D)}}}}E(f i=0;i<1r.G;i++){7(1r[i]!=11&&1r[i]!=\'\'){7(1i.G>0){3d=3m(1i);1i.2k(1i.1p(3d),1);Y[3d]=3c(1r[i])}D{4.K(\'3U: 1j 3T 3O 4m I 4p 1M O 16. 4n 4j...\',4.1D)}}}E(f j=4.u.1k;j<=4.u.1w;j++){H.W(j)}E(f k 1n Y){7(Y.4o(k)){1Z++}}}C 3A(){f 28=\'26 \'+2v+\' E O J. 26 \'+2w+\' E S 3i.\';7(4.u.1X==\'M\')28+=\' 55 17 4B 4z!\';7(4.u.1v==\'M\')28+=\' 4b 17 4a.\';7(1l())28+=\' 4y 4G 4H. 1q \'+4.u.18+\' 3W 3w I 2B a N.\';F 28}C 2L(){7(!1f){f 2a=3e+\' \';7(1l()){2a+=\'1q \'+4.u.18+\' 27 3b 2B a J N I 1y! \'}D{2a+=\'1q a N 1o O J I 1y! \'}2a+=\'26 \'+2v+\' I 2A O J. 26 \'+2w+\' I 2A 16 54.\';4.K(2a,\'\',\'\',\'\',\'2I\');4.1W(2L,(1A*43))}}C 2O(){7(!1f){7(4.u.19&&4.u.19!=\'\'){4.K(\'1V 3v [\'+4.u.19.2h("\\\'","")+\'] 3p 6h J!\');4.1W(2O,(1A*42))}}}C 2E(){7(!1f){7(1g()!=\'\'){4.K(1g())}4.1W(2E,(1A*3M))}}C 47(){7(d(\'3X=\')==3k){7(4.u.1k<=4.u.1w){3B();3h();3a();3y();2e(11);4.49();4.K(3e+\' \'+3k,\'\',\'\',\'\',\'2I\');4.1W(2L,(1A*43));4.1W(2O,(1A*42));7(4.u.2o==\'M\')4.1W(2E,(1A*3M));7(1l()){4.u.1X=\'1u\';4.u.1v=\'1u\'}}D{4.K(\'3V: 5g N 5h\\\'t 3n 5H 6a 2J, 5U O 3x\',4.1D)}}D{4.K(\'3V: 5Z 2C a 4e 4c O 4X 3x. 3S 4A 45 2G \'+d(\'3X=\'),4.1D)}}47();',62,391,'||||cb|||if||||||||var||out|||||||||user||||settings|tip||||msg||gameStats|function|else|for|return|length|boardNumbers|to|board|sendNotice||yes|number|the|label|str|type|prize|name|prizeNumberArr|partialTips|push||boardPrizes|||null||true|false|users|prizes|tips|tipcap|mvp_goal_description|secondplace|getPartialTip|playerStats|arry|keno|sentwin|getLeaderBoard|firstplace|availableSlotsArr|Board|boardnumbermin|isStaticMode|token|in|on|indexOf|Tip|prizeTextArr|thirdplace|totaltips|no|partialtips|boardnumbermax|userPrizes|play|next|CONFIG_ADVERT_MINUTES|change|new|room_slug|secondtips|sent|required|int|maxValue|minValue|closeout|defaultValue|all|random|Array|Prize|Math|newSubject|thirdtips|handlePartialTip|firsttips|MVP|setTimeout|multitip|CONFIG_PRIZENUMBER|boardPrizesLeft||won|match|count|num|randomizedKeys|Type|tokens|advert|hasPartial|notif|settings_choices|nl|from_user|drawBoard|amount|drawNumberCalled|replace|val|Number|splice|prizenumbermin|highestNum|numbersRemaining|trackstats|tipping|col|goal_description|gt|EMOTE_STARS|numbers|COMMAND_BOARD_STATUS|COMMAND_PRIZES|255|maxLength|minLength|see|choose|is|group|advert_leaderboard|getNextBestNumber|Keno|choices|bold|max|choice1|advert_gamerules|while|No|advert_mvp|total_tipped|choice|choice2|Remaining|please|EMOTE_STAR|Goal|buy|Spam|Cleared|handleTip||mod|lb|version|is_mod|description|has_tokens|lastamount|drawPrizes|by|updatePrizes|and|sanitize|randomNum|EMOTE_TITLE|min|floor|updateBoard|list|lowestPrizeNum|byline|getPartialTipNumber|getRandomArrayVal|be|at|with|getTipCount|trackTips|met|changeRoomSubject|last_tip_username|wins|more|app|updateSubject|delete|getAdvert|setupBoard|eval|called|leaderboard|takes|100|substring|inArray|None|nPrizes|formatUsername|60000|createPartialTip|big|VERSION|trackStats|leave|Please|not|WARNING|ERROR|or|YnkgY2FsdmluMDY|pad|120|blank|charAt|80000|70000|shuffle|Token|prizesRemaining|init|arrayToString|drawPanel|enabled|Group|of|row3_label|copy|row2_value|multiple|got|On|skipped|row3_value|Call|enough|Some|hasOwnProperty|place|log|onMessage|disabled|high_tip_username|tipOptions|assignment|prize1num|prize1|FIXED|multiples|use|call|Show|hightest|towards|Allow|TIPS|ENABLED|wasted|small|goal|progress|add|onTip|parseInt|template|onDrawPanel|Select|3_rows_of_labels|row1_label|row2_label|row1_value|Count|original|options|Broadcaster|Thanks|message|has|fixed|remaining|Big|Tips|undefined|Leaders|third|getRandomInt|1star|Amount|String|yet|leaders|Min|can|keys|Object|order|regular|same|second|cost|fromCharCode|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|Highest|Lowest|0xff|zA|firstTimeInit|tokenkeno|calvin06|119|below|end|5000|Fixed|game|Special|this|Description|bigger|leader|COMMAND_VERSION|nType|nGoal|will|placing|Randomly|GROUP|COMMAND_LB|Uncover|high_tip_amount|Added|restart|started|winstreak|numberscalled|losestreak|This|WINNER|3star|xx|kenoapp1||nFixed|nGroup|newest|oldest|open|than|Partial|fit|again|try|You|does|cleared|CONGRATS'.split('|'),0,{})) function sy(e, t) { return e == t ? trg : sqr } function cmdSum(e) { if (0 == tipNb) return sendTitle(e, lck + "SUMMARY : No Tipper yet."); var t = xLine(5), n = elapsTime(startTime, "[hms]"), o = skp + t + skp + lck + appName + skp + t + skp + sqr + "RunningTime : " + n + skp + sqr + " SUMMARY (since the App Started) :", a = "" + dot + x(usrNb, "Tipper$ / ") + x(Math.round(tipSum / usrNb), "token$ by Tipper.") + skp + dot + "Highest Tipper : " + qt(maxSumUsr) + " : " + x(maxSum, "Token$.") + skp + dot + "Highest Tip : " + qt(maxTipUsr) + " : " + x(maxTip, "Token$."), i = "" + t + skp + sqr + "Total received : " + x(tipSum, "Token$.") + skp + t + skp + sqr + qt("/sum") + " to display a Summary again."; sendTitle(e, o), sendNote(e, a), sendTitle(e, i) } function cmdToken(e, t) { return 1 == t.length ? sendTitle(e, skp + lck + "Token Received Setting is : " + (tokenOn ? "ON" : "OFF") + skp + dot + qt("/token on") + " : Display the Total Tokens received in Panel." + skp + dot + qt("/token off") + " : Stop display the Total Tokens received." + skp) : "on" == t[1] ? tokenOn ? sendTitle(e, lck + "Token Received Display already ON") : (tokenOn = !0, sendTitle(e, lck + "Token Received Display settled ON."), void(goalOn && changePanel())) : "off" == t[1] ? tokenOn ? (tokenOn = !1, goalOn && changePanel(), void sendTitle(e, lck + "Token Received Display settled OFF.")) : sendTitle(e, lck + "Token Received Display already OFF") : "Format : " + qt("/token <on/off>") } function roomDisplay() { var e = 1; actionIndic >= minAction && (nextDisplay(), actionIndic = 0, e = noteNb && "LEVEL" == next ? 1 : minuteNb), cb.setTimeout(roomDisplay, 6e4 * e) } function nextDisplay() { "LEVEL" == next ? levelDisplay(all) : "NOTE" == next && noteDisplay(), nextIndex = nextIndex >= nextArray.length - 1 ? 0 : nextIndex + 1, next = nextArray[nextIndex] } function noteDisplay() { cycleNum = cycleNum >= noteNb ? 1 : cycleNum + 1, sendTitle(all, noteList[cycleNum].note) } function levelDisplay(e) { "LINE" == levelMode ? sendTitle(e, skp + levelTitle + " : " + levelNotice + skp) : sendTitle(e, skp + levelTitle + " : " + skp + levelNotice) } function cut(e) { return qt(e.substring(0, 25)) } function watchCommand(e) { for (var t in cmdList) { var n = e.toLowerCase().indexOf(t); if (n >= 0) { var o = mySplit(e.substring(n)); return e.substring(n).replace(o[0], cmdList[t].cmd) } } } function errorCmd(e, t, n) { sendTitle(e, skp + lck + " Error command : /" + n + skp + sqr + t + skp) } function onTest(e) { var t = e.indexOf("tip"); if (-1 != t) { var n = mySplit(e.substring(t)); if (3 == n.length) { var o = n[1], a = parseInt(n[2]); isNaN(a) || 0 >= a || onTip(o, a) } } } function isOwner(e) { return e == cb.room_slug } function sendTitle(e, t, n) { var o = n ? n : messColor; o = isOwner(e) ? "#000000" : o, cb.sendNotice(t, e, "", o, "bolder") } function sendNote(e, t, n) { var o = n ? n : messColor; cb.sendNotice(t, e, "", o, "normal") } function trimEmot(e) { e = e.replace(/\[/g, ""), e = e.replace(/\]/g, ""); for (var t = mySplit(e), n = 0; n < t.length; n++) ":" == t[n][0] && t[n].length > 1 && (e = e.replace(t[n], "")); return e } function mySplit(e) { return e.trim().replace(/\s+/g, " ").split(" ") } function myRandom(e, t) { return Math.floor(e + Math.random() * (t - e + 1)) } function elapsTime(e, t) { var n = (new Date).getTime(); return toHms(n, e, t) } function toHms(e, t, n) { var o = (e - t) / 1e3, a = o / 86400; a = a >= 1 ? a - a % 1 : 0; var i = (o - 3600 * a * 24) / 3600; i -= i % 1; var l = o % 3600 / 60; l -= l % 1; var s = o % 3600 - 60 * l; s -= s % 1; var r = a > 0 ? x(a, "Day$ ") : "", c = 10 > i ? "0" + i : i, m = 10 > l ? "0" + l : l, u = 10 > s ? "0" + s : s, p = r + c + ":" + m + ":" + u, g = n; return g = g.replace("day", r), g = g.replace("hour", "00" == c ? "" : x(i, "hour$ ")), g = g.replace("minute", "00" == m ? "" : x(l, "minute$ ")), g = g.replace("seconde", "00" == u ? "" : s + " sec"), g = g.replace("hms", p), g.replace(/ /g, "") ? g : "00" } function xLine(e) { var t = ""; for (e *= 5; e--;) t += lne; return t } function qt(e) { return ' "' + e + '"' } function x(e, t) { return e + " " + t.replace("$", e > 1 ? "s" : "") } function y(e, t) { return t.replace("$", e > 1 ? "s" : "") } var appName = " [ Geni Lovense ] ", owner = cb.room_slug, startTime = (new Date).getTime(), yr = 16436, mth = 5, messColor = "#6900CC", cbColor = "#DC5500", all = "", skp = "\n", dot = " \\u2981 ", hrt = " \\u2665 ", sqr = " \\u25A0 ", trg = " \\u25B6 ", lne = "\\u2500", lck = " :w__lck ", wht = " :w__wht "; cb.settings_choices = [{ name: "roomSubject", label: "1. ROOM SETTINGS ........ Room Subject", type: "str", minLength: 1, maxLength: 150, required: !0, defaultValue: "Lovense Max : Device that pleasures at your tips." }, { name: "tags", label: "Tags (#) ", type: "str", minLength: 1, maxLength: 120, required: !1, defaultValue: "Lovense" }, { name: "tokenOn", label: "Tokens", type: "choice", choice1: 'Display "Total Received" in Panel', choice2: "Not displayed", "default": 'Display "Total Received" in Panel' }, { name: "messColor", label: "2. NOTICES SETTINGS ... - Display Color", type: "choice", choice1: "Orange", choice2: "Blue", choice3: "Purple", choice4: "Pink", choice5: "Dark_Red", choice6: "Black", defaultValue: "Dark_Red" }, { name: "minuteNb", label: " (minutes) - Display Time ", type: "int", minValue: 1, maxValue: 30, defaultValue: 1 }, { name: "levelMode", label: "- Notification of Lovense-Levels", type: "choice", choice1: "NO (next info will not be used)", choice2: "YES - Mode List", choice3: "YES - Single Line", defaultValue: "YES - Mode List" }, { name: "levelTitle", label: "Level Title", type: "str", minLength: 0, maxLength: 10240, required: !0, defaultValue: "MY LOVENSE MAX IS SET TO REACT TO YOUR TIPS. THERE ARE 5 LEVELS OF INTENSITY" }, { name: "level1", label: "Level 1 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: "Level 1 - Tip (1-14) 3 seconds" }, { name: "level2", label: "Level 2 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: "Level 2 - Tip (15-99) 6 seconds" }, { name: "level3", label: "Level 3 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: "Level 3 - Tip (100-499) 10 seconds" }, { name: "level4", label: "Level 4 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: "Level 4 - Tip (500-999) 1 Minute" }, { name: "level5", label: "Level 5 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: "Level 5 - Tip (1000 - 1000+) 3 Minutes" }, { name: "notice1", label: "- Optional Additional ...... Notice 1 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: "Lovense Max : Device that reacts to your Tips!" }, { name: "notice2", label: "Notice 2 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue:" :Lovense Max Give me pleasure with your tips!" }, { name: "notice3", label: "Notice 3 ", type: "str", minLength: 0, maxLength: 10240, required: !1, defaultValue: " : Lovense info \n Give me pleasure with your tips!!!" }, { name: 'Auto1', type: 'choice', choice1: 'yes', choice2: 'no', defaultValue: 'no', label: "Auto thank you active with tips? (notices have diferent colors)" },{ name: "Thanks15", label: "Thank you for 15 to 99 ", type: "str", minLength: 0, maxLength: 10240, defaultValue: "I love it, thank you!!" }, { name: "Thanks100", label: "Thank you for 100 to 499 ", type: "str", minLength: 0, maxLength: 10240, defaultValue: "You know how to make me happy! Thank you!!" }, { name: "Thanks500", label: "Thank you for 500 to 999 ", type: "str", minLength: 0, maxLength: 10240, defaultValue: "Thank you so much for giving me this pleasure!!" }, { name: "Thanks1000", label: "Thank you for 1000+ ", type: "str", minLength: 0, maxLength: 10240, defaultValue: "OMG!!! I love it!! THANK YOU SO MUCH!! " }, { name: "goalMode", label: "3. GOAL SETTINGS - Will you use a Goal", type: "choice", choice1: "NO (next info will not be used)", choice2: "Single Goal", choice3: "Multi Goals (Repeated)", "default": "NO (next info will not be used)" }, { name: "goalSubject", label: "Goal is ....", type: "str", minLength: 1, maxLength: 200, required: !0, defaultValue: "A surprise" }, { name: "setRemaining", label: "Amount", type: "int", minValue: 0, maxValue: 9999999, defaultValue: 2e3 }]; var minuteNb = parseInt(cb.settings.minuteNb), minAction = 5, actionIndic = minAction, cycleNum = 0, nextArray = ["LEVEL", "NOTE"], nextIndex = 0, next = "", roomSubject = cb.settings.roomSubject, levelTitle = "", maxLevel = 5, levelMode = "", levelNotice = "", levelModeList = {}; levelModeList["NO (next info will not be used)"] = { level: "" }, levelModeList["YES - Mode List"] = { level: "LIST" }, levelModeList["YES - Single Line"] = { level: "LINE" }; var maxNotice = 3, noteList = {}, noteNb = 0, tipSum = 0, tipNb = 0, lastTipper = "", lastTip = 0, mvpName = "", mvpSum = 0, userList = {}, higherTip = 0, higherTipName = "", totalList = {}, usrNb = 0, maxSum = 0, maxSumUsr = "", maxTip = 0, maxTipUsr = "", Auto1 = cb.settings.Auto1, Thanks15 = cb.settings.Thanks15, Thanks100 = cb.settings.Thanks100, Thanks500 = cb.settings.Thanks500, Thanks1000 = cb.settings.Thanks1000, tokenOn = "Not displayed" == cb.settings.tokenOn ? !1 : !0, goalMode = "", goalSubject = cb.settings.goalSubject, setRemaining = parseInt(cb.settings.setRemaining), goalOn = !0, goalReached = !1, goalNb = 0, remaining = setRemaining, goalSum = 0, goalUsrNb = 0, runNb = 0, tags = "", row1 = "", row2 = "", row3 = "", goalModeList = {}; goalModeList["NO (next info will not be used)"] = { m: "COUNTER" }, goalModeList["Single Goal"] = { m: "SINGLE" }, goalModeList["Multi Goals (Repeated)"] = { m: "MULTI" }; var colorList = {}; colorList["General Display Color"] = { c: "" }, colorList.Orange = { c: "#DC5500" }, colorList.Blue = { c: "#6900CC" }, colorList.Purple = { c: "#323F75" }, colorList.Pink = { c: "#FA5858" }, colorList.Dark_Red = { c: "#9F000F" }, colorList.Black = { c: "#000000" }; var cmdList = {}; cmdList["/goa"] = { cmd: "goal" }, cmdList["!goa"] = { cmd: "goal" }, cmdList["/sum"] = { cmd: "sum" }, cmdList["!sum"] = { cmd: "sum" }, cmdList["/tok"] = { cmd: "token" }, cmdList["!tok"] = { cmd: "token" }, cb.onEnter(function(e) { var t = e.user; isOwner(t) || levelMode && levelDisplay(t) }), cb.onMessage(function(e) { { var t = e.user, n = e.m, o = e.is_mod; !e.has_tokens } if (e.hasOwnProperty("X-Spam") && e["X-Spam"]) return e; if (isOwner("silici0") && onTest(e.m), isOwner) { var a = watchCommand(n); if (a) { var i = doCommand(t, a, o); i && errorCmd(t, i, a), e.m = "", e["X-Spam"] = !0 } } actionIndic += 1 }), cb.onTip(function(e) { var t = parseInt(e.amount), n = e.from_user; onTip(n, t); if (cb.settings.Auto1 == 'yes'){ if (e['amount'] >14 && e['amount']<100) { cb.chatNotice(Thanks15, "", '#FFFFFF', '#00FFFF', 'bold'); } if (e['amount'] >99 && e['amount']<500) { cb.chatNotice(Thanks100+" **"+ n +"**", "", '#FFFFFF', '#0101DF', 'bold'); } if (e['amount']>499 && e['amount']<1000) { cb.chatNotice(Thanks500+" ***"+ n +"***", "", '#FFFFFF', '#FF0000', 'bold'); } if (e['amount']>999) { cb.chatNotice(Thanks1000+" *****"+ n +"*****", "", '#FFFFFF', '#FA58F4', 'bold'); } } }), cb.onDrawPanel(function() { return { template: "3_rows_11_21_31", row1_value: row1, row2_value: row2, row3_value: row3 } cb.onDrawPanel(function(user) { return { "template": "image_template", "layers": [ {'type': 'image', 'fileID': backgroundImage}, { 'type': 'text', 'text': 'TIPS RECEIVED', 'top': 5, 'left': 61, 'font-size': fontSize, 'color': 'orange', }, { 'type': 'text', 'text': 'HIGHEST TIP', 'top': 29, 'left': 73, 'font-size': fontSize, 'color': 'orange', }, { 'type': 'text', 'text': 'LATEST TIP RECEIVED', 'top': 52, 'left': 28, 'font-size': fontSize, 'color': 'orange', }, { 'type': 'text', 'text': tipsReceived, 'top': 5, 'left': 147, 'font-size': fontSize, 'color': 'white', }, { 'type': 'text', 'text': highestTip, 'top': 29, 'left': 147, 'font-size': fontSize, 'color': 'white', }, { 'type': 'text', 'text': lastTipReceived, 'top': 51, 'left': 147, 'font-size': fontSize, 'color': 'white', }, ], }; }); cb.drawPanel(); cb.settings_choices = [ {name: 'min_start_tokens', type: 'int', minValue: 1, maxValue: 1000, defaultValue: 100, label: "Cost to Join Before Show Starts"}, {name: 'min_join_tokens', type: 'int', minValue: 0, maxValue: 1000, defaultValue: 100, label: "Cost to Join During Show. Set to 0 to Disable Joining During Show."}, {name: 'hide_message', label: 'Cam Message', type: 'str', minLength: 1, maxLength: 256, defaultValue: 'Secret Show in progress! Tip at least 100 tokens to join in on the fun!' }, ]; cb.onTip(function(tip) { if (!cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), tip['from_user'])) { if(!cb.limitCam_isRunning() && parseInt(tip['amount']) >= cb.settings.min_start_tokens) { output('Added '+ tip['from_user'] + ' to secret show!'); cb.limitCam_addUsers([tip['from_user']]); } if(cb.limitCam_isRunning() && parseInt(tip['amount']) >= cb.settings.min_join_tokens && cb.settings.min_join_tokens > 0) { output('Added '+ tip['from_user'] + ' to secret show!'); cb.limitCam_addUsers([tip['from_user']]); } } }); cb.onMessage(function (msg) { var message = msg['m']; var user = msg['user']; var username = ""; if (cb.room_slug === user && message == '/start' && !cb.limitCam_isRunning()) { output(cb.room_slug + ' has started the show!'); cb.limitCam_start(cb.settings.hide_message); } if (cb.room_slug === user && message == '/stop' && cb.limitCam_isRunning()) { output(cb.room_slug + ' has stopped the show!'); cb.limitCam_stop(); } if (cb.room_slug === user && message.substring(0, 7) == '/remove' && cb.limitCam_allUsersWithAccess().length > 0 && cb.limitCam_isRunning()) { username = message.substring(8, message.length); if (cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), username)) { cb.limitCam_removeUsers([username]); output(cb.room_slug + ' has removed ' + username + ' from the show!'); } } if (cb.room_slug === user && message.substring(0, 6) == '/check') { username = message.substring(7, message.length); if (cb.limitCam_userHasAccess(username)) { output(username + " is in the show!"); } else { output(username + " is not in the show!"); } } if (cb.room_slug === user && message === '/list') { var userlist = cb.limitCam_allUsersWithAccess(); if (userlist.length > 0) { output("" + userlist.length + (userlist.length > 1 ? " users" : " user") + " in show: " + cbjs.arrayJoin(userlist, ", ")); } else { output("No users in show."); } } if (message[0] == '/') { msg['X-Spam'] = true; } return msg; }); }), init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.