Apps Home
|
Create an App
Custom Dice
Author:
naclh2o
Description
Source Code
Launch App
Current Users
Created by:
Naclh2o
/* * Author: Naclh2o * used Zingknaat ""Roll The Dice"" as a starting point (https://chaturbate.com/apps/sourcecode/roll-the-dice-2/?version=&slot=0) * * contact: naclhho@gmail.com */ cb.settings_choices = [ { name: 'smallRollPrice', type: 'int', minValue: 1, label: 'Price of tokens to roll the small dice', defaultValue: 25 }, { name: 'advertiseMins', type: 'choice', label: 'Number of minutes between each advertisement', choice1: '1', choice2: '2', choice3: '3', choice4: '4', choice5: '5', choice6: '6', choice7: '7', choice8: '8', choice9: '9', choice10: '10', defaultValue: '1' }, { name: 'forceWinners', type: 'choice', label: 'Make every roll a winner', choice1: 'No dice', choice2: 'Normal dice only', choice3: 'Big dice only', choice4: 'Both dice', defaultValue: 'Both dice' }, { name: 'autoOrganize', type: 'choice', label: 'Move prizes to highest numbers to roll', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'dieSides', type: 'choice', label: 'Number of side per dice', choice1: '4', choice2: '6', choice3: '8', choice4: '10', choice5: '12', choice6: '20', default: '6' }, {name: 'prize1', required: false, type: 'str', label: ''}, {name: 'prize2', required: false, type: 'str', label: ''}, {name: 'prize3', required: false, type: 'str', label: ''}, {name: 'prize4', required: false, type: 'str', label: ''}, {name: 'prize5', required: false, type: 'str', label: ''}, {name: 'prize6', required: false, type: 'str', label: ''}, {name: 'prize7', required: false, type: 'str', label: ''}, {name: 'prize8', required: false, type: 'str', label: ''}, {name: 'prize9', required: false, type: 'str', label: ''}, {name: 'prize10', required: false, type: 'str', label: ''}, {name: 'prize11', required: false, type: 'str', label: ''}, {name: 'prize12', required: false, type: 'str', label: ''}, {name: 'prize13', required: false, type: 'str', label: ''}, {name: 'prize14', required: false, type: 'str', label: ''}, {name: 'prize15', required: false, type: 'str', label: ''}, {name: 'prize16', required: false, type: 'str', label: ''}, {name: 'prize17', required: false, type: 'str', label: ''}, {name: 'prize18', required: false, type: 'str', label: ''}, {name: 'prize19', required: false, type: 'str', label: ''}, {name: 'prize20', required: false, type: 'str', label: ''}, { name: 'bigRollPrice', type: 'int', minValue: 1, label: 'Price of tokens to roll the big dice', defaultValue: 50 }, {name: 'bigPrize1', required: false, type: 'str', label: ''}, {name: 'bigPrize2', required: false, type: 'str', label: ''}, {name: 'bigPrize3', required: false, type: 'str', label: ''}, {name: 'bigPrize4', required: false, type: 'str', label: ''}, {name: 'bigPrize5', required: false, type: 'str', label: ''}, {name: 'bigPrize6', required: false, type: 'str', label: ''}, {name: 'bigPrize7', required: false, type: 'str', label: ''}, {name: 'bigPrize8', required: false, type: 'str', label: ''}, {name: 'bigPrize9', required: false, type: 'str', label: ''}, {name: 'bigPrize10', required: false, type: 'str', label: ''}, {name: 'bigPrize11', required: false, type: 'str', label: ''}, {name: 'bigPrize12', required: false, type: 'str', label: ''}, {name: 'bigPrize13', required: false, type: 'str', label: ''}, {name: 'bigPrize14', required: false, type: 'str', label: ''}, {name: 'bigPrize15', required: false, type: 'str', label: ''}, {name: 'bigPrize16', required: false, type: 'str', label: ''}, {name: 'bigPrize17', required: false, type: 'str', label: ''}, {name: 'bigPrize18', required: false, type: 'str', label: ''}, {name: 'bigPrize19', required: false, type: 'str', label: ''}, {name: 'bigPrize20', required: false, type: 'str', label: ''} ]; var langTokens1 = (cb.settings.rollPrice1 > 1) ? 'tokens' : 'token'; var langTokens2 = (cb.settings.rollPrice2 > 1) ? 'tokens' : 'token'; var numberOfSides = cb.settings.dieSides; var prizes = []; var bigPrizes = []; var prizeNumbers = []; var bigPrizeNumbers = []; var tally = [0,0,0,0,0,0]; var noPrize = -1 //var dieImagePrefix = (cb.settings.die_type == 'Traditional') ? ':reddie' : ':cdie'; cb.onTip(function (tip) { var numberOfBigRolls = 0; var numberOfSmallRolls = 0; var tipAmount = parseInt(tip['amount']) var leftover = 0 var textColor = '#000000'; var bgColor = '#ffffff'; if (tipAmount >= cb.settings.bigRollPrice) { numberOfBigRolls = Math.floor(tipAmount / cb.settings.bigRollPrice); leftover = tipAmount - (numberOfBigRolls * cb.settings.bigRollPrice); if ( leftover >= cb.settings.smallRollPrice) { numberOfSmallRolls = Math.floor(leftover / cb.settings.smallRollPrice); } for (var i = 0; i < numberOfBigRolls; i++) { bigRoll(tip['from_user']); } for (var i = 0; i < numberOfSmallRolls; i++) { smallRoll(tip['from_user']); } } else if (tipAmount >= cb.settings.smallRollPrice) { numberOfSmallRolls = Math.floor(tipAmount / cb.settings.smallRollPrice); for (var i = 0; i < numberOfSmallRolls; i++) { smallRoll(tip['from_user']); } } /*if (parseInt(tip['amount']) >= cb.settings.rollPrice) { var numberOfRolls = Math.floor(parseInt(tip['amount']) / cb.settings.rollPrice); for (var i = 0; i < numberOfRolls; i++) { roll(tip['from_user']); } }*/ }); cb.onDrawPanel(function (user) { /* return { 'template': '3_rows_12_22_31', 'row1_label': 'Last prize won:', 'row1_value': lastPrizeWon, 'row2_label': 'Last player:', 'row2_value': lastRoller, 'row3_value': tipCounter + ' ' + langTokens + ' received / rolled ' + rollCounter + ' time(s)' }; */ }); // Called when user enter chat cb.onEnter(function (user) { showAppAd(user['user']); }); // Called when people type in chat 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']); } } return msg; }); function smallRoll(username) { //var randomNum = Math.ceil(Math.random() * (100 - minimumRollsToGetRareDice) + minimumRollsToGetRareDice); var msg = ''; var textColor = '#000000'; var bgColor = '#ffffff'; var winner = false; var rollNumber = 0; var prizeIndex = 0; if ( cb.settings.forceWinners == 'Normal dice only' || cb.settings.forceWinners == 'Both dice') { randomNumber = Math.ceil(Math.random() * prizeNumbers.length); //rolls a random number rollNumber = prizeNumbers[randomNumber - 1]; } else { rollNumber = Math.floor(Math.random() * numberOfSides); //rolls a random number //rollNumber = randomNumber; } var prize = prizes[rollNumber]; if (prizes[rollNumber] == "")// no prize for this roll { msg += username + " rolled a " + rollNumber + ", There was no prize for that number"; var textColor = '#000000'; var bgColor = '#ffffff'; } else //prize won { msg += username + " rolled a " + rollNumber + ", with the normal dice and won: " + prize; var textColor = '#000000'; var bgColor = '#ffffff'; } //var msg = dieImagePrefix + die1 + " " + dieImagePrefix + die2 + "\n"; cb.sendNotice(msg, '', bgColor, textColor, 'bold'); cb.drawPanel(); } function bigRoll(username) { //var randomNum = Math.ceil(Math.random() * (100 - minimumRollsToGetRareDice) + minimumRollsToGetRareDice); var msg = ''; var textColor = '#000000'; var bgColor = '#ffffff'; var winner = false; var rollNumber = 0; var prizeIndex = 0; if ( cb.settings.forceWinners == 'Big dice only' || cb.settings.forceWinners == 'Both dice') { randomNumber = Math.ceil(Math.random() * bigPrizeNumbers.length); //rolls a random number rollNumber = bigPrizeNumbers[randomNumber - 1]; } else { rollNumber = Math.floor(Math.random() * numberOfSides); //rolls a random number //rollNumber = randomNumber; } var prize = bigPrizes[rollNumber]; if (bigPrizes[rollNumber] == "")// no prize for this roll { msg += username + " rolled a " + rollNumber + ". There was no prize for that number"; var textColor = '#000000'; var bgColor = '#ffffff'; } else //prize won { msg += username + " rolled a " + rollNumber + ", with the big dice and won: " + prize.toUpperCase(); var textColor = '#000000'; var bgColor = '#ffffff'; } //var msg = dieImagePrefix + die1 + " " + dieImagePrefix + die2 + "\n"; cb.sendNotice(msg, '', bgColor, textColor, 'bold'); cb.drawPanel(); } function setPrizes() { prizes.push(0); bigPrizes.push(0); for (var i = 1; i <= 20; i++) { prizes.push(cb.settings['prize' + i]); if (cb.settings['prize' + i] != "") { prizeNumbers.push(i) } } for (var i = 1; i <= 20; i++) { bigPrizes.push(cb.settings['bigPrize' + i]); if (cb.settings['bigPrize' + i] != "") { bigPrizeNumbers.push(i) } } } function showPrizes(username) { var msg = ""; for (var i = 1; i <= (prizes.length - 1); i++) { msg += "\nNormal prize " + i + " = " + cb.settings['prize' + i]; } cb.sendNotice(msg, username, '#DBFBFF', '#008596', 'bold'); msg = ""; for (var i = 1; i <= (bigPrizes.length - 1); i++) { msg += "\nBig prize " + i + " = " + bigPrizes[i]; } cb.sendNotice(msg, username, '#DBFBFF', '#008596', 'bold'); } function advertise() { showAppAd(); cb.setTimeout(advertise, (cb.settings.advertiseMins * 60000)); } function showAppAd(username) { var msg = ""; // when user enters chat welcome then if (username != undefined) { msg += "Welcome, " + username + "! \n"; } //msg += "Each roll reveals a prize. There are " + prizes.length + " possible prizes. \n"; msg += "Tip " + cb.settings.smallRollPrice + " " + langTokens1 + " to roll the dice. \n"; msg += "Tip " + cb.settings.bigRollPrice + " " + langTokens2 + " to roll the big dice. \n"; msg += "Type \"/prizes\" to see the list of prizes. \n"; msg += "Type \"/prizes all\" to send the list to all viewers \n"; cb.sendNotice(msg, username, '#f2f2f2', '', 'bold'); } // calls function on start function init() { setPrizes(); advertise(); cb.changeRoomSubject('Tip ' + cb.settings.rollPrice + ' tokens to roll the dice!'); } init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.