Apps Home
|
Create an App
tmp001
Author:
x5s477test
Description
Source Code
Launch App
Current Users
Created by:
X5s477test
var HEART = '\u2665'; // ? BDIAMOND = '\u2666'; // ? BSTAR = '\u2605'; // ? var chatAdTime; var sepChar = "\n "; var msg = 'Tip Menu: \n '; var msgArray = []; var msgPart1 = 'Tip Menu Part 1: \n'; var msgPart2 = 'Tip Menu Part 2: \n'; var msgToken = 1; var maxSep = 9; var maxItems = 24; var tipMenuPrice = []; var tipMenuItem = []; var tipsitemMenu = []; var msgArray1 = []; var msgArray2 = []; var initToken = true; var noticeColor; var splitColor; var menuLength; var tipsitem1 = 0; var tipsitem2 = 0; var tipsitem3 = 0; var tipsitem4 = 0; var tipsitem5 = 0; var tipsitem6 = 0; var tipsitem7 = 0; var tipsitem8 = 0; var tipsitem9 = 0; var tipsitem10 = 0; var tipsitem11 = 0; var tipsitem12 = 0; var tipsitem13 = 0; var tipsitem14 = 0; var tipsitem15 = 0; var tipsitem16 = 0; var tipsitem17 = 0; var tipsitem18 = 0; var tipsitem19 = 0; var tipsitem20 = 0; var tipsitem21 = 0; var tipsitem22 = 0; var tipsitem23 = 0; var tipsitem24 = 0; var TipNoteArray = new Array; var numTipNote = 0; separators = [{ label: 'Hearts', shortcut: ':heart2 \n' }, { label: 'Glitter', shortcut: ':pixelglitter \n' }, { label: 'Flowers', shortcut: ':tinyflower2 \n' }, { label: 'Bow', shortcut: ':bluebow \n' }, { label: 'Hearts2', shortcut: ':pixelheart \n' }, { label: 'Smiley', shortcut: ':smile \n' }, { label: 'Text Heart', shortcut: HEART }, { label: 'Text Diamond', shortcut: BDIAMOND }, { label: 'Text Star', shortcut: BSTAR }, ] cb.settings_choices = [{ name: 'sepchar', type: 'choice', choice1: 'Vertical Bar', choice2: 'Hearts', choice3: 'Glitter', choice4: 'Flowers', choice5: 'Bow', choice6: 'Hearts2', choice7: 'Smiley', choice8: 'Text Heart', choice9: 'Text Diamond', choice10: 'Text Star', defaultValue: 'Vertical Bar', label: "Separator character" }, { name: 'noticecolor', type: 'str', label: 'Notice color (default red...ish #F10060)', defaultValue: '#F10060' }, { name: 'chatAd', type: 'str', defaultValue: 3, label: 'How often the menu (or each part) will appear in chat. Can do fractions, e.g. 2.5 = two minutes 30 seconds.' }, { name: 'chatNotice', type: 'choice', choice1: 'Display the full menu', choice2: 'Only display the short notice', defaultValue: 'Display the full menu', label: "Do you want the notice to display the full menu or only the short notice ( ei: Type '/tipmenu' to see the menu)" }, { name: 'listSort', type: 'choice', choice1: 'Do not sort the list', choice2: 'Ascending', choice3: 'Descending', defaultValue: 'Do not sort the list', label: "Do you want the list to be sorted by price?" }, { name: 'listSplit', type: 'choice', choice1: 'Do not split the list', choice2: 'Split the list in 2', defaultValue: 'Do not split the list', label: "If you have a very long list, Do you want the list to be split in 2?" }, { name: 'splitcolor', type: 'str', required: false, label: 'if you want a different color with the split menu', defaultValue: '#F10060' }, { name: 'enableTipNotes', type: 'str', label: 'enable TipNotes (yes/no)' }, { name: 'item1', type: 'str', label: 'Item 1' }, { name: 'itemprice1', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, label: 'Item 1 price' }, { name: 'item2', type: 'str', required: false, label: 'Item 2' }, { name: 'itemprice2', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 2 price' }, { name: 'item3', type: 'str', required: false, label: 'Item 3' }, { name: 'itemprice3', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 3 price' }, { name: 'item4', type: 'str', required: false, label: 'Item 4' }, { name: 'itemprice4', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 4 price' }, { name: 'item5', type: 'str', required: false, label: 'Item 5' }, { name: 'itemprice5', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 5 price' }, { name: 'item6', type: 'str', required: false, label: 'Item 6' }, { name: 'itemprice6', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 6 price' }, { name: 'item7', type: 'str', required: false, label: 'Item 7' }, { name: 'itemprice7', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 7 price' }, { name: 'item8', type: 'str', required: false, label: 'Item 8' }, { name: 'itemprice8', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 8 price' }, { name: 'item9', type: 'str', required: false, label: 'Item 9' }, { name: 'itemprice9', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 9 price' }, { name: 'item10', type: 'str', required: false, label: 'Item 10' }, { name: 'itemprice10', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 10 price' }, { name: 'item11', type: 'str', required: false, label: 'Item 11' }, { name: 'itemprice11', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 11 price' }, { name: 'item12', type: 'str', required: false, label: 'Item 12' }, { name: 'itemprice12', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 12 price' }, { name: 'item13', type: 'str', required: false, label: 'Item 13' }, { name: 'itemprice13', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 13 price' }, { name: 'item14', type: 'str', required: false, label: 'Item 14' }, { name: 'itemprice14', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 14 price' }, { name: 'item15', type: 'str', required: false, label: 'Item 15' }, { name: 'itemprice15', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 15 price' }, { name: 'item16', type: 'str', required: false, label: 'Item 16' }, { name: 'itemprice16', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 16 price' }, { name: 'item17', type: 'str', required: false, label: 'Item 17' }, { name: 'itemprice17', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 17 price' }, { name: 'item18', type: 'str', required: false, label: 'Item 18' }, { name: 'itemprice18', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 18 price' }, { name: 'item19', type: 'str', required: false, label: 'Item 19' }, { name: 'itemprice19', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 19 price' }, { name: 'item20', type: 'str', required: false, label: 'Item 20' }, { name: 'itemprice20', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 20 price' }, { name: 'item21', type: 'str', required: false, label: 'Item 21' }, { name: 'itemprice21', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 21 price' }, { name: 'item22', type: 'str', required: false, label: 'Item 22' }, { name: 'itemprice22', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 22 price' }, { name: 'item23', type: 'str', required: false, label: 'Item 23' }, { name: 'itemprice23', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 23 price' }, { name: 'item24', type: 'str', required: false, label: 'Item 24' }, { name: 'itemprice24', type: 'int', minValue: 0, maxValue: 99999, defaultValue: 0, required: false, label: 'Item 24 price' }, ]; function chatAd() { if (cb.settings.chatNotice == 'Only display the short notice' && !initToken) { cb.sendNotice('Tip menu is active. To see the full tip menu type: /tipmenu', '', '', noticeColor, 'bold'); } else if (msgPart1 != 'Tip Menu Part 1: \n' && !initToken) { if (msgToken == 1) { cb.sendNotice(msgPart1, '', '', noticeColor, 'bold'); msgToken = 2; } else if (msgToken == 2) { cb.sendNotice(msgPart2, '', '', splitColor, 'bold'); msgToken = 1; } } else if (msg != 'Tip Menu: ') { cb.sendNotice(msg, '', '', noticeColor, 'bold'); if (initToken) { initToken = false; } } cb.setTimeout(chatAd, chatAdTime); } function chatAdTimer(){ var timer = parseFloat(cb.settings.chatAd); if (timer < 1){ cb.sendNotice("Tip Menu - Time lapse is to short. Using default value.", cb.room_slug, "#FFFFFF", "#FF0000", 'bold'); timer = 3; } timer *= 60000; timer = parseInt(timer); chatAdTime = timer; } function checkColor(color) { if (/^#[0-9A-F]{6}$/i.test(cb.settings[color])) { return( cb.settings[color]); } else if (/^[0-9A-F]{6}$/i.test(cb.settings[color])) { return ('#' + cb.settings[color]); } else { cb.sendNotice("Tip Menu - Error while setting the color. Using default value.", cb.room_slug, "#FFFFFF", "#FF0000", 'bold'); return('#F10060'); } } function init() { noticeColor = checkColor('noticecolor'); splitColor = checkColor('splitcolor'); chatAdTimer(); for (i = 0; i <= maxSep - 1; i++) { if (cb.settings['sepchar'] == separators[i].label) { sepChar = separators[i].shortcut + ' '; } } for (i = 0; i <= maxItems; i++) { if (cb.settings['item' + i] !== '') { if (cb.settings['itemprice' + i] > 0) { if(cbjs.arrayContains(tipMenuPrice, cb.settings['itemprice' + i])){ cb.sendNotice("Tip Menu - "+cb.settings['itemprice' + i]+" is already on the menu. It is recommanded to have a different price for each item.", cb.room_slug, "#FFFFFF", "#FF0000"); } tipMenuPrice.push(cb.settings['itemprice' + i]); tipMenuItem.push(cb.settings['item' + i]); } } } /* if (cb.settings.item1 !== '') tipsitemMenu[0]=tipsitem1; if (cb.settings.item2 !== '') tipsitemMenu[1]=tipsitem2; if (cb.settings.item3 !== '') tipsitemMenu[2]=tipsitem3; if (cb.settings.item4 !== '') tipsitemMenu[3]=tipsitem4; if (cb.settings.item5 !== '') tipsitemMenu[4]=tipsitem5; if (cb.settings.item6 !== '') tipsitemMenu[5]=tipsitem6; if (cb.settings.item7 !== '') tipsitemMenu[6]=tipsitem7; if (cb.settings.item8 !== '') tipsitemMenu[7]=tipsitem8; if (cb.settings.item9 !== '') tipsitemMenu[8]=tipsitem9; if (cb.settings.item10 !== '') tipsitemMenu[9]=tipsitem10; if (cb.settings.item11 !== '') tipsitemMenu[10]=tipsitem11; if (cb.settings.item12 !== '') tipsitemMenu[11]=tipsitem12; if (cb.settings.item13 !== '') tipsitemMenu[12]=tipsitem13; if (cb.settings.item14 !== '') tipsitemMenu[13]=tipsitem14; if (cb.settings.item15 !== '') tipsitemMenu[14]=tipsitem15; if (cb.settings.item16 !== '') tipsitemMenu[15]=tipsitem16; if (cb.settings.item17 !== '') tipsitemMenu[16]=tipsitem17; if (cb.settings.item18 !== '') tipsitemMenu[17]=tipsitem18; if (cb.settings.item19 !== '') tipsitemMenu[18]=tipsitem19; if (cb.settings.item20 !== '') tipsitemMenu[19]=tipsitem20; if (cb.settings.item21 !== '') tipsitemMenu[20]=tipsitem21; if (cb.settings.item22 !== '') tipsitemMenu[21]=tipsitem22; if (cb.settings.item23 !== '') tipsitemMenu[22]=tipsitem23; if (cb.settings.item24 !== '') tipsitemMenu[23]=tipsitem24; */ for (i=0;i<25; i++) tipsitemMenu[i]=0; var sorted = []; for (j = 0; j < tipMenuPrice.length; j++) { sorted.push({ "prices": tipMenuPrice[j], "id": j }); } if (cb.settings.listSort !== 'Do not sort the list') { sorted.sort(function(a, b) { if (cb.settings.listSort == 'Ascending') { return a.prices - b.prices; } if (cb.settings.listSort == 'Descending') { return b.prices - a.prices; } }); } for (i = 0; i < sorted.length; i++) { msgArray.push(tipMenuItem[sorted[i]["id"]] + '(' + tipsitemMenu[sorted[i]["id"]] + '/' + tipMenuPrice[sorted[i]["id"]] + ') '); } msg += msgArray.join(sepChar); if (cb.settings.listSplit == 'Split the list in 2'){ if ( msgArray.length < 8) { cb.sendNotice("Tip Menu - Error - The menu has less than 8 items, it will not be split.", cb.room_slug, "#FFFFFF", "#FF0000", 'bold'); } else{ var msglength1 = 0; var msgHalf = (msg.length - 9) / 2; for (i = 0; i < sorted.length; i++) { if (msglength1 < msgHalf) { msgArray1.push(tipMenuItem[sorted[i]["id"]] + '(' + tipMenuPrice[sorted[i]["id"]] + ') '); msglength1 = msgArray1.join(sepChar).length } else { msgArray2.push(tipMenuItem[sorted[i]["id"]] + '(' + tipMenuPrice[sorted[i]["id"]] + ') '); } } msgPart1 += msgArray1.join(sepChar) + '\n To see the full menu type /tipmenu.'; msgPart2 += msgArray2.join(sepChar) + '\n To see the full menu type /tipmenu.'; } } menuLength = tipMenuPrice.length; if (msg != 'Tip Menu: ') { chatAd(); } else { cb.sendNotice('Error - No menu items found', '', '', noticeColor, 'bold'); } } cb.tipOptions( function(user) { if (findTipNote(user) == -1) { var options = [{label: 'Because I like her'}, {label: 'Because I like him'}]; for (var i=0; i < 24; i++) { if (cb.settings['item' + i]) { options.push({label:""+cb.settings['item' + i]+" (" + cb.settings['itemprice' + i] + " Tks)"}); } } return {options:options, label:"Tip menu:"}; } else { return; } } ); cb.onTip(function(tip) { var tipAmt = parseInt(tip['amount']); for (i=0; i<25; i++) if (tip.message === cb.settings['item' + i]){ tipsitemMenu[i-1] += tipAmt; if (cb.settings['item' + i]) if (tipsitemMenu[i-1] >= cb.settings['itemprice' + i]) {cb.sendNotice(tip['from_user'] + ' reached the goal for ' + cb.settings['item' + i], '', '', noticeColor, 'bold'); tipsitemMenu[i-1] = 0;} else cb.sendNotice(tip['from_user'] + ' tipped for ' + cb.settings['item' + i] + ', ' + eval (cb.settings['itemprice' + i] - tipsitemMenu [i-1]) + ' left', '', '', noticeColor, 'bold'); } var sorted = []; for (j = 0; j < tipMenuPrice.length; j++) { sorted.push({ "prices": tipMenuPrice[j], "id": j }); } if (cb.settings.listSort !== 'Do not sort the list') { sorted.sort(function(a, b) { if (cb.settings.listSort == 'Ascending') { return a.prices - b.prices; } if (cb.settings.listSort == 'Descending') { return b.prices - a.prices; } }); } msgArray=[]; for (i = 0; i < sorted.length; i++) { msgArray.push(tipMenuItem[sorted[i]["id"]] + '(' + tipsitemMenu[sorted[i]["id"]] + '/' + tipMenuPrice[sorted[i]["id"]] + ') '); } msg = []; msg = msgArray.join(sepChar); cb.drawPanel(); } ); cb.onMessage(function(m) { var u = m['user']; var message = m['m'].split(" "); var isMod = (cb.room_slug == u || m['is_mod']); switch(message[0]) { case '/tipnote': { if (cb.settings.enableTipNotes != 'yes') { break; } TipNoteArrayPopulate(u); break; } case '/tipnoteoff': { if (cb.settings.enableTipNotes != 'yes') { break; } TipNoteArrayUnPopulate(u); break; } } if (message['0'] == '/tipmenu' || message['0'] == '/menu' || message['0'] == '/tipnote') { m['X-Spam'] = true; m['background'] = '#d9d9d9'; if (isMod) { u = ''; } cb.chatNotice(msg, u, '', noticeColor, 'bold'); return m; } }); function TipNoteArrayPopulate(user) { if(cbjs.arrayContains(TipNoteArray,user)) { //exists } else { TipNoteArray[numTipNote] = user; numTipNote++; } } function TipNoteArrayUnPopulate(user) { if(cbjs.arrayContains(TipNoteArray,user)) { cbjs.arrayRemove(TipNoteArray,user); } } function findTipNote(user) { //find the index of the user if(cbjs.arrayContains(TipNoteArray,user)) { return 1; } else { return -1; } } cb.onEnter(function(user) { cb.sendNotice('MiniGoals is Active! People can now tip collectively for items on the tip menu. When sending tips pick an item from the drop down list and they will add up to reach the price of respective item. See the full menu at anytime by typing /tipmenu.', user['user'], '', noticeColor, 'bold'); }); init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.