Apps Home
|
Create an App
KloeHazeApp
Author:
erickkerns
Description
Source Code
Launch App
Current Users
Created by:
Erickkerns
var htcount = 0; var htname = ''; var total_tipped = 0; var lastspinby = 'nobody'; var GoalTipTracking = []; var RewardsTracking = []; var RewardsTrackingCount = 0; var WheelActive = 1; var ActiveRoomSubject = ''; var times_goal_reached = 0; var last_time_goal_reached = null; var current_goal_tipped = 0; var TicketPrice = 0; var UserTotalTips = {}; var showending = 0; var showstartcountdown = 0; var showstarted = 0; var LastNotice = []; var page = 2; var lastpageturn = 1; var row1l = ''; var row2l = ''; var row3l = ''; var row1v = ''; var row2v = ''; var row3v = ''; var KenoPartialTips = {}; var KenoBoardPrizes = {}; var KenoBoardActions = {}; var KenoBoardNumbers = new Array(); var KenoBoardPrizesLeft = 0; var KenoBoard = ''; var KenoPrizes = ''; var KenoPartialBucket = 0; var KenouserPrizes = new Array(); var TrackUserTotalKenoTips = {}; var KenoTokensPlayed = 0; var KenoTokensInGame = 0; cb.settings_choices = [{ name: 'autogoalresetactive', type: 'choice', label: 'Auto-Reset Tip Goal', choice1: 'Enabled', choice2: 'Disabled', defaultValue: 'Disabled' }, { name: 'tokens', type: 'int', minValue: 1, defaultValue: 100, label: 'Small Goal (tokens)' }, { name: 'goal_description', type: 'str', minLength: 1, maxLength: 255, label: 'Room Description' }, { name: 'maingoaltokens', type: 'int', minValue: 0, defaultValue: 2985, label: 'Main Goal (tokens, 0=no main goal)' }, { name: 'skiptipamounts', type: 'str', minLength: 0, maxLength: 1024, label: 'Tip amounts not to count (eg. \'599,999,1599,5999,9999\')', required: false }, { name: 'notify1text', type: 'str', minLength: 0, maxLength: 1024, label: 'Announcer #1 text', required: false }, { name: 'notify1time', type: 'int', minValue: 0, defaultValue: 0, label: 'Announcer #1 interval (minutes, 0=deactivated)' }, { name: 'notify2text', type: 'str', minLength: 0, maxLength: 1024, label: 'Announcer #2 text', required: false }, { name: 'notify2time', type: 'int', minValue: 0, defaultValue: 0, label: 'Announcer #2 interval (minutes, 0=deactivated)' }, { name: 'notify3text', type: 'str', minLength: 0, maxLength: 1024, label: 'Announcer #3 text', required: false }, { name: 'notify3time', type: 'int', minValue: 0, defaultValue: 0, label: 'Announcer #3 interval (minutes, 0=deactivated)' }, { name: 'notify4text', type: 'str', minLength: 0, maxLength: 1024, label: 'Announcer #4 text', required: false }, { name: 'notify4time', type: 'int', minValue: 0, defaultValue: 0, label: 'Announcer #4 interval (minutes, 0=deactivated)' }, { name: 'notify5text', type: 'str', minLength: 0, maxLength: 1024, label: 'Announcer #5 text', required: false }, { name: 'notify5time', type: 'int', minValue: 0, defaultValue: 0, label: 'Announcer #5 interval (minutes, 0=deactivated)' }, { name: 'ticketicon', type: 'str', minLength: 0, maxLength: 30, label: 'Ticket Holder: Chat add Emoticon', defaultValue: ':kloehazeticket', required: false }, { name: 'ticketbackground', type: 'str', minLength: 0, maxLength: 7, label: 'Ticket Holder: Chat background color', defaultValue: '#a5dcff', required: false }, { name: 'wheelactive', type: 'choice', label: 'Kloeville - Wheel of Fortune', choice1: 'Enabled', choice2: 'Disabled', defaultValue: 'Disabled' }, { name: 'announcewheelonenter', type: 'choice', label: 'Announce Wheel when blues enter the room', choice1: 'Yes', choice2: 'No', defaultValue: 'No' }, { name: 'cost_per_spin', type: 'int', minValue: 1, maxValue: 999, defaultValue: 50, label: 'Cost per Spin of the Wheel (1-999)' }, { name: 'advertise_in_chat', type: 'int', minValue: 0, maxValue: 999, defaultValue: 5, label: 'How often to advertise Wheel in chat: (min) (0=never)' }, { name: 'wheelemailtxt', type: 'str', minLength: 1, maxLength: 255, label: 'Text to ask for email:', defaultValue: 'USERNAME please write your email-address in a 1 token tip-note' }, { name: 'pos1', type: 'str', minLength: 1, maxLength: 255, label: 'Reward 1', required: false }, { name: 'pos1action', type: 'choice', label: 'Reward 1 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos2', type: 'str', minLength: 1, maxLength: 255, label: 'Reward 2', required: false }, { name: 'pos2action', type: 'choice', label: 'Reward 2 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos3', type: 'str', minLength: 1, maxLength: 255, label: 'Reward 3', required: false }, { name: 'pos3action', type: 'choice', label: 'Reward 3 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos4', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 4', required: false }, { name: 'pos4action', type: 'choice', label: 'Reward 4 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos5', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 5', required: false }, { name: 'pos5action', type: 'choice', label: 'Reward 5 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos6', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 6', required: false }, { name: 'pos6action', type: 'choice', label: 'Reward 6 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos7', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 7', required: false }, { name: 'pos7action', type: 'choice', label: 'Reward 7 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos8', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 8', required: false }, { name: 'pos8action', type: 'choice', label: 'Reward 8 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos9', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 9', required: false }, { name: 'pos9action', type: 'choice', label: 'Reward 9 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos10', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 10', required: false }, { name: 'pos10action', type: 'choice', label: 'Reward 10 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos11', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 11', required: false }, { name: 'pos11action', type: 'choice', label: 'Reward 11 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos12', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 12', required: false }, { name: 'pos12action', type: 'choice', label: 'Reward 12 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos13', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 13', required: false }, { name: 'pos13action', type: 'choice', label: 'Reward 13 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos14', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 14', required: false }, { name: 'pos14action', type: 'choice', label: 'Reward 14 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos15', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 15', required: false }, { name: 'pos15action', type: 'choice', label: 'Reward 15 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos16', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 16', required: false }, { name: 'pos16action', type: 'choice', label: 'Reward 16 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos17', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 17', required: false }, { name: 'pos17action', type: 'choice', label: 'Reward 17 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos18', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 18', required: false }, { name: 'pos18action', type: 'choice', label: 'Reward 18 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos19', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 19', required: false }, { name: 'pos19action', type: 'choice', label: 'Reward 19 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos20', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 20', required: false }, { name: 'pos20action', type: 'choice', label: 'Reward 20 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos21', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 21', required: false }, { name: 'pos21action', type: 'choice', label: 'Reward 21 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos22', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 22', required: false }, { name: 'pos22action', type: 'choice', label: 'Reward 22 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos23', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 23', required: false }, { name: 'pos23action', type: 'choice', label: 'Reward 23 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos24', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 24', required: false }, { name: 'pos24action', type: 'choice', label: 'Reward 24 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos25', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 25', required: false }, { name: 'pos25action', type: 'choice', label: 'Reward 25 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos26', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 26', required: false }, { name: 'pos26action', type: 'choice', label: 'Reward 26 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos27', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 27', required: false }, { name: 'pos27action', type: 'choice', label: 'Reward 27 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos28', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 28', required: false }, { name: 'pos28action', type: 'choice', label: 'Reward 28 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos29', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 29', required: false }, { name: 'pos29action', type: 'choice', label: 'Reward 29 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos30', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 30', required: false }, { name: 'pos30action', type: 'choice', label: 'Reward 30 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos31', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 31', required: false }, { name: 'pos31action', type: 'choice', label: 'Reward 31 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos32', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 32', required: false }, { name: 'pos32action', type: 'choice', label: 'Reward 32 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos33', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 33', required: false }, { name: 'pos33action', type: 'choice', label: 'Reward 33 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos34', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 34', required: false }, { name: 'pos34action', type: 'choice', label: 'Reward 34 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'pos35', type: 'str', minLength: 0, maxLength: 255, label: 'Reward 35', required: false }, { name: 'pos35action', type: 'choice', label: 'Reward 35 action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'No Action' }, { name: 'kenonumbermax', type: 'int', minValue: 10, maxValue: 250, label: 'Keno: Highest Number on Board [10-250]', required: true, defaultValue: 30 }, { name: 'kenonumbermin', type: 'int', minValue: 1, maxValue: 100, label: 'Keno: Lowest Number on Board [1-100]', required: true, defaultValue: 1 }, { name: 'kenopartialtips', type: 'choice', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes', label: "Keno: Allow group tipping?" }, { name: 'kenomultitip', type: 'choice', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes', label: "Keno: Call multiple numbers with big tips?" }, { name: 'kenomvpprize', type: 'str', label: 'Keno MVP Prize', minLength: 0, maxLength: 100, required: false }, { name: 'kenoactive', type: 'choice', label: 'Keno: Activated from beginning', choice1: 'Yes', choice2: 'No', defaultValue: 'No' }, { name: 'kenoannounceonenter', type: 'choice', label: 'Announce Keno when blues enter the room', choice1: 'Yes', choice2: 'No', defaultValue: 'Yes' }, { name: 'kenoadvertise_in_chat', type: 'int', minValue: 0, maxValue: 999, defaultValue: 5, label: 'How often to advertise Keno in chat: (min) (0=never)' }, { name: 'kenoreward1', type: 'str', label: 'Keno Reward #1', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction1', type: 'choice', label: 'Keno Reward #1 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin1', type: 'int', label: 'Keno: Reward #1 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward2', type: 'str', label: 'Keno Reward #2', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction2', type: 'choice', label: 'Keno Reward #2 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin2', type: 'int', label: 'Keno: Reward #2 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward3', type: 'str', label: 'Keno Reward #3', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction3', type: 'choice', label: 'Keno Reward #3 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin3', type: 'int', label: 'Keno: Reward #3 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward4', type: 'str', label: 'Keno Reward #4', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction4', type: 'choice', label: 'Keno Reward #4 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin4', type: 'int', label: 'Keno: Reward #4 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward5', type: 'str', label: 'Keno Reward #5', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction5', type: 'choice', label: 'Keno Reward #5 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin5', type: 'int', label: 'Keno: Reward #5 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward6', type: 'str', label: 'Keno Reward #6', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction6', type: 'choice', label: 'Keno Reward #6 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin6', type: 'int', label: 'Keno: Reward #6 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward7', type: 'str', label: 'Keno Reward #7', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction7', type: 'choice', label: 'Keno Reward #7 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin7', type: 'int', label: 'Keno: Reward #7 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward8', type: 'str', label: 'Keno Reward #8', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction8', type: 'choice', label: 'Keno Reward #8 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin8', type: 'int', label: 'Keno: Reward #8 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward9', type: 'str', label: 'Keno Reward #9', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction9', type: 'choice', label: 'Keno Reward #9 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin9', type: 'int', label: 'Keno: Reward #9 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward10', type: 'str', label: 'Keno Reward #10', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction10', type: 'choice', label: 'Keno Reward #10 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin10', type: 'int', label: 'Keno: Reward #10 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward11', type: 'str', label: 'Keno Reward #11', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction11', type: 'choice', label: 'Keno Reward #11 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin11', type: 'int', label: 'Keno: Reward #11 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward12', type: 'str', label: 'Keno Reward #12', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction12', type: 'choice', label: 'Keno Reward #12 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin12', type: 'int', label: 'Keno: Reward #12 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward13', type: 'str', label: 'Keno Reward #13', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction13', type: 'choice', label: 'Keno Reward #13 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin13', type: 'int', label: 'Keno: Reward #13 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward14', type: 'str', label: 'Keno Reward #14', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction14', type: 'choice', label: 'Keno Reward #14 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin14', type: 'int', label: 'Keno: Reward #14 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward15', type: 'str', label: 'Keno Reward #15', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction15', type: 'choice', label: 'Keno Reward #15 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin15', type: 'int', label: 'Keno: Reward #15 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward16', type: 'str', label: 'Keno Reward #16', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction16', type: 'choice', label: 'Keno Reward #16 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin16', type: 'int', label: 'Keno: Reward #16 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward17', type: 'str', label: 'Keno Reward #17', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction17', type: 'choice', label: 'Keno Reward #17 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin17', type: 'int', label: 'Keno: Reward #17 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward18', type: 'str', label: 'Keno Reward #18', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction18', type: 'choice', label: 'Keno Reward #18 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin18', type: 'int', label: 'Keno: Reward #18 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward19', type: 'str', label: 'Keno Reward #19', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction19', type: 'choice', label: 'Keno Reward #19 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin19', type: 'int', label: 'Keno: Reward #19 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward20', type: 'str', label: 'Keno Reward #20', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction20', type: 'choice', label: 'Keno Reward #20 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin20', type: 'int', label: 'Keno: Reward #20 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward21', type: 'str', label: 'Keno Reward #21', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction21', type: 'choice', label: 'Keno Reward #21 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin21', type: 'int', label: 'Keno: Reward #21 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward22', type: 'str', label: 'Keno Reward #22', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction22', type: 'choice', label: 'Keno Reward #22 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin22', type: 'int', label: 'Keno: Reward #22 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward23', type: 'str', label: 'Keno Reward #23', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction23', type: 'choice', label: 'Keno Reward #23 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin23', type: 'int', label: 'Keno: Reward #23 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward24', type: 'str', label: 'Keno Reward #24', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction24', type: 'choice', label: 'Keno Reward #24 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin24', type: 'int', label: 'Keno: Reward #24 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward25', type: 'str', label: 'Keno Reward #25', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction25', type: 'choice', label: 'Keno Reward #25 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin25', type: 'int', label: 'Keno: Reward #25 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward26', type: 'str', label: 'Keno Reward #26', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction26', type: 'choice', label: 'Keno Reward #26 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin26', type: 'int', label: 'Keno: Reward #26 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward27', type: 'str', label: 'Keno Reward #27', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction27', type: 'choice', label: 'Keno Reward #27 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin27', type: 'int', label: 'Keno: Reward #27 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward28', type: 'str', label: 'Keno Reward #28', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction28', type: 'choice', label: 'Keno Reward #28 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin28', type: 'int', label: 'Keno: Reward #28 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward29', type: 'str', label: 'Keno Reward #29', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction29', type: 'choice', label: 'Keno Reward #29 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin29', type: 'int', label: 'Keno: Reward #29 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward30', type: 'str', label: 'Keno Reward #30', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction30', type: 'choice', label: 'Keno Reward #30 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin30', type: 'int', label: 'Keno: Reward #30 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward31', type: 'str', label: 'Keno Reward #31', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction31', type: 'choice', label: 'Keno Reward #31 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin31', type: 'int', label: 'Keno: Reward #31 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward32', type: 'str', label: 'Keno Reward #32', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction32', type: 'choice', label: 'Keno Reward #32 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin32', type: 'int', label: 'Keno: Reward #32 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward33', type: 'str', label: 'Keno Reward #33', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction33', type: 'choice', label: 'Keno Reward #33 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin33', type: 'int', label: 'Keno: Reward #33 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward34', type: 'str', label: 'Keno Reward #34', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction34', type: 'choice', label: 'Keno Reward #34 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin34', type: 'int', label: 'Keno: Reward #34 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward35', type: 'str', label: 'Keno Reward #35', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction35', type: 'choice', label: 'Keno Reward #35 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin35', type: 'int', label: 'Keno: Reward #35 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward36', type: 'str', label: 'Keno Reward #36', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction36', type: 'choice', label: 'Keno Reward #36 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin36', type: 'int', label: 'Keno: Reward #36 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward37', type: 'str', label: 'Keno Reward #37', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction37', type: 'choice', label: 'Keno Reward #37 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin37', type: 'int', label: 'Keno: Reward #37 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward38', type: 'str', label: 'Keno Reward #38', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction38', type: 'choice', label: 'Keno Reward #38 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin38', type: 'int', label: 'Keno: Reward #38 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward39', type: 'str', label: 'Keno Reward #39', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction39', type: 'choice', label: 'Keno Reward #39 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin39', type: 'int', label: 'Keno: Reward #39 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward40', type: 'str', label: 'Keno Reward #40', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction40', type: 'choice', label: 'Keno Reward #40 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin40', type: 'int', label: 'Keno: Reward #40 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward41', type: 'str', label: 'Keno Reward #41', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction41', type: 'choice', label: 'Keno Reward #41 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin41', type: 'int', label: 'Keno: Reward #41 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward42', type: 'str', label: 'Keno Reward #42', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction42', type: 'choice', label: 'Keno Reward #42 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin42', type: 'int', label: 'Keno: Reward #42 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward43', type: 'str', label: 'Keno Reward #43', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction43', type: 'choice', label: 'Keno Reward #43 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin43', type: 'int', label: 'Keno: Reward #43 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward44', type: 'str', label: 'Keno Reward #44', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction44', type: 'choice', label: 'Keno Reward #44 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin44', type: 'int', label: 'Keno: Reward #44 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward45', type: 'str', label: 'Keno Reward #45', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction45', type: 'choice', label: 'Keno Reward #45 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin45', type: 'int', label: 'Keno: Reward #45 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward46', type: 'str', label: 'Keno Reward #46', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction46', type: 'choice', label: 'Keno Reward #46 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin46', type: 'int', label: 'Keno: Reward #46 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward47', type: 'str', label: 'Keno Reward #47', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction47', type: 'choice', label: 'Keno Reward #47 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin47', type: 'int', label: 'Keno: Reward #47 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward48', type: 'str', label: 'Keno Reward #48', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction48', type: 'choice', label: 'Keno Reward #48 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin48', type: 'int', label: 'Keno: Reward #48 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward49', type: 'str', label: 'Keno Reward #49', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction49', type: 'choice', label: 'Keno Reward #49 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin49', type: 'int', label: 'Keno: Reward #49 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, { name: 'kenoreward50', type: 'str', label: 'Keno Reward #50', minLength: 0, maxLength: 255, required: false }, { name: 'kenorewardaction50', type: 'choice', label: 'Keno Reward #50 Action', choice1: 'No Action', choice2: 'Track Reward', choice3: 'Request email in tip note', choice4: 'Track and Request email', defaultValue: 'Track Reward' }, { name: 'kenorewardmin50', type: 'int', label: 'Keno: Reward #50 Lowest placement on Board [1-230]', minValue: 1, maxValue: 230, required: true, defaultValue: 1 }, ]; if ((cb.room_slug != "kloehaze") && (cb.room_slug != "erickkerns")) { sorryannouncement() } if (cb.limitCam_isRunning()) { cb.limitCam_stop() } var ActiveRoomSubject = cb.settings.goal_description; var temp = new Array(cb.settings.pos1, cb.settings.pos2, cb.settings.pos3, cb.settings.pos4, cb.settings.pos5, cb.settings.pos6, cb.settings.pos7, cb.settings.pos8, cb.settings.pos9, cb.settings.pos10, cb.settings.pos11, cb.settings.pos12, cb.settings.pos13, cb.settings.pos14, cb.settings.pos15, cb.settings.pos16, cb.settings.pos17, cb.settings.pos18, cb.settings.pos19, cb.settings.pos20, cb.settings.pos21, cb.settings.pos22, cb.settings.pos23, cb.settings.pos24, cb.settings.pos25, cb.settings.pos26, cb.settings.pos27, cb.settings.pos28, cb.settings.pos29, cb.settings.pos30, cb.settings.pos31, cb.settings.pos32, cb.settings.pos33, cb.settings.pos34, cb.settings.pos35); var tempp = new Array(cb.settings.pos1action, cb.settings.pos2action, cb.settings.pos3action, cb.settings.pos4action, cb.settings.pos5action, cb.settings.pos6action, cb.settings.pos7action, cb.settings.pos8action, cb.settings.pos9action, cb.settings.pos10action, cb.settings.pos11action, cb.settings.pos12action, cb.settings.pos13action, cb.settings.pos14action, cb.settings.pos15action, cb.settings.pos16action, cb.settings.pos17action, cb.settings.pos18action, cb.settings.pos19action, cb.settings.pos20action, cb.settings.pos21action, cb.settings.pos22action, cb.settings.pos23action, cb.settings.pos24action, cb.settings.pos25action, cb.settings.pos26action, cb.settings.pos27action, cb.settings.pos28action, cb.settings.pos29action, cb.settings.pos30action, cb.settings.pos31action, cb.settings.pos32action, cb.settings.pos33action, cb.settings.pos34action, cb.settings.pos35action); var rewards = new Array(); var rewardsaction = new Array(); for (var i = 0; i < temp.length; i++) { if (temp[i] != '') { rewards.push(temp[i]); rewardsaction.push(tempp[i]) } } if (rewards.length == 0) { cb.settings.wheelactive = "Disabled" } var fractionalspilenabled = 0; function setupKenoBoard() { var prizeTextArr = new Array(); var prizeNumberArr = new Array(); var prizeActionArr = new Array(); var mini = 1; KenoTokensPlayed = 0; KenoTokensInGame = 0; KenoBoardPrizes.length = 0; KenoBoardActions.length = 0; KenoBoardNumbers.length = 0; KenoBoardPrizesLeft = 0; prizeTextArr.length = 0; prizeNumberArr.length = 0; prizeActionArr.length = 0; KenouserPrizes.length = 0; KenoPartialTips = {}; KenoBoardPrizes = {}; KenoBoardActions = {}; KenoBoardNumbers = []; KenoBoard = ''; KenoPrizes = ''; KenoPartialBucket = 0; KenouserPrizes = []; TrackUserTotalKenoTips = []; for (var x = 1; x <= 50; x++) { prizeTextArr.push(eval('cb.settings.kenoreward' + x)); prizeNumberArr.push(eval('cb.settings.kenorewardmin' + x)); prizeActionArr.push(eval('cb.settings.kenorewardaction' + x)) } for (var i = 1; i < prizeTextArr.length; i++) { if (prizeTextArr[i] != '') { if ((prizeNumberArr[i] > 1) && (prizeNumberArr[i] > cb.settings.kenonumbermin)) { mini = prizeNumberArr[i] } else { mini = cb.settings.kenonumbermin } randomNum = getRandomInt(mini, cb.settings.kenonumbermax); var loopcounter = 0; var numberfound = 0; while ((loopcounter < 50) && (numberfound == 0)) { if (randomNum in KenoBoardPrizes) { randomNum = getRandomInt(mini, cb.settings.kenonumbermax) } else { KenoBoardPrizes[randomNum] = sanitize(prizeTextArr[i]); KenoBoardActions[randomNum] = prizeActionArr[i]; numberfound = 1 }++loopcounter } if (numberfound == 0) { cb.sendNotice('WARNING: Could not find a spot on the board for \'' + prizeTextArr[i] + '\' ....Skipped', cb.room_slug) } } } for (var j = cb.settings.kenonumbermin; j <= cb.settings.kenonumbermax; j++) { KenoBoardNumbers.push(j); KenoTokensInGame += j } for (var k in KenoBoardPrizes) { if (KenoBoardPrizes.hasOwnProperty(k)) { KenoBoardPrizesLeft++ } } } function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min } function sanitize(str) { if (str == null) return ''; return str.replace(/[^a-zA-Z 0-9]+/g, '') } function shuffle(o) { for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o } function kenoSetup() { setupKenoBoard(); updateKenoBoard(); updateKenoPrizes(); cb.sendNotice("Kloeville - Keno Game is now active", '', '', '', 'bold'); advertiseKeno() } function updateKenoPrizes() { var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += "Kloeville - Keno Game" + '\n'; out += repeatStr('\u2014', 25) + '\n'; out += 'Prizes won:\n'; if (KenouserPrizes.length == 0) { out += 'None\n' } for (var i = 0; i < KenouserPrizes.length; i++) { out += ' ** ' + KenouserPrizes[i].prize + ' [won by ' + KenouserPrizes[i].user + ']\n' } out += '\nPrizes on the board (in random order):\n'; if (KenoBoardPrizesLeft == 0) { out += 'None\n' } var randomizedKeys = Object.keys(KenoBoardPrizes); randomizedKeys = shuffle(randomizedKeys); for (var i = 1; i < randomizedKeys.length; i++) { out += ' ** ' + KenoBoardPrizes[randomizedKeys[i]] + '\n' } out += repeatStr('\u2014', 25) + '\n'; out += ' Type !p to see the rewards.' + '\n'; out += ' Type !b to see the board.' + '\n'; out += repeatStr('\u2014', 25) + ''; KenoPrizes = out } function updateKenoBoard() { var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += "Kloeville - Keno Game" + '\n'; out += repeatStr('\u2014', 25) + '\n'; var mod = 10; if (cb.settings.kenonumbermax - cb.settings.kenonumbermin > 100) { mod = 20 } var col = 1; if (cb.settings.kenonumbermax > 99) { var fig = 3; var taken = "xxx" } else { var fig = 2; var taken = "xx" } for (var i = cb.settings.kenonumbermin; i <= cb.settings.kenonumbermax; i++) { if (KenoBoardNumbers.indexOf(i) > -1) { out += ' ' + pad(i, fig) + ' ' } else { out += ' ' + taken + ' ' } if (col == mod) { out += '\n'; col = 1 } else { col++ } } if (out.substring(out.length - 1) != '\n') out += '\n'; out += repeatStr('\u2014', 25) + '\n'; out += ' Tip a number on the board to play!' + '\n'; out += ' Type !p to see the rewards.' + '\n'; out += ' Type !b to see the board.' + '\n'; out += repeatStr('\u2014', 25) + ''; KenoBoard = out } function pad(number, length) { var str = '' + number; while (str.length < length) { str = '0' + str } return str } function showStartupMessage(userName) { if (cb.settings.wheelactive != 'Enabled') { return } var lsb = lastspinby.substring(0, 14); var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += "Kloeville - Wheel of Fortune" + '\n'; out += repeatStr('\u2014', 25) + '\n'; out += '\u203a' + ' Spin Cost: ' + cb.settings.cost_per_spin + ' tokens' + '\n'; out += '\u203a' + ' Last Spin by: ' + lsb + '\n' + '\n'; for (var x = 0; x < rewards.length; x++) { out += ' Reward ' + (x + 1) + ': ' + rewards[x] + '\n' } out += repeatStr('\u2014', 25) + '\n'; out += ' Good Luck and Have Fun. ' + '\n'; out += repeatStr('\u2014', 25); if (userName.length > 0) { cb.chatNotice(out, userName) } else { cb.chatNotice(out); out = 'You (' + cb.room_slug + ') can type \'/spin UserName\' to force a spin' + '\n'; out += 'You and Mods can type \'/rewards all\' to send Rewards List to all users' + '\n'; out += 'You and Mods can type \'/help\' or \'/phelp\' or \'/apphelp\' to get a list of available commands' + ''; cb.chatNotice(out, cb.room_slug, '', '#ff0000', 'bold') } } function showStartupMessageNew(userName) { if (cb.settings.wheelactive != 'Enabled') { return } var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += '\u203a ' + "Kloeville - Wheel of Fortune" + '\n'; out += repeatStr('\u2014', 25) + '\n'; out += '\u203a ' + 'Spin Cost: ' + cb.settings.cost_per_spin + ' tokens' + '\n'; out += '\u203a ' + 'Type \'/rewards\' to see rewards' + '\n'; out += repeatStr('\u2014', 25); if (userName.length > 0) { cb.chatNotice(out, userName) } else { cb.chatNotice(out, '', '', '', 'bold'); out = 'You [' + cb.room_slug + '] can type \'/spin UserName\' to force a spin' + '\n'; out += 'You and Mods can type \'/rewards all\' to send Rewards List to all users' + '\n'; out += 'You and Mods can type \'/help\' or \'/phelp\' or \'/apphelp\' to get a list of available commands' + ''; cb.chatNotice(out, cb.room_slug, '', '#ff0000', 'bold') } } function repeatStr(string, counter) { var temp = ''; for (x = 1; x <= counter; x++) { temp += string } return temp } function FractionSpin(userName, amount) { var percentchance = Math.floor((amount * 100) / cb.settings.cost_per_spin); var winner = Math.round(100 * Math.random()) + 1; if (winner <= percentchance) { var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += '\u203a ' + "KloeHaze gave '" + userName + "' a " + percentchance + "% chance of a spin" + '\n'; out += '\u203a ' + userName + " is a winner!!" + '\n'; out += repeatStr('\u2014', 25); cb.chatNotice(out, '', '', '', 'bold'); spinWheel(userName, 0); cb.drawPanel() } else { var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += '\u203a ' + "KloeHaze gave '" + userName + "' a " + percentchance + "% chance of a spin" + '\n'; out += '\u203a ' + userName + " did not win." + '\n'; out += repeatStr('\u2014', 25); cb.chatNotice(out, '', '', '', 'normal') } } function spinWheel(userName, forced) { if ((cb.settings.wheelactive != 'Enabled') && (forced != 1)) { return } if ((WheelActive == 0) && (forced != 1)) { return } var out = ''; if (forced == 0) { lastspinby = userName } if (userName == 'forced') { userName = cb.room_slug } out += repeatStr('\u2014', 25) + '\n'; out += '\u203a' + ' Spinning the Wheel for ' + userName + '\n'; var randomnumber = Math.floor(Math.random() * (rewards.length)); out += '\u203a' + ' Stopped on: ' + rewards[randomnumber] + '\n'; out += repeatStr('\u2014', 25); cb.chatNotice(out, '', '#dfffb2', '', 'bold'); if ((rewardsaction[randomnumber] == "Request email in tip note") || (rewardsaction[randomnumber] == "Track and Request email")) { if (userName != cb.room_slug) { var message = cb.settings.wheelemailtxt.replace('USERNAME', userName); cb.chatNotice(message, userName, '', '#FF0000', 'bolder'); cb.chatNotice('\'Request email\'-message have been sent to ' + userName, cb.room_slug, '', '#0000FF', 'normal') } } if ((rewardsaction[randomnumber] == "Track Reward") || (rewardsaction[randomnumber] == "Track and Request email")) { TrackReward(userName, rewards[randomnumber]) } } function TrackReward(userName, rewardwon) { RewardsTrackingCount += 1; RewardsTracking[RewardsTrackingCount] = rewardwon + " [" + userName + "]"; cb.chatNotice('Tracking Reward. type \'/track\' to list the tracking list.', cb.room_slug, '', '#0000FF', 'bolder') } function TrackListRewards() { var out = ""; for (var i = 1; i < RewardsTracking.length; i++) { if (typeof RewardsTracking[i] !== 'undefined') { out += '#' + i + ': ' + RewardsTracking[i] + '\n' } } if (out != '') { out = repeatStr('\u2014', 25) + '\n' + 'Rewards Tracking' + '\n' + repeatStr('\u2014', 25) + '\n' + out; out += '\n' + 'To remove #154 type \'/untrack 154\'.' + '\n' + repeatStr('\u2014', 25); cb.chatNotice(out, cb.room_slug, '', '', 'normal') } else { cb.chatNotice("Tracking list is empty!", cb.room_slug, '', '#0000FF', 'bold') } } function TrackRemove(id) { if (typeof RewardsTracking[id] !== 'undefined') { RewardsTracking[id] = undefined; cb.chatNotice('#' + id + ' removed from tracking.', cb.room_slug, '', '#0000FF', 'bolder'); TrackListRewards() } else { cb.chatNotice('#' + id + ' does not exist.', cb.room_slug, '', '#FF0000', 'bolder') } } cb.onTip(function(tip) { var skiptip = 0; var user = tip['from_user']; UserTotalTips[user] = (UserTotalTips[user] || 0) + parseInt(tip['amount']); if (parseInt(tip['amount']) > htcount) { htcount = parseInt(tip['amount']); htname = user } if ((TicketPrice > 0) && (UserTotalTips[user] >= TicketPrice)) { var added = IssueTickets(user); if (added > 0) { cb.sendNotice("* Show Ticket bought by '" + user + "', enjoy the show", '', '#dfffb2', '#ff0000', 'bolder') } } if (cb.settings.skiptipamounts.length > 0) { var skiparray = []; skiparray = cb.settings.skiptipamounts.split(','); for (var i = 0; i < skiparray.length; i++) { if (tip['amount'] == parseInt(skiparray[i], 10)) { skiptip = 1 } } if (skiptip) { cb.chatNotice('Tip from ' + tip['from_user'] + ' [' + tip['amount'] + '] did not count towards room goal, as per your settings.', cb.room_slug, '', '#ff0000', 'bold') } } var wheelspun = 0; if ((cb.settings.wheelactive == 'Enabled') && (skiptip == 0)) { var tipJar = tip['amount']; var userName = tip['from_user']; if (tipJar == cb.settings.cost_per_spin) { spinWheel(userName, 0); wheelspun = 1; cb.chatNotice('Thank you ' + userName + ', for playing the Wheel of Fortune', userName, '', '#0000FF', 'bolder') } else if ((fractionalspilenabled) && (cb.settings.kenoactive == 'No') && (tipJar < cb.settings.cost_per_spin) && (tipJar > 9)) { FractionSpin(userName, tip['amount']); wheelspun = 1 } } if ((cb.settings.kenoactive == 'Yes') && (skiptip == 0)) { if (wheelspun == 0) { TrackUserTotalKenoTips[tip['from_user']] = (TrackUserTotalKenoTips[tip['from_user']] || 0) + parseInt(tip['amount']); KenoTip(tip['amount'], tip['from_user']) } } if ((cb.settings.autogoalresetactive == 'Enabled') && (skiptip == 0)) { var tipped = tip['amount']; current_goal_tipped += tipped; if (current_goal_tipped >= cb.settings.tokens) { goalReached() } if (!cb.limitCam_isRunning()) { update_subject() } } if (skiptip == 0) { total_tipped += parseInt(tip['amount']) } cb.drawPanel() }); function drawKenoNumber(n, user) { var out = ''; var kenowin = 0; if (user == 'GROUP') { out += '-- GROUP Number called [ ' + n + ' ]\n' } else { out += '-- Number called [ ' + n + ' ]\n' } KenoBoardNumbers.splice(KenoBoardNumbers.indexOf(n), 1); if (n in KenoBoardPrizes) { out += ' ** WINNER ** - Prize won: ' + KenoBoardPrizes[n]; kenowin = 1; if ((KenoBoardActions[n] == "Request email in tip note") || (KenoBoardActions[n] == "Track and Request email")) { var message = cb.settings.wheelemailtxt.replace('USERNAME', user); cb.chatNotice(message, user, '', '#FF0000', 'bolder'); cb.chatNotice('\'Request email\'-message have been sent to ' + user, cb.room_slug, '', '#0000FF', 'normal') } if ((KenoBoardActions[n] == "Track Reward") || (KenoBoardActions[n] == "Track and Request email")) { TrackReward(user, 'Keno: ' + KenoBoardPrizes[n]) } KenouserPrizes.push({ prize: KenoBoardPrizes[n], user: user }); delete KenoBoardPrizes[n]; KenoBoardPrizesLeft--; updateKenoPrizes() } else { out += '-------- No prize won, try again' } KenoTokensPlayed += n; KenoTokensInGame -= n; if (kenowin) { cb.chatNotice(out, '', '#00FF00', '', 'bolder') } else { cb.chatNotice(out) } } function KenoCheckLowerNumber(tip, user) { for (var v = tip; v > 0; x--) { if (boardNumbers.indexOf(v) > -1) { drawKenoNumber(v, user); tip = tip - v } } } function GetFullKenoBoard(user) { var out = ''; for (var v = cb.settings.kenonumbermin; v <= cb.settings.kenonumbermax; v++) { if (out) { out += "\n" } out += "#" + v + " :"; if (KenoBoardNumbers.indexOf(v) > -1) { out += "FREE: " } else { out += "GONE: " } if (KenoBoardPrizes[v]) { out += KenoBoardPrizes[v] } else { out += "-" } } cb.sendNotice(out, user, '', '#ff0000') } function KenoTip(tip, user) { var out = ''; if (KenoBoardNumbers.indexOf(tip) > -1) { drawKenoNumber(tip, user); tip = 0 } else { var runloop = 1; var picked = 0; while (runloop) { picked = 0; for (var v = tip; v > 0; v--) { if (KenoBoardNumbers.indexOf(v) > -1) { drawKenoNumber(v, user); tip = tip - v; picked = v; break } } if (!picked) { runloop = 0 } } if (tip > 0) { KenoPartialBucket = KenoPartialBucket + tip; var endnumbersearch = 0; for (var v = cb.settings.kenonumbermax; v >= cb.settings.kenonumbermin; v--) { if ((!endnumbersearch) && (KenoBoardNumbers.indexOf(v) > -1)) { if (KenoPartialBucket >= v) { drawKenoNumber(v, 'GROUP'); KenoPartialBucket = KenoPartialBucket - v } else { endnumbersearch = 1 } } } } } updateKenoBoard(); if (KenoBoardPrizesLeft < 1) { out += "No more prizes left on the Keno Board, the game has ended.\n"; cb.settings.kenoactive = 'No'; var topplayer = ''; var topplayertips = 0; for (var usr in TrackUserTotalKenoTips) { if (TrackUserTotalKenoTips.hasOwnProperty(usr)) { if (topplayertips < TrackUserTotalKenoTips[usr]) { topplayer = usr; topplayertips = TrackUserTotalKenoTips[usr] } } } if (topplayer) { out += " *** Most Valuable Player in this game was: " + topplayer + " (" + topplayertips + " tokens)"; if ((typeof(cb.settings.kenomvpprize) != 'undefined') && (cb.settings.kenomvpprize.length > 1)) { out += "\n *** " + topplayer + " wins: " + cb.settings.kenomvpprize } cb.sendNotice(out, '', '', '#ff0000', 'bolder') } } } cb.onEnter(function(user) { if (cb.limitCam_isRunning()) { cb.chatNotice('Exclusive Hidden Cam Show in progress [' + ReturnShowProgressMinutes() + ']. Tip ' + TicketPrice + ' tokens to join the show.', user['user'], '', '#0000FF', 'bolder') } else { if ((cb.settings.announcewheelonenter == 'Yes') && (cb.settings.wheelactive == 'Enabled')) { if (user['has_tokens']) { showStartupMessageNew(user['user']) } } if ((cb.settings.kenoannounceonenter == 'Yes') && (cb.settings.kenoactive == 'Yes')) { if (user['has_tokens']) { advertiseKeno(user['user']) } } } }); function drawKenoBoard(user) { if (user) { cb.sendNotice(KenoBoard, user) } else { cb.sendNotice(KenoBoard) } } function drawKenoPrizes(user) { if (user) { cb.sendNotice(KenoPrizes, user) } else { cb.sendNotice(KenoPrizes) } } cb.onMessage(function(msg) { var userName = msg['user']; var message = msg['m']; message = message.replace(':kloehazesexygirl ', ''); message = message.replace(':kloehazetophat : ', ''); message = message.replace(':kloehazecrownsilver : ', ''); message = message.replace(':kloehazecrowngold : ', ''); message = message.replace(':kloehazeticket ', ''); message = message.replace('[Godlike]', ""); message = message.replace('[godlike]', ""); message = message.replace('[Imperial]', ""); message = message.replace('[imperial]', ""); message = message.replace('[Senator]', ""); message = message.replace('[senator]', ""); message = message.replace('[Equestrian]', ""); message = message.replace('[equestrian]', ""); message = message.replace('[Patrician]', ""); message = message.replace('[patrician]', ""); if (((message.substr(message.length - 8) == '/rewards') || (message.substr(message.length - 7) == '/reward') || (message.substr(message.length - 2) == '!p'))) { if ((!msg['has_tokens']) && (userName != cb.room_slug) && (!msg['is_mod'])) { cb.chatNotice('(please buy tokens to play!)', userName, '', '#FF0000', 'bolder') } if (cb.settings.wheelactive == 'Enabled') { msg['m'] += " (got the Rewards List by typing '" + message + "')"; showStartupMessage(userName) } if (cb.settings.kenoactive == 'Yes') { drawKenoPrizes(userName) } return msg } else if ((message.substr(message.length - 9) == '/kenofull') && (cb.settings.kenoactive == 'Yes') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; GetFullKenoBoard(userName); return msg } else if ((cb.settings.kenoactive == 'Yes') && (message.substr(message.length - 2) == '!b')) { if (userName == cb.room_slug) { drawKenoBoard('') } else { msg['m'] += " (got the Keno Board by typing '" + message + "')"; drawKenoBoard(userName) } return msg } else if (((message.substr(message.length - 12) == '/rewards all') && ((msg['is_mod']) || (userName == cb.room_slug)))) { cb.chatNotice('You sent the Rewards List to everybody', userName, '', '#0000FF', 'bolder'); msg['m'] = 'Sending the Rewards List to everybody'; if (cb.settings.wheelactive == 'Enabled') { showStartupMessage('') } if (cb.settings.kenoactive == 'Yes') { drawKenoPrizes('') } return msg } else if ((message.substring(0, 5) == '/spin') && (userName == cb.room_slug)) { if (message.length > 6) { var forceduser = message.substr(6); spinWheel(forceduser, 1) } else { spinWheel('forced', 1) } msg['m'] = 'Spinning the Wheel'; return msg } else if (((message == '/help') || (message == '/apphelp') || (message == '/phelp') || (message == '/pwhelp')) && ((msg['is_mod']) || (userName == cb.room_slug))) { if (msg['user'] == cb.room_slug) { showHelp('broadcaster', userName) } else { showHelp('moderator', userName) } msg['X-Spam'] = true; return msg } else if ((message.substring(0, 11) == '/addtokens ') && (userName == cb.room_slug)) { msg['X-Spam'] = true; if (message.substring(0, 12) == '/addtokens -') { if (message.length > 12) { TipAddRemove(parseInt(message.substr(12), 10), 'remove') } else { cb.chatNotice('/addtokens command failed (no amount?)', userName, '', '#FF0000', 'bold') } } else { if (message.length > 11) { TipAddRemove(parseInt(message.substr(11), 10), 'add') } else { cb.chatNotice('/addtokens command failed (no amount?)', userName, '', '#FF0000', 'bold') } } return msg } else if ((message.substring(0, 9) == '/untrack ') && (userName == cb.room_slug)) { msg['X-Spam'] = true; if (message.length > 9) { TrackRemove(parseInt(message.substr(9), 10)) } return msg } else if (((message.substring(0, 10) == '/tracklist') || (message.substring(0, 6) == '/track')) && (userName == cb.room_slug)) { msg['X-Spam'] = true; TrackListRewards(); return msg } else if ((message.substring(0, 12) == '/setsubject ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; ActiveRoomSubject = message.substr(12); update_subject(); cb.chatNotice('New room subject set to: ' + ActiveRoomSubject, userName, '', '#FF0000', 'bold'); return msg } else if ((message.substring(0, 14) == '/settokengoal ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; cb.settings.maingoaltokens = parseInt(message.substr(14), 10); htcount = 0; htname = ''; total_tipped = 0; times_goal_reached = 0; current_goal_tipped = 0; var out = ''; out += 'New room token goal set, TipJar has been emptied' + '\n'; out += 'IF you want old user-ticket-tips-tracking to be resat, please issue /resetshowtips'; cb.chatNotice(out, userName, '', '#FF0000', 'bold'); update_subject(); cb.drawPanel(); return msg } else if ((message.substring(0, 14) == '/resetshowtips') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { ResetShowTips(); RemoveTickets('all'); cb.chatNotice('All previous show tips are now forgotten in the Wheel', userName, '', '#FF0000', 'bold'); return msg } else if ((message.substring(0, 13) == '/ticketprice ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; var added = SetTicketPrice(parseInt(message.substr(13), 10)); if (added > 1) { var tadd = "s" } else { var tadd = "" } cb.chatNotice('Ticketprice set to ' + TicketPrice + ' tokens. ' + added + ' ticket' + tadd + ' issued.', userName, '', '#FF0000', 'bold'); cb.drawPanel(); update_subject(); return msg } else if ((message.substring(0, 10) == '/addusers ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; var added = IssueTickets(message.substr(10)); if (added > 1) { var tadd = "s" } else { var tadd = "" } cb.chatNotice(added + ' ticket' + tadd + ' issued.', userName, '', '#FF0000', 'bold'); if (userName != cb.room_slug) { cb.chatNotice(added + ' ticket' + tadd + ' issued by ' + userName + '.', cb.room_slug, '', '#FF0000', 'bold') } return msg } else if ((message.substring(0, 5) == '/add ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; var added = IssueTickets(message.substr(5)); if (added > 1) { var tadd = "s" } else { var tadd = "" } cb.chatNotice(added + ' ticket' + tadd + ' issued.', userName, '', '#FF0000', 'bold'); if (userName != cb.room_slug) { cb.chatNotice(added + ' ticket' + tadd + ' issued by ' + userName + '.', cb.room_slug, '', '#FF0000', 'bold') } return msg } else if ((message.substring(0, 13) == '/removeusers ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; var added = RemoveTickets(message.substr(13)); if (added > 1) { var tadd = "s" } else { var tadd = "" } cb.chatNotice(added + ' ticket' + tadd + ' removed.', userName, '', '#FF0000', 'bold'); return msg } else if ((message.substring(0, 8) == '/remove ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; var added = RemoveTickets(message.substr(8)); if (added > 1) { var tadd = "s" } else { var tadd = "" } cb.chatNotice(added + ' ticket' + tadd + ' removed.', userName, '', '#FF0000', 'bold'); if (userName != cb.room_slug) { cb.chatNotice(added + ' ticket' + tadd + ' removed by ' + userName + '.', cb.room_slug, '', '#FF0000', 'bold') } return msg } else if (((message == '/startshow') || (message == '/showstart')) && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (!TicketPrice) { cb.sendNotice('Ticket price needs to be set first. Using /ticketprice xx', userName, '', '#ff0000', 'bold') } else { StartShow() } return msg } else if ((message.substring(0, 11) == '/startshow ') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (!TicketPrice) { cb.sendNotice('Ticket price needs to be set first. Using /ticketprice xx', userName, '', '#ff0000', 'bold') } else { if (showstartcountdown == 0) { showstartcountdown = parseInt(message.substr(11), 10); advertHiddenCam() } else { cb.sendNotice('A countdown is already running. Please first use /stopcountdown and read the instruction in chat.', userName, '', '#ff0000', 'bold') } } return msg } else if ((message == '/showtime') && ((userName == cb.room_slug) || (msg['is_mod']))) { msg['X-Spam'] = true; ShowtimeNotify(); return msg } else if ((message == '/stopcountdown') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; showstartcountdown = -2; cb.sendNotice('Countdown will be stopped within a minute, don\'t start a new countdown before it ends. (I WILL TELL YOU)', userName, '', '#ff0000', 'bold'); return msg } else if (((message == '/endshow') || (message == '/showend')) && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; EndShow(); return msg } else if ((message == '/showending') && ((userName == cb.room_slug) || (userName == 'erickkerns') || (msg['is_mod']))) { msg['X-Spam'] = true; ShowEnding(); return msg } else if ((message == '/fraction on') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; fractionalspilenabled = 1; cb.chatNotice('Fractional WheelSpin: ON', userName, '', '#FF0000', 'bold'); return msg } else if ((message == '/fraction off') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; fractionalspilenabled = 0; cb.chatNotice('Fractional WheelSpin: OFF', userName, '', '#FF0000', 'bold'); return msg } else if ((message == '/autoreset on') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (cb.settings.autogoalresetactive == "Disabled") { cb.settings.autogoalresetactive = 'Enabled'; cb.chatNotice('Auto Goal Reset is now active (this message only shown to you)', userName, '', '#FF0000', 'bold'); cb.drawPanel() } return msg } else if ((message == '/autoreset off') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (cb.settings.autogoalresetactive == "Enabled") { cb.settings.autogoalresetactive = 'Disabled'; cb.chatNotice('Auto Goal Reset is now disabled (this message only shown to you)', userName, '', '#FF0000', 'bold'); cb.drawPanel() } return msg } else if ((message == '/wheel on') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (cb.settings.wheelactive == "Disabled") { cb.settings.wheelactive = 'Enabled'; cb.chatNotice('Wheel of Fortune is now active', '', '', '#FF0000', 'bold'); cb.drawPanel(); update_subject() } return msg } else if ((message == '/wheel off') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (cb.settings.wheelactive == "Enabled") { cb.settings.wheelactive = 'Disabled'; cb.chatNotice('Wheel of Fortune has been shut down', '', '', '#FF0000', 'bold'); cb.drawPanel(); update_subject() } return msg } else if ((message == '/keno on') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (cb.settings.kenoactive == "No") { cb.settings.kenoactive = "Yes"; cb.chatNotice('Keno Game is now active', '', '', '#FF0000', 'bold'); kenoSetup(); cb.drawPanel(); update_subject() } return msg } else if ((message == '/keno off') && ((userName == cb.room_slug) || (userName == 'erickkerns'))) { msg['X-Spam'] = true; if (cb.settings.kenoactive == "Yes") { cb.settings.kenoactive = "No"; cb.chatNotice('Keno Game has been shut down', '', '', '#FF0000', 'bold'); cb.drawPanel(); var topplayer = ''; var topplayertips = 0; for (var usr in TrackUserTotalKenoTips) { if (TrackUserTotalKenoTips.hasOwnProperty(usr)) { if (topplayertips < TrackUserTotalKenoTips[usr]) { topplayer = usr; topplayertips = TrackUserTotalKenoTips[usr] } } } if (topplayer) { out += " *** Most Valuable Player in this game was: " + topplayer + " (" + topplayertips + " tokens)"; if ((typeof(cb.settings.kenomvpprize) != 'undefined') && (cb.settings.kenomvpprize.length > 1)) { out += "\n *** " + topplayer + " wins: " + cb.settings.kenomvpprize } cb.sendNotice(out, '', '', '#ff0000', 'bolder') } update_subject() } return msg } else if ((message == '/users') || (message == '/tickets') || (message == '/ticket')) { msg['X-Spam'] = true; if ((userName == cb.room_slug) || (msg['is_mod'])) { ListTickets(userName) } else { if (cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), userName)) { var out = "You have a ticket" + "\n"; cb.chatNotice(out, msg['user'], '', '#ff0000', 'bold') } else { var out = "You do NOT have a ticket" + "\n"; cb.chatNotice(out, msg['user'], '', '#ff0000', 'bold') } } return msg } if ((TicketPrice > 0) && (cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), userName))) { if ((typeof(cb.settings.ticketicon) != 'undefined') && (cb.settings.ticketicon.length > 1)) { msg['m'] = cb.settings.ticketicon + " " + msg['m'] } if ((typeof(cb.settings.ticketbackground) != 'undefined') && (cb.settings.ticketbackground.length > 1)) { msg['background'] = cb.settings.ticketbackground } } return msg }); function ListTickets(user) { var out = ''; var userlist = cb.limitCam_allUsersWithAccess(); if (userlist.length > 0) { out = ("" + userlist.length + (userlist.length > 1 ? " tickets" : " ticket") + " issued: " + cbjs.arrayJoin(userlist, ", ")) } else { out = ("No tickets issued.") } cb.chatNotice(out, user, '', '', 'bold') } function ShowEnding() { showending = 1; ActiveRoomSubject = "SHOW IS ENDING, buying a ticket now is not recommended."; var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += '\u203a ' + "SHOW IS ENDING" + '\n'; out += '\u203a ' + "Buying a ticket now is not recommended" + '\n'; out += repeatStr('\u2014', 25) + ''; cb.sendNotice(out, '', '', '#ff0000', 'bold'); update_subject() } function EndShow() { if (cb.limitCam_isRunning()) { cb.limitCam_stop(); WheelActive = 1; TicketPrice = 0; cb.limitCam_removeAllUsers() } showending = 0; cb.sendNotice("* KloeHaze has ended the Exclusive Hidden Cam Show after " + ReturnShowProgressMinutes() + " minutes.", '', '', '', 'bold') } function ShowtimeNotify() { var out = ""; out += "Exclusive Hidden Cam Show progress: " + ReturnShowProgressMinutes() + " minutes." + '\n'; out += "Tip " + TicketPrice + " to join us."; cb.sendNotice(out, '', '', '', 'bold') } function StartShow() { if (!cb.limitCam_isRunning()) { WheelActive = 0; showstarted = Math.round(+new Date() / 1000); cb.limitCam_start('Exclusive Hidden Cam Show in progress. Tip ' + TicketPrice + ' tokens to join the show.') } showending = 0; var out = ""; out += repeatStr('\u2014', 25) + '\n'; out += "* KloeHaze has started the Exclusive Hidden Cam Show." + '\n'; out += "* Ticket price is only " + TicketPrice + " tokens, join us." + '\n'; out += repeatStr('\u2014', 25); cb.sendNotice(out, '', '', '#dc5500', 'bolder'); var new_subject = 'Exclusive Hidden Cam Show in progress. Tip ' + TicketPrice + ' tokens to join the show.'; cb.changeRoomSubject(new_subject) } function ReturnShowProgressMinutes() { var seconds = Math.round((+new Date() / 1000) - showstarted); if (seconds < 60) { return "0:" + (seconds < 10 ? '0' : '') + seconds } else { var minutes = Math.floor(seconds / 60); var rseconds = (seconds - (minutes * 60)); return minutes + ":" + (rseconds < 10 ? '0' : '') + rseconds } } function RemoveTickets(users) { if (!users) { return 0 } if (cb.limitCam_allUsersWithAccess().length < 1) { return 0 } var out = ""; var counter = 0; if (users == 'all') { counter = CountTicketUsers(); cb.limitCam_removeAllUsers() } else { var temp = users.split(/,/); for (var i = 0; i < temp.length; i++) { if (cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), temp[i])) { cb.limitCam_removeUsers([temp[i]]); counter = counter + 1; if (out.length > 0) { out += '\n' } out += temp[i] + ' removed from show.' } } } if (counter > 0) { cb.chatNotice(out, cb.room_slug, '', '#FF0000', '') } return counter } function IssueTickets(users) { if (!users) { return 0 } var counter = 0; var out = ""; var temp = users.split(/,/); for (var i = 0; i < temp.length; i++) { if (!cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), temp[i])) { cb.limitCam_addUsers([temp[i]]); cb.sendNotice("* You will be able to view the exclusive 'Hidden Cam Show'.", temp[i], '', '', 'bold'); counter = counter + 1; if (out.length > 0) { out += '\n' } out += temp[i] + ' now has a ticket.' } } if (counter > 0) { cb.chatNotice(out, cb.room_slug, '', '#FF0000', '') } return counter } function ResetShowTips() { for (var user in UserTotalTips) { if (UserTotalTips.hasOwnProperty(user)) { if (UserTotalTips[user] > 0) { UserTotalTips[user] = 0 } } } } function SetTicketPrice(price) { cb.limitCam_removeAllUsers(); TicketPrice = price; var counter = 0; for (var user in UserTotalTips) { if (UserTotalTips.hasOwnProperty(user)) { if (UserTotalTips[user] >= TicketPrice) { IssueTickets(user); counter = counter + 1 } } } return counter } function CountTicketUsers() { return cb.limitCam_allUsersWithAccess().length } function TipAddRemove(amount, action) { if (amount < 1) { cb.chatNotice('command failed (illegal amount!)', cb.room_slug, '', '#FF0000', 'bold'); return } if (action == 'remove') { current_goal_tipped -= amount; total_tipped -= amount; cb.chatNotice(amount + ' tokens subtracted from room goal', cb.room_slug, '', '#FF0000', 'bold') } if (action == 'add') { current_goal_tipped += amount; total_tipped += amount; cb.chatNotice(amount + ' tokens added to room goal', cb.room_slug, '', '#FF0000', 'bold') } while (current_goal_tipped >= cb.settings.tokens) { current_goal_tipped -= cb.settings.tokens; times_goal_reached += 1; last_time_goal_reached = new Date() } while (current_goal_tipped < 0) { current_goal_tipped += cb.settings.tokens; times_goal_reached -= 1 } if (times_goal_reached < 0) { current_goal_tipped = 0; times_goal_reached = 0 } update_subject(); cb.drawPanel() } function showHelp(type, userName) { var out = ""; out += repeatStr('\u2014', 25) + '\n'; out += 'Kloeville Application ' + '\n'; out += repeatStr('\u2014', 25) + '\n'; if (type == "broadcaster") { out += '\'/wheel <on/off>\' turn on/off Wheel of Fortune' + '\n'; out += '\'/spin UserName\' to force a spin' + '\n'; out += '\'/addtokens xxx\' to add xxx tokens to the total room goal' + '\n'; out += '\'/addtokens -xxx\' to remove xxx tokens from the total room goal' + '\n'; out += '\'/track\' to list the tracked rewards' + '\n'; out += '\'/untrack xxx\' to remove #xxx from the tracking list' + '\n\n'; out += '\'/fraction <on/off>\' activated or deactivates Fractional Spins (10 tokens or more)' + '\n'; out += '\'/keno <on/off>\' turn on/off Keno Game' + '\n'; out += '\'/kenofull\' see the complete board (behind the scenes)' + '\n'; out += '\'/autoreset <on/off>\' turn on/off Auto Goal Reset' + '\n'; out += '\'/setsubject xxx\' to set room subject to xxx' + '\n'; out += '\'/settokengoal xxx\' to set MAIN room goal to xxx tokens' + '\n\n'; out += '\'/ticketprice xxx\' to set Ticket Price to xxx tokens' + '\n'; out += '\'/resetshowtips\' to reset users tips (right before selling show tickets)' + '\n'; out += '\'/add xxx,yyy,zzz\' will issue a Ticket to user xxx, yyy and zzz' + '\n'; out += '\'/remove xxx,yyy,zzz\' will remove Ticket from user xxx, yyy and zzz' + '\n'; out += '\'/remove all\' will remove all users from the show' + '\n'; out += '\'/users or /tickets\' will show a list of ticket holders' + '\n'; out += '\'/startshow\' starts hidden cam show right away' + '\n'; out += '\'/startshow xxx\' starts hidden cam show in ABOUT xxx minutes' + '\n'; out += '\'/stopcountdown\' stops hidden cam show countdown' + '\n'; out += '\'/endshow\' ends the hidden cam show' + '\n'; out += '\n' } out += '\'/rewards all\' to send Rewards List to all users' + '\n'; out += '\'/apphelp\' to get a list of available commands' + '\n'; out += '\'/showending\' will recommend users NOT to buy a ticket for the show' + '\n'; out += '\'/showtime\' displays the current hidden show duration' + '\n'; out += repeatStr('\u2014', 25); cb.chatNotice(out, userName, '', '#FF0000', 'bold') } function kenoMVP() { var topplayer = ''; var topplayertips = 0; for (var usr in TrackUserTotalKenoTips) { if (TrackUserTotalKenoTips.hasOwnProperty(usr)) { if (topplayertips < TrackUserTotalKenoTips[usr]) { topplayer = usr; topplayertips = TrackUserTotalKenoTips[usr] } } } if (!topplayer) { topplayer = 'none'; topplayertips = 0 } return topplayer + " (" + topplayertips + " tok)" } cb.onDrawPanel(function(user) { var tempone = ''; var temptwo = ''; var changed = 0; var skipmvp = 0; var unixts = Math.round(+new Date() / 1000); if ((lastpageturn + 18) < unixts) { if (page == 1) { page = 2 } else { page = 1 } lastpageturn = unixts } tempone = ''; temptwo = ''; if (((cb.settings.wheelactive == 'Enabled') && (page == 2)) || ((cb.settings.wheelactive == 'Enabled') && (TicketPrice == 0))) { var lsb = lastspinby.substring(0, 14); tempone = 'Spin Cost (win):'; temptwo = cb.settings.cost_per_spin + ' (' + lsb + ')' } else if (TicketPrice > 0) { tempone = 'Ticket Cost (users):'; temptwo = TicketPrice + ' . (' + CountTicketUsers() + ')' } else if (htcount > 0) { tempone = "Highest Tip"; temptwo = "(" + htcount + ") " + htname.substring(0, 10) } if ((!tempone) && (cb.settings.kenoactive == 'Yes')) { tempone = 'Keno MVP:'; temptwo = kenoMVP(); skipmvp = 1 } if ((tempone != row1l) || (temptwo != row1v)) { row1l = tempone; row1v = temptwo; changed = 1 } tempone = ''; temptwo = ''; if ((TicketPrice < 1) && (cb.settings.kenoactive == 'Yes')) { tempone = 'Keno Board:'; temptwo = '' + KenoBoardNumbers.length + ' #s / ' + KenoBoardPrizesLeft + ' prizes'; if ((page == 2) && (!skipmvp)) { tempone = 'Keno MVP:'; temptwo = kenoMVP() } } else if (cb.limitCam_isRunning()) { tempone = 'Show Progress:'; temptwo = ReturnShowProgressMinutes() } else if ((TicketPrice > 0) && (showstartcountdown > 0)) { if (showstartcountdown > 0) { var sadd = 's' } else { var sadd = '' } tempone = 'Show Start:'; temptwo = 'in ' + (showstartcountdown) + ' minute' + sadd } else { tempone = "Main Goal:"; if (cb.settings.maingoaltokens > 0) { if (cb.settings.maingoaltokens > total_tipped) { temptwo = 'in ' + (cb.settings.maingoaltokens - total_tipped) + " tokens" } else { temptwo = "REACHED" } } else { tempone = ""; temptwo = "" } } if ((tempone != row2l) || (temptwo != row2v)) { row2l = tempone; row2v = temptwo; changed = 1 } tempone = ''; temptwo = ''; if (cb.settings.autogoalresetactive == 'Enabled') { tempone = 'Received / Goal (Total):'; temptwo = current_goal_tipped + ' / ' + cb.settings.tokens + ' (' + ((times_goal_reached * cb.settings.tokens) + current_goal_tipped) + ')' } if (cb.settings.kenoactive == 'Yes') { tempone = 'Played / On Board:'; temptwo = KenoTokensPlayed + ' / ' + KenoTokensInGame } if ((tempone != row3l) || (temptwo != row3v)) { row3l = tempone; row3v = temptwo; changed = 1 } return { 'template': '3_rows_of_labels', 'row1_label': '' + row1l + '', 'row1_value': '' + row1v + '', 'row2_label': '' + row2l + '', 'row2_value': '' + row2v + '', 'row3_label': '' + row3l + '', 'row3_value': '' + row3v + '' } }); function advertHiddenCam() { var out = ''; if (showstartcountdown > 0) { cb.setTimeout(advertHiddenCam, 60000); if (showstartcountdown > 1) { var sadd = 's' } else { var sadd = '' } out += repeatStr('\u2014', 25) + '\n'; out += 'The Exclusive Hidden Cam Show will start in ' + (showstartcountdown) + ' minute' + sadd + '\n'; out += 'Ticket Price is only: ' + TicketPrice + ' tokens!' + '\n'; out += repeatStr('\u2014', 25) + ''; cb.chatNotice(out, '', '', '#0000ff', 'bold'); showstartcountdown = showstartcountdown - 1 } else { if (showstartcountdown > -2) { showstartcountdown = 0; StartShow() } else { showstartcountdown = 0; cb.sendNotice('Countdown Ended.. you can start a new one now if you want.', cb.room_slug, '', '#ff0000', 'bold') } } } function updatepanel() { cb.setTimeout(updatepanel, 20000); cb.drawPanel() } if (cb.settings.wheelactive == 'Enabled') { showStartupMessageNew('') } if (cb.settings.kenoactive == 'Yes') { kenoSetup() } if (cb.settings.autogoalresetactive == 'Enabled') { update_subject(); updatepanel() } function anotifyer() { cb.setTimeout(anotifyer, 60000); if ((cb.settings.notify1time > 0) && (cb.settings.notify1text.length > 1)) { if ((Math.round(+new Date() / 1000) - LastNotice[1]) > ((cb.settings.notify1time * 60) - 30)) { cb.chatNotice(cb.settings.notify1text, '', '', '#000000', 'bold'); LastNotice[1] = Math.round(+new Date() / 1000); return 0 } } if ((cb.settings.notify2time > 0) && (cb.settings.notify2text.length > 1)) { if ((Math.round(+new Date() / 1000) - LastNotice[2]) > ((cb.settings.notify2time * 60) - 30)) { cb.chatNotice(cb.settings.notify2text, '', '', '#000000', 'bold'); LastNotice[2] = Math.round(+new Date() / 1000); return 0 } } if ((cb.settings.notify3time > 0) && (cb.settings.notify3text.length > 1)) { if ((Math.round(+new Date() / 1000) - LastNotice[3]) > ((cb.settings.notify3time * 60) - 30)) { cb.chatNotice(cb.settings.notify3text, '', '', '#000000', 'bold'); LastNotice[3] = Math.round(+new Date() / 1000); return 0 } } if ((cb.settings.notify4time > 0) && (cb.settings.notify4text.length > 1)) { if ((Math.round(+new Date() / 1000) - LastNotice[4]) > ((cb.settings.notify4time * 60) - 30)) { cb.chatNotice(cb.settings.notify4text, '', '', '#000000', 'bold'); LastNotice[4] = Math.round(+new Date() / 1000); return 0 } } if ((cb.settings.notify5time > 0) && (cb.settings.notify5text.length > 1)) { if ((Math.round(+new Date() / 1000) - LastNotice[5]) > ((cb.settings.notify5time * 60) - 30)) { cb.chatNotice(cb.settings.notify5text, '', '', '#000000', 'bold'); LastNotice[5] = Math.round(+new Date() / 1000); return 0 } } } LastNotice[1] = Math.round(+new Date() / 1000); LastNotice[2] = Math.round(+new Date() / 1000); LastNotice[3] = Math.round(+new Date() / 1000); LastNotice[4] = Math.round(+new Date() / 1000); LastNotice[5] = Math.round(+new Date() / 1000); cb.setTimeout(anotifyer, 60000); function sorryannouncement() { cb.chatNotice('Sorry, the Kloeville Application was made for KloeHaze\'s room, it has become very room specific, please make your own Application', '', '', '#ff0000', 'bold'); cb.setTimeout(sorryannouncement, 20000) } function update_subject() { if (cb.limitCam_isRunning()) { if (showending) { var new_subject = ActiveRoomSubject } else { var new_subject = 'Exclusive Hidden Cam Show in progress [' + ReturnShowProgressMinutes() + ']. Tip ' + TicketPrice + ' tokens to join the show. #cumshow #cum #pussy #sexy #orgasm' } } else { var addtags = ""; if (TicketPrice > 0) { addtags = addtags + " #cumshow #cum #orgasm" } if (cb.settings.wheelactive == 'Enabled') { addtags = addtags + " #wheeloffortune" } if (cb.settings.kenoactive == 'Yes') { addtags = addtags + " #tokenkeno" } if (TicketPrice > 0) { addtags = addtags + " #exclusive #naked #pussy #tits" } addtags = addtags + " #fun #games"; var new_subject = ActiveRoomSubject + " [" + tips_remaining() + " tokens remaining]" + addtags } cb.changeRoomSubject(new_subject) } function goalReached(silent) { var out = ''; last_time_goal_reached = new Date(); var curr_times_reached = Math.floor(current_goal_tipped / cb.settings.tokens); for (var i = 0; i < curr_times_reached; i++) { times_goal_reached++; current_goal_tipped -= cb.settings.tokens; if (out.length > 0) { out += '\n' } out += "*** Goal was reached for the " + getNumberString(times_goal_reached) + " time!" } if (silent == 'silent') { out = '' } if (out.length > 0) { cb.chatNotice(out, '', '', '', 'bolder') } } function getNumberString(number) { var numberString = null; if (number == 1) { numberString = "1st" } else if (number == 2) { numberString = "2nd" } else if (number == 3) { numberString = "3rd" } else { numberString = "" + number + "th" } return (numberString) } function tips_remaining() { var r = cb.settings.tokens - current_goal_tipped; if (r < 0) { return 0 } else { return r } } function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds) { break } } } function advertWheel() { var out = ''; if ((cb.settings.wheelactive == 'Enabled') && (!cb.limitCam_isRunning())) { var lsb = lastspinby.substring(0, 14); out += repeatStr('\u2014', 25) + '\n'; out += 'Kloeville - Wheel of Fortune' + ' \u00bb Last Spin by: ' + lsb + '\n'; out += 'Tip ' + cb.settings.cost_per_spin + ' to Play \u2022 Type \'/rewards\' to see rewards'; cb.chatNotice(out, '', '', '#0000ff', 'normal') } cb.setTimeout(advertWheel, (cb.settings.advertise_in_chat * 60000)) } if (cb.settings.advertise_in_chat > 0) { cb.setTimeout(advertWheel, (cb.settings.advertise_in_chat * 60000)) } function advertiseKeno(user) { var out = ''; out += repeatStr('\u2014', 25) + '\n'; out += " Kloeville - Keno Game - Tip a number on the board to play!" + "\n"; out += ' Type !p to see the prizes. Type !b to see the board.' + '\n'; if ((typeof(cb.settings.kenomvpprize) != 'undefined') && (cb.settings.kenomvpprize.length > 1)) { out += " Most Valuable Player will win: " + cb.settings.kenomvpprize + "\n" } out += repeatStr('\u2014', 25) + ''; cb.sendNotice(out, user) } function advertKeno() { if ((cb.settings.kenoactive == 'Yes') && (!cb.limitCam_isRunning())) { advertiseKeno() } cb.setTimeout(advertKeno, (cb.settings.kenoadvertise_in_chat * 60000)) } if (cb.settings.kenoadvertise_in_chat > 0) { cb.setTimeout(advertKeno, (cb.settings.kenoadvertise_in_chat * 60000)) }
© Copyright Chaturbate 2011- 2026. All Rights Reserved.