Apps Home
|
Create an App
Testwwwwww
Author:
chopper_daddy
Description
Source Code
Launch App
Current Users
Created by:
Chopper_Daddy
// =========================================== // // ============= Roxie's Tip Goal ============ // // =========================================== // // ======== Written By chopper_daddy ========= // // =========================================== // /* // == CHANGELOG == // // Feb 28 2019: Changed user colors for mod // Feb 27 2019: Added rotating notifier from badbadbubba (THANK YOU) // Feb 25 2019: Changed Greys to have light grey text. Added a "F" flag next to female chats. */ // vars var times_goal_reached = 0; var last_time_goal_reached = null; var current_goal_tipped = 0; var tipp = 0; var font_size = 11; var set_tokens_command = '!settok'; var set_reached_command = '!setreached'; var last_user_tip = ' No Tips Yet '; var i = 0; var MAXITEMS = 10; cb.settings_choices = [{ name: 'tokens', label: 'Goal', type: 'int', minValue: 1, default: 1000, required: true }, { name: 'goal_description', label: 'Goal Description', type: 'str', minLength: 1, maxLength: 255, required: true }, { name: 'emoji', type: 'str', label: 'Emoji', defaultValue: '2620', minLength: 1, maxLength: 20, required: false }, { name: 'msgonentry', type: 'choice', choice1: 'yes', choice2: 'no', defaultValue: 'yes', label: 'Display Message 1 privately on entry - set to no for busy rooms' }, { name: 'msg1', type: 'str', required: true, label: 'Message 1', }, { name: 'msg2', type: 'str', required: false, label: 'Message 2', }, { name: 'msg3', type: 'str', required: false, label: 'Message 3', }, { name: 'msg4', type: 'str', required: false, label: 'Message 4', }, { name: 'msg5', type: 'str', required: false, label: 'Message 5', }, { name: 'msg6', type: 'str', required: false, label: 'Message 6', }, { name: 'msg7', type: 'str', required: false, label: 'Message 7', }, { name: 'msg8', type: 'str', required: false, label: 'Message 8', }, { name: 'msg9', type: 'str', required: false, label: 'Message 9', }, { name: 'msg10', type: 'str', required: false, label: 'Message 10', }, { name: 'msgcolor', type: 'str', label: 'Notice color', defaultValue: '#2E2D4D' }, { name: 'chat_ad', type: 'int', minValue: 1, maxValue: 999, defaultValue: 2, label: 'Delay in minutes between notices being displayed (minimum 1)' }]; var emoji = '0x' + cb.settings.emoji; // handlers cb.onTip(function (tip) { tipp = tip['amount']; current_goal_tipped += tip['amount']; if (current_goal_tipped >= cb.settings.tokens) { goalReached(tip['from_user']); } last_user_tip = tip['from_user']; // update_subject(); cb.drawPanel(); }); cb.onDrawPanel(function (user) { var tkns = cb.settings.tokens; var cgt = current_goal_tipped; var tgr = times_goal_reached; var lut = last_user_tip; var fz = font_size; if (tipp > 200) { var emj = String.fromCodePoint('0x1F525'); } else { var emj = String.fromCodePoint(emoji); } return { "template": "image_template", "layers": [ { 'type': 'image', 'fileID': 'ac1ab3a4-113b-41f1-a7e5-cd52597bebf8' }, // Row 1 { 'type': 'text', 'text': 'RECEIVED/GOAL', 'top': 12, 'left': 110, 'font-size': font_size, 'color': '#E540CC' }, { 'type': 'text', 'text': `${cgt}/${tkns}`, 'top': 12, 'left': 200, 'font-size': fz, 'color': '#E540CC' }, // Row 2 { 'type': 'text', 'text': 'GOAL REACHED', 'top': 31, 'left': 110, 'font-size': font_size, 'color': '#E540CC' }, { 'type': 'text', 'text': `${tgr} times`, 'top': 31, 'left': 200, 'font-size': fz, 'color': '#E540CC' }, // Row 3 { 'type': 'text', 'text': `${emj} ${lut} ${emj}`, 'top': 46, 'left': 110, 'font-size': fz, 'color': '#F4AD33' } ], }; }); cb.onMessage((msg) => { if (msg['is_mod'] || msg['user'] == 'chopper_daddy') { if (startsWith(msg['m'], ' ')) { msg['background'] = '#2E2D4D'; msg['c'] = '#ffffff'; } else { msg['background'] = '#FFF3E4'; msg['c'] = 'red'; } } else if (msg['gender'] == 'f' && msg['user'] != 'raising_arizona') { msg['m'] = '[f] ' + msg['m']; } else if (msg['has_tokens'] === false) { msg['c'] = '#B4B4B4'; } if (msg['m'][0] == '!') { if (msg['user'] == cb.room_slug) { if (startsWith(msg['m'], set_tokens_command)) { msg['X-Spam'] = true; var number = msg['m'].slice(set_tokens_command.length); times_goal_reached = Math.floor(number / cb.settings.tokens); current_goal_tipped = number % cb.settings.tokens; last_time_goal_reached = new Date(); cb.drawPanel(); cb.chatNotice('The tokens received has been updated!', msg['user']); } else if (startsWith(msg['m'], set_reached_command)) { msg['X-Spam'] = true; var number = msg['m'].slice(set_reached_command.length); times_goal_reached = number; last_time_goal_reached = new Date(); current_goal_tipped = 0; cb.drawPanel(); cb.chatNotice('The number of times reached has been updated!', msg['user']); } } } return msg; }); // Functions function refresh() { cb.log("Refresh called"); cb.setTimeout(refresh, 20000); cb.drawPanel(); } function update_subject() { var new_subject = cb.settings.goal_description + " [" + tips_remaining() + " tokens remaining]"; cb.log("Changing subject to: " + new_subject); cb.changeRoomSubject(new_subject); } function goalReached(userName) { last_time_goal_reached = new Date(); var curr_times_reached = Math.floor(current_goal_tipped / cb.settings.tokens); for (var i = 0; i < curr_times_reached; i++) { times_goal_reached++; current_goal_tipped -= cb.settings.tokens; cb.chatNotice("Goal was reached for the " + getNumberString(times_goal_reached) + " time!", '', "#FEF9CD", "#F26CBA", "bold"); cb.chatNotice('The user ' + userName + ' has reached the goal.', cb.room_slug, "#FEF9CD", "#F26CBA", "bold"); } } function getNumberString(number) { var numberString = null; var lastChar = String(number).charAt(String(number).length - 1); if ((lastChar == '1') && ((number % 100) != 11)) { numberString = number + "st"; } else if ((lastChar == '2') && ((number % 100) != 12)) { numberString = number + "nd"; } else if ((lastChar == '3') && ((number % 100) != 13)) { numberString = number + "rd"; } else { numberString = "" + number + "th"; } return (numberString); } function tips_remaining() { var r = cb.settings.tokens - current_goal_tipped; if (r < 0) { return 0; } else { return r; } } function startsWith(source, str) { return source.substring(0, str.length) === str; } function init() { update_subject(); } init(); cb.setTimeout(refresh, 20000); /////////////////////// // ROTATING NOTIFIER // /////////////////////// cb.onEnter(function (user) { if (cb.settings['msgonentry'] == 'yes') { cb.sendNotice('Welcome ' + user['user'] + '! ' + cb.settings['msg1'], user['user'], '', cb.settings['msgcolor'], 'bold'); } }); function chatAd() { var msg; while (cb.settings['msg' + (i + 1)] == 0) { i++; i %= MAXITEMS; } msg = cb.settings['msg' + (i + 1)]; i++; i %= MAXITEMS; cb.sendNotice(msg, '', '', cb.settings['msgcolor'], 'bold'); cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000)); } cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000));
© Copyright Chaturbate 2011- 2025. All Rights Reserved.