Apps Home
|
Create an App
FreeMinutes
Author:
samupo
Description
Source Code
Launch App
Current Users
Created by:
Samupo
/********************************************************************************* Author: Samupo Title: FreeMinutes Description: A pay-per-view show where free minutes are granted to viewers when goals are reached Change Log: v1.0 - 2014-09-05: Initial release. **********************************************************************************/ var total_tips = 0; var remaining = {}; var free_minutes = 10 var tokens_per_minute = 9999; var tokens_per_free_minute = 999999; cb.settings_choices = [ {name:'free_minutes', type:'int', minValue:1, maxValue:99, defaultValue:10, label: "Free minutes (on start)"}, {name:'tokens_per_free_minute', type:'int', minValue:1, maxValue:1000000, defaultValue:500, label: "Amount of tokens needed to give a free minute to everyone"}, {name:'tokens_per_minute', type:'int', minValue:1, maxValue:1000, defaultValue:10, label: "Cost per minute"}, {name: 'subject', type: 'str', defaultValue:" ", minLength: 1, maxLength: 255, label: "Subject"} ]; var tickTime = 60000; function checkRemaining(user) { if (remaining[user] == 1) { cb.sendNotice('You only have 1 minute left', [user]); } if (remaining[user] > 0) { if (!cb.limitCam_userHasAccess(user)) { cb.sendNotice('You can enjoy the show for ' + remaining[user] + ' more minutes', [user]); cb.limitCam_addUsers([user]); } } else { if (cb.limitCam_userHasAccess(user)) { cb.sendNotice('You will have to wait or tip to continue enjoying the show', [user]); cb.limitCam_removeUsers([user]); } } } function addRemaining(user, a) { if (a < 0 && remaining[user] <= 0) return; remaining[user] += a; checkRemaining(user); } function getSubject() { return '#FreeMinutes [' + total_tips + '/' + tokens_per_free_minute +'] ' + free_minutes + ' mins of free show! Free minutes each goal: ' + tokens_per_free_minute + '. Cost: ' + tokens_per_minute +'tks/min. ' + cb.settings.subject; } function tick() { if (free_minutes > 0) { if (cb.limitCam_isRunning()) { cb.chatNotice('#FreeMinutes Camera is being shown to everyone'); cb.limitCam_stop(); } free_minutes--; cb.changeRoomSubject(getSubject()); } else { if (!cb.limitCam_isRunning()) { cb.chatNotice('#FreeMinutes No more free minutes for now'); cb.limitCam_start('#FreeMinutes Stay here for more free minutes!'); } addAll(-1); } cb.setTimeout(tick, tickTime); cb.drawPanel(); } function addAll(a) { for (var key in remaining) { if (remaining.hasOwnProperty(key)) { addRemaining(key, a); } } } cb.onTip(function (tip) { total_tips += parseInt(tip['amount']) if (total_tips >= tokens_per_free_minute) { var minutes = Math.floor(total_tips/tokens_per_free_minute); total_tips -= minutes * tokens_per_free_minute; if (minutes > 1) cb.chatNotice('Everyone gets ' + minutes + ' minutes free!'); else cb.chatNotice('Everyone gets one minute free!'); free_minutes += minutes; } cb.chatNotice('Free minute for everyone: ' + total_tips + '/' + tokens_per_free_minute); var mins = Math.floor(tip['amount']/tokens_per_minute); remaining[tip['from_user']] += mins; cb.sendNotice('You get ' + mins + ' minutes!' , [tip['from_user']]); cb.sendNotice('You have ' + remaining[tip['from_user']] + ' minutes left', [tip['from_user']]); cb.drawPanel(); cb.changeRoomSubject(getSubject()); }); cb.onEnter(function(user) { cb.log(user['user'] + 'entered'); cb.log(remaining.hasOwnProperty(user['user'])); if (!remaining.hasOwnProperty(user['user'])) { remaining[user['user']] = 1; } cb.sendNotice('Welcome ' + user['user'] + '!!', [user['user']]); var remain = remaining[user['user']]; if (remain > 0) { cb.sendNotice('You have ' + remain + ' free minutes for this show!', [user['user']]); } else { cb.sendNotice('You have no free minutes left for this show', [user['user']]); cb.sendNotice('Wait until someone tips enough', [user['user']]); cb.sendNotice('Or tip ' + tokens_per_minute + ' tokens to get a minute', [user['user']]); } }); cb.onDrawPanel(function(user) { var str0 = 'Free minutes: ' + free_minutes; var str1 = 'Free minute goal: ' + total_tips + '/' + tokens_per_free_minute; var str2 = 'Cost: ' + tokens_per_minute + ' tks/min'; return { 'template': '3_rows_11_21_31', 'row1_value': str0 , 'row2_value': str1, 'row3_value': str2 }; }); function start() { free_minutes = cb.settings.free_minutes; tokens_per_minute = cb.settings.tokens_per_minute; tokens_per_free_minute = cb.settings.tokens_per_free_minute; cb.setTimeout(tick, tickTime); cb.changeRoomSubject(getSubject()); cb.drawPanel(); } function logSlug(msg) { cb.sendNotice(msg, [cb.room_slug]); } cb.onMessage(function (msg) { var message = msg['m']; var user = msg['user']; var param = ""; if (cb.room_slug === user && message == '/start') { start(); } });
© Copyright Chaturbate 2011- 2026. All Rights Reserved.