Apps Home
|
Create an App
Tip Menu Advanced
Author:
gregory_handsome
Description
Source Code
Launch App
Current Users
Created by:
Gregory_Handsome
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 cashMenu = {}; // 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: 300, label: "Goal Description. Will automatically post in chat when Goal is reached (Optional)", required: false }, { name: 'highlight_tippers', type: 'choice', label: 'Highlight tippers messages in chat', choice1: 'Yes', choice2: 'No', defaultValue: 'No' }, { 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: 'chat_ad', type: 'int', minValue: 0, maxValue: 999, defaultValue: 10, label: 'Advertise Menu in Chat Every _____ Mins (Set 0 to Disable)' } ]; // Handlers cb.onEnter(function (user) { sendMenuMessage(user['user'], true); }); cb.onTip(function(tip) { var amount = tip['amount']; total_tips += amount; goal_tips += amount; if(cashMenu[amount] != undefined) { cb.chatNotice(cashMenu[amount]); } update_app(); last_tip = amount; last_tipper = tip['from_user']; if (amount > ht_amount) { ht_amount = amount; ht_username = tip['from_user']; } cb.drawPanel(); }); // Chat Commands cb.onMessage(function(msg) { if (cb.settings.highlight_tippers == 'Yes' && msg['user'] == ht_username) { msg['background'] = '#CCFF99'; } if (msg['m'] == '/menu') { sendMenuMessage(msg['user'], false) } if (msg['m'] == '/showmenu' && msg['user'] == cb.room_slug) { sendMenuMessage(); } return msg; }); // Display Panels cb.onDrawPanel(function(user) { if (cb.settings.goal === 0) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Tip Menu is 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 + ' tokens For "' + cb.settings.item1 + '"' }; } var hasGoal = cb.settings.goalAd != undefined && cb.settings.goalAd != '' && cb.settings.goalAd != null var totalTipsOpt = (cb.settings.reset === "Yes") ? '(' + total_tips + ')' : ''; if (hasGoal) { return { 'template': '3_rows_12_22_31', 'row1_label': 'Goal:', 'row1_value': cb.settings.goalAd, 'row2_label': 'Progress:', 'row2_value': goal_tips + '/' + cb.settings.goal + totalTipsOpt, 'row3_value': 'Tip Menu is Active! Type /menu to see it' } } return { 'template': '3_rows_12_22_31', 'row1_label': 'Goal progress:', 'row1_value': goal_tips + '/' + cb.settings.goal + totalTipsOpt, 'row2_label': 'Tip Menu is Active!', 'row2_value': 'Type /menu to see it', 'row3_value': 'Tip ' + cb.settings.price1 + ' tokens For "' + cb.settings.item1 + '"' } }); // Function Junction function sendMenuMessage(user, firstTime) { var finalMessage = (user != undefined && firstTime) ? ("Welcome here, " + user + ", take a look on my tip menu\n") : ""; finalMessage += '-----' + cb.room_slug + 's Tip Menu -----'; for (var price in cashMenu) { finalMessage += "\n" + cashMenu[price] + ' is for ' + price + 'tokens' } cb.sendNotice(finalMessage, user, '', '#0a5a83', 'bold'); } function update_app() { if (cb.settings.goal === 0) {} else if (goal_tips >= cb.settings.goal) { goal_reached(); } } 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 + 'tokens for "' + cb.settings.item1 + '" 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(); for(var i = 1; i <= 10; i++){ if (cb.settings['price' + i] !== undefined && cb.settings['price' + i] !== null) { cashMenu[cb.settings['price' + i]] = cb.settings['item'+i]; } } } init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.