您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
adds some visual stuff
- // ==UserScript==
- // @name Sploop decorations
- // @version 1.2
- // @description adds some visual stuff
- // @author nyanner
- // @match *://sploop.io/*
- // @match *://lostworld.io/*
- // @run-at document-start
- // @icon https://sploop.io/img/ui/favicon.png
- // @grant none
- // @namespace https://gf.qytechs.cn/users/960747
- // ==/UserScript==
- (() => {
- "use strict";
- const TYPEOF = value => Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
- const NumberSystem = [ {
- radix: 2,
- prefix: "0b0*"
- }, {
- radix: 8,
- prefix: "0+"
- }, {
- radix: 10,
- prefix: ""
- }, {
- radix: 16,
- prefix: "0x0*"
- } ];
- class Regex {
- constructor(code, unicode) {
- this.code = code;
- this.COPY_CODE = code;
- this.unicode = unicode || false;
- this.hooks = {};
- }
- static parseValue(value) {
- try {
- return Function(`return (${value})`)();
- } catch (err) {
- return null;
- }
- }
- isRegexp(value) {
- return TYPEOF(value) === "regexp";
- }
- generateNumberSystem(int) {
- const copy = [ ...NumberSystem ];
- const template = copy.map((({prefix, radix}) => prefix + int.toString(radix)));
- return `(?:${template.join("|")})`;
- }
- parseVariables(regex) {
- regex = regex.replace(/\{VAR\}/g, "(?:let|var|const)");
- regex = regex.replace(/\{QUOTE\}/g, "['\"`]");
- regex = regex.replace(/ARGS\{(\d+)\}/g, ((...args) => {
- let count = Number(args[1]), arr = [];
- while (count--) arr.push("\\w+");
- return arr.join("\\s*,\\s*");
- }));
- regex = regex.replace(/NUMBER\{(\d+)\}/g, ((...args) => {
- const int = Number(args[1]);
- return this.generateNumberSystem(int);
- }));
- return regex;
- }
- format(name, inputRegex, flags) {
- this.totalHooks += 1;
- let regex = "";
- if (Array.isArray(inputRegex)) {
- regex = inputRegex.map((exp => this.isRegexp(exp) ? exp.source : exp)).join("\\s*");
- } else if (this.isRegexp(inputRegex)) {
- regex = inputRegex.source;
- }
- regex = this.parseVariables(regex);
- if (this.unicode) {
- regex = regex.replace(/\\w/g, "(?:[^\\x00-\\x7F-]|\\$|\\w)");
- }
- const expression = new RegExp(regex.replace(/\{INSERT\}/, ""), flags);
- const match = this.code.match(expression);
- return regex.includes("{INSERT}") ? new RegExp(regex, flags) : expression;
- }
- template(type, name, regex, substr) {
- const expression = new RegExp(`(${this.format(name, regex).source})`);
- const match = this.code.match(expression) || [];
- this.code = this.code.replace(expression, type === 0 ? "$1" + substr : substr + "$1");
- return match;
- }
- match(name, regex, flags, debug = false) {
- const expression = this.format(name, regex, flags);
- const match = this.code.match(expression) || [];
- this.hooks[name] = {
- expression,
- match
- };
- return match;
- }
- matchAll(name, regex, debug = false) {
- const expression = this.format(name, regex, "g");
- const matches = [ ...this.code.matchAll(expression) ];
- this.hooks[name] = {
- expression,
- match: matches
- };
- return matches;
- }
- replace(name, regex, substr, flags) {
- const expression = this.format(name, regex, flags);
- this.code = this.code.replace(expression, substr);
- return this.code.match(expression) || [];
- }
- replaceAll(name, regex, substr, flags) {
- const expression = this.format(name, regex, "g");
- this.code = this.code.replaceAll(expression, substr);
- return this.code.match(expression) || [];
- }
- append(name, regex, substr) {
- return this.template(0, name, regex, substr);
- }
- prepend(name, regex, substr) {
- return this.template(1, name, regex, substr);
- }
- insert(name, regex, substr) {
- const {source} = this.format(name, regex);
- if (!source.includes("{INSERT}")) throw new Error("Your regexp must contain {INSERT} keyword");
- const findExpression = new RegExp(source.replace(/^(.*)\{INSERT\}(.*)$/, "($1)($2)"));
- this.code = this.code.replace(findExpression, `$1${substr}$2`);
- return this.code.match(findExpression);
- }
- }
- let Variables, decorations;
- const applyHooks = code => {
- const Hook = new Regex(code, true);
- window.COPY_CODE = (Hook.COPY_CODE.match(/^(\(function \w+\(\w+\)\{.+)\(.+?\);$/) || [])[1];
- Hook.append("EXTERNAL fix", /\(function (\w+)\(\w+\)\{/, "let $2 = eval(`(() => ${COPY_CODE})()`);delete window.COPY_CODE;");
- Hook.replace("fix", /\(function (\w+)\(\w+\)\{/, `(function snowvibe(){`);
- Hook.replace("fix", /"function"==typeof \w+&&\(\w+=\w\(\w+,\w+\)\);/, ``);
- const myData = Hook.match("myPlayer", /=(\w.get\(\w{2}\));\w&&\w\(\)/)[1];
- const X = Hook.match("playerX", /\{this\.(\w{2})=\w\|\|0/)[1];
- const Y = Hook.match("playerY", /,this\.(\w{2})=\w\|\|0\}/)[1];
- const ID = Hook.match("ID", /&&\w{2}===\w\.(\w{2})\){/)[1];
- const ID2 = Hook.match("ID2", /-1!==\w+\.(\w+)&&/)[1];
- const currentWeapon = Hook.match("crntWeapon", /,\w.(\w{2})===/)[1];
- const angle = Hook.match("angle", /;\w.(\w{2})=\w\(\)/)[1];
- const weaponName = Hook.match("wpnName", /(\w{2}):"XX/)[1];
- const health = Hook.match("health", /(\w{2})<<8;/)[1];
- const weaponDamage = Hook.match("wpnDamage", /(\w{2}):32,reload:300/)[1];
- const teamID = Hook.match("test", /,\w=\w.(\w{2})\|.+?\<\<8/)[1];
- const radius = Hook.match("radius", /(\w{2}):220/)[1];
- const [, currentItem, hat] = Hook.match("hat", /\(\w+\.(\w+)\|\w+\.(\w+)<<NUMBER{8}\)/);
- const size = Hook.match("size", /\.(\w{2})\+50/)[1];
- const inWhichObject = Hook.match("iwo", /110\).+?,1===\w.(\w{2})&&!\w{2}/)[1];
- const weaponID = Hook.match("el", /(\w{2}):0,\w{2}:22,reload:150/)[1];
- const itemType = Hook.matchAll("el", /,(\w+):9,\w+:2/)[1][1];
- const itemsID = Hook.match("IDs", />1\){.{3}(\w{2})/)[1];
- const itemBar = Hook.match("defaultData", /(\W\w+>NUMBER{1}\W.+?(\w+)\.(\w+).+?)function/)[3];
- const objCount = Hook.match("Quantity", /\),this.(\w{2})=\w\):/)[1];
- const weaponList = Hook.match("weaponList", /\?Math\.PI\/2.+?(\w\(\))/)[1];
- const isTyping = Hook.match("is typing", /=\+new Date,(\w{2})=!1,/)[1];
- const damageReduce = Hook.match("damage reduce value", /10,(\w{2}):\.75,/)[1];
- const [, animations, hitAngle, weaponAnimation, animationTime, animationSpeed, playAnimation] = Hook.match("weapon animations", /0,\w\.(\w{2})\.(\w{2})=.{4}(\w{2})\.(\w{2}).{6}(\w{2}).+?(\w{2})\(\.01/);
- const sortedEntities = Hook.match("entities", /,\w=0;\w=(\w)\[/)[1];
- const speedBuff = Hook.match("speed", /(\w+):1\.23/)[1];
- const weaponSpeedBuff = Hook.match("speed", /300,(\w+):\.85/)[1];
- const cam = Hook.match("cam", /,\w\)}},(\w{2})=new function/)[1];
- const ctx = Hook.match("ctx", /(\w{2})=\w{2}(\[\w\(\d{3}\)\]|\.getContext)\("2d"\),\w{2}/)[1];
- const [, camX, camY] = Hook.match("data", /height:20,(\w+).+?.(\w+)/);
- const [, biomeY, biomeHeight] = Hook.match("data", /\w{2}:160,(\w{2}):160,\w{2}.+?(\w{2}):/);
- const local = "window.storage";
- Hook.append("newImg", /(\w).{9}(.{9})."clan_decline"\)\);/, `\n $2[777] = $3("yFlower"));\n $2[777].src = "https://cdn.glitch.global/80f01abb-e90c-4a7c-8f06-4aab31fdf28a/yellowFlower.png?v=1714580473155";\n $2[666] = $3("rFlower"));\n $2[666].src = "https://cdn.glitch.global/80f01abb-e90c-4a7c-8f06-4aab31fdf28a/redFlower.png?v=1714579975791";\n $2[555] = $3("berry"));\n $2[555].src = "https://cdn.glitch.global/80f01abb-e90c-4a7c-8f06-4aab31fdf28a/zxc.png?v=1714581353965";\n $2[1000] = $3("bigEGG"));\n $2[1000].src = "https://cdn.glitch.global/80f01abb-e90c-4a7c-8f06-4aab31fdf28a/bigEGG.png?v=1714650054208";\n $2[999] = $3("miniEGG"));\n $2[999].src = "https://cdn.glitch.global/80f01abb-e90c-4a7c-8f06-4aab31fdf28a/miniEGGpng.png?v=1714650626845";\n $2[888] = $3("ybigEGG"));\n $2[888].src = "https://cdn.glitch.global/80f01abb-e90c-4a7c-8f06-4aab31fdf28a/ybigEGG.png?v=1714757303463";\n `);
- Hook.append("player id", /\((\w)\[0\]\){case \w+\(\).\w+.\w+:/, `${local}.myID = $2[1];`);
- const generatePositions = (amount, id) => {
- let flowers = [];
- for (let i = 0; i < amount; i++) {
- let obj = {
- [Variables.x]: Math.floor(Math.random() * (9800 - 200 + 1)) + 200,
- [Variables.y]: Math.floor(Math.random() * (7450 - 200 + 1)) + 200,
- id
- };
- flowers.push(obj);
- }
- return flowers;
- };
- Variables = {
- myPlayer: {
- myData,
- x: `${myData}.${X}`,
- y: `${myData}.${Y}`,
- id: `${myData}.${ID}`,
- teamID: `${myData}.${teamID}`,
- angle: `${myData}.${angle}`
- },
- x: X,
- y: Y,
- id: ID,
- id2: ID2,
- hat,
- size,
- camX,
- camY,
- type: "type",
- angle,
- biomeY,
- health,
- radius,
- teamID,
- itemsID,
- isTyping,
- weaponID,
- objCount,
- itemType,
- hitAngle,
- speedBuff,
- weaponList,
- weaponName,
- animations,
- biomeHeight,
- weaponDamage,
- damageReduce,
- playAnimation,
- inWhichObject,
- currentWeapon,
- animationTime,
- animationSpeed,
- weaponAnimation,
- weaponSpeedBuff
- };
- decorations = [ {
- id: 1e3,
- [Variables.x]: 29.99999999999999,
- [Variables.y]: 2550.0000000056198
- }, {
- id: 1e3,
- [Variables.x]: 214.0002966762103,
- [Variables.y]: 2492.0291726187397
- }, {
- id: 1e3,
- [Variables.x]: 382.0748870194689,
- [Variables.y]: 2440.6865700037215
- }, {
- id: 1e3,
- [Variables.x]: 573.9858511507157,
- [Variables.y]: 2503.996448203956
- }, {
- id: 1e3,
- [Variables.x]: 761.9999908462445,
- [Variables.y]: 2442.0386539633755
- }, {
- id: 1e3,
- [Variables.x]: 952.0590210896952,
- [Variables.y]: 2505.0498958190256
- }, {
- id: 1e3,
- [Variables.x]: 1259.9862437885706,
- [Variables.y]: 2452.0322384681695
- }, {
- id: 1e3,
- [Variables.x]: 1450.0232490356113,
- [Variables.y]: 2512.003077236567
- }, {
- id: 1e3,
- [Variables.x]: 1641.999998107236,
- [Variables.y]: 2447.999837480006
- }, {
- id: 1e3,
- [Variables.x]: 1764.0000434531719,
- [Variables.y]: 2505.0000611454825
- }, {
- id: 1e3,
- [Variables.x]: 1988.0000024140948,
- [Variables.y]: 2475.3910402273605
- }, {
- id: 1e3,
- [Variables.x]: 2179.999948255453,
- [Variables.y]: 2539.9980611367455
- }, {
- id: 1e3,
- [Variables.x]: 2371.000480338862,
- [Variables.y]: 2415.9959284149245
- }, {
- id: 1e3,
- [Variables.x]: 2498.0000070562905,
- [Variables.y]: 2536.0629494204723
- }, {
- id: 1e3,
- [Variables.x]: 2686.9998878301403,
- [Variables.y]: 2472.9999999978954
- }, {
- id: 1e3,
- [Variables.x]: 2925.999527997155,
- [Variables.y]: 2485.018991363512
- }, {
- id: 1e3,
- [Variables.x]: 3097.732209871221,
- [Variables.y]: 2439.997508765663
- }, {
- id: 1e3,
- [Variables.x]: 3273.968723799376,
- [Variables.y]: 2549.999193626759
- }, {
- id: 1e3,
- [Variables.x]: 3464.8013362358633,
- [Variables.y]: 2485.988137109807
- }, {
- id: 1e3,
- [Variables.x]: 3658.901643634054,
- [Variables.y]: 2485.9999999926995
- }, {
- id: 1e3,
- [Variables.x]: 3831.043036235859,
- [Variables.y]: 2526.0001627953843
- }, {
- id: 1e3,
- [Variables.x]: 4082.9596476709476,
- [Variables.y]: 2461.9236918125425
- }, {
- id: 1e3,
- [Variables.x]: 3956.0004172683734,
- [Variables.y]: 2461.99999999995
- }, {
- id: 1e3,
- [Variables.x]: 4277.747414095257,
- [Variables.y]: 2513.8991451561224
- }, {
- id: 1e3,
- [Variables.x]: 4509.000161954971,
- [Variables.y]: 2580.0064837158116
- }, {
- id: 1e3,
- [Variables.x]: 4400.0000005704605,
- [Variables.y]: 2479.9017377199107
- }, {
- id: 1e3,
- [Variables.x]: 4781.002734792941,
- [Variables.y]: 2488.1308565839
- }, {
- id: 1e3,
- [Variables.x]: 4967.00551941161,
- [Variables.y]: 2551.1279965524545
- }, {
- id: 1e3,
- [Variables.x]: 5160.050201842505,
- [Variables.y]: 2488.0470865591833
- }, {
- id: 1e3,
- [Variables.x]: 5352.999570332228,
- [Variables.y]: 2552.020740569861
- }, {
- id: 1e3,
- [Variables.x]: 5543.93781742945,
- [Variables.y]: 2488.0029731646046
- }, {
- id: 1e3,
- [Variables.x]: 5737.000002635433,
- [Variables.y]: 2427.172435813349
- }, {
- id: 1e3,
- [Variables.x]: 5928.993634014561,
- [Variables.y]: 2464.136863940179
- }, {
- id: 1e3,
- [Variables.x]: 6116.258412735068,
- [Variables.y]: 2460.7532317948144
- }, {
- id: 1e3,
- [Variables.x]: 6320.9560100313865,
- [Variables.y]: 2503.999997449834
- }, {
- id: 1e3,
- [Variables.x]: 6559.886115789101,
- [Variables.y]: 2497.8825216612922
- }, {
- id: 1e3,
- [Variables.x]: 6808.045482957361,
- [Variables.y]: 2434.7954508014664
- }, {
- id: 1e3,
- [Variables.x]: 6686.313048001445,
- [Variables.y]: 2434.000063238881
- }, {
- id: 1e3,
- [Variables.x]: 7007.821502411624,
- [Variables.y]: 2497.842353327186
- }, {
- id: 1e3,
- [Variables.x]: 7201.89346427579,
- [Variables.y]: 2434.814349475234
- }, {
- id: 1e3,
- [Variables.x]: 7394.0000069265125,
- [Variables.y]: 2496.000855023708
- }, {
- id: 1e3,
- [Variables.x]: 7586.991570724414,
- [Variables.y]: 2496.002150801967
- }, {
- id: 1e3,
- [Variables.x]: 7774.35475739181,
- [Variables.y]: 2433.97018813505
- }, {
- id: 1e3,
- [Variables.x]: 7965.652671373453,
- [Variables.y]: 2433.9999999745323
- }, {
- id: 1e3,
- [Variables.x]: 8105.065104471541,
- [Variables.y]: 2448.041779867961
- }, {
- id: 1e3,
- [Variables.x]: 8357.00328524934,
- [Variables.y]: 2485.986261225132
- }, {
- id: 1e3,
- [Variables.x]: 8500.999736983238,
- [Variables.y]: 2584.090122606014
- }, {
- id: 1e3,
- [Variables.x]: 8679.159237507823,
- [Variables.y]: 2413.199101719817
- }, {
- id: 1e3,
- [Variables.x]: 8908.11207669312,
- [Variables.y]: 2493.8815710969857
- }, {
- id: 1e3,
- [Variables.x]: 9100.266251022786,
- [Variables.y]: 2430.0089637733436
- }, {
- id: 1e3,
- [Variables.x]: 9286.056462091026,
- [Variables.y]: 2485.9780466880356
- }, {
- id: 1e3,
- [Variables.x]: 9538.995084609018,
- [Variables.y]: 2450.9396355931212
- }, {
- id: 1e3,
- [Variables.x]: 9732.002382560924,
- [Variables.y]: 2514.7415554647096
- }, {
- id: 1e3,
- [Variables.x]: 9924.06913400942,
- [Variables.y]: 2450.3753934720717
- }, {
- id: 999,
- [Variables.x]: 9633.066283895572,
- [Variables.y]: 2774.965527966431
- }, {
- id: 999,
- [Variables.x]: 9368.367656473702,
- [Variables.y]: 2638.760240996886
- }, {
- id: 999,
- [Variables.x]: 9108.93843443585,
- [Variables.y]: 2637.9999992425182
- }, {
- id: 999,
- [Variables.x]: 8886.996496464813,
- [Variables.y]: 2740.465721502559
- }, {
- id: 999,
- [Variables.x]: 8591.98848042534,
- [Variables.y]: 2697.955473152916
- }, {
- id: 999,
- [Variables.x]: 8364.02653944699,
- [Variables.y]: 2742.099189166931
- }, {
- id: 999,
- [Variables.x]: 8018.224819551448,
- [Variables.y]: 2652.8442740990295
- }, {
- id: 999,
- [Variables.x]: 7777.999486631112,
- [Variables.y]: 2606.9522705110076
- }, {
- id: 999,
- [Variables.x]: 7558.001173278906,
- [Variables.y]: 2890.046991103157
- }, {
- id: 999,
- [Variables.x]: 8127.3105680599665,
- [Variables.y]: 2890.999995021336
- }, {
- id: 999,
- [Variables.x]: 7398.508914037662,
- [Variables.y]: 2668.8699230283755
- }, {
- id: 999,
- [Variables.x]: 6708.262218454327,
- [Variables.y]: 2866.24706119208
- }, {
- id: 999,
- [Variables.x]: 6880.874061431822,
- [Variables.y]: 2568.0547673207466
- }, {
- id: 999,
- [Variables.x]: 7048.001181302265,
- [Variables.y]: 2683.998365437441
- }, {
- id: 999,
- [Variables.x]: 6384.51880056193,
- [Variables.y]: 2633.012344760018
- }, {
- id: 999,
- [Variables.x]: 6229.001527052843,
- [Variables.y]: 2724.000037299408
- }, {
- id: 999,
- [Variables.x]: 6185.032206096412,
- [Variables.y]: 2552.328289336163
- }, {
- id: 999,
- [Variables.x]: 5833.001081234768,
- [Variables.y]: 2515.000004783373
- }, {
- id: 999,
- [Variables.x]: 5635.013000179002,
- [Variables.y]: 2715.132991764611
- }, {
- id: 999,
- [Variables.x]: 4983.825719408364,
- [Variables.y]: 2630.2715949351987
- }, {
- id: 999,
- [Variables.x]: 4808.991452957154,
- [Variables.y]: 2675.0019236474545
- }, {
- id: 999,
- [Variables.x]: 4529.012077026215,
- [Variables.y]: 2794.998442785668
- }, {
- id: 999,
- [Variables.x]: 4248.154513207736,
- [Variables.y]: 2644.1945023172448
- }, {
- id: 999,
- [Variables.x]: 3829.7973412358106,
- [Variables.y]: 2707.1158592753254
- }, {
- id: 999,
- [Variables.x]: 3546.763829523222,
- [Variables.y]: 2679.8762554251716
- }, {
- id: 999,
- [Variables.x]: 3265.379713427688,
- [Variables.y]: 2884.726069333624
- }, {
- id: 999,
- [Variables.x]: 2752.170958277778,
- [Variables.y]: 2757.172314205808
- }, {
- id: 999,
- [Variables.x]: 2342.000023920623,
- [Variables.y]: 2541.7259192431193
- }, {
- id: 999,
- [Variables.x]: 2393.0000001045064,
- [Variables.y]: 2546.020440082226
- }, {
- id: 999,
- [Variables.x]: 2375.214639614609,
- [Variables.y]: 2785.050511999293
- }, {
- id: 999,
- [Variables.x]: 2011.4663935069682,
- [Variables.y]: 2678.3053400094395
- }, {
- id: 999,
- [Variables.x]: 2319.999998340479,
- [Variables.y]: 2512.063388541019
- }, {
- id: 999,
- [Variables.x]: 1781.5653155460602,
- [Variables.y]: 2919.7695949555446
- }, {
- id: 999,
- [Variables.x]: 1457.9829399058456,
- [Variables.y]: 2732.69666008065
- }, {
- id: 999,
- [Variables.x]: 1121.8816981507593,
- [Variables.y]: 2643.8009150795624
- }, {
- id: 999,
- [Variables.x]: 902.8558665635351,
- [Variables.y]: 2914.533541069445
- }, {
- id: 999,
- [Variables.x]: 617.7088262599689,
- [Variables.y]: 3000.208332291725
- }, {
- id: 999,
- [Variables.x]: 115.76284446446414,
- [Variables.y]: 2761.1691492848804
- }, {
- id: 999,
- [Variables.x]: 443.999174424608,
- [Variables.y]: 2626.910633614252
- }, {
- id: 999,
- [Variables.x]: 401.0006173978146,
- [Variables.y]: 532.9993392260212
- }, {
- id: 888,
- [Variables.x]: 146.3497840873793,
- [Variables.y]: 7519.927999039886
- }, {
- id: 888,
- [Variables.x]: 391.0196308967286,
- [Variables.y]: 7549.085720093481
- }, {
- id: 888,
- [Variables.x]: 543.1371807981709,
- [Variables.y]: 7533.976836147818
- }, {
- id: 888,
- [Variables.x]: 697.0531620113139,
- [Variables.y]: 7550.005525482361
- }, {
- id: 888,
- [Variables.x]: 841.2366989055986,
- [Variables.y]: 7546.024636082353
- }, {
- id: 888,
- [Variables.x]: 1002.1840190174183,
- [Variables.y]: 7499.675493417864
- }, {
- id: 888,
- [Variables.x]: 1142.6196506884087,
- [Variables.y]: 7548.285257450758
- }, {
- id: 888,
- [Variables.x]: 1304.2958114699852,
- [Variables.y]: 7548.0000001380395
- }, {
- id: 888,
- [Variables.x]: 1461.2890760037862,
- [Variables.y]: 7504.484162973849
- }, {
- id: 888,
- [Variables.x]: 1599.1268933314354,
- [Variables.y]: 7552.456685165645
- }, {
- id: 888,
- [Variables.x]: 1759.204500911972,
- [Variables.y]: 7529.112818068299
- }, {
- id: 888,
- [Variables.x]: 1885.5663898853736,
- [Variables.y]: 7535.997014384194
- }, {
- id: 888,
- [Variables.x]: 2008.864282123885,
- [Variables.y]: 7534.011987392109
- }, {
- id: 888,
- [Variables.x]: 2169.451157581377,
- [Variables.y]: 7508.428652937195
- }, {
- id: 888,
- [Variables.x]: 2321.4119053460654,
- [Variables.y]: 7524.004600254365
- }, {
- id: 888,
- [Variables.x]: 2445.37679324718,
- [Variables.y]: 7556.959438438634
- }, {
- id: 888,
- [Variables.x]: 2605.4951406107575,
- [Variables.y]: 7557.0000001068265
- }, {
- id: 888,
- [Variables.x]: 2745.837252598174,
- [Variables.y]: 7513.389117185103
- }, {
- id: 888,
- [Variables.x]: 2870.119102149074,
- [Variables.y]: 7545.351524404612
- }, {
- id: 888,
- [Variables.x]: 3053.1769305206426,
- [Variables.y]: 7545.000003910216
- }, {
- id: 888,
- [Variables.x]: 3154.026610855043,
- [Variables.y]: 7492.703531529384
- }, {
- id: 888,
- [Variables.x]: 3241.745184056783,
- [Variables.y]: 7558.0648618785635
- }, {
- id: 888,
- [Variables.x]: 3452.00226701193,
- [Variables.y]: 7544.999961196074
- }, {
- id: 888,
- [Variables.x]: 3567.4144062974487,
- [Variables.y]: 7498.745675591474
- }, {
- id: 888,
- [Variables.x]: 3688.934608223305,
- [Variables.y]: 7531.10369153833
- }, {
- id: 888,
- [Variables.x]: 3791.186191689511,
- [Variables.y]: 7520.999459482911
- }, {
- id: 888,
- [Variables.x]: 3906.079096108739,
- [Variables.y]: 7543.998942932907
- }, {
- id: 888,
- [Variables.x]: 4044.2380426104028,
- [Variables.y]: 7543.999999992666
- }, {
- id: 888,
- [Variables.x]: 4174.286212080739,
- [Variables.y]: 7505.998008278797
- }, {
- id: 888,
- [Variables.x]: 4319.522512008703,
- [Variables.y]: 7537.101396727113
- }, {
- id: 888,
- [Variables.x]: 4433.000000004023,
- [Variables.y]: 7513.999999995751
- }, {
- id: 888,
- [Variables.x]: 4555.716798990464,
- [Variables.y]: 7546.0026680826795
- }, {
- id: 888,
- [Variables.x]: 4670.1247637998,
- [Variables.y]: 7523.046104406854
- }, {
- id: 888,
- [Variables.x]: 4794.617556083352,
- [Variables.y]: 7555.999791719118
- }, {
- id: 888,
- [Variables.x]: 4941.651040639689,
- [Variables.y]: 7524.000003661002
- }, {
- id: 888,
- [Variables.x]: 5042.602176094363,
- [Variables.y]: 7556.0006088283935
- }, {
- id: 888,
- [Variables.x]: 5180.459249490879,
- [Variables.y]: 7556.00000000101
- }, {
- id: 888,
- [Variables.x]: 5303.000933676377,
- [Variables.y]: 7501.028451187172
- }, {
- id: 888,
- [Variables.x]: 5419.518179728937,
- [Variables.y]: 7548.018130776565
- }, {
- id: 888,
- [Variables.x]: 5557.021528601353,
- [Variables.y]: 7525.360710641226
- }, {
- id: 888,
- [Variables.x]: 5679.548749434651,
- [Variables.y]: 7558.387682614479
- }, {
- id: 888,
- [Variables.x]: 5817.081907074551,
- [Variables.y]: 7535.225502179956
- }, {
- id: 888,
- [Variables.x]: 5955.801011406585,
- [Variables.y]: 7536.998169722631
- }, {
- id: 888,
- [Variables.x]: 6058.068886876112,
- [Variables.y]: 7503.843014156425
- }, {
- id: 888,
- [Variables.x]: 6182.08285499084,
- [Variables.y]: 7536.468905493149
- }, {
- id: 888,
- [Variables.x]: 6319.000298599492,
- [Variables.y]: 7559.223506154572
- }, {
- id: 888,
- [Variables.x]: 6456.0438409023,
- [Variables.y]: 7559.000001239853
- }, {
- id: 888,
- [Variables.x]: 6593.708873816226,
- [Variables.y]: 7559.000000000004
- }, {
- id: 888,
- [Variables.x]: 6694.621021783071,
- [Variables.y]: 7503.922669545933
- }, {
- id: 888,
- [Variables.x]: 6802.017532395823,
- [Variables.y]: 7543.013844983488
- }, {
- id: 888,
- [Variables.x]: 6939.576139515191,
- [Variables.y]: 7519.736835652795
- }, {
- id: 888,
- [Variables.x]: 7094.688032200829,
- [Variables.y]: 7540.085798774424
- }, {
- id: 888,
- [Variables.x]: 7226.998639368321,
- [Variables.y]: 7522.058989048326
- }, {
- id: 888,
- [Variables.x]: 7387.01121045099,
- [Variables.y]: 7544.002188008208
- }, {
- id: 888,
- [Variables.x]: 7525.164163912381,
- [Variables.y]: 7520.477342503655
- }, {
- id: 888,
- [Variables.x]: 7682.63209343086,
- [Variables.y]: 7520.950333690332
- }, {
- id: 888,
- [Variables.x]: 7819.874119219743,
- [Variables.y]: 7474.529781602834
- }, {
- id: 888,
- [Variables.x]: 7914.101850271172,
- [Variables.y]: 7546.273684819922
- }, {
- id: 888,
- [Variables.x]: 8075.163398710387,
- [Variables.y]: 7523.178479254832
- }, {
- id: 888,
- [Variables.x]: 8243.626299995074,
- [Variables.y]: 7529.999928226666
- }, {
- id: 888,
- [Variables.x]: 8381.398267091548,
- [Variables.y]: 7506.778270687802
- }, {
- id: 888,
- [Variables.x]: 8610.0060525894,
- [Variables.y]: 7529.696290884706
- }, {
- id: 888,
- [Variables.x]: 8770.417583524257,
- [Variables.y]: 7553.000247702051
- }, {
- id: 888,
- [Variables.x]: 8448.995853929235,
- [Variables.y]: 7553.000000000004
- }, {
- id: 888,
- [Variables.x]: 8929.703318071148,
- [Variables.y]: 7552.999999999999
- }, {
- id: 888,
- [Variables.x]: 9044.893738170069,
- [Variables.y]: 7504.45378526034
- }, {
- id: 888,
- [Variables.x]: 9233.46060143763,
- [Variables.y]: 7495.997477063163
- }, {
- id: 888,
- [Variables.x]: 9348.000125187058,
- [Variables.y]: 7541.000685853901
- }, {
- id: 888,
- [Variables.x]: 9572.018260313409,
- [Variables.y]: 7527.314604546699
- }, {
- id: 888,
- [Variables.x]: 9702.810491263053,
- [Variables.y]: 7511.700779821693
- }, ...generatePositions(100, 777), ...generatePositions(100, 666), ...generatePositions(100, 555) ];
- log(Variables);
- window.Variables = Variables;
- Hook.prepend("injected?", /^\(function/, `log("Injected!");`);
- Hook.append("biomes", /\w\(9282\),(\w{2})=\w\.\w\(\w{2}\).+?;/, `${local}.biomes=$2();${local}.changeIndex($2());`);
- Hook.append("camera object", /0,40\);/, `${local}.cam=${cam};`);
- Hook.append("define renderer", /function (\w{2})\(\w,\w,\w,\w\){const \w=\w\[.+?}/, `;${local}.renderObj=$2;`);
- Hook.append("my x,y", /const (\w)=\w\.get\(\w{2}\);/, `${local}.defineData($2);`);
- Hook.append("frame update", /Date,(\w)=\(\w-\w{2}\)\/1e3;/, `${local}.updateFrame($2);`);
- Hook.append("hook canvas", /\.\w{2}&&\w{2}\(\w\[\w\],\w\[\w\]\.\w{2},\w\(\)\.\w{2},\w\)/, `;${local}.hookCanvas(${ctx});`);
- Hook.append("renderer", /=1}function \w{2}\((\w),\w\){.+?\),.+?,/, `${local}.renderDecorations($2),`);
- return Hook.code;
- };
- window.eval = new Proxy(window.eval, {
- apply(target, _this, args) {
- const code = args[0];
- if (code.length > 1e5) {
- args[0] = applyHooks(code);
- window.eval = target;
- document.title = "Sploop";
- target.apply(_this, args);
- return;
- }
- return target.apply(_this, args);
- }
- });
- const main_log = console.log;
- window.log = main_log;
- let delta;
- const isIntersect = (Ax, Ay, Aw, Ah, Bx, By, Bw, Bh) => Bx + Bw > Ax && By + Bh > Ay && Ax + Aw > Bx && Ay + Ah > By;
- const coolDownOver = (currentTimeStamp, previousTimeStamp, interval) => currentTimeStamp - previousTimeStamp > interval;
- const defineData = myPlayer => {
- if (myPlayer) {
- storage.myX = myPlayer[Variables.x];
- storage.myY = myPlayer[Variables.y];
- }
- };
- const renderDecorations = ctx => {
- decorations.forEach((decoration => {
- if (Math.hypot(storage.myX - Number(decoration[Variables.x]), storage.myY - Number(decoration[Variables.y])) < 1500) storage.renderObj(decoration, decoration.id, ctx);
- }));
- };
- const biomes = {
- snow: {
- x: 160,
- y: 160,
- w: 9840,
- h: 2230
- },
- desert: {
- x: 160,
- y: 9190,
- w: 9840,
- h: 840
- },
- river: {
- x: 160,
- y: 8e3,
- w: 9840,
- h: 1e3
- }
- };
- let strength = .07;
- let riverAccumulator = 0;
- const hookCanvas = ctx => {
- if (!ctx || !storage.cam) return;
- const canvas = document.querySelector("#game-canvas");
- const scaleFactor = 1;
- const vx = storage.cam[Variables.camX] - canvas.width / scaleFactor / 2;
- const vy = storage.cam[Variables.camY] - canvas.height / scaleFactor / 2;
- const vw = canvas.width / scaleFactor;
- const vh = canvas.height / scaleFactor;
- const s_x = biomes.snow.x;
- const s_y = biomes.snow.y;
- const s_w = biomes.snow.w;
- const s_h = biomes.snow.h;
- const d_x = biomes.desert.x;
- const d_y = biomes.desert.y;
- const d_w = biomes.desert.w;
- const d_h = biomes.desert.h;
- const r_x = biomes.river.x;
- const r_y = biomes.river.y;
- const r_w = biomes.river.w;
- const r_h = biomes.river.h;
- const canSeeDesert = isIntersect(d_x, d_y, d_w, d_h, vx, vy, vw, vh);
- const canSeeSnow = isIntersect(s_x, s_y, s_w, s_h, vx, vy, vw, vh);
- const canSeeRiver = isIntersect(r_x, r_y, r_w, r_h, vx, vy, vw, vh);
- if (canSeeRiver) {
- riverAccumulator = (riverAccumulator + delta) % (2 * Math.PI);
- const offset = strength * Math.sin(riverAccumulator);
- storage.biomes[4][Variables.biomeY] -= offset;
- storage.biomes[4][Variables.biomeHeight] += offset;
- }
- if (canSeeSnow) {
- particles.updateType(0);
- } else if (canSeeDesert) {
- particles.updateType(1);
- }
- if (canSeeSnow || canSeeDesert) particles.render(ctx, delta, vx, vy, vw, vh);
- };
- const updateFrame = ms => {
- delta = ms;
- };
- let assets = {};
- assets.canvasCache = {};
- assets.createCanvasCacheKey = function(key, width, height) {
- return `${key}-${width}x${height}`;
- };
- assets.getCanvas = function(key, width, height) {
- return this.canvasCache[this.createCanvasCacheKey(key, width, height)];
- };
- assets.deleteCanvas = function(key, width, height) {
- delete assets.canvasCache[this.createCanvasCacheKey(key, width, height)];
- };
- assets.imgCache = {};
- assets.drawImageToCanvas = function(img, canvas, tint) {
- let ctx = canvas.getContext("2d");
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
- if (tint) {
- ctx.save();
- ctx.globalCompositeOperation = "source-atop";
- ctx.fillStyle = tint;
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- ctx.restore();
- }
- };
- assets.createCanvas = function(key, width, height) {
- width = Math.ceil(width);
- height = Math.ceil(height);
- let canvas = document.createElement("canvas");
- canvas.width = width;
- canvas.height = height;
- assets.canvasCache[this.createCanvasCacheKey(key, width, height)] = canvas;
- return canvas;
- };
- assets.getImage = function(path, width = 256, height = 256, tint = null) {
- width = Math.ceil(width);
- height = Math.ceil(height);
- let canvasKey = tint ? `${path}:${tint}` : path;
- let canvas = this.getCanvas(canvasKey, width, height);
- if (!canvas) {
- canvas = this.createCanvas(canvasKey, width, height);
- let img = assets.imgCache[path];
- if (img) {
- if (img.isLoaded) {
- this.drawImageToCanvas(img, canvas, tint);
- } else {
- img.addEventListener("load", (() => this.drawImageToCanvas(img, canvas, tint)));
- }
- } else {
- let img = new Image;
- img.isLoaded = false;
- img.src = path;
- img.addEventListener("load", (() => {
- this.drawImageToCanvas(img, canvas, tint);
- img.isLoaded = true;
- }));
- img.addEventListener("error", (() => {
- console.error("Error loading image:", path);
- delete assets.imgCache[path];
- this.deleteCanvas(path, width, height);
- }));
- this.imgCache[path] = img;
- }
- }
- return canvas;
- };
- let utils = {};
- utils.drawImage = (ctx, img, x, y, scale = 1) => {
- ctx.drawImage(img, x - img.width / 2, y - img.height / 2);
- };
- class ParticleManager {
- constructor(game) {
- this.game = game;
- this.particles = [];
- this.toDispose = [];
- this.config = {
- 0: {
- maxLife: 2e3,
- speed: 20
- }
- };
- }
- generateParticles(quanity = 10, type = 0) {
- for (let i = 0; i < quanity; i++) {
- this.particles.push([ 100 + Math.random() * 100, 40 * Math.random(), type, performance.now() - 2e3 * Math.random(), Math.PI * Math.random() ]);
- }
- }
- updateType(type) {
- for (let i = 0; i < this.particles.length; i++) {
- this.particles[i][2] = type;
- }
- }
- flush() {
- this.particles = [];
- }
- resetParticle(particle, timeStamp, vx, vy, vw, vh) {
- particle[3] = timeStamp - Math.random() * 2e3;
- particle[1] = vy + Math.random() * vh;
- particle[0] = vx + Math.random() * vw;
- }
- render(ctx, delta, vx, vy, vw, vh) {
- const now = performance.now();
- for (let i = 0; i < this.particles.length; i++) {
- const particle = this.particles[i];
- particle[4] = (particle[4] + delta) % (2 * Math.PI);
- if (coolDownOver(now, particle[3], this.config[0].maxLife)) this.resetParticle(particle, now, vx, vy, vw, vh);
- particle[1] += 100 * delta * Math.sin(particle[4] > Math.PI ? particle[4] + Math.PI : particle[4]);
- particle[0] += 100 * delta * Math.cos(particle[4]);
- const alpha = Math.abs(Math.sin(Math.PI * (now - particle[3]) / this.config[0].maxLife));
- ctx.globalAlpha = alpha;
- switch (particle[2]) {
- case 0:
- utils.drawImage(ctx, assets.getImage("https://cdn.glitch.global/f130fdcd-6684-4ec2-86bd-350f8a62abb7/snow.png?v=1734601216160", 32, 32), particle[0], particle[1]);
- break;
- case 1:
- utils.drawImage(ctx, assets.getImage("https://cdn.glitch.global/f130fdcd-6684-4ec2-86bd-350f8a62abb7/sand.png?v=1734601248796", 32, 32), particle[0], particle[1]);
- break;
- }
- ctx.globalAlpha = 1;
- }
- }
- }
- const changeIndex = biomes => {
- [biomes[biomes.length - 1], biomes[biomes.length - 2]] = [ biomes[biomes.length - 2], biomes[biomes.length - 1] ];
- biomes[4][Variables.biomeY] = 7995;
- biomes[4][Variables.biomeHeight] = 9005;
- };
- const particles = new ParticleManager;
- particles.generateParticles(4, 1);
- window.particleManager = particles;
- const storage = {
- myX: 0,
- myY: 0,
- renderObj: undefined,
- cam: undefined,
- biomes: undefined,
- updateFrame,
- hookCanvas,
- defineData,
- changeIndex,
- renderDecorations
- };
- window.storage = storage;
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址