aaidrafox
Author: misslayla_
Description Source Code Launch App Current Users

Short Description:

aaidrafox

Full Description

/*aaidrafox

Adds a random background to test chat

*/

// vars
var times_goal_reached = 0;
var last_time_goal_reached = null;
var current_goal_tipped = 0;

var set_tokens_command = '!settok';
var set_reached_command = '!setreached';

var HEART = '\u2665'; //
var BDIAMOND = '\u2666'; //
var BSTAR = '\u2605'; //

//variables para panel
var row3Time = "Not yet"
var fontSize = 11;
var panelConfig = cb.settings.panelConfig;
var imageConfig = cb.settings.imageConfig;
var imageSelec = cb.settings.imageSelec;
var imageConfigTrue = cb.settings.imageConfigTrue;

var row1 =cb.settings.row1;
var row1_LabelColor = cb.settings.row1_LabelColor;
var row1_Color = cb.settings.row1_Color;
var row1_Background = cb.settings.row1_Background;

var row2 = cb.settings.row2;
var row2_LabelColor = cb.settings.row2_LabelColor;
var row2_Color = cb.settings.row2_Color;
var row2_Background = cb.settings.row2_Background;

var row3 = cb.settings.row3;
var row3_LabelColor = cb.settings.row3_LabelColor;
var row3_Color = cb.settings.row3_Color;
var row3_Background = cb.settings.row3_Background;

// Functions

