Bots Home
|
Create an App
dice3fun
Author:
phonzotar
Description
Source Code
Launch Bot
Current Users
Created by:
Phonzotar
// Version: 0.0.1 of 2018-10-24 inspired by kingchris_ and zingknaat cb.settings_choices = [ { label: 'How much do you charge per roll?', name: 'tokens', type: 'int', minValue: 1, defaultValue: 15 }, { label: 'Maximum number of rolls in a single large tip.', name: 'max_rolls_at_once', type: 'int', minValue: 1, defaultValue: 12 }, { label: 'Roll only on exact multiples of the base charge? That means if you charge 4, then 8 rolls twice but 9 does not.', name: 'perfect_multi', type: 'choice', choice1: 'yes', choice2: 'no', defaultValue: 'yes' }, { label: 'Repeat advertisement after how many minutes? 0 for never', name: 'notice_wait_time', type: 'int', minValue: 0, defaultValue: 8 }, { label: 'Change prefix for bot commands if other bots use the same prefix.', name: 'cmd_prefix', type: 'str', minLength: 1, defaultValue: '#' }, ]; var numOfDice = 3; var highPrize = numOfDice*6; var maxPrizes = numOfDice*5+1; var laura = ["","","" ,"cream pussy" ,"cream boobs" ,"5 min naked" ,"5 min hand bra" ,"5 min hair bra" ,"5 min remove 1 piece of clothes" ,"lick lips" ,"blow a kiss" ,"flash feet" ,"flash butt" ,"dance" ,"shake naked boobs" ,"your name on boobs" ,"spank butt" ,"spank boobs" ,"spank pussy" ]; for (var i=numOfDice; i <= highPrize; i++) { cb.settings_choices.push({ name: 'prize_' + i, type: 'str', label: 'Prize ' + i, defaultValue: i<laura.length ? laura[i] : "", required: false }); } var price = parseInt(cb.settings.tokens); var perfectMults = cb.settings.perfect_multi == 'yes'; var maxRollsPerTip = parseInt(cb.settings.max_rolls_at_once); var cmdPrefix = cb.settings.cmd_prefix; var allPrizes = []; var lastActs = []; var stats = { 'tipCounter': 0, 'rollCounter': 0, 'resultCounter': {}, }; function blurbStats(username) { var msg = "Dice Statistics: "; for (var i = numOfDice; i <= highPrize; i++) { var j = stats.resultCounter[i]; if (j == 0) continue; msg += ""+j+"#"+i+" "; } msg += "total rolls: " + stats.rollCounter; cb.sendNotice(msg, username, '#DBFBFF'); } function blurbPrizes(username) { var msg = "We roll " + numOfDice + " dice. That results in a sum between " + numOfDice + " and " + highPrize + "."; for (var i = numOfDice; i <= highPrize; i++) { msg += "\nRoll " + i + ": " + allPrizes[i]; } cb.sendNotice(msg, username, '#DBFBFF'); } function blurbBotOnce(username) { var msg = "more"; if (perfectMults) msg = "an exact multiple"; msg = "\nTip " + msg + " to roll up to " + maxRollsPerTip + " times."; if (maxRollsPerTip <= 1) msg = ""; msg = "Tip " + price + " tokens to roll " + numOfDice + " dice and win a price." + msg; msg += "\nType " + cmdPrefix + "prizes to see all " + maxPrizes + " possible prizes."; if (lastActs.length > 1) { msg += "\nLast prizes won: "; for (var i=0; i<lastActs.length; i++) { if (i > 0) msg += ", "; msg += lastActs[i]; } } cb.sendNotice(msg, username, '', '#15A6B0'); } function blurbBotAgain() { blurbBotOnce(); var wait = parseInt(cb.settings.notice_wait_time); if (wait > 0) cb.setTimeout(blurbBotAgain, wait*60000); } function roll(username) { stats.rollCounter += 1; var msg = "" var total = 0; for (var i = 0; i < numOfDice; i++) { var iacta = Math.floor(Math.random()*6) + 1; msg += " :reddie" + iacta; total += iacta; } cb.sendNotice(msg, '', '', '', 'bold'); var prize = allPrizes[total]; msg = username + " rolled " + total + ": " + prize + "!"; cb.sendNotice(msg, '', '#D9FAD7', '#000000', 'bold'); stats.resultCounter[total]++; lastActs.push(prize); lastActs = lastActs.slice(-4); } cb.onEnter(function (user) { blurbBotOnce(user.user); }); cb.onTip(function(tip) { var amount = parseInt(tip.amount); stats.tipCounter += amount; var rolls = Math.floor(amount/price); if (perfectMults && rolls*price<amount) return; if (rolls > maxRollsPerTip) rolls=maxRollsPerTip; for (var i = 0; i < rolls; i++) roll(tip.from_user); }); cb.onMessage(function(msg) { var slug = msg.is_mod || msg.user == cb.room_slug; var line = msg.m; var head = line.indexOf(cmdPrefix); // We can't just use the begin of the line because ... if (head < 0) return msg; // ... some bots decorate lines by prefixes before we see them. var args = line.substring(head+cmdPrefix.length).split(" "); var funArgs = [msg.user]; var fun2run = 0; var userFun = 0; switch (args[0]) { case 'prizes': userFun = blurbPrizes ; break; case 'dicehelp': userFun = blurbBotOnce ; break; case 'dicestats': userFun = blurbStats ; break; case 'diceroll': if (slug) fun2run = roll ; break; default: break; } if (userFun !== 0) { if (args[1] == 'all' && slug) funArgs=[]; fun2run = userFun; } if (fun2run !== 0) { msg["X-Spam"] = true; // Don't print command messages to chat. msg.background = "#EEEEEE"; fun2run(...funArgs); } return msg; }); function init() { for (var i = numOfDice; i <= highPrize; i++) { stats.resultCounter[i] = 0; allPrizes[i] = "A Thank You"; var pName = 'prize_'+i; if(!(pName in cb.settings)) continue; var pText = cb.settings[pName]; if(pText == '' ) continue; if(pText == '.') continue; if(pText == ' ') continue; allPrizes[i] = pText; } blurbBotAgain(); } init();
© Copyright Chaturbate 2011- 2026. All Rights Reserved.