您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
RPlace fixing script TESLA VERSION and SpaceX
// ==UserScript== // @name RPlace fixing script TESLA VERSION // @namespace Violentmonkey Scripts // @grant none // @include https://www.reddit.com/place* // @include https://www.reddit.com/r/place/* // @description RPlace fixing script TESLA VERSION and SpaceX // @version 0.0.1.20170403022644 // ==/UserScript== var jsonversion = 0; var scriptversion = 10; var lastupdatenotice=""; var spacexlogo = { x: 714, y: 203, width: 64, height: 11, colors: [12,12,11,12,12,12,12,12,11,12,12,12,11,11,12,12,12,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 12,12,11,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,12,12,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 11,12,8 ,8 ,3 ,3 ,3 ,2 ,1 ,0 ,1 ,2 ,3 ,3 ,3 ,8 ,12,12,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,3, 12,12,8 ,3 ,3 ,3 ,2 ,1 ,3 ,3 ,3 ,1 ,2 ,3 ,3 ,8 ,8 ,12,3,3,3,3,3,3,3,3,3,12,12,12,12,3,12,12,12,12,3, 3,12,3,3,3,12,12,12,12,3,12,12,12,12,3,12,12,3,3,3,2,2,3,3,3,3,3, 12,12,8 ,3 ,3 ,3 ,1 ,3 ,2 ,3 ,2 ,3 ,1 ,3 ,3 ,3 ,8 ,12,3,3,2,2,2,3,3,2,3,12,3 ,3 ,3 ,3,12,3 ,3 ,12,3, 3,3,12,3,3,12,3,3,3,3,3,3,3,3,3,3,12,12,2,2,3,3,3,3,3,3,3, 12,11,8 ,3 ,3 ,3 ,0 ,3 ,3 ,1 ,3 ,3 ,0 ,3 ,3 ,3 ,8 ,12,3,3,2,3,3,3,2,3,3,12,12,12,12,3,12,12,12,12,3,12,12,12,3,3,12,3,3,3,3,12,12,12,3,3,3,3,2,12,3,3,3,3,3,3,3,3, 12,12,8 ,3 ,3 ,3 ,1 ,3 ,2 ,3 ,2 ,3 ,1 ,3 ,3 ,3 ,8 ,11,3,3,2,3,3,3,2,3,3,3,3,3,12,3,12,3,3,3,3,3,3,3,12,3,12,3,3,3,3,12,3,3,3,3,3,2,3,12,12,3,3,3,3,3,3,3, 11,12,8 ,3 ,3 ,3 ,2 ,1 ,3 ,3 ,3 ,1 ,2 ,3 ,3 ,8 ,8 ,12,3,3,2,3,3,2,3,3,3,12,12,12,12,3,12,3,3,3,3,3,3,3,12,3,12,12,12,12,3,12,12,12,12,3,2,2,3,3,12,12,3,3,3,3,3,3, 12,11,8 ,8 ,3 ,3 ,3 ,2 ,1 ,0 ,1 ,2 ,3 ,3 ,3 ,8 ,11,12,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 12,12,12,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,8 ,12,12,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 11,12,12,12,11,12,12,12,12,12,11,12,12,11,11,12,12,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3] }; var sprites = [spacexlogo]; var colorsABGR = []; var placed = 0; // hooks var client; var canvasse; var jQuery; var startTime; var test = 0; var teslamode = 1; function updateColors(){ var xmlhttp = new XMLHttpRequest(); var url = "https://www.pdox.net/colors/colors.json?_=" + new Date().getTime(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var myArr = JSON.parse(this.responseText); if (myArr.version != jsonversion) { console.log("New colors/loc data!"); //console.log(myArr); } jsonversion = myArr.version; if(typeof myArr.latestversion != "undefined" && myArr.latestversion > scriptversion){ if(lastupdatenotice != myArr.updatethescript2){ setTimeout(function() { alert(myArr.updatethescript2); }, 1); lastupdatenotice = myArr.updatethescript2; } } if (myArr.sprites) { sprites = myArr.sprites; } else { spacexlogo = myArr.pepe; spacexlogo.colors = myArr.colors; sprites = [spacexlogo]; } } }; xmlhttp.open("GET", url, true); xmlhttp.send(); setTimeout(updateColors, 30000); } r.placeModule("Pepe", function(e){ updateColors(); setTimeout(updateColors, 30000); setTimeout(function(){ window.location="https://www.reddit.com/r/place/#x=732&y=153"; client = e("client"); canvasse = e("canvasse"); jQuery = e("jQuery"); startTime = new Date(); for(var i=0; i<client.palette.length; i++){ colorsABGR[i] = client.getPaletteColorABGR(i); } // Start if(!test){ attempt(); } else { drawTestPepe(); } }, 2500); setTimeout(function(){window.location="https://www.reddit.com/r/place/";}, 2*60*1000); }); function measure(){ for (var idx=0; idx<sprites.length; idx++) { var pepe = sprites[idx]; var goodcount = 0; var badcount = 0; for(var i=0; i<pepe.width*pepe.height; i++){ if(pepe.colors[i] === -1){ continue; } var targetPoint = getPoint(pepe, i); var pixelColor = getPixel(targetPoint.x, targetPoint.y); if(pixelColor !== colorsABGR[pepe.colors[i]]){ badcount++; } else { goodcount++; } } var percent = (goodcount/(badcount+goodcount))*100; console.log("SPRITE " + idx + " / " + sprites[idx].name + ":" + " " + goodcount + " GOOD PIXELS, " + badcount + " BAD PIXELS , DONE: " + percent + "%"); } return 0; } unsafeWindow.measure = measure; function fixSprite(idx,done){ var pepe = sprites[idx]; var goodcount = 0; var badcount = 0; var badpixlist = []; for(var i=0; i<pepe.width*pepe.height; i++){ if(pepe.colors[i] === -1){ continue; } var targetPoint = getPoint(pepe, i); var pixelColor = getPixel(targetPoint.x, targetPoint.y); if(pixelColor !== colorsABGR[pepe.colors[i]]){ badcount++; if(!done){ badpixlist.push({x:targetPoint.x, y:targetPoint.y, i:i}); } } else { goodcount++; } } if(badpixlist.length>0){ var target = Math.round(Math.random()*(badpixlist.length-1)); console.log("Random target: " + target); console.log("Fixing pixel (" + badpixlist[target].x + ", " + badpixlist[target].y + ")"); client.setColor(pepe.colors[badpixlist[target].i]); client.drawTile(badpixlist[target].x, badpixlist[target].y); done = true; badcount--; } var percent = (goodcount/(badcount+goodcount))*100; console.log("SPRITE " + idx + " / " + sprites[idx].name + ":" + " " + goodcount + " GOOD PIXELS, " + badcount + " BAD PIXELS , DONE: " + percent + "%"); return done; } function attempt(){ var toWait = client.getCooldownTimeRemaining(); if(toWait === 0){ // later record end time var endTime = new Date(); // time difference in ms var timeDiff = endTime - startTime; // strip the ms timeDiff /= 1000; // get seconds (Original had 'round' which incorrectly counts 0:28, 0:29, 1:30 ... 1:59, 1:0) var seconds = Math.round(timeDiff % 60); if(seconds > 30){ window.location="https://www.reddit.com/r/place/"; return 0; } console.log("REEEEEE"); var done = false; if(teslamode){ for (var idx=0; idx<sprites.length; idx++) { if(sprites[idx].name=="tesla") done = fixSprite(idx, done); } } for (var idx=0; idx<sprites.length; idx++) { done = fixSprite(idx, done); } } console.log("WAITIN..."); setTimeout(attempt, Math.max(toWait, 10000) + Math.round(Math.random() * 3000)); } function drawTestPepe(){ for (var idx=0; idx<sprites.length; idx++) { var pepe = sprites[idx]; var done = false; for(var i=0; i<pepe.width*pepe.height; i++){ if(pepe.colors[i] === -1){ continue; } var targetPoint = getPoint(pepe, i); canvasse.drawTileAt(targetPoint.x, targetPoint.y, colorsABGR[pepe.colors[i]]); } } } function getPoint(pepe, i){ var x = i % pepe.width; return { x: pepe.x + x, y: pepe.y + (i - x) / pepe.width - pepe.height }; } function getPixel(x, y){ return canvasse.writeBuffer[canvasse.getIndexFromCoords(x, y)]; }