function refresh() {
cb.log("Refresh called");
cb.setTimeout(refresh, 20000);
cb.drawPanel();
}

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 : "You tip my device will vibrate in my pussy."), 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 = BSTAR + " Best Lover " + BSTAR + cut(mvpName) + " (" + mvpSum + ")", cb["drawPanel"]()) : goalOn ? "COUNTER" == goalMode ? (goalSum ? (row1 = HEART + " "+ x(usrNb, "Lover$") + " " + HEART + (tokenOn ? " - " + x(goalSum, "Token$ Received ") + HEART : "" ), row2 = BSTAR + " Best Lover " + BSTAR + cut(mvpName) + " - " + mvpSum, row3 = BDIAMOND + " Last Lover: " + cut(lastTipper) + " - " + lastTip + " "+ BDIAMOND + " | Follow me! |") : (row1 = "Lovense ON - TIPS to start the EMOTION", row2 = "Enjoy the SHOW!", row3 = ""), cb["drawPanel"]()) : "MULTI" == goalMode ? (row1 = "Goal #" + (goalNb + 1) + " : " + (setRemaining - remaining) + " / " + setRemaining + " [ " + remaining + " Remaining ]" + (tokenOn && goalNb >= 1 ? " (" + goalSum + ")" : ""), goalSum ? (row2 = HEART + " My top lover - " + cut(mvpName) + " - " + mvpSum, row3 = "Follow me!" + cut(lastTipper) + " - " + lastTip) : (row2 = "Lovense ON - TIPS to start the EMOTION", row3 = "Enjoy the SHOW!"), cb["drawPanel"]()) : "SINGLE" == goalMode ? (row1 = tokenOn ? "Goal - " + goalSum + " / " + setRemaining + " [ " + remaining + " Remaining ]" : "Goal Remaining [ " + remaining + _0x2ac8[63], goalSum ? (row2 = HEART + " TOP Lover - " + cut(mvpName) + " - " + mvpSum, row3 = "Follow me! " + cut(lastTipper) + " - " + lastTip) : (row2 = "Lovense ON - TIPS to start the EMOTION", row3 = "Enjoy the SHOW!"), cb["drawPanel"]()) : void(0) : cb["drawPanel"]()
//background
document.body.style.backgroundColor = "red";
}

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 ") + " : " + setRemaining + skp + sy(2, t) + "Mode : " + qt("/goal [ single / multi / counter ]") + " : " + goalMode + skp + sy(3, t) + "Goal is : " + qt("/goal ") + " : " + 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)
}

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 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 Subject",
type: "str",
minLength: 1,
maxLength: 150,
required: !0,
defaultValue: "Lovense Lush : Tip and it vibrates to give me pleasure (connects us)"
}, {
name: "tags",
label: "Tags (#) ",
type: "str",
minLength: 1,
maxLength: 120,
required: !1,
defaultValue: "asian bigboobs bbw anal squirt mature feet teen pantyhose mistress lovense madure natural"
}, {
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 toy Lovense Lush :lushsm is connected. There are 5 custom vibration levels with tokens: "
}, {
name: "level1",
label: "Level 1 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":lushsm Level :level1medred - Tip (1-14) 3 seconds (Low vibrations)"
}, {
name: "level2",
label: "Level 2 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":lushsm Level :level2medred - Tip (15-99) 6 seconds (Medium vibrations)"
}, {
name: "level3",
label: "Level 3 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":lushsm Level :level3medred - Tip (100-499) 10 seconds (Medium vibrations)"
}, {
name: "level4",
label: "Level 4 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":lushsm Level :level4medred - Tip (500-999) 15 seconds (High vibrations)"
}, {
name: "level5",
label: "Level 5 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":lushsm Level :level5medred - Tip (1000 - 1000+) 25 seconds (High vibrations)"
}, {
name: "RandomLevel",
label: "Random Level ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":lushsm Random Lvl - Tip (199) To get a random level! :lvpulse2 :pulse_red_small"
}, {
name: "notice1",
label: "- Optional Additional ...... Notice 1 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: ":heart7 Lovense Lush :lushsm Device that vibrates longer on your Tips! :heart7"
}, {
name: "notice2",
label: "Notice 2 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue:" :Lovense Lush Give me pleasure with your tips!"
}, {
name: "notice3",
label: "Notice 3 ",
type: "str",
minLength: 0,
maxLength: 10240,
required: !1,
defaultValue: " :lovense4 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 different colors)"
},{
name: "Thanks15",
label: "Thank you for 15 to 99 ",
type: "str",
minLength: 0,
maxLength: 10240,
defaultValue: ":heart7 :iloveyou :thanksies"
}, {
name: "Thanks100",
label: "Thank you for 100 to 499 ",
type: "str",
minLength: 0,
maxLength: 10240,
defaultValue: ":heart7 You know how to make me happy! :thanK :HAPPYVALENTINEDAYKISSES"
}, {
name: "Thanks500",
label: "Thank you for 500 to 999 ",
type: "str",
minLength: 0,
maxLength: 10240,
defaultValue: ":heart7 Thank you so much for giving me this pleasure!! :kisses4y"
}, {
name: "Thanks1000",
label: "Thank you for 1000+ ",
type: "str",
minLength: 0,
maxLength: 10240,
defaultValue: ":omgred :thankyoumat "
}, {
name: "Thanks200",
label: "Thank you for 200 ",
type: "str",
minLength: 0,
maxLength: 10240,
defaultValue: ":heart7 OMG!!! I love it!! THANK YOU SO MUCH!! Thank you for the random lvl suprise!! "
}, {

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
//Customize your panel with images
}, {
name: "panelConfig",
label:"Panel configuration",
type: "choice",
choice1:"classic",
choice2:"table",
choice3:"image",
defaultValue:"image"
},{
name: "imageSelec",
label:"Select an image ID. You can see all the images in the top of Code Source section",
type: "choice",
choice1:"Image ID written in next section",
choice2:"d87d2d60-bcde-47ce-a021-155de3c9c777",
choice3:"8330f50a-2046-4a9e-ad62-38862a89d522",

defaultValue:"Image ID written in next section",
},{
name: "imageConfig",
label:"Image Panel configuration, select: Image ID written... first, (useful if you copy these app to upload your own image)",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"83926ffe-cbb3-4472-89b4-dfb960f97b0b",
required: true
},{
name: "row1_LabelColor",
label:"Color Row1 Label, only for Table or Image Panel",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"black",
required: true
},{
name: "row1_Color",
label:"Row1 Text Color, only for Table or Image Panel",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"black",
required: true
},{
name: "row1_Background",
label:"Row1 Background Color, only for Table",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"#ADD8E6",
required: true
},{
name: "row2_LabelColor",
label:"Row2 Label Color, only for Table or Image Panel",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"black",
required: true
},{
name: "row2_Color",
label:"Row2 Tex Color, only for Table or Image Panel",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"black",
required: true
},{
name: "row2_Background",
label:"Row2 Background Color, only for Table",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"pink",
required: true
},{
name: "row3_LabelColor",
label:"Row3 Label Color, only for Table or Image Panel",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"black",
required: true
},{
name: "row3_Color",
label:"Row3 Color, only for Table or Image Panel",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"black",
required: true
},{
name: "row3_Background",
label:"Row3 Background Color, only for Table",
type: 'str', minLength: 1, maxLength: 50,
defaultValue:"#ADD8E6",
required: true
}];
// Image ID written in next section
if(imageSelec != "Image ID written in next section"){
imageConfigTrue = imageSelec
}
else {
imageConfigTrue = imageConfig
};
if (times_goal_reached != 0){
row3Time = Math.floor(((new Date()).getTime() - last_time_goal_reached.getTime()) / 60000) + ' minutes ago';
};

