|
|
TinaXLevel
///Lovense Lush Levels and Special Commands + Welcome & Follow Message
///
//please fill in YOUR OWN SETTINGS!!!
//visit the lovense website for info on how to set up your toy for camming!
//https://www.lovense.com/cam-model
///or watch this youtube video
//https://youtu.be/NNXIGWPxcTY
//
//emoji codes for:
//
//RANDOM LEVEL RESPONSE :lslvl1
//WAVE PADDERN :lslvl3
//PULSE PADDERN :lslvl2
//EARTHQUAKE PADDERN :lslvl4
//FIREWORKS PADDERN :lslvl5
//SPECIAL COMMAND :lslvl6
//
//more special command samples
//:lslvl3 WAVE Pattern 20 seconds :lushsm 133 Tokens
//:lslvl2 PULSE Pattern 20 seconds :lushsm 134 Tokens
//:lslvl4 EARTHQUAKE Pattern 20 seconds :lushsm 135 Tokens
//:lslvl5 FIREWORKS Pattern 20 seconds :lushsm 136 Tokens
//
//
//based on Lovense Settings Bot/Room Rules bot
cb.settings_choices = [
{ name: "banner_emote",
label: "Add emote or text at top of list",
type: "str",
minLength: 1,
maxLength: 255,
defaultValue: ":lovense130",
required: true,
},
{name:'Level1', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 1-14 LOW :lushsm 1 second', label:'Lush Level #1', required:true},
{name:'Level2', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 15-49 MEDIUM :lushsm 3 seconds', label:'Lush Level #2', required:false},
{name:'Level3', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 50-99 HIGH :lushsm 5 seconds', label:'Lush Level #3', required:false},
{name:'Level4', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 100-499 HIGH :lushsm 20 seconds', label:'Lush Level #4', required:false},
{name:'Level5', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 500-999 ULTRA HIGH :lushsm 45 seconds', label:'Lush Level #5', required:false},
{name:'Level6', type:'str', minLength:1, maxLength:255, defaultValue:'Tip 1000+ ULTRA HIGH :lushsm 100 seconds', label:'Lush Level #6', required:false},
{name:'Level7', type:'str', minLength:1, maxLength:255, label:'Lush Level #7', required:false},
{name:'Level8', type:'str', minLength:1, maxLength:255, label:'Lush Level #8', required:false},
{name:'Level9', type:'str', minLength:1, maxLength:255, label:'Lush Level #9', required:false},
{name:'SpecialCommand1', type:'str', minLength:1, maxLength:255, defaultValue:':lslvl1 RANDOM Level Response :lushsm 77 Tokens', label:'Lush Special Command', required:false},
{name:'SpecialCommand2', type:'str', minLength:1, maxLength:255, label:'Lush Special Command\n \n(more emotes in description)', required:false},
{name:'SpecialCommand3', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false},
{name:'SpecialCommand4', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false},
{name:'SpecialCommand5', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false},
{name:'SpecialCommand6', type:'str', minLength:1, maxLength:255, label:'Lush Special Command', required:false},
{name:'advertisement_wait_time', type:"int", minValue : 1, maxValue : 60,
defaultValue : 5, label:'Lush Level Notification Time (in minutes 1-60)',
},
{ name: "random_bg",
label: "Random background colors for messages",
type: "choice",
choice1: "on",
choice2: "off",
defaultValue: "off",
required: true,
},
{
name: "random_emote",
label: "Add random emotes at the end of messages",
type: "choice",
choice1: "on",
choice2: "off",
defaultValue: "off",
required: true,
}
];
"use strict";
var meanBroadcasters = ['missilex'];
var emo=[":cutehug",":angel",":heheface3a",":dance3",":blush",":cool",":huh",":roll",":mellow",":ohmy",":smile",":thumbup",":wink",":woot",":bounce",":hello",":angel",":crazy",":thumbsup",":yes",":hearts",":happy1a",":innocent",":gangsta",":dancingbanana",":kissy",":help",":bow",":hello",":huh",":drool",":shi",":twerky1a",":hihi",":shello",":lolll"];
var color=["#ffb6c1","#ff82ab","#ee6aa7","#ff83fa","#d8bfd8","#eeaeee","#6495ed","#bcd2ee","#63b8ff","#87cefa","#8ee5ee","#00f5ff","#8deeee","#00eeee","#76eec6","#4eee94","#b4eeb4","#9aff9a","#7fff00","#adff2f","#bcee68","#9acd32","#cdcdb4","#eeee00","#ffd700","#ffc125","#eecfa1","#e3a869","#eecbad","#ff7256","#eeb4b4","#71c671","#c5c1aa","#ff9999","#fff68f","#f4862a"];
function isCmd(txt) {
if (txt.charAt(0) === "/")
return true;
if (txt.charAt(0) === "!")
return true;
else
return false;}
cb.onMessage(function(message){
var txt = message.m;
var i=Math.floor((Math.random()*35)+1);
var j=Math.floor((Math.random()*35)+1);
if (cb.settings.random_bg == "on" && !isCmd(txt))
message.background=color[i];
if (cb.settings.random_emote == "on" && !isCmd(txt))
message.m +=" ... "+emo[j];
return message;
});
cb.onEnter(function(user) {
if(meanBroadcasters.indexOf(cb.room_slug) < 0) {
cb.sendNotice('Welcome to my room, ' + user['user'] + '! \nMy Lovense Lush is set to react to your tips. \nYour tips give me pleasure! So let\'s have fun! \nIf you\'re new, please don\'t forget to hit the :follow2a button.', user['user'], '#FFF0DE', '#9C2868', 'bold');
displayLevels(user);
}
});
function displayLevels(user) {
var username = '';
var banner = cb.settings.banner_emote;
if(user) username = user['user'];
var notices = banner;
notices += '\n===== My Lovense Lush Levels =====';
for(var i=1; i<=10;i++) {
if(cb.settings['Level' + i]) notices += '\n:llvlc'+ i +' ' + cb.settings['Level'+i];
}
if (cb.settings.SpecialCommand1 !== '')
notices += '\n====== Special Commands =======';
for(var j=1; j<=10;j++) {
if(cb.settings['SpecialCommand' + j]) notices += '\n' + cb.settings['SpecialCommand'+j];
}
cb.sendNotice(notices, username, '#FFF0DE', '#9C2868', 'normal');
if(!user || user == null) cb.setTimeout(displayLevels, cb.settings.advertisement_wait_time * 60000);
}
function init() {
if(meanBroadcasters.indexOf(cb.room_slug) < 0) displayLevels();
}
init();
cb.settings_choices = function () {
var output = [];
var ins_index = 0;
makeInstructions('[LOVENSE LEVELS] ----------- Set the below options to the same as in your Lovense control panel.');
makeLevel(1, 1, 14, 7, 'Low');
makeLevel(2, 15, 74, 7, 'Medium');
makeLevel(3, 75, 199, 15, 'High');
makeLevel(4, 200, 499, 20, 'Ultra High');
makeLevel(5, 500, 99999, 30, 'Ultra High');
makeLevel(6, 500, 99999, 30, 'Ultra High');
// makeInstructions('[LOVENSE SPECIAL COMMANDS] ----------- Set the below options to the same as in your Lovense control panel. To disable an option, set the price to 0.');
// output.push({name: 'pause_price', label: '[PAUSE THE QUEUE] --- Price', type: 'int', minValue: 0, defaultValue: 0});
// output.push({name: 'pause_time', label: 'Time', type: 'int', minValue: 1, defaultValue: 10});
makeInstructions('[TIP NOTICES] ----------- This messages will appear when a user triggers the Lovense with a tip. {pwr} will be replaced with the power, {sec} with the duration, and {user} with the user who tipped.');
output.push({name: 'response', label: 'Response text', type: 'str', defaultValue: 'Vibrating at {pwr} power for {sec} seconds! (from {user})', required: false});
output.push({name: 'tColor', label: 'Text foreground color', type: 'str', defaultValue: '#DC5500', required: false});
output.push({name: 'tBg', label: 'Text background color', type: 'str', defaultValue: '#FFFF33', required: false});
makeInstructions('[ROTATING NOTICES] ----------- These messages will appear periodically to remind viewers of the lovense settings.');
output.push({name: 'header', label: 'Header', type: 'str', defaultValue: '--- Tip the numbers below to trigger the toy! ---'});
output.push({name: 'freq', label: 'Frequency in seconds (0 = off)', type: 'int', defaultValue: 120});
output.push({name: 'rColor', label: 'Text foreground color', type: 'str', defaultValue: '#DC5500', required: false});
output.push({name: 'rBg', label: 'Text background color', type: 'str', defaultValue: '#FFFF33', required: false});
function makeLevel(num, lo, hi, sec, pow) {
output.push({name: 'use' + (num - 1), label: '[LEVEL ' + num + '] --- Enabled', type: 'choice', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes'});
output.push({name: 'min' + (num - 1), label: 'Minimum Tokens', type: 'int', defaultValue: lo, minValue: 1});
output.push({name: 'max' + (num - 1), label: 'Maximum Tokens', type: 'int', defaultValue: hi, minValue: 1});
output.push({name: 'sec' + (num - 1), label: 'Time', type: 'int', defaultValue: sec, minValue: 1});
output.push({name: 'pwr' + (num - 1), label: 'Power', type: 'choice', choice1: 'Low', choice2: 'Medium', choice3: 'High', choice4: 'Ultra High', defaultValue: pow});
output.push({name: 'txt' + (num - 1), label: 'Text', type: 'str', required: false})
}
function makeInstructions(text) {
output.push({name: 'instructions_' + ins_index, label: text, type: 'choice', choice1: '', required: false});
ins_index++;
}
return output;
}();
var freq = $('freq');
var rBg = $('rBg');
var rColor = $('rColor');
var tBg = $('tBg');
var tColor = $('tColor');
var noticeResponse = $('response');
var specMenu = function () {
var obj = {};
return obj;
}();
var tipMenu = function () {
var arr = [];
for (var i = 0; i < 6; i++) {
if ($('use' + i) === 'Yes') {
var obj = {
min: $('min' + i),
max: $('max' + i),
sec: $('sec' + i),
pwr: $('pwr' + i, true),
txt: $('txt' + i)
};
arr.push(obj);
}
}
return arr;
}();
var rotatorText = function () {
var output = $('header') || '--- Tip the numbers below to trigger the toy! ---';
for (var i = 0; i < tipMenu.length; i++) {
var item = tipMenu[i];
output += '\n[' + item.min + ' to ' + item.max + ' tokens] = ';
if (item.txt && item.txt.trim().length > 0) {
output += item.txt;
} else {
output += item.sec + ' seconds (' + item.pwr + ' vibrations)';
}
}
return output;
}();
/**********
------------ TIPS ------------
**********/
cb.onTip(function (tip) {
react(tip);
});
function react(tip) {
cb.log('Reacting to ' + tip.amount + ' (' + tipMenu.length + ')');
for (var i = 0; i < tipMenu.length; i++) {
var item = tipMenu[i];
if (tip.amount >= item.min && tip.amount <= item.max) {
var notice = noticeResponse.replace(/\{pwr\}/g, item.pwr).replace(/\{sec\}/g, item.sec).replace(/\{user}/g, tip.from_user);
say(notice, '', tColor, tBg);
break;
}
}
}
/**********
------------ COMMUNICATION ------------
**********/
//send a message to the user
function say(text, user, color, bg) {
cb.sendNotice(newLines(text), user, bg, color, 'bold', '');
}
/**********
------------ MISC ------------
**********/
function $ (str, uc) {
var setting = cb.settings[str];
if (typeof setting === 'string') {
if (uc) setting = setting.toUpperCase();
setting = setting.trim();
if (setting.length > 0) return setting;
} else {
if (setting) return setting;
}
}
function newLines(input) {
return '\u25A0 ' + input.replace(new RegExp('\n', 'g'), '\n\u25A0 ');
}
/**********
------------ EXECUTE ------------
**********/
if (freq && freq > 0) {
(function rotate() {
say(rotatorText, '', rColor, rBg);
cb.setTimeout(rotate, freq * 1000);
})();
}
© Copyright Chaturbate 2011- 2026. All Rights Reserved.