Apps Home
|
Create an App
an pluss
Author:
papapa2
Description
Source Code
Launch App
Current Users
Created by:
Papapa2
/** * App: Roll The Dice + Tip Goal (and a little bit of Auto-Reset Tip Goal) * Version: 1.0 * Author: Jhonhanar * Author: zingknaat & Admin (& Biron) * Date: 2017-16-11 */ cb.settings_choices = [ {name: 'goal', type: 'int', minValue: 1, default: 100}, {name: 'goal_description', type: 'str', minLength: 1, maxLength: 255}, { name: 'tags', label: 'Hashtags (appended after the goal and token counter to the room subject)', type: 'str', default: '#dildo #cum #squirt #lovense #lush #anal #finger #pvt #c2c #tits #teen #18 #feet #pantyhose', required: false}, { name: 'tokens', type: 'int', minValue: 1, maxValue: 100, label: 'How much do you want to charge per roll?', defaultValue: 25 }, { name: 'remove_winning_prize', type: 'choice', label: 'Remove prize from list after each roll?', choice1: 'Yes', choice2: 'No', defaultValue: 'No' }, { name: 'minimum_rolls', type: 'choice', label: 'What is the minimum number of rolls before the rare dice can appear? (Keep this a secret!)', choice1: 10, choice2: 15, choice3: 20, choice4: 25, choice5: 30, choice6: 35, choice7: 40, choice8: 45, choice9: 50, defaultValue: 10 }, { name: 'notice_wait_time', type: 'choice', label: 'In minutes, how often should the app advertise itself?', choice1: 5, choice2: 10, choice3: 15, choice4: 20, choice5: 25, choice6: 30, choice7: 45, choice8: 60, defaultValue: 10 }, {name: 'prize_1', type: 'str', label: 'Prize for rolling 1'}, {name: 'prize_2', type: 'str', label: 'Prize for rolling 2'}, {name: 'prize_3', type: 'str', label: 'Prize for rolling 3'}, {name: 'prize_4', type: 'str', label: 'Prize for rolling 4'}, {name: 'prize_5', type: 'str', label: 'Prize for rolling 5'}, {name: 'prize_6', type: 'str', label: 'Prize for rolling 6'}, {name: 'prize_7', type: 'str', label: 'Prize for rolling 7'}, {name: 'prize_8', type: 'str', label: 'Prize for rolling 8'}, {name: 'prize_9', type: 'str', label: 'Prize for rolling 9'}, {name: 'prize_10', type: 'str', label: 'Prize for rolling 10'}, {name: 'prize_11', type: 'str', label: 'Prize for rolling 11'}, {name: 'prize_12', type: 'str', label: 'Prize for rolling 12'}, { name: 'prize_13', type: 'str', default: 'oil clit', label: 'Prize for rolling 13 (Level 2)' }, { name: 'prize_14', type: 'str', default: 'naked', label: 'Prize for rolling 14 (Level 2)' }, { name: 'prize_15', type: 'str', default: 'finger pussy', label: 'Prize for rolling 15 (Level 3' }, { name: 'prize_16', type: 'str', default: 'finger ass', label: 'Prize for rolling 16 (Level 3)' }, { name: 'prize_17', type: 'str', default: 'dildo in pussy', label: 'Prize for rolling 17 (Level 4)' }, { name: 'prize_18', type: 'str', default: 'pvt 6tks/min', label: 'Prize for rolling 18 (Level 4)' }, { name: 'prize_19', type: 'str', default: 'control my lovense', label: 'Prize for rolling 19 (Level 5)' }, { name: 'prize_20', type: 'str', default: 'whatsapp', label: 'Prize for rolling 20 (Level 5)' }, { name: 'prize_21', type: 'str', default: 'dildo in ass', label: 'Prize for rolling 21 (Level 6 - Very RARE)' } ]; var langTokens = (cb.settings.tokens > 1) ? 'tokens' : 'token'; var numberOfSides = 6; var lastRoller = '--'; var lastPrizeWon = '--'; var rollCounter = 0; var tipCounter = 0; var winners = []; var prizes = []; var minimumRollsToGetRareDice = parseInt(cb.settings.minimum_rolls); var maxOutcome = 21; var dieImagePrefix = ':bluedie'; var a; var total_tipped = 0; var high_tip_username = null; var high_tip_amount = 0; var last_tip_username = null; var last_tip_amount = 0; var subject_is_set_with_0 = false; var goalCounter=1; var tipperArray = new Array; var numTippers = 0; var level=1; var nextlevel=50; function tipperArrayPopulate(user) { tipperArray[numTippers] = new Array; tipperArray[numTippers][0] = user; tipperArray[numTippers][1] = 0; numTippers++; } function findTipper(user) { //find the index of the user for(var i = 0; i < tipperArray.length; i++) { if(tipperArray[i][0] == user) { break; } } //the user is not in the array. add him and call findTipper if(i == tipperArray.length) { tipperArrayPopulate(user); findTipper(user); } return i; } function setTipTitles(user, message){ var m = '|' + tipperArray[findTipper(user)][1] + '/'+nextlevel+' level ' +level+'| ' + message; return m; } cb.onTip(function (tip) { tipperArray[findTipper(tip['from_user'])][1] +=0; a=parseInt(tip['amount']); tipCounter += parseInt(tip['amount']); total_tipped += parseInt(tip['amount']); if (total_tipped > cb.settings.goal) { total_tipped -= cb.settings.goal; goalCounter++; } update_subject(); last_tip_amount = tip['amount'] last_tip_username = tip['from_user'] if (tip['amount'] > high_tip_amount) { high_tip_amount = tip['amount'] high_tip_username = tip['from_user'] } if (parseInt(tip['amount']) >= cb.settings.tokens) { var numberOfRolls = Math.floor(parseInt(tip['amount']) / cb.settings.tokens); for (var i = 0; i < numberOfRolls; i++) { lastRoller = tip['from_user']; roll(tip['from_user']); } } else { cb.drawPanel(); } }); cb.onDrawPanel(function (user) { if(a>=cb.settings.tokens){ return { 'template': '3_rows_12_22_31', 'row1_label': 'Last prize won:', 'row1_value': lastPrizeWon, 'row1_label': 'Last prize won:', 'row1_value': lastPrizeWon, 'row2_label': 'Last player:', 'row2_value': lastRoller, 'row3_value': tipCounter + ' ' + langTokens + ' received / rolled ' + rollCounter + ' time(s)' }; } else { return { 'template': '3_rows_of_labels', 'row1_label': 'Tip Received / Goal #' + goalCounter, 'row1_value': '' + total_tipped + ' / ' + cb.settings.goal, 'row2_label': 'Highest Tip:', 'row2_value': format_username(high_tip_username) + ' (' + high_tip_amount + ')', 'row3_label': 'Latest Tip Received:', 'row3_value': format_username(last_tip_username) + ' (' + last_tip_amount + ')' }; } }); cb.onEnter(function (user) { showAppAd(user['user']); }); cb.onMessage(function (msg) { if (msg['m'].match(/\/winners/i)) { msg['X-Spam'] = true; showPrizesWon(msg['user']); } else if (msg['m'].match(/\/prizes/i)) { msg['X-Spam'] = true; if (msg['m'].match(/all/i) && ((msg['is_mod'] == true) || (msg['user'] == cb.room_slug))) { showPrizes(); } else { showPrizes(msg['user']); } } if(parseInt(tipperArray[findTipper(msg['user'])][1]) > 0){ msg['m'] = setTipTitles(msg['user'],msg['m']); } return msg; }); function roll(username) { rollCounter++; var bonuslevel=0; var die1 = Math.floor(Math.random() * numberOfSides+1); var die2 = Math.floor(Math.random() * numberOfSides+1); // convoluted logic to appease the dev gods on cb var randomNum = Math.ceil(Math.random() * (100 - minimumRollsToGetRareDice) + minimumRollsToGetRareDice); if (rollCounter == randomNum) { if ((die1 == 1) && (die2 != 1)) die1 = 7; if ((die2 == 1) && (die1 != 1)) die2 = 7; } var total = die1 + die2; var winner = false; findTipper(username); tipperArray[findTipper(username)][1] += total; // var msg = tipperArray[findTipper(lastRoller)][1]; var msg=''; if(tipperArray[findTipper(username)][1]>=nextlevel){ tipperArray[findTipper(username)][1] -= nextlevel; level++; nextlevel +=25; msg +=":woohoolvlup you unlocked new prizes. \n"; } if(level>1){ bonuslevel += 2*(level-1); } total += bonuslevel if (total >= 1) { winner = true; var prize = cb.settings['prize_' + total]; } else { winner = false; var prize = 'A Thank You!'; } var prizeIndex = prizes.indexOf(prize); if (prizeIndex >= 0) { if (cb.settings.remove_winning_prize == 'Yes') prizes.splice(prizeIndex, 1); } //else { // prize = 'A Thank You!'; //} msg += dieImagePrefix + die1 + " " + dieImagePrefix + die2 + "\n"; msg += username + " rolled a " + total + "! \n".toUpperCase(); msg += "Roll #" + rollCounter + " | Prize: " + prize; var textColor = '#000000'; var bgColor = '#D9FAD7'; if (winner) textColor = '#067D00'; if (total == maxOutcome) { bgColor = '#FFDBF3'; textColor = '#A805A6'; } cb.sendNotice(msg, '', bgColor, textColor, 'bold'); lastPrizeWon = prize; winners.push("Roll #" + rollCounter + " (" + total + "): " + username + " - " + prize); cb.drawPanel(); } function setPrizes() { var rareText = ''; for (var i = 1; i <= maxOutcome; i++) { if (i == maxOutcome) rareText = " (VERY RARE)"; prizes.push(cb.settings['prize_' + i] + rareText); } } function showPrizes(username) { if (prizes.length) { var rareText = ''; var msg = "##### POSSIBLE PRIZES #####"; for (var i = 1; i <= maxOutcome; i++) { if (i == maxOutcome) rareText = " (VERY RARE)"; if (prizes.indexOf(cb.settings['prize_' + i] + rareText) >= 0){ if(i<13){ msg += "\nRoll " + i + " - " + cb.settings['prize_' + i]; }else if(i<15){ msg += "\nRoll " + i + " level2 - " + cb.settings['prize_' + i]; } else if(i<17){ msg += "\nRoll " + i + " Level3 - " + cb.settings['prize_' + i]; } else if(i<19){ msg += "\nRoll " + i + " Level4 - " + cb.settings['prize_' + i]; } else if(i<21){ msg += "\nRoll " + i + " Level5 - " + cb.settings['prize_' + i]; } else if(i==21){ msg += "\nRoll " + i + " Level6 - " + cb.settings['prize_' + i] + rareText; } } } } else { var msg = "SORRY! There are no prizes left in the list, but thank you for the tip. :thumbsup"; } cb.sendNotice(msg, username, '#DBFBFF', '#008596', 'bold'); } function showPrizesWon(username) { var msg = "##### LAST 40 WINNERS #####"; msg += "\nList sorted in chronological order"; if (winners.length == 0) { cb.sendNotice('No one has won anything yet. Roll the dice to win a prize!', username, '', '', 'bold'); } else { var recentWinners = winners.slice(-40); for (var i = 0; i < recentWinners.length; i++) msg += "\n" + recentWinners[i]; cb.sendNotice(msg, username, '#FFF0DE', '#8A4900', 'bold'); } } function advertise() { showAppAd(); cb.setTimeout(advertise, parseInt(cb.settings.notice_wait_time) * 60000); } function showAppAd(username) { var msg = ""; if (username != undefined) { msg += "Welcome, " + username + "! We are playing Roll The Dice. \n"; } else { msg += "RTD + Tip Goal by zingknaat & admin + \n"; } msg += "Each roll reveals a prize. There are " + prizes.length + " possible prizes. \n"; if (cb.settings.remove_winning_prize == 'Yes') { msg += "Each prize won will be removed from the list.\n"; } else { msg += "Each prize won will stay on the list.\n"; } msg += "Tip " + cb.settings.tokens + " " + langTokens + " to roll the dice. \n"; msg += "Type \"/prizes\" or \"/prizes all\"to see the list of prizes. \n"; msg += "Increase level and unlock new prizes, the number obtained in the dice is added for level up"; cb.sendNotice(msg, username, '', '#15A6B0', 'bold'); } function update_subject() { if (tips_remaining() == 0) { if (subject_is_set_with_0) { return; } subject_is_set_with_0 = true; } else { subject_is_set_with_0 = false; } var new_subject = cb.settings.goal_description + " [" + tips_remaining() + " tokens remaining]"; cb.log("Changing subject to: " + new_subject); cb.changeRoomSubject(new_subject + ' Tip ' + cb.settings.tokens + ' tokens to roll the dice!' + cb.settings.tags); } function tips_remaining() { var r = cb.settings.goal - total_tipped; if (r < 0) { return 0; } else { return r; } } function format_username(val) { if (val === null) { return "--"; } else { return val.substring(0, 12); } } function init() { update_subject(); setPrizes(); advertise(); } init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.