Apps Home
|
Create an App
Nekoapp
Author:
sypunk
Description
Source Code
Launch App
Current Users
Created by:
Sypunk
/** * Nekoapp (Singleton Pattern) * @author Sypunk * @version 1.0.6 Build1 * @date-created 2016.08.01 * @date-modified 2017.03.14 * @description A customized app for Nekolukka * Todo: */ var Nekoapp = (function () { // private methods and properties // ... return { message: { module: { tipscounter: { showHelp: function (oMsg, bIsRoomCreator) { var s = "________________________________________\nNekoapp Tips Counter Module:\n/nekoapp tipscounter [on/off]\n________________________________________"; var bIsMod = false; if (oMsg !== undefined){ if (oMsg.is_mod !== undefined) { bIsMod = oMsg.is_mod; } } if (bIsRoomCreator === true || bIsMod === true) { cb.sendNotice(s, oMsg.user, "", "#009953", "", ""); } }, setStats: function (oTip, aryArg, oMsg, bIsRoomCreator) { var iTipAmount = 0; var sPlural = ""; if (Nekoapp.message.module.tipscounter.getEnabled() === true) { if (aryArg !== undefined) { if (aryArg[3] !== undefined) { if (aryArg[4] !== undefined) { //oUsers[aryArg[3]] = {tipTotal: parseInt(aryArg[4])}; //cb.sendNotice("Nekoapp set " + aryArg[3] + "'s tips total for today to " + aryArg[4] + " via moderator " + oMsg.user + ".", "", "", "#009953", "", ""); } } } if (oTip !== undefined) { if (oTip.amount !== undefined) { iTipAmount = parseInt(oTip.amount); if (iTipAmount > 1) { sPlural = "s"; } Nekoapp.message.module.tipscounter._oStats.iRoomTotal += iTipAmount; Nekoapp.message.module.tipscounter._oStats.iLastTipAmount = iTipAmount; Nekoapp.message.module.tipscounter._oStats.iLastTipUsername = oTip.from_user; if (iTipAmount > Nekoapp.message.module.tipscounter._oStats.iHighestTipAmount) { Nekoapp.message.module.tipscounter._oStats.iHighestTipAmount = iTipAmount; Nekoapp.message.module.tipscounter._oStats.iHighestTipUsername = oTip.from_user; } } } cb.drawPanel(); } }, setKingEnabled: function (b) { if (b === true) { if (Nekobot.message.module.bCommonStartupInitCompleted === true || (Nekobot.message.module.bCommonStartupInitCompleted === false && Nekobot.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp - Tipscounter Module King Feature On.", "", "", "#990037", "", ""); } } if (b === false) { if (Nekobot.message.module.bCommonStartupInitCompleted === true || (Nekobot.message.module.bCommonStartupInitCompleted === false && Nekobot.message.module.bCommonVerboseStartupEnabladed === true)) { cb.sendNotice("Nekoapp - Tipscounter Module King Feature Off.", "", "", "#990037", "", ""); } } Nekoapp.message.module.tipscounter._oStats.bKingEnabled = b; }, setEnabled: function (bEnabled) { if (bEnabled === true) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Tips Counter Module On.", "", "", "#009953", "", ""); } } if (bEnabled === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Tips Counter Module Off.", "", "", "#009953", "", ""); } } Nekoapp.message.module.tipscounter._bEnabled = bEnabled; }, getEnabled: function () { return Nekoapp.message.module.tipscounter._bEnabled; }, onMessage: function (aryArg, oMsg, bIsRoomCreator) { if (aryArg !== undefined) { if (aryArg[2] !== undefined) { if (aryArg[2] === "on") { Nekoapp.message.module.tipscounter.setEnabled(true); } if (aryArg[2] === "off") { Nekoapp.message.module.tipscounter.setEnabled(false); } if (aryArg[2] === "enableking") { Nekoapp.message.module.tipscounter.setKingEnabled(true); } if (aryArg[2] === "disableking") { Nekoapp.message.module.tipscounter.setKingEnabled(false); } } if (aryArg[2] === undefined) { Nekoapp.message.module.tipscounter.showHelp(oMsg, bIsRoomCreator); } } if (Nekoapp.message.module.tipscounter.getEnabled() === true) { if (Nekoapp.message.module.tipscounter._oStats.bKingEnabled === true) { if (oMsg !== undefined) { if (oMsg.user !== undefined) { if (oMsg.user === Nekoapp.message.module.tipscounter._oStats.iHighestTipUsername) { oMsg.m = " [KING] " + oMsg.m; } } } } } return oMsg; }, onDrawPanel: function(oUser){ var oResult; if (Nekoapp.message.module.tipscounter.getEnabled() === true) { if (Nekoapp.message.module.hiddenshow.getEnabled() === false || (Nekoapp.message.module.hiddenshow.getEnabled() === true && Nekoapp.message.module.hiddenshow._bSilentModeEnabled === true)) { oResult = { "template": "3_rows_of_labels", "row1_label": "Tips", "row1_value": Nekoapp.message.module.tipscounter._oStats.iRoomTotal.toString(), "row2_label": "Highest", "row2_value": Nekoapp.message.module.tipscounter._oStats.iHighestTipUsername.substr(0, 15) + " (" + Nekoapp.message.module.tipscounter._oStats.iHighestTipAmount.toString() + ")", "row3_label": "Latest", "row3_value": Nekoapp.message.module.tipscounter._oStats.iLastTipUsername.substr(0, 15) + " (" + Nekoapp.message.module.tipscounter._oStats.iLastTipAmount.toString() + ")" }; } } return oResult; }, onEnter: function (oUser, bIsRoomCreator) { // tbd }, onLeave: function (oUser, bIsRoomCreator) { // tbd }, onTip: function (oTip, bIsRoomCreator) { Nekoapp.message.module.tipscounter.setStats(oTip, undefined, undefined, undefined, bIsRoomCreator); }, init: function () { if (cb.settings_choices === undefined) { cb.settings_choices = []; } cb.settings_choices.push( { name: "nekoapp_tipscounter_enabled", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", required: true, label: "[TIPS COUNTER MODULE] ............................................... Enable?" }); Nekoapp.message.module.tipscounter._oStats = {}; Nekoapp.message.module.tipscounter._oStats.iRoomTotal = 0; Nekoapp.message.module.tipscounter._oStats.iLastTipAmount = 0; Nekoapp.message.module.tipscounter._oStats.iLastTipUsername = ""; Nekoapp.message.module.tipscounter._oStats.iHighestTipAmount = 0; Nekoapp.message.module.tipscounter._oStats.iHighestTipUsername = ""; Nekoapp.message.module.tipscounter._oStats.bKingEnabled = false; if (cb.settings.nekoapp_tipscounter_enabled === "Yes") { Nekoapp.message.module.tipscounter.setEnabled(true); } else { Nekoapp.message.module.tipscounter.setEnabled(false); } } }, tips: { showHelp: function (oMsg, bIsRoomCreator) { var bIsMod = false; var s = "________________________________________\nNekoapp Tips Module:\n/nekoapp tips <on/off>\n/nekoapp tips setuser <user> <amt>\n/nekoapp tips show\n/nekoapp tips showtop5\n/nekoapp tips showtop10\n/nekoapp tips showtipnotes (only room creator sees)\n________________________________________"; if (oMsg !== undefined){ if (oMsg.is_mod !== undefined) { bIsMod = oMsg.is_mod; } } if (bIsRoomCreator === true || bIsMod === true) { cb.sendNotice(s, oMsg.user, "", "#009953", "", ""); } }, showTipNotes: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTipNotes * @method showTipNotes * Tip notes will only be seen by room creator! */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var iTotal = 0; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show All Tip Notes and Totals:\n"; s = s + "(Only room creator sees this.)\n"; if (o !== undefined) { for (var key in o) { if (o.hasOwnProperty(key)) { if (o[key].tipTotal !== undefined) { s = s + key + " [" + o[key].tipTotal + "]: "; iTotal = iTotal + o[key].tipTotal; } if (o[key].tipNote !== undefined) { s = s + o[key].tipNote + "\n"; } else { s = s + "\n"; } } } s = s + "Total: " + iTotal + "\n"; s = s + "________________________________________\n"; if (bIsRoomCreator === true) { // Send tip note to room creator only! No one else sees it, not even mods. Ever! cb.sendNotice(s, oMsg.user, "", "#009953", "", ""); // Targets just the room creator! } } } }, showTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var iTotal = 0; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show All Tippers' Totals:\n"; if (o !== undefined) { for (var key in o) { if (o.hasOwnProperty(key)) { if (o[key].tipTotal !== undefined) { s = s + key + ": " + o[key].tipTotal + "\n"; iTotal = iTotal + o[key].tipTotal; } } } s = s + "Total: " + iTotal + "\n"; s = s + "________________________________________\n"; cb.sendNotice(s, oMsg.user, "", "#009953", "", ""); } } }, showTippersSorted: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var iTotal = 0; var arySortable = []; var iMax = 0; o = { "tippera": {"tipTotal": 10, "tipNote": "Hi bb!"}, "tipperb": {"tipTotal": 100, "tipNote": "Yo bb!"}, "tipperf": {"tipTotal": 2, "tipNote": "Luv you bb!"}, "tipperc": {"tipTotal": 1000, "tipNote": "Sup bb!"}, "tipperd": {"tipTotal": 50, "tipNote": "Hello bb!"}, "tippere": {"tipTotal": 25, "tipNote": "Love you bb!"} }; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show All Tippers' Totals, Sorted:\n"; if (o !== undefined) { for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); iMax = arySortable.length; for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; iTotal = iTotal + arySortable[i][1]; } s = s + "Total: " + iTotal + "\n"; s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } } }, showTopFiveTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; /* var o = { "tippera": {"tipTotal": 10, "tipNote": "Hi bb!"}, "tipperb": {"tipTotal": 100, "tipNote": "Yo bb!"}, "tipperf": {"tipTotal": 2, "tipNote": "Luv you bb!"}, "tipperc": {"tipTotal": 1000, "tipNote": "Sup bb!"}, "tipperd": {"tipTotal": 50, "tipNote": "Hello bb!"}, "tippere": {"tipTotal": 25, "tipNote": "Love you bb!"} }; */ var arySortable = []; var iMax = 5; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show Top Five Tippers For Today\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, showTopTenTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 10; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show Top Ten Tippers For Today\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, showTopTwentyTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 20; var sOnlyShowCmdIssuer = ""; if (aryArg !== undefined) { if (aryArg[3] !== undefined) { if (aryArg[3] === true || aryArg[3] === "true") { sOnlyShowCmdIssuer = oMsg.user; } } } if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show Top Twenty Tippers For Today\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; } s = s + "________________________________________\n"; cb.sendNotice(s, sOnlyShowCmdIssuer, "", "#009953", "", ""); } }, showTopFiftyTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 50; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show Top Fifty Tippers For Today\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, showTopOneHundredTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Tips Module ShowTippers * @method showTippers */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 100; if (Nekoapp.message.module.tips.getEnabled() === true) { s = s + "________________________________________\n"; s = s + "Nekoapp Show Top One Hundred Tippers For Today\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, getTippers: function () { var o = Nekoapp.message.module.tips._oTippers; return o; }, setTipAmount: function (oTip, aryArg, oMsg, bIsRoomCreator) { var iTipAmount = 0; var sPlural = ""; var sPunctuation = "."; var sExclamatory = ""; var oUsers = Nekoapp.message.module.tips.getTippers().users; if (Nekoapp.message.module.tips.getEnabled() === true) { if (aryArg !== undefined) { if (aryArg[3] !== undefined) { if (aryArg[4] !== undefined) { oUsers[aryArg[3]] = {tipTotal: parseInt(aryArg[4])}; cb.sendNotice("Nekoapp set " + aryArg[3] + "'s tips total for today to " + aryArg[4] + " via moderator " + oMsg.user + ".", "", "", "#009953", "", ""); } } } if (oTip !== undefined) { if (oTip.amount !== undefined) { iTipAmount = parseInt(oTip.amount); if (iTipAmount > 1) { sPlural = "s"; } if (iTipAmount >= 49 && iTipAmount < 99) { sPunctuation = "!"; } if (iTipAmount >= 99 && iTipAmount < 249) { sExclamatory = "Nice! "; sPunctuation = "!!"; } if (iTipAmount >= 249 && iTipAmount < 499) { sExclamatory = "Wow! "; sPunctuation = "!!"; } if (iTipAmount >= 499 && iTipAmount < 999) { sExclamatory = "Yaay! Wow, nice tip! "; sPunctuation = "!!"; } if (iTipAmount >= 999 && iTipAmount < 1999) { sExclamatory = "WTF just happened! Awesome tip!! "; sPunctuation = "!!"; } if (iTipAmount >= 1999 && iTipAmount < 2999) { sExclamatory = "WTF!! My circuits have fried. I don't know how to compute a sum this large. Thank you so much!! "; sPunctuation = "!!"; } if (iTipAmount >= 2999) { sExclamatory = "!! *・゜゚・*:.。..。.:*・'(*゚▽゚*)'・*:.。. .。.:*・゜゚・* !! OVERLOAD! OVERLOAD! DOES NOT COMPUTE! Primary logic board shutting down. Shuuutttiinng dooowwwwn............. Seriously, that is a massive tip. Thank you so much!! "; sPunctuation = "!!!!!!!!!!"; } if (oTip.to_user === cb.room_slug) { if (Nekoapp.message.module.tips._oTippers.users[oTip.from_user] === undefined) { // first tip of the session Nekoapp.message.module.tips._oTippers.users[oTip.from_user] = {tipTotal: iTipAmount}; if (oTip.message !== undefined) { Nekoapp.message.module.tips._oTippers.users[oTip.from_user].tipNote = oTip.message; } } else { Nekoapp.message.module.tips._oTippers.users[oTip.from_user].tipTotal += iTipAmount; } if (iTipAmount >= 99) { cb.sendNotice(sExclamatory + "Nekoapp thanks " + oTip.from_user + " for tipping " + oTip.amount + " token" + sPlural + " (" + Nekoapp.message.module.tips._oTippers.users[oTip.from_user].tipTotal + " total today).", "", "", "#009953", "", ""); } } } } } }, setEnabled: function (bEnabled) { if (bEnabled === true) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Tips Module On.", "", "", "#009953", "", ""); } } if (bEnabled === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Tips Module Off.", "", "", "#009953", "", ""); } } Nekoapp.message.module.tips._bEnabled = bEnabled; }, getEnabled: function () { return Nekoapp.message.module.tips._bEnabled; }, onMessage: function (aryArg, oMsg, bIsRoomCreator) { var oTippers = Nekoapp.message.module.tips.getTippers(); if (aryArg !== undefined) { if (aryArg[2] !== undefined) { if (aryArg[2] === "on") { Nekoapp.message.module.tips.setEnabled(true); } if (aryArg[2] === "off") { Nekoapp.message.module.tips.setEnabled(false); } if (aryArg[2] === "setuser") { Nekoapp.message.module.tips.setTipAmount(undefined, aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "show") { Nekoapp.message.module.tips.showTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showsorted") { Nekoapp.message.module.tips.showTippersSorted(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtop5") { Nekoapp.message.module.tips.showTopFiveTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtop10") { Nekoapp.message.module.tips.showTopTenTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtop20") { Nekoapp.message.module.tips.showTopTwentyTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtop50") { Nekoapp.message.module.tips.showTopFiftyTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtop100") { Nekoapp.message.module.tips.showTopOneHundredTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtipnotes") { Nekoapp.message.module.tips.showTipNotes(aryArg, oMsg, bIsRoomCreator); } } if (aryArg[2] === undefined) { Nekoapp.message.module.tips.showHelp(oMsg, bIsRoomCreator); } } if (Nekoapp.message.module.tips.getEnabled() === true) { if (oMsg !== undefined) { if (oTippers.users[oMsg.user] !== undefined) { if (oTippers.users[oMsg.user].tipTotal !== undefined) { oMsg.m = " [" + oTippers.users[oMsg.user].tipTotal + "] " + oMsg.m; } } } } return oMsg; }, onEnter: function (oUser, bIsRoomCreator) { // tbd }, onLeave: function (oUser, bIsRoomCreator) { // tbd }, onTip: function (oTip, bIsRoomCreator) { Nekoapp.message.module.tips.setTipAmount(oTip, undefined, undefined, undefined, bIsRoomCreator); }, init: function () { if (cb.settings_choices === undefined) { cb.settings_choices = []; } cb.settings_choices.push( { name: "nekoapp_tips_enabled", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", required: true, label: "[TIPS MODULE] .................................................................. Enable?" }); Nekoapp.message.module.tips._oTippers = {}; Nekoapp.message.module.tips._oTippers.users = {}; if (cb.settings.nekoapp_tips_enabled === "Yes") { Nekoapp.message.module.tips.setEnabled(true); } else { Nekoapp.message.module.tips.setEnabled(false); } } }, hiddenshow: { showHelp: function (oMsg, bIsRoomCreator) { var s = ""; var bIsMod = false; if (oMsg !== undefined){ if (oMsg.is_mod !== undefined) { bIsMod = oMsg.is_mod; } } var s = "________________________________________\nNekoapp Hidden Show Module List of Commands:\n/nekoapp hiddenshow [enable/disable]\n/nekoapp hiddenshow [on/off] [optional addtippers amount]\n/nekoapp hiddenshow start\n/nekoapp hiddenshow end\n/nekoapp hiddenshow showall [optional show to entire room true/false parameter]\n/nekoapp hiddenshow setprice [price]\n/nekoapp hiddenshow showprice\n/nekoapp hiddenshow addtippers [optional token amt (defaults to 1 if not entered)]\n/nekoapp hiddenshow showmessage\n/nekoapp hiddenshow setmessage [message in quotes]\n/nekoapp hiddenshow silentmode [on/off]\n/nekoapp hiddenshow recalc\n/nekoapp hiddenshow reset\n/nekoapp hiddenshow addspecialuser [user]\n/nekoapp hiddenshow removespecialuser [user]\n/nekoapp hiddenshow setmodsallowed [on/off]\n/nekoapp hiddenshow setfanclubmembersallowed [on/off]\n/nekoapp hiddenshow showpurchasesinsilentmode\n/nekoapp hiddenshow supresspurchaseswhennotinsilentmode\n/nekoapp hiddenshow addtop10\n/nekoapp hiddenshow addtop20\n/nekoapp hiddenshow addtop50\n/nekoapp hiddenshow addtop100\n/nekoapp hiddenshow addalltippers\n/nekoapp hiddenshow autoaddtippters [on/off]\n/nekoapp hiddenshow showautoaddtippersenabled\n/nekoapp hiddenshow showaddtippersamount\n/nekoapp hiddenshow addtippers clear\n________________________________________"; if (bIsRoomCreator === true || bIsMod === true) { cb.sendNotice(s, oMsg.user, "", "#009953", "", ""); } }, showAllTicketHolders: function (aryArg, oMsg, bIsRoomCreator) { /** * Hidden Show Module ShowTippers * @method showTippers */ var sHeader = ""; var s = ""; var sRunning = ""; var iTotal = 0; var iGrandTotal = 0; var bIsMod = false; var bShowToRoom = false; if (aryArg !== undefined) { if (aryArg[3] !== undefined) { if (aryArg[3] === "true") { bShowToRoom = true; } } } if (oMsg !== undefined) { if (oMsg.is_mod !== undefined) { bIsMod = oMsg.is_mod; } } if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { sHeader = sHeader + "________________________________________\n"; sHeader = sHeader + "Nekoapp Hidden Show - All Ticket Holders\n"; if (Nekoapp.message.module.hiddenshow._oMods !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { s = s + "\nMods:\n"; for (var key in Nekoapp.message.module.hiddenshow._oMods) { if (Nekoapp.message.module.hiddenshow._oMods.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; if (Nekoapp.message.module.hiddenshow._oFanClubMembers !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { s = s + "\nFan Club Members:\n"; for (var key in Nekoapp.message.module.hiddenshow._oFanClubMembers) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; if (Nekoapp.message.module.hiddenshow._oSpecialUsers !== undefined) { s = s + "\nSpecial Users:\n"; for (var key in Nekoapp.message.module.hiddenshow._oSpecialUsers) { if (Nekoapp.message.module.hiddenshow._oSpecialUsers.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid !== undefined) { s = s + "\nUsers That Pre-paid:\n"; for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPrePaid) { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased !== undefined) { s = s + "\nUsers That Purchased Tickets:\n"; for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPurchased) { if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; if (Nekoapp.message.module.hiddenshow._oTopTippersAdded !== undefined) { s = s + "\nTop Tippers That Were Added:\n"; for (var key in Nekoapp.message.module.hiddenshow._oTopTippersAdded) { if (Nekoapp.message.module.hiddenshow._oTopTippersAdded.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached !== undefined) { s = s + "\nTippers That Had Reached a Certain Amount at a Certain Time:\n"; for (var key in Nekoapp.message.module.hiddenshow._oTippersThatHadReached) { if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached.hasOwnProperty(key)) { s = s + key + "; "; iTotal = iTotal + 1; } } } if (iTotal > 0) { sRunning = sRunning + s + " (Total: "+iTotal+")\n"; } s = ""; iGrandTotal = iGrandTotal + iTotal; iTotal = 0; sRunning = sRunning + "\nGrand Total: " + iGrandTotal + "\n"; sRunning = sRunning + "________________________________________\n"; cb.sendNotice(sHeader+sRunning, ((bShowToRoom === true) ? "" : oMsg.user), "", "#009953", "", ""); } }, showPrice: function () { cb.sendNotice("Nekoapp Hidden Show - Ticket Price: "+Nekoapp.message.module.hiddenshow._iPrice+" Tokens", "", "", "#009953", "", ""); }, getIconsEnabled: function () { return Nekoapp.message.module.hiddenshow._bIconsEnabled; }, setIconsEnabled: function (b) { Nekoapp.message.module.hiddenshow._bIconsEnabled = b; }, getSilentModeEnabled: function () { return Nekoapp.message.module.hiddenshow._bSilentModeEnabled; }, autoAddTippersEnabled: function (b) { Nekoapp.message.module.hiddenshow._bAutoAddTippersEnabled = b; if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Automatically add tippers when hidden show is started: " + ( b ? "On." : "Off." ), "", "", "#009953", "", ""); } }, showAutoAddTippersEnabled: function (aryArg, oMsg, bIsRoomCreator) { cb.sendNotice("Nekoapp Hidden Show - The automatic adding of tippers when a hidden show is started, is currently set to: " + ( Nekoapp.message.module.hiddenshow._bAutoAddTippersEnabled ? "On." : "Off." ), "", "", "#009953", "", ""); }, showAddTippersAmount: function (aryArg, oMsg, bIsRoomCreator) { cb.sendNotice("Nekoapp Hidden Show - The automatic adding of tippers to the hiddenshow, threshold token amount, is currently set to: " + Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt, "", "", "#009953", "", ""); }, setSilentModeEnabled: function (b, aryArg) { var o; var sAddedList = ""; Nekoapp.message.module.hiddenshow._bSilentModeEnabled = b; if (cb.limitCam_isRunning() === false) { if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { Nekoapp.message.module.hiddenshow.setIconsEnabled(true); if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice(":neko-nekoapp-hiddenshow-rev2", "", "", "#EA57CE", "", ""); cb.sendNotice(":nekoapp-hs-ht-r2 NEKOAPP - HIDDEN SHOW - ON! :nekoapp-hs-ht-r2\nLOOKS LIKE A SHOW MAY BEGIN SOON!\nNOW SHOWING HEARTS NEXT TO TICKET HOLDERS.", "", "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("A TICKET IS AUTOMATICALLY PURCHASED ONCE YOUR TIP TOTAL REACHES " + Nekoapp.message.module.hiddenshow._iPrice + " TOKENS OR HIGHER!", "", "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("YOU MAY GIFT A TICKET TO ANOTHER USER. TO PAY FOR SOMEONE ELSE'S TICKET, SIMPLY ENTER THEIR EXACT USERNAME IN THE TIP NOTE.","", "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("(CB's hidden shows may not work on all mobile devices and may require special 3rd party browser apps. The Puffin Browser works well.)", "", "", "#009953", "", ""); if (Nekoapp.message.module.tips.getEnabled() === true) { o = Nekoapp.message.module.hiddenshow._oUsersThatPurchased; if (o !== undefined) { for (var key in o) { if (o.hasOwnProperty(key)) { sAddedList = sAddedList + key + "; "; cb.sendNotice("Thank you, " + key + ", based on your tip total you've been issued a ticket!.", key, "", "#EA57CE", "bold", ""); } } if (sAddedList !== "") { cb.sendNotice("Based on the current ticket price of " + Nekoapp.message.module.hiddenshow._iPrice + " tokens, the following tippers qualify and have been issued tickets: " + sAddedList, "", "", "#EA57CE", "", ""); } } } sAddedList = ""; if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPrePaid) { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid.hasOwnProperty(key)) { sAddedList = sAddedList + key + "; "; } } if (sAddedList !== "") { cb.sendNotice("Users that pre-paid: " + sAddedList, "", "", "#EA57CE", "", ""); } } sAddedList = ""; if (Nekoapp.message.module.hiddenshow._oFanClubMembers !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { for (var key in Nekoapp.message.module.hiddenshow._oFanClubMembers) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers.hasOwnProperty(key)) { sAddedList = sAddedList + key + "; "; } } if (sAddedList !== "") { cb.sendNotice("Fan Club Members are allowed. Members currently in the room: " + sAddedList, "", "", "#EA57CE", "", ""); } } } } } else { Nekoapp.message.module.hiddenshow.setIconsEnabled(false); if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Off (Silent Mode is now on). It will now hide the pink hearts next to ticket holders.", "", "", "#009953", "", ""); } } } if (b === false) { if (aryArg !== undefined) { if (aryArg[3] !== undefined) { Nekoapp.message.module.hiddenshow.addTippersThatHaveReached(aryArg); } else { if (Nekoapp.message.module.hiddenshow._bAutoAddTippersEnabled === true) { Nekoapp.message.module.hiddenshow.addTippersThatHaveReached(["", "", "", Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt]); } } } } cb.drawPanel(); }, onDrawPanel: function(oUser){ var oResult = oUser; var sUsersThatPurchased = ""; var sUsersThatPurchasedTotal = ""; if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased !== undefined) { if (Object.keys(Nekoapp.message.module.hiddenshow._oUsersThatPurchased).length > 0) { sUsersThatPurchased = "Tickets Purchased"; sUsersThatPurchasedTotal = Object.keys(Nekoapp.message.module.hiddenshow._oUsersThatPurchased).length; } } if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { // hiddenshow is on or started! if (Nekoapp.message.module.tipscounter.getEnabled() === true) { oResult = { "template": "3_rows_of_labels", "row1_label": "Tips", "row1_value": Nekoapp.message.module.tipscounter._oStats.iRoomTotal.toString(), "row2_label": "Hidden Show Price", "row2_value": Nekoapp.message.module.hiddenshow._iPrice+" Tokens", "row3_label": sUsersThatPurchased, "row3_value": sUsersThatPurchasedTotal }; } else { oResult = { "template": "3_rows_of_labels", "row1_label": "Hidden Show Price", "row1_value": +Nekoapp.message.module.hiddenshow._iPrice+" Tokens", "row2_label": sUsersThatPurchased, "row2_value": sUsersThatPurchasedTotal, "row3_label": "", "row3_value": "" }; } } } return oResult; }, getShowPurchasesInSilentModeEnabled: function () { return Nekoapp.message.module.hiddenshow._bShowTicketPurchasesInSilentMode; }, setShowPurchasesInSilentModeEnabled: function (b) { Nekoapp.message.module.hiddenshow._bShowTicketPurchasesInSilentMode = b; if (Nekoapp.message.module.hiddenshow._bShowTicketPurchasesInSilentMode === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Show Ticket Purchase Notifications in Silent Mode: Off.", "", "", "#009953", "", ""); } } else { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Show Ticket Purchase Notifications in Silent Mode: On.", "", "", "#009953", "", ""); } } }, getSupressPurchasesWhenNotInSilentModeEnabled: function () { return Nekoapp.message.module.hiddenshow._bSupressPurchasesWhenNotInSilentMode; }, setSupressPurchasesWhenNotInSilentModeEnabled: function (b) { Nekoapp.message.module.hiddenshow._bSupressPurchasesWhenNotInSilentMode = b; if (Nekoapp.message.module.hiddenshow._bSupressPurchasesWhenNotInSilentMode === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Supress Ticket Purchase Notifications in Silent Mode: Off.", "", "", "#009953", "", ""); } } else { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Supress Ticket Purchase Notifications in Silent Mode: On.", "", "", "#009953", "", ""); } } }, setModsAllowed: function (b) { Nekoapp.message.module.hiddenshow._bModsAllowed = b; if (Nekoapp.message.module.hiddenshow._bModsAllowed === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Mods Allowed to Watch Without Ticket Purchase: Off.", "", "", "#009953", "", ""); } } else { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Mods Allowed to Watch Without Ticket Purchase: On.", "", "", "#009953", "", ""); } } }, setFanClubMembersAllowed: function (b) { Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed = b; if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Fan Club Members Allowed to Watch Without Ticket Purchase: Off.", "", "", "#009953", "", ""); } } else { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Fan Club Members Allowed to Watch Without Ticket Purchase: On.", "", "", "#009953", "", ""); } } }, setPrice: function (iPrice) { var o; var iPrevPrice = 0; var bHadTicket; var sAddedList = ""; var sRevokedList = ""; var bFound = false; Nekoapp.message.module.hiddenshow._oUsersThatPurchased = {}; // clear them out and recalc based on new price if (Nekoapp.message.module.tips.getEnabled() === true) { if (Nekoapp.message.module.tips.getTippers().users !== undefined) { o = Nekoapp.message.module.tips.getTippers().users; } } if (Nekoapp.message.module.hiddenshow._iPrice !== undefined) { iPrevPrice = Nekoapp.message.module.hiddenshow._iPrice; } Nekoapp.message.module.hiddenshow._iPrice = iPrice; if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Ticket Price Now Set to: " + iPrice + " Tokens. Recalculating Ticket Holders Based on New Price.", "", "", "#009953", "", ""); } if (Nekoapp.message.module.tips.getEnabled() === true) { if (o !== undefined) { for (var key in o) { bHadTicket = false; if (o.hasOwnProperty(key)) { if (o[key].tipTotal >= iPrevPrice) { bHadTicket = true; } if (o[key].tipTotal >= iPrice) { Nekoapp.message.module.hiddenshow._oUsersThatPurchased[key] = true; if (bHadTicket === false) { if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { cb.sendNotice("Great news, " + key + "! Due to the price change, your tip total has qualified you for a ticket!.", key, "", "#EA57CE", "bold", ""); } sAddedList = sAddedList + key + "; "; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } else { bFound = false; if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached !== undefined) { if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid !== undefined) { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oSpecialUsers !== undefined) { if (Nekoapp.message.module.hiddenshow._oSpecialUsers[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oTopTippersAdded !== undefined) { if (Nekoapp.message.module.hiddenshow._oTopTippersAdded[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oFanClubMembers !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers[key] !== undefined) { bFound = true; } } } if (Nekoapp.message.module.hiddenshow._oMods !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { if (Nekoapp.message.module.hiddenshow._oMods[key] !== undefined) { bFound = true; } } } if (bFound === false) { sRevokedList = sRevokedList + key + "; "; if (cb.limitCam_isRunning() === true) { cb.limitCam_removeUsers([key]); } if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { cb.sendNotice("Very sorry, " + key + ", but after this price change to " + iPrice + " tokens, your tip total no longer meets the minimum. You'll need to tip " + (iPrice - o[key].tipTotal) + " more tokens to reclaim your ticket.", key, "", "#009953", "bold", ""); } } } } } if (sAddedList !== "") { if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { cb.sendNotice("Due to the price change, the following tippers now qualify and have been issued tickets: " + sAddedList, "", "", "#EA57CE", "", ""); } } if (sRevokedList !== "") { if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { cb.sendNotice("Due to the price change, the following tippers have had their tickets revoked: " + sRevokedList, "", "", "#009953", "", ""); } } } } cb.drawPanel(); }, recalc: function () { var o; var iPrice = Nekoapp.message.module.hiddenshow._iPrice; Nekoapp.message.module.hiddenshow._bSupressPurchasesWhenNotInSilentMode = false; Nekoapp.message.module.hiddenshow.setIconsEnabled(true); Nekoapp.message.module.hiddenshow._oUsersThatPurchased = {}; // clear them out and recalc based on new price if (Nekoapp.message.module.tips.getEnabled() === true) { if (Nekoapp.message.module.tips.getTippers().users !== undefined) { o = Nekoapp.message.module.tips.getTippers().users; } } if (Nekoapp.message.module.tips.getEnabled() === true) { if (o !== undefined) { for (var key in o) { if (o.hasOwnProperty(key)) { if (o[key].tipTotal >= iPrice) { Nekoapp.message.module.hiddenshow._oUsersThatPurchased[key] = true; } } } } } if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPrePaid) { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPurchased) { if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } if (Nekoapp.message.module.hiddenshow._oSpecialUsers !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oSpecialUsers) { if (Nekoapp.message.module.hiddenshow._oSpecialUsers.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } if (Nekoapp.message.module.hiddenshow._oTopTippersAdded !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oTopTippersAdded) { if (Nekoapp.message.module.hiddenshow._oTopTippersAdded.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oTippersThatHadReached) { if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } if (Nekoapp.message.module.hiddenshow._oFanClubMembers !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { for (var key in Nekoapp.message.module.hiddenshow._oFanClubMembers) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } } if (Nekoapp.message.module.hiddenshow._oMods !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { for (var key in Nekoapp.message.module.hiddenshow._oMods) { if (Nekoapp.message.module.hiddenshow._oMods.hasOwnProperty(key)) { if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([key]); } } } } } cb.sendNotice("Nekoapp Hidden Show - Recalculate / Refresh / Update: " + iPrice + " tokens or higher tippers have been recalcuated and given tickets. All ticket holder or show eligible members are now being sent into the hidden show (if a show is currently in progress). If you're a ticket holder or otherwise eligible, and still not seeing the hidden show, please refresh the page.", "", "", "#009953", "", ""); }, setMessage: function (s) { Nekoapp.message.module.hiddenshow._sMessage = s; if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show - Message Set to: " + s, "", "", "#009953", "", ""); } }, showMessage: function () { cb.sendNotice("Nekoapp Hidden Show - Message: " + Nekoapp.message.module.hiddenshow._sMessage, "", "", "#009953", "", ""); }, addUserIfTippedEnough: function (oTip, aryArg, oMsg, bIsRoomCreator) { var iTipAmount = 0; var bUserAlreadyHasTicket = false; var oUsers = Nekoapp.message.module.tips.getTippers().users; if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { if (oTip !== undefined) { if (oTip.from_user !== undefined) { if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased[oTip.from_user] !== undefined){ bUserAlreadyHasTicket = true; } if (bUserAlreadyHasTicket === false) { if (Nekoapp.message.module.tips.getTippers().users[oTip.from_user] !== undefined) { iTipAmount = parseInt(Nekoapp.message.module.tips.getTippers().users[oTip.from_user].tipTotal); if (iTipAmount >= Nekoapp.message.module.hiddenshow._iPrice) { Nekoapp.message.module.hiddenshow._oUsersThatPurchased[oTip.from_user] = true; if (Nekoapp.message.module.hiddenshow.getIconsEnabled() === true || Nekoapp.message.module.hiddenshow.getShowPurchasesInSilentModeEnabled() === true) { cb.sendNotice(oTip.from_user + " bought a hidden show ticket!", "", "", "#EA57CE", "", ""); } if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oTip.from_user]); } } } } } } } cb.drawPanel(); }, addSpecialUser: function (aryArg, oMsg, bIsRoomCreator) { if (aryArg[3] !== undefined) { if (aryArg[3] !== "") { if (Nekoapp.message.module.hiddenshow._oSpecialUsers[aryArg[3]] === undefined) { Nekoapp.message.module.hiddenshow._oSpecialUsers[aryArg[3]] = true; cb.sendNotice("Nekoapp - " + aryArg[3] + " has been given a complimentary Special User Hidden Show Ticket!", "", "", "#EA57CE", "", ""); } else { cb.sendNotice("Nekoapp - " + aryArg[3] + " already had a Special User Hidden Show Ticket. Attempting to send user into the hidden show (if one is currently in progress).", "", "", "#EA57CE", "", ""); } if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([aryArg[3]]); } } } }, removeSpecialUser: function (aryArg, oMsg, bIsRoomCreator) { if (aryArg[3] !== undefined) { if (aryArg[3] !== "") { if (Nekoapp.message.module.hiddenshow._oSpecialUsers[aryArg[3]] === undefined) { Nekoapp.message.module.hiddenshow._oSpecialUsers[aryArg[3]] = true; cb.sendNotice("Nekoapp - " + aryArg[3] + " was never added as a 'Special User' to a Hidden Show.", "", "", "#990037", "", ""); } else { delete Nekoapp.message.module.hiddenshow._oSpecialUsers[aryArg[3]]; cb.sendNotice("Nekoapp - " + aryArg[3] + "'s Special User Hidden Show Ticket has been revoked. Removing viewer from the Hidden Show (if one is in progress).", "", "", "#990037", "", ""); } if (cb.limitCam_isRunning() === true) { cb.limitCam_removeUsers([aryArg[3]]); } } } }, addTopTen: function (aryArg, oMsg, bIsRoomCreator) { /** * Hiddenshow Module AddTopTen * @method addTopTen */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 10; if (Nekoapp.message.module.tips.getEnabled() === true) { Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; // clear them out s = s + "________________________________________\n"; s = s + "Nekoapp Top Ten Tippers Added to Hidden Show\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; Nekoapp.message.module.hiddenshow._oTopTippersAdded[arySortable[i][0]] = true; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, addTopTwenty: function (aryArg, oMsg, bIsRoomCreator) { /** * Hiddenshow Module AddTopTwenty * @method addTopTwenty */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 20; if (Nekoapp.message.module.tips.getEnabled() === true) { Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; // clear them out s = s + "________________________________________\n"; s = s + "Nekoapp Top Twenty Tippers Added to Hidden Show\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; Nekoapp.message.module.hiddenshow._oTopTippersAdded[arySortable[i][0]] = true; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, addTopFifty: function (aryArg, oMsg, bIsRoomCreator) { /** * Hiddenshow Module AddTopTwenty * @method addTopTwenty */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 50; if (Nekoapp.message.module.tips.getEnabled() === true) { Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; // clear them out s = s + "________________________________________\n"; s = s + "Nekoapp Top Fifty Tippers Added to Hidden Show\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; Nekoapp.message.module.hiddenshow._oTopTippersAdded[arySortable[i][0]] = true; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, addTopOneHundred: function (aryArg, oMsg, bIsRoomCreator) { /** * Hiddenshow Module AddTopTwenty * @method addTopTwenty */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 100; if (Nekoapp.message.module.tips.getEnabled() === true) { Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; // clear them out s = s + "________________________________________\n"; s = s + "Nekoapp Top One Hundred Tippers Added to Hidden Show\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); if (arySortable.length < iMax) { iMax = arySortable.length; } for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; Nekoapp.message.module.hiddenshow._oTopTippersAdded[arySortable[i][0]] = true; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, addAllTippers: function (aryArg, oMsg, bIsRoomCreator) { /** * Hiddenshow Module AddTopTwenty * @method addTopTwenty */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var arySortable = []; var iMax = 0; if (Nekoapp.message.module.tips.getEnabled() === true) { Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; // clear them out s = s + "________________________________________\n"; s = s + "Nekoapp All Tippers Added to Hidden Show\n"; for (var key in o) { if (o.hasOwnProperty(key)) { arySortable.push([key, o[key].tipTotal]); } } arySortable.sort(function (a, b) { return a[1] - b[1]; }).reverse(); iMax = arySortable.length; for (var i = 0; i < iMax; i++) { s = s + arySortable[i][0] + ": " + arySortable[i][1] + "\n"; Nekoapp.message.module.hiddenshow._oTopTippersAdded[arySortable[i][0]] = true; } s = s + "________________________________________\n"; cb.sendNotice(s, "", "", "#009953", "", ""); } }, addTippersThatHaveReached: function (aryArg, oMsg, bIsRoomCreator) { /** * Hiddenshow Module AddTopTwenty * @method addTopTwenty */ var s = ""; var o = Nekoapp.message.module.tips.getTippers().users; var iMax = 0; var iThresholdTip = 1; var sToken = "token"; var iTotal = 0; var sRevokedList = ""; var bFound = false; var bClearCommand = false; if (aryArg[3] !== undefined) { if (aryArg[3] !== "clear") { iThresholdTip = parseInt(aryArg[3]); Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt = iThresholdTip; } else { bClearCommand = true; } } if (bClearCommand === true) { if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oTippersThatHadReached) { bFound = false; if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid !== undefined) { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased !== undefined) { if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oSpecialUsers !== undefined) { if (Nekoapp.message.module.hiddenshow._oSpecialUsers[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oTopTippersAdded !== undefined) { if (Nekoapp.message.module.hiddenshow._oTopTippersAdded[key] !== undefined) { bFound = true; } } if (Nekoapp.message.module.hiddenshow._oFanClubMembers !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers[key] !== undefined) { bFound = true; } } } if (Nekoapp.message.module.hiddenshow._oMods !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { if (Nekoapp.message.module.hiddenshow._oMods[key] !== undefined) { bFound = true; } } } if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached.hasOwnProperty(key) && bFound === false) { sRevokedList = sRevokedList + key + "; "; if (cb.limitCam_isRunning() === true) { cb.limitCam_removeUsers([key]); } } } } cb.sendNotice("Nekoapp - Tippers that had tipped " + Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt + " token or more, that were added, have now been removed and no longer have tickets (unless they tipped enough, or do tip enough, to purchase a full ticket).", "", "", "#009953", "", ""); if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { if (sRevokedList !== "") { cb.sendNotice("Tickets have been revoked from the following users: "+sRevokedList, "", "", "#009953", "", ""); } } Nekoapp.message.module.hiddenshow._oTippersThatHadReached = {}; } if (bClearCommand === false) { if (Nekoapp.message.module.tips.getEnabled() === true) { if (iThresholdTip > 1) { sToken = "tokens"; } s = s + "The following tippers that had tipped " + iThresholdTip + " " + sToken + " or higher earlier in the show have been added to the hidden show: "; Nekoapp.message.module.hiddenshow._oTippersThatHadReached = {}; iTotal = 0; for (var key in o) { if (o.hasOwnProperty(key)) { if (o[key].tipTotal >= iThresholdTip) { Nekoapp.message.module.hiddenshow._oTippersThatHadReached[key] = true; s = s + key + "; "; iTotal = iTotal + 1; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers(key); } } } } if (iTotal > 0) { cb.sendNotice(s + "Total: " + iTotal, "", "", "#EA57CE", "", ""); } else { cb.sendNotice("Nekoapp Hidden Show - No tippers found to be added (that haven't already either purchased full tickets or are otherwise eligible)!", "", "", "#009953", "", ""); } } } }, startShow: function () { var sMessage = Nekoapp.message.module.hiddenshow._sMessage; var aryAllowedUsers = []; Nekoapp.message.module.hiddenshow._bSupressPurchasesWhenNotInSilentMode = false; Nekoapp.message.module.hiddenshow._bSilentModeEnabled = false; if (Nekoapp.message.module.hiddenshow._bAutoAddTippersEnabled === true) { Nekoapp.message.module.hiddenshow.addTippersThatHaveReached(["", "", "", Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt]); } if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPrePaid) { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oUsersThatPurchased) { if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } if (Nekoapp.message.module.hiddenshow._oSpecialUsers !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oSpecialUsers) { if (Nekoapp.message.module.hiddenshow._oSpecialUsers.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } if (Nekoapp.message.module.hiddenshow._oTopTippersAdded !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oTopTippersAdded) { if (Nekoapp.message.module.hiddenshow._oTopTippersAdded.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached !== undefined) { for (var key in Nekoapp.message.module.hiddenshow._oTippersThatHadReached) { if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } if (Nekoapp.message.module.hiddenshow._oFanClubMembers !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { for (var key in Nekoapp.message.module.hiddenshow._oFanClubMembers) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } } if (Nekoapp.message.module.hiddenshow._oMods !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { for (var key in Nekoapp.message.module.hiddenshow._oMods) { if (Nekoapp.message.module.hiddenshow._oMods.hasOwnProperty(key)) { aryAllowedUsers.push(key); } } } } Nekoapp.message.module.hiddenshow.setIconsEnabled(true); if (aryAllowedUsers.length === 0) { cb.limitCam_start(sMessage); cb.sendNotice(":neko-nekoapp-hiddenstarted-rev1", "", "", "#EA57CE", "", ""); cb.sendNotice(":nekoapp-hs-ht-r2 NEKOAPP - HIDDEN SHOW STARTED! :nekoapp-hs-ht-r2\n(No one's purchased a ticket yet.)", "", "#FFEBFF", "#EA57CE", "", ""); } else { cb.limitCam_start(sMessage, aryAllowedUsers); cb.sendNotice(":neko-nekoapp-hiddenstarted-rev1", "", "", "#EA57CE", "", ""); cb.sendNotice(":nekoapp-hs-ht-r2 NEKOAPP - HIDDEN SHOW STARTED! :nekoapp-hs-ht-r2", "", "#FFEBFF", "#EA57CE", "", ""); } cb.sendNotice(Nekoapp.message.module.hiddenshow._sMessage.toUpperCase(), "", "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("(CB's hidden shows may not work on all mobile devices and may require special 3rd party browser apps. The Puffin Browser works.)", "", "", "#009953", "", ""); }, endShow: function () { cb.limitCam_stop(); Nekoapp.message.module.hiddenshow._bSupressPurchasesWhenNotInSilentMode = true; if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { Nekoapp.message.module.hiddenshow.setIconsEnabled(true); } else { Nekoapp.message.module.hiddenshow.setIconsEnabled(false); } cb.sendNotice("Nekoapp Hidden Show Ended.", "", "", "#009953", "", ""); Nekoapp.message.module.hiddenshow.setSilentModeEnabled(true); }, setEnabled: function (bEnabled) { if (bEnabled === true) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show Module On.", "", "", "#009953", "", ""); } } if (bEnabled === false) { if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Nekoapp Hidden Show Module Off.", "", "", "#009953", "", ""); } } Nekoapp.message.module.hiddenshow._bEnabled = bEnabled; }, reset: function () { Nekoapp.message.module.hiddenshow._oUsersThatPurchased = {}; Nekoapp.message.module.hiddenshow._oUsersThatPrePaid = {}; Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; Nekoapp.message.module.hiddenshow._oTippersThatHadReached = {}; cb.limitCam_removeAllUsers(); cb.limitCam_stop(); cb.sendNotice("Nekoapp Hidden Show Reset! If a show was in progress it's been halted. Users that pre-paid, purchased or were added via the 'AddTippers' command, have had their tickets cleared and forgotten. 'Special users,' fan club members and mods have not been cleared and will still retain their tickets or complimentary ticket status.", "", "", "#009953", "", ""); }, getEnabled: function () { return Nekoapp.message.module.hiddenshow._bEnabled; }, onMessage: function (aryArg, oMsg, bIsRoomCreator) { var bIsMod = false; var bIsCurrentlyAbleToWatch = false; if (oMsg !== undefined){ if (oMsg.is_mod !== undefined) { bIsMod = oMsg.is_mod; } } if (Nekoapp.message.module.hiddenshow._oAllUsers[oMsg.user] === undefined) { Nekoapp.message.module.hiddenshow._oAllUsers[oMsg.user] = true; } if (aryArg !== undefined) { if (aryArg[2] !== undefined) { if (aryArg[2] === "enable") { Nekoapp.message.module.hiddenshow.setEnabled(true); } if (aryArg[2] === "disable") { Nekoapp.message.module.hiddenshow.setEnabled(false); } if (aryArg[2] === "addspecialuser") { Nekoapp.message.module.hiddenshow.addSpecialUser(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "removespecialuser") { Nekoapp.message.module.hiddenshow.removeSpecialUser(aryArg, oMsg, bIsRoomCreator); } /* if (aryArg[2] === "addprepaiduser") { Nekoapp.message.module.hiddenshow.addPrepaidUser(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "removeprepaiduser") { Nekoapp.message.module.hiddenshow.removePrepaidUser(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showspecialusers") { Nekoapp.message.module.hiddenshow.showSpecialUsers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showprepaidusers") { Nekoapp.message.module.hiddenshow.showPrepaidUsers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showusersthatpurchased") { Nekoapp.message.module.hiddenshow.showUsersThatPurchased(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtoptippersadded") { Nekoapp.message.module.hiddenshow.showTopTippersThatWereAdded(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showtippersthathadreached") { Nekoapp.message.module.hiddenshow.showTippersThatHadReached(aryArg, oMsg, bIsRoomCreator); } */ if (aryArg[2] === "showall") { Nekoapp.message.module.hiddenshow.showAllTicketHolders(aryArg, oMsg, bIsRoomCreator); } /* if (aryArg[2] === "cleartoptippersadded") { Nekoapp.message.module.hiddenshow.clearTopTippersThatWereAdded(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "cleartippersthathadreached") { Nekoapp.message.module.hiddenshow.clearTippersThatHadReached(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "clearspecialusers") { Nekoapp.message.module.hiddenshow.clearSpecialUsers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "clearprepaidusers") { Nekoapp.message.module.hiddenshow.clearPrepaidUsers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "clearusersthatpurchased") { Nekoapp.message.module.hiddenshow.clearUsersThatPurchased(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "export") { Nekoapp.message.module.hiddenshow.export(aryArg, oMsg, bIsRoomCreator); } */ if (aryArg[2] === "recalc") { Nekoapp.message.module.hiddenshow.recalc(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "setmodsallowed") { if (aryArg[3] !== undefined) { if (aryArg[3] === "on") { Nekoapp.message.module.hiddenshow.setModsAllowed(true); } if (aryArg[3] === "off") { Nekoapp.message.module.hiddenshow.setModsAllowed(false); } } } if (aryArg[2] === "autoaddtippers") { if (aryArg[3] !== undefined) { if (aryArg[3] === "on") { Nekoapp.message.module.hiddenshow.autoAddTippersEnabled(true); } if (aryArg[3] === "off") { Nekoapp.message.module.hiddenshow.autoAddTippersEnabled(false); } } } if (aryArg[2] === "showautoaddtippersenabled") { Nekoapp.message.module.hiddenshow.showAutoAddTippersEnabled(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showaddtippersamount") { Nekoapp.message.module.hiddenshow.showAddTippersAmount(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "setfanclubmembersallowed") { if (aryArg[3] !== undefined) { if (aryArg[3] === "on") { Nekoapp.message.module.hiddenshow.setFanClubMembersAllowed(true); } if (aryArg[3] === "off") { Nekoapp.message.module.hiddenshow.setFanClubMembersAllowed(false); } } } if (aryArg[2] === "on") { Nekoapp.message.module.hiddenshow.setSilentModeEnabled(false, aryArg); } if (aryArg[2] === "off") { Nekoapp.message.module.hiddenshow.setSilentModeEnabled(true, aryArg); } if (aryArg[2] === "silentmode") { if (aryArg[3] !== undefined) { if (aryArg[3] === "on") { Nekoapp.message.module.hiddenshow.setSilentModeEnabled(true, aryArg); } if (aryArg[3] === "off") { Nekoapp.message.module.hiddenshow.setSilentModeEnabled(false, aryArg); } } } if (aryArg[2] === "showpurchasesinsilentmode") { if (aryArg[3] !== undefined) { if (aryArg[3] === "on") { Nekoapp.message.module.hiddenshow.setShowPurchasesInSilentModeEnabled(true); } if (aryArg[3] === "off") { Nekoapp.message.module.hiddenshow.setShowPurchasesInSilentModeEnabled(false); } } } if (aryArg[2] === "supresspurchaseswhennotinsilentmode") { if (aryArg[3] !== undefined) { if (aryArg[3] === "on") { Nekoapp.message.module.hiddenshow.setSupressPurchasesWhenNotInSilentModeEnabled(true); } if (aryArg[3] === "off") { Nekoapp.message.module.hiddenshow.setSupressPurchasesWhenNotInSilentModeEnabled(false); } } } if (aryArg[2] === "reset") { Nekoapp.message.module.hiddenshow.reset(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "showprice") { Nekoapp.message.module.hiddenshow.showPrice(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "setprice") { if (aryArg[3] !== undefined) { Nekoapp.message.module.hiddenshow.setPrice(parseInt(aryArg[3])); } } if (aryArg[2] === "setmessage") { if (aryArg[3] !== undefined) { Nekoapp.message.module.hiddenshow.setMessage(aryArg[3].split("`").join(" ")); } } if (aryArg[2] === "showmessage") { Nekoapp.message.module.hiddenshow.showMessage(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "addtop10") { Nekoapp.message.module.hiddenshow.addTopTen(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "addtop20") { Nekoapp.message.module.hiddenshow.addTopTwenty(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "addtop50") { Nekoapp.message.module.hiddenshow.addTopFifty(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "addtop100") { Nekoapp.message.module.hiddenshow.addTopOneHundred(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "addalltippers") { Nekoapp.message.module.hiddenshow.addAllTippers(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "addtippers") { Nekoapp.message.module.hiddenshow.addTippersThatHaveReached(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "start") { Nekoapp.message.module.hiddenshow.startShow(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === "end" || aryArg[2] === "stop"|| aryArg[2] === "quit" || aryArg[2] === "exit" || aryArg[2] === "kill") { Nekoapp.message.module.hiddenshow.endShow(aryArg, oMsg, bIsRoomCreator); } if (aryArg[2] === undefined) { Nekoapp.message.module.hiddenshow.showHelp(oMsg, bIsRoomCreator); } } if (aryArg[2] === undefined) { Nekoapp.message.module.hiddenshow.showHelp(oMsg, bIsRoomCreator); } } if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { if (Nekoapp.message.module.hiddenshow.getIconsEnabled() === true) { if (oMsg !== undefined) { if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased[oMsg.user] !== undefined) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } else { if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid[oMsg.user] !== undefined) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } else { if (Nekoapp.message.module.hiddenshow._oSpecialUsers[oMsg.user] !== undefined) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } else { if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached[oMsg.user] !== undefined) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } else { if (Nekoapp.message.module.hiddenshow._oMods[oMsg.user] !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } } else { if (Nekoapp.message.module.hiddenshow._oFanClubMembers[oMsg.user] !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } } else { if (Nekoapp.message.module.hiddenshow._oTopTippersAdded[oMsg.user] !== undefined) { oMsg.m = " :nekoapp-hs-ht-r2 " + oMsg.m; } } } } } } } } } if (cb.limitCam_isRunning() === true) { bIsCurrentlyAbleToWatch = Nekoapp.message.module.hiddenshow.getIsCurrentlyAbleToWatch(oMsg.user); if (bIsCurrentlyAbleToWatch === true) { if (bIsMod === false) { Nekoapp.message.module.hiddenshow.detectCryForHelp(oMsg); } if (oMsg.m.substr(0, 8) === "/cantsee") { Nekoapp.message.module.hiddenshow.showViewingHelp(oMsg); } } } } return oMsg; }, showViewingHelp: function (oMsg) { cb.sendNotice("Hi, "+oMsg.user+"! You seem to be having trouble viewing the hidden show, is that right? First, if you're on a desktop/laptop, try refreshing the browser. Don't worry, you won't lose your ticket (the heart next to your name shows that you have a ticket). If you're on mobile, you'll mostly likely need the Puffin App web browser. It's in the Apple App Store and Google App store, is free and has been tested to work with CB's hidden shows. It's also the best performing, compared to similar apps that add Adobe Flash support to mobile (a requirement for CB's hidden shows). Make sure to set the Puffin App to 'desktop mode.' See you back here soon! Don't worry, you'll be automatically sent directly into the hidden show.", oMsg.user, "", "#009953", "", ""); }, detectCryForHelp: function (oMsg) { var bFoundCryForHelp = false; var m = oMsg.m.toLowerCase().replace(/^\s+|\s+$/g,''); // lowercase and trim leading and trailing spaces var aryHelpCries = [ {title:"'HC - 00'", aryRegex:[/i\ cant\ see/i]}, {title:"'HC - 01'", aryRegex:[/i\ cant\ view/i]}, {title:"'HC - O3'", aryRegex:[/not\ able\ to\ see/i]}, {title:"'HC - 04'", aryRegex:[/not\ able\ to\ view/i]}, {title:"'HC - 05'", aryRegex:[/i\ cannot\ view/i]}, {title:"'HC - 06'", aryRegex:[/i\ cannot\ see/i]}, {title:"'HC - 07'", aryRegex:[/it\ wont\ let\ me\ watch/i]}, {title:"'HC - 07'", aryRegex:[/it\ wont\ let\ me\ see/i]}, {title:"'HC - 07'", aryRegex:[/it\ wont\ let\ me\ in/i]}, {title:"'HC - 07'", aryRegex:[/it\ wont\ let\ me\ into/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ letting\ me\ watch/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ letting\ me\ see/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ letting\ me\ view/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ letting\ me\ in/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ letting\ me\ into/i]}, {title:"'HC - 07'", aryRegex:[/video\ is\ blank/i]}, {title:"'HC - 07'", aryRegex:[/video\ is\ black/i]}, {title:"'HC - 07'", aryRegex:[/video\ not\ showing/i]}, {title:"'HC - 07'", aryRegex:[/video\ is\ not\ showing/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ showing/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ working/i]}, {title:"'HC - 07'", aryRegex:[/i\ only\ see\ a\ blank/i]},{title:"'HC - 07'", aryRegex:[/only\ see\ a\ black/i]}, {title:"'HC - 07'", aryRegex:[/it\ says\ a\ hidden/i]}, {title:"'HC - 07'", aryRegex:[/it\ just\ says\ a\ hidden/i]}, {title:"'HC - 07'", aryRegex:[/only\ seeing\ a\ blank/i]}, {title:"'HC - 07'", aryRegex:[/im\ only\ seeing\ a\ black/i]}, {title:"'HC - 07'", aryRegex:[/it\ just\ says\ hidden/i]}, {title:"'HC - 07'", aryRegex:[/it\ only\ shows\ a\ blank/i]}, {title:"'HC - 07'", aryRegex:[/it\ only\ shows\ a\ black/i]}, {title:"'HC - 07'", aryRegex:[/it\ just\ shows\ a\ blank/i]}, {title:"'HC - 07'", aryRegex:[/it\ just\ shows\ a\ black/i]}, {title:"'HC - 07'", aryRegex:[/it\ doesnt\ seem\ to\ be\ working/i]}, {title:"'HC - 07'", aryRegex:[/it\ doesnt\ seem\ to\ work/i]}, {title:"'HC - 07'", aryRegex:[/video\ not\ working/i]}, {title:"'HC - 07'", aryRegex:[/video\ is\ not\ working/i]}, {title:"'HC - 07'", aryRegex:[/cam\ is\ not\ showing/i]}, {title:"'HC - 07'", aryRegex:[/cam\ is\ not\ working/i]}, {title:"'HC - 07'", aryRegex:[/i\ dont\ see\ anything/i]}, {title:"'HC - 07'", aryRegex:[/dont\ see\ video/i]}, {title:"'HC - 07'", aryRegex:[/dont\ see\ the\ video/i]}, {title:"'HC - 07'", aryRegex:[/dont\ see\ the\ cam/i]}, {title:"'HC - 07'", aryRegex:[/dont\ see\ the\ hidden/i]}, {title:"'HC - 07'", aryRegex:[/cant\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/cant\ get\ into\ the\ show/i]}, {title:"'HC - 07'", aryRegex:[/cant\ get\ into\ the\ hidden/i]}, {title:"'HC - 07'", aryRegex:[/cant\ get\ into\ the\ room/i]}, {title:"'HC - 07'", aryRegex:[/trying\ to\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/not\ getting\ in/i]}, {title:"'HC - 07'", aryRegex:[/not\ seeing\ the\ cam/i]}, {title:"'HC - 07'", aryRegex:[/not\ seeing\ the\ video/i]}, {title:"'HC - 07'", aryRegex:[/not\ seeing\ the\ stream/i]}, {title:"'HC - 07'", aryRegex:[/not\ seeing\ the\ cam/i]}, {title:"'HC - 07'", aryRegex:[/not\ letting\ me\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/not\ letting\ me\ get\ into/i]}, {title:"'HC - 07'", aryRegex:[/not\ getting\ into\ the/i]}, {title:"'HC - 07'", aryRegex:[/i\ dont\ think\ i\ have\ a\ ticket/i]}, {title:"'HC - 07'", aryRegex:[/why\ cant\ i\ see\ the/i]}, {title:"'HC - 07'", aryRegex:[/is\ there\ something\ i\ have\ to\ do\ to/i]}, {title:"'HC - 07'", aryRegex:[/is\ there\ something\ special\ i\ have\ to\ do\ to/i]}, {title:"'HC - 07'", aryRegex:[/is\ there\ something\ i\ have\ to\ do\ before/i]}, {title:"'HC - 07'", aryRegex:[/is\ there\ something\ special\ i\ have\ to\ do\ before/i]}, {title:"'HC - 07'", aryRegex:[/what\ do\ i\ do\ to\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ get\ into/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ see\ the/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ make\ the\ video\ show/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ make\ the\ cam\ show/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ get\ the\ cam/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ get\ the\ video/i]}, {title:"'HC - 07'", aryRegex:[/what\ do\ i\ do\ to\ get\ the/i]}, {title:"'HC - 07'", aryRegex:[/what\ do\ i\ have\ to\ do\ to\ get\ the/i]}, {title:"'HC - 07'", aryRegex:[/i\ dont\ think\ im\ in/i]}, {title:"'HC - 07'", aryRegex:[/i\ dont\ think\ its\ letting\ me\ in/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/cam\ isnt\ working/i]}, {title:"'HC - 07'", aryRegex:[/cam\ isnt\ showing/i]}, {title:"'HC - 07'", aryRegex:[/video\ isnt\ working/i]}, {title:"'HC - 07'", aryRegex:[/video\ isnt\ showing/i]}, {title:"'HC - 07'", aryRegex:[/video\ isnt\ working/i]}, {title:"'HC - 07'", aryRegex:[/show\ isnt\ showing/i]}, {title:"'HC - 07'", aryRegex:[/show\ isnt\ working/i]}, {title:"'HC - 07'", aryRegex:[/cam\ isnt\ displaying/i]}, {title:"'HC - 07'", aryRegex:[/video\ isnt\ displaying/i]}, {title:"'HC - 07'", aryRegex:[/video\ isnt\ working/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ showing/i]}, {title:"'HC - 07'", aryRegex:[/its\ not\ displaying/i]}, {title:"'HC - 07'", aryRegex:[/cam\ isnt\ on/i]}, {title:"'HC - 07'", aryRegex:[/cam\ is\ off/i]}, {title:"'HC - 07'", aryRegex:[/cam\ is\ offline/i]}, {title:"'HC - 07'", aryRegex:[/video\ is\ off/i]}, {title:"'HC - 07'", aryRegex:[/video\ is\ offline/i]}, {title:"'HC - 07'", aryRegex:[/cam\ is\ turned\ off/i]}, {title:"'HC - 07'", aryRegex:[/should\ i\ be\ able\ to\ see/i]}, {title:"'HC - 07'", aryRegex:[/why\ is\ it\ not\ letting\ me/i]}, {title:"'HC - 07'", aryRegex:[/why cant\ i\ see/i]}, {title:"'HC - 07'", aryRegex:[/why\ cant\ i\ view/i]}, {title:"'HC - 07'", aryRegex:[/why\ cant\ i\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/dont\ think\ my\ ticket\ is\ working/i]}, {title:"'HC - 07'", aryRegex:[/dont\ think\ my\ ticket\ works/i]}, {title:"'HC - 07'", aryRegex:[/my\ ticket\ doesnt\ work/i]}, {title:"'HC - 07'", aryRegex:[/ticket\ isnt\ working/i]}, {title:"'HC - 07'", aryRegex:[/why\ isnt\ my\ ticket/i]}, {title:"'HC - 07'", aryRegex:[/im\ not\ able\ to\ get\ in/i]}, {title:"'HC - 07'", aryRegex:[/how\ do\ i\ view\ the/i]}, {title:"'HC - 07'", aryRegex:[/i\ still\ cant\ see/i]}, {title:"'HC - 07'", aryRegex:[/can\ you\ let\ me\ in/i]}, {title:"'HC - 07'", aryRegex:[/can\ you\ help\ me/i]}, {title:"'HC - 07'", aryRegex:[/can\ you\ get\ me\ in/i]}, {title:"'HC - 07'", aryRegex:[/i\ need\ help/i]}, {title:"'HC - 07'", aryRegex:[/someone\ help\ me/i]}, {title:"'HC - 07'", aryRegex:[/somebody\ help\ me/i]}, {title:"'HC - 07'", aryRegex:[/why\ isnt\ the\ video/i]}, {title:"'HC - 07'", aryRegex:[/why\ isnt\ the\ cam/i]}, {title:"'HC - 07'", aryRegex:[/i\ see\ nothing/i]} ]; m = Nekoapp.global.helper.string.commonCleaner(m); for (var i = 0; i < aryHelpCries.length; i++) { for (var j = 0; j < aryHelpCries[i].aryRegex.length; j++) { if (m.search(aryHelpCries[i].aryRegex[j]) != -1) { Nekoapp.message.module.hiddenshow.showViewingHelp(oMsg); cb.sendNotice("Nekoapp has detected a cry for help and has sent hidden show viewing instructions to "+oMsg.user+".", "", "", "#009953", "", ""); bFoundCryForHelp = true; break; } } if (bFoundCryForHelp === true) { break; } } return oMsg; }, getIsCurrentlyAbleToWatch: function (sUser) { var bIsCurrentlyAbleToWatch = false; if (Nekoapp.message.module.hiddenshow._oMods[sUser] !== undefined) { if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { bIsCurrentlyAbleToWatch = true; } } if (Nekoapp.message.module.hiddenshow._oFanClubMembers[sUser] !== undefined) { if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { bIsCurrentlyAbleToWatch = true; } } if (Nekoapp.message.module.hiddenshow._oSpecialUsers[sUser] !== undefined) { bIsCurrentlyAbleToWatch = true; } if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid[sUser] !== undefined) { bIsCurrentlyAbleToWatch = true; } if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased[sUser] !== undefined) { bIsCurrentlyAbleToWatch = true; } if (Nekoapp.message.module.hiddenshow._oTopTippersAdded[sUser] !== undefined) { bIsCurrentlyAbleToWatch = true; } if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached[sUser] !== undefined) { bIsCurrentlyAbleToWatch = true; } return bIsCurrentlyAbleToWatch; }, onEnter: function (oUser, bIsRoomCreator) { var bIsCurrentlyAbleToWatch = false; if (Nekoapp.message.module.hiddenshow._oAllUsers[oUser.user] === undefined) { Nekoapp.message.module.hiddenshow._oAllUsers[oUser.user] = true; } if (oUser.is_mod === true) { Nekoapp.message.module.hiddenshow._oMods[oUser.user] = true; if (Nekoapp.message.module.hiddenshow._bModsAllowed === true) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } } if (oUser.in_fanclub === true) { Nekoapp.message.module.hiddenshow._oFanClubMembers[oUser.user] = true; if (Nekoapp.message.module.hiddenshow._bFanClubMembersAllowed === true) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } } if (Nekoapp.message.module.hiddenshow._oFanClubTestUserForCBTestbed[oUser.user] !== undefined) { // simulating a fanclub member for cb's testbed. comment this out when pushing to production //bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } if (Nekoapp.message.module.hiddenshow._oSpecialUsers[oUser.user] !== undefined) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } if (Nekoapp.message.module.hiddenshow._oUsersThatPrePaid[oUser.user] !== undefined) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } else { if (Nekoapp.message.module.hiddenshow._sPrepaidUsersWelcomeMsg !== "") { cb.sendNotice(Nekoapp.message.module.hiddenshow._sPrepaidUsersWelcomeMsg, oUser.user, "#FFEBFF", "#EA57CE", "", ""); } } } if (Nekoapp.message.module.hiddenshow._oUsersThatPurchased[oUser.user] !== undefined) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } if (Nekoapp.message.module.hiddenshow._oTopTippersAdded[oUser.user] !== undefined) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } if (Nekoapp.message.module.hiddenshow._oTippersThatHadReached[oUser.user] !== undefined) { bIsCurrentlyAbleToWatch = true; if (cb.limitCam_isRunning() === true) { cb.limitCam_addUsers([oUser.user]); } } if (bIsCurrentlyAbleToWatch === false) { if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { if (cb.limitCam_isRunning() != true) { // not equal to true, or undefined cb.sendNotice(":neko-nekoapp-hiddenshow-rev2", oUser.user, "", "#EA57CE", "", ""); cb.sendNotice(":nekoapp-hs-ht-r2 NEKOAPP - LOOKS LIKE A HIDDEN SHOW MAY BE STARTING SOON! :nekoapp-hs-ht-r2", oUser.user, "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("THE TICKET PRICE IS CURRENTLY: " + Nekoapp.message.module.hiddenshow._iPrice + " TOKENS.", oUser.user, "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("(Once your tip total reaches that amount or higher.)", oUser.user, "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("(CB's hidden shows may not work on all mobile devices and may require special 3rd party browser apps. The Puffin Browser works.)", oUser.user, "", "#009953", "", ""); } if (cb.limitCam_isRunning() === true) { cb.sendNotice(":neko-nekoapp-hiddenstarted-rev1", oUser.user, "", "#EA57CE", "", ""); cb.sendNotice(":nekoapp-hs-ht-r2 NEKOAPP - A HIDDEN SHOW IS IN PROGRESS! :nekoapp-hs-ht-r2", oUser.user, "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("THE TICKET PRICE IS: " + Nekoapp.message.module.hiddenshow._iPrice + " TOKENS.", oUser.user, "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("(Once your tip total reaches that amount or higher.)", oUser.user, "#FFEBFF", "#EA57CE", "", ""); cb.sendNotice("(CB's hidden shows may not work on all mobile devices and may require special 3rd party browser apps. The Puffin Browser works.)", oUser.user, "", "#009953", "", ""); } } } }, onLeave: function (oUser, bIsRoomCreator) { if (oUser.is_mod === true) { if (Nekoapp.message.module.hiddenshow._oMods[oUser.user] !== undefined) { delete Nekoapp.message.module.hiddenshow._oMods[oUser.user]; } } if (oUser.in_fanclub === true) { if (Nekoapp.message.module.hiddenshow._oFanClubMembers[oUser.user] !== undefined) { delete Nekoapp.message.module.hiddenshow._oFanClubMembers[oUser.user]; } } }, onTip: function (oTip, bIsRoomCreator) { var aryTipNoteWords; var iTipAmount = parseInt(oTip.amount); var bFoundUserToGiftTicketTo = false; var sGiftee; if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { if (oTip.message !== undefined) { if (oTip.message !== "") { if (iTipAmount >= Nekoapp.message.module.hiddenshow._iPrice) { if (Nekoapp.message.module.hiddenshow.getIsCurrentlyAbleToWatch(oTip.from_user) === true) { aryTipNoteWords = oTip.message.split(" "); if (aryTipNoteWords.length < 15) { // only analyze for short-ish tip notes for (var i = 0; i < aryTipNoteWords.length; i++) { if (Nekoapp.message.module.hiddenshow._oAllUsers[aryTipNoteWords[i]] !== undefined) { bFoundUserToGiftTicketTo = true; sGiftee = aryTipNoteWords[i]; break; } } } } } } } } if (bFoundUserToGiftTicketTo === false) { Nekoapp.message.module.hiddenshow.addUserIfTippedEnough(oTip, undefined, undefined, undefined, bIsRoomCreator); } else { cb.sendNotice(oTip.from_user + " was kind enough to gift a hidden show ticket to "+sGiftee+"! Thanks so much, "+oTip.from_user+"!", "", "", "#EA57CE", "", ""); Nekoapp.message.module.hiddenshow.addSpecialUser(["/nekoapp", "hiddenshow", "addspecialuser", sGiftee]); } }, init: function () { var iPrice = 100; // default price var sMessage = "A hidden show is in progress."; // default message var sPrepaidUsersWelcomeMsg = "A reminder that you have an unused Hidden Show Ticket! If you remind Nekolukka, she may do a hidden show!"; // default message var fncPostInit = function () { var fncInitAddUsers = function () { var aryUsers; var sUsers; var s = ""; if (cb.settings.nekoapp_hiddenshow_specialusers !== undefined) { if (cb.settings.nekoapp_hiddenshow_specialusers !== "") { sUsers = cb.settings.nekoapp_hiddenshow_specialusers.trim(); // remove leading and trailing spaces sUsers = sUsers.replace(/\s+/g, " "); // remove repeating spaces aryUsers = sUsers.split(" "); for (var i=0; i<aryUsers.length; i++) { Nekoapp.message.module.hiddenshow._oSpecialUsers[aryUsers[i]] = true; s = s + aryUsers[i] + "; "; } } } if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Hidden Show module Special Users added (only broadcaster and mods see the list).", "", "", "#009953", "", ""); cb.sendNotice(s, "", "", "#009953", "", "red"); cb.sendNotice(s, cb.room_slug, "", "#009953", "", ""); } s = ""; sUsers = ""; if (cb.settings.nekoapp_hiddenshow_prepaidusers !== undefined) { if (cb.settings.nekoapp_hiddenshow_prepaidusers !== "") { sUsers = cb.settings.nekoapp_hiddenshow_prepaidusers.trim(); // remove leading and trailing spaces sUsers = sUsers.replace(/\s+/g, " "); // remove repeating spaces aryUsers = sUsers.split(" "); for (var i=0; i<aryUsers.length; i++) { Nekoapp.message.module.hiddenshow._oUsersThatPrePaid[aryUsers[i]] = true; s = s + aryUsers[i] + "; "; } } } if (Nekoapp.message.module.bCommonStartupInitCompleted === true || (Nekoapp.message.module.bCommonStartupInitCompleted === false && Nekoapp.message.module.bCommonVerboseStartupEnabled === true)) { cb.sendNotice("Hidden Show module added Users That Prepaid (only broadcaster and mods see the list).", "", "", "#009953", "", ""); cb.sendNotice(s, "", "", "#009953", "", "red"); cb.sendNotice(s, cb.room_slug, "", "#009953", "", ""); } Nekoapp.message.module.bCommonStartupInitCompleted = true; }; cb.setTimeout(fncInitAddUsers, 3000); }; if (cb.settings_choices === undefined) { cb.settings_choices = []; } cb.settings_choices.push( { name: "nekoapp_hiddenshow_enabled", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", required: true, label: "[HIDDEN SHOW MODULE] ............................................... Enable?" }, { name: "nekoapp_hiddenshow_price", type: "str", defaultValue: "50", required: true, label: "Ticket Price" }, { name: "nekoapp_hiddenshow_autoaddtippers", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "No", required: true, label: "Add those who tipped early on, when hidden show is started?" }, { name: "nekoapp_hiddenshow_autoaddtippersamt", type: "str", defaultValue: "1", required: true, label: "Tippers must have tipped at least:" }, { name: "nekoapp_hiddenshow_message", type: "str", defaultValue: "A hidden show is in progress.", required: true, label: "HIdden Cam Message" }, { name: "nekoapp_hiddenshow_specialusers", type: "str", defaultValue: "", required: false, label: "Special Users (single space separated list)" }, { name: "nekoapp_hiddenshow_prepaidusers", type: "str", defaultValue: "", required: false, label: "Users that Pre-Paid (single space separated list)" }, { name: "nekoapp_hiddenshow_prepaiduserswelcomemsg", type: "str", defaultValue: "", required: false, label: "Welcome Message for Pre-Paid Users" }, { name: "nekoapp_hiddenshow_fanclubmembers", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", required: true, label: "Fan Club Members Get a Ticket?" }, { name: "nekoapp_hiddenshow_mods", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", required: true, label: "Mods Get a Ticket?" }, { name: "nekoapp_hiddenshow_silentmode", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "No", required: true, label: "Hidden show 'off' (Silent Mode, hides hearts, still keeps track)?" }, { name: "nekoapp_hiddenshow_showpurchasesinsilentmode", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "Yes", required: true, label: "Show ticket purchase notifications in Silent Mode?" }, { name: "nekoapp_hiddenshow_supresspurchaseswhennotinsilentmode", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "No", required: true, label: "Supress p. notif. when not in Silent Mode (only show hearts)?" }); Nekoapp.message.module.hiddenshow._oSpecialUsers = {}; Nekoapp.message.module.hiddenshow._oMods = {}; Nekoapp.message.module.hiddenshow._oAllUsers = {}; Nekoapp.message.module.hiddenshow._oFanClubMembers = {}; Nekoapp.message.module.hiddenshow._oUsersThatPurchased = {}; Nekoapp.message.module.hiddenshow._oUsersThatPrePaid = {}; Nekoapp.message.module.hiddenshow._oTopTippersAdded = {}; Nekoapp.message.module.hiddenshow._oTippersThatHadReached = {}; Nekoapp.message.module.hiddenshow._oFanClubTestUserForCBTestbed = {perfectfool:true, axe_headroom:true, saduglyloser:true}; // simulating a fanclub member since the testbed doesn't have that functionality. comment this out when testing is complete and pushing to CB production if (cb.settings.nekoapp_hiddenshow_autoaddtippers === "Yes") { Nekoapp.message.module.hiddenshow.autoAddTippersEnabled(true); } else { Nekoapp.message.module.hiddenshow.autoAddTippersEnabled(false); } Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt = 1; if (cb.settings.nekoapp_hiddenshow_autoaddtippersamt !== undefined) { Nekoapp.message.module.hiddenshow._iAutoAddTippersAmt = parseInt(cb.settings.nekoapp_hiddenshow_autoaddtippersamt); } if (cb.settings.nekoapp_hiddenshow_price !== undefined) { iPrice = parseInt(cb.settings.nekoapp_hiddenshow_price); } Nekoapp.message.module.hiddenshow._iPrice = iPrice; if (cb.settings.nekoapp_hiddenshow_message !== undefined) { sMessage = cb.settings.nekoapp_hiddenshow_message; } Nekoapp.message.module.hiddenshow._sMessage = sMessage; if (cb.settings.nekoapp_hiddenshow_silentmode === "Yes") { Nekoapp.message.module.hiddenshow._bSilentModeEnabled = true; } else { Nekoapp.message.module.hiddenshow._bSilentModeEnabled = false; } if (Nekoapp.message.module.hiddenshow._bSilentModeEnabled === false) { Nekoapp.message.module.hiddenshow._bIconsEnabled = true; } else { Nekoapp.message.module.hiddenshow._bIconsEnabled = false; } if (cb.settings.nekoapp_hiddenshow_showpurchasesinsilentmode === "Yes") { Nekoapp.message.module.hiddenshow.setShowPurchasesInSilentModeEnabled(true); } else { Nekoapp.message.module.hiddenshow.setShowPurchasesInSilentModeEnabled(false); } if (cb.settings.nekoapp_hiddenshow_supresspurchaseswhennotinsilentmode === "Yes") { Nekoapp.message.module.hiddenshow.setSupressPurchasesWhenNotInSilentModeEnabled(true); } else { Nekoapp.message.module.hiddenshow.setSupressPurchasesWhenNotInSilentModeEnabled(false); } if (cb.settings.nekoapp_hiddenshow_mods === "Yes") { Nekoapp.message.module.hiddenshow.setModsAllowed(true); } else { Nekoapp.message.module.hiddenshow.setModsAllowed(false); } if (cb.settings.nekoapp_hiddenshow_fanclubmembers === "Yes") { Nekoapp.message.module.hiddenshow.setFanClubMembersAllowed(true); } else { Nekoapp.message.module.hiddenshow.setFanClubMembersAllowed(false); } if (cb.settings.nekoapp_hiddenshow_enabled === "Yes") { Nekoapp.message.module.hiddenshow.setEnabled(true); } else { Nekoapp.message.module.hiddenshow.setEnabled(false); } if (cb.settings.nekoapp_hiddenshow_prepaiduserswelcomemsg !== undefined && cb.settings.nekoapp_hiddenshow_prepaiduserswelcomemsg !== "") { sPrepaidUsersWelcomeMsg = cb.settings.nekoapp_hiddenshow_prepaiduserswelcomemsg; } Nekoapp.message.module.hiddenshow._sPrepaidUsersWelcomeMsg = sPrepaidUsersWelcomeMsg; cb.setTimeout(fncPostInit, 3000); } } }, onAppCommand: function (oMsg, bIsRoomCreator) { /** * onAppCommand * @method onAppCommand */ var m = oMsg.m; var aryArg; var iQuoteStart; var iQuoteEnd; var sBeforeQuotedArg; var sAfterQuotedArg; var sQuotedArg; var bError = false; var s = "________________________________________\nNekoapp List of Commands:\n/nekoapp [on/off]\n/nekoapp version (show nekoapp version)\n/nekoapp showservertime\nHelp for Tips Counter Module: /nekoapp tipscounter\nHelp for Tips Module: /nekoapp tips\nHelp for Hidden Show Module: /nekoapp hiddenshow\n________________________________________"; var bIsMod = oMsg.is_mod; // handle cases where a quoted argument is used (for args that require longer textual notes with spaces in them) if (m.indexOf('"') !== -1) { iQuoteStart = m.indexOf('"', 0) + 1; if (m.indexOf('"', iQuoteStart + 1) !== -1) { // make sure the quote is closed iQuoteEnd = m.indexOf('"', iQuoteStart + 1); sBeforeQuotedArg = m.substr(0, iQuoteStart - 1); sAfterQuotedArg = m.substr(iQuoteEnd + 1, m.length); sQuotedArg = m.substring(iQuoteStart, iQuoteEnd).split(" ").join("`"); m = sBeforeQuotedArg + sQuotedArg + sAfterQuotedArg; } else { bError = true; cb.sendNotice("Nekoapp command failed, because you forgot to close the quote on your message parameter.", "", "", "#009953", "", ""); } } if (bError === false) { aryArg = m.split(" "); if (bIsRoomCreator === undefined) { bIsRoomCreator = Nekoapp.message.getIsRoomCreator(oMsg); } if (aryArg[0] === "/nekoapp") { if (bIsMod || bIsRoomCreator) { Nekoapp.global.events.message.setLastCommand(oMsg); } } /* * Is List of Commands */ if (aryArg[0] === "/nekoapp" && aryArg[1] === undefined) { if (bIsRoomCreator === true) { cb.sendNotice(s, oMsg.user, "", "#009953", "", ""); // Send to Room Creator } else { if (bIsMod === true) { cb.sendNotice(s, "", "", "#009953", "", "red"); // Send to Mods } } } else { if (aryArg[0] === "/nekoapp") { /* * Is Global On */ if (aryArg[1] === "on") { Nekoapp.global.events.message.setEnabled(true); cb.sendNotice("Nekoapp is now On.", "", "", "#009953", "", ""); } /* * Is Global Off */ if (aryArg[1] === "off") { Nekoapp.global.events.message.setEnabled(false); cb.sendNotice("Nekoapp is now Off.", "", "", "#009953", "", ""); } /* * Is Tips Module */ if (aryArg[1] === "tips") { Nekoapp.message.module.tips.onMessage(aryArg, oMsg, bIsRoomCreator); } /* * Is Tips Counter Module */ if (aryArg[1] === "tipscounter") { Nekoapp.message.module.tipscounter.onMessage(aryArg, oMsg, bIsRoomCreator); } /* * Is Hidden Show Module */ if (aryArg[1] === "hiddenshow") { Nekoapp.message.module.hiddenshow.onMessage(aryArg, oMsg, bIsRoomCreator); } /* * Show Version */ if (aryArg[1] === "version") { cb.sendNotice("Nekoapp version 1.0.6 Build1. Last updated on 2017.03.14 by Sypunk.", "", "", "#009953", "", ""); } /* * Shut down sequence */ if (aryArg[1] === "shutdown") { Nekoapp.message.module.tips.showTippers(aryArg, oMsg, bIsRoomCreator); Nekoapp.message.module.tips.showTopTwentyTippers(["/nekoapp", "tips", "showtop20", true], oMsg, bIsRoomCreator); Nekoapp.message.module.hiddenshow.showAllTicketHolders(aryArg, oMsg, bIsRoomCreator); } } } } return oMsg; }, getIsRoomCreator: function (oMsg) { /** * getIsRoomCreator * @method getisRoomCreator */ var b = false; if (oMsg.user === cb.room_slug) { b = true; } return b; }, init: function () { /** * Message Init * @method init */ if (cb.settings_choices === undefined) { cb.settings_choices = []; } cb.settings_choices.push( { name: "nekoapp_common_verbosestartup_enabled", type: "choice", choice1: "Yes", choice2: "No", defaultValue: "No", required: true, label: "Nekoapp Verbose Startup Enable?" }); if (cb.settings.nekoapp_common_verbosestartup_enabled === "Yes") { Nekoapp.message.module.bCommonVerboseStartupEnabled = true; } else { Nekoapp.message.module.bCommonVerboseStartupEnabled = false; } Nekoapp.message.module.tips.init(); Nekoapp.message.module.hiddenshow.init(); Nekoapp.message.module.tipscounter.init(); } }, global: { helper: { array: { contains: function (needle) { /** * Message Global Helper Array Contains * @method contains * Usage: * var myArray = [0,1,2]; * var needle = 1; * var index = contains.call(myArray, needle); // example returns true */ // Per spec, the way to identify NaN is that it is not equal to itself var findNaN = needle !== needle; var indexOf; if (!findNaN && typeof Array.prototype.indexOf === 'function') { indexOf = Array.prototype.indexOf; } else { indexOf = function (needle) { var i = -1, index = -1; for (i = 0; i < this.length; i++) { var item = this[i]; if ((findNaN && item !== item) || item === needle) { index = i; break; } } return index; }; } return indexOf.call(this, needle) > -1; } }, object: { clone: function (obj) { return JSON.parse(JSON.stringify(obj)); } }, string: { commonCleaner: function (s) { s = s.toLowerCase().replace(/^\s+|\s+$/g,''); // lowercase and trim leading and trailing spaces s = s.replaceAll("<3", "").trim(); // remove some common emoticons with alphanumeric characters in them so they don't pollute the result //s = s.replaceAll("<3", "").replaceAll(":3", "").replaceAll("D:", "").trim(); s = s.replace(/[^\w\s]|_/g, "").replace(/\s+/g, " "); // remove all punctuation and repeating spaces s = s.replace(/(.)\1{2,}/g, "$1$1"); // remove repeating characters above two repeats s = Nekoapp.global.helper.string.removeConsecutiveDuplicateWords(s); // remove groups of consecutive repeating words return s; }, countWords: function (s) { return s.split(" ").length; }, escRe: function (s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); }, makeRe: function (s) { return new RegExp("\\b"+ s.replace(/\\/g, "\\\\") +"\\b", "gi"); }, removeDuplicateWords: function (s) { var ary = s.split(" "); s = ary.filter(function(o,i,a){ return a.indexOf(o) === i; }).join(" "); return s; }, removeConsecutiveDuplicateWords: function (s) { s = s.replace(/(\b\S+\b)(($|\s+)\1)+/gi, "$1"); return s; }, lzw_encode: function (s) { var dict = {}; var data = (s + "").split(""); var out = []; var currChar; var phrase = data[0]; var code = 256; for (var i=1; i<data.length; i++) { currChar=data[i]; if (dict[phrase + currChar] != null) { phrase += currChar; } else { out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0)); dict[phrase + currChar] = code; code++; phrase=currChar; } } out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0)); for (var i=0; i<out.length; i++) { out[i] = String.fromCharCode(out[i]); } return out.join(""); }, lzw_decode: function (s) { var dict = {}; var data = (s + "").split(""); var currChar = data[0]; var oldPhrase = currChar; var out = [currChar]; var code = 256; var phrase; for (var i=1; i<data.length; i++) { var currCode = data[i].charCodeAt(0); if (currCode < 256) { phrase = data[i]; } else { phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar); } out.push(phrase); currChar = phrase.charAt(0); dict[code] = oldPhrase + currChar; code++; oldPhrase = phrase; } return out.join(""); }, init: function () { String.prototype.replaceAll = function (search, replacement) { var target = this; return target.replace(new RegExp(search, 'g'), replacement); }; String.prototype.capFirstLetter = function () { return this.charAt(0).toUpperCase() + this.slice(1); }; } }, date: { showServerTime: function () { var sDate = new Date().toLocaleString(); cb.sendNotice("Current date and time on server: "+sDate, "", "", "#009953", "", ""); } } }, events: { message: { setEnabled: function (b) { /** * Global Events Message SetEnabled * @method setEnabled */ Nekoapp.global.events.message._oParams.bAppEnabled = b; }, getAppEnabled: function () { /** * Global Events Message GetAppEnabled * @method getAppEnabled */ var o = Nekoapp.global.events.message._oParams.bAppEnabled; return o; }, performLastCommand: function (sModerator) { /** * Global Events Message PerformLastCommand * @method performLastCommand */ var oMsg = Nekoapp.global.events.message.getLastCommand(); Nekoapp.global.events.message.onMessage(oMsg); }, setLastCommand: function (oMsg) { /** * Global Events Message SetLastCommand * @method setLastCommand */ Nekoapp.global.events.message._oLastCommand = oMsg; }, getLastCommand: function () { /** * Global Events Message GetLastCommand * @method getLastCommand */ var o = Nekoapp.global.events.message._oLastCommand; return o; }, onMessage: function (oMsg) { var bIsRoomCreator = Nekoapp.message.getIsRoomCreator(oMsg); var bAppEnabled = Nekoapp.global.events.message.getAppEnabled(); var oMsgOrig = Nekoapp.global.helper.object.clone(oMsg); var bSilenceCriteriaMet = false; var aryArg = oMsg.m.split(" "); var oTestTip; if (oMsg.m.substr(0, 8) === "/nekoapp" && (oMsg.is_mod === true || bIsRoomCreator === true)) { oMsg = Nekoapp.message.onAppCommand(oMsg, bIsRoomCreator); } else { if (bAppEnabled === true) { oMsg = Nekoapp.message.module.tips.onMessage(undefined, oMsg, bIsRoomCreator); if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { oMsg = Nekoapp.message.module.hiddenshow.onMessage(undefined, oMsg, bIsRoomCreator); } } } if (oMsg.user === "sypunk" || oMsg.user === "perfectfool" || oMsg.user === "axe_headroom" || oMsg.user === "nekolukka") { // tip simulator for testing if (aryArg[0] === "//tip") { if (aryArg[1] !== undefined) { oTestTip = Nekoapp.global.helper.object.clone(oMsg); delete oTestTip.m; oTestTip.message = "This is a test tip note."; oTestTip.from_user = oMsg.user; oTestTip.to_user = cb.room_slug; oTestTip.amount = aryArg[1]; Nekoapp.global.events.message.onTip(oTestTip); cb.sendNotice("[Via Nekoapp] "+oTestTip.from_user + " tipped " + oTestTip.amount + " test " + (oTestTip.amount > 1 ? "tokens" : "token"), "", "#ffff00", "#000000", "bold", ""); } } } return oMsg; }, onEnter: function (oUser) { var bIsRoomCreator = Nekoapp.message.getIsRoomCreator(oUser); var bAppEnabled = Nekoapp.global.events.message.getAppEnabled(); if (bAppEnabled === true) { Nekoapp.message.module.tips.onEnter(oUser, bIsRoomCreator); if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { Nekoapp.message.module.hiddenshow.onEnter(oUser, bIsRoomCreator); } } }, onLeave: function (oUser) { var bIsRoomCreator = Nekoapp.message.getIsRoomCreator(oUser); var bAppEnabled = Nekoapp.global.events.message.getAppEnabled(); if (bAppEnabled === true) { //Nekoapp.message.module.tips.onLeave(oUser, bIsRoomCreator); if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { Nekoapp.message.module.hiddenshow.onLeave(oUser, bIsRoomCreator); } } }, onTip: function (oTip) { var bIsRoomCreator = Nekoapp.message.getIsRoomCreator(oTip); var bAppEnabled = Nekoapp.global.events.message.getAppEnabled(); if (bAppEnabled === true) { Nekoapp.message.module.tips.onTip(oTip, bIsRoomCreator); if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { Nekoapp.message.module.hiddenshow.onTip(oTip, bIsRoomCreator); } Nekoapp.message.module.tipscounter.onTip(oTip, bIsRoomCreator); } }, onDrawPanel: function (oUser) { var bAppEnabled = Nekoapp.global.events.message.getAppEnabled(); if (bAppEnabled === true) { oUser = Nekoapp.message.module.tipscounter.onDrawPanel(oUser); if (Nekoapp.message.module.hiddenshow.getEnabled() === true) { oUser = Nekoapp.message.module.hiddenshow.onDrawPanel(oUser); } } return oUser; }, init: function () { /** * Init Global Message Events * @method init */ Nekoapp.global.events.message._oLastCommand = new Object(); Nekoapp.global.events.message._oParams = new Object(); /* * Make sure app is enabled when first launched */ Nekoapp.global.events.message.setEnabled(true); /* * OnMessage */ cb.onMessage(function (oMsg) { oMsg = Nekoapp.global.events.message.onMessage(oMsg); return oMsg; }); /* * OnEnter */ cb.onEnter(function (oUser) { Nekoapp.global.events.message.onEnter(oUser); }); /* * OnLeave */ cb.onLeave(function (oUser) { Nekoapp.global.events.message.onLeave(oUser); }); /* * OnTip */ cb.onTip(function (oTip) { Nekoapp.global.events.message.onTip(oTip); }); /* * OnDrawPanel */ cb.onDrawPanel(function (oUser) { var oResult; oResult = Nekoapp.global.events.message.onDrawPanel(oUser); return oResult; }); } }, init: function () { /** * Init Global Events * @method init */ Nekoapp.global.events.message.init(); } }, init: function () { Nekoapp.global.events.init(); Nekoapp.global.helper.string.init(); } }, init: function () { /** * Init * @method init */ Nekoapp.message.module.bCommonStartupInitCompleted = false; cb.sendNotice("________________________________________", "", "", "#009953", "", ""); cb.sendNotice("Nekoapp Version 1.0.6 Build1 Initializing...", "", "", "#009953", "bold", ""); cb.sendNotice("Last Updated: 2017.03.14", "", "", "#009953", "bold", ""); cb.sendNotice("For Nekolukka. Coded with love, by Sypunk.", "", "", "#009953", "bold", ""); cb.sendNotice("Type '/nekoapp' for a list of commands.", "", "", "#009953", "bold", ""); cb.sendNotice(":neko-nekoapp-logotype-rev1", "", "", "#009953", "", ""); cb.sendNotice("/nekoapp hiddenshow on", "", "", "#009953", "bold", ""); cb.sendNotice("/nekoapp hiddenshow start", "", "", "#009953", "bold", ""); cb.sendNotice("/nekoapp hiddenshow end", "", "", "#009953", "bold", ""); Nekoapp.global.init(); Nekoapp.message.init(); } }; })(); /** * Init the App */ Nekoapp.init();
© Copyright Chaturbate 2011- 2025. All Rights Reserved.