//var settings lovense
var minuteNb = parseInt(cb.settings.minuteNb),
minAction = 5,
actionIndic = minAction,
cycleNum = 0,
nextArray = ["LEVEL", "NOTE"],
nextIndex = 0,
next = "",
roomSubject = cb.settings.roomSubject,
levelTitle = "",
maxLevel = 6,
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"
};

// handlers - manejadores
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.onMessage(function(msg) {

var colr = ['#9F9','#f4fff4','#f4fdff','#03c9f6','#d699ee','#f2a4ca','#ff416b','#e3ff41','#b6d409','#cbcbcb','#6dece7','#d3f9ce','#cef9f9','#ebf9ce','#8ce797','#bdbdbd','#13f2d4','#88ce80','#db9dc1','#a086f2','#da06f2','#f2a4ca','#6dece7','#f4fdff','#8ce797',];
var i = Math.floor((Math.random()*24)+1);
msg['background'] = colr[i];
/*cb.chatNotice(' No caps plz ');*/

return msg;

});

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.drawPanel();
});

cb.onDrawPanel(function(user) {
if (times_goal_reached != 0){
row3Time = Math.floor(((new Date()).getTime() - last_time_goal_reached.getTime()) / 60000) + ' minutes ago';
};
if (cb.settings.panelConfig == "image"){
return {
"template": "image_template",
"layers": [
{'type': 'image', 'fileID': imageConfigTrue},
{
'type': 'text',
'text': row1,
'top': 5,
'left': 27,
'font-size': fontSize,
'text-align': 'center',
'font-weight': 'bold',
'color': row1_LabelColor,
},
{
'type': 'text',
'text': row2,
'top': 29,
'left': 27,
'font-size': fontSize,
'text-align': 'center',
'font-weight': 'bold',
'color': row2_LabelColor,
},
{
'type': 'text',
'text': row3,
'top': 52,
'left': 27,
'font-size': fontSize,
'text-align': 'center',
'font-weight': 'bold',
'color': row3_LabelColor,
},
],
};
}
if (cb.settings.panelConfig == "table"){
return {
"template": "image_template",
"table": {
"row_1": {
"background-color": row1_Background,
"col_1": {
"color": row1_LabelColor,
"text-align": "center",
"font-weight": "bold",
"value": row1
},
},
"row_2": {
"background-color": row2_Background,
"col_1": {
"color": row2_LabelColor,
"text-align": "center",
"font-weight": "bold",
"value": row2
},
},
"row_3": {
"background-color": row3_Background,
"col_1": {
"color": row3_LabelColor,
"text-align": "center",
"font-weight": "bold",
"value": row3
},
}
}
};
}

});
cb.drawPanel();

init();
cb.setTimeout(refresh, 20000);

© Copyright Freecamsly 2011- 2019. All Rights Reserved.