NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Picarto Local Chat Clear Blocker
// @namespace http://www.furaffinity.net/user/Maloo
// @description Blocks chat clears locally. Requires Picarto Chat Extender. ( https://openuserjs.org/scripts/maloomf9/Picarto_Chat_Extender )
// @license MIT
// @include https://picarto.tv/*
// @exclude https://picarto.tv/communities*
// @exclude https://picarto.tv/
// @exclude https://picarto.tv/settings*
// @exclude https://picarto.tv/site/*
// @version 2.5
// @grant none
// @run-at document-start
// ==/UserScript==
function addWindowScript(fn, ident)
{
var script = document.createElement('script');
script.setAttribute("type", "application/javascript");
script.setAttribute("id", ident);
script.textContent = fn.toString().slice(fn.toString().indexOf("{") + 1,-2); //KLUUUUUUDGE.
modifyHeadSafe(function () {document.head.appendChild(script)});
}
var headFunctions = [];
function modifyHeadSafe(toDo){
if ((document.head) && (headFunctions.length == 0))
{
if (toDo != null) toDo();
}
else
{
//console.log("Pushing headFunction #" + headFunctions.length);
headFunctions.push(toDo);
}
}
var waitForHead = setInterval(function() {
if (document.head)
{
while (headFunctions.length != 0)
{
//console.log("Executing headFunction #" + headFunctions.length);
headFunctions.shift()();
}
clearInterval(waitForHead);
}
},50);
addWindowScript(function () {
var waitForHead = setInterval(function() {
if (window.CustomFunctions)
{
clearInterval(waitForHead);
document.head.appendChild(CBscript);
console.log("ChatClearBlock Loaded.");
CustomFunctions.callbacks.push(replaceCallbacks);
}
},300);
var CBscript = document.createElement('script');
CBscript.setAttribute("type", "application/javascript");
CBscript.setAttribute("id", "ChatClearBlock");
CBscript.textContent = '/*Replace caaaaallbacks*/' +
'function replaceCallbacks() {window.socket.callbacks.ClearUserMessages[0] = function(data){'+ //Clear User Messages
'msgClass = $("#msgs").children(".um-" + e.username);'+
'if (msgClass.length) {'+
'msgClass.css("background-color" , "#400000");}'+
'addMsg(data.executionerDisplayName + " has removed " + data.username + "\'s messages")};'+
'window.socket.callbacks.RemoveMessage[0] = function (data) {'+ //Clear Single Message
'elem = $("#msgs").find("#msg-" + data.id);' +
'elem.append(\'<li class="removeli">Message removed by \' + data.executionerDisplayName + \'</li>\');'+
'elem.css("background-color" , "#400000")};'+
'window.socket.callbacks.ClearHistory[0] = function (){'+
'$("#msgs > li").css("background-color" , "#400000");' +
'addMsg("Chat has been cleared (BLOCKED LOCALLY) by " + e.executionerDisplayName)'+
'};'+
'window.addMsg("Picarto Chat Clear Blocker 2.5 Loaded");' +
'}';
}, "PLCCB");