Apps Home
|
Create an App
vuvu2
Author:
vuvuza1
Description
Source Code
Launch App
Current Users
Created by:
Vuvuza1
// Settings cb.settings_choices = [ {name:'seconds_for_token', type:'int', minValue:1, maxValue:1000000, defaultValue:1, label: "Seconds for 1 token" }, {name:'notice_period', type:'int', minValue:1, maxValue:1000000, defaultValue:20, label: "Repeat master notice after N messages" }, {name:'lim1', type:'int', minValue:1, maxValue:1000000, defaultValue:50, label: "A = Max Jar value for level 15" }, {name:'lim2', type:'int', minValue:1, maxValue:1000000, defaultValue:150, label: "B = Max Jar value for level 17/18" }, {name:'enter_bonus', type:'int', minValue:1, maxValue:1000000, defaultValue:250, label: "Free seconds given to every new member" }, ]; var vuvuParams = { seconds_for_token: parseInt(cb.settings.seconds_for_token), notice_period: parseInt(cb.settings.notice_period), lim1: parseInt(cb.settings.lim1), lim2: parseInt(cb.settings.lim2), enter_bonus: parseInt(cb.settings.enter_bonus), }; // State description var vuvuState = { timeJar: 0, messagesCount: 0, tick: false, currentLevel: function() { if (this.timeJar <= 0) { return 0; } else if (this.timeJar <= vuvuParams.lim1) { return 15; } else if (this.timeJar <= vuvuParams.lim2) { return this.tick ? 18 : 17; } else if (this.timeJar >= vuvuParams.lim2) { return 20; } }, }; var vuvuBonuses = {}; // Rules notificatior function vuvuNotificationMessage() { return "--- Every token adds " + vuvuParams.seconds_for_token + " second to the Jar.\n" +"--- Lovense toy will vibrate when the Jar is not empty.\n" +"--- Level of vibration depend on amount of tips in the Jar:\n" +"------ less than " + vuvuParams.lim1 + " tokens: level 15\n" +"------ from " + (1 + vuvuParams.lim1) + " to " + vuvuParams.lim2 + " tokens: level 17 or 18\n" +"------ more than " + vuvuParams.lim2 + " tokens: level 20\n"; } function vuvuRulesNotif() { cb.sendNotice(vuvuNotificationMessage(), '', '', '', 'bold'); } cb.onEnter(function(user){ if (!(user.user in vuvuBonuses)) { vuvuBonuses[user.user] = vuvuParams.enter_bonus } cb.sendNotice(vuvuNotificationMessage(), user.user, '', '', 'bold'); cb.sendNotice('You have ' + vuvuBonuses[user.user] + ' bonus seconds.\n' + (vuvuBonuses[user.user] > 0 ? 'You can spend them by sending command: /redeem XXX\n'+ 'Where XXX is amount of bonus seconds to spend: /redeem 50' : 'Tip tokens to add seconds to the Jar'), user.user, '#A9F5A9', '', 'bold'); }) cb.onMessage(function(message){ vuvuState.messagesCount++; if ((vuvuState.messagesCount % vuvuParams.notice_period) === 0) { vuvuRulesNotif(); } }) // Panel render cb.onDrawPanel(function(user) { var level = vuvuState.currentLevel(); return { 'template': '3_rows_12_22_31', 'row1_label': 'Time Jar / Level :', 'row1_value': vuvuState.timeJar + 's / level ' + level, 'row2_label': 'Vibrator is ', 'row2_value': (vuvuState.timeJar > 0 ? 'ON' : 'OFF'), 'row3_value': (vuvuState.timeJar == 0 ? 'Send tips to start vibrator!' : (level != 20 ? 'Tip more to reach higher level!' : 'Tip more to continue vibration torture!')) }; }) // Jar decrementor function vuvuJarDecrementor() { if (vuvuState.timeJar > 0) { vuvuState.timeJar = vuvuState.timeJar - 1; cb.drawPanel(); if (vuvuState.timeJar == 0) { cb.sendNotice("Vibrator turned OFF", "", "#F6CECE"); } vuvuState.tick = !vuvuState.tick; } cb.setTimeout(vuvuJarDecrementor, 1000) } function add_seconds(seconds) { var prevLevel = vuvuState.currentLevel(); vuvuState.timeJar += seconds; var newLevel = vuvuState.currentLevel(); if (vuvuState.timeJar == seconds) { cb.sendNotice("Vibrator turned ON", "", "#A9F5A9"); } var secondsStr = seconds > 1 ? "seconds" : "second"; cb.sendNotice(seconds + " " + secondsStr + " added to the Jar."); cb.drawPanel(); } // onTip handler cb.onTip(function(tip){ add_seconds(tip.amount * cb.settings.seconds_for_token); }) cb.onMessage(function (msg) { cb.sendNotice('msg: ' + JSON.stringify(msg) + ' //// '+ msg['m'].startsWith('/redeem')) // TODO[X] text = msg['m'] user = msg['user'] if (text.startsWith('/redeem')) { amount = parseInt(text.substring(7), 10); cb.sendNotice('amount = "' + amount + '" //// ' + vuvuBonuses[user] + " /// " + user + " /// " + JSON.stringify(vuvuBonuses)) // TODO[X] if (amount > 0 && amount <= vuvuBonuses[user]) { add_seconds(amount); vuvuBonuses[user] = vuvuBonuses[user] - amount cb.sendNotice('User ' + user + ' redeemed ' + amount + ' bonus seconds and put them to the Jar', '', '', '', 'bold'); } else { cb.sendNotice('Not enough bonus seconds, you have ' + vuvuBonuses[user], user, '', '', 'bold'); } } else if (text.startsWith('/gift') && user == 'vuvuza') { amount = parseInt(text.substring(5), 10); vuvuBonuses[user] = amount + (user in vuvuBonuses ? vuvuBonuses[user] : 0) cb.sendNotice('Broadcaster gave ' + amount + ' bonus seconds to you', user, '', '', 'bold'); } }); function vuvuInit() { vuvuRulesNotif(); cb.setTimeout(vuvuJarDecrementor, 1000) cb.drawPanel(); } vuvuInit();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.