Apps Home
|
Create an App
Auto-Reset Tip Goal Hecilior
Author:
hecilior
Description
Source Code
Launch App
Current Users
Created by:
Hecilior
// vars var times_goal_reached = 0; var last_time_goal_reached = null; var current_goal_tipped = 0; var last_goal = null; var set_tokens_command = '!settok'; var set_reached_command = '!setreached'; cb.settings_choices = [ {name: 'tokens', type: 'int', minValue: 1, default: 100}, {name: 'goal_number1', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description1', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number2', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description2', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number3', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description3', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number4', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description4', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number5', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description5', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number6', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description6', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number7', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description7', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number8', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description8', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'goal_number9', type: 'int', minValue: 0, default: 0, required: false}, {name: 'goal_description9', type: 'str', minLength: 1, maxLength: 255, required: false}, {name: 'after_goal_description', type: 'str', minLength: 1, maxLength: 255} ]; // handlers cb.onTip(function(tip) { current_goal_tipped += tip['amount'] if (current_goal_tipped >= cb.settings.tokens) { goalReached(tip['from_user']); } update_subject(); cb.drawPanel(); }); cb.onDrawPanel(function(user) { if (times_goal_reached == 0) { return { 'template': '3_rows_of_labels', 'row1_label': 'Received / Goal (Total):', 'row1_value': '' + current_goal_tipped + ' / ' + cb.settings.tokens + ' (' + ((times_goal_reached * cb.settings.tokens) + current_goal_tipped) + ')', 'row2_label': 'Hit Goal For:', 'row2_value': '' + times_goal_reached + ' times', 'row3_label': 'Last Reached:', 'row3_value': 'Never' }; } else { if (last_goal==null) { return { 'template': '3_rows_of_labels', 'row1_label': 'Received / Goal (Total):', 'row1_value': '' + current_goal_tipped + ' / ' + cb.settings.tokens + ' (' + ((times_goal_reached * cb.settings.tokens) + current_goal_tipped) + ')', 'row2_label': 'Hit Goal For:', 'row2_value': '' + times_goal_reached + ' times', 'row3_label': 'Last Reached:', 'row3_value': '' + Math.floor(((new Date()).getTime() - last_time_goal_reached.getTime()) / 60000) + ' minutes ago' }; } else { return { 'template': '3_rows_of_labels', 'row1_label': 'Received / Goal (Total):', 'row1_value': '' + current_goal_tipped + ' / ' + cb.settings.tokens + ' (' + ((times_goal_reached * cb.settings.tokens) + current_goal_tipped) + ')', 'row2_label': 'Hit Goal For:', 'row2_value': '' + times_goal_reached + ' times', 'row3_label': 'Last Goal:', 'row3_value': '' + last_goal }; } } }); cb.onMessage(function (msg) { 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']); } } } }); // Functions function refresh() { cb.log("Refresh called"); cb.setTimeout(refresh, 20000); cb.drawPanel(); } function update_subject() { var descr = ""; last_goal = null; if (cb.settings.goal_number1!=0 && times_goal_reached<cb.settings.goal_number1) descr += " At " + getNumberString(cb.settings.goal_number1) + " goal " + cb.settings.goal_description1; else if (cb.settings.goal_number1!=0 && times_goal_reached==cb.settings.goal_number1) last_goal = cb.settings.goal_description1 ; if (cb.settings.goal_number2!=0 && times_goal_reached<cb.settings.goal_number2) descr += " At " + getNumberString(cb.settings.goal_number2) + " goal " + cb.settings.goal_description2; else if (cb.settings.goal_number2!=0 && times_goal_reached==cb.settings.goal_number2) last_goal = cb.settings.goal_description2 ; if (cb.settings.goal_number3!=0 && times_goal_reached<cb.settings.goal_number3) descr += " At " + getNumberString(cb.settings.goal_number3) + " goal " + cb.settings.goal_description3; else if (cb.settings.goal_number3!=0 && times_goal_reached==cb.settings.goal_number3) last_goal = cb.settings.goal_description3 ; if (cb.settings.goal_number4!=0 && times_goal_reached<cb.settings.goal_number4) descr += " At " + getNumberString(cb.settings.goal_number4) + " goal " + cb.settings.goal_description4; else if (cb.settings.goal_number4!=0 && times_goal_reached==cb.settings.goal_number4) last_goal = cb.settings.goal_description4 ; if (cb.settings.goal_number5!=0 && times_goal_reached<cb.settings.goal_number5) descr += " At " + getNumberString(cb.settings.goal_number5) + " goal " + cb.settings.goal_description5; else if (cb.settings.goal_number5!=0 && times_goal_reached==cb.settings.goal_number5) last_goal = cb.settings.goal_description5 ; if (cb.settings.goal_number6!=0 && times_goal_reached<cb.settings.goal_number6) descr += " At " + getNumberString(cb.settings.goal_number6) + " goal " + cb.settings.goal_description6; else if (cb.settings.goal_number6!=0 && times_goal_reached==cb.settings.goal_number6) last_goal = cb.settings.goal_description6 ; if (cb.settings.goal_number7!=0 && times_goal_reached<cb.settings.goal_number7) descr += " At " + getNumberString(cb.settings.goal_number7) + " goal " + cb.settings.goal_description7; else if (cb.settings.goal_number7!=0 && times_goal_reached==cb.settings.goal_number7) last_goal = cb.settings.goal_description7 ; if (cb.settings.goal_number8!=0 && times_goal_reached<cb.settings.goal_number8) descr += " At " + getNumberString(cb.settings.goal_number8) + " goal " + cb.settings.goal_description8; else if (cb.settings.goal_number8!=0 && times_goal_reached==cb.settings.goal_number8) last_goal = cb.settings.goal_description8 ; if (cb.settings.goal_number9!=0 && times_goal_reached<cb.settings.goal_number9) descr += " At " + getNumberString(cb.settings.goal_number9) + " goal " + cb.settings.goal_description9; else if (cb.settings.goal_number9!=0 && times_goal_reached==cb.settings.goal_number9) last_goal = cb.settings.goal_description9 ; if (descr == "") descr = cb.settings.after_goal_description; var new_subject = descr + " [ To " + getNumberString(times_goal_reached+1) + " goal, " + 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!"); cb.chatNotice('The user ' + userName + ' has reached the goal.', cb.room_slug, "#FEF9CD", "#1A1AD7", "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);
© Copyright Chaturbate 2011- 2025. All Rights Reserved.