Apps Home
|
Create an App
Tip Menu & Goal 20 Plus
Author:
decadent_princess
Description
Source Code
Launch App
Current Users
Created by:
Decadent_Princess
// Tip Menu App by FayNight V.1.0 // 4-6-13 // To Do: Cosmetic: Properly 'undefine' menu variables for the listMenu array such that they do not display. Placeholders used until then // Updated by Bigstone5343 to V.2.0 // Made the tip menu only display defined tip value items on the listMenu. // Diplay goal in the panel below the broadcast screen. // Added toggle for high tipper highlighting. // Variables // Updated by Decadent_Princess by extenging number of items to 20 var total_tips = 0; var goal_tips = 0; var last_tipper = null; var last_tip = 0; var ht_username = null; var ht_amount = 0; var goal = 0; var toggle = true; var new_subject_command = '!status'; // Settings cb.settings_choices = [{ name: 'goal', type: 'int', minValue: 0, defaultValue: 100, label: "Goal Amount (Set to 0 to Disable)" }, { name: 'reset', type: 'choice', choice1: 'Yes', choice2: 'No', label: "Reset the Goal when it is Met?" }, { name: 'goalAd', type: 'str', minLength: 0, MaxLength: 100, label: "Goal Description. Will automatically post in chat when Goal is reached (Optional)", required: false }, { name: 'item1', type: 'str', minLength: 1, maxLength: 30, label: "Menu Item 1 (required)" }, { name: 'price1', type: 'int', minValue: 0, defaultValue: 10, label: "Item 1 Price (required)" }, { name: 'item2', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 2 (required)" }, { name: 'price2', type: 'int', minValue: 0, defaultValue: 20, label: "Item 2 Price (required)" }, { name: 'item3', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 3", required: false }, { name: 'price3', type: 'int', minValue: 0, label: "Item 3 Price", required: false }, { name: 'item4', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 4", required: false }, { name: 'price4', type: 'int', minValue: 0, label: "Item 4 Price", required: false }, { name: 'item5', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 5", required: false }, { name: 'price5', type: 'int', minValue: 0, label: "Item 5 Price", required: false }, { name: 'item6', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 6", required: false }, { name: 'price6', type: 'int', minValue: 0, label: "Item 6 Price", required: false }, { name: 'item7', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 7", required: false }, { name: 'price7', type: 'int', minValue: 0, label: "Item 7 Price", required: false }, { name: 'item8', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 8", required: false }, { name: 'price8', type: 'int', minValue: 0, label: "Item 8 Price", required: false }, { name: 'item9', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 9", required: false }, { name: 'price9', type: 'int', minValue: 0, label: "Item 9 Price", required: false }, { name: 'item10', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 10", required: false }, { name: 'price10', type: 'int', minValue: 0, label: "Item 10 Price", required: false }, { name: 'item11', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 11", required: false }, { name: 'price11', type: 'int', minValue: 0, label: "Item 11 Price", required: false }, { name: 'item12', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 12", required: false }, { name: 'price12', type: 'int', minValue: 0, label: "Item 12 Price", required: false }, { name: 'item13', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 13", required: false }, { name: 'price13', type: 'int', minValue: 0, label: "Item 13 Price", required: false }, { name: 'item14', type: 'str', minLength: 1, maxLength: 50, label: "Menu Item 14", required: false }, { name: 'price14', type: 'int', minValue: 0, label: "Item 14 Price", required: false }, { name: 'chat_ad', type: 'int', minValue: 0, maxValue: 999, defaultValue: 10, label: 'Advertise Menu in Chat Every _____ Mins (Set 0 to Disable)' }, { name: 'gender_allowed', label: '11.) USER GENDER ICON .............................. Show users gender in chat ?', type: 'choice', choice1: 'Yes', choice2: 'No (Skip to section 12)', defaultValue: 'Yes', required: false } ]; // Handlers cb.onTip(function(tip) { total_tips += tip['amount']; goal_tips += tip['amount']; if (tip['amount'] === cb.settings.price1) { cb.chatNotice(cb.settings.item1); } if (tip['amount'] === cb.settings.price2) { cb.chatNotice(cb.settings.item2); } if (tip['amount'] === cb.settings.price3) { cb.chatNotice(cb.settings.item3); } if (tip['amount'] === cb.settings.price4) { cb.chatNotice(cb.settings.item4); } if (tip['amount'] === cb.settings.price5) { cb.chatNotice(cb.settings.item5); } if (tip['amount'] === cb.settings.price6) { cb.chatNotice(cb.settings.item6); } if (tip['amount'] === cb.settings.price7) { cb.chatNotice(cb.settings.item7); } if (tip['amount'] === cb.settings.price8) { cb.chatNotice(cb.settings.item8); } if (tip['amount'] === cb.settings.price9) { cb.chatNotice(cb.settings.item9); } if (tip['amount'] === cb.settings.price10) { cb.chatNotice(cb.settings.item10); } if (tip['amount'] === cb.settings.price11) { cb.chatNotice(cb.settings.item11); } if (tip['amount'] === cb.settings.price12) { cb.chatNotice(cb.settings.item12); } if (tip['amount'] === cb.settings.price13) { cb.chatNotice(cb.settings.item13); } if (tip['amount'] === cb.settings.price14) { cb.chatNotice(cb.settings.item14); } update_app(); last_tip = tip['amount']; last_tipper = tip['from_user']; if (tip['amount'] > ht_amount) { ht_amount = tip['amount']; ht_username = tip['from_user']; } cb.drawPanel(); }); // Chat Commands cb.onMessage(function(msg) { if (msg['user'] == ht_username && toggle == true) { msg['background'] = '#CCFF99'; } else {msg['background'] = '#FFF'}; if (msg['m'] == '/menu') { cb.chatNotice('-----' + cb.room_slug + 's Tip Menu -----', msg['user']); for (var i = 0; i < listMenu.length; i++) { cb.chatNotice(listMenu[i], msg['user']); } } if (msg['m'] == '/showmenu' && msg['user'] == cb.room_slug) { cb.chatNotice('-----' + cb.room_slug + 's Tip Menu -----'); for (var i = 0; i < listMenu.length; i++) { cb.chatNotice(listMenu[i]); } } if (msg['m'] == '/removestripe') { cb.chatNotice('Remove Lime Green Stripe of Doom', msg['user']); { toggle = false; } } if (msg['m'] == '/addstripe') { cb.chatNotice('Add Lime Green Stripe of Doom', msg['user']); { toggle = true; } } if (startsWith(msg['m'], '/roomtitle')) { cb.changeRoomSubject(msg['m'].slice(11)) } if (cb.settings.gender_allowed == 'Yes') { var gender = msg['gender']; var genderStr = ''; switch (gender) { case 'm': genderStr = ':avatar_gen_male'; break; case 'f': genderStr = ':avatar_gen_female'; break; case 's': genderStr = ':avatar_gen_trans'; break; case 'c': genderStr = ':avatar_gen_couple'; break; default: genderStr = ':avatar_gen_unknown'; break; } msg['m'] = genderStr + ' ' + msg['m']; } return msg; }); // Display Panels cb.onDrawPanel(function(user) { if (cb.settings.goal === 0) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Tip Menu Active:', 'row1_value': 'Type /menu to see it.' , 'row2_label': 'Highest Tip:', 'row2_value': nullCheck(ht_username) + '(' + ht_amount + ')', 'row3_value': 'Tip ' + cb.settings.price1 + 'tks For "' + cb.settings.item1 + '"' }; } if (cb.settings.reset === "Yes") { return { 'template': '3_rows_12_22_31', 'row1_label': 'Tip Menu Active:', 'row1_value': 'Type /menu to see it.', 'row2_label': 'Goal:', 'row2_value': goal_tips + '/' + cb.settings.goal + '(' + total_tips + ')', 'row3_value': cb.settings.goalAd }; } else { return { 'template': '3_rows_12_22_31', 'row1_label': 'Tip Menu Active:', 'row1_value': 'Type /menu to see it.', 'row2_label': 'Goal:', 'row2_value': goal_tips + '/' + cb.settings.goal, 'row3_value': cb.settings.goalAd }; } }); // Makings of the Menu var menu1 = '' + cb.settings.item1 + ' For ' + cb.settings.price1 + 'tks '; var menu2 = '' + cb.settings.item2 + ' For ' + cb.settings.price2 + 'tks '; var menu3 = '--------'; var menu4 = '-------'; var menu5 = '------'; var menu6 = '-----'; var menu7 = '----'; var menu8 = '---'; var menu9 = '--'; var menu10 = '-'; if (cb.settings.price3 !== undefined) { menu3 = '' + cb.settings.item3 + ' For ' + cb.settings.price3 + 'tks '; } if (cb.settings.price4 !== undefined) { menu4 = '' + cb.settings.item4 + ' For ' + cb.settings.price4 + 'tks '; } if (cb.settings.price5 !== undefined) { menu5 = '' + cb.settings.item5 + ' For ' + cb.settings.price5 + 'tks '; } if (cb.settings.price6 !== undefined) { menu6 = '' + cb.settings.item6 + ' For ' + cb.settings.price6 + 'tks '; } if (cb.settings.price7 !== undefined) { menu7 = '' + cb.settings.item7 + ' For ' + cb.settings.price7 + 'tks '; } if (cb.settings.price8 !== undefined) { menu8 = '' + cb.settings.item8 + ' For ' + cb.settings.price8 + 'tks '; } if (cb.settings.price9 !== undefined) { menu9 = '' + cb.settings.item9 + ' For ' + cb.settings.price9 + 'tks '; } if (cb.settings.price10 !== undefined) { menu10 = '' + cb.settings.item10 + ' For ' + cb.settings.price10 + 'tks '; } if (cb.settings.price11 !== undefined) { menu11 = '' + cb.settings.item11 + ' For ' + cb.settings.price11 + 'tks '; } if (cb.settings.price12 !== undefined) { menu12 = '' + cb.settings.item12 + ' For ' + cb.settings.price12 + 'tks '; } if (cb.settings.price13 !== undefined) { menu13 = '' + cb.settings.item13 + ' For ' + cb.settings.price13 + 'tks '; } if (cb.settings.price14 !== undefined) { menu14 = '' + cb.settings.item14 + ' For ' + cb.settings.price14 + 'tks '; } var listMenu if (cb.settings.price3 == null) {listMenu = [menu1, menu2];} else if (cb.settings.price4 == null) {listMenu = [menu1, menu2, menu3];} else if (cb.settings.price5 == null) {listMenu = [menu1, menu2, menu3, menu4];} else if (cb.settings.price6 == null) {listMenu = [menu1, menu2, menu3, menu4, menu5];} else if (cb.settings.price7 == null) {listMenu = [menu1, menu2, menu3, menu4, menu5, menu6];} else if (cb.settings.price8 == null) {listMenu = [menu1, menu2, menu3, menu4, menu5, menu6, menu7];} else if (cb.settings.price9 == null) {listMenu = [menu1, menu2, menu3, menu4, menu5, menu6, menu7, menu8];} else if (cb.settings.price10 == null) {listMenu = [menu1, menu2, menu3, menu4, menu5, menu6, menu7, menu8, menu9];} else listMenu = [menu1, menu2, menu3, menu4, menu5, menu6, menu7, menu8, menu9, menu10]; // Function Junction function update_app() { if (cb.settings.goal === 0) {} else if (goal_tips >= cb.settings.goal) { goal_reached(); } } function startsWith(source, str) { return source.substring(0, str.length) === str; } function goal_reached() { if (tips_remaining() === 0) { if (cb.settings.reset === "Yes") { reset_goal(); } else; goal += 1; { if (goal <= 1) { cb.chatNotice("Goal Reached! " + cb.settings.goalAd); } } } } function reset_goal() { goal_tips -= cb.settings.goal; goal -= 1; } function tips_remaining() { var r = cb.settings.goal - goal_tips; if (r < 0) { return 0; } else { return r; } } function nullCheck(str) { if (str === null) { return "---"; } else return str.substring(0, 15); } function chatAd() { cb.chatNotice('Tip Menu Is Active! Tip ' + cb.settings.price1 + 'tks for "' + cb.settings.item1 + '", ' + cb.settings.price2 + ' tks for "' + cb.settings.item2 + '" or type /menu to see the full menu.'); cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000)); } if (cb.settings.chat_ad > 0) { cb.setTimeout(chatAd, (cb.settings.chat_ad * 60000)); } function init() { update_app(); } init(); // Thanks for checking out my code!
© Copyright Chaturbate 2011- 2026. All Rights Reserved.