Size
18.8 KB
Version
2.5
Created
Feb 14, 2026
Updated
about 1 month ago
1// ==UserScript==
2// @name evoworld.io Cheats
3// @namespace http://tampermonkey.net/
4// @version 2.5
5// @author @jmatg1
6// @name:ru evoworld.io Читы
7// @description:ru evoworld.io Ночное виденье, видим скрытых игроков
8// @match https://evoworld.io/
9// @icon https://www.google.com/s2/favicons?sz=64&domain=evoworld.io
10// @grant none
11// @description "evoworld.io Cheats"
12// @contributionURL https://www.donationalerts.com/r/jmatg1
13// @antifeature Players with the nickname jmatg1 are not visible in the game
14// @antifeature:ru Игроков с ником jmatg1 не видно в игре
15// @downloadURL https://update.greasyfork.org/scripts/457502/evoworldio%20Cheats.user.js
16// @updateURL https://update.greasyfork.org/scripts/457502/evoworldio%20Cheats.meta.js
17// ==/UserScript==
18(function () {
19 const VERSION = "2.5";
20 let oldMethod = false;
21 try {
22 let xhr = new XMLHttpRequest();
23 xhr.open('GET', "https://greasyfork.org/ru/scripts/457502.json");
24 xhr.send();
25
26 xhr.onload = function() {
27 let obj = JSON.parse(xhr.response)
28 if (obj.version !== VERSION){
29 let t = "New Version!!!" + " (" + VERSION + " -> " + obj.version + ") https://greasyfork.org/ru/scripts/457502-detected-dont-use-or-banned-evoworld-io-cheats"
30 window.alert(t)
31 }
32 };
33 } catch (e){}
34 const confirmBan = Boolean(localStorage.getItem('asdjl2'))
35 if(!confirmBan) {
36 alert('Attention. You may be banned! Login to another account and run the script to test the anti-ban.')
37 localStorage.setItem('asdjl2', true);
38 }
39 try {
40 let xhr = new XMLHttpRequest();
41 xhr.open('POST', "https://evoworld.io/api/reportError.php");
42 xhr.send();
43
44 xhr.onload = function() {
45 alert('Bypass DOESNT WORK! Script not running. See video youtube https://youtu.be/ExaGqTIQc7c');
46 /*if(confirm('Run Script with old bypass?')) {
47 setInterval(() => {
48 if (reportedErrors && !reportedErrors.includes('validate error 1')) {
49 reportedErrors.push('validate error 1');
50 if (!oldMethod) {
51 oldMethod = true;
52 initscript();
53 }
54 }
55 }, 300)
56 }*/
57
58 };
59 xhr.onerror = function() {
60 alert('Bypass WORK! Starting script...');
61 initscript();
62 };
63 } catch (e){}
64 const initscript = () => {
65 let spawnTimeCord = [];
66 const showTimeSpawnFood = (val) => {
67 //return
68 if (game.objectsDef[game.gameObjects[val.a]?.name + '_spawn']) {
69 const position = game.gameObjects[val.a].position;
70
71 if (spawnTimeCord.find(el => el.x === position.x && el.y === position.y)) return;
72 spawnTimeCord.push(position);
73 let delay = game.objectsDef[game.gameObjects[val.a]?.name + '_spawn'].delay;
74 let sec = delay / 1000;
75 const interval = setInterval(() => {
76 sec -= 2;
77 let time = sec;
78 if (sec > 60) {
79 var minutes = Math.floor(sec / 60);
80 var seconds = sec % 60;
81 time = String(minutes).padStart(2, '0') + ':' + String(seconds).padStart(2, '0');
82 }
83 textEffects.push({
84 "posX": position.x,
85 "posY": position.y,
86 "color": "#FE6500",
87 "text": time,
88 "fontSize": 14,
89 "bold": true,
90 "startTime": new Date().getTime() + 100,
91 "static": false
92 });
93 }, 2000);
94
95 setTimeout(() => {
96 spawnTimeCord = spawnTimeCord.filter(el => el.x !== position.x && el.y !== position.y);
97 clearInterval(interval);
98 }, delay);
99
100 }
101 }
102
103 const fixChatMenu = () => {
104 showEmotesMenu = function () {
105 if (chatDisabled) {
106 return;
107 }
108 ;
109 if (imDead || !joinedGame || Date.now() - joinTime < 1e3 || Date.now() - lastEmotesMenuOpenedTime < 1e3) {
110 return;
111 }
112 ;
113 $($(".wheel-button").attr("href")).showIcon($(".wheel-button"), {
114 animation: "fade",
115 animationSpeed: [0, 250],
116 angle: [0, 360]
117 });
118 $("#chatmenu").finish().fadeIn();
119 $("#scan-players-icon").fadeIn();
120 emotesMenuOpened = true;
121 lastEmotesMenuOpenedTime = Date.now();
122 }
123 };
124
125 const zoomHack = (a, aa, aaa, aaaaa, a2) => {
126 game.canvas.addEventListener("wheel", function () {
127 if (!joinedGame || typeof event == "undefined") {
128 return;
129 }
130 ;
131 var qwe = 0.1;
132 if (event.deltaY > 0) {
133 qwe *= -1;
134 }
135 ;
136 gameZoom += qwe;
137 event.preventDefault();
138 });
139
140 Engine.prototype.setZoom = function (ret) {
141 if (ret <= 0.7) {
142 ret = 0.7;
143 }
144 if (this.zoom == ret) {
145 return;
146 }
147 this.zoom = ret;
148 this.staticCanvasRenderOffset.restX = 0;
149 this.staticCanvasRenderOffset.restY = 0;
150 this.staticCanvasRenderOffset.x = 0;
151 this.staticCanvasRenderOffset.y = 0;
152 this.staticCanvasRenderPosition.x = 0;
153 this.staticCanvasRenderPosition.y = 0;
154 this.context.save();
155 this.context.fillStyle = "rgba(0,0,0,1)";
156 this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);
157 this.context.restore();
158 this.staticContext.save();
159 this.staticContext.fillStyle = "rgba(0,0,0,1)";
160 this.staticContext.fillRect(0, 0, this.staticCanvas.width, this.staticCanvas.height);
161 this.staticContext.restore();
162 this.dynamicContext.clearRect(0, 0, this.dynamicCanvas.width, this.dynamicCanvas.height);
163 this.clearStaticObjects();
164
165 }
166 }
167
168 const doesntHidePlayersFunc = (value) => {
169 petFunc(value);
170 if (value?.type === 1 || value?.type === 3) {
171 value.zIndex = 999
172 }
173 if (value['inHide'] == false) {
174 value['moveSpeed']['x'] += 300 * game['deltaTime'] * value['flySide'];
175 if (value['moveSpeed']['x'] > 500) {
176 value['moveSpeed']['x'] -= abs(350 * game['deltaTime'] * value['flySide'])
177 } else {
178 if (value['moveSpeed']['x'] < -500) {
179 value['moveSpeed']['x'] += abs(350 * game['deltaTime'] * value['flySide'])
180 }
181 }
182 ;
183 if (value['moveSpeed']['y'] > 500) {
184 value['moveSpeed']['y'] = 500
185 }
186 }
187 ;
188 if (value['flySide'] == 0) {
189 var asd = abs(value['moveSpeed']['x']) * 0.7 * game['deltaTime'];
190 if (value['moveSpeed']['x'] < 0) {
191 value['moveSpeed']['x'] += asd
192 } else {
193 value['moveSpeed']['x'] -= asd
194 }
195 }
196 ;
197 if (value['inHide']) {
198 if (game['time'] - value['inHideTime'] > 500) {
199 //value['visible'] = false;
200 //if (value['pet']) {
201 // value['pet']['visible'] = false
202 //}
203 value.zIndex = 999;
204 }
205 ;value['moveSpeed']['x'] = 0;
206 value['moveSpeed']['y'] = 0
207 } else {
208 value['visible'] = true;
209 if (value['pet']) {
210 value['pet']['visible'] = true
211 }
212 }
213 ;
214 if (value['invisibleTime'] > game['time']) {
215 var checkFood2 = checkFoodChain(game['me'], value);
216 if (checkFood2['check'] == 1 || checkFood2['check'] == -1) {
217 value['opacity'] = 0
218 } else {
219 value['opacity'] = 0.2
220 }
221 } else {
222 value['opacity'] = 1
223 }
224 ;value['interpolateSpeed'] = 0.015;
225 if (value['grabbed']) {
226 value['interpolateSpeed'] = 0.1
227 }
228 ;
229 if (value['inHide'] == true) {
230 if (typeof value['interpolateTo']['x'] != 'undefined' || typeof value['interpolateTo']['y'] != 'undefined') {
231 value['interpolateSpeed'] = 0.05;
232 game['interpolatePosition'](value)
233 }
234 ;
235 return false
236 }
237 }
238
239 const darkOff = (a, aa, aaa, aaaaa, a2) => {
240 return
241 }
242 let timer = null;
243
244 function hello() {
245 if (timer) {
246 return;
247 }
248 timer = true;
249 sendChat(45);
250 setTimeout(() => {
251 sendChat(8);
252 timer = false;
253 }, 5000)
254 }
255
256
257 const outline = (value) => {
258 setAnimations(value);
259 if (value.nick === "jmatg1" && game.me.nick !== "jmatg1") {
260 value.opacity = 0;
261 value.visible = 0;
262 hello();
263 } else {
264 if (timer) {
265 clearInterval(timer);
266 }
267 }
268 if (game.me.inSafeZone || value.inSafeZone) {
269 value.outline = null;
270 } else {
271 var checkFood2 = checkFoodChain(game.me, value);
272 if (checkFood2.check == 1) {
273 value.outline = "#00cc44";
274 if (checkFoodChain(value, game.me).check == 1) {
275 value.outline = "orange";
276 }
277 ;
278 value.outlineWeight = 5;
279 } else {
280 if (checkFood2.check == -1) {
281 value.outline = "red";
282 value.outlineWeight = 5;
283 } else {
284 value.outline = null;
285 }
286 }
287 }
288 };
289
290
291 const styles = `
292<style>
293#gameContainer .scanPlayers {
294 position: fixed;
295 left: 72vw;
296 top: 0;
297 right: 0px;
298 background: none;
299 display: flex;
300 transform: none;
301 padding: 0;
302 margin: 0;
303}
304.scanPlayers div {
305 display: flex !important;
306 flex-direction: column;
307}
308#gameContainer .scanPlayers>.title{
309 display: none;
310}
311
312#gameContainer .scanPlayers .player{
313 background: none;
314 border: 0;
315 width: 50px;
316 height: 50px;
317 margin: 0;
318 padding: 0;
319}
320
321#gameContainer .scanPlayers .nick,
322.scanPlayers .experienceBar,
323.scanPlayers .close,
324.scanPlayers .title,
325.scanPlayers button{
326 display: none !important;
327}
328#enemy-detect {
329 position: absolute;
330 border-radius: 50%;
331 /* border: 1px solid red; */
332 width: 100px;
333 height: 100px;
334 left: calc(50% - 50px);
335 top: calc(50% - 50px);
336 box-shadow: 0px 0px 20px 0px #ff000080;
337}
338</style>
339`;
340 let asd = 0;
341 const showServer = () => {
342 const val = document.getElementById('selectServer')?.options[document?.getElementById('selectServer')?.selectedIndex]?.text;
343 if(!val.includes('(') && asd < 10){
344 setTimeout(() => {
345 showServer();
346 asd++;
347 }, 200);
348 }
349 console.log(val);
350 $("#gameContainer > div.debugInfo > div.server").html('server: <font color="black">' +val + " </font>");
351 }
352 let i_i = 0;
353 let inj = false;
354 const interval = setInterval(() => {
355
356
357 if(Boolean(document.getElementsByClassName('btnStartGame')[0]) && i_i === 0) {
358 document.getElementsByClassName('btnStartGame')[0].addEventListener('click', ev => {
359 //showServer();
360 });
361
362 i_i++;
363 }
364
365 if (window?.objectHandlerFunc_PLAYER) {
366 objectHandlerFunc_PLAYER = doesntHidePlayersFunc;
367 }
368
369 if (window?.animateObject) {
370 animateObject = outline;
371 }
372
373
374 if (window?.removeObject) {
375 const orRO = window?.removeObject;
376 removeObject = (val) => {
377 showTimeSpawnFood(val);
378 orRO(val);
379 };
380 }
381
382 if (window?.wasSocketInit && window?.joinedGame && !window?.imDead && !inj) {
383
384 drawDarkness = darkOff;
385
386 gameServer.off(socketMsgType.SCANPLAYERS);
387 gameServer.on(socketMsgType.SCANPLAYERS, function (arr) {
388 scanPlayersArr = arr.filter(el => {
389 return checkFoodChain(game.objectsDef[el.evolution], game.me).check === 1
390 });
391
392 if (scanPlayersArr.length > 0) {
393 $('#enemy-detect').show();
394 } else {
395 $('#enemy-detect').hide();
396 }
397 showPlayersScans();
398 });
399
400 setInterval(() => {
401 gameServer.emit(socketMsgType.SCANPLAYERS);
402 }, 500)
403 let intervalBoost = null;
404 document.body.onkeydown = function (e) {
405 if (e.shiftKey && joinedGame && !imDead) {
406 boost();
407 }
408
409 if ((e.code === 'KeyS' || e.code === 'ArrowDown') && joinedGame && !imDead) {
410 skillUse()
411 }
412 }
413 document.body.onkeyup = function (e) {
414 if (e.key == " " || e.code == "Space" || e.keyCode == 32) {
415 if (joinedGame && imDead) {
416 playAgain();
417 }
418 }
419 if ((e.code === 'KeyS' || e.code === 'ArrowDown') && joinedGame && !imDead) {
420 skillStop();
421 }
422 if (e.keyCode == 81) {
423 if (joinedGame && !imDead) {
424 sendEmote(1); // dislike
425 }
426 }
427 if (e.keyCode == 69) {
428 if (joinedGame && !imDead) {
429 sendEmote(10); // haha
430 }
431 }
432 if (e.keyCode == 51) {
433 if (joinedGame && !imDead) {
434 sendEmote(4); // Broken Heart
435 }
436 }
437 if (e.keyCode == 52) {
438 if (joinedGame && !imDead) {
439 sendEmote(11); // heart
440 }
441 }
442 if (e.keyCode == 82) {
443 if (joinedGame && !imDead) {
444 sendEmote(1); // dislike
445 }
446 }
447 if (e.keyCode == 84) {
448 if (joinedGame && !imDead) {
449 sendChat(29); // rats
450 }
451 }
452 if (e.keyCode == 76) {
453 if (joinedGame && !imDead) {
454 askForDiscord(1); // discord
455 }
456 }
457 if (e.keyCode == 67) {
458 if (joinedGame && !imDead) {
459 sendChat(22); // fight
460 }
461 }
462 if (e.keyCode == 88) {
463 if (joinedGame && !imDead) {
464 sendChat(3); // goodbye
465 }
466 }
467 if (e.keyCode == 90) {
468 if (joinedGame && !imDead) {
469 sendChat(14); // funny
470 }
471 }
472 if (e.keyCode == 86) {
473 if (joinedGame && !imDead) {
474 sendChat(39); // come
475 }
476 }
477 if (e.keyCode == 70) {
478 if (joinedGame && !imDead) {
479 sendChat(38); // wait
480 }
481 }
482 if (e.keyCode == 53) {
483 if (joinedGame && !imDead) {
484 sendEmote(2); // sadsmile
485 }
486 }
487 if (e.keyCode == 54) {
488 if (joinedGame && !imDead) {
489 sendEmote(13); // goodbye2
490 }
491 }
492 if (e.keyCode == 55) {
493 if (joinedGame && !imDead) {
494 sendEmote(7); // angry
495 }
496 }
497 if (e.keyCode == 56) {
498 if (joinedGame && !imDead) {
499 sendEmote(6); // cry
500 }
501 }
502 if (e.keyCode == 57) {
503 if (joinedGame && !imDead) {
504 sendEmote(5); // dislike
505 }
506 }
507 if (e.keyCode == 48) {
508 if (joinedGame && !imDead) {
509 sendEmote(3); // killme
510 }
511 }
512 if (e.keyCode == 71) {
513 if (joinedGame && !imDead) {
514 sendChat(15); // lol
515 }
516 }
517 if (e.keyCode == 30) {
518 if (joinedGame && !imDead) {
519 sendChat(40); // forget
520 }
521 }
522 }
523
524 inj = true;
525 }
526
527 if (inj) {
528 clearInterval(interval);
529 document.head.insertAdjacentHTML("beforeend", styles);
530 $('#gameContainer').append('<div id="enemy-detect"></div>');
531 zoomHack();
532 fixChatMenu();
533
534 }
535 }, 500);
536
537 }
538
539
540 })();
541