Apps Home
|
My Uploads
|
Create an App
Shockspot Tip Control V2.0
Author:
shockspot_testbed1
Description
Source Code
Launch App
Current Users
Created by:
Shockspot_Testbed1
App Images
/********************************************************************************* Original Author: adambomb01 Modified for Isabella_xx by Tom_Strong Modified for Shockspot.net Shockspot Fucking Machine Thanks to adambomb01 for scripting Title: Keep It Going w/ Tip Multi Goal Description: Keep It Going, but also keep a multi goal happening at the same time... Obs: App used to c_eng to take a bse of new running script **********************************************************************************/ //Chaturbate API calls cb.settings_choices = [ {name:'room_subject', type: 'str', minLength: 1, maxLength: 255, label:'Room subject:'}, // {name:'get_it_going', type:'int', minValue:1, default:50, label:'Tip required to start Shockspot Machine:'}, {name:'reduce_tip_jar', type:'int', minValue:1, maxValue:60, default:10, label:'Reduce the tip jar every X seconds:'}, {name:'reduce_tips_by', type:'int', minValue:1, maxValue:20, default:1, label:'Amount to reduce tip jar by:'}, {name: 'goal_1_tokens', label: 'Speed 1 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 100}, {name: 'goal_1_speed_percent', label: 'Speed 1 Percent', type: 'int', minValue:0,maxValue:100, default:10}, {name: 'goal_1_description', label: 'Speed 1 Description', type: 'str', minLength: 1, maxLength: 255}, {name: 'goal_2_tokens', label: 'Speed 2 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 200, required: false}, {name: 'goal_2_speed_percent', label: 'Speed 2 Percent', type: 'int', minValue:0,maxValue:100, default:20}, {name: 'goal_2_description', label: 'Speed 2 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_3_tokens', label: 'Speed 3 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 300, required: false}, {name: 'goal_3_speed_percent', label: 'Speed 3 Percent', type: 'int', minValue:0,maxValue:100, default:30}, {name: 'goal_3_description', label: 'Speed 3 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_4_tokens', label: 'Speed 4 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 400, required: false}, {name: 'goal_4_speed_percent', label: 'Speed 4 Percent', type: 'int', minValue:0,maxValue:100, default:40}, {name: 'goal_4_description', label: 'Speed 4 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_5_tokens', label: 'Speed 5 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 500, required: false}, {name: 'goal_5_speed_percent', label: 'Speed 5 Percent', type: 'int', minValue:0,maxValue:100, default:50}, {name: 'goal_5_description', label: 'Speed 5 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_6_tokens', label: 'Speed 6 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 600, required: false}, {name: 'goal_6_speed_percent', label: 'Speed 6 Percent', type: 'int', minValue:0,maxValue:100, default:60}, {name: 'goal_6_description', label: 'Speed 6 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_7_tokens', label: 'Speed 7 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 700, required: false}, {name: 'goal_7_speed_percent', label: 'Speed 7 Percent', type: 'int', minValue:0,maxValue:100, default:70}, {name: 'goal_7_description', label: 'Speed 7 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_8_tokens', label: 'Speed 8 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 800, required: false}, {name: 'goal_8_speed_percent', label: 'Speed 8 Percent', type: 'int', minValue:0,maxValue:100, default:80}, {name: 'goal_8_description', label: 'Speed 8 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_9_tokens', label: 'Speed 9 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 900, required: false}, {name: 'goal_9_speed_percent', label: 'Speed 9 Percent', type: 'int', minValue:0,maxValue:100, default:9}, {name: 'goal_9_description', label: 'Speed 9 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'goal_10_tokens', label: 'Speed 10 Tip Jar Amount', type: 'int', minValue: 1, defaultValue: 1000, required: false}, {name: 'goal_10_speed_percent', label: 'Speed 10 Percent', type: 'int', minValue:0,maxValue:100, default:100}, {name: 'goal_10_description', label: 'Speed 10 Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'enable_final_goal_tokens', label: 'Enable Final Goal Token Amount', type: 'choice', choice1: 'yes', choice2: 'no', defaultValue: 'no'}, {name: 'final_goal_tokens', label: 'Final Goal Token Amount', type: 'int', minValue: 1, defaultValue: 2000, required: false}, {name: 'final_goal_description', label: 'Final Goal Description', type: 'str', minLength: 0, maxLength: 255, required: false}, {name: 'finality_message', label: 'Final Goal Met Subject', type: 'str', minLength: 1, maxLength: 255, defaultValue: 'OMG! You make me Cum! Thanks to all tippers!'}, ]; // vars var isItGoing = 0; //default 0 var startGoalMet = 1;//default 0 var tipJar = 0; var SpeedLevel = 0; var SpeedRange0 = 0; var SpeedRange1 = 0; var SpeedRange2 = 0; var SpeedRange3 = 0; var SpeedRange4 = 0; var SpeedRange5 = 0; var SpeedRange6 = 0; var SpeedRange7 = 0; var SpeedRange8 = 0; var SpeedRange9 = 0; var SpeedRange10 = 0; var totalTipped = 0; var currentTotalTipped = 0; var subject_is_final = false; var current_goal = 1; var final_goal_met = false; var showOrNot = ""; var startApp = new Date(); var startAt = cb.settings.get_it_going; var reduceTJ = cb.settings.reduce_tip_jar * 1000; var reduceBy = cb.settings.reduce_tips_by; var resumeShow = reduceBy; var bigTipper = "--"; var bigTip = 0; var bigTipLocation = -1; var topTipper = new Array(); var ttLength = 0; var roomSubject = cb.settings.room_subject; var multiGoalSubject = roomSubject + ' [Goal ' + current_goal + ': ' + getCurrentGoalDescription() + ' - ' + tips_remaining() + ' tk left] '; var keepItGoingSubject = '[Tip to change Shockspot Speed]'; //var keepItGoingSubject = '[Tip ' + startAt + ' to activate Shockspot]'; cb.setTimeout(checkJar, reduceTJ); cb.chatNotice("Type '/stats' to see statistics."); cb.chatNotice("Broadcasters and Mods: Type '/help' to see additional functions."); var enableFinalGoalMet = cb.settings.enable_final_goal_tokens || 'yes'; function checkJar() { if(isItGoing == 1) { if(tipJar>0) { tipJar=tipJar-reduceBy; if(tipJar<0) { resetApp(); } } else { resetApp(); } } cb.setTimeout(checkJar, reduceTJ); cb.drawPanel(); } function checkTip(u,t) { var exists = 0; var location = 0; for (i=0;i<topTipper.length;i++){ if(topTipper[i].username == u) { exists = 1; location = i; } } if (exists == 1) { topTipper[location].amount += t; } else { var tipper=new Object(); tipper.username=u; tipper.amount=t; topTipper[ttLength] = tipper; ttLength++; } for (i=0;i<topTipper.length;i++){ if(topTipper[i].amount > bigTip) { bigTip = topTipper[i].amount; bigTipLocation = i; } } bigTipper = topTipper[bigTipLocation].username + "(" + topTipper[bigTipLocation].amount + ")"; } function printTokens(x) { cb.chatNotice("*** Keep It Going - Tokens Earned by User ***",x); for (i=0;i<topTipper.length;i++) { cb.chatNotice(topTipper[i].username + " (" + topTipper[i].amount + ")",x); } cb.chatNotice("Total Tips: " + totalTipped,x); } function updateRoomSubject() { cb.changeRoomSubject(multiGoalSubject + ' ' + keepItGoingSubject); } function resetApp() { tipJar = 0; isItGoing = 0;//default 0 keepItGoingSubject = "[ Jar empty - Please Fuck me More ]"; updateRoomSubject(); } function chageTimer(x) { if (x == 'Faster') { if (reduceTJ > 1000) { reduceTJ -= 1000; } } else if (x=='Slower') { if (reduceTJ < 60000) { reduceTJ += 1000; } } else if (x=='Fastest') { reduceTJ = 1000; } else if (x=='Slowest') { reduceTJ = 60000; } else if (x=='Pause') { reduceBy=0; } else if (x=='Resume') { reduceBy=resumeShow; } } function printHelp(x) { var help = "*** Keep It Going App - Help ***\n"; help += "If 'Show Is On' is in the Keep It Going Status, start your show\n"; help += "If 'STOP SHOW!!' is in the Keep It Going Status, stop your show\n"; help += "You can control how quickly the Tip Jar empties:\n"; help += "Type '/faster' to speed up emptying the Tip Jar\n"; help += "Type '/slower' to slow down emptying the Tip Jar\n"; help += "Type '/fastest' to set emptying Tip Jar Rate to 1 sec\n"; help += "Type '/slowest' to set emptying Tip Jar Rate to 60 secs\n"; help += "Type '/resume' to resume Tip Jar emptying\n"; help += "Type '/pause' to pause Tip Jar emptying\n"; help += "Type '/tokens' to see the amount each tipper has tipped.\n"; help += "Type '/resetFGM' Reset the Final Goal Met status"; cb.chatNotice(help, x); } function printStats(x) { var running = ((new Date()).getTime() - startApp.getTime()) / 1000; var minutes = Math.round(running/60); var hours = Math.floor(minutes/60); minutes = minutes%60; var runningStr = hours + ' hrs. ' + minutes + ' mins.'; var stats = "*** Keep It Going App - Stats ***\n"; stats += "App Started At: " + startApp + "\n"; stats += "App Runtime: " + runningStr + "\n"; stats += "Total Tips: " + totalTipped + "\n"; stats += "Tip Jar Empty Rate: " + reduceTJ/1000 + " seconds\n"; stats += "Tip Jar Empty Quantity: " + reduceBy + " tokens\n"; stats += "Broadcaster's Show Status: " + showOrNot; cb.chatNotice(stats,x); } function getCurrentGoalDescription() { return cb.settings['goal_' + current_goal + '_description']; } function getCurrentGoalAmount() { return cb.settings['goal_' + current_goal + '_tokens']; } function checkFinality() { // var enableFinalGoalMet = cb.settings.enable_final_goal_tokens || 'yes'; // if (enableFinalGoalMet === 'yes'){ // finished = true; // cb.chatNotice('Round Over'); // if (randWord === 'Yes') { // cb.setTimeout(getWord, waitTime*1000); // } else { // cb.chatNotice('The game was lost set a new word with !word and then the word.', cb.room_slug); // } // } var finalGoalTokens=cb.settings['final_goal_tokens']; if (enableFinalGoalMet === 'yes'){ // if (getCurrentGoalAmount() <= 0 || getCurrentGoalDescription() === "" || current_goal === 10) { if (getCurrentGoalAmount() <= 0 || tipJar>=finalGoalTokens || current_goal === 999) { final_goal_met = true; } } } function tips_remaining() { // var r = getCurrentGoalAmount() - currentTotalTipped; var r = getCurrentGoalAmount() - tipJar; return (r < 0) ? 0 : r; } function format_username(val) { return (val === null) ? "--" : val.substring(0, 12); } function update_goals() { if (final_goal_met) { roomSubject = cb.settings.finality_message; multiGoalSubject = roomSubject; subject_is_final = true; } else { roomSubject = cb.settings.room_subject; subject_is_final = false; multiGoalSubject = roomSubject + ' [Goal ' + current_goal + ': ' + getCurrentGoalDescription() + ' - ' + tips_remaining() + ' tk left] '; } updateRoomSubject(); } cb.onDrawPanel(function(user) { var panel = {}; panel.template = '3_rows_of_labels'; if (final_goal_met) { panel.row3_label = 'Speed Goal ' + (current_goal-1) + ':'; panel.row3_value = 'FINAL GOAL MET'; } else { // panel.row3_label = 'Speed Goal ' + current_goal + ':'; // panel.row3_value = currentTotalTipped + ' / ' + getCurrentGoalAmount() + ' (' + tips_remaining() + ' to go)'; // panel.row3_value = tipJar + ' / ' + currentTipJarGoal; // + ' (' + tips_remaining() + ' to go)'; panel.row3_label = 'Speed Goal ' + current_goal + ':'; panel.row3_value = tipJar + ' / ' + cb.settings['goal_1_tokens'] + ' (' + cb.settings['goal_1_tokens'] + ' to go)'; } if (user == cb.room_slug) { if (isItGoing == 1) { showOrNot = "Show is On"; } else { showOrNot = "STOP SHOW!!"; } panel.row1_label ='Speed level : '; panel.row1_value = showOrNot; panel.row2_label = 'Tip Jar:'; panel.row2_value = tipJar; return panel; } else { //SpeedRange0 = cb.settings['goal_1_tokens']; //SpeedRange1 = SpeedRange0 + cb.settings['goal_2_tokens']; //SpeedRange2 = SpeedRange1 + cb.settings['goal_3_tokens']; //SpeedRange3 = SpeedRange2 + cb.settings['goal_4_tokens']; //SpeedRange4 = SpeedRange3 + cb.settings['goal_5_tokens']; //SpeedRange5 = SpeedRange4 + cb.settings['goal_6_tokens']; //SpeedRange6 = SpeedRange5 + cb.settings['goal_7_tokens']; //SpeedRange7 = SpeedRange6 + cb.settings['goal_8_tokens']; //SpeedRange8 = SpeedRange7 + cb.settings['goal_9_tokens']; //SpeedRange9 = SpeedRange8 + cb.settings['goal_10_tokens']; //SpeedRange10 = SpeedRange9; SpeedRange0 = 0; SpeedRange1 = cb.settings['goal_1_tokens']; SpeedRange2 = cb.settings['goal_2_tokens']; SpeedRange3 = cb.settings['goal_3_tokens']; SpeedRange4 = cb.settings['goal_4_tokens']; SpeedRange5 = cb.settings['goal_5_tokens']; SpeedRange6 = cb.settings['goal_6_tokens']; SpeedRange7 = cb.settings['goal_7_tokens']; SpeedRange8 = cb.settings['goal_8_tokens']; SpeedRange9 = cb.settings['goal_9_tokens']; SpeedRange10 = cb.settings['goal_10_tokens']; var currentTipJarGoal = 0 if (tipJar >= 0 && tipJar < SpeedRange1) { current_goal=1; currentTipJarGoal = SpeedRange0; SpeedLevel =0;} else if (tipJar >= SpeedRange1 && tipJar < SpeedRange2) { current_goal=2; currentTipJarGoal = SpeedRange1; SpeedLevel =cb.settings['goal_1_speed_percent'];} else if (tipJar >= SpeedRange2 && tipJar < SpeedRange3) { current_goal=3; currentTipJarGoal = SpeedRange2; SpeedLevel =cb.settings['goal_2_speed_percent'];} else if (tipJar >= SpeedRange2 && tipJar < SpeedRange4) { current_goal=4; currentTipJarGoal = SpeedRange3; SpeedLevel =cb.settings['goal_3_speed_percent'];} else if (tipJar >= SpeedRange3 && tipJar < SpeedRange5) { current_goal=5; currentTipJarGoal = SpeedRange4; SpeedLevel =cb.settings['goal_4_speed_percent'];} else if (tipJar >= SpeedRange4 && tipJar < SpeedRange6) { current_goal=6; currentTipJarGoal = SpeedRange5; SpeedLevel =cb.settings['goal_5_speed_percent'];} else if (tipJar >= SpeedRange5 && tipJar < SpeedRange7) { current_goal=7; currentTipJarGoal = SpeedRange6; SpeedLevel =cb.settings['goal_6_speed_percent'];} else if (tipJar >= SpeedRange6 && tipJar < SpeedRange8) { current_goal=8; currentTipJarGoal = SpeedRange7; SpeedLevel =cb.settings['goal_7_speed_percent'];} else if (tipJar >= SpeedRange7 && tipJar < SpeedRange9) { current_goal=9; currentTipJarGoal = SpeedRange8; SpeedLevel =cb.settings['goal_8_speed_percent'];} else if (tipJar >= SpeedRange8 && tipJar < SpeedRange10) { current_goal=10; currentTipJarGoal = SpeedRange9; SpeedLevel =cb.settings['goal_9_speed_percent'];} else if (tipJar >= SpeedRange9) { current_goal=999; SpeedLevel =cb.settings['goal_10_speed_percent'];} if(isItGoing == 1) { //panel.row1_label = 'Speed Level: ' + (current_goal-1) + ' Speed %: '; panel.row1_label = 'Speed % : ' + SpeedLevel ; panel.row1_value = SpeedLevel; panel.row2_label = 'Tip Jar:'; panel.row2_value = tipJar; var toGo = currentTipJarGoal-tipJar; if (current_goal==999){ panel.row3_label = 'At Max Goal :'; panel.row3_value = tipJar; } else { panel.row3_label = 'Speed Goal ' + current_goal + ':'; panel.row3_value = tipJar + ' / ' + currentTipJarGoal + ' (' + toGo + ' to go)'; } if (final_goal_met) { panel.row3_label = 'Speed Goal ' + (current_goal) + ':'; panel.row3_value = 'FINAL GOAL MET';} else { // panel.row3_label = 'Speed Goal ' + current_goal + ':'; // panel.row3_value = tipJar + ' / ' + currentTipJarGoal + ' (' + toGo + ' to go)'; if (current_goal==999){ panel.row3_label = 'At Max Goal :'; panel.row3_value = 'Max Value: ' + SpeedRange10; } else { panel.row3_label = 'Speed Goal ' + current_goal + ':'; panel.row3_value = tipJar + ' / ' + currentTipJarGoal + ' (' + toGo + ' to go)'; } } return panel; } else if (isItGoing == 0 && startGoalMet == 1) { var toGo = startAt - tipJar; // panel.row1_label = 'Speed Level: ' + (current_goal-1) + ' Speed %: '; panel.row1_label = 'Speed % : ' + SpeedLevel ; panel.row1_value = SpeedLevel; panel.row2_label = 'Tip Jar:'; panel.row2_value = tipJar; return panel; } else { var toGo = startAt - tipJar; // panel.row1_label = 'Speed Level: ' + (current_goal-1) + ' Speed %: '; panel.row1_label = 'Speed % : ' + SpeedLevel ; panel.row1_value = SpeedLevel; panel.row2_label = 'Still Need:'; panel.row2_value = toGo + ' tokens to change Shockspot speed'; return panel; } } }); cb.onTip(function (tip) { tipJar += parseInt(tip['amount']); totalTipped += parseInt(tip['amount']); currentTotalTipped += parseInt(tip['amount']); if(isItGoing == 0 && startGoalMet ==0) { if(tipJar >= startAt) { isItGoing = 1; startGoalMet = 1; keepItGoingSubject = '[ Fuck me More - Don\'t Let the Tip Jar Empty ]'; } else { // keepItGoingSubject = '[Tip ' + (startAt-totalTipped) + ' to activate Shockspot]'; } } else if (isItGoing == 0 && startGoalMet == 1){ isItGoing = 1; startGoalMet = 1; keepItGoingSubject = '[ Keep Me Wet - Don\'t Let the Tip Jar Empty ]'; } checkTip(tip['from_user'],tip['amount']); while (currentTotalTipped >= getCurrentGoalAmount()) { currentTotalTipped = currentTotalTipped - getCurrentGoalAmount(); current_goal++; checkFinality(); } update_goals(); cb.drawPanel(); }); cb.onMessage(function (msg) { if (msg['m'] == '/faster' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; chageTimer("Faster"); } else if (msg['m'] == '/fastest' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; chageTimer("Fastest"); } else if (msg['m'] == '/slower' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; chageTimer("Slower"); } else if (msg['m'] == '/slowest' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; chageTimer("Slowest"); } else if (msg['m'] == '/pause' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; chageTimer("Pause"); } else if (msg['m'] == '/resume' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; chageTimer("Resume"); } else if (msg['m'] == '/help' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; printHelp(msg['user']); } else if (msg['m'] == '/resetFGM' && (msg['user'] == cb.room_slug || msg['is_mod'])) { msg['X-Spam'] = true; cb.chatNotice("Reset Final Goal Met Status to 'Final Goal Not Met'"); final_goal_met = false; } else if (msg['m'] == '/stats') { msg['X-Spam'] = true; printStats(msg['user']); } else if (msg['m'] == '/tokens') { msg['X-Spam'] = true; printTokens(msg['user']); } else if (bigTipLocation >= 0) { if (msg['user'] == topTipper[bigTipLocation].username) { msg['background'] = '#ccff00'; } else if(msg['m'] == '/Debug' &&(msg['user'] == cbg.room_slug || msg['is_mod'])){ cb.notice('I want to programa those shit\n', msg['user']); } } return msg; }); function init() { update_goals(); } init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.