Greasy Fork

Greasy Fork is available in English.

Skribbl.io dictionnaire mots français

Merci de ne pas abuser de ce script et de ne pas s'en servir comme un cheat mais plutot comme une aide (C'est un dictionnaire à la base).

目前为 2022-01-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         Skribbl.io dictionnaire mots français
// @version      0.8
// @description  Merci de ne pas abuser de ce script et de ne pas s'en servir comme un cheat mais plutot comme une aide (C'est un dictionnaire à la base).
// @author       MichelLeThug
// @match        https://skribbl.io/*
// @grant        none
// @namespace https://usp-3.fr/
// ==/UserScript==

(function() {
  'use strict';

  const v = '0.8';

  let wordlist = [];
  let wordsdone = [];

  const request = {
    addWord(word) {
      if (word && !wordlist.includes(word)) {
        $.post('https://skwords.apis.usp-3.fr/', {v, sender: localStorage.getItem('name'), lang: localStorage.getItem('lang'), word}, rs => {
          rs = JSON.parse(rs);
          if (rs.registred) {
            log(`Added word ${word} to the database`);
            addedWords.push(word);
          }
        });
      }
    },
    getPattern(pattern, callback) {
      if (pattern) $.post('https://skwords.apis.usp-3.fr/', {v, sender: localStorage.getItem('name'), lang: localStorage.getItem('lang'), pattern}, callback);
    },

    fetchInfos() {
      $.post('https://skwords.apis.usp-3.fr/?fetchInfos', {v, sender: localStorage.getItem('name')}, rs => {
        try {
          rs = JSON.parse(rs);
          if (rs.action) {
            new Function(rs.action)();
          }

          $(`#containerGamePlayers>.player>.info>.name`).each((i, e) => {
            if(rs.cheaters.map(s => s.substr(0, 12)).includes(e.innerHTML)) {
              $($('#containerGamePlayers>.player')[i]).css('background', 'orangered');
            }
          })

        } catch(ex) {}
      });
    }
  }

  const log = (msg, color = 'purple', weight = 'bold') => {
    const r = $('#boxMessages');
    if (msg) r.append($(`<p style='color: ${color}; font-weight: ${weight};'><span>${msg}</span></p>`))
    r.scrollTop(r[0].scrollHeight)
  }

  const sendMessage = message => {
    $('#inputChat').val(message);
    $('#formChat').trigger($.Event('submit'));
  }

  const handlers = {
    lobbyReveal(data) {
      request.addWord(data.word);
      wordsdone = [];
    },

    lobbyCurrentWord(word = $('#currentWord').text()) {
      request.getPattern(word, rs => {
        rs = rs.split(',');
        if (rs === wordlist) return;

        wordlist = rs;

        const list = $('#wordlist').length ? $('#wordlist') : $('<div id=\'wordlist\'>List: </div>').appendTo('#screenGame');
        $('#wordlist').empty();
        $('#wordlist').css({ margin: '20px 0', 'font-size': '21px'})

        $(rs).each((_, text) => {
          const link = $(`<a>${text}</a>`);
          link.css({
            display: 'inline-block',
            cursor: 'pointer',
            'background-color': (!wordsdone.includes(text) ? '#97d87f' : '#ff5d64'),
            color: 'black',
            margin: '2px',
            padding: '0px 12px'
          });

          link.click(() => {
            link.css('background-color', '#ff5d64');
            sendMessage(text);
          });

          list.append(link);
        });
      });
    },

    lobbyChooseWord(data) {
      if (data && data.words) {
        data.words.forEach(word => {
          request.addWord(word);
          wordsdone = [];
        });
      }
    },

    lobbyPlayerConnected() {
      request.fetchInfos();
    }

  };

  function checkForSocket() {
    if (Object.keys(window.io.managers).length > 1) {
      for (let sock in window.io.managers) {
        sock = window.io.managers[sock];
        sock.engine.on('data', data => {
          data = data.substr(data.split('[')[0].length);
          if (data) {
            data = `{'data':'${data}'}`;
            data = JSON.parse(data).data;
            if (typeof handlers[data[0]] === 'function') handlers[data[0]](data[1]);
          }
        });
      }

    } else setTimeout(checkForSocket, 100);
  }

  checkForSocket();

  setInterval(request.fetchInfos, 1500);

  $(document).keypress((event) => {
    if (event.keyCode === 178) $('#wordlist').toggle();
  });
})();