NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name StickersJVC // @author ImThatGuy // @description StickersJVC vous permet d'utiliser les stickers JVC rapidement. // @include http://*.jeuxvideo.com/* // @include https://*.jeuxvideo.com/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/tipso/1.0.8/tipso.min.js // @require https://raw.githubusercontent.com/avxto/nuContextMenu/master/src/jquery.nu-context-menu.js // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @version 0.4.3 // @icon https://i.imgur.com/NHTdDRb.png // @copyright 2018+, ImThatGuy // @license MIT // ==/UserScript== /* StickersJVC. 2018-2020. Codé par ImThatGuy. 2020+, ImThatGuy. StickersJVC vous permet d'utiliser les stickers JVC rapidement. 0.1 : Première version. 0.2 : Détecte automatiquement si vous utilisez DarkJVC Rajout du sticker lamasticot sasuke 0.3 : Rajout des catégories : Bud & Grukk 0.4 : Amélioration design scrollbar Correction bug ajout de stickers en MP (même si ça sert à rien parce que les stickers ne marchent pas en MP :hap:) Ajout d'une catégorie favoris + gestion de favoris Légère amélioration de design avec DarkJVC Suppression de l'espace automatique avant le sticker 0.4.1 : Ajout du sticker hap calin 0.4.2 : Ajout de stickers bud 0.4.3 : correctifs problèmes */ /*jshint multistr: true */ (function() { 'use strict'; const version = "0.4.3"; console.log("[StickersJVC version "+version+"]"); // IMPORT CSS $('head').append('<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/tipso/1.0.8/tipso.min.css"/>'); $('head').append('<link rel="stylesheet" type="text/css" href="https://epmd.000webhostapp.com/files/nu-context-menu.css"/>'); // Current div var currentDiv = "fav"; // LISTS var _stickers_hap = [ "http://image.jeuxvideo.com/stickers/p/1kki", "http://image.jeuxvideo.com/stickers/p/1kkn", "http://image.jeuxvideo.com/stickers/p/1lmk", "http://image.jeuxvideo.com/stickers/p/1kkl", "http://image.jeuxvideo.com/stickers/p/1lmh", "http://image.jeuxvideo.com/stickers/p/1ljr", "http://image.jeuxvideo.com/stickers/p/1ljj", "http://image.jeuxvideo.com/stickers/p/1kkg", "http://image.jeuxvideo.com/stickers/p/1kkh", "http://image.jeuxvideo.com/stickers/p/1kkk", "http://image.jeuxvideo.com/stickers/p/1ljn", "http://image.jeuxvideo.com/stickers/p/1mr0", "http://image.jeuxvideo.com/stickers/p/1ljl", "http://image.jeuxvideo.com/stickers/p/1nua", "http://image.jeuxvideo.com/stickers/p/1ljm", "http://image.jeuxvideo.com/stickers/p/1ljq", "http://image.jeuxvideo.com/stickers/p/1lmi", "http://image.jeuxvideo.com/stickers/p/1lml", "http://image.jeuxvideo.com/stickers/p/1lmj", "http://image.jeuxvideo.com/stickers/p/1lmm", "http://image.jeuxvideo.com/stickers/p/1lmn", "http://image.jeuxvideo.com/stickers/p/1lmo", "http://image.jeuxvideo.com/stickers/p/1lmp", "http://image.jeuxvideo.com/stickers/p/1mqv", "http://image.jeuxvideo.com/stickers/p/1kkm", "http://image.jeuxvideo.com/stickers/p/1kkj", "http://image.jeuxvideo.com/stickers/p/1mr1", "http://image.jeuxvideo.com/stickers/p/1mqy", "http://image.jeuxvideo.com/stickers/p/1kgx" ]; var _stickers_noel = [ "http://image.jeuxvideo.com/stickers/p/1kkr", "http://image.jeuxvideo.com/stickers/p/1kko", "http://image.jeuxvideo.com/stickers/p/1kkp", "http://image.jeuxvideo.com/stickers/p/1kkq", "http://image.jeuxvideo.com/stickers/p/1kks", "http://image.jeuxvideo.com/stickers/p/1ljo", "http://image.jeuxvideo.com/stickers/p/1ljp", "http://image.jeuxvideo.com/stickers/p/1kkt", "http://image.jeuxvideo.com/stickers/p/1kku", "http://image.jeuxvideo.com/stickers/p/1kkv", "http://image.jeuxvideo.com/stickers/p/1mqw", "http://image.jeuxvideo.com/stickers/p/1mqz" ]; var _stickers_brid = [ "http://image.jeuxvideo.com/stickers/p/1jnd", "http://image.jeuxvideo.com/stickers/p/1jnc", "http://image.jeuxvideo.com/stickers/p/1jne", "http://image.jeuxvideo.com/stickers/p/1jnf", "http://image.jeuxvideo.com/stickers/p/1jng", "http://image.jeuxvideo.com/stickers/p/1jnh", "http://image.jeuxvideo.com/stickers/p/1jni", "http://image.jeuxvideo.com/stickers/p/1jnj" ]; var _stickers_rex = [ "http://image.jeuxvideo.com/stickers/p/1lm9", "http://image.jeuxvideo.com/stickers/p/1lma", "http://image.jeuxvideo.com/stickers/p/1lmb", "http://image.jeuxvideo.com/stickers/p/1lmc", "http://image.jeuxvideo.com/stickers/p/1lmd", "http://image.jeuxvideo.com/stickers/p/1lme", "http://image.jeuxvideo.com/stickers/p/1lmf", "http://image.jeuxvideo.com/stickers/p/1lmg" ]; var _stickers_grukk = [ "http://image.jeuxvideo.com/stickers/p/1lgg", "http://image.jeuxvideo.com/stickers/p/1lgb", "http://image.jeuxvideo.com/stickers/p/1lga", "http://image.jeuxvideo.com/stickers/p/1lgc", "http://image.jeuxvideo.com/stickers/p/1lgd", "http://image.jeuxvideo.com/stickers/p/1lge", "http://image.jeuxvideo.com/stickers/p/1lgf", "http://image.jeuxvideo.com/stickers/p/1lgh" ]; var _stickers_bud = [ "http://image.jeuxvideo.com/stickers/p/zuc", "http://image.jeuxvideo.com/stickers/p/zu2", "http://image.jeuxvideo.com/stickers/p/zu6", "http://image.jeuxvideo.com/stickers/p/zu7", "http://image.jeuxvideo.com/stickers/p/zu8", "http://image.jeuxvideo.com/stickers/p/zu9", "http://image.jeuxvideo.com/stickers/p/zua", "http://image.jeuxvideo.com/stickers/p/zub", "http://image.jeuxvideo.com/stickers/p/1f88", "http://image.jeuxvideo.com/stickers/p/1f89", "http://image.jeuxvideo.com/stickers/p/1f8a", "http://image.jeuxvideo.com/stickers/p/1f8b", "http://image.jeuxvideo.com/stickers/p/1f8d", "http://image.jeuxvideo.com/stickers/p/1f8e", "http://image.jeuxvideo.com/stickers/p/1f8f" ]; // Favoris //GM_setValue("st-fav", ""); var _stickers_fav = []; if (GM_getValue("st-fav")) { _stickers_fav = JSON.parse(GM_getValue("st-fav")); } // FUNCTIONS function getCode(element) { return element.attr("src").split('/')[5]; } function darkJVC() { if ( $("body").css("background-color") == "rgb(18, 18, 18)" ) { return true; } else { return false; } } function idTextarea() { if (window.location.href.indexOf("messages-prives/message.php?") > -1) { return "#message"; } else { return "#message_topic"; } } // MAIN APPEND var newStickers = '<div style="position: relative">\ <div id="fav" class="new-stickers"></div>\ <div id="hap" class="new-stickers"></div>\ <div id="noel" class="new-stickers"></div>\ <div id="brid" class="new-stickers"></div>\ <div id="rex" class="new-stickers"></div>\ <div id="grukk" class="new-stickers"></div>\ <div id="bud" class="new-stickers"></div>\ </div>'; $(newStickers).insertAfter('.jv-editor-toolbar'); if (_stickers_fav.length < 1) { $("#fav").append('<p id="aucunFav">Vous n\'avez aucun sticker dans vos favoris.</p>'); currentDiv = "hap"; } // Check s'il y a des fav // HIDES $(".new-stickers").each(function() { if ( $(this).attr("id") != currentDiv ) { $(this).hide(); } }); // APPENDS $('<div class="pull-right jv-editor-option-on-off"><span class="script-title">StickersJVC</span> <button id="active-script" type="button" class="btn-on-off active" autocomplete="off"></button></div>').insertAfter(".option-previsu"); $(".new-stickers").append('<div code="fav" id="fav-css" title="Favoris" class="cat-stickers"></div>\ <div code="hap" id="hap-css" title="Hap & autres" class="cat-stickers"></div>\ <div code="noel" id="noel-css" title="Noel" class="cat-stickers"></div>\ <div code="brid" id="brid-css" title="Bridgely" class="cat-stickers"></div>\ <div code="rex" id="rex-css" title="Rex ryder" class="cat-stickers"></div>\ <div code="grukk" id="grukk-css" title="Grukk" class="cat-stickers"></div>\ <div code="bud" id="bud-css" title="Bud" class="cat-stickers"></div>'); // AJOUT STICKERS for (var i = 0; i < _stickers_hap.length; i++) { $(".new-stickers#hap").append( '<img src="'+_stickers_hap[i]+'" class="stickers-script">' ); } for (var k = 0; k < _stickers_noel.length; k++) { $(".new-stickers#noel").append( '<img src="'+_stickers_noel[k]+'" class="stickers-script">' ); } for (var n = 0; n < _stickers_brid.length; n++) { $(".new-stickers#brid").append( '<img src="'+_stickers_brid[n]+'" class="stickers-script">' ); } for (var j = 0; j < _stickers_rex.length; j++) { $(".new-stickers#rex").append( '<img src="'+_stickers_rex[j]+'" class="stickers-script">' ); } for (var gr = 0; gr < _stickers_grukk.length; gr++) { $(".new-stickers#grukk").append( '<img src="'+_stickers_grukk[gr]+'" class="stickers-script">' ); } for (var bd = 0; bd < _stickers_bud.length; bd++) { $(".new-stickers#bud").append( '<img src="'+_stickers_bud[bd]+'" class="stickers-script">' ); } for (var fv = 0; fv < _stickers_fav.length; fv++) { $(".new-stickers#fav").append( '<img src="'+_stickers_fav[fv]+'" class="stickers-script sticker-fav">' ); } // Context menu var context = $('.new-stickers').nuContextMenu({ hideAfterClick: true, items: '.stickers-script.sticker-fav', callback: function(key, element) { if ( key == 'del' ) { $(element).remove(); var index = _stickers_fav.indexOf( $(element).attr("src") ); if (index > -1) { _stickers_fav.splice(index, 1); if (_stickers_fav.length < 1) { $("#fav").append('<p id="aucunFav">Vous n\'avez aucun sticker dans vos favoris.</p>'); } GM_setValue("st-fav", JSON.stringify(_stickers_fav)); } } }, menu: [ { name: 'del', title: 'Supprimer', icon: 'remove', }, ] }); var context2 = $('body').nuContextMenu({ hideAfterClick: true, items: '.stickers-script:not(.sticker-fav)', callback: function(key, element) { if ( key == 'add' ) { var n = $(element).attr("src"); if (_stickers_fav.indexOf(n) > -1) { // Le sticker est déjà en fav } else { if ($("#aucunFav").length > 0) { $("#aucunFav").remove(); } $("#fav").append('<img src="'+n+'" class="stickers-script sticker-fav">'); $(".stickers-script").off("click"); // Destroy click event stickers stickersEvent(); _stickers_fav.push(n); // Store fav GM_setValue("st-fav", JSON.stringify(_stickers_fav)); } } }, menu: [ { name: 'add', title: 'Ajouter aux favoris', icon: 'plus', }, ] }); // LISTENERS function stickersEvent() { $(".stickers-script").click(function() { // Get sticker code var code = getCode( $(this) ); //$("#message_topic").val($("#message_topic").val() + " [[sticker:p/"+code+"]]"); var $textarea = jQuery(idTextarea()); var caretPos = $textarea[0].selectionStart; var textAreaTxt = $textarea.val(); var sticker = "[[sticker:p/"+code+"]] "; $textarea.val(textAreaTxt.substring(0, caretPos) + sticker + textAreaTxt.substring(caretPos) ); $textarea.focus(); }); } stickersEvent(); $(".cat-stickers").click(function() { var id = $(this).attr("code"); $(".new-stickers").each(function() { if ( $(this).attr("id") == id ) { $(this).show(); if (currentDiv != id) { $("#"+currentDiv).hide(); currentDiv = id; } } }); }); // NICE SCROLL var lastScrollTop = 0; var ft_up = false; var ft_down = false; $(".new-stickers").scroll(function() { //console.log($(this).scrollTop()); var st = $(this).scrollTop(); //console.log(st); if (st > lastScrollTop) { if (!ft_up) { if (st < 50) { ft_up = true; $(this).scrollTop(50); } } } else { if (!ft_down) { if (st > 50) { ft_down = true; $(this).scrollTop(50); } } } lastScrollTop = st; // Taille div if ($(this).scrollTop() != 0) { // Pas en haut de la div $(".cat-stickers").hide(55); } else { // En haut de la div $(".cat-stickers").show(55); ft_up = false; ft_down = false; } if ( $(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight ) { // En bas de la div ft_up = false; ft_down = false; } }); // Active script $("#active-script").click(function() { if ( $(".new-stickers").is(":visible") ) { $(this).removeClass("active"); $(".new-stickers#"+currentDiv).hide(80); } else { $(this).addClass("active"); $(".new-stickers#"+currentDiv).show(80); $(".new-stickers").css("overflow", "auto"); } }); // TOOLTIPS $(document).ready(function() { $(".cat-stickers").each(function() { $(this).tipso({ delay: 0, speed: 120, background: "rgba(0, 0, 0, 0.7)", size: 'tiny', content: '<b>'+$(this).attr("title")+'</b>', width: null, maxWidth: "150px" }); }); }); // CSS //GM_addStyle(".new-stickers:hover { background-color: #f9f9f9; }"); // Scrollbar if (!$.browser.mozilla) { GM_addStyle(".new-stickers::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 3px rgba(0,0,0,0.2); background-color: #f7f7f7; }\ .new-stickers::-webkit-scrollbar { width: 9px; background-color: #F5F5F5; }\ .new-stickers::-webkit-scrollbar-thumb { background-color: #ccc; }"); } GM_addStyle(".stickers-script { height: 50px; width: 50px; cursor: pointer; padding: 2px; }"); GM_addStyle(".cat-stickers:hover { border: none; "); GM_addStyle(".cat-stickers#fav-css { left: 5px; background-image: url('https://i.imgur.com/sS6w0hg.png'); }\ .cat-stickers#hap-css { left: 30px; background-image: url('https://i.imgur.com/QiaEFm9.png'); }\ .cat-stickers#noel-css { left: 55px; background-image: url('https://i.imgur.com/xrdqIkA.png'); }\ .cat-stickers#brid-css { left: 80px; background-image: url('https://i.imgur.com/Y2X5sc9.png'); }\ .cat-stickers#rex-css { left: 105px; background-image: url('https://i.imgur.com/hc1pY1o.png'); }\ .cat-stickers#grukk-css { left: 130px; background-image: url('https://i.imgur.com/raQso5Z.png'); }\ .cat-stickers#bud-css { left: 155px; background-image: url('https://i.imgur.com/bYjXcMU.png'); }"); if (darkJVC()) { GM_addStyle(".input-on-off:checked ~ .btn-on-off, .btn-on-off.active, .btn-on-off.label-support.active-mach-version { background: url('https://jvcpremium.000webhostapp.com/files/on-off-dark.svg') 26px top!important; }"); // Script title GM_addStyle(".script-title { font-family: 'robotoboldcondensed' ,Arial,Helvetica,sans-serif; text-transform: uppercase; font-size: 0.75rem; color: #d4d4d4 }"); // Stickers panel GM_addStyle(".new-stickers { border-top: 1px solid #555; padding: 2px; margin-top: 8px; height: 75px; transition: background-color 0.1s; background-color: #333; overflow: auto; text-align: center; padding-top: 10px; scroll-behavior: smooth; }"); // Catégories GM_addStyle(".cat-stickers { position: absolute; top:-8px; background-color: #555; box-shadow: 0px 2px 2px #333 ; border: 1px solid #333; border-radius: 50px; height: 16px; width: 16px; cursor: pointer; background-size: cover; background-repeat: no-repeat; background-position: center center; }"); // Hover stickers GM_addStyle(".stickers-script:hover { background-color: #2d2d2d; border-radius: 3px; }"); // Hover cat GM_addStyle(".cat-stickers:hover { box-shadow: 0px 2px 8px #222; }"); } else { // Script title GM_addStyle(".script-title { font-family: 'robotoboldcondensed' ,Arial,Helvetica,sans-serif; text-transform: uppercase; font-size: 0.75rem; color: #656574 }"); // Stickers panel GM_addStyle(".new-stickers { border-top: 1px solid #ccc; padding: 2px; margin-top: 8px; height: 75px; transition: background-color 0.1s; background-color: #f7f7f7; overflow: auto; text-align: center; padding-top: 10px; scroll-behavior: smooth; }"); // Catégories GM_addStyle(".cat-stickers { position: absolute; top:-8px; background-color: white; box-shadow: 0px 2px 2px #e0e0e0 ; border: 1px solid #ccc; border-radius: 50px; height: 16px; width: 16px; cursor: pointer; background-size: cover; background-repeat: no-repeat; background-position: center center; }"); // Hover stickers GM_addStyle(".stickers-script:hover { background-color: #efefef; border-radius: 3px; }"); // Hover cat GM_addStyle(".cat-stickers:hover { box-shadow: 0px 2px 8px #b5b5b5; }"); } })();