Apps Home
|
Create an App
__vuvu_test1
Author:
qwe1
Description
Source Code
Launch App
Current Users
Created by:
Qwe1
// Settings cb.settings_choices = [ {name:'level_up_threshold', type:'int', minValue:1, maxValue:1000000, defaultValue:500, label: "Tokens for level step up" }, {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" }, ]; var vuvuParams = { level_up_threshold: parseInt(cb.settings.level_up_threshold), seconds_for_token: parseInt(cb.settings.seconds_for_token), max_level: 20, notice_period: parseInt(cb.settings.notice_period), }; // State description var vuvuState = { timeJar: 0, totalTributes: 0, messagesCount: 0, biggestTip: 0, biggestTipper: "", currentLevel: function() { var realLevel = 1 + Math.floor(this.totalTributes / vuvuParams.level_up_threshold) return Math.min(vuvuParams.max_level, realLevel); }, left4LevelUp: function() { var required = this.currentLevel() * vuvuParams.level_up_threshold; return required - this.totalTributes; }, isLastLevel: function() { return this.currentLevel() == vuvuParams.max_level; }, }; // Rules notificatior function vuvuNotificationMessage() { return "--- Every token adds " + vuvuParams.seconds_for_token + " second to time jar.\n" +"--- Device will work only when time jar is not empty.\n" +"--- New level unlocked every " + vuvuParams.level_up_threshold +" tokens (up to level " + vuvuParams.max_level + ").\n" +"--- Higher level means strongest vibrations."; } function vuvuRulesNotif() { cb.sendNotice(vuvuNotificationMessage(), '', '', '', 'bold'); } cb.onEnter(function(user){ cb.sendNotice(vuvuNotificationMessage(), user.user, '', '', 'bold'); }) cb.onMessage(function(message){ vuvuState.messagesCount++; if ((vuvuState.messagesCount % vuvuParams.notice_period) === 0) { vuvuRulesNotif(); } }) // Panel render cb.onDrawPanel(function(user) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Time Jar / Level :', 'row1_value': vuvuState.timeJar + 's / level ' + vuvuState.currentLevel(), 'row2_label': 'Highest Tip:', 'row2_value': (vuvuState.biggestTipper.length > 0 ? vuvuState.biggestTipper : '(no yet)'), 'row3_value': (vuvuState.isLastLevel() ? 'Highest level achieved!' : vuvuState.left4LevelUp() + ' tokens left for next level') };}) // 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"); } } cb.setTimeout(vuvuJarDecrementor, 1000) } // onTip handler cb.onTip(function(tip) { var prevLevel = vuvuState.currentLevel(); var amount = parseInt(tip.amount); var addedSeconds = amount * cb.settings.seconds_for_token; vuvuState.totalTributes += amount; vuvuState.timeJar += addedSeconds; var newLevel = vuvuState.currentLevel(); if (vuvuState.timeJar == addedSeconds) { cb.sendNotice("Vibrator turned ON", "", "#A9F5A9"); } cb.sendNotice("Thank you " + tip.from_user + "! I love you!", tip.from_user); var secondsStr = addedSeconds > 1 ? "seconds" : "second"; cb.sendNotice(addedSeconds + " " + secondsStr + " added to time jar."); if (prevLevel < newLevel) { cb.sendNotice("New level unlocked: " + newLevel + " of 20 :crazy"); } if (amount > vuvuState.biggestTip) { vuvuState.biggestTip = amount; vuvuState.biggestTipper = tip.from_user; cb.sendNotice(tip.from_user + " became a biggest tipper! Congratulations!"); } cb.drawPanel(); }) function vuvuInit() { vuvuRulesNotif(); cb.setTimeout(vuvuJarDecrementor, 1000) cb.drawPanel(); } vuvuInit();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.