您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Learns the wordlist each round and outputs possible words in chat.
当前为
- // ==UserScript==
- // @name Skribbl.io Helper
- // @version 0.21
- // @description Learns the wordlist each round and outputs possible words in chat.
- // @author n0thing
- // @match https://skribbl.io/*
- // @grant none
- // @namespace https://greasyfork.org/users/90770
- // ==/UserScript==
- (function() {
- 'use strict';
- if (localStorage.getItem('wordlist') !== null) {
- window.alert('Hello from n0thing! I am the developer of Skribbl.io Helper, and I\'ve just updated the script from 0.12 to 0.20.\nThis new update allows for multi-language support, but your current WORDLIST will be affected!\nPlease transfer your current wordlist to wordlist[Lang] so Skribbl.io helper can use your current wordlist.\nSee this this forum (greasyfork.org/en/forum/discussion/48865/) for more information and how to transfer!\n\n This popup will stop appearing once the transfer is complete.');
- }
- //create wordlist name, check if wordlist localstorage exists upon joining game
- var wordlist; //declare global scope wordlist var
- document.querySelector('#formLogin > button').onclick = function(){
- wordlist = 'wordlist' + document.querySelector('#loginLanguage').value;
- if (localStorage.getItem(wordlist) === null) {
- localStorage.setItem(wordlist,'""');
- }
- };
- var wordhint;
- var wordRGX;
- //create message element
- var messageelement = document.createElement('p');
- messageelement.setAttribute('style', 'display: none');
- messageelement.setAttribute('id','botChat');
- var c = document.createElement('span');
- c.setAttribute('id','hint');
- messageelement.appendChild(c);
- document.getElementById('containerSidebar').insertBefore(messageelement, document.getElementById('containerSidebar').childNodes[0]); //insert bot chat
- document.getElementById('containerFreespace').setAttribute('style','display: none');
- var css = document.createElement('style');
- css.innerHTML = '#botChat{ border-radius: 2px; background: rgb(238, 238, 238); width:inherit-5px; overflow-wrap: break-word; position:absolute;right:0;top:3px;left:3px; color: rgb(206, 79, 10);}';
- document.body.appendChild(css);
- document.getElementById('inputChat').setAttribute('placeholder', 'Press ALT to open matching words'); // input wordhint into chat
- document.getElementsByTagName("body")[0].onkeyup = function() {
- if (parseInt(event.keyCode) == 18 ){
- chatbot();
- }};
- //mutationObserver > trigger wordCapture
- var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
- var element = document.querySelector('#overlay > div > div.text');
- var observer = new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- if (mutation.type == 'childList') {
- if (document.querySelector('#overlay > div > div.text').textContent.startsWith("Choose a word")){wordchoiceCapture();}; //trigger wordCatupre() when turn ends
- if (document.querySelector('#overlay > div > div.text').textContent.startsWith("The word was")){wordCapture();};
- }
- });
- });
- observer.observe(element, {
- childList: true
- });
- //capture word from skribbl.io after round
- function wordCapture() {
- var word = document.querySelector('#overlay > div > div.text').textContent.slice(14);
- if (localStorage.getItem(wordlist).search(word) === -1){
- if (word.endsWith('word!') === false){
- localStorage.setItem(wordlist,localStorage.getItem(wordlist) + ',"' + word + '"'); //updates localstorage
- }
- }
- }
- function wordchoiceCapture() {
- for (i = 0; i < document.getElementsByClassName("word").length; i++){
- var wordChoice = wordChoice + ',"' + document.getElementsByClassName("word")[i].textContent + '"'; //collects words from word options when it's the player's turn to draw.
- };
- localStorage.setItem(wordlist,localStorage.getItem(wordlist) + wordChoice); // add to wordlist
- }
- function chatbot(){
- var wordRGX = document.getElementById('currentWord').textContent;
- while (wordRGX.charAt(0) === '_' || wordRGX.charAt(wordRGX.length-1) === '_'){
- if (wordRGX.charAt(0) === '_'){
- wordRGX = wordRGX.replace('_','[^ ]');
- } else if(wordRGX.charAt(wordRGX.length-1) === '_'){
- wordRGX = wordRGX.replace(/_$/,'[^ ]');
- }
- }
- wordRGX = wordRGX.replace(/_/g,'[^ ]');
- wordRGX = '"'.concat(wordRGX,'"');
- wordRGX = new RegExp(wordRGX, 'g');
- var wordhint = localStorage.getItem(wordlist).match(wordRGX).filter(function(f){return !f.includes(',');}).sort().toString().replace(/"/g,'').replace(/,/g,', '); // clean up result for bot chat
- if (document.getElementById('botChat').attributes[0].value.search('display: none') != -1){//if hidden
- document.getElementById('hint').innerHTML = wordhint;
- document.getElementById('botChat').setAttribute('style','display:');
- } else {document.getElementById('botChat').setAttribute('style','display: none');}
- document.getElementById('boxMessages').scrollTop = document.getElementById('boxMessages').scrollHeight; //scrollto bottom of chat
- }
- })();