// ==UserScript== // @name Aibm recode // @namespace https://dsc.gg/Aibm // @author prince finn. // @description An excellent Moomoo.io hack for a comfortable gaming experience // @icon https://i.pinimg.com/1200x/7b/fb/12/7bfb12e9d8dfb7989f45c482196e39c4.jpg // @version 2.3.9.6 // @match *://moomoo.io/ // @match *://moomoo.io/?server* // @match *://*.moomoo.io/ // @match *://*.moomoo.io/?server* // @run-at document-start // @grant GM_webRequest // @grant GM.fetch // @connect generativelanguage.googleapis.com // @license MIT // @namespace // @downloadURL // @updateURL // @downloadURL https://update.greasyfork.icu/scripts/557442/Aibm%20recode.user.js // @updateURL https://update.greasyfork.icu/scripts/557442/Aibm%20recode.meta.js // ==/UserScript== /* jshint esversion:6 */ /* AIBM_INFO: Aibm recode by prince finn. */ /* Author: Murka Github: https://github.com/Murka007/Glotus-client Greasyfork: https://greasyfork.org/users/919633 Discord: https://discord.gg/cPRFdcZkeD MURKA REAL AUTHOR OF THE MOD!!!!!!!!!!!!!! (I only slightly modified the bots.) I slightly modified the bots in this version. Now the bots follow the player and look towards the cursor. They place windmills during AUTO-ATTACK (KEY E), which is done so that bots do not have to be collected all over the map and they level up by themselves. Windmills are not placed during regular attacks (for convenience). Made by Prince Finn. Feel free to use and distribute it, but don't forget about special credits. */ GM_webRequest([ { selector: { include: ["*cookie*", "*cloudflare*", "*ads*", "*jquery*", "*howler*", "*frvr-channel-web*", "*securepubads*"] }, action: "cancel" }, ]); Function("(" + (() => { "use strict"; var __webpack_exports__, code, Navbar_code, Keybinds_code, Combat_code, Visuals_code, Misc_code, Devtool_code, Bots_code, Credits_code, __webpack_require__ = {}; (() => { __webpack_require__.d = (exports, definition) => { for (var key in definition) { if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); } } }; })(); (() => { __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); })(); __webpack_exports__ = {}; __webpack_require__.d(__webpack_exports__, { ZI: () => connection, mq: () => myClient }); const Config_Config = { maxScreenWidth: 1920, maxScreenHeight: 1080, serverUpdateRate: 9, collisionDepth: 6, minimapRate: 3e3, colGrid: 10, clientSendRate: 5, barWidth: 50, barHeight: 17, barPad: 4.5, iconPadding: 15, iconPad: .9, deathFadeout: 3e3, crownIconScale: 60, crownPad: 35, chatCountdown: 3e3, chatCooldown: 500, maxAge: 100, gatherAngle: Math.PI / 2.6, gatherWiggle: 10, hitReturnRatio: .25, hitAngle: Math.PI / 2, playerScale: 35, playerSpeed: .0016, playerDecel: .993, nameY: 34, animalCount: 7, aiTurnRandom: .06, shieldAngle: Math.PI / 3, resourceTypes: [ "wood", "food", "stone", "points" ], areaCount: 7, treesPerArea: 9, bushesPerArea: 3, totalRocks: 32, goldOres: 7, riverWidth: 724, riverPadding: 114, waterCurrent: .0011, waveSpeed: 1e-4, waveMax: 1.3, treeScales: [ 150, 160, 165, 175 ], bushScales: [ 80, 85, 95 ], rockScales: [ 80, 85, 90 ], snowBiomeTop: 2400, snowSpeed: .75, maxNameLength: 15, mapScale: 14400, mapPingScale: 40, mapPingTime: 2200, skinColors: [ "#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#91B2DB" ] }; const constants_Config = Config_Config; const Weapons = [ { id: 0, itemType: 0, upgradeType: 0, type: 0, age: 0, name: "tool hammer", description: "tool for gathering all resources", src: "hammer_1", length: 140, width: 140, xOffset: -3, yOffset: 18, damage: 25, range: 65, gather: 1, speed: 300 }, { id: 1, itemType: 0, upgradeType: 1, type: 0, age: 2, name: "hand axe", description: "gathers resources at a higher rate", src: "axe_1", length: 140, width: 140, xOffset: 3, yOffset: 24, damage: 30, spdMult: 1, range: 70, gather: 2, speed: 400 }, { id: 2, itemType: 0, upgradeOf: 1, upgradeType: 1, type: 0, age: 8, pre: 1, name: "great axe", description: "deal more damage and gather more resources", src: "great_axe_1", length: 140, width: 140, xOffset: -8, yOffset: 25, damage: 35, spdMult: 1, range: 75, gather: 4, speed: 400 }, { id: 3, itemType: 0, upgradeType: 2, type: 0, age: 2, name: "short sword", description: "increased attack power but slower move speed", src: "sword_1", iPad: 1.3, length: 130, width: 210, xOffset: -8, yOffset: 46, damage: 35, spdMult: .85, range: 110, gather: 1, speed: 300 }, { id: 4, itemType: 0, upgradeOf: 3, upgradeType: 2, type: 0, age: 8, pre: 3, name: "katana", description: "greater range and damage", src: "samurai_1", iPad: 1.3, length: 130, width: 210, xOffset: -8, yOffset: 59, damage: 40, spdMult: .8, range: 118, gather: 1, speed: 300 }, { id: 5, itemType: 0, upgradeType: 3, isUpgrade: false, type: 0, age: 2, name: "polearm", description: "long range melee weapon", src: "spear_1", iPad: 1.3, length: 130, width: 210, xOffset: -8, yOffset: 53, damage: 45, knock: .2, spdMult: .82, range: 142, gather: 1, speed: 700 }, { id: 6, itemType: 0, upgradeType: 4, isUpgrade: false, type: 0, age: 2, name: "bat", description: "fast long range melee weapon", src: "bat_1", iPad: 1.3, length: 110, width: 180, xOffset: -8, yOffset: 53, damage: 20, knock: .7, range: 110, gather: 1, speed: 300 }, { id: 7, itemType: 0, upgradeType: 5, isUpgrade: false, type: 0, age: 2, name: "daggers", description: "really fast short range weapon", src: "dagger_1", iPad: .8, length: 110, width: 110, xOffset: 18, yOffset: 0, damage: 20, knock: .1, range: 65, gather: 1, hitSlow: .1, spdMult: 1.13, speed: 100 }, { id: 8, itemType: 0, upgradeType: 6, isUpgrade: false, type: 0, age: 2, name: "stick", description: "great for gathering but very weak", src: "stick_1", length: 140, width: 140, xOffset: 3, yOffset: 24, damage: 1, spdMult: 1, range: 70, gather: 7, speed: 400 }, { id: 9, itemType: 1, upgradeType: 7, projectile: 0, type: 1, age: 6, name: "hunting bow", description: "bow used for ranged combat and hunting", src: "bow_1", cost: { food: 0, wood: 4, stone: 0, gold: 0 }, length: 120, width: 120, xOffset: -6, yOffset: 0, spdMult: .75, speed: 600, range: 2200 }, { id: 10, itemType: 1, upgradeType: 8, isUpgrade: false, type: 1, age: 6, name: "great hammer", description: "hammer used for destroying structures", src: "great_hammer_1", length: 140, width: 140, xOffset: -9, yOffset: 25, damage: 10, spdMult: .88, range: 75, sDmg: 7.5, gather: 1, speed: 400 }, { id: 11, itemType: 1, upgradeType: 9, isUpgrade: false, type: 1, age: 6, name: "wooden shield", description: "blocks projectiles and reduces melee damage", src: "shield_1", length: 120, width: 120, shield: .2, xOffset: 6, yOffset: 0, spdMult: .7, speed: 1 }, { id: 12, itemType: 1, upgradeType: 7, projectile: 2, upgradeOf: 9, type: 1, age: 8, pre: 9, name: "crossbow", description: "deals more damage and has greater range", src: "crossbow_1", cost: { food: 0, wood: 5, stone: 0, gold: 0 }, aboveHand: true, armS: .75, length: 120, width: 120, xOffset: -4, yOffset: 0, spdMult: .7, speed: 700, range: 2200 }, { id: 13, itemType: 1, upgradeType: 7, projectile: 3, upgradeOf: 12, type: 1, age: 9, pre: 12, name: "repeater crossbow", description: "high firerate crossbow with reduced damage", src: "crossbow_2", cost: { food: 0, wood: 10, stone: 0, gold: 0 }, aboveHand: true, armS: .75, length: 120, width: 120, xOffset: -4, yOffset: 0, spdMult: .7, speed: 230, range: 2200 }, { id: 14, itemType: 1, upgradeType: 10, isUpgrade: false, type: 1, age: 6, name: "mc grabby", description: "steals resources from enemies", src: "grab_1", length: 130, width: 210, xOffset: -8, yOffset: 53, damage: 0, steal: 250, knock: .2, spdMult: 1.05, range: 125, gather: 0, speed: 700 }, { id: 15, itemType: 1, upgradeType: 7, projectile: 5, upgradeOf: 12, type: 1, age: 9, pre: 12, name: "musket", description: "slow firerate but high damage and range", src: "musket_1", cost: { food: 0, wood: 0, stone: 10, gold: 0 }, aboveHand: true, rec: .35, armS: .6, hndS: .3, hndD: 1.6, length: 205, width: 205, xOffset: 25, yOffset: 0, hideProjectile: true, spdMult: .6, speed: 1500, range: 2200 } ]; const ItemGroups = { [1]: { name: "Wall", limit: 30, layer: 0 }, [2]: { name: "Spike", limit: 15, layer: 0 }, [3]: { name: "Windmill", limit: 7, sandboxLimit: 299, layer: 1 }, [4]: { name: "Mine", limit: 1, layer: 0 }, [5]: { name: "Trap", limit: 6, layer: -1 }, [6]: { name: "Boost", limit: 12, sandboxLimit: 299, layer: -1 }, [7]: { name: "Turret", limit: 2, layer: 1 }, [8]: { name: "Plaftorm", limit: 12, layer: -1 }, [9]: { name: "Healing pad", limit: 4, layer: -1 }, [10]: { name: "Spawn", limit: 1, layer: -1 }, [11]: { name: "Sapling", limit: 2, layer: 0 }, [12]: { name: "Blocker", limit: 3, layer: -1 }, [13]: { name: "Teleporter", limit: 2, sandboxLimit: 299, layer: -1 } }; const Items = [ { id: 0, itemType: 2, name: "apple", description: "restores 20 health when consumed", age: 0, cost: { food: 10, wood: 0, stone: 0, gold: 0 }, restore: 20, scale: 22, holdOffset: 15 }, { id: 1, itemType: 2, upgradeOf: 0, name: "cookie", description: "restores 40 health when consumed", age: 3, cost: { food: 15, wood: 0, stone: 0, gold: 0 }, restore: 40, scale: 27, holdOffset: 15 }, { id: 2, itemType: 2, upgradeOf: 1, name: "cheese", description: "restores 30 health and another 50 over 5 seconds", age: 7, cost: { food: 25, wood: 0, stone: 0, gold: 0 }, restore: 30, scale: 27, holdOffset: 15 }, { id: 3, itemType: 3, itemGroup: 1, name: "wood wall", description: "provides protection for your village", age: 0, cost: { food: 0, wood: 10, stone: 0, gold: 0 }, projDmg: true, health: 380, scale: 50, holdOffset: 20, placeOffset: -5 }, { id: 4, itemType: 3, itemGroup: 1, upgradeOf: 3, name: "stone wall", description: "provides improved protection for your village", age: 3, cost: { food: 0, wood: 0, stone: 25, gold: 0 }, health: 900, scale: 50, holdOffset: 20, placeOffset: -5 }, { pre: 1, id: 5, itemType: 3, itemGroup: 1, upgradeOf: 4, name: "castle wall", description: "provides powerful protection for your village", age: 7, cost: { food: 0, wood: 0, stone: 35, gold: 0 }, health: 1500, scale: 52, holdOffset: 20, placeOffset: -5 }, { id: 6, itemType: 4, itemGroup: 2, name: "spikes", description: "damages enemies when they touch them", age: 0, cost: { food: 0, wood: 20, stone: 5, gold: 0 }, health: 400, damage: 20, scale: 49, spritePadding: -23, holdOffset: 8, placeOffset: -5 }, { id: 7, itemType: 4, itemGroup: 2, upgradeOf: 6, name: "greater spikes", description: "damages enemies when they touch them", age: 5, cost: { food: 0, wood: 30, stone: 10, gold: 0 }, health: 500, damage: 35, scale: 52, spritePadding: -23, holdOffset: 8, placeOffset: -5 }, { id: 8, itemType: 4, itemGroup: 2, upgradeOf: 7, name: "poison spikes", description: "poisons enemies when they touch them", age: 9, pre: 1, cost: { food: 0, wood: 35, stone: 15, gold: 0 }, health: 600, damage: 30, poisonDamage: 5, scale: 52, spritePadding: -23, holdOffset: 8, placeOffset: -5 }, { id: 9, itemType: 4, itemGroup: 2, upgradeOf: 7, name: "spinning spikes", description: "damages enemies when they touch them", age: 9, pre: 2, cost: { food: 0, wood: 30, stone: 20, gold: 0 }, health: 500, damage: 45, turnSpeed: .003, scale: 52, spritePadding: -23, holdOffset: 8, placeOffset: -5 }, { id: 10, itemType: 5, itemGroup: 3, name: "windmill", description: "generates gold over time", age: 0, cost: { food: 0, wood: 50, stone: 10, gold: 0 }, health: 400, pps: 1, turnSpeed: .0016, spritePadding: 25, iconLineMult: 12, scale: 45, holdOffset: 20, placeOffset: 5 }, { id: 11, itemType: 5, itemGroup: 3, upgradeOf: 10, name: "faster windmill", description: "generates more gold over time", age: 5, pre: 1, cost: { food: 0, wood: 60, stone: 20, gold: 0 }, health: 500, pps: 1.5, turnSpeed: .0025, spritePadding: 25, iconLineMult: 12, scale: 47, holdOffset: 20, placeOffset: 5 }, { id: 12, itemType: 5, itemGroup: 3, upgradeOf: 11, name: "power mill", description: "generates more gold over time", age: 8, pre: 1, cost: { food: 0, wood: 100, stone: 50, gold: 0 }, health: 800, pps: 2, turnSpeed: .005, spritePadding: 25, iconLineMult: 12, scale: 47, holdOffset: 20, placeOffset: 5 }, { id: 13, itemType: 6, itemGroup: 4, name: "mine", description: "allows you to mine stone", age: 5, type: 2, cost: { food: 0, wood: 20, stone: 100, gold: 0 }, iconLineMult: 12, scale: 65, holdOffset: 20, placeOffset: 0 }, { id: 14, itemType: 6, itemGroup: 11, name: "sapling", description: "allows you to farm wood", age: 5, type: 0, cost: { food: 0, wood: 150, stone: 0, gold: 0 }, iconLineMult: 12, colDiv: .5, scale: 110, holdOffset: 50, placeOffset: -15 }, { id: 15, itemType: 7, itemGroup: 5, name: "pit trap", description: "pit that traps enemies if they walk over it", age: 4, cost: { food: 0, wood: 30, stone: 30, gold: 0 }, trap: true, ignoreCollision: true, hideFromEnemy: true, health: 500, colDiv: .2, scale: 50, holdOffset: 20, placeOffset: -5 }, { id: 16, itemType: 7, itemGroup: 6, name: "boost pad", description: "provides boost when stepped on", age: 4, cost: { food: 0, wood: 5, stone: 20, gold: 0 }, ignoreCollision: true, boostSpeed: 1.5, health: 150, colDiv: .7, scale: 45, holdOffset: 20, placeOffset: -5 }, { id: 17, itemType: 8, itemGroup: 7, name: "turret", description: "defensive structure that shoots at enemies", age: 7, doUpdate: true, cost: { food: 0, wood: 200, stone: 150, gold: 0 }, health: 800, projectile: 1, shootRange: 700, shootRate: 2200, scale: 43, holdOffset: 20, placeOffset: -5 }, { id: 18, itemType: 8, itemGroup: 8, name: "platform", description: "platform to shoot over walls and cross over water", age: 7, cost: { food: 0, wood: 20, stone: 0, gold: 0 }, ignoreCollision: true, zIndex: 1, health: 300, scale: 43, holdOffset: 20, placeOffset: -5 }, { id: 19, itemType: 8, itemGroup: 9, name: "healing pad", description: "standing on it will slowly heal you", age: 7, cost: { food: 10, wood: 30, stone: 0, gold: 0 }, ignoreCollision: true, healCol: 15, health: 400, colDiv: .7, scale: 45, holdOffset: 20, placeOffset: -5 }, { id: 20, itemType: 9, itemGroup: 10, name: "spawn pad", description: "you will spawn here when you die but it will dissapear", age: 9, cost: { food: 0, wood: 100, stone: 100, gold: 0 }, health: 400, ignoreCollision: true, spawnPoint: true, scale: 45, holdOffset: 20, placeOffset: -5 }, { id: 21, itemType: 8, itemGroup: 12, name: "blocker", description: "blocks building in radius", age: 7, cost: { food: 0, wood: 30, stone: 25, gold: 0 }, ignoreCollision: true, blocker: 300, health: 400, colDiv: .7, scale: 45, holdOffset: 20, placeOffset: -5 }, { id: 22, itemType: 8, itemGroup: 13, name: "teleporter", description: "teleports you to a random point on the map", age: 7, cost: { food: 0, wood: 60, stone: 60, gold: 0 }, ignoreCollision: true, teleport: true, health: 200, colDiv: .7, scale: 45, holdOffset: 20, placeOffset: -5 } ]; const WeaponVariants = [ { id: 0, src: "", xp: 1, needXP: 0, val: 1, color: "#7e7e90" }, { id: 1, src: "_g", xp: 3e3, needXP: 3e3, val: 1.1, color: "#f7cf45" }, { id: 2, src: "_d", xp: 7e3, needXP: 4e3, val: 1.18, color: "#6d91cb" }, { id: 3, src: "_r", poison: true, xp: 12e3, needXP: 5e3, val: 1.18, color: "#be5454" } ]; const Projectiles = [ { id: 0, name: "Hunting bow", index: 0, layer: 0, src: "arrow_1", damage: 25, scale: 103, range: 1e3, speed: 1.6 }, { id: 1, name: "Turret", index: 1, layer: 1, damage: 25, scale: 20, speed: 1.5, range: 700 }, { id: 2, name: "Crossbow", index: 0, layer: 0, src: "arrow_1", damage: 35, scale: 103, range: 1200, speed: 2.5 }, { id: 3, name: "Repeater crossbow", index: 0, layer: 0, src: "arrow_1", damage: 30, scale: 103, range: 1200, speed: 2 }, { id: 4, index: 1, layer: 1, damage: 16, scale: 20, range: 0, speed: 0 }, { id: 5, name: "Musket", index: 0, layer: 0, src: "bullet_1", damage: 50, scale: 160, range: 1400, speed: 3.6 } ]; class Vector_Vector { x; y; constructor(x = 0, y = 0) { this.x = x; this.y = y; } static fromAngle(angle, length = 1) { return new Vector_Vector(Math.cos(angle) * length, Math.sin(angle) * length); } add(vec) { if (vec instanceof Vector_Vector) { this.x += vec.x; this.y += vec.y; } else { this.x += vec; this.y += vec; } return this; } sub(vec) { if (vec instanceof Vector_Vector) { this.x -= vec.x; this.y -= vec.y; } else { this.x -= vec; this.y -= vec; } return this; } mult(scalar) { this.x *= scalar; this.y *= scalar; return this; } div(scalar) { this.x /= scalar; this.y /= scalar; return this; } get length() { return Math.sqrt(this.x * this.x + this.y * this.y); } normalize() { return this.length > 0 ? this.div(this.length) : this; } dot(vec) { return this.x * vec.x + this.y * vec.y; } proj(vec) { const k = this.dot(vec) / vec.dot(vec); return vec.copy().mult(k); } setXY(x, y) { this.x = x; this.y = y; return this; } setVec(vec) { return this.setXY(vec.x, vec.y); } setLength(value) { return this.normalize().mult(value); } copy() { return new Vector_Vector(this.x, this.y); } distance(vec) { return this.copy().sub(vec).length; } angle(vec) { const copy = vec.copy().sub(this); return Math.atan2(copy.y, copy.x); } direction(angle, length) { return this.copy().add(Vector_Vector.fromAngle(angle, length)); } isEqual(vec) { return this.x === vec.x && this.y === vec.y; } stringify() { return this.x + ":" + this.y; } } const modules_Vector = Vector_Vector; const getAngle = (x1, y1, x2, y2) => Math.atan2(y2 - y1, x2 - x1); const clamp = (value, min, max) => Math.min(Math.max(value, min), max); const getAngleDist = (a, b) => { const p = Math.abs(b - a) % (2 * Math.PI); return p > Math.PI ? 2 * Math.PI - p : p; }; const removeFast = (array, index) => { if (index < 0 || index >= array.length) { throw new RangeError("removeFast: Index out of range"); } if (index === array.length - 1) { array.pop(); } else { array[index] = array.pop(); } }; let uniqueID = 0; const getUniqueID = () => uniqueID++; const isActiveInput = () => { const active = document.activeElement || document.body; return active instanceof HTMLInputElement || active instanceof HTMLTextAreaElement; }; const getAngleFromBitmask = (bitmask, rotate) => { const vec = { x: 0, y: 0 }; if (1 & bitmask) { vec.y--; } if (2 & bitmask) { vec.y++; } if (4 & bitmask) { vec.x--; } if (8 & bitmask) { vec.x++; } if (rotate) { vec.x *= -1; vec.y *= -1; } return 0 === vec.x && 0 === vec.y ? null : Math.atan2(vec.y, vec.x); }; const formatCode = code => { code += ""; if ("Backspace" === code) { return code; } if ("Escape" === code) { return "ESC"; } if ("Delete" === code) { return "DEL"; } if ("Minus" === code) { return "-"; } if ("Equal" === code) { return "="; } if ("BracketLeft" === code) { return "["; } if ("BracketRight" === code) { return "]"; } if ("Slash" === code) { return "/"; } if ("Backslash" === code) { return "\\"; } if ("Quote" === code) { return "'"; } if ("Backquote" === code) { return "`"; } if ("Semicolon" === code) { return ";"; } if ("Comma" === code) { return ","; } if ("Period" === code) { return "."; } if ("CapsLock" === code) { return "CAPS"; } if ("ContextMenu" === code) { return "CTXMENU"; } if ("NumLock" === code) { return "LOCK"; } return code.replace(/^Page/, "PG").replace(/^Digit/, "").replace(/^Key/, "").replace(/^(Shift|Control|Alt)(L|R).*$/, "$2$1").replace(/Control/, "CTRL").replace(/^Arrow/, "").replace(/^Numpad/, "NUM").replace(/Decimal/, "DEC").replace(/Subtract/, "SUB").replace(/Divide/, "DIV").replace(/Multiply/, "MULT").toUpperCase(); }; const formatButton = button => { if (0 === button) { return "LBTN"; } if (1 === button) { return "MBTN"; } if (2 === button) { return "RBTN"; } if (3 === button) { return "BBTN"; } if (4 === button) { return "FBTN"; } throw new Error(`formatButton Error: "${button}" is not valid button`); }; const removeClass = (target, name) => { if (target instanceof HTMLElement) { target.classList.remove(name); return; } for (const element of target) { element.classList.remove(name); } }; const pointInRiver = position => { const y = position.y; const below = y >= constants_Config.mapScale / 2 - constants_Config.riverWidth / 2; const above = y <= constants_Config.mapScale / 2 + constants_Config.riverWidth / 2; return below && above; }; const pointInDesert = position => position.y >= constants_Config.mapScale - constants_Config.snowBiomeTop; const inView = (x, y, radius) => { const maxScreenWidth = Math.min(1920, modules_ZoomHandler.scale.current.w); const maxScreenHeight = Math.min(1080, modules_ZoomHandler.scale.current.h); const visibleHorizontally = x + radius > 0 && x - radius < maxScreenWidth; const visibleVertically = y + radius > 0 && y - radius < maxScreenHeight; return visibleHorizontally && visibleVertically; }; const findPlacementAngles = angles => { const output = new Set; for (let i = 0; i < angles.length; i++) { const {angle, offset} = angles[i]; const start = angle - offset; const end = angle + offset; let startIntersects = false; let endIntersects = false; for (let j = 0; j < angles.length; j++) { if (startIntersects && endIntersects) { break; } if (i !== j) { const {angle, offset} = angles[j]; if (getAngleDist(start, angle) <= offset) { startIntersects = true; } if (getAngleDist(end, angle) <= offset) { endIntersects = true; } } } if (!startIntersects) { output.add(start); } if (!endIntersects) { output.add(end); } } return output; }; const cursorPosition = () => { const {ModuleHandler, myPlayer} = myClient; const {w, h} = modules_ZoomHandler.scale.current; const scale = Math.max(innerWidth / w, innerHeight / h); const cursorX = (ModuleHandler.mouse.lockX - innerWidth / 2) / scale; const cursorY = (ModuleHandler.mouse.lockY - innerHeight / 2) / scale; const pos = myPlayer.position.current; return new modules_Vector(pos.x + cursorX, pos.y + cursorY); }; const Hooker = new class Hooker { createRecursiveHook(target, prop, callback) { (function recursiveHook() { Object.defineProperty(target, prop, { set(value) { delete target[prop]; this[prop] = value; if (callback(this, value)) { return; } recursiveHook(); }, configurable: true }); })(); } createHook(target, prop, callback) { const symbol = Symbol(prop); Object.defineProperty(target, prop, { get() { return this[symbol]; }, set(value) { callback(this, value, symbol); }, configurable: true }); } linker(value) { const hook = [ value ]; hook.valueOf = () => hook[0]; return hook; } }; const utility_Hooker = Hooker; const resizeEvent = new Event("resize"); const ZoomHandler = new class ZoomHandler { scale={ Default: { w: 1920, h: 1080 }, current: { w: 1920, h: 1080 }, smooth: { w: utility_Hooker.linker(1920), h: utility_Hooker.linker(1080) } }; wheels=3; scaleFactor=250; getScale() { const dpr = 1; return Math.max(innerWidth / this.scale.Default.w, innerHeight / this.scale.Default.h) * dpr; } getMinScale(scale) { const {w, h} = this.scale.Default; const min = Math.min(w, h); const count = Math.floor(min / scale); return { w: w - scale * count, h: h - scale * count }; } handler(event) { if (!(event.target instanceof HTMLCanvasElement) || event.ctrlKey || event.shiftKey || event.altKey || isActiveInput()) { return; } const {Default, current, smooth} = this.scale; if (Default.w === current.w && Default.h === current.h && 0 !== (this.wheels = (this.wheels + 1) % 4)) { return; } const {w, h} = this.getMinScale(this.scaleFactor); const zoom = Math.sign(event.deltaY) * -this.scaleFactor; current.w = Math.max(w, current.w + zoom); current.h = Math.max(h, current.h + zoom); smooth.w[0] = current.w; smooth.h[0] = current.h; window.dispatchEvent(resizeEvent); } }; const modules_ZoomHandler = ZoomHandler; class Storage { static get(key) { const value = localStorage.getItem(key); return null === value ? null : JSON.parse(value); } static set(key, value, stringify = true) { const data = stringify ? JSON.stringify(value) : value; localStorage.setItem(key, data); } static delete(key) { const has = localStorage.hasOwnProperty(key) && key in localStorage; localStorage.removeItem(key); return has; } } class Cookie { static get(key) { const cookies = document.cookie.split(";"); for (const cookie of cookies) { const match = cookie.trim().match(/^(.+?)=(.+?)$/); if (null !== match && match[1] === key) { try { return JSON.parse(decodeURIComponent(match[2])); } catch (err) {} } } return null; } static set(name, value, days) { const date = new Date; date.setTime(date.getTime() + 24 * days * 60 * 60 * 1e3); const expires = "; expires=" + date.toUTCString(); const domain = "; domain=.moomoo.io"; const path = "; path=/"; const cookieString = `${name}=${encodeURIComponent(value)}${expires}${domain}${path}`; document.cookie = cookieString; } } const defaultSettings = {         primary: "Digit1",         secondary: "Digit2",         food: "KeyQ",         wall: "Digit4",         spike: "KeyC",         windmill: "KeyR",         syncshot: "KeyL",         farm: "KeyT",         trap: "Space",         turret: "KeyF",         spawn: "KeyG",         up: "KeyW",         left: "KeyA",         down: "KeyS",         right: "KeyD",         autoattack: "KeyE",         lockrotation: "KeyX",         lockBotPosition: "KeyZ",         toggleChat: "Enter",         toggleShop: "ShiftLeft",         toggleClan: "ControlLeft",         toggleMenu: "Escape",         instakill: "KeyK",         biomehats: true, distanceHitEnabled: true, instakillCheckSolidHat: false,         instakillCrossForBots: false,         instakillForBots: true,         botWeaponSync: false,         botHatSync: true,         botAccSync: true, syncShotWeaponSlot: 0,         autoemp: true,         antienemy: true,         antianimal: true,         antispike: true,         autoheal: true,         healingSpeed: 25,         automill: true,         autoplacer: true,         autobreak: true, autoreload: false, fastWeaponSwitch: true, autoShield: false, autoShieldDebug: true,         enemyTracers: false,         enemyTracersColor: "#cc5151",         teammateTracers: false,         teammateTracersColor: "#8ecc51",         animalTracers: false,         animalTracersColor: "#518ccc",         notificationTracers: true,         notificationTracersColor: "#f5d951",         arrows: true,         itemMarkers: true,         itemMarkersColor: "#84bd4b",         teammateMarkers: true,         teammateMarkersColor: "#bdb14b",         enemyMarkers: true,         enemyMarkersColor: "#ba4949",         weaponXPBar: true,         playerTurretReloadBar: true,         playerTurretReloadBarColor: "#cf7148",         weaponReloadBar: true,         weaponReloadBarColor: "#5155cc",         renderHP: true,         objectTurretReloadBar: false,         objectTurretReloadBarColor: "#66d9af",         itemHealthBar: false,         itemHealthBarColor: "#6b449e", botLidarViz: true, botBreakModeViz: true,         itemCounter: true,         renderGrid: false,         windmillRotation: false,         entityDanger: true,         displayPlayerAngle: false,         projectileHitbox: false,         possibleShootTarget: false,         weaponHitbox: false,         collisionHitbox: false,         placementHitbox: false,         turretHitbox: false,         possiblePlacement: true,         autospawn: true,         autoaccept: false,         menuTransparency: false,         storeItems: [ [ 15, 31, 6, 7, 22, 12, 26, 11, 53, 20, 40, 56 ], [ 11, 17, 16, 13, 19, 18, 21 ] ]     }; defaultSettings.storeItems; const settings = { ...defaultSettings, ...Cookie.get("Aibm") }; for (const iterator in settings) { const key = iterator; if (!defaultSettings.hasOwnProperty(key)) { delete settings[key]; } } const SaveSettings = () => { Cookie.set("Aibm", JSON.stringify(settings), 365); }; SaveSettings(); const Settings = settings; const Hats = { [0]: { index: 0, id: 0, name: "Unequip", dontSell: true, price: 0, scale: 0, description: "None" }, [45]: { index: 1, id: 45, name: "Shame!", dontSell: true, price: 0, scale: 120, description: "hacks are for losers" }, [51]: { index: 2, id: 51, name: "Moo Cap", price: 0, scale: 120, description: "coolest mooer around" }, [50]: { index: 3, id: 50, name: "Apple Cap", price: 0, scale: 120, description: "apple farms remembers" }, [28]: { index: 4, id: 28, name: "Moo Head", price: 0, scale: 120, description: "no effect" }, [29]: { index: 5, id: 29, name: "Pig Head", price: 0, scale: 120, description: "no effect" }, [30]: { index: 6, id: 30, name: "Fluff Head", price: 0, scale: 120, description: "no effect" }, [36]: { index: 7, id: 36, name: "Pandou Head", price: 0, scale: 120, description: "no effect" }, [37]: { index: 8, id: 37, name: "Bear Head", price: 0, scale: 120, description: "no effect" }, [38]: { index: 9, id: 38, name: "Monkey Head", price: 0, scale: 120, description: "no effect" }, [44]: { index: 10, id: 44, name: "Polar Head", price: 0, scale: 120, description: "no effect" }, [35]: { index: 11, id: 35, name: "Fez Hat", price: 0, scale: 120, description: "no effect" }, [42]: { index: 12, id: 42, name: "Enigma Hat", price: 0, scale: 120, description: "join the enigma army" }, [43]: { index: 13, id: 43, name: "Blitz Hat", price: 0, scale: 120, description: "hey everybody i'm blitz" }, [49]: { index: 14, id: 49, name: "Bob XIII Hat", price: 0, scale: 120, description: "like and subscribe" }, [57]: { index: 15, id: 57, name: "Pumpkin", price: 50, scale: 120, description: "Spooooky" }, [8]: { index: 16, id: 8, name: "Bummle Hat", price: 100, scale: 120, description: "no effect" }, [2]: { index: 17, id: 2, name: "Straw Hat", price: 500, scale: 120, description: "no effect" }, [15]: { index: 18, id: 15, name: "Winter Cap", price: 600, scale: 120, description: "allows you to move at normal speed in snow", coldM: 1 }, [5]: { index: 19, id: 5, name: "Cowboy Hat", price: 1e3, scale: 120, description: "no effect" }, [4]: { index: 20, id: 4, name: "Ranger Hat", price: 2e3, scale: 120, description: "no effect" }, [18]: { index: 21, id: 18, name: "Explorer Hat", price: 2e3, scale: 120, description: "no effect" }, [31]: { index: 22, id: 31, name: "Flipper Hat", price: 2500, scale: 120, description: "have more control while in water", watrImm: true }, [1]: { index: 23, id: 1, name: "Marksman Cap", price: 3e3, scale: 120, description: "increases arrow speed and range", aMlt: 1.3 }, [10]: { index: 24, id: 10, name: "Bush Gear", price: 3e3, scale: 160, description: "allows you to disguise yourself as a bush" }, [48]: { index: 25, id: 48, name: "Halo", price: 3e3, scale: 120, description: "no effect" }, [6]: { index: 26, id: 6, name: "Soldier Helmet", price: 4e3, scale: 120, description: "reduces damage taken but slows movement", spdMult: .94, dmgMult: .75 }, [23]: { index: 27, id: 23, name: "Anti Venom Gear", price: 4e3, scale: 120, description: "makes you immune to poison", poisonRes: 1 }, [13]: { index: 28, id: 13, name: "Medic Gear", price: 5e3, scale: 110, description: "slowly regenerates health over time", healthRegen: 3 }, [9]: { index: 29, id: 9, name: "Miners Helmet", price: 5e3, scale: 120, description: "earn 1 extra gold per resource", extraGold: 1 }, [32]: { index: 30, id: 32, name: "Musketeer Hat", price: 5e3, scale: 120, description: "reduces cost of projectiles", projCost: .5 }, [7]: { index: 31, id: 7, name: "Bull Helmet", price: 6e3, scale: 120, description: "increases damage done but drains health", healthRegen: -5, dmgMultO: 1.5, spdMult: .96 }, [22]: { index: 32, id: 22, name: "Emp Helmet", price: 6e3, scale: 120, description: "turrets won't attack but you move slower", antiTurret: 1, spdMult: .7 }, [12]: { index: 33, id: 12, name: "Booster Hat", price: 6e3, scale: 120, description: "increases your movement speed", spdMult: 1.16 }, [26]: { index: 34, id: 26, name: "Barbarian Armor", price: 8e3, scale: 120, description: "knocks back enemies that attack you", dmgK: .6 }, [21]: { index: 35, id: 21, name: "Plague Mask", price: 1e4, scale: 120, description: "melee attacks deal poison damage", poisonDmg: 5, poisonTime: 6 }, [46]: { index: 36, id: 46, name: "Bull Mask", price: 1e4, scale: 120, description: "bulls won't target you unless you attack them", bullRepel: 1 }, [14]: { index: 37, id: 14, name: "Windmill Hat", topSprite: true, price: 1e4, scale: 120, description: "generates points while worn", pps: 1.5 }, [11]: { index: 38, id: 11, name: "Spike Gear", topSprite: true, price: 1e4, scale: 120, description: "deal damage to players that damage you", dmg: .45 }, [53]: { index: 39, id: 53, name: "Turret Gear", topSprite: true, price: 1e4, scale: 120, description: "you become a walking turret", turret: { projectile: 1, range: 700, rate: 2500 }, spdMult: .7 }, [20]: { index: 40, id: 20, name: "Samurai Armor", price: 12e3, scale: 120, description: "increased attack speed and fire rate", atkSpd: .78 }, [58]: { index: 41, id: 58, name: "Dark Knight", price: 12e3, scale: 120, description: "restores health when you deal damage", healD: .4 }, [27]: { index: 42, id: 27, name: "Scavenger Gear", price: 15e3, scale: 120, description: "earn double points for each kill", kScrM: 2 }, [40]: { index: 43, id: 40, name: "Tank Gear", price: 15e3, scale: 120, description: "increased damage to buildings but slower movement", spdMult: .3, bDmg: 3.3 }, [52]: { index: 44, id: 52, name: "Thief Gear", price: 15e3, scale: 120, description: "steal half of a players gold when you kill them", goldSteal: .5 }, [55]: { index: 45, id: 55, name: "Bloodthirster", price: 2e4, scale: 120, description: "Restore Health when dealing damage. And increased damage", healD: .25, dmgMultO: 1.2 }, [56]: { index: 46, id: 56, name: "Assassin Gear", price: 2e4, scale: 120, description: "Go invisible when not moving. Can't eat. Increased speed", noEat: true, spdMult: 1.1, invisTimer: 1e3 } }; const Accessories = { [0]: { index: 0, id: 0, name: "Unequip", dontSell: true, price: 0, scale: 0, xOffset: 0, description: "None" }, [12]: { index: 1, id: 12, name: "Snowball", price: 1e3, scale: 105, xOffset: 18, description: "no effect" }, [9]: { index: 2, id: 9, name: "Tree Cape", price: 1e3, scale: 90, description: "no effect" }, [10]: { index: 3, id: 10, name: "Stone Cape", price: 1e3, scale: 90, description: "no effect" }, [3]: { index: 4, id: 3, name: "Cookie Cape", price: 1500, scale: 90, description: "no effect" }, [8]: { index: 5, id: 8, name: "Cow Cape", price: 2e3, scale: 90, description: "no effect" }, [11]: { index: 6, id: 11, name: "Monkey Tail", price: 2e3, scale: 97, xOffset: 25, description: "Super speed but reduced damage", spdMult: 1.35, dmgMultO: .2 }, [17]: { index: 7, id: 17, name: "Apple Basket", price: 3e3, scale: 80, xOffset: 12, description: "slowly regenerates health over time", healthRegen: 1 }, [6]: { index: 8, id: 6, name: "Winter Cape", price: 3e3, scale: 90, description: "no effect" }, [4]: { index: 9, id: 4, name: "Skull Cape", price: 4e3, scale: 90, description: "no effect" }, [5]: { index: 10, id: 5, name: "Dash Cape", price: 5e3, scale: 90, description: "no effect" }, [2]: { index: 11, id: 2, name: "Dragon Cape", price: 6e3, scale: 90, description: "no effect" }, [1]: { index: 12, id: 1, name: "Super Cape", price: 8e3, scale: 90, description: "no effect" }, [7]: { index: 13, id: 7, name: "Troll Cape", price: 8e3, scale: 90, description: "no effect" }, [14]: { index: 14, id: 14, name: "Thorns", price: 1e4, scale: 115, xOffset: 20, description: "no effect" }, [15]: { index: 15, id: 15, name: "Blockades", price: 1e4, scale: 95, xOffset: 15, description: "no effect" }, [20]: { index: 16, id: 20, name: "Devils Tail", price: 1e4, scale: 95, xOffset: 20, description: "no effect" }, [16]: { index: 17, id: 16, name: "Sawblade", price: 12e3, scale: 90, spin: true, xOffset: 0, description: "deal damage to players that damage you", dmg: .15 }, [13]: { index: 18, id: 13, name: "Angel Wings", price: 15e3, scale: 138, xOffset: 22, description: "slowly regenerates health over time", healthRegen: 3 }, [19]: { index: 19, id: 19, name: "Shadow Wings", price: 15e3, scale: 138, xOffset: 22, description: "increased movement speed", spdMult: 1.1 }, [18]: { index: 20, id: 18, name: "Blood Wings", price: 2e4, scale: 178, xOffset: 26, description: "restores health when you deal damage", healD: .2 }, [21]: { index: 21, id: 21, name: "Corrupt X Wings", price: 2e4, scale: 178, xOffset: 26, description: "deal damage to players that damage you", dmg: .25 } }; const store = [ Hats, Accessories ]; class DataHandler { static isWeaponType(type) { return type <= 1; } static isItemType(type) { return type >= 2; } static getStore(type) { return store[type]; } static getStoreItem(type, id) { switch (type) { case 0: return Hats[id]; case 1: return Accessories[id]; default: throw new Error(`getStoreItem Error: type "${type}" is not defined`); } } static getProjectile(id) { return Projectiles[Weapons[id].projectile]; } static isWeapon(id) { return void 0 !== Weapons[id]; } static isItem(id) { return void 0 !== Items[id]; } static isPrimary(id) { return null !== id && 0 === Weapons[id].itemType; } static isSecondary(id) { return null !== id && 1 === Weapons[id].itemType; } static isMelee(id) { return null !== id && "damage" in Weapons[id]; } static isAttackable(id) { return null !== id && "range" in Weapons[id]; } static isShootable(id) { return null !== id && "projectile" in Weapons[id]; } static isPlaceable(id) { return -1 !== id && "itemGroup" in Items[id]; } static isHealable(id) { return "restore" in Items[id]; } static isDestroyable(id) { return "health" in Items[id]; } } const utility_DataHandler = DataHandler; const StoreHandler = new class StoreHandler { isOpened=false; store=[ { previous: -1, current: -1, list: new Map }, { previous: -1, current: -1, list: new Map } ]; currentType=0; isRightStore(type) { return this.isOpened && this.currentType === type; } createStore(type) { const storeContainer = document.createElement("div"); storeContainer.id = "storeContainer"; storeContainer.style.display = "none"; const button = document.createElement("div"); button.id = "toggleStoreType"; button.textContent = 0 === type ? "Hats" : "Accessories"; button.onmousedown = () => { this.currentType = 0 === this.currentType ? 1 : 0; button.textContent = 0 === this.currentType ? "Hats" : "Accessories"; if (this.isOpened) { this.fillStore(this.currentType); } }; storeContainer.appendChild(button); const itemHolder = document.createElement("div"); itemHolder.id = "itemHolder"; storeContainer.appendChild(itemHolder); itemHolder.addEventListener("wheel", (event => { event.preventDefault(); const scale = 50 * Math.sign(event.deltaY); itemHolder.scroll(0, itemHolder.scrollTop + scale); })); const {gameUI} = UI_GameUI.getElements(); gameUI.appendChild(storeContainer); } getTextEquip(type, id, price) { const {list, current} = this.store[type]; if (current === id) { return "Unequip"; } if (list.has(id) || 0 === price) { return "Equip"; } return "Buy"; } generateStoreElement(type, id, name, price, isTop) { const srcType = [ "hats/hat", "accessories/access" ]; const src = [ srcType[type], id ]; if (isTop) { src.push("p"); } const html = `\n
\n \n ${name}\n
${this.getTextEquip(type, id, price)}
\n
\n `; const div = document.createElement("div"); div.innerHTML = html; const equipButton = div.querySelector(".equipButton"); equipButton.onmousedown = () => { myClient.ModuleHandler.equip(type, id, true, true); }; return div.firstElementChild; } fillStore(type) { const {itemHolder} = UI_GameUI.getElements(); itemHolder.innerHTML = ""; const items = Settings.storeItems[type]; for (const id of items) { const item = utility_DataHandler.getStoreItem(type, id); const element = this.generateStoreElement(type, id, item.name, item.price, "topSprite" in item); itemHolder.appendChild(element); } } handleEquipUpdate(type, prev, curr, isBuy) { if (!this.isRightStore(type)) { return; } const current = document.querySelector(`.equipButton[data-id="${curr}"]`); if (null !== current) { current.textContent = isBuy ? "Equip" : "Unequip"; } if (!isBuy && -1 !== prev) { const previous = document.querySelector(`.equipButton[data-id="${prev}"]`); if (null !== previous) { previous.textContent = "Equip"; } } } updateStoreState(type, action, id) { const store = this.store[type]; if (0 === action) { store.previous = store.current; store.current = id; const {previous, current, list} = store; list.set(previous, 0); list.set(current, 1); this.handleEquipUpdate(type, store.previous, id, false); } else { store.list.set(id, 0); this.handleEquipUpdate(type, store.previous, id, true); } } closeStore() { const {storeContainer, itemHolder} = UI_GameUI.getElements(); itemHolder.innerHTML = ""; storeContainer.style.display = "none"; this.isOpened = false; } openStore() { UI_GameUI.closePopups(); const {storeContainer} = UI_GameUI.getElements(); this.fillStore(this.currentType); storeContainer.style.display = ""; storeContainer.classList.remove("closedItem"); this.isOpened = true; } toggleStore() { const {storeContainer, itemHolder} = UI_GameUI.getElements(); if (this.isOpened) { itemHolder.innerHTML = ""; } else { UI_GameUI.closePopups(); this.fillStore(this.currentType); } storeContainer.style.display = "none" === storeContainer.style.display ? "" : "none"; this.isOpened = !this.isOpened; } init() { this.createStore(0); } }; const UI_StoreHandler = StoreHandler; const styles = '@import"https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;600;800&display=swap";@keyframes shine{0%{background-position:-200% 0}100%{background-position:200% 0}}@keyframes ripple{from{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(2)}}@keyframes toclose{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes toopen{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes appear{from{opacity:0}to{opacity:1}}header{display:flex;justify-content:space-between;align-items:center;height:45px;background:#1A0000!important;padding:10px;border-radius:12px;border:1px solid #ff6b6b;box-shadow:0 0 15px rgba(255,107,107,0.7);background-image:linear-gradient(90deg, #1A0000 0%, #330000 15%, rgba(255,107,107,0.5) 45%, #ff6b6b 50%, rgba(255,107,107,0.5) 55%, #330000 85%, #1A0000 100%)!important;background-size:200% 100%!important;animation:shine 8s linear infinite!important}header h1{font-size:2.3em;color:#D4AF37}header #credits{display:flex;justify-content:space-between;gap:10px;height:45px}header #credits p{margin-top:auto;color:#E0D1B7}header #logo{display:block;width:auto;height:100%;scale:1.2}header #close-button{display:block;fill:#B00000;cursor:pointer;width:auto;height:100%}header #close-button:hover{fill:#FF6B6B}#navbar-container{display:flex;flex-direction:column;background:#120000;padding:10px;border-radius:12px;border:1px solid #330000}#navbar-container .open-menu{position:relative;width:8.5em;height:3.5em;background:#280808;font-weight:800;font-size:1.3em;overflow:hidden;transition:background 100ms}#navbar-container .open-menu:hover{background:#551515}#navbar-container .open-menu.active{background:#551515;pointer-events:none}#navbar-container .open-menu.bottom-align{margin-top:auto}#navbar-container .open-menu .ripple{position:absolute;z-index:5;background:rgba(255,107,107,.4);top:0;left:0;border-radius:50%;opacity:0;animation:ripple 1100ms;pointer-events:none}#page-container{width:100%;height:100%;overflow-y:scroll}.menu-page{background:#120000;padding:10px;border-radius:8px;display:none;border:1px solid #330000}.menu-page.opened{display:block}.menu-page h1{font-size:2.8em;color:#E83030;text-shadow: 0 0 5px rgba(255, 255, 255, 0.1)}.menu-page>.section{margin-top:20px;background:#0D0000;padding:15px;border-radius:12px;border:1px solid #330000}.menu-page>.section .section-title{font-weight:800;font-size:1.8em;color:#E0D1B7;margin-bottom:10px}.menu-page>.section .section-content.split{display:flex;column-gap:30px}.menu-page>.section .section-content .content-split{width:100%;display:flex;flex-direction:column;row-gap:10px}.menu-page>.section .section-content .content-option{display:flex;justify-content:space-between;align-items:center}.menu-page>.section .section-content .content-option.centered{justify-content:center}.menu-page>.section .section-content .content-option .option-title{font-weight:800;font-size:1.4em;color:#E0D1B7;transition:color 100ms}.menu-page>.section .section-content .content-option .option-content{display:flex;justify-content:center;align-items:center;column-gap:10px}.menu-page>.section .section-content .content-option .disconnect-button{width:30px;height:30px;cursor:pointer;fill:rgba(176,0,0,0.5);transition:fill 100ms}.menu-page>.section .section-content .content-option:hover .option-title{color:#FF6B6B}.menu-page>.section .section-content .content-option:hover .disconnect-button{fill:#FF4444}.menu-page>.section .section-content .content-option:hover .disconnect-button:hover{fill:#FF6B6B}.menu-page>.section .section-content .text{display:flex;justify-content:left;gap:10px}.menu-page>.section .section-content .text .text-value{color:#E0D1B7;font-weight:800;font-size:1.5em}.menu-page>.section .section-content .option-button{width:117px;height:52px;background:#280808;border:5px solid #550000;border-radius:8px;font-weight:800;font-size:1.1em;color:#E0D1B7;transition:background 100ms,border-color 100ms}.menu-page>.section .section-content .option-button:hover{background:#401010;border-color:#7A0000}.menu-page>.section .section-content .hotkeyInput{width:90px;height:40px;background:#280808;border:5px solid #550000;border-radius:8px;font-weight:800;font-size:1.1em;color:#E0D1B7;display:flex;justify-content:center;align-items:center;transition:background 100ms,border-color 100ms,color 100ms}.menu-page>.section .section-content .hotkeyInput:hover{background:#401010;border-color:#7A0000}.menu-page>.section .section-content .hotkeyInput.active{background:#751b1b;border-color:#ff6b6b;box-shadow:0 0 10px rgba(255,107,107,0.8);}.menu-page>.section .section-content .hotkeyInput.red{background:#7a3131;border-color:#672929;color:#E0D1B7}.menu-page>.section .section-content .hotkeyInput.red:hover{background:#893333;border-color:#712d2d}.menu-page>.section .section-content .hotkeyInput.red.active{background:#923939;border-color:#712d2d}.menu-page>.section .section-content .switch-checkbox{position:relative;width:90px;height:40px}.menu-page>.section .section-content .switch-checkbox input{width:0;height:0;opacity:0}.menu-page>.section .section-content .switch-checkbox input:checked+span{background:#B00000;box-shadow:0px -20px 0px 0px #900000 inset, 0 0 8px rgba(255,107,107,0.6);}.menu-page>.section .section-content .switch-checkbox input:checked+span:before{transform:translateX(50px) scale(0.7);background:#E0D1B7}.menu-page>.section .section-content .switch-checkbox span{position:absolute;cursor:pointer;top:0;left:0;bottom:0;right:0;width:100%;height:100%;display:flex;align-items:center;background:#280808;border-radius:8px;box-shadow:0px -20px 0px 0px #1A0505 inset}.menu-page>.section .section-content .switch-checkbox span:before{position:absolute;content:"";transform:scale(0.7);transition:transform 300ms;width:40px;height:40px;border-radius:8px;background:#E0D1B7}.menu-page>.section .section-content input[id][type=color]{width:60px;height:33.3333333333px;outline:none;border:none;padding:3px;margin:0;background:#280808;border-radius:8px;cursor:pointer}.menu-page>.section .section-content .reset-color{background:var(--data-color);width:10px;height:10px;border-radius:50%}.menu-page>.section .section-content .slider{position:relative;display:flex;align-items:center;justify-content:space-between;gap:10px}.menu-page>.section .section-content .slider input{appearance:none;outline:none;cursor:pointer;padding:0;margin:0;border:none;width:144px;height:30px;background:#550000;box-shadow:0px -15px 0px 0px #330000 inset;border-radius:8px}.menu-page>.section .section-content .slider input::-webkit-slider-thumb{-webkit-appearance:none;transform:scale(0.7);width:30px;height:30px;background:#FF4444;border-radius:8px}.menu-page>.section .section-content .slider .slider-value{color:#E0D1B7;font-weight:800;font-size:1.4em;opacity:1}html,body{margin:0;padding:0;scrollbar-width:thin;scrollbar-track-color:#280808;scrollbar-face-color:#550000}*{font-family:"Noto Sans",sans-serif;color:#f1f1f1}h1{font-weight:800;margin:0}h2{margin:0}p{font-weight:800;font-size:1.1rem;margin:0;color:#E0D1B7}button{border:none;outline:none;cursor:pointer}#menu-container{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:1280px;height:720px;display:flex;justify-content:center;align-items:center}#menu-container.transparent #menu-wrapper{background:rgba(8,0,0,.5882352941)}#menu-container.transparent header,#menu-container.transparent .menu-page,#menu-container.transparent #navbar-container{background:rgba(18,0,0,.5882352941)}#menu-container.transparent .section{background:rgba(13,0,0,.462745098)}#menu-container.transparent .open-menu{background:rgba(13,0,0,.462745098)}#menu-container.transparent .open-menu:hover,#menu-container.transparent .open-menu.active{background:rgba(85,21,21,.6039215686)}#menu-wrapper{position:relative;display:flex;flex-direction:column;row-gap:10px;width:85%;height:85%;padding:10px;box-shadow:0 0 40px rgba(255,107,107,0.5), inset 0 0 15px rgba(255,107,107,0.2);border-radius:18px;background:linear-gradient(135deg, #100000 0%, #080000 100%)}#menu-wrapper.toclose{animation:250ms cubic-bezier(.2, .8, .2, 1) toclose forwards}#menu-wrapper.toopen{animation:250ms cubic-bezier(.2, .8, .2, 1) toopen forwards}main{display:flex;column-gap:10px;width:100%;height:calc(100% - 75px)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:#280808;border-radius:8px}::-webkit-scrollbar-thumb{background:#550000;border-radius:8px}.icon{width:50px;height:50px} .gmx-grid {display: grid;grid-template-columns: repeat(3, 1fr);gap: 6px;margin-bottom: 10px;}'; const Game = "#iframe-page-container{position:absolute;z-index:10;top:0;left:0;bottom:0;right:0;width:100%;height:100%;border:none}#promoImgHolder,#gameName,#rightCardHolder,#mobileDownloadButtonContainer,#touch-controls-left,#touch-controls-right,#touch-controls-fullscreen,#partyButton,#adCard,#joinPartyButton,#guideCard>*:not(#serverBrowser,#altServer,#skinColorHolder,.settingRadio){display:none !important}#setupCard{display:flex;flex-direction:column;row-gap:10px;background:rgba(189,189,189,.2666666667);box-shadow:none}#linksContainer2{background:#505050}#setupCard>*{margin:0 !important}.actionBarItem{position:relative}.itemCounter{position:absolute;top:3px;right:3px;font-size:.95em;color:#fff;text-shadow:#3d3f42 2px 0px 0px,#3d3f42 1.75517px .958851px 0px,#3d3f42 1.0806px 1.68294px 0px,#3d3f42 .141474px 1.99499px 0px,#3d3f42 -0.832294px 1.81859px 0px,#3d3f42 -1.60229px 1.19694px 0px,#3d3f42 -1.97998px .28224px 0px,#3d3f42 -1.87291px -0.701566px 0px,#3d3f42 -1.30729px -1.5136px 0px,#3d3f42 -0.421592px -1.95506px 0px,#3d3f42 .567324px -1.91785px 0px,#3d3f42 1.41734px -1.41108px 0px,#3d3f42 1.92034px -0.558831px 0px}.itemCounter{position:absolute;top:3px;right:3px;font-size:.95em;color:#fff;text-shadow:#3d3f42 2px 0px 0px,#3d3f42 1.75517px .958851px 0px,#3d3f42 1.0806px 1.68294px 0px,#3d3f42 .141474px 1.99499px 0px,#3d3f42 -0.832294px 1.81859px 0px,#3d3f42 -1.60229px 1.19694px 0px,#3d3f42 -1.97998px .28224px 0px,#3d3f42 -1.87291px -0.701566px 0px,#3d3f42 -1.30729px -1.5136px 0px,#3d3f42 -0.421592px -1.95506px 0px,#3d3f42 .567324px -1.91785px 0px,#3d3f42 1.41734px -1.41108px 0px,#3d3f42 1.92034px -0.558831px 0px}.itemCounter.hidden{display:none}#onetrust-consent-sdk{display:none !important}#topInfoHolder{display:flex;flex-direction:column;justify-content:right;align-items:flex-end;gap:10px}#topInfoHolder>div:not([class]):not([id]){display:none}#killCounter,#totalKillCounter{position:static;margin:0;background-image:url(../img/icons/skull.png)}.closedItem{display:none !important}#storeContainer{display:flex;flex-direction:column;gap:10px;max-width:400px;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}#toggleStoreType{display:flex;justify-content:center;align-items:center;padding:10px;background-color:rgba(0,0,0,.15);color:#fff;border-radius:4px;cursor:pointer;font-size:20px;pointer-events:all}#itemHolder{background-color:rgba(0,0,0,.15);max-height:200px;height:100%;padding:10px;overflow-y:scroll;border-radius:4px;pointer-events:all}#itemHolder::-webkit-scrollbar{display:none;width:0;height:0;background:rgba(0,0,0,0)}.storeItemContainer{display:flex;align-items:center;gap:10px;padding:5px;height:50px;box-sizing:border-box;overflow:hidden}.storeHat{display:flex;justify-content:center;align-items:center;width:45px;height:45px;margin-top:-5px;pointer-events:none}.storeItemName{color:#fff;font-size:20px}.equipButton{margin-left:auto;color:#80eefc;cursor:pointer;font-size:35px}#bottomContainer{bottom:10px}#scriptName{position:absolute;top:0;left:0}"; code = '

Glotus Client

by Murka

'; const Header = code; Navbar_code = ''; const Navbar = Navbar_code; Keybinds_code = ''; const Keybinds = Keybinds_code; Combat_code = ''; const Combat = Combat_code; Visuals_code = ''; const Visuals = Visuals_code; Misc_code = ''; const Misc = Misc_code; Devtool_code = ''; const Devtool = Devtool_code; Bots_code = ''; const Bots = Bots_code; Credits_code = ``; const Credits = Credits_code; class Logger { static log=console.log; static error=console.error; static timers=new Map; static start(label) { this.timers.set(label, performance.now()); } static end(label, ...args) { if (this.timers.has(label)) { this.log(`${label}: ${performance.now() - this.timers.get(label)}`, ...args); } this.timers.delete(label); } } const toBytes = b64 => Uint8Array.from(atob(b64), (c => c.charCodeAt(0))); class Altcha { code=null; coreCount=Math.min(16, navigator.hardwareConcurrency || 4); tokenEncode="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2xldCBlPW5ldyBUZXh0RW5jb2Rlcjthc3luYyBmdW5jdGlvbiB0KHQsbixyKXt2YXIgbDtyZXR1cm4gbD1hd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChyLnRvVXBwZXJDYXNlKCksZS5lbmNvZGUodCtuKSksWy4uLm5ldyBVaW50OEFycmF5KGwpXS5tYXAoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1mdW5jdGlvbiBuKGUsdD0xMil7bGV0IG49bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKyluW3JdPWUlMjU2LGU9TWF0aC5mbG9vcihlLzI1Nik7cmV0dXJuIG59YXN5bmMgZnVuY3Rpb24gcih0LHI9IiIsbD0xZTYsbz0wKXtsZXQgYT0iQUVTLUdDTSIsYz1uZXcgQWJvcnRDb250cm9sbGVyLGk9RGF0ZS5ub3coKSx1PShhc3luYygpPT57Zm9yKGxldCBlPW87ZTw9bCYmIWMuc2lnbmFsLmFib3J0ZWQmJnMmJnc7ZSsrKXRyeXtsZXQgdD1hd2FpdCBjcnlwdG8uc3VidGxlLmRlY3J5cHQoe25hbWU6YSxpdjpuKGUpfSxzLHcpO2lmKHQpcmV0dXJue2NsZWFyVGV4dDpuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodCksdG9vazpEYXRlLm5vdygpLWl9fWNhdGNoe31yZXR1cm4gbnVsbH0pKCkscz1udWxsLHc9bnVsbDt0cnl7dz1mdW5jdGlvbiBlKHQpe2xldCBuPWF0b2IodCkscj1uZXcgVWludDhBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBsPTA7bDxuLmxlbmd0aDtsKyspcltsXT1uLmNoYXJDb2RlQXQobCk7cmV0dXJuIHJ9KHQpO2xldCBmPWF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJTSEEtMjU2IixlLmVuY29kZShyKSk7cz1hd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IixmLGEsITEsWyJkZWNyeXB0Il0pfWNhdGNoe3JldHVybntwcm9taXNlOlByb21pc2UucmVqZWN0KCksY29udHJvbGxlcjpjfX1yZXR1cm57cHJvbWlzZTp1LGNvbnRyb2xsZXI6Y319bGV0IGw7b25tZXNzYWdlPWFzeW5jIGU9PntsZXR7dHlwZTpuLHBheWxvYWQ6byxzdGFydDphLG1heDpjfT1lLmRhdGEsaT1udWxsO2lmKCJhYm9ydCI9PT1uKWwmJmwuYWJvcnQoKSxsPXZvaWQgMDtlbHNlIGlmKCJ3b3JrIj09PW4pe2lmKCJvYmZ1c2NhdGVkImluIG8pe2xldHtrZXk6dSxvYmZ1c2NhdGVkOnN9PW98fHt9O2k9YXdhaXQgcihzLHUsYyxhKX1lbHNle2xldHthbGdvcml0aG06dyxjaGFsbGVuZ2U6ZixzYWx0OmR9PW98fHt9O2k9ZnVuY3Rpb24gZShuLHIsbD0iU0hBLTI1NiIsbz0xZTYsYT0wKXtsZXQgYz1uZXcgQWJvcnRDb250cm9sbGVyLGk9RGF0ZS5ub3coKSx1PShhc3luYygpPT57Zm9yKGxldCBlPWE7ZTw9byYmIWMuc2lnbmFsLmFib3J0ZWQ7ZSsrKXtsZXQgdT1hd2FpdCB0KHIsZSxsKTtpZih1PT09bilyZXR1cm57bnVtYmVyOmUsdG9vazpEYXRlLm5vdygpLWl9fXJldHVybiBudWxsfSkoKTtyZXR1cm57cHJvbWlzZTp1LGNvbnRyb2xsZXI6Y319KGYsZCx3LGMsYSl9bD1pLmNvbnRyb2xsZXIsaS5wcm9taXNlLnRoZW4oZT0+e3NlbGYucG9zdE1lc3NhZ2UoZSYmey4uLmUsd29ya2VyOiEwfSl9KX19fSgpOw=="; workerBlob=new Blob([ toBytes(this.tokenEncode) ], { type: "text/javascript;charset=utf-8" }); static createPayload(data, result) { return btoa(JSON.stringify({ algorithm: data.algorithm, challenge: data.challenge, number: result.number, salt: data.salt, signature: data.signature, test: !!data || void 0, took: result.took })); } createWorker(name = "alt_worker") { try { const url = URL.createObjectURL(this.workerBlob); const worker = new Worker(url, { name }); worker.addEventListener("error", (() => URL.revokeObjectURL(url))); return worker; } catch (e) { return new Worker(`data:text/javascript;base64,${this.tokenEncode}`, { name }); } } async fetchChallenge() { const res = await fetch("https://api.moomoo.io/verify"); if (!res.ok) { throw new Error("Failed to fetch challenge."); } return res.json(); } async getWorkerSolution(task, total, count = this.coreCount) { const workerCount = Math.min(16, Math.max(1, count)); const workers = Array.from({ length: workerCount }, (() => this.createWorker())); const chunkSize = Math.ceil(total / workerCount); const results = await Promise.all(workers.map(((worker, index) => { const start = index * chunkSize; return new Promise((resolve => { worker.onmessage = msg => { if (msg.data) { workers.forEach((w => { if (w !== worker) { w.postMessage({ type: "abort" }); } })); } resolve(msg.data ?? null); }; worker.onerror = () => resolve(null); const message = { type: "work", payload: task, start, max: start + chunkSize }; worker.postMessage(message); })); }))); workers.forEach((worker => worker.terminate())); return results.find((r => !!r)) ?? null; } async validateChallenge(data) { const solution = await this.getWorkerSolution(data, data.maxnumber); if (!solution) { throw new Error("Failed to solve challenge."); } return { challengeData: data, solution }; } async generate() { try { const challengeData = await this.fetchChallenge(); const {solution} = await this.validateChallenge(challengeData); const encoded = Altcha.createPayload(challengeData, solution); this.code = `alt:${encoded}`; return encodeURIComponent(this.code); } catch (error) { console.error("Token generation failed:", error); throw error; } } } const altcha = new Altcha; const createSocket = async () => { const token = await altcha.generate(); const socket = myClient.connection.socket; const origin = new URL(socket.url).origin; const url = origin + "/?token=" + token; const ws = new WebSocket(url); ws.binaryType = "arraybuffer"; return ws; }; const modules_createSocket = createSocket; class ObjectItem { id; position; angle; scale; constructor(id, x, y, angle, scale) { this.id = id; this.position = { current: new modules_Vector(x, y) }; this.angle = angle; this.scale = scale; } get hitScale() { return this.scale; } } class Resource extends ObjectItem { type; layer; constructor(id, x, y, angle, scale, type) { super(id, x, y, angle, scale); this.type = type; this.layer = 0 === type ? 3 : 2 === type ? 0 : 2; } formatScale(scaleMult = 1) { const reduceScale = 0 === this.type || 1 === this.type ? .6 * scaleMult : 1; return this.scale * reduceScale; } get collisionScale() { return this.formatScale(); } get placementScale() { return this.formatScale(.6); } get isCactus() { return 1 === this.type && pointInDesert(this.position.current); } } class PlayerObject extends ObjectItem { type; ownerID; collisionDivider; health; maxHealth; reload=-1; maxReload=-1; isDestroyable; seenPlacement=false; layer; itemGroup; constructor(id, x, y, angle, scale, type, ownerID) { super(id, x, y, angle, scale); this.type = type; this.ownerID = ownerID; const item = Items[type]; this.collisionDivider = "colDiv" in item ? item.colDiv : 1; this.health = "health" in item ? item.health : Infinity; this.maxHealth = this.health; this.isDestroyable = Infinity !== this.maxHealth; if (17 === item.id) { this.reload = item.shootRate; this.maxReload = this.reload; } this.layer = ItemGroups[item.itemGroup].layer; this.itemGroup = item.itemGroup; } formatScale(placeCollision = false) { return this.scale * (placeCollision ? 1 : this.collisionDivider); } get collisionScale() { return this.formatScale(); } get placementScale() { const item = Items[this.type]; if (21 === item.id) { return item.blocker; } return this.scale; } } class SpatialHashGrid { cellSize; cells; constructor(cellSize) { this.cellSize = cellSize; this.cells = []; } hashPosition(x, y) { const cellX = Math.floor(x / this.cellSize); const cellY = Math.floor(y / this.cellSize); return [ cellX, cellY ]; } clear() { this.cells.length = 0; } insert(object) { const {x, y} = object.position.current; const [cellX, cellY] = this.hashPosition(x, y); if (!this.cells[cellX]) { this.cells[cellX] = []; } if (!this.cells[cellX][cellY]) { this.cells[cellX][cellY] = []; } this.cells[cellX][cellY].push(object); } retrieve(position, radius) { const {x, y} = position; const [startX, startY] = this.hashPosition(x - radius, y - radius); const [endX, endY] = this.hashPosition(x + radius, y + radius); const results = []; for (let cellX = startX - 1; cellX <= endX + 1; cellX++) { for (let cellY = startY - 1; cellY <= endY + 1; cellY++) { if (this.cells[cellX] && this.cells[cellX][cellY]) { const objects = this.cells[cellX][cellY]; for (const object of objects) { results.push(object); } } } } return results; } remove(object) { const {x, y} = object.position.current; const [cellX, cellY] = this.hashPosition(x, y); if (this.cells[cellX] && this.cells[cellX][cellY]) { const objects = this.cells[cellX][cellY]; const index = objects.indexOf(object); if (-1 !== index) { const lastIndex = objects.length - 1; if (index === lastIndex) { objects.pop(); } else { objects[index] = objects.pop(); } return true; } } return false; } } const modules_SpatialHashGrid = SpatialHashGrid; class EnemyManager { client; enemiesGrid=new modules_SpatialHashGrid(100); enemies=[]; trappedEnemies=new Set; dangerousEnemies=[]; _nearestEnemy=[ null, null ]; nearestMeleeReloaded=null; nearestDangerAnimal=null; nearestTrap=null; nearestCollideSpike=null; nearestTurretEntity=null; detectedEnemy=false; constructor(client) { this.client = client; } reset() { this.enemiesGrid.clear(); this.enemies.length = 0; this.trappedEnemies.clear(); this.dangerousEnemies.length = 0; this._nearestEnemy[0] = null; this._nearestEnemy[1] = null; this.nearestMeleeReloaded = null; this.nearestDangerAnimal = null; this.nearestTrap = null; this.nearestCollideSpike = null; this.nearestTurretEntity = null; this.detectedEnemy = false; } get nearestEnemy() { return this._nearestEnemy[0]; } get nearestAnimal() { return this._nearestEnemy[1]; } isNear(enemy, nearest) { if (null === nearest) { return true; } const {myPlayer} = this.client; const a0 = myPlayer.position.current; const distance1 = a0.distance(enemy.position.current); const distance2 = a0.distance(nearest.position.current); return distance1 < distance2; } get nearestEntity() { const target1 = this.nearestEnemy; const target2 = this.nearestAnimal; if (null === target1) { return target2; } return this.isNear(target1, target2) ? target1 : target2; } nearestEnemyInRangeOf(range, target) { const enemy = target || this.nearestEnemy; return null !== enemy && this.client.myPlayer.collidingEntity(enemy, range); } handleNearestDanger(enemy) { const {myPlayer, ModuleHandler} = this.client; const extraRange = enemy.usingBoost && !enemy.isTrapped ? 400 : 100; const range = enemy.getMaxWeaponRange() + myPlayer.hitScale + extraRange; if (myPlayer.collidingEntity(enemy, range)) { if (enemy.danger >= 3) { ModuleHandler.needToHeal = true; } this.detectedEnemy = true; } } handleDanger(enemy) { if (enemy.dangerList.length >= 2) { enemy.dangerList.shift(); } const danger = enemy.canPossiblyInstakill(); enemy.dangerList.push(danger); enemy.danger = Math.max(...enemy.dangerList); if (0 !== enemy.danger) { this.dangerousEnemies.push(enemy); this.handleNearestDanger(enemy); } } checkCollision(target, isOwner = false) { target.isTrapped = false; target.onPlatform = false; const {ObjectManager, PlayerManager} = this.client; const objects = ObjectManager.retrieveObjects(target.position.current, target.collisionScale); for (const object of objects) { if (object instanceof Resource) { continue; } if (!target.collidingObject(object, 5)) { continue; } const isEnemyObject = PlayerManager.isEnemyByID(object.ownerID, target); if (15 === object.type && isEnemyObject) { this.trappedEnemies.add(target); target.isTrapped = true; if (isOwner && this.isNear(target, this.nearestTrap)) { this.nearestTrap = object; } } else if (18 === object.type) { target.onPlatform = true; } else if (2 === object.itemGroup && isEnemyObject) { if (!isOwner && this.isNear(target, this.nearestCollideSpike)) { const pos1 = target.position.future; const pos2 = object.position.current; const distance = pos1.distance(pos2); const range = object.collisionScale + target.collisionScale; const willCollide = distance <= range; if (willCollide) { this.nearestCollideSpike = target; } } } } } handleNearest(type, enemy) { if (this.isNear(enemy, this._nearestEnemy[type])) { this._nearestEnemy[type] = enemy; if (enemy.canUseTurret && this.client.myPlayer.collidingEntity(enemy, 700)) { this.nearestTurretEntity = enemy; } } } handleNearestMelee(enemy) { const {myPlayer, ModuleHandler} = this.client; const range = enemy.getMaxWeaponRange() + myPlayer.hitScale + 60; const angle = ModuleHandler.getMoveAngle(); if (!enemy.meleeReloaded()) { return; } if (!myPlayer.collidingEntity(enemy, range)) { return; } if (!myPlayer.runningAwayFrom(enemy, angle)) { return; } if (!this.isNear(enemy, this.nearestMeleeReloaded)) { return; } this.nearestMeleeReloaded = enemy; } handleNearestDangerAnimal(animal) { const {myPlayer} = this.client; if (!animal.isDanger) { return; } if (!myPlayer.collidingEntity(animal, animal.collisionRange)) { return; } if (!this.isNear(animal, this.nearestDangerAnimal)) { return; } this.nearestDangerAnimal = animal; } handleEnemies(players, animals) { this.reset(); const {myPlayer} = this.client; this.checkCollision(myPlayer, true); for (let i = 0; i < players.length; i++) { const player = players[i]; if (myPlayer.isEnemyByID(player.id)) { this.enemiesGrid.insert(player); this.enemies.push(player); this.checkCollision(player); this.handleDanger(player); this.handleNearest(0, player); this.handleNearestMelee(player); } } for (let i = 0; i < animals.length; i++) { const animal = animals[i]; this.handleNearest(1, animal); this.handleNearestDangerAnimal(animal); } } } const Managers_EnemyManager = EnemyManager; class LeaderboardManager { client; list=new Set; constructor(client) { this.client = client; } updatePlayer(id, nickname, gold) { const owner = this.client.PlayerManager.playerData.get(id) || this.client.PlayerManager.createPlayer({ id, nickname }); this.list.add(owner); owner.totalGold = gold; owner.inLeaderboard = true; } update(data) { for (const player of this.list) { player.inLeaderboard = false; } this.list.clear(); for (let i = 0; i < data.length; i += 3) { const id = data[i + 0]; const nickname = data[i + 1]; const gold = data[i + 2]; this.updatePlayer(id, nickname, gold); } } } const Managers_LeaderboardManager = LeaderboardManager; const WeaponTypeString = [ "primary", "secondary" ]; class Entity { id=-1; position={ previous: new modules_Vector, current: new modules_Vector, future: new modules_Vector }; angle=0; scale=0; setFuturePosition() { const {previous, current, future} = this.position; const distance = previous.distance(current); const angle = previous.angle(current); future.setVec(current.direction(angle, distance)); } get collisionScale() { return this.scale; } get hitScale() { return 1.8 * this.scale; } client; constructor(client) { this.client = client; } colliding(object, radius) { const {previous: a0, current: a1, future: a2} = this.position; const b0 = object.position.current; return a0.distance(b0) <= radius || a1.distance(b0) <= radius || a2.distance(b0) <= radius; } collidingObject(object, addRadius = 0, checkPrevious = true) { const {previous: a0, current: a1, future: a2} = this.position; const b0 = object.position.current; const radius = this.collisionScale + object.collisionScale + addRadius; return checkPrevious && a0.distance(b0) <= radius || a1.distance(b0) <= radius || a2.distance(b0) <= radius; } collidingEntity(entity, range, checkBased = false, prev = true) { const {previous: a0, current: a1, future: a2} = this.position; const {previous: b0, current: b1, future: b2} = entity.position; if (checkBased) { return prev && a0.distance(b0) <= range || a1.distance(b1) <= range || a2.distance(b2) <= range; } return a0.distance(b0) <= range || a0.distance(b1) <= range || a0.distance(b2) <= range || a1.distance(b0) <= range || a1.distance(b1) <= range || a1.distance(b2) <= range || a2.distance(b0) <= range || a2.distance(b1) <= range || a2.distance(b2) <= range; } checkCollision(itemGroup, addRadius = 0, checkEnemy = false, checkPrevious = true) { const {ObjectManager} = this.client; const objects = ObjectManager.retrieveObjects(this.position.current, this.collisionScale); for (const object of objects) { const matchItem = object instanceof PlayerObject && object.itemGroup === itemGroup; const isCactus = object instanceof Resource && 2 === itemGroup && object.isCactus; if (matchItem || isCactus) { if (checkEnemy && !ObjectManager.isEnemyObject(object)) { continue; } if (this.collidingObject(object, addRadius, checkPrevious)) { return true; } } } return false; } runningAwayFrom(entity, angle) { if (null === angle) { return false; } const pos1 = this.position.current; const pos2 = entity.position.current; const angleTo = pos1.angle(pos2); if (getAngleDist(angle, angleTo) <= Math.PI / 2) { return false; } return true; } } const data_Entity = Entity; class Player extends data_Entity { socketID=""; currentItem=-1; clanName=null; isLeader=false; nickname="unknown"; skinID=0; scale=35; hatID=0; accessoryID=0; totalStorePrice=0; storeList=[ new Set, new Set ]; previousHealth=100; currentHealth=100; tempHealth=100; maxHealth=100; globalInventory={}; weapon={}; variant={}; reload={ primary: {}, secondary: {}, turret: {} }; objects=new Set; totalGold=0; inLeaderboard=false; newlyCreated=true; usingBoost=false; isTrapped=false; onPlatform=false; isFullyUpgraded=false; potentialDamage=0; foundProjectiles=new Map; dangerList=[]; danger=0; constructor(client) { super(client); this.init(); } hasFound(projectile) { const key = projectile.type; return this.foundProjectiles.has(key); } addFound(projectile) { const key = projectile.type; if (!this.foundProjectiles.has(key)) { this.foundProjectiles.set(key, []); } const list = this.foundProjectiles.get(key); list.push(projectile); } resetReload() { const {primary, secondary} = this.weapon; const primarySpeed = null !== primary ? this.getWeaponSpeed(primary) : -1; const secondarySpeed = null !== secondary ? this.getWeaponSpeed(secondary) : -1; const reload = this.reload; reload.primary.current = primarySpeed; reload.primary.max = primarySpeed; reload.secondary.current = secondarySpeed; reload.secondary.max = secondarySpeed; reload.turret.current = 2500; reload.turret.max = 2500; } resetGlobalInventory() { this.globalInventory[0] = null; this.globalInventory[1] = null; this.globalInventory[2] = null; this.globalInventory[3] = null; this.globalInventory[4] = null; this.globalInventory[5] = null; this.globalInventory[6] = null; this.globalInventory[7] = null; this.globalInventory[8] = null; this.globalInventory[9] = null; } init() { this.weapon.current = 0; this.weapon.oldCurrent = 0; this.weapon.primary = null; this.weapon.secondary = null; this.variant.current = 0; this.variant.primary = 0; this.variant.secondary = 0; this.resetReload(); this.resetGlobalInventory(); this.newlyCreated = true; this.usingBoost = false; this.isFullyUpgraded = false; this.foundProjectiles.clear(); } get canUseTurret() { return 22 !== this.hatID; } update(id, x, y, angle, currentItem, currentWeapon, weaponVariant, clanName, isLeader, hatID, accessoryID, isSkull) { this.id = id; this.position.previous.setVec(this.position.current); this.position.current.setXY(x, y); this.setFuturePosition(); this.angle = angle; this.currentItem = currentItem; this.weapon.oldCurrent = this.weapon.current; this.weapon.current = currentWeapon; this.variant.current = weaponVariant; this.clanName = clanName; this.isLeader = Boolean(isLeader); this.hatID = hatID; this.accessoryID = accessoryID; if (!this.storeList[0].has(hatID)) { this.storeList[0].add(hatID); this.totalStorePrice += Hats[hatID].price; } if (!this.storeList[1].has(accessoryID)) { this.storeList[1].add(accessoryID); this.totalStorePrice += Accessories[accessoryID].price; } this.newlyCreated = false; this.potentialDamage = 0; this.predictItems(); this.predictWeapons(); this.updateReloads(); } updateHealth(health) { this.previousHealth = this.currentHealth; this.currentHealth = health; this.tempHealth = health; } predictItems() { if (-1 === this.currentItem) { return; } const item = Items[this.currentItem]; this.globalInventory[item.itemType] = this.currentItem; } increaseReload(reload) { reload.current = Math.min(reload.current + this.client.PlayerManager.step, reload.max); } updateTurretReload() { const reload = this.reload.turret; this.increaseReload(reload); if (53 !== this.hatID) { return; } const {ProjectileManager} = this.client; const speed = Projectiles[1].speed; const list = ProjectileManager.projectiles.get(speed); if (void 0 === list) { return; } const current = this.position.current; for (let i = 0; i < list.length; i++) { const projectile = list[i]; const distance = current.distance(projectile.position.current); if (distance < 2) { if (this.hasFound(projectile)) { this.foundProjectiles.clear(); } this.addFound(projectile); projectile.owner = this; reload.current = 0; removeFast(list, i); break; } } } updateReloads() { this.updateTurretReload(); if (-1 !== this.currentItem) { return; } const weapon = Weapons[this.weapon.current]; const type = WeaponTypeString[weapon.itemType]; const reload = this.reload[type]; this.increaseReload(reload); if ("projectile" in weapon) { const {ProjectileManager} = this.client; const speedMult = this.getWeaponSpeedMult(); const type = weapon.projectile; const speed = Projectiles[type].speed * speedMult; const list = ProjectileManager.projectiles.get(speed); if (void 0 === list) { return; } const current = this.position.current; for (let i = 0; i < list.length; i++) { const projectile = list[i]; const distance = current.distance(projectile.position.current); if (distance < 2 && this.angle === projectile.angle) { if (this.hasFound(projectile)) { this.foundProjectiles.clear(); } this.addFound(projectile); projectile.owner = this; reload.current = 0; reload.max = this.getWeaponSpeed(weapon.id); removeFast(list, i); break; } } } } handleObjectPlacement(object) { this.objects.add(object); const {myPlayer, ObjectManager} = this.client; const item = Items[object.type]; if (object.seenPlacement) { if (17 === object.type) { ObjectManager.resetTurret(object.id); } else if (16 === object.type && !this.newlyCreated) { this.usingBoost = true; } this.updateInventory(object.type); } if (myPlayer.isMyPlayerByID(this.id) && 5 === item.itemType) { myPlayer.totalGoldAmount += item.pps; } } handleObjectDeletion(object) { this.objects.delete(object); const {myPlayer} = this.client; const item = Items[object.type]; if (myPlayer.isMyPlayerByID(this.id) && 5 === item.itemType) { myPlayer.totalGoldAmount -= item.pps; } } updateInventory(type) { const item = Items[type]; const inventoryID = this.globalInventory[item.itemType]; const shouldUpdate = null === inventoryID || item.age > Items[inventoryID].age; if (shouldUpdate) { this.globalInventory[item.itemType] = item.id; } } detectFullUpgrade() { const inventory = this.globalInventory; const primary = inventory[0]; const secondary = inventory[1]; const spike = inventory[4]; if (primary && secondary) { if ("isUpgrade" in Weapons[primary] && "isUpgrade" in Weapons[secondary]) { return true; } } return primary && 8 === Weapons[primary].age || secondary && 9 === Weapons[secondary].age || spike && 9 === Items[spike].age || 12 === inventory[5] || 20 === inventory[9]; } predictPrimary(id) { if (11 === id) { return 4; } return 5; } predictSecondary(id) { if (0 === id) { return null; } if (2 === id || 4 === id) { return 10; } return 15; } predictWeapons() { const {current, oldCurrent} = this.weapon; const weapon = Weapons[current]; const type = WeaponTypeString[weapon.itemType]; const reload = this.reload[type]; const upgradedWeapon = current !== oldCurrent && weapon.itemType === Weapons[oldCurrent].itemType; if (-1 === reload.max || upgradedWeapon) { reload.current = weapon.speed; reload.max = weapon.speed; } this.globalInventory[weapon.itemType] = current; this.variant[type] = this.variant.current; const currentType = this.weapon[type]; if (null === currentType || weapon.age > Weapons[currentType].age) { this.weapon[type] = current; } const primary = this.globalInventory[0]; const secondary = this.globalInventory[1]; const notPrimaryUpgrade = null === primary || !("isUpgrade" in Weapons[primary]); const notSecondaryUpgrade = null === secondary || !("isUpgrade" in Weapons[secondary]); if (utility_DataHandler.isSecondary(current) && notPrimaryUpgrade) { const predicted = this.predictPrimary(current); if (null === primary || Weapons[predicted].upgradeType === Weapons[primary].upgradeType) { this.weapon.primary = predicted; } } else if (utility_DataHandler.isPrimary(current) && notSecondaryUpgrade) { const predicted = this.predictSecondary(current); if (null === predicted || null === secondary || Weapons[predicted].upgradeType === Weapons[secondary].upgradeType) { this.weapon.secondary = predicted; } } this.isFullyUpgraded = this.detectFullUpgrade(); if (this.isFullyUpgraded) { if (null !== primary) { this.weapon.primary = primary; } if (null !== secondary) { this.weapon.secondary = secondary; } } } getWeaponVariant(id) { const type = Weapons[id].itemType; const variant = this.variant[WeaponTypeString[type]]; return { current: variant, next: Math.min(variant + 1, 3) }; } getBuildingDamage(id) { const weapon = Weapons[id]; const variant = WeaponVariants[this.getWeaponVariant(id).current]; let damage = weapon.damage * variant.val; if ("sDmg" in weapon) { damage *= weapon.sDmg; } const hat = Hats[this.hatID]; if ("bDmg" in hat) { damage *= hat.bDmg; } return damage; } canDealPoison(weaponID) { const variant = this.getWeaponVariant(weaponID).current; const isRuby = 3 === variant; const hasPlague = 21 === this.hatID; return { isAble: isRuby || hasPlague, count: isRuby ? 5 : hasPlague ? 6 : 0 }; } getWeaponSpeed(id, hat = this.hatID) { const reloadSpeed = 20 === hat ? Hats[hat].atkSpd : 1; return Weapons[id].speed * reloadSpeed; } getWeaponSpeedMult() { if (1 === this.hatID) { return Hats[this.hatID].aMlt; } return 1; } getMaxWeaponRange() { const {primary, secondary} = this.weapon; const primaryRange = Weapons[primary].range; if (utility_DataHandler.isMelee(secondary)) { const range = Weapons[secondary].range; if (range > primaryRange) { return range; } } return primaryRange; } getMaxWeaponDamage(id, lookingShield) { if (utility_DataHandler.isMelee(id)) { const BULL_HAT_ID = 7; const bull = Hats[BULL_HAT_ID]; const variant = this.getWeaponVariant(id).current; let damage = Weapons[id].damage; // НОВОЕ (Требование 3): Применяем множитель Bull Hat только если она КУПЛЕНА const hatIsOwned = this.storeList && this.storeList[0] && this.storeList[0].has(BULL_HAT_ID); if (hatIsOwned && bull && bull.dmgMultO) { damage *= bull.dmgMultO; } damage *= WeaponVariants[variant].val; if (lookingShield) { // Это множитель урона по щиту damage *= Weapons[11].shield; } return damage; } else if (utility_DataHandler.isShootable(id) && !lookingShield) { const projectile = utility_DataHandler.getProjectile(id); return projectile.damage; } return 0; } getItemPlaceScale(itemID) { const item = Items[itemID]; return this.scale + item.scale + item.placeOffset; } isReloaded(type, tick = 2 * this.client.SocketManager.TICK) { const reload = this.reload[type].current; const max = this.reload[type].max - tick; return reload >= max; } meleeReloaded() { const {TICK} = this.client.SocketManager; return this.isReloaded("primary", TICK) || utility_DataHandler.isMelee(this.weapon.secondary) && this.isReloaded("secondary", TICK); } detectSpikeInsta() { const {myPlayer, ObjectManager} = this.client; const spikeID = this.globalInventory[4] || 9; const placeLength = this.getItemPlaceScale(spikeID); const pos1 = this.position.current; const pos2 = myPlayer.position.current; const angleTo = pos1.angle(pos2); const angles = ObjectManager.getBestPlacementAngles(pos1, spikeID, angleTo); const spike = Items[spikeID]; for (const angle of angles) { const spikePos = pos1.direction(angle, placeLength); const distance = pos2.distance(spikePos); const range = this.collisionScale + spike.scale; if (distance <= range) { this.potentialDamage += spike.damage; break; } } } canPossiblyInstakill() { const {PlayerManager, myPlayer} = myClient; const lookingShield = PlayerManager.lookingShield(myPlayer, this); const {primary, secondary} = this.weapon; const primaryDamage = this.getMaxWeaponDamage(primary, lookingShield); const secondaryDamage = this.getMaxWeaponDamage(secondary, lookingShield); if (this.isReloaded("primary")) { this.potentialDamage += primaryDamage; } if (this.isReloaded("secondary")) { const turrets = this.foundProjectiles.get(1); this.foundProjectiles.clear(); if (void 0 !== turrets) { this.foundProjectiles.set(1, turrets); } this.potentialDamage += secondaryDamage; } if (this.isReloaded("turret") && !lookingShield) { this.potentialDamage += 25; } this.detectSpikeInsta(); if (this.potentialDamage * Hats[6].dmgMult >= 100) { return 3; } if (this.potentialDamage >= 100) { return 2; } return 0; } } const data_Player = Player; class Renderer { static objects=[]; static rect(ctx, pos, scale, color, lineWidth = 4) { ctx.save(); ctx.strokeStyle = color; ctx.lineWidth = lineWidth; ctx.beginPath(); ctx.translate(-myClient.myPlayer.offset.x, -myClient.myPlayer.offset.y); ctx.translate(pos.x, pos.y); ctx.rect(-scale, -scale, 2 * scale, 2 * scale); ctx.stroke(); ctx.closePath(); ctx.restore(); } static roundRect(ctx, x, y, w, h, r) { if (w < 2 * r) { r = w / 2; } if (h < 2 * r) { r = h / 2; } if (r < 0) { r = 0; } ctx.beginPath(); ctx.moveTo(x + r, y); ctx.arcTo(x + w, y, x + w, y + h, r); ctx.arcTo(x + w, y + h, x, y + h, r); ctx.arcTo(x, y + h, x, y, r); ctx.arcTo(x, y, x + w, y, r); ctx.closePath(); } static circle(ctx, x, y, radius, color, opacity = 1, lineWidth = 4) { ctx.save(); ctx.globalAlpha = opacity; ctx.strokeStyle = color; ctx.lineWidth = lineWidth; ctx.beginPath(); ctx.translate(-myClient.myPlayer.offset.x, -myClient.myPlayer.offset.y); ctx.arc(x, y, radius, 0, 2 * Math.PI); ctx.stroke(); ctx.closePath(); ctx.restore(); } static fillCircle(ctx, x, y, radius, color, opacity = 1) { ctx.save(); ctx.globalAlpha = opacity; ctx.fillStyle = color; ctx.beginPath(); ctx.translate(-myClient.myPlayer.offset.x, -myClient.myPlayer.offset.y); ctx.arc(x, y, radius, 0, 2 * Math.PI); ctx.fill(); ctx.closePath(); ctx.restore(); } static line(ctx, start, end, color, opacity = 1, lineWidth = 4) { ctx.save(); ctx.translate(-myClient.myPlayer.offset.x, -myClient.myPlayer.offset.y); ctx.globalAlpha = opacity; ctx.strokeStyle = color; ctx.lineCap = "round"; ctx.lineWidth = lineWidth; ctx.beginPath(); ctx.moveTo(start.x, start.y); ctx.lineTo(end.x, end.y); ctx.stroke(); ctx.restore(); } static arrow(ctx, length, x, y, angle, color) { ctx.save(); ctx.translate(-myClient.myPlayer.offset.x, -myClient.myPlayer.offset.y); ctx.translate(x, y); ctx.rotate(Math.PI / 4); ctx.rotate(angle); ctx.globalAlpha = .75; ctx.strokeStyle = color; ctx.lineCap = "round"; ctx.lineWidth = 8; ctx.beginPath(); ctx.moveTo(-length, -length); ctx.lineTo(length, -length); ctx.lineTo(length, length); ctx.stroke(); ctx.restore(); } static cross(ctx, x, y, size, lineWidth, color) { ctx.save(); ctx.globalAlpha = 1; ctx.lineWidth = lineWidth; ctx.strokeStyle = color; ctx.translate(x - myClient.myPlayer.offset.x, y - myClient.myPlayer.offset.y); const halfSize = size / 2; ctx.beginPath(); ctx.moveTo(-halfSize, -halfSize); ctx.lineTo(halfSize, halfSize); ctx.stroke(); ctx.beginPath(); ctx.moveTo(halfSize, -halfSize); ctx.lineTo(-halfSize, halfSize); ctx.stroke(); ctx.restore(); } static getTracerColor(entity) { if (entity instanceof Notification) { return Settings.notificationTracersColor; } if (Settings.animalTracers && entity.isAI) { return Settings.animalTracersColor; } if (Settings.teammateTracers && entity.isPlayer && myClient.myPlayer.isTeammateByID(entity.sid)) { return Settings.teammateTracersColor; } if (Settings.enemyTracers && entity.isPlayer && myClient.myPlayer.isEnemyByID(entity.sid)) { return Settings.enemyTracersColor; } return null; } static renderTracer(ctx, entity, player) { const color = this.getTracerColor(entity); if (null === color) { return; } const pos1 = new modules_Vector(player.x, player.y); const pos2 = new modules_Vector(entity.x, entity.y); if (Settings.arrows) { const w = 8; const distance = Math.min(100 + 2 * w, pos1.distance(pos2) - 2 * w); const angle = pos1.angle(pos2); const pos = pos1.direction(angle, distance); this.arrow(ctx, w, pos.x, pos.y, angle, color); } else { this.line(ctx, pos1, pos2, color, .75); } } static getMarkerColor(object) { const id = object.owner?.sid; if (void 0 === id) { return null; } if (Settings.itemMarkers && myClient.myPlayer.isMyPlayerByID(id)) { return Settings.itemMarkersColor; } if (Settings.teammateMarkers && myClient.myPlayer.isTeammateByID(id)) { return Settings.teammateMarkersColor; } if (Settings.enemyMarkers && myClient.myPlayer.isEnemyByID(id)) { return Settings.enemyMarkersColor; } return null; } static renderMarker(ctx, object) { const color = this.getMarkerColor(object); if (null === color) { return; } const x = object.x + object.xWiggle - myClient.myPlayer.offset.x; const y = object.y + object.yWiggle - myClient.myPlayer.offset.y; ctx.save(); ctx.strokeStyle = "#3b3b3b"; ctx.lineWidth = 4; ctx.fillStyle = color; ctx.beginPath(); ctx.arc(x, y, 10, 0, 2 * Math.PI); ctx.fill(); ctx.stroke(); ctx.closePath(); ctx.restore(); } static barContainer(ctx, x, y, w, h, r = 8) { ctx.fillStyle = "#3d3f42"; this.roundRect(ctx, x, y, w, h, r); ctx.fill(); } static barContent(ctx, x, y, w, h, fill, color) { const barPad = constants_Config.barPad; ctx.fillStyle = color; this.roundRect(ctx, x + barPad, y + barPad, (w - 2 * barPad) * fill, h - 2 * barPad, 7); ctx.fill(); } static getNameY(target) { let nameY = 34; const height = 5; if (target === myClient.myPlayer && Settings.weaponXPBar) { nameY += height; } if (Settings.playerTurretReloadBar) { nameY += height; } if (Settings.weaponReloadBar) { nameY += height; } return nameY; } static getContainerHeight(entity) { const {barHeight, barPad} = constants_Config; let height = barHeight; if (entity.isPlayer) { const smallBarHeight = barHeight - 4; const player = myClient.PlayerManager.playerData.get(entity.sid); if (void 0 === player) { return height; } if (player === myClient.myPlayer && Settings.weaponXPBar) { height += smallBarHeight - barPad; } if (Settings.playerTurretReloadBar) { height += smallBarHeight - barPad; } if (Settings.weaponReloadBar) { height += barHeight - barPad; } } return height; } static renderBar(ctx, entity) { const {barWidth, barHeight, barPad} = constants_Config; const smallBarHeight = barHeight - 4; const totalWidth = barWidth + barPad; const scale = entity.scale + 34; const {myPlayer, PlayerManager} = myClient; let x = entity.x - myPlayer.offset.x - totalWidth; let y = entity.y - myPlayer.offset.y + scale; ctx.save(); if (entity.isPlayer && entity !== myClient.myPlayer) { const botId = (entity.client && entity.client.id !== undefined) ? entity.client.id // если это бот : (entity.sid ?? entity.id); // иначе sid или id ctx.fillStyle = "#ff0"; ctx.strokeStyle = "#000"; ctx.lineWidth = 4; ctx.font = "16px Hammersmith One"; // рисуем ID + ник ctx.strokeText(`[${botId}]`, x - -55, y - 20); ctx.fillText(`[${botId}]`, x - -55, y - 20); } ctx.restore(); const player = entity.isPlayer && PlayerManager.playerData.get(entity.sid); const animal = entity.isAI && PlayerManager.animalData.get(entity.sid); let height = 0; if (player instanceof data_Player) { const {primary, secondary, turret} = player.reload; if (player === myPlayer && Settings.weaponXPBar) { const weapon = Weapons[myPlayer.weapon.current]; const current = WeaponVariants[myPlayer.getWeaponVariant(weapon.id).current].color; const next = WeaponVariants[myPlayer.getWeaponVariant(weapon.id).next].color; const XP = myPlayer.weaponXP[weapon.itemType]; this.barContainer(ctx, x, y, 2 * totalWidth, smallBarHeight); this.barContent(ctx, x, y, 2 * totalWidth, smallBarHeight, 1, current); this.barContent(ctx, x, y, 2 * totalWidth, smallBarHeight, clamp(XP.current / XP.max, 0, 1), next); height += smallBarHeight - barPad; } if (Settings.playerTurretReloadBar) { this.barContainer(ctx, x, y + height, 2 * totalWidth, smallBarHeight); this.barContent(ctx, x, y + height, 2 * totalWidth, smallBarHeight, turret.current / turret.max, Settings.playerTurretReloadBarColor); height += smallBarHeight - barPad; } if (Settings.weaponReloadBar) { const extraPad = 2.25; this.barContainer(ctx, x, y + height, 2 * totalWidth, barHeight); this.barContent(ctx, x, y + height, totalWidth + extraPad, barHeight, primary.current / primary.max, Settings.weaponReloadBarColor); this.barContent(ctx, x + totalWidth - extraPad, y + height, totalWidth + extraPad, barHeight, secondary.current / secondary.max, Settings.weaponReloadBarColor); height += barHeight - barPad; } } const target = player || animal; if (target) { window.config.nameY = this.getNameY(target); const {currentHealth, maxHealth} = target; const health = animal ? maxHealth : 100; const color = PlayerManager.isEnemyTarget(myPlayer, target) ? "#cc5151" : "#8ecc51"; this.barContainer(ctx, x, y + height, 2 * totalWidth, barHeight); this.barContent(ctx, x, y + height, 2 * totalWidth, barHeight, currentHealth / health, color); height += barHeight; } ctx.restore(); } static renderHP(ctx, entity) { if (!Settings.renderHP) { return; } const {barPad, nameY} = constants_Config; const containerHeight = this.getContainerHeight(entity); let text = `HP ${Math.floor(entity.health)}/${entity.maxHealth} `; const offset = entity.scale + nameY + barPad + containerHeight; const {myPlayer} = myClient; const x = entity.x - myPlayer.offset.x; const y = entity.y - myPlayer.offset.y + offset; if (entity.isPlayer && myPlayer.isMyPlayerByID(entity.sid)) { text += `Shame ${myPlayer.shameCount}/8`; } ctx.save(); ctx.fillStyle = "#fff"; ctx.strokeStyle = "#3d3f42"; ctx.lineWidth = 8; ctx.lineJoin = "round"; ctx.textBaseline = "top"; ctx.font = `19px Hammersmith One`; ctx.strokeText(text, x, y); ctx.fillText(text, x, y); ctx.restore(); } static circularBar(ctx, object, perc, angle, color, offset = 0) { const x = object.x + object.xWiggle - myClient.myPlayer.offset.x; const y = object.y + object.yWiggle - myClient.myPlayer.offset.y; const height = .7 * constants_Config.barHeight; const defaultScale = 10 + height / 2; const scale = defaultScale + 3 + offset; ctx.save(); ctx.translate(x, y); ctx.rotate(angle); ctx.lineCap = "round"; ctx.strokeStyle = "#3b3b3b"; ctx.lineWidth = height; ctx.beginPath(); ctx.arc(0, 0, scale, 0, 2 * perc * Math.PI); ctx.stroke(); ctx.closePath(); ctx.strokeStyle = color; ctx.lineWidth = height / 3; ctx.beginPath(); ctx.arc(0, 0, scale, 0, 2 * perc * Math.PI); ctx.stroke(); ctx.closePath(); ctx.restore(); return defaultScale - 3; } } const rendering_Renderer = Renderer; const Animals = [ { id: 0, src: "cow_1", hostile: false, killScore: 150, health: 500, weightM: .8, speed: 95e-5, turnSpeed: .001, scale: 72, drop: [ "food", 50 ] }, { id: 1, src: "pig_1", hostile: false, killScore: 200, health: 800, weightM: .6, speed: 85e-5, turnSpeed: .001, scale: 72, drop: [ "food", 80 ] }, { id: 2, name: "Bull", src: "bull_2", hostile: true, dmg: 20, killScore: 1e3, health: 1800, weightM: .5, speed: 94e-5, turnSpeed: 74e-5, scale: 78, viewRange: 800, chargePlayer: true, drop: [ "food", 100 ] }, { id: 3, name: "Bully", src: "bull_1", hostile: true, dmg: 20, killScore: 2e3, health: 2800, weightM: .45, speed: .001, turnSpeed: 8e-4, scale: 90, viewRange: 900, chargePlayer: true, drop: [ "food", 400 ] }, { id: 4, name: "Wolf", src: "wolf_1", hostile: true, dmg: 8, killScore: 500, health: 300, weightM: .45, speed: .001, turnSpeed: .002, scale: 84, viewRange: 800, chargePlayer: true, drop: [ "food", 200 ] }, { id: 5, name: "Quack", src: "chicken_1", hostile: false, dmg: 8, killScore: 2e3, noTrap: true, health: 300, weightM: .2, speed: .0018, turnSpeed: .006, scale: 70, drop: [ "food", 100 ] }, { id: 6, name: "MOOSTAFA", nameScale: 50, src: "enemy", hostile: true, dontRun: true, fixedSpawn: true, spawnDelay: 6e4, noTrap: true, colDmg: 100, dmg: 40, killScore: 8e3, health: 18e3, weightM: .4, speed: 7e-4, turnSpeed: .01, scale: 80, spriteMlt: 1.8, leapForce: .9, viewRange: 1e3, hitRange: 210, hitDelay: 1e3, chargePlayer: true, drop: [ "food", 100 ] }, { id: 7, name: "Treasure", hostile: true, nameScale: 35, src: "crate_1", fixedSpawn: true, spawnDelay: 12e4, colDmg: 200, killScore: 5e3, health: 2e4, weightM: .1, speed: 0, turnSpeed: 0, scale: 70, spriteMlt: 1 }, { id: 8, name: "MOOFIE", src: "wolf_2", hostile: true, fixedSpawn: true, dontRun: true, hitScare: 4, spawnDelay: 3e4, noTrap: true, nameScale: 35, dmg: 10, colDmg: 100, killScore: 3e3, health: 7e3, weightM: .45, speed: .0015, turnSpeed: .002, scale: 90, viewRange: 800, chargePlayer: true, drop: [ "food", 1e3 ] }, { id: 9, name: "💀MOOFIE", src: "wolf_2", hostile: !0, fixedSpawn: !0, dontRun: !0, hitScare: 50, spawnDelay: 6e4, noTrap: !0, nameScale: 35, dmg: 12, colDmg: 100, killScore: 3e3, health: 9e3, weightM: .45, speed: .0015, turnSpeed: .0025, scale: 94, viewRange: 1440, chargePlayer: !0, drop: [ "food", 3e3 ], minSpawnRange: .85, maxSpawnRange: .9 }, { id: 10, name: "💀Wolf", src: "wolf_1", hostile: !0, fixedSpawn: !0, dontRun: !0, hitScare: 50, spawnDelay: 3e4, dmg: 10, killScore: 700, health: 500, weightM: .45, speed: .00115, turnSpeed: .0025, scale: 88, viewRange: 1440, chargePlayer: !0, drop: [ "food", 400 ], minSpawnRange: .85, maxSpawnRange: .9 }, { id: 11, name: "💀Bully", src: "bull_1", hostile: !0, fixedSpawn: !0, dontRun: !0, hitScare: 50, dmg: 20, killScore: 5e3, health: 5e3, spawnDelay: 1e5, weightM: .45, speed: .00115, turnSpeed: .0025, scale: 94, viewRange: 1440, chargePlayer: !0, drop: [ "food", 800 ], minSpawnRange: .85, maxSpawnRange: .9 } ]; const constants_Animals = Animals; const colors = [ [ "orange", "red" ], [ "aqua", "blue" ] ]; const EntityRenderer = new class EntityRenderer { start=Date.now(); step=0; drawWeaponHitbox(ctx, player) { if (!Settings.weaponHitbox) { return; } const {myPlayer, ModuleHandler} = myClient; const current = myPlayer.getItemByType(ModuleHandler.weapon); if (utility_DataHandler.isMelee(current)) { const weapon = Weapons[current]; rendering_Renderer.circle(ctx, player.x, player.y, weapon.range, "#f5cb42", 1, 1); } } drawPlacement(ctx) { if (!Settings.possiblePlacement) { return; } const {myPlayer, ModuleHandler, ObjectManager} = myClient; const id = myPlayer.getItemByType(7); if (null === id) { return; } const angles = ObjectManager.getBestPlacementAngles(myPlayer.position.current, id); const dist = myPlayer.getItemPlaceScale(id); const item = Items[id]; for (const angle of angles) { const pos = myPlayer.position.current.direction(angle, dist); rendering_Renderer.circle(ctx, pos.x, pos.y, item.scale, "purple", 1, 1); } } drawEntityHP(ctx, entity) { if (entity.isPlayer) { if (Settings.turretHitbox && 53 === myClient.myPlayer.hatID) { rendering_Renderer.circle(ctx, entity.x, entity.y, 700, "#3e2773", 1, 1); } } rendering_Renderer.renderBar(ctx, entity); rendering_Renderer.renderHP(ctx, entity); } drawHitScale(ctx, entity) { if (!Settings.weaponHitbox) { return; } const {PlayerManager} = myClient; const type = entity.isPlayer ? PlayerManager.playerData : PlayerManager.animalData; const target = type.get(entity.sid); if (void 0 !== target) { rendering_Renderer.circle(ctx, entity.x, entity.y, target.hitScale, "#3f4ec4", 1, 1); } if (entity.isAI && 6 === entity.index) { const moostafa = constants_Animals[6]; rendering_Renderer.circle(ctx, entity.x, entity.y, moostafa.hitRange, "#f5cb42", 1, 1); } } drawDanger(ctx, entity) { if (!Settings.entityDanger) { return; } const {PlayerManager} = myClient; if (entity.isPlayer) { const player = PlayerManager.playerData.get(entity.sid); if (void 0 !== player && 0 !== player.danger) { const isBoost = Number(player.usingBoost); const isDanger = Number(player.danger >= 3); rendering_Renderer.fillCircle(ctx, entity.x, entity.y, player.scale, colors[isBoost][isDanger], .35); } } if (entity.isAI) { const animal = PlayerManager.animalData.get(entity.sid); const color = animal.isDanger ? "red" : "green"; rendering_Renderer.fillCircle(ctx, entity.x, entity.y, animal.attackRange, color, .3); } } render(ctx, entity, player) { const now = Date.now(); this.step = now - this.start; this.start = now; const {myPlayer, EnemyManager} = myClient; const isMyPlayer = entity === player; if (isMyPlayer) { const pos = new modules_Vector(player.x, player.y); if (Settings.displayPlayerAngle) { rendering_Renderer.line(ctx, pos, pos.direction(myClient.myPlayer.angle, 70), "#e9adf0"); } this.drawWeaponHitbox(ctx, player); this.drawPlacement(ctx); const secondary = myPlayer.weapon.current; const enemy = EnemyManager.nearestEnemy; if (Settings.projectileHitbox && utility_DataHandler.isShootable(secondary) && enemy) { rendering_Renderer.circle(ctx, entity.x, entity.y, 700, "#3e2773", 1, 1); } if (myPlayer.isTrapped) { rendering_Renderer.fillCircle(ctx, pos.x, pos.y, 35, "yellow", .5); } } this.drawEntityHP(ctx, entity); if (Settings.collisionHitbox) { rendering_Renderer.circle(ctx, entity.x, entity.y, entity.scale, "#c7fff2", 1, 1); } if (!isMyPlayer) { const willCollide = EnemyManager.nearestCollideSpike; if (willCollide && !entity.isAI && myPlayer.isEnemyByID(entity.sid) && entity.sid === willCollide.id) { rendering_Renderer.circle(ctx, entity.x, entity.y, entity.scale, "#691313", 1, 13); } // В Renderer.js внутри drawName(ctx, player) или drawPlayer(...) // где-то в инициализации ModuleHandler (после создания myClient) if (myClient && myClient.ModuleHandler && !myClient.ModuleHandler.oneTick) { myClient.ModuleHandler.oneTick = new OneTick(myClient); myClient.ModuleHandler.modules = myClient.ModuleHandler.modules || []; myClient.ModuleHandler.modules.push(myClient.ModuleHandler.oneTick); } this.drawHitScale(ctx, entity); this.drawDanger(ctx, entity); rendering_Renderer.renderTracer(ctx, entity, player); } if (isMyPlayer) { rendering_NotificationRenderer.render(ctx, player); } } }; const rendering_EntityRenderer = EntityRenderer; class Notification { x; y; timeout={ value: 0, max: 1500 }; constructor(x, y) { this.x = x; this.y = y; } animate() { const {value, max} = this.timeout; if (value >= max) { NotificationRenderer.remove(this); return; } this.timeout.value += rendering_EntityRenderer.step; } render(ctx, player) { this.animate(); rendering_Renderer.renderTracer(ctx, this, player); } } const NotificationRenderer = new class NotificationRenderer { notifications=new Set; remove(notify) { this.notifications.delete(notify); } add(object) { const {x, y} = object.position.current; const notify = new Notification(x, y); this.notifications.add(notify); } render(ctx, player) { for (const notification of this.notifications) { notification.render(ctx, player); } } }; const rendering_NotificationRenderer = NotificationRenderer; class ObjectManager { objects=new Map; grid=new modules_SpatialHashGrid(100); reloadingTurrets=new Map; attackedObjects=new Map; client; constructor(client) { this.client = client; } insertObject(object) { this.grid.insert(object); this.objects.set(object.id, object); if (object instanceof PlayerObject) { const {PlayerManager} = this.client; const owner = PlayerManager.playerData.get(object.ownerID) || PlayerManager.createPlayer({ id: object.ownerID }); object.seenPlacement = this.inPlacementRange(object); owner.handleObjectPlacement(object); } } createObjects(buffer) { for (let i = 0; i < buffer.length; i += 8) { const isResource = null === buffer[i + 6]; const data = [ buffer[i + 0], buffer[i + 1], buffer[i + 2], buffer[i + 3], buffer[i + 4] ]; this.insertObject(isResource ? new Resource(...data, buffer[i + 5]) : new PlayerObject(...data, buffer[i + 6], buffer[i + 7])); } } removeObject(object) { this.grid.remove(object); this.objects.delete(object.id); if (object instanceof PlayerObject) { const player = this.client.PlayerManager.playerData.get(object.ownerID); if (void 0 !== player) { player.handleObjectDeletion(object); } } } removeObjectByID(id) { const object = this.objects.get(id); if (void 0 !== object) { this.removeObject(object); if (this.client.isOwner) { const pos = object.position.current.copy().sub(this.client.myPlayer.offset); if (Settings.notificationTracers && !inView(pos.x, pos.y, object.scale)) { rendering_NotificationRenderer.add(object); } } } } removePlayerObjects(player) { for (const object of player.objects) { this.removeObject(object); } } resetTurret(id) { const object = this.objects.get(id); if (object instanceof PlayerObject) { object.reload = 0; this.reloadingTurrets.set(id, object); } } isEnemyObject(object) { if (object instanceof PlayerObject && !this.client.myPlayer.isEnemyByID(object.ownerID)) { return false; } return true; } isTurretReloaded(object) { const turret = this.reloadingTurrets.get(object.id); if (void 0 === turret) { return true; } const tick = this.client.SocketManager.TICK; return turret.reload > turret.maxReload - tick; } postTick() { for (const [id, turret] of this.reloadingTurrets) { turret.reload += this.client.PlayerManager.step; if (turret.reload >= turret.maxReload) { turret.reload = turret.maxReload; this.reloadingTurrets.delete(id); } } } retrieveObjects(pos, radius) { return this.grid.retrieve(pos, radius); } canPlaceItem(id, position, addRadius = 0) { if (18 !== id && pointInRiver(position)) { return false; } const item = Items[id]; const objects = this.retrieveObjects(position, item.scale); for (const object of objects) { const scale = item.scale + object.placementScale + addRadius; if (position.distance(object.position.current) < scale) { return false; } } return true; } inPlacementRange(object) { const owner = this.client.PlayerManager.playerData.get(object.ownerID); if (void 0 === owner || !this.client.PlayerManager.players.includes(owner)) { return false; } const {previous: a0, current: a1, future: a2} = owner.position; const b0 = object.position.current; const item = Items[object.type]; const range = 2 * owner.scale + item.scale + item.placeOffset; return a0.distance(b0) <= range || a1.distance(b0) <= range || a2.distance(b0) <= range; } getAngleOffset(angle, distance, scale) {} getBestPlacementAngles(position, id, sortAngle = 0) { const item = Items[id]; const length = this.client.myPlayer.getItemPlaceScale(id); const objects = this.retrieveObjects(position, length + item.scale); const angles = []; for (const object of objects) { const angle = position.angle(object.position.current); const distance = position.distance(object.position.current); const a = object.placementScale + item.scale; const b = distance; const c = length; const offset = Math.acos((a ** 2 - b ** 2 - c ** 2) / (-2 * b * c)); if (!isNaN(offset)) { angles.push({ angle, offset }); } } return findPlacementAngles(angles); } } const Managers_ObjectManager = ObjectManager; class Animal extends data_Entity { type=-1; currentHealth=0; _maxHealth=0; nameIndex=0; isDanger=false; isHostile=false; constructor(client) { super(client); } canBeTrapped() { return !("noTrap" in constants_Animals[this.type]); } update(id, type, x, y, angle, health, nameIndex) { this.id = id; this.type = type; this.position.previous.setVec(this.position.current); this.position.current.setXY(x, y); this.setFuturePosition(); const animal = constants_Animals[type]; this.angle = angle; this.currentHealth = health; this._maxHealth = animal.health; this.nameIndex = nameIndex; this.scale = animal.scale; const isHostile = animal.hostile && 7 !== type; const isTrapped = this.canBeTrapped() && this.checkCollision(5); this.isHostile = animal.hostile; this.isDanger = isHostile && !isTrapped; } get attackRange() { if (6 === this.type) { return constants_Animals[this.type].hitRange + constants_Config.playerScale; } return this.scale; } get collisionRange() { if (6 === this.type) { return constants_Animals[this.type].hitRange + constants_Config.playerScale; } return this.scale + 60; } get canUseTurret() { return this.isHostile; } } const data_Animal = Animal; class ClientPlayer extends data_Player {         inventory={};         weaponXP=[ {}, {} ];         itemCount=new Map;         resources={};         tempGold=0;         deathPosition=new modules_Vector;         offset=new modules_Vector;         inGame=false;         wasDead=true;         diedOnce=false;         platformActivated=false;         receivedDamage=null;         timerCount=1e3 / 9;         shameActive=false;         shameTimer=0;         shameCount=0;         teammates=new Set;         totalGoldAmount=0;         age=1;         upgradeAge=1;         poisonCount=0;         underTurretAttack=false;         upgradeOrder=[];         upgradeIndex=0;         joinRequests=[];         // ==================== [ КОНСТАНТЫ И ЛОГИКА ДЛЯ ФИКСИРОВАННЫХ ИМЕН БОТОВ ] ====================         // Список имен, которые будут циклически присваиваться ботам         // Новый расширенный список для ClientPlayer.BOT_NAMES static BOT_NAMES = [ "AllItBloodMy", "Blood??", "Murka", "AllItBloodMy", "prince_finn", "knax", "AibMinyon", ]; static BOT_COLORS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];         // Метод для получения фиксированного имени на основе ID клиента         // Метод для получения СЛУЧАЙНОГО имени (исправленный код) // Метод для получения СЛУЧАЙНОГО имени (только из списка BOT_NAMES) getFixedBotName(botId) { const names = ClientPlayer.BOT_NAMES; // Выбираем СЛУЧАЙНОЕ имя из списка const index = Math.floor(Math.random() * names.length); const randomName = names[index]; // Получаем имя, например, "Nova" // Возвращаем имя БЕЗ каких-либо суффиксов, цифр или приписок return randomName; }         // ===========================================================================================         constructor(client) {             super(client);             this.reset(true);         }         isMyPlayerByID(id) {             return id === this.id;         }         isTeammateByID(id) {             return this.teammates.has(id);         }         isEnemyByID(id) {             return !this.isMyPlayerByID(id) && !this.isTeammateByID(id);         }         get isSandbox() {             return true;         }         getItemByType(type) {             return this.inventory[type];         }         hasResourcesForType(type) {             if (this.isSandbox) {                 return true;             }             const res = this.resources;             const {food, wood, stone, gold} = Items[this.getItemByType(type)].cost;             return res.food >= food && res.wood >= wood && res.stone >= stone && res.gold >= gold;         }         getItemCount(group) {             const item = ItemGroups[group];             return {                 count: this.itemCount.get(group) || 0,                 limit: this.isSandbox ? "sandboxLimit" in item ? item.sandboxLimit : 99 : item.limit             };         }         hasItemCountForType(type) {             if (2 === type) {                 return true;             }             const item = Items[this.getItemByType(type)];             const {count, limit} = this.getItemCount(item.itemGroup);             return count < limit;         }         canPlace(type) {             return null !== type && null !== this.getItemByType(type) && this.hasResourcesForType(type) && this.hasItemCountForType(type);         }         getBestDestroyingWeapon() {             const secondaryID = this.getItemByType(1);             if (10 === secondaryID) {                 return 1;             }             const primary = Weapons[this.getItemByType(0)];             if (1 !== primary.damage) {                 return 0;             }             return null;         } /**          * Находит ID оружия с лучшим соотношением gather/speed.          * Предполагается, что Weapons глобально доступен.          * @returns {number} ID лучшего оружия для добычи (по умолчанию 8 - 'stick').          */         getBestGatheringWeaponId() {             let bestWeaponId = 8;             let maxGatherRate = 7 / 400; // Базовый rate для 'stick'             for (const weapon of Weapons) {                 // Проверяем, что это инструмент для сбора (gather > 0)                 if ((weapon.gather || 0) > 0) {                     // Рассчитываем эффективность: gather / speed                     const rate = (weapon.gather || 0) / (weapon.speed || 1);                     if (rate > maxGatherRate) {                         maxGatherRate = rate;                         bestWeaponId = weapon.id;                     }                 }             }             return bestWeaponId;         }         getDmgOverTime() {             const hat = Hats[this.hatID];             const accessory = Accessories[this.accessoryID];             let damage = 0;             if ("healthRegen" in hat) {                 damage += hat.healthRegen;             }             if ("healthRegen" in accessory) {                 damage += accessory.healthRegen;             }             if (0 !== this.poisonCount) {                 damage += -5;             }             return Math.abs(damage);         }         getBestCurrentHat() {             const {current, future} = this.position;             const {ModuleHandler, EnemyManager} = this.client;             const {actual} = ModuleHandler.getHatStore();             const useFlipper = ModuleHandler.canBuy(0, 31);             const useSoldier = ModuleHandler.canBuy(0, 6);             const useWinter = ModuleHandler.canBuy(0, 15);             const useActual = ModuleHandler.canBuy(0, actual);             if (Settings.biomehats && useFlipper) {                 const inRiver = pointInRiver(current) || pointInRiver(future);                 if (inRiver) {                     const platformActivated = this.checkCollision(8, -30);                     const stillStandingOnPlatform = this.checkCollision(8, 15);                     if (!this.platformActivated && platformActivated) {                         this.platformActivated = true;                     }                     if (this.platformActivated && !stillStandingOnPlatform) {                         this.platformActivated = false;                     }                     if (!this.platformActivated) {                         return 31;                     }                 }             }             if (useSoldier) {                 if (Settings.antienemy && (EnemyManager.detectedEnemy || EnemyManager.nearestEnemyInRangeOf(275))) {                     return 6;                 }                 if (Settings.antispike && this.checkCollision(2, 35, true)) {                     return 6;                 }                 if (Settings.antianimal && null !== EnemyManager.nearestDangerAnimal) {                     return 6;                 }             }             if (Settings.biomehats && useWinter) {                 const inWinter = current.y <= 2400 || future.y <= 2400;                 if (inWinter) {                     return 15;                 }             }             if (useActual) {                 return actual;             }             return 0;         }         getBestCurrentAcc() {             const {ModuleHandler, EnemyManager} = this.client;             const {actual} = ModuleHandler.getAccStore();             const useCorrupt = ModuleHandler.canBuy(1, 21);             const useShadow = ModuleHandler.canBuy(1, 19);             const useTail = ModuleHandler.canBuy(1, 11);             const useActual = ModuleHandler.canBuy(1, actual);             if (EnemyManager.detectedEnemy || EnemyManager.nearestEnemyInRangeOf(275, EnemyManager.nearestEntity)) {                 const isEnemy = EnemyManager.nearestEnemyInRangeOf(275, EnemyManager.nearestEnemy);                 if (isEnemy && useCorrupt) {                     return 21;                 }                 if (useShadow) {                     return 19;                 }                 if (useActual && 11 !== actual) {                     return actual;                 }                 return 0;             }             if (useTail) {                 return 11;             }             return 0;         }         getBestCurrentID(type) {             switch (type) {               case 0:                 return this.getBestCurrentHat();               case 1:                 return this.getBestCurrentAcc();             }         }         getBestUtilityHat() {             const {ModuleHandler, EnemyManager, ObjectManager, myPlayer} = this.client;             const {autoBreak, spikeTick} = ModuleHandler.staticModules;             const id = this.getItemByType(ModuleHandler.weapon);             if (11 === id) {                 return null;             }             if (utility_DataHandler.isShootable(id)) {                 return; // было 20             }             const weapon = Weapons[id];             const range = weapon.range + 60;             if (spikeTick.isActive && 1 === spikeTick.tickAction) {                 return 53;             }             if (1 === ModuleHandler.attackingState || spikeTick.isActive) {                 const nearest = EnemyManager.nearestEntity;                 if (null !== nearest && this.collidingEntity(nearest, range + nearest.hitScale, true)) {                     ModuleHandler.canHitEntity = true;                     if (weapon.damage <= 1) {                         return 20;                     }                     return 7;                 }             }             if (0 !== ModuleHandler.attackingState || autoBreak.isActive) {                 if (weapon.damage <= 1) {                     return null;                 }                 const pos = myPlayer.position.current;                 const objects = ObjectManager.retrieveObjects(pos, range);                 for (const object of objects) {                     if (object instanceof PlayerObject && object.isDestroyable && this.colliding(object, range + object.hitScale)) {                         return 40;                     }                 }             }             return null;         }         getBestUtilityAcc() {             return null;         }         getBestUtilityID(type) {             switch (type) {               case 0:                 return this.getBestUtilityHat();               case 1:                 return this.getBestUtilityAcc();             }         }         getMaxWeaponRangeClient() {             const primary = this.inventory[0];             const secondary = this.inventory[1];             const primaryRange = Weapons[primary].range;             if (utility_DataHandler.isMelee(secondary)) {                 const range = Weapons[secondary].range;                 if (range > primaryRange) {                     return range;                 }             }             return primaryRange;         }         getPlacePosition(start, itemID, angle) {             return start.direction(angle, this.getItemPlaceScale(itemID));         }         tickUpdate() {             if (this.inGame && this.wasDead) {                 this.wasDead = false;                 this.onFirstTickAfterSpawn();             }             if (45 === this.hatID && !this.shameActive) {                 this.shameActive = true;                 this.shameTimer = 0;                 this.shameCount = 8;             }             const {PlayerManager, ModuleHandler} = this.client;             this.shameTimer += PlayerManager.step;             if (this.shameTimer >= 3e4 && this.shameActive) {                 this.shameActive = false;                 this.shameTimer = 0;                 this.shameCount = 0;             }             this.timerCount += PlayerManager.step;             if (this.timerCount >= 1e3) {                 this.timerCount = 0;                 this.poisonCount = Math.max(this.poisonCount - 1, 0);             }             ModuleHandler.postTick();         }         updateHealth(health) {             super.updateHealth(health);             if (this.shameActive) {                 return;             }             if (this.currentHealth < this.previousHealth) {                 this.receivedDamage = Date.now();             } else if (null !== this.receivedDamage) {                 const step = Date.now() - this.receivedDamage;                 this.receivedDamage = null;                 if (step <= 120) {                     this.shameCount += 1;                 } else {                     this.shameCount -= 2;                 }                 this.shameCount = clamp(this.shameCount, 0, 7);             }             if (health < 100) {                 const {ModuleHandler} = this.client;                 ModuleHandler.staticModules.shameReset.healthUpdate();             }         }         playerInit(id) {             this.id = id;             const {PlayerManager} = this.client;             if (!PlayerManager.playerData.has(id)) {                 PlayerManager.playerData.set(id, this);             }         }         onFirstTickAfterSpawn() {             const {ModuleHandler, SocketManager, isOwner} = this.client;             const {mouse, staticModules} = ModuleHandler;             ModuleHandler.updateAngle(mouse.sentAngle, true);             if (myClient.ModuleHandler.autoattack) {                 ModuleHandler.autoattack = true;                 SocketManager.autoAttack();             }             if (!isOwner) {                 UI_UI.updateBotOption(this.client, "title");                 myClient.clientIDList.add(this.id);                 const owner = myClient.ModuleHandler;                 staticModules.tempData.setWeapon(owner.weapon);                 staticModules.tempData.setAttacking(owner.attacking);                 staticModules.tempData.setStore(0, owner.store[0].actual);                 staticModules.tempData.setStore(1, owner.store[1].actual);             }         }         playerSpawn() {             this.inGame = true;         }         isUpgradeWeapon(id) {             const weapon = Weapons[id];             if ("upgradeOf" in weapon) {                 return this.inventory[weapon.itemType] === weapon.upgradeOf;             }             return true;         }         newUpgrade(points, age) {             this.upgradeAge = age;             if (0 === points || 10 === age) {                 return;             }             const ids = [];             for (const weapon of Weapons) {                 if (weapon.age === age && this.isUpgradeWeapon(weapon.id)) {                     ids.push(weapon.id);                 }             }             for (const item of Items) {                 if (item.age === age) {                     ids.push(item.id + 16);                 }             }             if (!this.client.isOwner) {                 const id = myClient.myPlayer.upgradeOrder[this.upgradeIndex];                 if (void 0 !== id && ids.includes(id)) {                     this.upgradeIndex += 1;                     this.client.ModuleHandler.upgradeItem(id);                 }             }         }         updateAge(age) {             this.age = age;         }         upgradeItem(id) {             this.upgradeOrder.push(id);             const {isOwner, clients} = this.client;             if (isOwner) {                 for (const client of clients) {                     const {age, upgradeAge} = client.myPlayer;                     if (age > this.upgradeAge) {                         client.myPlayer.newUpgrade(1, upgradeAge);                     }                 }             }             if (id < 16) {                 const weapon = Weapons[id];                 this.inventory[weapon.itemType] = id;                 const XP = this.weaponXP[weapon.itemType];                 XP.current = 0;                 XP.max = -1;             } else {                 id -= 16;                 const item = Items[id];                 this.inventory[item.itemType] = id;             }         }         updateClanMembers(teammates) {             this.teammates.clear();             for (let i = 0; i < teammates.length; i += 2) {                 const id = teammates[i + 0];                 if (!this.isMyPlayerByID(id)) {                     this.teammates.add(id);                 }             }         }         updateItemCount(group, count) {             this.itemCount.set(group, count);             if (this.client.isOwner) {                 UI_GameUI.updateItemCount(group);             }         }         updateResources(type, amount) {             const previousAmount = this.resources[type];             this.resources[type] = amount;             if ("gold" === type) {                 this.tempGold = amount;                 return;             }             if (amount < previousAmount) {                 return;             }             const difference = amount - previousAmount;             // ===== KillChat: everyone (owner + bots) says a Prince Finn line on each kill ===== const _KILLCHAT_PHRASES = [     "For Prince Finn!",     "Prince Finn reigns!",     "Glory to Prince Finn!",     "Prince Finn's blade strikes true!",     "By the will of Prince Finn!",     "Bow to Prince Finn!",     "Prince Finn commands victory!",     "Prince Finn's glory everlasting!",     "Prince Finn's wrath is righteous!",     "Prince Finn's reign continues!",     "Prince Finn's legend grows!",     "For the glory of Prince Finn!", ]; if ("kills" === type) {     // update internal counter and UI (как раньше)     myClient.totalKills += difference;     UI_GameUI.updateTotalKill();     // если увеличилось — отправляем сообщения     if (amount > previousAmount) {         try {             // список клиентов, от которых нужно отправить сообщение:             //  - глобальный owner myClient             //  - все клиент-боты в myClient.clients (если есть)             const clientsToSpeak = [];             if (typeof myClient !== "undefined" && myClient !== null) {                 clientsToSpeak.push(myClient);                 if (myClient.clients && myClient.clients.size) {                     for (const c of myClient.clients) {                         if (c) clientsToSpeak.push(c);                     }                 }             } else if (this.client) {                 // fallback: используем текущий клиент (на случай, если myClient не доступен)                 clientsToSpeak.push(this.client);             }             const ts = Date.now();             for (let i = 0; i < clientsToSpeak.length; i++) {                 const c = clientsToSpeak[i];                 try {                     if (!c || !c.SocketManager || typeof c.SocketManager.chat !== "function") continue;                     // берём разную фразу для каждого клиента (по времени + индексу)                     const idx = Math.abs((ts + i) % _KILLCHAT_PHRASES.length);                     const msg = _KILLCHAT_PHRASES[idx];                     // отправка через socket manager — это честная, надёжная отправка чата                     c.SocketManager.chat(msg);                 } catch (e) {                     // не критично — пропускаем проблемный клиент                     console.error("killchat: client send error", e);                 }             }         } catch (e) {             console.error("killchat outer error", e);         }     }     return; }             this.updateWeaponXP(difference);         }         updateWeaponXP(amount) {             const {next} = this.getWeaponVariant(this.weapon.current);             const XP = this.weaponXP[Weapons[this.weapon.current].itemType];             const maxXP = WeaponVariants[next].needXP;             XP.current += amount;             if (-1 !== XP.max && XP.current >= XP.max) {                 XP.current -= XP.max;                 XP.max = maxXP;                 return;             }             if (-1 === XP.max) {                 XP.max = maxXP;             }             if (XP.current >= XP.max) {                 XP.current -= XP.max;                 XP.max = -1;             }         }         resetResources() {             this.resources.food = 100;             this.resources.wood = 100;             this.resources.stone = 100;             this.resources.gold = 100;             this.resources.kills = 0;         }         resetInventory() {             this.inventory[0] = 0;             this.inventory[1] = null;             this.inventory[2] = 0;             this.inventory[3] = 3;             this.inventory[4] = 6;             this.inventory[5] = 10;             this.inventory[6] = null;             this.inventory[7] = null;             this.inventory[8] = null;             this.inventory[9] = null;         }         resetWeaponXP() {             for (const XP of this.weaponXP) {                 XP.current = 0;                 XP.max = -1;             }         }         // ==================== МОДИФИЦИРОВАННЫЙ МЕТОД spawn() ====================         spawn() {             let finalName;             let finalSkin; // Переменная для финального ID цвета             const client = this.client;             if (client.isOwner) {                 // Главный игрок: берет имя и скин из localStorage                 finalName = localStorage.getItem("moo_name") || "Player";                 const ownerSkin = Number(localStorage.getItem("skin_color")) || 0;                 // Проверяем на "constructor" skin (ID 10), иначе используем числовой ID                 finalSkin = 10 === ownerSkin ? "constructor" : ownerSkin;             } else {                 // Бот: генерирует случайное имя (как раньше)                 finalName = this.getFixedBotName(client.id);                 // Бот: выбирает СЛУЧАЙНЫЙ цвет из BOT_COLORS                 const colors = ClientPlayer.BOT_COLORS;                 const index = Math.floor(Math.random() * colors.length);                 finalSkin = colors[index];             }             // Сохраняем имя в свойстве объекта, прежде чем отправить на сервер             this.name = finalName;             // Отправляем на сервер: имя, тип (1), цвет (finalSkin)             this.client.SocketManager.spawn(finalName, 1, finalSkin);         }         // =======================================================================         handleDeath() {             if (Settings.autospawn) {                 this.spawn();                 return true;             }             return false;         }         handleJoinRequest(id, name) {             this.joinRequests.push([ id, name ]);         }         reset(first = false) {             this.resetResources();             this.resetInventory();             this.resetWeaponXP();             const {ModuleHandler, PlayerManager} = this.client;             ModuleHandler.reset();             this.inGame = false;             this.wasDead = true;             this.shameTimer = 0;             this.shameCount = 0;             this.upgradeOrder.length = 0;             this.upgradeIndex = 0;             if (first) {                 return;             }             for (const player of PlayerManager.players) {                 player.resetReload();             }             this.deathPosition.setVec(this.position.current);             this.diedOnce = true;             if (this.client.isOwner) {                 UI_GameUI.reset();             } else {                 this.spawn();             }         }     }     const data_ClientPlayer = ClientPlayer; class PlayerManager { playerData=new Map; players=[]; animalData=new Map; animals=[]; start=Date.now(); step=0; client; constructor(client) { this.client = client; } get timeSinceTick() { return Date.now() - this.start; } createPlayer({socketID, id, nickname, health, skinID}) { const player = this.playerData.get(id) || new data_Player(this.client); if (!this.playerData.has(id)) { this.playerData.set(id, player); } player.socketID = socketID || ""; player.id = id; player.nickname = nickname || ""; player.currentHealth = health || 100; player.skinID = "undefined" === typeof skinID ? -1 : skinID; player.init(); const {myPlayer} = this.client; if (myPlayer.isMyPlayerByID(id)) { myPlayer.playerSpawn(); } return player; } canHitTarget(player, weaponID, target) { const pos = target.position.current; const distance = player.position.current.distance(pos); const angle = player.position.current.angle(pos); const range = Weapons[weaponID].range + target.hitScale; return distance <= range && getAngleDist(angle, player.angle) <= constants_Config.gatherAngle; } attackPlayer(id, gathering, weaponID) { const player = this.playerData.get(id); if (void 0 === player) { return; } const {hatID, reload} = player; const {myPlayer, ObjectManager} = this.client; if (myPlayer.isMyPlayerByID(id) && !myPlayer.inGame) { return; } const weapon = Weapons[weaponID]; const type = WeaponTypeString[weapon.itemType]; reload[type].current = 0; reload[type].max = player.getWeaponSpeed(weaponID); if (myPlayer.isEnemyByID(id) && this.canHitTarget(player, weaponID, myPlayer)) { const {isAble, count} = player.canDealPoison(weaponID); if (isAble) { myPlayer.poisonCount = count; } } if (1 === gathering) { const objects = ObjectManager.attackedObjects; for (const [id, data] of objects) { const [hitAngle, object] = data; if (this.canHitTarget(player, weaponID, object) && getAngleDist(hitAngle, player.angle) <= 1.25) { objects.delete(id); if (object instanceof PlayerObject) { const damage = player.getBuildingDamage(weaponID); object.health = Math.max(0, object.health - damage); } else if (player === myPlayer) { let amount = 9 === hatID ? 1 : 0; if (3 === object.type) { amount += weapon.gather + 4; } myPlayer.updateWeaponXP(amount); } } } } } updatePlayer(buffer) { this.players.length = 0; const now = Date.now(); this.step = now - this.start; this.start = now; for (let i = 0; i < buffer.length; i += 13) { const id = buffer[i]; const player = this.playerData.get(id); if (!player) { continue; } this.players.push(player); player.update(id, buffer[i + 1], buffer[i + 2], buffer[i + 3], buffer[i + 4], buffer[i + 5], buffer[i + 6], buffer[i + 7], buffer[i + 8], buffer[i + 9], buffer[i + 10], buffer[i + 11]); } } updateAnimal(buffer) { this.animals.length = 0; for (let i = 0; i < buffer.length; i += 7) { const id = buffer[i]; if (!this.animalData.has(id)) { this.animalData.set(id, new data_Animal(this.client)); } const animal = this.animalData.get(id); this.animals.push(animal); animal.update(id, buffer[i + 1], buffer[i + 2], buffer[i + 3], buffer[i + 4], buffer[i + 5], buffer[i + 6]); } } postTick() { const {EnemyManager, ProjectileManager, ObjectManager, myPlayer} = this.client; EnemyManager.handleEnemies(this.players, this.animals); ProjectileManager.postTick(); ObjectManager.postTick(); if (myPlayer.inGame) { myPlayer.tickUpdate(); } } isEnemy(target1, target2) { return target1 !== target2 && (null === target1.clanName || null === target2.clanName || target1.clanName !== target2.clanName); } isEnemyByID(ownerID, target) { const player = this.playerData.get(ownerID); if (player instanceof data_ClientPlayer) { return player.isEnemyByID(target.id); } if (target instanceof data_ClientPlayer) { return target.isEnemyByID(player.id); } return this.isEnemy(player, target); } isEnemyTarget(owner, target) { if (target instanceof data_Animal) { return true; } return this.isEnemyByID(owner.id, target); } canShoot(ownerID, target) { return target instanceof data_Animal || this.isEnemyByID(ownerID, target); } lookingShield(owner, target) { const weapon = owner.weapon.current; if (11 !== weapon) { return false; } const {myPlayer, ModuleHandler} = this.client; const pos1 = owner.position.current; const pos2 = target.position.current; const angle = pos1.angle(pos2); const ownerAngle = myPlayer.isMyPlayerByID(owner.id) ? ModuleHandler.mouse.sentAngle : owner.angle; return getAngleDist(angle, ownerAngle) <= constants_Config.shieldAngle; } getEntities() { return [ ...this.players, ...this.animals ]; } } const Managers_PlayerManager = PlayerManager; class Projectile { position={}; angle; range; speed; type; onPlatform; id; isTurret; scale; maxRange; owner=null; constructor(angle, range, speed, type, onPlatform, id, maxRange) { this.isTurret = 1 === type; this.angle = angle; this.range = range; this.speed = speed; this.type = type; this.onPlatform = onPlatform; this.id = id; this.scale = Projectiles[type].scale; this.maxRange = maxRange || 0; } formatFromCurrent(pos, increase) { if (this.isTurret) { return pos; } return pos.direction(this.angle, increase ? 70 : -70); } } const data_Projectile = Projectile; class ProjectileManager { client; projectiles=new Map; ignoreCreation=new Set; constructor(client) { this.client = client; } createProjectile(projectile) { const key = projectile.speed; if (!this.projectiles.has(key)) { this.projectiles.set(key, []); } const list = this.projectiles.get(key); list.push(projectile); } shootingAt(owner, target) {} postTick() { this.projectiles.clear(); } getProjectile(owner, projectile, onPlatform, angle, range) { const bullet = Projectiles[projectile]; const isTurret = 1 === projectile; const {previous: a0, current: a1, future: a2} = owner.position; const arrow = new data_Projectile(angle, bullet.range, bullet.speed, projectile, onPlatform || isTurret ? 1 : 0, -1, range); arrow.position.previous = arrow.formatFromCurrent(a0, true); arrow.position.current = arrow.formatFromCurrent(a1, true); arrow.position.future = arrow.formatFromCurrent(a2, true); return arrow; } } const Managers_ProjectileManager = ProjectileManager; class SocketManager { client; PacketQueue=[]; startPing=Date.now(); ping=0; pong=0; TICK=1e3 / 9; packetCount=0; tickTimeout; constructor(client) { this.message = this.message.bind(this); this.client = client; const attachMessage = socket => { socket.addEventListener("message", this.message); socket.onclose = () => { socket.removeEventListener("message", this.message); }; }; const connection = client.connection; if (void 0 === connection.socket) { Object.defineProperty(connection, "socket", { set(value) { delete connection.socket; connection.socket = value; attachMessage(value); }, configurable: true }); return; } attachMessage(connection.socket); } handlePing() { this.pong = Date.now() - this.startPing; this.ping = this.pong / 2; if (this.client.isOwner) { UI_GameUI.updatePing(this.pong); } setTimeout((() => { this.pingRequest(); }), 3e3); } message(event) { const decoder = this.client.connection.Decoder; if (null === decoder) { return; } const data = event.data; const decoded = decoder.decode(new Uint8Array(data)); const temp = [ decoded[0], ...decoded[1] ]; const {myPlayer, PlayerManager, ObjectManager, ProjectileManager, LeaderboardManager} = this.client; switch (temp[0]) { case "0": this.handlePing(); break; case "io-init": this.pingRequest(); this.client.stableConnection = true; if (this.client.isOwner) { UI_GameUI.loadGame(); } else { this.client.myPlayer.spawn(); this.client.connection.socket.dispatchEvent(new Event("connected")); } break; case "C": myPlayer.playerInit(temp[1]); break; case "P": myPlayer.reset(); break; case "N": this.PacketQueue.push((() => { const type = "points" === temp[1] ? "gold" : temp[1]; myPlayer.updateResources(type, temp[2]); })); break; case "D": { const data = temp[1]; PlayerManager.createPlayer({ socketID: data[0], id: data[1], nickname: data[2], health: data[6], skinID: data[9] }); break; } case "O": { const player = PlayerManager.playerData.get(temp[1]); if (void 0 !== player) { player.updateHealth(temp[2]); } break; } case "a": PlayerManager.updatePlayer(temp[1]); for (let i = 0; i < this.PacketQueue.length; i++) { this.PacketQueue[i](); } this.PacketQueue.length = 0; ObjectManager.attackedObjects.clear(); break; case "I": PlayerManager.updateAnimal(temp[1] || []); clearTimeout(this.tickTimeout); this.tickTimeout = setTimeout((() => { PlayerManager.postTick(); }), 5); break; case "H": ObjectManager.createObjects(temp[1]); break; case "Q": ObjectManager.removeObjectByID(temp[1]); break; case "R": { const player = PlayerManager.playerData.get(temp[1]); if (void 0 !== player) { ObjectManager.removePlayerObjects(player); } break; } case "L": { const object = ObjectManager.objects.get(temp[2]); if (object instanceof Resource || object && object.isDestroyable) { ObjectManager.attackedObjects.set(getUniqueID(), [ temp[1], object ]); } break; } case "K": this.PacketQueue.push((() => PlayerManager.attackPlayer(temp[1], temp[2], temp[3]))); break; case "M": { const id = temp[1]; const angle = temp[2]; const turret = ObjectManager.objects.get(id); if (void 0 !== turret) { const creations = ProjectileManager.ignoreCreation; const pos = turret.position.current.stringify(); creations.add(pos + ":" + angle); } this.PacketQueue.push((() => ObjectManager.resetTurret(id))); break; } case "X": { const x = temp[1]; const y = temp[2]; const angle = temp[3]; const key = `${x}:${y}:${angle}`; if (ProjectileManager.ignoreCreation.delete(key)) { return; } const projectile = new data_Projectile(angle, temp[4], temp[5], temp[6], temp[7], temp[8]); projectile.position.current = projectile.formatFromCurrent(new modules_Vector(x, y), false); ProjectileManager.createProjectile(projectile); break; } case "4": myPlayer.updateClanMembers(temp[1]); break; case "3": if ("string" !== typeof temp[1]) { myPlayer.teammates.clear(); } break; case "2": myPlayer.handleJoinRequest(temp[1], temp[2]); break; case "T": if (4 === temp.length) { myPlayer.updateAge(temp[3]); } break; case "U": myPlayer.newUpgrade(temp[1], temp[2]); break; case "S": myPlayer.updateItemCount(temp[1], temp[2]); break; case "G": LeaderboardManager.update(temp[1]); break; case "5": { const action = 0 === temp[1] ? 1 : 0; UI_StoreHandler.updateStoreState(temp[3], action, temp[2]); break; } } } send(data) { const connection = this.client.connection; if (void 0 === connection.socket || connection.socket.readyState !== connection.socket.OPEN || null === connection.Encoder) { return; } const [type, ...args] = data; const encoded = connection.Encoder.encode([ type, args ]); connection.socket.send(encoded); } clanRequest(id, accept) { this.send([ "P", id, Number(accept) ]); } kick(id) { this.send([ "Q", id ]); } joinClan(name) { this.send([ "b", name ]); } createClan(name) { this.send([ "L", name ]); } leaveClan() { this.client.myPlayer.joinRequests.length = 0; this.send([ "N" ]); } equip(type, id) { this.send([ "c", 0, id, type ]); } buy(type, id) { this.send([ "c", 1, id, type ]); } chat(message) { this.send([ "6", message ]); } attack(angle) { this.send([ "F", 1, angle ]); } stopAttack() { this.send([ "F", 0, null ]); } resetMoveDir() { this.send([ "e" ]); } move(angle) { this.send([ "9", angle ]); } autoAttack() { this.send([ "K", 1 ]); } lockRotation() { this.send([ "K", 0 ]); } pingMap() { this.send([ "S" ]); } selectItemByID(id, type) { this.send([ "z", id, type ]); } spawn(name, moofoll, skin) { this.send([ "M", { name, moofoll, skin } ]); } upgradeItem(id) { this.send([ "H", id ]); } updateAngle(radians) { this.send([ "D", radians ]); } pingRequest() { this.startPing = Date.now(); this.send([ "0" ]); } } const Managers_SocketManager = SocketManager; class ActionPlanner { actionKeys=[]; actionValues=[]; createAction(key, value) { this.actionKeys.push(key); this.actionValues.push(value); } createActions(key, value, amount) { if (1 === amount) { return this.createAction(key, value); } for (let i = 0; i < amount; i++) { this.createAction(key, value); } } getActions() { const keys = [ ...this.actionKeys ]; const values = [ ...this.actionValues ]; const uniqueItems = [ ...new Set(keys) ]; const output = []; while (keys.length > 0) { for (const item of uniqueItems) { const index = keys.indexOf(item); if (index >= 0) { output.push([ item, values[index] ]); removeFast(keys, index); removeFast(values, index); } } } this.actionKeys.length = 0; this.actionValues.length = 0; return output; } } const modules_ActionPlanner = ActionPlanner; /* === AutoChat Module (С ГЛИТЧ-ЭФФЕКТОМ И РОТАЦИЕЙ) === */ class AutoChat {   name = "autoChat";   client; // ⭐ СООБЩЕНИЯ ДЛЯ ЦИКЛИЧЕСКОЙ РОТАЦИИ ПО УМОЛЧАНИЮ static DEFAULT_MESSAGES = [       "Aibm recode Free now!",       "dsc.gg/Aibm",       "Download the bot mod now"   ];   constructor(client) {     this.client = client;     this._enabled = false;     this._messageIndex = 0; // Индекс для циклического переключения this._lastMsg = "All Is Bloody Mine!"; // Оставлено для совместимости     this._lastSent = 0;   }   toggle(msg) {     this._enabled = !this._enabled;     if (this._enabled) {       this._lastMsg = msg && msg.trim() ? msg : "All Is Bloody Mine!";     }   }     // НОВАЯ ФУНКЦИЯ: Применяет глитч-эффект к сообщению     applyGlitchToMessage(msg, glitchChars) {         if (!glitchChars || glitchChars.length === 0) {             return msg; // Нет глитча - возвращаем оригинал         }         let glitchedMsg = "";         for (let i = 0; i < msg.length; i++) {             // Шанс глитча 30% для каждого символа             if (Math.random() < 0.30) {                 glitchedMsg += glitchChars[Math.floor(Math.random() * glitchChars.length)];             } else {                 glitchedMsg += msg[i];             }         }         return glitchedMsg;     }   postTick() {     if (!this._enabled) return;     // AutoChat работает только на основном клиенте, который управляет ботами     if (this.client !== myClient) return;     if (Date.now() - this._lastSent < 2500) return; // каждые 2.5 сек     try {         // 1. Чтение настроек из ownerCommander         let messageBase = readOwnerCommanderField('all', 'autochatMessage'); // ⭐ 2. ЛОГИКА ЦИКЛИЧЕСКОГО ПЕРЕКЛЮЧЕНИЯ: Если поле пустое, используем ротацию // Проверяем, что сообщение не пустое или не состоит только из пробелов if (!messageBase || (typeof messageBase === 'string' && messageBase.trim() === '')) { const messages = AutoChat.DEFAULT_MESSAGES; // Получаем текущее сообщение messageBase = messages[this._messageIndex]; // Обновляем индекс для следующего сообщения: 0 -> 1 -> 2 -> 0 -> ... this._messageIndex = (this._messageIndex + 1) % messages.length; }         const glitchChars = readOwnerCommanderField('all', 'acGlitchSelect') || ''; // Читаем выбор глитч-символов         // 3. Применяем глитч         const finalMessage = this.applyGlitchToMessage(messageBase, glitchChars);         // 4. Отправка         const clientsToSpeak = [];         // Берем только клиентов-ботов (всех, кроме myClient)         if (myClient.clients && myClient.clients.size) {           for (const c of myClient.clients) {             if (c && c !== myClient) clientsToSpeak.push(c);           }         }         for (const c of clientsToSpeak) {             if (!c || !c.SocketManager || typeof c.SocketManager.chat !== "function") continue;             c.SocketManager.chat(finalMessage);       }       this._lastSent = Date.now();       this._enabled = !!readOwnerCommanderField('all', 'autochatEnabled');     } catch (e) {       // Оставляем пустым, чтобы не засорять консоль     }   } } const modules_AutoChat = AutoChat; /* === AutoClan Module (ФИНАЛЬНАЯ ВЕРСИЯ: АВТОНОМНОЕ МЕРЦАНИЕ НА ВСЕХ КЛИЕНТАХ) === */ class AutoClan {   name = "autoClan";   client;   _glitchStep = 0; // 0: создать, 1: удалить   _clanName = "AIBM"; // База, используем только 4 символа   _lastSent = 0;   _enabled = false;   constructor(client) {     this.client = client;   }   toggle(clanName) {     this._enabled = !this._enabled;     if (this._enabled) {       this._clanName = clanName && clanName.trim() ? clanName.slice(0, 4) : "AIBM";       this._glitchStep = 0;     } else {       // При отключении - удаляем клан       if (this.client.SocketManager && typeof this.client.SocketManager.leaveClan === 'function') {            this.client.SocketManager.leaveClan();       }     }   }   setClanName(clanName) {     this._clanName = clanName && clanName.trim() ? clanName.slice(0, 4) : "AIBM";   }   // Функция для создания УНИКАЛЬНОГО глитч-имени (строго 4 символа)   generateGlitchName(baseName, glitchChars) {     const base = baseName.slice(0, 4); // НАБОР СИМВОЛОВ ДЛЯ ЦИКЛА: // Если выбрано None, используем набор, который выглядит "статично" (.,_~) // но обеспечивает уникальность для сервера. const charsForCycle = glitchChars.length > 0 ? glitchChars : " .,_~"; const isGlitching = glitchChars.length > 0;     let newName = ""; for (let i = 0; i < 4; i++) { // Логика для режима с глитчем         if (isGlitching && Math.random() < 0.5) {             newName += charsForCycle[Math.floor(Math.random() * charsForCycle.length)];         } // Логика для режима Static (None): // Принудительная уникальность на 4-м символе ИЛИ небольшой шанс на смену else if (!isGlitching && (i === 3 || Math.random() < 0.15)) { newName += charsForCycle[Math.floor(Math.random() * charsForCycle.length)]; } else {             // Используем базовый символ или заполняем первым символом для цикла             newName += base[i] || charsForCycle[0];         }     }     return newName;   }   // Главная логика: теперь действует на всех (Owner + Bots)   postTick() {     if (!this._enabled) return;     // Устанавливаем задержку 800 мс     if (Date.now() - this._lastSent < 800) return;     try { // === ЧТЕНИЕ НАСТРОЕК МЕНЮ ===         const baseName = (readOwnerCommanderField('all', 'autoclanName') || this._clanName).slice(0, 4);         const glitchCharsToUse = readOwnerCommanderField('all', 'aclGlitchSelect') || ''; // ============================         const allClients = [this.client];         if (myClient && myClient.clients) {             myClient.clients.forEach(c => c && allClients.push(c));         }         if (this._glitchStep === 0) {             // === ШАГ 1: СОЗДАНИЕ УНИКАЛЬНОГО КЛАНА ДЛЯ КАЖДОГО КЛИЕНТА ===             for (const c of allClients) {                 if (!c.SocketManager || typeof c.SocketManager.createClan !== 'function') continue;                 const glitchName = this.generateGlitchName(baseName, glitchCharsToUse);                 c.SocketManager.createClan(glitchName);             }             this._glitchStep = 1; // Переход к удалению         } else {             // === ШАГ 2: УДАЛЕНИЕ КЛАНА ДЛЯ КАЖДОГО КЛИЕНТА ===             for (const c of allClients) {                 if (!c.SocketManager || typeof c.SocketManager.leaveClan !== 'function') continue;                 c.SocketManager.leaveClan();             }             this._glitchStep = 0; // Переход к созданию         }         this._lastSent = Date.now();         this._enabled = !!readOwnerCommanderField('all', 'autoclanEnabled');     } catch (e) {         // Оставим только логи ошибок     }   } } const modules_AutoClan = AutoClan; class AntiInsta { name="antiInsta"; client; toggleAnti=false; constructor(client) { this.client = client; } get isSaveHeal() { const {myPlayer, SocketManager} = this.client; const startHit = myPlayer.receivedDamage || 0; const timeSinceHit = Date.now() - startHit + SocketManager.pong; return timeSinceHit >= 120; } get canHeal() { const {myPlayer} = this.client; return Settings.autoheal && myPlayer.tempHealth < 100 && !myPlayer.shameActive && this.isSaveHeal; } postTick() { const {myPlayer, ModuleHandler} = this.client; const foodID = myPlayer.getItemByType(2); const restore = Items[foodID].restore; const maxTimes = Math.ceil(myPlayer.maxHealth / restore); const needTimes = Math.ceil((myPlayer.maxHealth - myPlayer.tempHealth) / restore); let healingTimes = null; if (ModuleHandler.needToHeal || this.toggleAnti) { ModuleHandler.needToHeal = false; if (myPlayer.shameActive) { return; } ModuleHandler.didAntiInsta = true; healingTimes = Math.min(maxTimes, 3); } else if (this.canHeal) { healingTimes = needTimes; myPlayer.tempHealth += clamp(restore * healingTimes, 0, 100); } if (null !== healingTimes) { ModuleHandler.healedOnce = true; ModuleHandler.actionPlanner.createActions(2, (last => ModuleHandler.heal(last)), healingTimes); } } } const modules_AntiInsta = AntiInsta; class AutoPlacer { name="autoPlacer"; client; placeAngles=[ null, new Set ]; constructor(client) { this.client = client; } postTick() { this.placeAngles[0] = null; this.placeAngles[1].clear(); if (!Settings.autoplacer) { return; } const {myPlayer, ObjectManager, ModuleHandler, EnemyManager} = this.client; const {currentType} = ModuleHandler; const pos = myPlayer.position.current; const nearestEnemy = EnemyManager.nearestEnemy; if (null === nearestEnemy) { return; } if (!myPlayer.collidingEntity(nearestEnemy, 450)) { return; } const nearestAngle = pos.angle(nearestEnemy.position.current); let itemType = null; const spike = myPlayer.getItemByType(4); const spikeAngles = ObjectManager.getBestPlacementAngles(pos, spike, nearestAngle); let angles = new Set; const length = myPlayer.getItemPlaceScale(spike); for (const angle of spikeAngles) { const newPos = pos.direction(angle, length); let shouldPlaceSpike = false; for (const enemy of EnemyManager.trappedEnemies) { const distance = newPos.distance(enemy.position.current); const range = 2 * Items[spike].scale + enemy.collisionScale; if (distance <= range) { shouldPlaceSpike = true; break; } } if (shouldPlaceSpike) { angles = spikeAngles; itemType = 4; break; } } if (0 === angles.size) { const type = currentType && 2 !== currentType ? currentType : 7; if (!myPlayer.canPlace(type)) { return; } const id = myPlayer.getItemByType(type); angles = ObjectManager.getBestPlacementAngles(pos, id, nearestAngle); itemType = type; } if (null === itemType) { return; } this.placeAngles[0] = itemType; this.placeAngles[1] = angles; for (const angle of angles) { ModuleHandler.actionPlanner.createAction(itemType, (last => ModuleHandler.place(itemType, { angle, priority: 1, last }))); ModuleHandler.placedOnce = true; } } } const modules_AutoPlacer = AutoPlacer; class Autohat { name = "autoHat"; client; utilitySize = [0, 0]; // 🛡️ ID ШАПОК (Tank Gear/Soldier Helmet) и (Bull Hat/Barbarian Hat) TANK_GEAR_ID = 40; BULL_HAT_ID = 7; HAT_TYPE = 0; constructor(client) { this.client = client; } handleUtility(type) { const {ModuleHandler, myPlayer} = this.client; const store = ModuleHandler.store[type]; // 1. Сброс предыдущей утилиты (если была) if (null !== store.lastUtility) { store.utility.delete(store.lastUtility); store.lastUtility = null; } // 2. ⚔️ НОВАЯ ЛОГИКА: ПРИНУДИТЕЛЬНАЯ ЭКИПИРОВКА ПО КНОПКЕ ⚔️ if (ModuleHandler.canAttack && 0 === store.utility.size) { let requiredHatId = null; const attackingState = ModuleHandler.attackingState; // 1 (ЛКМ) или 2 (ПКМ) if (1 === attackingState) { // ЛКМ нажат (Attack) -> Bull Hat requiredHatId = this.BULL_HAT_ID; } else if (2 === attackingState) { // ПКМ нажат (Place/Utility) -> Tank Gear requiredHatId = this.TANK_GEAR_ID; } if (null !== requiredHatId) { // Принудительная экипировка нужной шапки, если мы атакуем if (ModuleHandler.equip(type, requiredHatId)) { store.lastUtility = requiredHatId; store.utility.set(requiredHatId, true); return; // Успешно сменили шапку, выходим. } } // 3. 🛡️ ОРИГИНАЛЬНАЯ ЛОГИКА (Если принудительно не экипировали) const id = myPlayer.getBestUtilityID(type); if (null === id) { return; } if (ModuleHandler.equip(type, id)) { store.lastUtility = id; store.utility.set(id, true); } } } // ОСТАЛЬНЫЕ МЕТОДЫ ОСТАВЛЯЕМ БЕЗ ИЗМЕНЕНИЙ handleEquip(type) { const {ModuleHandler} = this.client; const store = ModuleHandler.store[type]; const size = store.utility.size; const oldSize = this.utilitySize[type]; if (0 === size && (size !== oldSize || store.best !== store.current)) { if (ModuleHandler.equip(type, store.current)) { store.best = store.current; } } this.utilitySize[type] = size; } postTick() { const {ModuleHandler} = this.client; // Если Autobreak ломает — не менять шляпы/аксессуары. Autobreak управляет шапкой в этот момент. try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} if (!ModuleHandler.sentHatEquip) { this.handleUtility(0); this.handleEquip(0); } if (!ModuleHandler.sentAccEquip && !ModuleHandler.sentHatEquip) { this.handleEquip(1); } } } const modules_Autohat = Autohat; class OwnerAccLoop { name = "ownerAccLoop"; client; _index = 0; _cooldown = 0; constructor(client) { this.client = client; // Используем те же списки, что и для ботов this._accessoriesAll = [12, 9, 10, 3, 8, 11, 17, 6, 4, 5, 2, 1, 7, 14, 15, 20, 16, 13, 19, 18, 21]; this._accessoriesWings = [21, 18, 19, 13]; } postTick() { // ⭐ ИСПРАВЛЕНО: Обращаемся к глобальному объекту конфигурации const oc = window.OWNER_COMMANDER_CONFIG; if (!this.client.isOwner || !oc || !oc.ownerAccLoop) return; const { ModuleHandler } = this.client; if (!ModuleHandler) return; // Кульдаун для ограничения скорости переключения if (this._cooldown > 0) { this._cooldown--; return; } if (ModuleHandler.sentAccEquip) return; // ВЫБОР СПИСКА В ЗАВИСИМОСТИ ОТ РЕЖИМА const mode = oc.ownerAccLoopMode || 'all'; let accessories; if (mode === 'wings') { accessories = this._accessoriesWings; } else { // 'all' accessories = this._accessoriesAll; } if (accessories.length === 0) return; const accId = accessories[this._index % accessories.length]; this._index++; try { // Экипируем аксессуар. Индекс слота для аксессуара — 1. const ok = ModuleHandler.equip(1, accId); if (ok) { this._cooldown = 1; // Короткий кулдаун } else { this._cooldown = 0; } } catch (e) { if (e.name === 'TypeError' && e.message.includes("reading 'price'")) { this._cooldown = 1; } else { console.error("OwnerAccLoop equip error:", e); this._cooldown = 10; } } } } const modules_OwnerAccLoop = OwnerAccLoop; class OwnerHatLoop { name = "ownerHatLoop"; client; _index = 0; _cooldown = 0; constructor(client) { this.client = client; // Используем те же списки, что и для ботов this._hatsFree = [51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49]; this._hatsAll = [ 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 39, 41, 46, 47, 48 ]; this._hatsFree = this._hatsFree.filter((id, index, self) => self.indexOf(id) === index); this._hatsAll = this._hatsAll.filter((id, index, self) => self.indexOf(id) === index); } postTick() { // ⭐ ИСПРАВЛЕНО: Обращаемся к глобальному объекту конфигурации const oc = window.OWNER_COMMANDER_CONFIG; if (!this.client.isOwner || !oc || !oc.ownerHatLoop) return; const { ModuleHandler } = this.client; if (!ModuleHandler) return; // КУЛДАУН if (this._cooldown > 0) { this._cooldown--; return; } // Если Autobreak ломает — не менять шляпы (Autobreak управляет шляпой). try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} // Если Autobreak ломает — не менять шляпы (Autobreak управляет шляпой). try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} if (ModuleHandler.sentHatEquip) return; const mode = oc.ownerHatLoopMode || 'free'; let hats = mode === 'all' ? this._hatsAll : this._hatsFree; if (hats.length === 0) return; const hatId = hats[this._index % hats.length]; this._index++; try { const ok = ModuleHandler.equip(0, hatId); // Слот для шапки — 0 if (ok) { this._cooldown = 1; } else { this._cooldown = 0; } } catch (e) { if (e.name === 'TypeError' && e.message.includes("reading 'price'")) { this._cooldown = 1; } else { console.error("OwnerHatLoop equip error:", e); this._cooldown = 10; } } } } const modules_OwnerHatLoop = OwnerHatLoop; class AccLoop { name = "accLoop"; client; _index = 0; _cooldown = 0; constructor(client) { this.client = client; // Все аксессуары (ID 0-21) this._accessoriesAll = [0, 12, 9, 10, 3, 8, 11, 17, 6, 4, 5, 2, 1, 7, 14, 15, 20, 16, 13, 19, 18, 21]; // ⭐ Только крылья (ID 21, 18, 19, 13) // Добавляем 0 (Unequip) в начало this._accessoriesWings = [0, 21, 18, 19, 13]; } postTick() { // Проверка активности модуля const oc = getOwnerCommanderFor(this.client); if (!oc || !oc.accLoop) return; // Используем accLoop для проверки // Хозяина не трогаем (если это бот) if (this.client.isOwner) return; const { ModuleHandler } = this.client; if (!ModuleHandler) return; // Кульдаун для ограничения скорости переключения if (this._cooldown > 0) { this._cooldown--; return; } // Проверка, что ModuleHandler не занят отправкой другого снаряжения if (ModuleHandler.sentAccEquip) return; // ⭐ ВЫБОР СПИСКА В ЗАВИСИМОСТИ ОТ РЕЖИМА const mode = oc.accLoopMode || 'all'; let accessories; if (mode === 'wings') { accessories = this._accessoriesWings; } else { // 'all' accessories = this._accessoriesAll; } // Если вдруг список пуст, выходим if (accessories.length === 0) return; // Выбираем следующий аксессуар по кругу const accId = accessories[this._index % accessories.length]; this._index++; try { // Экипируем аксессуар. Индекс слота для аксессуара — 1. const ok = ModuleHandler.equip(1, accId); if (ok) { this._cooldown = 1; // Короткий кулдаун после успешной отправки } else { this._cooldown = 0; // Попробуем снова немедленно, если не отправилось } } catch (e) { console.error("AccLoop equip error:", e); this._cooldown = 10; // Длинный кулдаун в случае ошибки } } } const modules_AccLoop = AccLoop; // ======= new module: HatLoop ======= // ... // ======= new module: HatLoop ======= class HatLoop { name = "hatLoop"; client; _index = 0; _cooldown = 0; constructor(client) { this.client = client; this._hatsFree = [0, 51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49]; // Жестко заданный отфильтрованный список (платные/желаемые) this._hatsAll = [ 0, // Unequip 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 39, 41, 46, 47, 48 ]; this._hatsFree = this._hatsFree.filter((id, index, self) => self.indexOf(id) === index); this._hatsAll = this._hatsAll.filter((id, index, self) => self.indexOf(id) === index); } postTick() { const oc = getOwnerCommanderFor(this.client); if (!oc || !oc.hatLoop) return; if (this.client.isOwner) return; const { ModuleHandler } = this.client; if (!ModuleHandler) return; // КУЛДАУН if (this._cooldown > 0) { this._cooldown--; return; } // Если Autobreak ломает — не менять шляпы (Autobreak управляет шапкой). try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} if (ModuleHandler.sentHatEquip) return; const mode = oc.hatLoopMode || 'free'; let hats = mode === 'all' ? this._hatsAll : this._hatsFree; if (hats.length === 0) return; const hatId = hats[this._index % hats.length]; this._index++; // ⭐ НОВАЯ ПРОВЕРКА: Пропускаем, если предмет не существует (чтобы избежать ошибки 'price') // ВАЖНО: замените "getHatItemData" на реальную функцию в вашем клиенте, // которая возвращает объект предмета или undefined/null. /* if (hatId !== 0 && !getHatItemData(hatId)) { // Если предмет не Unequip (ID 0) и данные отсутствуют this._cooldown = 0; // Попробуем снова на следующем тике return; } */ try { // Экипируем шапку. Индекс слота для шапки — 0. const ok = ModuleHandler.equip(0, hatId); if (ok) { // Устанавливаем короткий кулдаун (1 тик) после успешной отправки this._cooldown = 1; } else { // Если не отправилось (например, пакеты еще обрабатываются) this._cooldown = 0; } } catch (e) { // ⭐ Улучшенная обработка ошибки: // Если возникла ошибка 'price', мы увеличиваем кулдаун, чтобы не спамить. if (e.name === 'TypeError' && e.message.includes("reading 'price'")) { console.warn(`HatLoop: Skipped hat ID ${hatId} due to missing item data (price error).`); this._cooldown = 5; // Более длинный кулдаун, чтобы пропустить проблемный тик } else { console.error("HatLoop equip error:", e); this._cooldown = 10; } } } } const modules_HatLoop = HatLoop; class Automill {         name="autoMill";         toggle=true;         client;         placeCount=0;         constructor(client) {             this.client = client;         }         reset() {             this.toggle = true;         }         get canAutomill() {         const isOwner = this.client.isOwner;         const {autoattack, attacking, placedOnce} = this.client.ModuleHandler; // 🔥 ИСПРАВЛЕНИЕ: Теперь isActive зависит ТОЛЬКО от локального флага `this.toggle`, // который будет устанавливаться из Movement.postTick или глобальных Settings.         let isActive = this.toggle && (isOwner ? (typeof Settings !== 'undefined' && Settings.automill) : true);         if (isActive) {             // Общие ограничения: только в песочнице, мельница еще не поставлена, и владелец не атакует             return this.client.myPlayer.isSandbox &&                        !placedOnce &&                        (!isOwner || !attacking);         }         return false;     }         placeWindmill(angle) {             const {myPlayer, ObjectManager, ModuleHandler, isOwner} = this.client;             const id = myPlayer.getItemByType(5);             const position = myPlayer.getPlacePosition(myPlayer.position.future, id, angle);             const radius = isOwner ? 0 : Items[id].scale;             if (!ObjectManager.canPlaceItem(id, position, radius)) {                 return;             }             ModuleHandler.actionPlanner.createAction(5, (last => ModuleHandler.place(5, {                 angle,                 last             })));         }         postTick() {             const {myPlayer, ModuleHandler, isOwner} = this.client;             if (!this.canAutomill) {                 return;             }             if (!myPlayer.canPlace(5)) {                 this.toggle = false;                 return;             }             const angle = isOwner ? getAngleFromBitmask(ModuleHandler.move, true) : ModuleHandler.reverseCursorAngle;             if (null === angle) {                 return;             }             const item = Items[myPlayer.getItemByType(5)];             const distance = myPlayer.getItemPlaceScale(item.id);             const angleBetween = Math.asin(2 * item.scale / (2 * distance));             this.placeWindmill(angle - angleBetween);             this.placeWindmill(angle + angleBetween);         }     }     const modules_Automill = Automill; class PlacementExecutor { name="placementExecutor"; client; constructor(client) { this.client = client; } postTick() { const actions = this.client.ModuleHandler.actionPlanner.getActions(); const lastIndex = actions.length - 1; for (let i = 0; i < actions.length; i++) { const current = actions[i]; const last = actions[i + 1]; const isLast = i === lastIndex || void 0 !== last && last[0] === current[0]; current[1](isLast); } } } const modules_PlacementExecutor = PlacementExecutor; class Placer { name="placer"; client; constructor(client) { this.client = client; } postTick() { const {ModuleHandler, myPlayer, isOwner} = this.client; const {currentType, placedOnce, healedOnce, mouse} = ModuleHandler; if (!myPlayer.canPlace(currentType)) { return; } if (2 === currentType) { if (healedOnce) { return; } ModuleHandler.healedOnce = true; ModuleHandler.actionPlanner.createAction(currentType, (last => ModuleHandler.place(currentType, { last }))); return; } if (placedOnce) { return; } ModuleHandler.placedOnce = true; const angle = isOwner ? mouse.angle : ModuleHandler.cursorAngle; ModuleHandler.actionPlanner.createAction(currentType, (last => ModuleHandler.place(currentType, { angle, last }))); } } const modules_Placer = Placer; class ShameReset { name = "shameReset"; client; _previousHatID = 0; // Сохраняем ID предыдущей шапки constructor(client) { this.client = client; } get isEquipTime() { const { myPlayer, SocketManager } = this.client; const max = 1e3 - SocketManager.TICK; return myPlayer.timerCount >= max; } get shouldReset() { const { myPlayer, ModuleHandler } = this.client; // 🔥 УЛУЧШЕННОЕ УСЛОВИЕ: Не атакуем и не строим во время сброса const isAttackingOrBuilding = (myPlayer.isAttacking || myPlayer.isBuilding); return !isAttackingOrBuilding && // Проверка активности !myPlayer.shameActive && myPlayer.shameCount > 0 && 0 === myPlayer.poisonCount && !ModuleHandler.didAntiInsta && this.isEquipTime; } postTick() { this.handleShameReset(); } handleShameReset(isDmgOverTime) { const { myPlayer, ModuleHandler } = this.client; if (ModuleHandler.sentHatEquip) { return; } const store = ModuleHandler.getHatStore(); const bull = 7; // Bull Hat ID const bullState = store.utility.get(bull); const currentHat = myPlayer.hatID; // --- 1. ЛОГИКА СБРОСА (УСТАНОВКА BULL HAT) --- if (void 0 === bullState && this.shouldReset) { // Если мы уже в Bull Hat (и не мы его надели), просто помечаем как использованный для сброса. if (currentHat === bull) { store.utility.set(bull, true); this._previousHatID = 0; return; } // Сохраняем текущую шапку, чтобы вернуть ее позже this._previousHatID = currentHat; const isEquipped = ModuleHandler.equip(0, bull); if (isEquipped) { store.utility.set(bull, true); // console.log('[ShameReset] Bull Hat equipped for shame reset.'); } } // --- 2. ЛОГИКА СНЯТИЯ (ВОССТАНОВЛЕНИЕ ШАПКИ) --- // Если Bull Hat помечен как активный И (позор сброшен ИЛИ пришло DOT ИЛИ есть ЯД) if (bullState && (0 === myPlayer.shameCount || isDmgOverTime || 0 !== myPlayer.poisonCount)) { // Сбрасываем флаг, чтобы не повторять store.utility.delete(bull); // Проверяем, что мы действительно в Bull Hat (это наша шапка) и есть что восстанавливать if (currentHat === bull && this._previousHatID !== 0 && this._previousHatID !== bull) { // Экипируем сохраненную шапку ModuleHandler.equip(0, this._previousHatID); // console.log(`[ShameReset] Restored hat ID: ${this._previousHatID}`); } // Сбрасываем сохраненный ID this._previousHatID = 0; } } healthUpdate() { const { myPlayer } = this.client; const { currentHealth, previousHealth, shameCount } = myPlayer; const difference = Math.abs(currentHealth - previousHealth); // Урон по таймеру const isDmgOverTime = 5 === difference && currentHealth < previousHealth; // Сброс таймера (поддерживает логику isEquipTime) if (isDmgOverTime) { myPlayer.timerCount = 0; } this.handleShameReset(isDmgOverTime); return isDmgOverTime && shameCount > 0; } } const modules_ShameReset = ShameReset; class UpdateAngle { name="updateAngle"; client; constructor(client) { this.client = client; } postTick() { // --- advance owner commander offsets for circlespin/squarespin (global + per-target) --- try { const root = myClient?.ModuleHandler?.ownerCommander; if (!root) { // nothing to do } else if (this.client.isOwner) { const now = Date.now(); const dt = (now - (this._lastSpinTime || now)) / 1000; this._lastSpinTime = now; // global entry try { if (root.mode === "circlespin") { const speed = (root.spin && root.spin.speed) || (30 * Math.PI / 180); const dir = (root.spin && root.spin.dir) || 1; root.offset = (root.offset || 0) + speed * dir * dt; const TWO_PI = Math.PI * 2; if (Math.abs(root.offset) > TWO_PI) root.offset %= TWO_PI; } if (root.mode === "squarespin") { const speed = (root.spin && root.spin.speed) || 1; const dir = (root.spin && root.spin.dir) || 1; root.offset = (root.offset || 0) + speed * dir * dt; if (root.offset >= 4) root.offset -= 4; if (root.offset < 0) root.offset += 4; } } catch(e){} // per-target entries if (root.targets) { for (const [tid, targ] of Object.entries(root.targets)) { try { if (!targ) continue; if (targ.mode === "circlespin") { const speed = (targ.spin && targ.spin.speed) || (30 * Math.PI / 180); const dir = (targ.spin && targ.spin.dir) || 1; targ.offset = (targ.offset || 0) + speed * dir * dt; const TWO_PI = Math.PI * 2; if (Math.abs(targ.offset) > TWO_PI) targ.offset %= TWO_PI; } else if (targ.mode === "squarespin") { const speed = (targ.spin && targ.spin.speed) || 1; const dir = (targ.spin && targ.spin.dir) || 1; targ.offset = (targ.offset || 0) + speed * dir * dt; if (targ.offset >= 4) targ.offset -= 4; if (targ.offset < 0) targ.offset += 4; } } catch(e){} } } } } catch(e){} const mh = this.client.ModuleHandler; const {sentAngle, mouse, cursorAngle, useAngle} = mh; // Если Autobreak ломает — каждый тик шлём принудительно useAngle (force=true), // чтобы персонаж постоянно смотрел на ловушку. try { const ab = mh.staticModules && mh.staticModules.autoBreak; if (ab && ab.breakingTrap) { try { mh.updateAngle(useAngle, true); } catch (e) {} return; } } catch (e) {} if (sentAngle > 1) { return; } const angle = this.client.isOwner ? mouse.angle : cursorAngle; this.client.ModuleHandler.updateAngle(angle); } } const modules_UpdateAngle = UpdateAngle; class UpdateAttack { name="updateAttack"; client; constructor(client) { this.client = client; } getAttackAngle() { const {ModuleHandler, isOwner} = this.client; const {staticModules, useAngle, mouse, cursorAngle} = ModuleHandler; const {spikeTick, autoBreak} = staticModules; if (spikeTick.isActive) { return useAngle; } // Всегда используем useAngle, когда активен Autobreak — чтобы персонаж смотрел на цель if (autoBreak.isActive) { return useAngle; } if (isOwner) { return mouse.angle; } return cursorAngle; } postTick() { const {ModuleHandler} = this.client; const {useWeapon, weapon, attacking, canAttack, sentAngle, staticModules} = ModuleHandler; const {reloading} = staticModules; if (null !== useWeapon && useWeapon !== weapon) { ModuleHandler.previousWeapon = weapon; ModuleHandler.whichWeapon(useWeapon); } if (canAttack) { const angle = this.getAttackAngle(); // Если сейчас Autobreak ломает — надеваем Tank Gear только на момент удара, // затем сразу восстанавливаем прежнюю шапку. try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) { // Autobreak уже экипировал Tank Gear и управляет прицелом. // Просто выполняем атаку без дополнительной экипировки/восстановления шляпы. try { ModuleHandler.attack(angle); ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e) { try { ModuleHandler.attack(angle); ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e2) {} } } else { ModuleHandler.attack(angle); ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } } catch (e) { // защитная: обычная атака try { ModuleHandler.attack(angle); ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e2) {} } const reload = reloading.currentReload; reloading.updateMaxReload(reload); // Если мы ломаем через Autobreak — не форсируем reset reload, чтобы // не искусственно замедлять следующую атаку (Autobreak сам контролирует скорость). try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (!(ab && ab.breakingTrap)) { reloading.resetReload(reload); } } catch (e) { reloading.resetReload(reload); } } else if (!attacking && 0 !== sentAngle) { ModuleHandler.stopAttack(); } } } const modules_UpdateAttack = UpdateAttack; class DistanceHit { name = "distanceHit"; client; // УДАЛЕНО: _originalHatID. Теперь используется локальная переменная, захваченная замыканием. // НОВАЯ КОНСТАНТА: На сколько уменьшаем дальность для ботов в проверке (внутриигровые единицы) BOT_RANGE_REDUCTION = 6; constructor(client) { this.client = client; } _isHatOwned(playerEntity, hatID) { // Предполагаем, что шапки хранятся в storeList[0] (как видно из update() в классе Player) return playerEntity.storeList && playerEntity.storeList[0] && playerEntity.storeList[0].has(hatID); } /** * Вспомогательный метод: Рассчитывает потенциальный урон от основного оружия сущности. */ _getPrimaryDamage(playerEntity) { const primaryID = playerEntity.weapon?.primary; if (typeof primaryID !== 'number' || primaryID === null) return 0; if (typeof playerEntity.getMaxWeaponDamage === 'function') { // Получаем максимальный урон от основного оружия (логика Bull Hat уже внутри) return playerEntity.getMaxWeaponDamage(primaryID, false); } // Запасной/неполный вариант const weapon = Weapons[primaryID]; if (!weapon) return 0; let damageMultiplier = 1; if (playerEntity.hatID && Hats && Hats[playerEntity.hatID] && Hats[playerEntity.hatID].dmgMultO) { damageMultiplier *= Hats[playerEntity.hatID].dmgMultO; } if (playerEntity.accessoryID && Accessories && Accessories[playerEntity.accessoryID] && Accessories[playerEntity.accessoryID].dmgMultO) { damageMultiplier *= Accessories[playerEntity.accessoryID].dmgMultO; } return weapon.damage * damageMultiplier; } /** * НОВЫЙ ВСПОМОГАТЕЛЬНЫЙ МЕТОД: Проверяет, заряжено ли основное оружие. */ _isReloaded(playerEntity) { // Проверка на перезарядку return typeof playerEntity.isReloaded === 'function' ? playerEntity.isReloaded('primary') : true; } /** * НОВЫЙ ВСПОМОГАТЕЛЬНЫЙ МЕТОД: Проверяет, находится ли сущность в радиусе удара. * @param {boolean} isBot - Флаг, указывающий, является ли сущность ботом. */ _isInRange(playerEntity, target, isBot = false) { if (!playerEntity || !target || !target.position) return false; const primaryID = playerEntity.weapon?.primary; if (typeof primaryID !== 'number' || primaryID === null) return false; const primaryWeapon = Weapons[primaryID]; if (!primaryWeapon) return false; // --- Расчет дальности --- const targetScale = target.hitScale || 45; let reach = primaryWeapon.range + targetScale; // НОВОЕ: Уменьшаем эффективную дальность, если это бот if (isBot) { reach -= this.BOT_RANGE_REDUCTION; } // Защита от отрицательной дальности, хотя это маловероятно if (reach <= 0) return false; const myPos = playerEntity.position.current; const targetPos = target.position.current; const dist = Math.sqrt(Math.pow(myPos.x - targetPos.x, 2) + Math.pow(myPos.y - targetPos.y, 2)); return dist <= reach; } /** * Проверяет, готов ли игрок к удару (заряжен И в радиусе). * @param {boolean} isBot - Флаг, указывающий, является ли сущность ботом. */ checkHitCondition(playerEntity, target, isBot = false) { // 1. Проверка на перезарядку if (!this._isReloaded(playerEntity)) { return false; } // 2. Проверка на дальность return this._isInRange(playerEntity, target, isBot); } /** * Forces an entity (bot or player) to attack the target immediately. */ executeAttack(clientInstance, target, forceBullHat = false) { // ВАЖНО: Здесь логика АТАКИ не изменена, // реальный угол и дальность используются движком игры. const mh = clientInstance.ModuleHandler; const myPlayer = clientInstance.myPlayer; const targetPos = target.position.future || target.position.current; const myPos = myPlayer.position.future || myPlayer.position.current; const BULL_HAT_ID = 7; let originalHatId = myPlayer.hatID; let shouldRestoreHat = false; const isOwner = clientInstance.isOwner; const canEquipBullHat = (isOwner || forceBullHat) && this._isHatOwned(myPlayer, BULL_HAT_ID); // hatToRestore — это локальная константа, захватывается замыканием. const hatToRestore = originalHatId; if (canEquipBullHat && originalHatId !== BULL_HAT_ID) { try { // 1. Надеваем Bull Hat (ID 7) mh.equip(0, BULL_HAT_ID); // 0 = Hat slot shouldRestoreHat = true; } catch (e) {} } // 2. Switch to Primary (Slot 0) if (mh.currentHolding !== 0) { try { mh.whichWeapon(0); } catch (e) { } } // 3. Aim at target const angle = Math.atan2(targetPos.y - myPos.y, targetPos.x - myPos.x); try { mh.updateAngle(angle, true); } catch (e) { } // 4. Strike try { mh.attack(angle); mh.stopAttack && mh.stopAttack(); } catch (e) { } // 5. Возвращаем оригинальную шапку if (shouldRestoreHat) { setTimeout(() => { try { const ab = mh.staticModules && mh.staticModules.autoBreak; // НОВЫЙ ФИКС: Проверяем только, не активен ли Autobreak. // Если не активен, мы должны принудительно восстановить шапку. if (!(ab && ab.breakingTrap)) { mh.equip && mh.equip(0, hatToRestore); } // Условие myPlayer.hatID === BULL_HAT_ID удалено, // чтобы не пропускать восстановление при нестабильном состоянии. } catch (e) { } }, 120); // Увеличили задержку для большей стабильности } } postTick() { if (!this.client.isOwner) return; let distanceHitEnabled = true; try { if ((typeof Settings !== 'undefined' && Settings.distanceHitEnabled === false) || (this.client.settings && this.client.settings.distanceHitEnabled === false)) { distanceHitEnabled = false; } } catch (e) {} if (!distanceHitEnabled) { // Если класс отключен, выходим из метода return; } const { EnemyManager, myPlayer } = this.client; const target = EnemyManager.nearestEnemy; if (!target) return; const BULL_HAT_ID = 7; // Проверяем владение Bull Hat ГЛАВНЫМ игроком const ownerOwnsBullHat = this._isHatOwned(myPlayer, BULL_HAT_ID); // --- НОВАЯ ЛОГИКА СТРОГОЙ СИНХРОНИЗАЦИИ --- let totalDamage = 0; let entitiesToAttack = []; // Сущности, которые могут и должны ударить let syncComboBlocked = false; // Флаг для блокировки комбо // Список всех клиентов (игрок + боты), которые могут участвовать в комбо const allComboClients = [this.client]; if (this.client.clients) { for (const botClient of this.client.clients) { // Исключаем владельца и неинициализированных ботов if (!botClient.isOwner && botClient.myPlayer) { allComboClients.push(botClient); } } } // 1. Проверяем каждого участника // Условие: ВСЕ участники, находящиеся в радиусе удара, ДОЛЖНЫ быть заряжены. for (const client of allComboClients) { const playerEntity = client.myPlayer; const isBot = !client.isOwner; // Определяем, является ли это ботом // Сначала проверяем, находится ли сущность в радиусе удара (Range Check) // ИСПОЛЬЗУЕМ УМЕНЬШЕННУЮ ДАЛЬНОСТЬ ДЛЯ БОТОВ const isInRange = this._isInRange(playerEntity, target, isBot); if (isInRange) { // Если сущность в радиусе, она ДОЛЖНА быть заряжена для синхронного удара. if (!this._isReloaded(playerEntity)) { // Найден не заряженный участник в радиусе -> Блокируем комбо syncComboBlocked = true; break; // Дальнейшая проверка не имеет смысла } // В радиусе И заряжен -> добавляем в список атакующих и считаем урон. const damage = this._getPrimaryDamage(playerEntity); totalDamage += damage; entitiesToAttack.push({ client: client, damage: damage }); } // Если не в радиусе, он не блокирует комбо и не участвует в нем. } // 2. Учет Solid Hat (ID 6) у врага const SOLID_HAT_ID = 6; const solidHatData = Hats[SOLID_HAT_ID]; let finalDamage = totalDamage; if (target.hatID === SOLID_HAT_ID && solidHatData && typeof solidHatData.dmgMult === 'number') { // Применяем множитель уменьшения урона (0.75 для Solid Hat) finalDamage *= solidHatData.dmgMult; console.log(`[DistanceHit] Урон снижен из-за Soldier Helmet (${(solidHatData.dmgMult*100).toFixed(0)}%). Расчетный урон: ${finalDamage.toFixed(2)}.`); } // 3. Логика Синхронизации // Для атаки нужно: // A) Нет блокировки (syncComboBlocked === false) // B) Есть владелец и хотя бы один бот среди тех, кто в радиусе и заряжен. const ownerEntry = entitiesToAttack.find(e => e.client.isOwner); const capableBots = entitiesToAttack.filter(e => !e.client.isOwner); const isReadyForSyncCombo = !syncComboBlocked && ownerEntry && capableBots.length > 0; const finalCondition = isReadyForSyncCombo && finalDamage >= 100; if (finalCondition) { console.log(`[DistanceHit] ---> СИНХРОННАЯ АТАКА! (Общий урон: ${finalDamage.toFixed(2)}, Ботов в комбо: ${capableBots.length})`); // Владелец атакует this.executeAttack(this.client, target, ownerOwnsBullHat); // Все способные боты атакуют for (const botEntry of capableBots) { this.executeAttack(botEntry.client, target, ownerOwnsBullHat); } } } } // Заменяем оригинальную константу const modules_DistanceHit = DistanceHit; class SyncShot { name = "syncShot"; client; _isFiringCombo = false; // state per fire command _activeFireAt = null; _firedFor = null; // Default weapon slot to prefer: 0=Primary, 1=Secondary DEFAULT_WEAPON_SLOT = 0; constructor(client) { this.client = client; } _predictTargetPosition(target, timeMs) { if (!target || !target.position || !target.position.current) return null; // Выполнение вспомогательных функций таргета (если они существуют) try { if (typeof target.predictItems === 'function') target.predictItems(); if (typeof target.predictWeapons === 'function') target.predictWeapons(); if (typeof target.updateReloads === 'function') target.updateReloads(); } catch (e) {} const cur = target.position.current; const vel = (target.velocity || { x: 0, y: 0 }); // Преобразуем миллисекунды в секунды const timeS = timeMs / 1000; // Используем future позицию (если доступна) для лучшей точности const startPos = target.position.future || cur; return { x: startPos.x + (vel.x || 0) * timeS, y: startPos.y + (vel.y || 0) * timeS }; } // Helper: Resets internal state (used on command start/finish) _reset() { this._activeFireAt = null; this._firedFor = null; } // Called every tick postTick() { try { const { ModuleHandler, myPlayer, EnemyManager } = this.client; if (!ModuleHandler || !myPlayer || !EnemyManager) { this._reset(); return; } // 1. Проверка состояния модуля и команд const oc = getOwnerCommanderFor(this.client); if (!oc || !oc.syncShot || !myPlayer.position?.future) return; const fireAt = oc.syncShot.fireAt; if (!fireAt) return; // Нет активной команды // Игнорируем, если уже выполнено в этот цикл команд if (ModuleHandler._lastSyncShot === fireAt) return; // Начинаем новую команду if (this._activeFireAt !== fireAt) { this._activeFireAt = fireAt; this._firedFor = null; } this._isFiringCombo = true; // 2. Получение цели и настроек const target = EnemyManager.nearestEnemy; if (!target || !target.position) { this._resetAndMarkDone(ModuleHandler, fireAt, 'no target'); return; } // 3. Выбор оружия и времени предикта const prefSlotSetting = (typeof Settings !== 'undefined' && Settings.syncShotWeaponSlot) ? Settings.syncShotWeaponSlot : this.DEFAULT_WEAPON_SLOT; const weaponSlot = (prefSlotSetting === 1) ? 1 : 0; // 0 (primary) or 1 (secondary) const weaponID = (weaponSlot === 0) ? myPlayer.weapon?.primary : myPlayer.weapon?.secondary; if (!weaponID) { this._resetAndMarkDone(ModuleHandler, fireAt, 'no weapon in selected slot'); return; } // Получаем время задержки (например, время полета снаряда) const weaponObj = Weapons.find(w => w.id === weaponID); // УЛУЧШЕННЫЙ РАСЧЕТ ВРЕМЕНИ: const projectileID = weaponObj?.projectile; let timeMs = 0; if (projectileID !== undefined && Projectiles && Projectiles[projectileID]) { const projData = Projectiles[projectileID]; const speedMult = weaponObj?.spdMultProj || 1; const projectileSpeed = projData.speed * speedMult; if (projectileSpeed > 0 && target.distance) { timeMs = (target.distance / projectileSpeed) * 1000; } else { timeMs = 20; // Минимальная задержка } } else { // Предполагаем, что это ближний бой, если нет данных о снаряде // NOTE: Instakill.MELEE_HIT_DELAY должно быть доступно глобально timeMs = Instakill.MELEE_HIT_DELAY + 20; } // 4. Определение позиции прицеливания (с предиктом) const aimPos = this._predictTargetPosition(target, timeMs); if (!aimPos || typeof aimPos.x !== 'number') { this._resetAndMarkDone(ModuleHandler, fireAt, 'prediction failed'); return; } // 5. Выбор оружия и экипировка шапки (Bull Hat для 0, Turret Gear для 1) const prevHatId = this._prepareForShot(ModuleHandler, myPlayer, weaponSlot); // 6. Выстрел try { // Прицеливание const ang = Math.atan2(aimPos.y - myPlayer.position.future.y, aimPos.x - myPlayer.position.future.x); ModuleHandler.updateAngle && ModuleHandler.updateAngle(ang, true); // Выстрел ModuleHandler.attack && ModuleHandler.attack(ang); ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e) { // console.error('[SyncShot] attack error', e); } // 7. Возврат шапки this._restoreHat(ModuleHandler, prevHatId); // 8. Завершение команды this._resetAndMarkDone(ModuleHandler, fireAt, 'fired'); } catch (outer) { console.error('[SyncShot] unexpected error', outer); this._reset(); } } // Helper to cleanup and mark the command as handled _resetAndMarkDone(ModuleHandler, fireAt, message = '') { try { ModuleHandler._lastSyncShot = fireAt; } catch(e){} this._firedFor = fireAt; this._activeFireAt = null; this._isFiringCombo = false; // this._debug(message); // Активируйте, если нужен дебаг } // Helper: Logic to select weapon and put on Turret Gear/Bull Hat _prepareForShot(ModuleHandler, myPlayer, targetSlot) { // 1. Выбираем нужное оружие if (ModuleHandler.currentHolding !== targetSlot) { try { ModuleHandler.whichWeapon(targetSlot); } catch (e) {} } // 2. Надеваем Bull Hat (ID 7) для ближнего боя или Turret Gear (ID 53) для дальнего // NOTE: Если слот 0 — ближний, слот 1 — дальний const targetHatId = (targetSlot === 0) ? 7 : 53; let prevHatId = myPlayer.hatID; try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; // Не вмешиваемся в шапки, если Autobreak активен if (!(ab && ab.breakingTrap)) { ModuleHandler.equip && ModuleHandler.equip(0, targetHatId); // 0 = Hat slot } } catch {} return prevHatId; } // Helper: Logic to restore the hat after a short delay _restoreHat(ModuleHandler, prevHatId) { // 53 = Turret Gear ID, 7 = Bull Hat ID const hatsToIgnore = [53, 7]; try { if (typeof prevHatId === 'number' && !hatsToIgnore.includes(prevHatId)) { setTimeout(() => { try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (!(ab && ab.breakingTrap)) { ModuleHandler.equip && ModuleHandler.equip(0, prevHatId); } } catch(e){} }, 80); // Короткая задержка для завершения выстрела } } catch {} } // debug logger (может быть удален, если не нужен) // _debug(...) {} } const modules_SyncShot = SyncShot; class BowInsta_Final { name = "bowInsta"; client; constructor(client) { this.client = client; this.PLATFORM_ITEM_ID = 18; this.BOW_ID = 9; // ID Лук this.CROSS_ID = 12; this.MUSKET_ID = 15; this.TURRET_HAT = 53; this.FIXED_DIST = 700; this.DIST_TOL = 20; this.DEADZONE = 10; // *** КОНСТАНТЫ СИНХРОНИЗАЦИИ (СКОРОСТЬ ИГРЫ) *** this.MIN_ACTION_DELAY = 40; // Минимальная задержка между выстрелом и апгрейдом this.UPGRADE_CHECK_DELAY = 50; // Задержка для проверки, прошел ли апгрейд // ********************************************** this.GIVEUP_TIMEOUT_MS = 1200; // Общий таймаут для комбо this.PLATFORM_POSTPLACE_WAIT_MS = 100; this._activeFireAt = null; this._stage = -1; this._waitUntil = 0; this._wantedAfterUpgrade = null; this._platformsFor = null; this._prevHat = undefined; this._keys = { W: false, A: false, S: false, D: false }; } _chat(msg) { try { myClient?.SocketManager?.chat(msg); } catch (e) {} } _log(msg) { try { console.log(`[BowInsta] ${msg}`); } catch (e) {} } _hasBow(myPlayer) { return myPlayer.getItemByType?.(1) === this.BOW_ID; } // ... (вспомогательные функции trigger, _setKeyDown, _setKeyUp, _stopAllKeys, _pressForVector, _dist, _hasPlatform без изменений) ... _setKeyDown(ModuleHandler, code) { try { ModuleHandler.handleKeydown?.({ code }); } catch (e) {} } _setKeyUp(ModuleHandler, code) { try { ModuleHandler.handleKeyup?.({ code }); } catch (e) {} } _stopAllKeys(ModuleHandler) { ["KeyW","KeyA","KeyS","KeyD"].forEach(k=>this._setKeyUp(ModuleHandler,k)); this._keys={W:false,A:false,S:false,D:false}; } _pressForVector(ModuleHandler,dx,dy){ const pW=(dy<-this.DEADZONE), pS=(dy>this.DEADZONE), pD=(dx>this.DEADZONE), pA=(dx<-this.DEADZONE); [["W",pW],["S",pS],["D",pD],["A",pA]].forEach(([k,p])=>{ if(p&&!this._keys[k]){ this._setKeyDown(ModuleHandler,"Key"+k); this._keys[k]=true; } else if(!p&&this._keys[k]){ this._setKeyUp(ModuleHandler,"Key"+k); this._keys[k]=false; } }); } _dist(a,b){const dx=a.x-b.x,dy=a.y-b.y;return Math.sqrt(dx*dx+dy*dy);} _hasPlatform(player) { try { if (typeof player.getItemByType === "function") { const r = player.getItemByType(this.PLATFORM_ITEM_ID); if (r === this.PLATFORM_ITEM_ID) return true; } if (Array.isArray(player.inventory)) { for (const it of player.inventory) { if (typeof it === "number" && it === this.PLATFORM_ITEM_ID) return true; if (typeof it === "object" && (it.id === this.PLATFORM_ITEM_ID || it.itemId === this.PLATFORM_ITEM_ID)) return true; } } } catch (e) {} return false; } trigger() { if (!this.client || !this.client.myPlayer) return; if (!this._hasBow(this.client.myPlayer)) { this._chat("sorr me need bow for it"); this._activeFireAt = null; return; } try { const myPlayer = this.client.myPlayer; const slots = [ myPlayer.getItemByType?.(0), myPlayer.getItemByType?.(1) ]; const names = []; for (const s of slots) { if (typeof s === "number" && Weapons[s]?.name) { names.push(Weapons[s].name.toLowerCase()); } } const blocked = names.some(n => n.includes("hammer") || n.includes("shield") || n.includes("grab")); if (blocked) { this._chat("[BowInsta] blocked (forbidden weapon present)"); this._activeFireAt = null; return; } } catch (e) {} const now = Date.now(); this._activeFireAt = now; this._stage = -1; this._waitUntil = 0; this._platformsFor = null; this._prevHat = undefined; this._chat("[BowInsta] activated via hotkey"); this._log("Activated. Starting sequence."); try { this.postTick(); } catch(e) { console.error("BowInsta instant postTick error:", e); } } postTick() { try { if (!this.client.isOwner) return; const ModuleHandler = this.client.ModuleHandler; const myPlayer = this.client.myPlayer; const EnemyManager = this.client.EnemyManager; if (!ModuleHandler || !myPlayer || !EnemyManager) return; if (!this._activeFireAt) return; const fireAt = this._activeFireAt; if (this._activeFireAt !== fireAt) return; const now = Date.now(); const target = EnemyManager?.nearestEnemy; if (!target) { this._activeFireAt = null; this._stage = -1; this._chat("[BowInsta] Target lost. Aborting."); return; } let angle = 0; try { angle = myPlayer.position.current.angle(target.position.current); ModuleHandler.updateAngle?.(angle, true); } catch(e){} // ** Основная блокировка времени ** if (now < this._waitUntil) return; const myPos = myPlayer.position.current; const tgPos = target.position.current; const dist = this._dist(myPos, tgPos); // --- stage -1: ПОДХОД --- if (this._stage === -1) { // ... (логика движения) ... if (Math.abs(dist - this.FIXED_DIST) <= this.DIST_TOL) { this._stopAllKeys(ModuleHandler); this._stage = -0.7; this._waitUntil = now; this._chat("[BowInsta] reached distance " + Math.round(dist)); } else { const dx_to_player = myPos.x - tgPos.x; const dy_to_player = myPos.y - tgPos.y; const len = Math.sqrt(dx_to_player * dx_to_player + dy_to_player * dy_to_player) || 1; const desiredX = tgPos.x + (dx_to_player / len) * this.FIXED_DIST; const desiredY = tgPos.y + (dy_to_player / len) * this.FIXED_DIST; const dx_move = desiredX - myPos.x; const dy_move = desiredY - myPos.y; this._pressForVector(ModuleHandler, dx_move, dy_move); return; } } // --- stage -0.7: ВЫБРАТЬ ЛУК --- if (this._stage === -0.7) { ModuleHandler.whichWeapon(1); this._stage = -0.5; this._waitUntil = now + this.MIN_ACTION_DELAY; this._log("Selected bow (slot 1)."); return; } // --- stage -0.5: ставим платформы --- if (this._stage === -0.5) { // ... (логика платформ) ... this._stage = 0; this._waitUntil = now + this.PLATFORM_POSTPLACE_WAIT_MS; return; } // --- stage 0: Выстрел из Лук + НАДЕТЬ ШАПКУ --- if (this._stage === 0) { try { this._prevHat = myPlayer.hatID; try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (!(ab && ab.breakingTrap)) { ModuleHandler.equip?.(0, this.TURRET_HAT); } } catch (e) {} } catch(e) {} try { ModuleHandler.attack(angle); ModuleHandler.stopAttack(); } catch(e){} this._stage = 1; // Ждем минимальное время для перехода к апгрейду this._waitUntil = now + this.MIN_ACTION_DELAY; this._log(`Bow fired. Proceeding to upgrade in ${this.MIN_ACTION_DELAY}ms.`); return; } // --- stage 1: Апгрейд до Арбалета (Cross ID 12) --- if (this._stage === 1) { ModuleHandler.upgradeItem(this.CROSS_ID); this._wantedAfterUpgrade = this.CROSS_ID; this._stage = 2; // Ждем минимальное время, чтобы дать игре обновить инвентарь this._waitUntil = now + this.UPGRADE_CHECK_DELAY; this._log(`Sent upgrade to CROSSBOW (${this.CROSS_ID}).`); } // --- stage 2: Проверка Арбалета + Выстрел --- if (this._stage === 2) { const cur = myPlayer.getItemByType?.(1); this._log(`Check Crossbow: Wanted=${this._wantedAfterUpgrade}, Current=${cur}`); if (cur === this._wantedAfterUpgrade) { ModuleHandler.whichWeapon(1); ModuleHandler.attack(angle); ModuleHandler.stopAttack(); this._stage = 3; // Выстрел сделан, теперь сразу отправляем команду апгрейда this._waitUntil = now + this.MIN_ACTION_DELAY; this._chat(`[BowInsta] cross fired.`); this._log(`Crossbow SUCCESS. Proceeding to Musket upgrade.`); } else if (now > fireAt + this.GIVEUP_TIMEOUT_MS) { this._chat("[BowInsta] FAIL: Crossbow upgrade timeout. Aborting."); this._log(`FAIL: Crossbow upgrade timeout. Current weapon is ${cur}.`); this._activeFireAt = null; this._stage = -1; return; } else { // Ждем обновления инвентаря this._waitUntil = now + this.UPGRADE_CHECK_DELAY; this._log(`Still waiting for Crossbow upgrade...`); } return; } // --- stage 3: Апгрейд до Мушкета (Musket ID 15) --- if (this._stage === 3) { ModuleHandler.upgradeItem(this.MUSKET_ID); this._wantedAfterUpgrade = this.MUSKET_ID; this._stage = 4; this._waitUntil = now + this.UPGRADE_CHECK_DELAY; this._log(`Sent upgrade to MUSKET (${this.MUSKET_ID}).`); } // --- stage 4: Проверка Мушкета + Выстрел + Финализация --- if (this._stage === 4) { const cur = myPlayer.getItemByType?.(1); this._log(`Check Musket: Wanted=${this._wantedAfterUpgrade}, Current=${cur}`); if (cur === this._wantedAfterUpgrade) { ModuleHandler.whichWeapon(1); ModuleHandler.attack(angle); ModuleHandler.stopAttack(); this._chat("[BowInsta] musket fired (done)"); this._log("Musket SUCCESS. Combo finished."); } else if (now > fireAt + this.GIVEUP_TIMEOUT_MS) { this._chat("[BowInsta] FAIL: Musket upgrade timeout. Finishing."); this._log(`FAIL: Musket upgrade timeout. Current weapon is ${cur}.`); } else { this._waitUntil = now + this.UPGRADE_CHECK_DELAY; this._log(`Still waiting for Musket upgrade...`); return; } // Очистка и сброс: СНЯТЬ ШАПКУ try { if (typeof this._prevHat !== "undefined" && this._prevHat !== null) ModuleHandler.equip(0,this._prevHat); } catch(e){} // Успешное завершение: сброс состояния this._activeFireAt = null; this._stage = -1; } } catch(err){ this._chat("[BowInsta] Fatal error. Aborting."); this._activeFireAt=null; this._stage=-1; this._waitUntil = 0; console.error("BowInsta postTick fatal error:", err); } } } const modules_BowInsta = BowInsta_Final; class OneTick { name = "oneTick"; // IDs BULL_HAT = 7; TURRET_HAT = 53; SOLID_HAT = 6; // Constants MELEE_RANGE_FACTOR = 1.2; // Дистанция PROJECTILE_SPEED = 1.5; // СКОРОСТЬ СНАРЯДА ТУРЕТКИ (пикселей/мс) FIXED_MOVE_DIST = 175; // Будет обновлено в postTick DIST_TOLERANCE = 3; MIN_ACTION_DELAY = 0; // Минимальная задержка между командами HAT_SWITCH_DELAY_MS = 10; // КД шапки - ОСТАВЛЯЕМ 30 мс COOLDOWN_MS = 350; // Кульдаун между успешными комбо // Новые константы для циклической смены POLLING_INTERVAL = 0; // Интервал опроса для смены шапки (мс) MAX_SWITCH_TIME = 250; // Максимальное время ожидания смены Bull Hat // State active = false; lastCycle = 0; prevHat = null; _pending = false; _target = null; _stage = -1; // -1:Move, 0:Fire _switchStartTime = 0; // Время начала попытки смены Bull Hat _comboStartTime = 0; // Для общих логов // Движение _keys = { W: false, A: false, S: false, D: false }; DEADZONE = 10; // Зона нечувствительности для движения constructor(client) { this.client = client; if (typeof window !== 'undefined') window.oneTick = this; } // --- Вспомогательные функции --- _dist(a, b) { const dx = a.x - b.x, dy = a.y - b.y; return Math.sqrt(dx * dx + dy * dy); } _setKeyDown(ModuleHandler, code) { if (!this._keys[code]) { ModuleHandler.handleKeydown?.({ code: "Key" + code }); this._keys[code] = true; } } _setKeyUp(ModuleHandler, code) { if (this._keys[code]) { ModuleHandler.handleKeyup?.({ code: "Key" + code }); this._keys[code] = false; } } _stopAllKeys(ModuleHandler) { ["W", "A", "S", "D"].forEach(k => this._setKeyUp(ModuleHandler, k)); this._keys = { W: false, A: false, S: false, D: false }; } _pressForVector(ModuleHandler, dx, dy) { const pW = (dy < -this.DEADZONE), pS = (dy > this.DEADZONE), pD = (dx > this.DEADZONE), pA = (dx < -this.DEADZONE); [["W", pW], ["S", pS], ["D", pD], ["A", pA]].forEach(([k, p]) => { if (p) this._setKeyDown(ModuleHandler, k); else this._setKeyUp(ModuleHandler, k); }); } _calculateDelay(dist) { // Время полета снаряда до цели: T_hit = dist / V_projectile const timeToHit = dist / this.PROJECTILE_SPEED; // Фиксированное минимальное время на Turret Equip -> Bull Equip -> Fire -> Strike: // HAT_SWITCH_DELAY_MS (30 мс) + минимальное время на смену и два удара (0-5 мс) const timeFixedCombo = this.HAT_SWITCH_DELAY_MS + 0; // Условно 5 мс на действия // Пауза перед Bull Equip должна синхронизировать Bull Melee с Turret Projectile Hit. const P_DELAY_MS = timeToHit - timeFixedCombo; return Math.max(0, P_DELAY_MS); } // --- Основная логика --- toggle() { this.active = !this.active; console.log("[OneTick] toggled:", this.active ? "ON" : "OFF"); try { this.client.SocketManager?.chat(`[OneTick] ${this.active ? "ON" : "OFF"}`); if (typeof setOwnerCommanderField === "function") { setOwnerCommanderField('all', 'oneTick', { active: this.active }); } } catch(e){} if (!this.active) this._cleanup(); } postTick() { try { if (!this.active) return; const myPlayer = this.client.myPlayer; const mh = this.client.ModuleHandler; if (!myPlayer || !myPlayer.inGame || !mh) return; const enemy = this.client.EnemyManager?.nearestEnemy; if (!enemy) { this._target = null; this._stage = -1; this._stopAllKeys(mh); return; } const mePos = myPlayer.position.current; const ePos = enemy.position.current; const dist = this._dist(mePos, ePos); // Определяем радиус основного оружия const primaryID = myPlayer.getItemByType?.(0); const weapon = Weapons[primaryID]; const primaryRange = weapon && typeof weapon.range === "number" ? weapon.range : 175; // Устанавливаем целевую дистанцию this.FIXED_MOVE_DIST = primaryRange * this.MELEE_RANGE_FACTOR; this._target = enemy; // Проверка на Solid Hat if (enemy.hatID === this.SOLID_HAT) { this._stage = -1; this._stopAllKeys(mh); return; } // ------------------------------------ // СТАДИЯ -1: ДВИЖЕНИЕ К ЦЕЛИ // ------------------------------------ if (this._stage === -1) { if (Math.abs(dist - this.FIXED_MOVE_DIST) <= this.DIST_TOLERANCE) { this._stopAllKeys(mh); this._stage = 0; // Переход к комбо } else { const dx_to_player = mePos.x - ePos.x; const dy_to_player = mePos.y - ePos.y; const len = Math.hypot(dx_to_player, dy_to_player) || 1; const desiredX = ePos.x + (dx_to_player / len) * this.FIXED_MOVE_DIST; const desiredY = ePos.y + (dy_to_player / len) * this.FIXED_MOVE_DIST; const dx_move = desiredX - mePos.x; const dy_move = desiredY - mePos.y; this._pressForVector(mh, dx_move, dy_move); return; // Ждем, пока подойдем } } // ------------------------------------ // СТАДИЯ 0: ПРОВЕРКИ И ЗАПУСК КОМБО // ------------------------------------ if (this._stage === 0) { if (Date.now() - this.lastCycle <= this.COOLDOWN_MS) return; const staticReloading = mh.staticModules?.reloading; let primaryReady = true; let turretReady = true; if (staticReloading && typeof staticReloading.isReloaded === "function") { try { primaryReady = !!staticReloading.isReloaded("primary"); turretReady = !!staticReloading.isReloaded("turret"); } catch (e) { /* ignore */ } } if (!primaryReady || !turretReady) return; // Не готовы // Все готово - запускаем комбо if (!this._pending) this._executeCombo(enemy, dist); } } catch (e) { console.error("OneTick.postTick err:", e); } } _attemptBullEquipAndStrike(angle, enemyPos, mh, myPlayer) { if (!this._pending) return; // Комбо отменено if (myPlayer.hatID === this.BULL_HAT) { // ✅ Шапка Bull Hat надета! const equipTime = Date.now() - this._switchStartTime; console.log(`[OneTick] 🐂 (BULL) Equipped! Time since attempt start: ${equipTime}ms. Total combo time: ${Date.now() - this._comboStartTime}ms.`); // 4. Turret Fire И Bull Melee Strike // Отправляем команды синхронно, без задержек. // 4.1. Turret Fire console.log(`[OneTick] 🎯 (TURRET) Firing projectile (SYNC).`); try { mh.updateAngle(angle, true); mh.attack(angle); mh.stopAttack(); } catch(e) {} // 4.2. Bull Melee Strike (Сразу после Turret Fire) console.log(`[OneTick] 💥 (MELEE) Performing Bull Hat Melee Strike (SYNC).`); try { mh.updateAngle(angle, true); mh.attack(angle); mh.stopAttack(); } catch(e) {} // 5. Завершение комбо // Небольшая асинхронная задержка необходима для отправки всех предыдущих команд в сеть setTimeout(() => { this._finishCombo(); }, 60); return; } if (Date.now() - this._switchStartTime > this.MAX_SWITCH_TIME) { console.warn(`[OneTick] 🛑 (BULL) Failed to equip Bull Hat within ${this.MAX_SWITCH_TIME}ms. Aborting combo.`); this._finishCombo(true); // Принудительное завершение return; } // Постоянно пытаемся надеть Bull Hat try { mh.equip(0, this.BULL_HAT); } catch(e) {} // Рекурсивный вызов для продолжения опроса setTimeout(() => { this._attemptBullEquipAndStrike(angle, enemyPos, mh, myPlayer); }, this.POLLING_INTERVAL); // POLLING_INTERVAL = 0 } _finishCombo(error = false) { const mh = this.client.ModuleHandler; try { // Вернуть старую шапку if (typeof this.prevHat === "number") mh.equip(0, this.prevHat); // Вернуть старое оружие (если оно было не в слоте 0) if (typeof this.prevWeapon === "number" && this.prevWeapon !== 0) { mh.whichWeapon(this.prevWeapon); } } catch(e){} this.lastCycle = Date.now(); this._pending = false; this._stage = -1; // Возвращаемся к движению this._stopAllKeys(mh); const finalTime = Date.now() - this._comboStartTime; this.client.SocketManager?.chat(`[OneTick] 💥 COMBO DONE ${error ? '(Error)' : ''} (${finalTime}ms)`); console.log(`[OneTick] 🔄 Combo sequence finished in ${finalTime}ms.`); } _executeCombo(enemy, dist) { this._pending = true; this._comboStartTime = Date.now(); const mh = this.client.ModuleHandler; const myPlayer = this.client.myPlayer; if (!mh || !myPlayer) { this._pending = false; return; } this.prevHat = myPlayer.hatID; this.prevWeapon = myPlayer.weaponIndex || 0; const angle = Math.atan2(enemy.position.current.y - myPlayer.position.current.y, enemy.position.current.x - myPlayer.position.current.x); const P_DELAY_MS = this._calculateDelay(dist); // Дополнительная динамическая пауза для синхронизации console.log(`[OneTick] Combo initiated. Dist: ${Math.round(dist)}. Dynamic Delay: ${P_DELAY_MS}ms. Total Wait before Bull Equip Attempt: ${this.HAT_SWITCH_DELAY_MS + P_DELAY_MS}ms`); // 1. Выбрать основное оружие (слот 0) try { mh.whichWeapon(0); } catch(e){} // 2. Turret Hat Equip console.log(`[OneTick] 🛡️ (TURRET) Equipping Turret Hat.`); try { mh.equip(0, this.TURRET_HAT); } catch(e){} // 3. Планируем НАЧАЛО циклического опроса для смены Bull Hat const totalBullWait = this.HAT_SWITCH_DELAY_MS + P_DELAY_MS; console.log(`[OneTick] ⏳ Waiting ${totalBullWait}ms before attempting Bull Hat equip.`); setTimeout(() => { console.log(`[OneTick] 🐂 (BULL) Starting Bull Hat equip attempt (polling).`); this._switchStartTime = Date.now(); this._attemptBullEquipAndStrike(angle, enemy.position.current, mh, myPlayer); }, totalBullWait); // Ждем минимального КД (30 мс) + динамической задержки } drawOverlay(ctx) { try { if (!this.active || !this._target) return; const p = this._target.position.current; const myPos = this.client.myPlayer?.position.current; if (!p || !myPos) return; // 1. Рисуем идеальный круг для старта комбо rendering_Renderer.circle(ctx, p.x, p.y, this.FIXED_MOVE_DIST, "#ffc107", 3, 0.6); // 2. Рисуем радиус досягаемости вашего основного оружия const primaryID = this.client.myPlayer.getItemByType?.(0); const weapon = Weapons[primaryID]; const range = weapon && typeof weapon.range === "number" ? weapon.range : 175; // Визуализация дальности оружия (например, зелёный) rendering_Renderer.circle(ctx, myPos.x, myPos.y, range, "#28a745", 3, 0.3); // 3. Если мы в фазе движения, подсвечиваем цель if (this._stage === -1) { rendering_Renderer.circle(ctx, p.x, p.y, this.DIST_TOLERANCE, "#007bff", 3, 0.8); } } catch(e){} } _cleanup() { try { if (typeof this.prevHat === "number") this.client.ModuleHandler.equip(0, this.prevHat); this._stopAllKeys(this.client.ModuleHandler); } catch(e){} this.prevHat = null; this._target = null; this._pending = false; this._stage = -1; } } const modules_OneTick = OneTick; class BowspamPredict { name = "bowspamPredict"; client; _active = false; // --- НАСТРОЙКИ --- USE_SAMURAI_HAT = true; SAMURAI_HAT_ID = 20; FOREST_HAT_ID = 1; // ⭐ Новая Лесная шляпа (ID 1) // Набор ID дальнобойного оружия: (9-Лук, 12-Арбалет, 13-Тройной, 15-Мушкет) RANGED_WEAPON_IDS = new Set([9, 12, 13, 15]); // ⭐ Хранилище для оригинальных шапок ботов. (mp.id -> originalHatID) _botOriginalHats = new Map(); constructor(client) { this.client = client; } // --- СТАТИЧЕСКИЕ ХЕЛПЕРЫ --- static isValidTarget(target) { return target && target.position && target.position.current && !target.isDead && !target.dead; } static stopAttack(cm) { if (cm && cm.stopAttack) { cm.stopAttack(); } } // Предикт позиции цели _predictTargetPosition(target, timeMs) { if (!target || !target.position || !target.position.current) return null; try { if (typeof target.predictItems === 'function') target.predictItems(); if (typeof target.predictWeapons === 'function') target.predictWeapons(); } catch (e) {} const cur = target.position.current; const vel = (target.velocity || { x: 0, y: 0 }); const timeS = timeMs / 1000; const startPos = target.position.future || cur; return { x: startPos.x + (vel.x || 0) * timeS, y: startPos.y + (vel.y || 0) * timeS }; } // Определяет время полета снаряда _calculatePredictTime(mp, target) { // Логика выбора оружия для расчета времени (должна соответствовать _prepareForShot) const currentWeaponID = (mp.weaponSlot === 0) ? mp.weapon?.primary : mp.weapon?.secondary; const weaponID = this.RANGED_WEAPON_IDS.has(currentWeaponID) ? currentWeaponID : null; if (!weaponID || !Weapons || !Projectiles) return 20; try { const weaponObj = Weapons.find(w => w.id === weaponID); const projectileID = weaponObj?.projectile; if (projectileID !== undefined && Projectiles[projectileID]) { const projData = Projectiles[projectileID]; const speedMult = weaponObj?.spdMultProj || 1; const projectileSpeed = projData.speed * speedMult; if (projectileSpeed > 0 && target.distance) { return (target.distance / projectileSpeed) * 1000; } } } catch (e) {} return 20; } // Логика переключения оружия (Предкит) _prepareForShot(cm, mp) { const RANGED = this.RANGED_WEAPON_IDS; const primaryId = mp.weapon?.primary; const secondaryId = mp.weapon?.secondary; if (typeof primaryId === 'number' && RANGED.has(primaryId) && cm.weapon !== 0) { try { cm.whichWeapon(0); mp.weaponSlot = 0; return true; } catch(e){} } else if (typeof secondaryId === 'number' && RANGED.has(secondaryId) && cm.weapon !== 1 && !RANGED.has(primaryId)) { try { cm.whichWeapon(1); mp.weaponSlot = 1; return true; } catch(e){} } else if ((cm.weapon === 0 && RANGED.has(primaryId)) || (cm.weapon === 1 && RANGED.has(secondaryId))) { // Оружие уже выбрано mp.weaponSlot = cm.weapon; return true; } return false; } // --- ЛОГИКА ШАПОК --- // ⭐ Определяет целевую шапку по текущему выбранному оружию _getTargetHatID(mp) { if (!this.USE_SAMURAI_HAT) return null; // Определяем ID оружия, которое выбрал _prepareForShot const currentWeaponID = (mp.weaponSlot === 0) ? mp.weapon?.primary : mp.weapon?.secondary; // Мушкет (ID 15) -> Самурайская шляпа (ID 20) if (currentWeaponID === 15) { return this.SAMURAI_HAT_ID; } // Лук (9), Арбалет (12), Тройной выстрел (13) -> Лесная шляпа (ID 1) else if ([9, 12, 13].includes(currentWeaponID)) { return this.FOREST_HAT_ID; } return null; } // ⭐ Надевает/поддерживает шапку, сохраняя оригинал _manageHat(cm, mp) { const targetHatId = this._getTargetHatID(mp); if (targetHatId === null) return; const botId = mp.id; const prevHatId = mp.hatID; // 1. Сохраняем оригинальную шапку, если еще не сохранили if (!this._botOriginalHats.has(botId)) { this._botOriginalHats.set(botId, prevHatId); } // 2. Экипируем целевую шапку, если она еще не надета if (prevHatId !== targetHatId) { try { cm.equip && cm.equip(0, targetHatId); // 0 = Hat slot } catch (e) {} } } // ⭐ Восстанавливает шапку при деактивации модуля _restoreOriginalHat(cm, mp) { const botId = mp.id; if (this._botOriginalHats.has(botId)) { const originalHatId = this._botOriginalHats.get(botId); // Восстанавливаем, если текущая шапка – одна из тех, что мы надевали if (mp.hatID === this.SAMURAI_HAT_ID || mp.hatID === this.FOREST_HAT_ID) { try { cm.equip && cm.equip(0, originalHatId); } catch (e) {} } this._botOriginalHats.delete(botId); } } // Выполнение логики атаки для одной сущности (только боты) executeAttack(cm, mp, target) { // 1. ПРЕДКИТ: Выбор дальнобойного оружия const hasRanged = this._prepareForShot(cm, mp); if (!hasRanged) { // Если нет дальнобойного оружия, мы ничего не делаем, включая шапку return; } // 2. УПРАВЛЕНИЕ ШАПКОЙ (если оружие найдено) this._manageHat(cm, mp); // 3. РАСЧЕТ ВРЕМЕНИ И ПОЗИЦИИ ПРЕДИКТА const timeMs = this._calculatePredictTime(mp, target); const aimPos = this._predictTargetPosition(target, timeMs); // Если предикт не удался, используем текущую позицию цели const botPos = mp.position.future || mp.position.current; let angle; if (aimPos && typeof aimPos.x === 'number') { angle = Math.atan2(aimPos.y - botPos.y, aimPos.x - botPos.x); } else { const targetPos = target.position.current; angle = botPos.angle(targetPos); } // 4. НАВОДКА и ПОСТОЯННАЯ АТАКА cm.updateAngle && cm.updateAngle(angle, true); cm.attack && cm.attack(angle); } // Применяет остановку атаки ко всем сущностям (для владельца) applyStopToAll(ModuleHandler) { BowspamPredict.stopAttack(ModuleHandler); // Владелец try { if (typeof myClient !== "undefined" && myClient.clients) { for (const client of myClient.clients) { if (client.isOwner) continue; const cm = client.ModuleHandler; if (cm) BowspamPredict.stopAttack(cm); } } } catch (e) { console.error(`[BowspamPredict:Bots] Error during applyStopToAll:`, e); } } // --- ОСНОВНАЯ ЛОГИКА КАЖДОГО ТИКА --- postTick() { const { ModuleHandler, myPlayer, EnemyManager } = this.client; const ownerCommander = getOwnerCommanderFor(this.client); // 1. ПРОВЕРКА АКТИВАЦИИ const config = ownerCommander && ownerCommander.bowspam; const nowOn = !!(config && config.active); // Ищем ближайшую цель const target = EnemyManager.nearestEnemy; const targetIsValid = BowspamPredict.isValidTarget(target); // --- A. ЛОГИКА ВЫКЛЮЧЕНИЯ/ОСТАНОВКИ --- if (!nowOn || !targetIsValid) { if (this._active) { this._active = false; // Остановка атаки для всех this.applyStopToAll(ModuleHandler); // ⭐ ВОССТАНОВЛЕНИЕ ШАПОК И СБРОС ФЛАГА ДЛЯ ВСЕХ БОТОВ try { if (typeof myClient !== "undefined" && myClient.clients) { for (const client of myClient.clients) { if (client.isOwner) continue; const cm = client.ModuleHandler; const mp = client.myPlayer; if (cm && mp) { this._restoreOriginalHat(cm, mp); // Восстановить шапку cm._bowspamActive = false; // Сбросить флаг паузы } } } } catch (e) {} this._botOriginalHats.clear(); // Очистить карту } return; } // --- B. МОДУЛЬ АКТИВЕН И ЦЕЛЬ НАЙДЕНА --- this._active = true; // --- C. ОБРАБОТКА СУЩНОСТЕЙ (ТОЛЬКО Боты) --- const entities = []; try { if (typeof myClient !== "undefined" && myClient.clients) { for (const client of myClient.clients) { if (client.isOwner) continue; const cm = client.ModuleHandler; const mp = client.myPlayer; if (cm && mp) entities.push({ cm, mp }); } } } catch (e) {} if (entities.length === 0) return; for (const { cm, mp } of entities) { // ⭐ УСТАНОВКА ФЛАГА ПАУЗЫ cm._bowspamActive = true; // Выполнение логики наведения, стрельбы и шапок ТОЛЬКО для ботов this.executeAttack(cm, mp, target); } } } const modules_Bowspam = BowspamPredict; class ClanJoiner { name="clanJoiner"; client; joinCount=0; constructor(client) { this.client = client; } postTick() { const {myPlayer, SocketManager} = this.client; const ownerClan = myClient.myPlayer.clanName; const myClan = myPlayer.clanName; if (null === ownerClan || myClan === ownerClan) { return; } if (0 === this.joinCount) { if (null !== myClan) { SocketManager.leaveClan(); } else { myClient.pendingJoins.add(myPlayer.id); SocketManager.joinClan(ownerClan); } } this.joinCount = (this.joinCount + 1) % 7; } } const bot_modules_ClanJoiner = ClanJoiner; // ======= new: bot_modules_Commander ======= class Commander { name = "commander"; client; // состояние, которое владелец изменяет через чат mode = null; // null | "follow" | "stay" | "circle" | "farm" radius = 175; // для circle (в пикселях) center = "player"; // "player" (по-умолчанию) — можно расширить до "cursor" offset = 0; // общая фаза (поворот всей формации) timestamp = 0; // для отладки/логики constructor(client) { this.client = client; } setMode(mode, params = {}) { this.mode = mode; if ("radius" in params) { // безопасный clamp радиуса let r = Number(params.radius) || this.radius; r = Math.max(40, Math.min(1200, r)); this.radius = r; } if ("center" in params) this.center = params.center; if ("offset" in params) this.offset = Number(params.offset) || 0; this.timestamp = Date.now(); } // owner может использовать postTick (например таймерные команды). Ботам тут обычно не нужно ничего. postTick() { } } const bot_modules_Commander = Commander; // === Bot Commander Helpers === function getOwnerCommanderRoot() { myClient.ModuleHandler = myClient.ModuleHandler || {}; myClient.ModuleHandler.ownerCommander = myClient.ModuleHandler.ownerCommander || { targets:{} }; return myClient.ModuleHandler.ownerCommander; } function ensureTargetObj(root, tid) { root.targets = root.targets || {}; const key = String(tid); if (!root.targets[key]) root.targets[key] = {}; return root.targets[key]; } function setOwnerCommanderField(tid, key, val) { const root = getOwnerCommanderRoot(); const oc = ensureTargetObj(root, tid); if (val === null) delete oc[key]; else oc[key] = val; oc.lastUpdated = Date.now(); return oc; } function readOwnerCommanderField(tid, key) { const root = getOwnerCommanderRoot(); const oc = ensureTargetObj(root, tid); return oc[key]; } // 🟢 Приоритет: последняя команда (global vs personal) function getOwnerCommanderFor(client) { const root = getOwnerCommanderRoot(); const id = client?.myPlayer?.id; const global = root.targets?.all || {}; const personal = id != null ? (root.targets?.[String(id)] || {}) : {}; if (!personal.lastUpdated && !global.lastUpdated) return {}; // у кого lastUpdated свежее → тот и рулит if (personal.lastUpdated && (!global.lastUpdated || personal.lastUpdated > global.lastUpdated)) { return personal; } return global; } class Grinder { name = "grinder"; client; targetPos = null; targetTimeout = 0; static MAP_SIZE = 14400; static RANDOM_WALK_INTERVAL = 10000; static DISTANCE_THRESHOLD = 100; static STOP_DISTANCE = 50; static SHARED_SEARCH_RADIUS = 300; constructor(client) { this.client = client; } generateRandomPos() { const mapWidth = Grinder.MAP_SIZE; const mapHeight = Grinder.MAP_SIZE; const mapCenter = new Vector_Vector(mapWidth / 2, mapHeight / 2); const range = mapWidth * 0.4; const randomX = mapCenter.x + (Math.random() - 0.5) * range * 2; const randomY = mapCenter.y + (Math.random() - 0.5) * range * 2; const clampedX = Math.min(mapWidth, Math.max(0, randomX)); const clampedY = Math.min(mapHeight, Math.max(0, randomY)); return new Vector_Vector(clampedX, clampedY); } postTick() { const { myPlayer, ModuleHandler, ObjectManager, SocketManager } = this.client; if (this.client.isOwner || !myPlayer?.id) return; // ЭФФЕКТИВНАЯ команда. const ownerCommander = getOwnerCommanderFor(this.client); // ⭐ ИСПРАВЛЕНИЕ: Получаем доступ к TempData const tempData = ModuleHandler?.staticModules?.tempData; // Определяем, активен ли режим Grinder const isGrinderActive = ownerCommander && ownerCommander.mode === "grinder"; // ⭐ ИСПРАВЛЕНИЕ: Управляем флагом синхронизации оружия в TempData // Если Grinder активен (isGrinderActive === true), блокируем синхронизацию (disableWeaponSync = true). // Иначе (режим follow, etc.), синхронизация разрешена (disableWeaponSync = false). if (tempData && typeof tempData.setWeaponSyncStatus === 'function') { tempData.setWeaponSyncStatus(isGrinderActive); } // Эта проверка необходима. Если эффективный режим не 'grinder', выходим. if (!isGrinderActive) { // console.log(`[Grinder:LOG:DEBUG] Бот ${myPlayer.id} не в режиме 'grinder'. Выход.`); return; } ownerCommander.grinder = ownerCommander.grinder || {}; const grinderData = ownerCommander.grinder; const targetName = grinderData.target || "food"; const targetLimit = grinderData.threshold ? Number(grinderData.threshold) : Infinity; const typeMap = { wood: 0, food: 1, stone: 2, gold: 3 }; const targetResType = typeMap[targetName]; if (targetResType === undefined) return; // ========================================================= // === ЛОГИКА: ПРОВЕРКА ЛИМИТА РЕСУРСА (И Самовосстановление) === // ========================================================= const currentResCount = myPlayer.resources?.[targetName] || 0; const botId = myPlayer.id; if (currentResCount >= targetLimit) { const personalMode = readOwnerCommanderField(botId, 'mode'); if (personalMode !== "follow") { // СЛУЧАЙ 1: Лимит достигнут впервые ИЛИ личный режим был сброшен. SocketManager.move(null); // Устанавливаем личный режим "follow" с новой меткой времени. setOwnerCommanderField(botId, 'mode', 'follow'); setOwnerCommanderField(botId, 'grinder', null); console.log(`[Grinder:LOG:SUCCESS] ✅ БОТ ${botId} (${myPlayer.nickname}) достиг лимита (${targetName}:${currentResCount} >= ${targetLimit}). Активирован ЛИЧНЫЙ режим 'follow'.`); } else { // СЛУЧАЙ 2: Лимит превышен, личный режим 'follow' установлен, // НО ГЛОБАЛЬНАЯ команда ('grinder') является более свежей и перекрыла его. // Решение: Переустанавливаем личный режим с новой меткой времени. SocketManager.move(null); // Останавливаем любое движение от Grinder перед выходом. setOwnerCommanderField(botId, 'mode', 'follow'); // Обновляем timestamp console.log(`[Grinder:LOG:REASSERT] ⚠️ БОТ ${botId} (${myPlayer.nickname}) принудительно возвращен в 'follow' (глобальная команда была новее).`); } // Выход: Управление движением передается классу Movement, который в следующем тике // увидит личный 'follow' (с самым свежим timestamp) и начнет следование. return; } // ========================================================= const pos = myPlayer.position.current; const searchRadius = 2000; const objects = ObjectManager.retrieveObjects(pos, searchRadius); let nearest = null; let nearestDist = Infinity; for (const obj of objects) { if (!obj?.position || typeof obj.type === "undefined") continue; if (obj.type === targetResType) { const d = pos.distance(obj.position.current); if (d < nearestDist) { nearestDist = d; nearest = obj; } } } // 1. --- ПРИОРИТЕТ 1: РЕСУРС НАЙДЕН (Сбор) --- if (nearest) { grinderData.sharedTargetPos = nearest.position.current; this.targetPos = null; // ========================================================= // === ЛОГИКА: ВЫБОР ЛУЧШЕГО ОРУЖИЯ ДЛЯ ДОБЫЧИ (FIXED) === // ========================================================= let currentWeaponId = myPlayer.weapon?.current ?? myPlayer.weaponIndex; // ⭐ ИСПРАВЛЕНИЕ ReferenceError: вызываем метод из myPlayer const bestGatheringWeaponId = myPlayer.getBestGatheringWeaponId(); if (currentWeaponId !== bestGatheringWeaponId) { // Переключаемся на лучшее оружие ModuleHandler.whichWeapon(bestGatheringWeaponId); currentWeaponId = bestGatheringWeaponId; } let weaponId = currentWeaponId; // ========================================================= let baseRange = BreakMode.WEAPON_BREAK_DIST[weaponId]; if (typeof baseRange !== "number") baseRange = 100; const weaponRange = baseRange + (myPlayer.hitScale || 0); let resourceHitbox = 0; switch (nearest.type) { case 0: resourceHitbox = 55; break; case 1: resourceHitbox = 25; break; case 2: resourceHitbox = 45; break; case 3: resourceHitbox = 39; break; default: resourceHitbox = 40; } const effectiveRange = weaponRange + resourceHitbox; const angle = pos.angle(nearest.position.current); ModuleHandler.cursorAngle = angle; if (nearestDist > effectiveRange) { SocketManager.move(angle); } else { SocketManager.move(null); ModuleHandler.attack(angle); } return; } // 2. --- ПРИОРИТЕТ 2: КООРДИНИРОВАННЫЙ ПОИСК --- if (grinderData.sharedTargetPos) { const sharedPos = grinderData.sharedTargetPos; const distToShared = pos.distance(sharedPos); const moveAngle = pos.angle(sharedPos); if (distToShared < Grinder.SHARED_SEARCH_RADIUS) { SocketManager.move(null); const now = Date.now(); if (!this.targetTimeout || this.targetTimeout < now) { this.targetTimeout = now + Grinder.RANDOM_WALK_INTERVAL; } return; } ModuleHandler.cursorAngle = moveAngle; SocketManager.move(moveAngle); this.targetPos = null; return; } // 3. --- ПРИОРИТЕТ 3: RANDOM MILL (Уникальная случайная цель) --- const now = Date.now(); let targetPos = this.targetPos; let dist = targetPos ? pos.distance(targetPos) : Infinity; if (!this.targetTimeout) { this.targetTimeout = now + Grinder.RANDOM_WALK_INTERVAL; } let mustChooseNewTarget = false; if (!targetPos || dist < Grinder.DISTANCE_THRESHOLD || now > this.targetTimeout) { mustChooseNewTarget = true; } if (mustChooseNewTarget) { this.targetPos = this.generateRandomPos(); this.targetTimeout = now + Grinder.RANDOM_WALK_INTERVAL; targetPos = this.targetPos; dist = pos.distance(targetPos); console.log(`[Grinder:LOG] БОТ ${botId} (${myPlayer.nickname}) ищет цель (RandomMill): X=${targetPos.x.toFixed(0)}, Y=${targetPos.y.toFixed(0)}.`); } if (targetPos) { const moveAngle = pos.angle(targetPos); ModuleHandler.cursorAngle = moveAngle; if (dist > Grinder.STOP_DISTANCE) { SocketManager.move(moveAngle); } else { SocketManager.move(null); } } else { SocketManager.move(null); } } } const bot_modules_Grinder = Grinder; class Movement { name = "movement"; client; stopped = true; _randomTarget = null; _randomTargetTimeout = 0; _lastObstacleTime = 0; _lastLogState = ""; _lastMoveAngle = 0; // Для PlayerFollow (из старого кода) _waitStartTime = 0; // 🔥 НОВОЕ: Для режима squarespin (Пункт 1) _squareCornerIndex = undefined; // --- Данные Лидара для визуализации --- _lidarDebug = { rays: [], bestAngle: null, blocked: false }; // 🔥 НАСТРОЙКИ ВИЗУАЛИЗАЦИИ static VISUALIZATION_ENABLED = false; // 🔥 НАСТРОЙКИ ЛИДАРА static LIDAR_ANGLE_STEP = 0.10; // ~6 градусов static LIDAR_RANGE = 230; static BOT_WIDTH = 40; static SCAN_CONE = 1.5;         // +/- 85 градусов static MAX_DEV_ANGLE = 0.8;     // Макс отклонение перед ломкой constructor(client) { this.client = client; } getSpeedMultiplier() { const { myPlayer } = this.client; let mult = 1.0; if (myPlayer && myPlayer.hatID && Hats[myPlayer.hatID]?.spdMult) mult *= Hats[myPlayer.hatID].spdMult; if (myPlayer && myPlayer.accessoryID && Accessories[myPlayer.accessoryID]?.spdMult) mult *= Accessories[myPlayer.accessoryID].spdMult; return mult; } calculateInertia() { return 8 * this.getSpeedMultiplier(); } getTargetPosition() { const { ModuleHandler } = myClient; return ModuleHandler.lockPosition ? ModuleHandler.lockedPosition : (myClient.myPlayer?.position?.current || new Vector_Vector(0, 0)); } // Из старого кода: рандомная позиция по всей карте generateRandomPos() { const HARDCODED_MAP_SIZE = 14400; let mapWidth = HARDCODED_MAP_SIZE; let mapHeight = HARDCODED_MAP_SIZE; if (this.client.myPlayer?.map && this.client.myPlayer.map.width > 0) { mapWidth = this.client.myPlayer.map.width; mapHeight = this.client.myPlayer.map.height; } const randomX = Math.random() * mapWidth; const randomY = Math.random() * mapHeight; return new Vector_Vector( Math.min(mapWidth, Math.max(0, randomX)), Math.min(mapHeight, Math.max(0, randomY)) ); } // --- ВСПОМОГАТЕЛЬНАЯ ФУНКЦИЯ ДЛЯ КВАДРАТА (ИЗ СТАРОГО КОДА) --- _getSquareCorner(center, cornerIndex, radius) { let x = center.x; let y = center.y; switch (cornerIndex % 4) { case 0: x -= radius; y -= radius; break; // Верх-лево case 1: x += radius; y -= radius; break; // Верх-право case 2: x += radius; y += radius; break; // Низ-право case 3: x -= radius; y += radius; break; // Низ-лево } return new Vector_Vector(x, y); } // ========================================================= // 🎯 ОПРЕДЕЛЕНИЕ ЦЕЛИ (Логика из старого класса) // ========================================================= getDesiredPosition() { const ownerCommander = getOwnerCommanderFor(this.client); const mode = ownerCommander?.mode; const ownerPos = this.getTargetPosition(); const botPos = this.client.myPlayer.position.current; if (!mode || mode === 'stay') return null; // 1. FOLLOW if (mode === 'follow') { return botPos.distance(ownerPos) > (window.BOT_FOLLOW_RADIUS || 175) ? ownerPos : null; } // 2. CURSOR FOLLOW if (mode === 'cursorFollow') { const cursor = cursorPosition(); return botPos.distance(cursor) > 175 ? cursor : null; } // 3. CIRCLE (Статичный круг) - 🔥 ИЗМЕНЕНО для 1 и 4 ботов (Пункт 3) if (mode === 'circle') { const { clients } = myClient; const clientsArr = Array.from(clients); const idx = clientsArr.indexOf(this.client); if (idx === -1) return ownerPos; const total = clientsArr.length; const radius = ownerCommander.circle?.radius || 175; const offset = ownerCommander.offset || 0; let angleForSlot = 0; if (total === 1) { // 1 бот: ставим точку сбоку (0 радиан - вправо) angleForSlot = 0 + offset; } else if (total === 4) { // 4 бота: ставим между сторонних точек (т.е. на углах: PI/4, 3PI/4, ...) angleForSlot = (Math.PI / 2) * idx + Math.PI / 4 + offset; } else { // Для всех остальных случаев используем равномерное распределение angleForSlot = (2 * Math.PI / total) * idx + offset; } return ownerPos.direction(angleForSlot, radius); } // 4. CIRCLE SPIN (Кручение) if (mode === 'circlespin') { const clientsArr = Array.from(myClient.clients); const idx = clientsArr.indexOf(this.client); if (idx === -1) return ownerPos; const total = Math.max(1, clientsArr.length); const radius = ownerCommander.circle?.radius || 175; const baseAngle = (2 * Math.PI / total) * idx; const offset = ownerCommander.offset || 0; // Этот offset меняется в updateCommander, создавая вращение const lead = ownerCommander.lead || 0.06; // Упреждение return ownerPos.direction(baseAngle + offset + lead, radius); } // 5. SQUARE (Статичный квадрат) if (mode === 'square') { const clientsArr = Array.from(myClient.clients); const idx = clientsArr.indexOf(this.client); if (idx === -1) return ownerPos; const cornerIndex = idx % 4; const radius = ownerCommander.square?.radius || 175; // Расчет базы (угла) let pos = this._getSquareCorner(ownerPos, cornerIndex, radius); // Смещение для стека (если ботов больше 4) const stackOffset = Math.floor(idx / 4) * 15; if (stackOffset > 0) { // Сдвигаем немного, чтобы не стояли друг в друге pos.x += Math.cos(Math.PI/4 + cornerIndex * Math.PI/2) * stackOffset; pos.y += Math.sin(Math.PI/4 + cornerIndex * Math.PI/2) * stackOffset; } return pos; } // 6. SQUARE SPIN (Крутящийся квадрат) - 🔥 ИЗМЕНЕНО (Пункт 1) if (mode === 'squarespin') { const clientsArr = Array.from(myClient.clients); const idx = clientsArr.indexOf(this.client); if (idx === -1) return ownerPos; const radius = ownerCommander.square?.radius || 175; // Инициализация индекса, если еще не задан if (this._squareCornerIndex === undefined) { this._squareCornerIndex = idx % 4; // Начальный угол } // Текущая целевая точка const currentTarget = this._getSquareCorner(ownerPos, this._squareCornerIndex, radius); const distToCurrentTarget = botPos.distance(currentTarget); // Если бот достиг точки (или достаточно близко), переходим к следующему углу // Используем пороговое значение 50 для переключения if (distToCurrentTarget < 50) { this._squareCornerIndex = (this._squareCornerIndex + 1) % 4; // Следующий угол // Обновляем целевую точку для возврата (будет возвращена новая позиция) return this._getSquareCorner(ownerPos, this._squareCornerIndex, radius); } // Возвращаем текущую целевую точку return currentTarget; } // 7. RANDOM MILL (Обычный) if (mode === 'randommill') { const now = Date.now(); if (!this._randomTarget || botPos.distance(this._randomTarget) < 100 || now > this._randomTargetTimeout) { this._randomTarget = this.generateRandomPos(); this._randomTargetTimeout = now + 15000; } return this._randomTarget; } return null; } // ========================================================= // 📡 LIDAR SYSTEM (Новая, умная логика) // ========================================================= checkRayCollision(start, end, width) { const { ObjectManager, PlayerManager, myPlayer } = this.client; const dist = start.distance(end); const objects = ObjectManager.retrieveObjects(start, dist + 100); let firstHit = null; let minDist = Infinity; for (const obj of objects) { if (!obj.isDestroyable) continue; if (obj.ownerID === myPlayer.id) continue; if (PlayerManager.isEnemyByID(obj.ownerID, myPlayer) === false) continue; const isBuilding = [6, 7, 8, 9, 15].includes(obj.type); if (!isBuilding) continue; const objPos = obj.position.current; const objScale = (obj.scale || 45); const hitRadius = objScale + width; const distToLine = this.distToSegment(start, end, objPos); if (distToLine < hitRadius) { const d = start.distance(objPos); if (d < minDist && d < dist + objScale) { minDist = d; firstHit = obj; } } } return firstHit; } distToSegment(A, B, P) { const l2 = (A.x - B.x) ** 2 + (A.y - B.y) ** 2; if (l2 === 0) return P.distance(A); let t = ((P.x - A.x) * (B.x - A.x) + (P.y - A.y) * (B.y - A.y)) / l2; t = Math.max(0, Math.min(1, t)); const projX = A.x + t * (B.x - A.x); const projY = A.y + t * (B.y - A.y); return Math.sqrt((P.x - projX) ** 2 + (P.y - projY) ** 2); } normalizeAngle(angle) { let result = angle % (2 * Math.PI); if (result > Math.PI) result -= 2 * Math.PI; else if (result <= -Math.PI) result += 2 * Math.PI; return result; } scanSurroundings(botPos, targetPos) { this._lidarDebug.rays = []; this._lidarDebug.bestAngle = null; const angleToTarget = botPos.angle(targetPos); let bestRayAngle = null; let maxPathScore = -Infinity; let directBlocker = null; const coneStart = -Movement.SCAN_CONE; const coneEnd = Movement.SCAN_CONE; let scanAngles = []; for (let offset = coneStart; offset <= coneEnd; offset += Movement.LIDAR_ANGLE_STEP) { scanAngles.push(angleToTarget + offset); } // Прямой луч для поиска препятствия const centerRayEnd = botPos.direction(angleToTarget, Movement.LIDAR_RANGE); const centerObstacle = this.checkRayCollision(botPos, centerRayEnd, Movement.BOT_WIDTH); if (centerObstacle) { directBlocker = centerObstacle; const obstaclePos = centerObstacle.position.current; const obstacleRadius = (centerObstacle.scale || 45) + Movement.BOT_WIDTH; const distToCenter = botPos.distance(obstaclePos); if (distToCenter > obstacleRadius) { const angleToObstacle = botPos.angle(obstaclePos); const tangentAngle = Math.asin(Math.min(1, obstacleRadius / distToCenter)); scanAngles.push(this.normalizeAngle(angleToObstacle + tangentAngle + 0.2)); // + запас scanAngles.push(this.normalizeAngle(angleToObstacle - tangentAngle - 0.2)); // - запас } } scanAngles = Array.from(new Set(scanAngles)); for (const scanAngle of scanAngles) { const rayEnd = botPos.direction(scanAngle, Movement.LIDAR_RANGE); const obstacle = this.checkRayCollision(botPos, rayEnd, Movement.BOT_WIDTH); let finalRayEnd = rayEnd; let distToObstacle = Movement.LIDAR_RANGE; if (obstacle) { distToObstacle = botPos.distance(obstacle.position.current) - (obstacle.scale || 45) - Movement.BOT_WIDTH / 2; if (distToObstacle > 0) finalRayEnd = botPos.direction(scanAngle, distToObstacle); else distToObstacle = 0; const isCenterRay = Math.abs(this.normalizeAngle(scanAngle - angleToTarget)) < 0.1; if (isCenterRay) directBlocker = obstacle; } this._lidarDebug.rays.push({ start: botPos, end: finalRayEnd, isBlocked: obstacle && distToObstacle < Movement.LIDAR_RANGE }); const deviation = Math.abs(this.normalizeAngle(scanAngle - angleToTarget)); const normalizedDist = distToObstacle / Movement.LIDAR_RANGE; // Формула оценки пути const pathScore = normalizedDist * 1.5 - deviation * 1.0; if (distToObstacle > Movement.BOT_WIDTH * 1.2 && deviation <= Movement.SCAN_CONE) { if (pathScore > maxPathScore) { maxPathScore = pathScore; bestRayAngle = scanAngle; } } } this._lidarDebug.bestAngle = bestRayAngle; if (bestRayAngle === null || maxPathScore < 0) { return { type: "BLOCKED", obstacle: directBlocker }; } return { type: "MOVE", angle: bestRayAngle }; } _updateLookAngle(currentMode, moveAngle) { const { ModuleHandler, myPlayer } = this.client; const botPos = myPlayer.position.current; let aimAngle = null; // В спинах бот должен смотреть наружу или на курсор if (currentMode === 'squarespin' || currentMode === 'circlespin') { // Можно добавить логику, чтобы он смотрел от центра // Но оставим дефолтную (на курсор), как в старом коде } if (currentMode === 'randommill' || currentMode === 'playerFollow') { aimAngle = moveAngle !== undefined ? moveAngle : this._lastMoveAngle; if (aimAngle !== null) ModuleHandler.reverseCursorAngle = (aimAngle + Math.PI) % (2 * Math.PI); } else if (currentMode !== 'grinder') { try { const cursor = cursorPosition(); aimAngle = botPos.angle(cursor); ModuleHandler.reverseCursorAngle = cursor.angle(botPos); } catch (e) { aimAngle = moveAngle !== undefined ? moveAngle : this._lastMoveAngle; if (aimAngle !== null) ModuleHandler.reverseCursorAngle = (aimAngle + Math.PI) % (2 * Math.PI); } } if (aimAngle !== null) ModuleHandler.cursorAngle = aimAngle; } drawOverlay(ctx) { if (!Movement.VISUALIZATION_ENABLED) return; try { const myPlayer = this.client.myPlayer; if (!myPlayer || !myPlayer.position) return; const myPos = myPlayer.position.current; for (const ray of this._lidarDebug.rays) { const blockedColor = "rgba(205, 92, 92, 0.50)"; const freeColor = "rgba(173, 216, 230, 0.1)"; const color = ray.isBlocked ? blockedColor : freeColor; Aibm.Renderer.line(ctx, ray.start, ray.end, color, ray.isBlocked ? 0.5 : 1.5); } if (this._lidarDebug.bestAngle !== null) { const bestEnd = myPos.direction(this._lidarDebug.bestAngle, 120); Aibm.Renderer.line(ctx, myPos, bestEnd, "#00bfff", 1, 2.5); } const target = this.getDesiredPosition(); // Для playerFollow цель может быть в sharedTargetPos if (target) { Aibm.Renderer.line(ctx, myPos, target, "rgba(255, 255, 255, 0.4)", 0.5, 1); } } catch (e) {} } // ========================================================= // ⚙️ ГЛАВНЫЙ ЦИКЛ (POST TICK) // ========================================================= postTick() { const { myPlayer, ModuleHandler, SocketManager, PlayerManager } = this.client; if (!myPlayer || !myPlayer.inGame) return; const ownerCommander = getOwnerCommanderFor(this.client); const currentMode = ownerCommander?.mode; const botPos = myPlayer.position.current; const botId = myPlayer.id; // --- 1. Игнор и Авто-Милл --- if (ModuleHandler.moduleActive) { SocketManager.move(null); this.stopped = true; return; } if (currentMode === "grinder") return; if (currentMode === "exitbot") { this.client.disconnect(); if (typeof window.setOwnerCommanderField === 'function') window.setOwnerCommanderField(botId, 'mode', null); return; } const am = ModuleHandler.staticModules.autoMill; if (am) { // 🔥 ИЗМЕНЕНО: AutoMill теперь работает ТОЛЬКО при randommill и глобальных настройках (Пункт 2) am.toggle = currentMode === 'randommill' || (typeof Settings !== 'undefined' && Settings.automill); } // --- 2. ЛОГИКА PLAYER FOLLOW (Восстановлена из старого кода) --- if (currentMode === "playerFollow") { const targetPlayerId = ownerCommander?.targetPlayerId; if (!targetPlayerId || !PlayerManager) { SocketManager.move(null); return; } // Инициализация состояния ownerCommander.playerFollow = ownerCommander.playerFollow || {}; const pfData = ownerCommander.playerFollow; pfData.searchPhase = pfData.searchPhase || "SEARCH_START"; const targetPlayer = PlayerManager.playerData.get(Number(targetPlayerId)); let targetFound = false; let foundPos = null; // А. Проверка видимости цели if (targetPlayer?.position?.current) { const tp = targetPlayer.position.current; if (tp.x !== 0 || tp.y !== 0) { targetFound = true; foundPos = tp; } } // Б. Если цель найдена if (targetFound) { pfData.sharedTargetPos = { x: foundPos.x, y: foundPos.y }; if (pfData.searchPhase !== "FOLLOW") pfData.searchPhase = "FOLLOW"; setOwnerCommanderField('all', 'playerFollow', pfData); this._randomTarget = null; this._waitStartTime = 0; // Двигаемся к игроку const dist = botPos.distance(foundPos); const followDist = ownerCommander?.followDistance || 175; if (dist > followDist) { // 🔥 Используем ЛИДАР для следования за игроком, чтобы не застревать const scanRes = this.scanSurroundings(botPos, foundPos); const moveAngle = scanRes.type === "MOVE" ? scanRes.angle : botPos.angle(foundPos); // Брейкмод работает отдельно, здесь просто движение SocketManager.move(moveAngle); this._updateLookAngle(currentMode, moveAngle); this.stopped = false; } else { SocketManager.move(null); this.stopped = true; // Смотрим туда же, куда и цель const aimAngle = targetPlayer.angle; ModuleHandler.cursorAngle = aimAngle; ModuleHandler.reverseCursorAngle = aimAngle + Math.PI; } return; // Выходим, так как playerFollow обработан } // В. Если цель потеряна -> Логика поиска (State Machine) // 1. FOLLOW -> GOTO_LAST if (pfData.searchPhase === "FOLLOW") { pfData.searchPhase = "GOTO_LAST"; setOwnerCommanderField('all', 'playerFollow', pfData); } // 2. GOTO_LAST (Идем в последнюю известную точку) if (pfData.searchPhase === "GOTO_LAST" && pfData.sharedTargetPos) { const lastPos = new Vector_Vector(pfData.sharedTargetPos.x, pfData.sharedTargetPos.y); const dist = botPos.distance(lastPos); if (dist > 100) { // Используем лидар для прохода к точке сбора const scanRes = this.scanSurroundings(botPos, lastPos); const ang = scanRes.type === "MOVE" ? scanRes.angle : botPos.angle(lastPos); SocketManager.move(ang); this._updateLookAngle(currentMode, ang); this.stopped = false; } else { // Пришли pfData.searchPhase = "WAIT_AT_LAST"; setOwnerCommanderField('all', 'playerFollow', pfData); this.stopped = true; SocketManager.move(null); } return; } // 3. WAIT_AT_LAST (Ждем 25 сек) if (pfData.searchPhase === "WAIT_AT_LAST") { if (this._waitStartTime === 0) this._waitStartTime = Date.now(); if (Date.now() - this._waitStartTime > 25000) { pfData.searchPhase = "SEARCH_RANDOM"; setOwnerCommanderField('all', 'playerFollow', pfData); this._waitStartTime = 0; } SocketManager.move(null); this.stopped = true; // Крутим головой ModuleHandler.cursorAngle = (Date.now() / 500) % (Math.PI * 2); return; } // 4. SEARCH_RANDOM (Ищем рандомно) if (pfData.searchPhase === "SEARCH_RANDOM" || pfData.searchPhase === "SEARCH_START") { const now = Date.now(); if (!this._randomTarget || botPos.distance(this._randomTarget) < 100 || now > this._randomTargetTimeout) { this._randomTarget = this.generateRandomPos(); this._randomTargetTimeout = now + 10000; } const scanRes = this.scanSurroundings(botPos, this._randomTarget); const ang = scanRes.type === "MOVE" ? scanRes.angle : botPos.angle(this._randomTarget); SocketManager.move(ang); this.stopped = false; this._updateLookAngle(currentMode, ang); return; } return; // Конец playerFollow } // --- 3. ОБЩАЯ ЛОГИКА ДЛЯ ОСТАЛЬНЫХ РЕЖИМОВ (Movement, Circle, Square, etc) --- const finalTarget = this.getDesiredPosition(); if (Date.now() - this._lastObstacleTime < 100) { SocketManager.move(null); this.stopped = true; this._updateLookAngle(currentMode); return; } if (finalTarget) { const bm = ModuleHandler.staticModules.breakMode; const isBreakModeAllowed = (ownerCommander && ownerCommander.breakMode && ownerCommander.breakMode.active); const distToTarget = botPos.distance(finalTarget); // Финишная прямая (отключаем лидар для точности) if (distToTarget < 40) { if (distToTarget > 10) { // Дистанция остановки const ang = botPos.angle(finalTarget); SocketManager.move(ang); this.stopped = false; this._updateLookAngle(currentMode, ang); } else { SocketManager.move(null); this.stopped = true; this._updateLookAngle(currentMode); // Если достигнута точка в squarespin, то в следующем тике будет новый таргет } return; } let moveAngle = null; let needToBreak = false; let breakTarget = null; // Используем ЛИДАР если включен BreakMode if (isBreakModeAllowed && bm) { const scanResult = this.scanSurroundings(botPos, finalTarget); if (scanResult.type === "MOVE") { moveAngle = scanResult.angle; bm.suppressAutoBreak = true; bm.setOverrideTarget(null); bm.clearIgnored(); } else { // BLOCKED needToBreak = true; breakTarget = scanResult.obstacle; if (!breakTarget) breakTarget = this.checkRayCollision(botPos, finalTarget, 30); } } else { // Если BreakMode выключен - просто идем к цели moveAngle = botPos.angle(finalTarget); if (bm) bm.suppressAutoBreak = false; } // АТАКА (BreakMode) if (needToBreak && bm && breakTarget) { bm.suppressAutoBreak = false; this._lastObstacleTime = Date.now(); const obstacleRadius = (breakTarget.scale || 45); const OPTIMAL_ATTACK_DIST = 40 + obstacleRadius + 20; const BRAKE_TRIGGER_DIST = OPTIMAL_ATTACK_DIST + this.calculateInertia(); const distToObj = botPos.distance(breakTarget.position.current); if (distToObj > BRAKE_TRIGGER_DIST) { const approachAngle = botPos.angle(breakTarget.position.current); SocketManager.move(approachAngle); this.stopped = false; bm.setOverrideTarget(null); this._updateLookAngle(currentMode, approachAngle); } else { SocketManager.move(null); this.stopped = true; const aimAngle = botPos.angle(breakTarget.position.current); ModuleHandler.cursorAngle = aimAngle; ModuleHandler.updateAngle(aimAngle, true); bm.setOverrideTarget(breakTarget); this._updateLookAngle(currentMode, aimAngle); } return; } // ДВИЖЕНИЕ (Если не бьем) if (moveAngle !== null) { SocketManager.move(moveAngle); this._lastMoveAngle = moveAngle; this._updateLookAngle(currentMode, moveAngle); this.stopped = false; } else { SocketManager.move(null); } } else { // Нет цели SocketManager.move(null); this.stopped = true; this._updateLookAngle(currentMode); } } } const bot_modules_Movement = Movement; class AutoReload { name = "autoReload"; client; // 🔥 НОВЫЕ: ID дальнобойного оружия RANGED_WEAPON_IDS = new Set([9, 12, 13, 15]); // Слот (0 или 1), который мы сознательно держим для дозарядки в данный момент. _chargingSlot = null; // Флаг, который предотвращает немедленное вмешательство FastWeaponSwitch _returnedAfterReload = false; // Интервал (в тиках) после возврата RETURN_COOLDOWN_TICKS = 1; _cooldownCounter = 0; constructor(client) { this.client = client; } // Нужна ли перезарядка для слота (primary/secondary) isReloadNeeded(player, typeString) { try { const reload = player.reload[typeString]; const weaponID = player.weapon[typeString]; if (weaponID === null || weaponID === 0 || !reload || reload.max <= 0) { return false; } return reload.current < reload.max - 0.5; } catch (e) { return false; } } // Метод для проверки/сброса кулдауна checkCooldownAndDecrement() { if (this._cooldownCounter > 0) { this._cooldownCounter--; return true; } return false; } postTick() { const myPlayer = this.client.myPlayer; const moduleHandler = this.client.ModuleHandler; if (!myPlayer || !myPlayer.inGame || !moduleHandler) return; // --- БЛОКИРОВКИ --- let autoReloadEnabled = true; try { if ((typeof Settings !== 'undefined' && Settings.autoreload === false) || (this.client.settings && this.client.settings.autoreload === false)) { autoReloadEnabled = false; } } catch (e) {} if (!autoReloadEnabled) { this._chargingSlot = null; this._cooldownCounter = 0; return; } try { const ab = moduleHandler.staticModules && moduleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) { this._chargingSlot = null; return; } } catch (e) {} if (moduleHandler.attackingState !== 0) { this._chargingSlot = null; return; } // --- КОНЕЦ БЛОКИРОВОК --- const primaryType = 0; const secondaryType = 1; const currentHeld = (typeof moduleHandler.currentHolding !== 'undefined') ? moduleHandler.currentHolding : 0; // ======================================================= // 🔥 ИСПРАВЛЕННАЯ ЛОГИКА ВОЗВРАТА НА СЛОТ 0 (только для дальнего боя) // ======================================================= if (this._chargingSlot !== null) { const slotString = this._chargingSlot === 0 ? 'primary' : 'secondary'; const weaponId = this._chargingSlot === 0 ? myPlayer.weapon.primary : myPlayer.weapon.secondary; if (!this.isReloadNeeded(myPlayer, slotString)) { // Оружие полностью заряжено. // Проверяем, является ли перезаряженное оружие дальнобойным if (this.RANGED_WEAPON_IDS.has(weaponId)) { // Если да, переключаемся на слот 0. moduleHandler.whichWeapon(primaryType); // Активируем кулдаун, чтобы FastWeaponSwitch не перехватил управление сразу this._cooldownCounter = this.RETURN_COOLDOWN_TICKS; } // Сбрасываем флаг, независимо от того, переключились мы или нет this._chargingSlot = null; return; } } // Если мы в кулдауне после возврата, просто выходим if (this.checkCooldownAndDecrement()) { return; } // ... (остальная часть postTick без изменений) ... const primaryNeeds = this.isReloadNeeded(myPlayer, 'primary'); const secondaryNeeds = this.isReloadNeeded(myPlayer, 'secondary'); // Если ничего не нуждается в перезарядке, мы не вмешиваемся. if (!primaryNeeds && !secondaryNeeds) { return; } // Если мы уже начали дозарядку — держим его if (this._chargingSlot !== null) { if (currentHeld !== this._chargingSlot) { moduleHandler.whichWeapon(this._chargingSlot); } return; // Ждём завершения зарядки } // Выбираем слот для переключения (тот, у которого меньший ratio) let chooseSlot = null; if (primaryNeeds && !secondaryNeeds) chooseSlot = primaryType; else if (!primaryNeeds && secondaryNeeds) chooseSlot = secondaryType; else { const pr = myPlayer.reload.primary.current / Math.max(1, myPlayer.reload.primary.max); const sr = myPlayer.reload.secondary.current / Math.max(1, myPlayer.reload.secondary.max); chooseSlot = (sr < pr) ? secondaryType : primaryType; } // Переключаемся на выбранный слот if (chooseSlot !== null && chooseSlot !== currentHeld) { const weaponId = (chooseSlot === 0) ? myPlayer.weapon.primary : myPlayer.weapon.secondary; if (!weaponId || weaponId === 0) return; moduleHandler.whichWeapon(chooseSlot); // Запоминаем, что мы начали дозарядку this._chargingSlot = chooseSlot; } } } const modules_AutoReload = AutoReload; class FastWeaponSwitch { name = "fastWeaponSwitch"; client; // Ссылка на модуль AutoReload для проверки его состояния autoReloadModule = null; syncShotModule = null; _lastFastCheck = 0; FAST_CHECK_INTERVAL = 0; // ms constructor(client) { this.client = client; } setDependencies(modules) { this.autoReloadModule = modules.autoReload; this.syncShotModule = modules.syncShot; } postTick() { const myPlayer = this.client.myPlayer; const moduleHandler = this.client.ModuleHandler; if (!myPlayer || !myPlayer.inGame || !moduleHandler) return; if (this.syncShotModule && this.syncShotModule._isFiringCombo) { return; } // 🔥 ИСПРАВЛЕНИЕ: ДОБАВЛЕНИЕ ПРОВЕРКИ ВКЛЮЧЕНИЯ/ОТКЛЮЧЕНИЯ МОДУЛЯ let fastSwitchEnabled = true; try { // Проверяем глобальный объект Settings и локальные настройки клиента if ((typeof Settings !== 'undefined' && Settings.fastWeaponSwitch === false) || (this.client.settings && this.client.settings.fastWeaponSwitch === false)) { fastSwitchEnabled = false; } } catch (e) {} if (!fastSwitchEnabled) { // Если модуль выключен, выходим return; } // --- КОНЕЦ ИСПРАВЛЕНИЯ --- // --- БЛОКИРОВКИ --- // 1. Проверяем, не активна ли перезарядка в AutoReload if (this.autoReloadModule) { if (this.autoReloadModule._chargingSlot !== null) return; if (this.autoReloadModule._cooldownCounter > 0) return; } // 2. Проверяем атаку/Autobreak if (moduleHandler.attackingState !== 0) return; try { const ab = moduleHandler.staticModules && moduleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} // Проверка частоты const now = Date.now(); if (now - this._lastFastCheck < this.FAST_CHECK_INTERVAL) return; this._lastFastCheck = now; // --- КОНЕЦ БЛОКИРОВОК --- // ... (остальная логика FastWeaponSwitch) const currentHeld = (typeof moduleHandler.currentHolding !== 'undefined') ? moduleHandler.currentHolding : 0; const primaryId = myPlayer.weapon.primary || 0; const secondaryId = myPlayer.weapon.secondary || 0; const getWeaponObj = id => { try { if (!id) return null; return Weapons.find(w => w.id === id) || null; } catch (e) { return null; } }; const pObj = getWeaponObj(primaryId); const sObj = getWeaponObj(secondaryId); const pSpd = (pObj && typeof pObj.spdMult === 'number') ? pObj.spdMult : 1; const sSpd = (sObj && typeof sObj.spdMult === 'number') ? sObj.spdMult : 1; // Если есть явный выигрыш по скорости — переключаемся const THRESH = 0.02; // минимальная разница if (sObj && (sSpd - pSpd) > THRESH && currentHeld !== 1) { moduleHandler.whichWeapon(1); } else if (pObj && (pSpd - sSpd) > THRESH && currentHeld !== 0) { moduleHandler.whichWeapon(0); } } } const modules_FastWeaponSwitch = FastWeaponSwitch; class Sense { name = "sense"; client; constructor(client) { this.client = client; } // если нужен периодический код: postTick() { const movement = this.client.ModuleHandler.staticModules.movement; // например, прочитать/изменить направление: // movement.someMethodOrProperty(...) } } const bot_modules_Sense = Sense; // как у остальных bot_* модулей class Instakill { name = "instakill"; client; _enabled = false; _target = null; _markerTimeout = null; _executing = false; _angleInterval = null; _prevWeaponSlot = null; _rotationInterval = null; // Интервал для вращения крестика (сохранен как null, но не используется) static COMMAND_DELAY_MS = 0; // Тайминги по-умолчанию — будут динамически подстраиваться static MELEE_HIT_DELAY = 120; static RANGED_HIT_DELAY = 80; // Эта константа больше не используется для задержки комбо static RESTORE_DELAY = 120; static RANGE_BUFFER = 5; static RANGE_MULTIPLIER = 1.0; // Память о последней цели (мс) static TARGET_MEMORY = 1200; // Поведение: выключать после одного комбо autoDisableAfterOne = true; // ID шапки Solid Hat для проверки static SOLID_HAT_ID = 6; constructor(client) { this.client = client; } _delay(ms) { return new Promise(resolve => setTimeout(resolve, Math.max(0, ms))); } // Получаем эффективный радиус атаки ПЕРВОГО оружия (melee, слот 0) getPrimaryWeaponRange(myPlayer) { if (!myPlayer) return 0; let primaryId = myPlayer.getItemByType?.(0); let maxRange = 0; try { if (typeof Items !== 'undefined') { // Проверяем только первое оружие (melee, слот 0) if (primaryId && Items[primaryId] && typeof Items[primaryId].range === 'number') { maxRange = Items[primaryId].range; } } } catch (e) {} if (!maxRange || maxRange <= 0) { try { let weaponId = primaryId || null; if (!weaponId && typeof myPlayer.weaponIndex === 'number') weaponId = myPlayer.weaponIndex; if (typeof BreakMode !== 'undefined' && BreakMode.WEAPON_BREAK_DIST) { const base = BreakMode.WEAPON_BREAK_DIST[weaponId]; if (typeof base === 'number') maxRange = Math.max(maxRange, base); } } catch (e) {} } const hitScale = (myPlayer.hitScale || 0); maxRange = (maxRange + hitScale) * Instakill.RANGE_MULTIPLIER; return maxRange; } // Рисуем маркер цели (Удалена вся логика вращения) highlightTarget(target) { if (!target || !target.position) return; try { const isLocalClient = (typeof myClient !== 'undefined' && this.client === myClient); if (!Settings.instakillCrossForBots && !isLocalClient) return; } catch (e) {} // Этот блок обычно рисует статический крестик, оставляем как резерв try { if (typeof window.__aibm_drawCross === 'function') window.__aibm_drawCross(target.position.current.x, target.position.current.y, "#ff6666", 50, 3000); } catch (e) {} try { const now = Date.now(); const prev = window.__aibm_instaCross; window.__aibm_instaCross = { x: (prev && typeof prev.x === 'number') ? prev.x : target.position.current.x, y: (prev && typeof prev.y === 'number') ? prev.y : target.position.current.y, targetX: target.position.current.x, targetY: target.position.current.y, color: '#ff6666', size: 50, thickness: 8, until: now + 3000, lastUpdated: now, rotation: 0 }; } catch (e) {} } enable() { this._enabled = true; this._executing = false; console.log('[Instakill] ENABLED'); } disable() { this._enabled = false; this._target = null; this._markerTimeout = null; window.__aibm_instaCross = null; try { if (typeof window.__aibm_clearCrossPersistent === 'function') window.__aibm_clearCrossPersistent(); else window.__aibm_instaCrossPersistent = null; } catch (e) {} try { if (this._angleInterval) { clearInterval(this._angleInterval); this._angleInterval = null; } } catch (e) {} this._executing = false; console.log('[Instakill] DISABLED'); } // Проверка — можно ли исполнить инста на цели canExecuteInsta(target, myPlayer) { if (!target || !myPlayer) return false; try { // Если есть встроенная оценка — используем её if (typeof target.canPossiblyInstakill === 'function') { const val = target.canPossiblyInstakill(); if (typeof val === 'number') return val > 0; } } catch (e) {} // Фолбек — грубая оценка по доступному урону try { let dmg = 0; const meleeId = myPlayer.getItemByType?.(0); const rangedId = myPlayer.getItemByType?.(1); if (meleeId && typeof Items !== 'undefined' && Items[meleeId]) dmg += (Items[meleeId].dmg || 0); if (rangedId && typeof Items !== 'undefined' && Items[rangedId]) dmg += (Items[rangedId].dmg || 0); // Учитываем возможные множители (шапки/эффекты) — консервативно +20% dmg *= 1.2; if (typeof target.health === 'number') return dmg >= target.health; } catch (e) {} return false; } // Рассчитать стратегию нанесения урона (возвращаем зарплатную оценку) calculateDamageStrategy(target, myPlayer) { const res = { primaryDamage: 0, secondaryDamage: 0, totalDamage: 0, shouldUsePoison: false }; if (!myPlayer) return res; try { // Попытка использовать существующие утилиты проекта if (typeof myPlayer.getMaxWeaponDamage === 'function') { try { const primary = myPlayer.getItemByType?.(0); const secondary = myPlayer.getItemByType?.(1); if (primary) res.primaryDamage = myPlayer.getMaxWeaponDamage(primary, false) || 0; if (secondary) res.secondaryDamage = myPlayer.getMaxWeaponDamage(secondary, false) || 0; } catch (e) {} } else { const meleeId = myPlayer.getItemByType?.(0); const rangedId = myPlayer.getItemByType?.(1); if (meleeId && typeof Items !== 'undefined' && Items[meleeId]) res.primaryDamage = Items[meleeId].dmg || 0; if (rangedId && typeof Items !== 'undefined' && Items[rangedId]) res.secondaryDamage = Items[rangedId].dmg || 0; } res.totalDamage = res.primaryDamage + res.secondaryDamage; try { if (typeof myPlayer.canDealPoison === 'function') { const p = myPlayer.canDealPoison(); if (p && p.isAble) res.shouldUsePoison = true; } } catch (e) {} } catch (e) {} return res; } async _executeInstaCombo(predicted, ang, myPlayer, ModuleHandler, prevHat) { this._executing = true; console.log(`[Instakill] Executing combo with ${Instakill.COMMAND_DELAY_MS}ms command delay.`); const HOLD1 = Instakill.MELEE_HIT_DELAY; const MELEE_ATTACK_DURATION = 20; const DELAY = Instakill.COMMAND_DELAY_MS; let elapsed = 0; // Для точного вычисления задержки HOLD1 // 1. Настройка прицеливания (поддерживаем, пока выполняется комбо) try { if (this._angleInterval) clearInterval(this._angleInterval); } catch (e) {} try { this._angleInterval = setInterval(() => { try { ModuleHandler.updateAngle && ModuleHandler.updateAngle(Math.atan2(predicted.y - myPlayer.position.current.y, predicted.x - myPlayer.position.current.x), true); } catch (e) {} }, 30); } catch (e) {} try { // T=0: START COMBO // 1. MELEE ATTACK 1 (Slot 0) with Bull Hat (ID 7) try { ModuleHandler.equip && ModuleHandler.equip(0, 7); } catch (e) { console.error('[Instakill] equip bull hat error', e); } await this._delay(DELAY); elapsed += DELAY; try { ModuleHandler.updateAngle && ModuleHandler.updateAngle(ang, true); } catch (e) {} try { ModuleHandler.whichWeapon && ModuleHandler.whichWeapon(0); } catch (e) {} await this._delay(DELAY); elapsed += DELAY; try { ModuleHandler.attack && ModuleHandler.attack(ang); } catch (e) {} await this._delay(DELAY); elapsed += DELAY; // 2. Ждем время удара первого оружия (HOLD1 - уже потраченное время) const remainingWait = Math.max(0, HOLD1 - elapsed); await this._delay(remainingWait); // T=HOLD1: MELEE ATTACK 2 SETUP // 2a. Stop Attack 1 try { ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e) {} await this._delay(DELAY); // Задержка для гарантии остановки // 2b. Equip Turret Hat (ID 53) try { ModuleHandler.equip && ModuleHandler.equip(0, 53); } catch (e) { console.error('[Instakill] equip turret error', e); } await this._delay(DELAY); // 2c. MELEE Attack 2 Start (IMMEDIATE) try { ModuleHandler.updateAngle && ModuleHandler.updateAngle(ang, true); } catch (e) {} try { ModuleHandler.whichWeapon && ModuleHandler.whichWeapon(1); } catch (e) {} // Слот 1 await this._delay(DELAY); try { ModuleHandler.attack && ModuleHandler.attack(ang); } catch (e) {} await this._delay(DELAY); // 3. Ждем минимальное время для срабатывания удара await this._delay(MELEE_ATTACK_DURATION); // 3a. Stop Attack 2 try { ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e) {} await this._delay(DELAY); // Задержка для гарантии остановки // 4. Hat Restore if (prevHat && prevHat !== 7 && prevHat !== 53) { await this._delay(Instakill.RESTORE_DELAY); // Ждем время восстановления try { ModuleHandler.equip && ModuleHandler.equip(0, prevHat); } catch (e) {} await this._delay(DELAY); // Задержка после восстановления шапки } } catch (e) { console.error('[Instakill] combo execution error', e); } finally { // 5. Global cleanup try { if (this._angleInterval) { clearInterval(this._angleInterval); this._angleInterval = null; } } catch (e) {} this._executing = false; if (this.autoDisableAfterOne) this.disable(); console.log('[Instakill] Combo finished and cleaned up.'); } } // Подогнать тайминги под множитель скорости optimizeAttackTiming(myPlayer) { try { const mult = (typeof myPlayer.getWeaponSpeedMult === 'function') ? (myPlayer.getWeaponSpeedMult() || 1) : 1; if (mult > 0) { Instakill.MELEE_HIT_DELAY = Math.max(0, Math.round(120 / mult)); Instakill.RANGED_HIT_DELAY = Math.max(0, Math.round(80 / mult)); } } catch (e) {} } // Предсказать позицию цели (простая линейная предсказание) predictTargetPosition(target) { if (!target || !target.position || !target.position.current) return null; try { if (typeof target.predictItems === 'function') target.predictItems(); if (typeof target.predictWeapons === 'function') target.predictWeapons(); if (typeof target.updateReloads === 'function') target.updateReloads(); } catch (e) {} const cur = target.position.current; const vel = (target.velocity || { x: 0, y: 0 }); // Учитываем только задержку ближнего боя и минимальную задержку дальнего const time = (Instakill.MELEE_HIT_DELAY + 20) / 1000; return { x: cur.x + (vel.x || 0) * time, y: cur.y + (vel.y || 0) * time }; } // Опциональная проверка шипов checkSpikeOpportunity(target) { try { if (typeof target.detectSpikeInsta === 'function') target.detectSpikeInsta(); if (typeof target.potentialDamage === 'number') return target.potentialDamage >= 40; } catch (e) {} return false; } // Основной цикл — обновлённый и более защищённый postTick() { if (!this._enabled || this._executing) return; try { const { ModuleHandler, myPlayer, EnemyManager } = this.client; if (!myPlayer || !ModuleHandler || !EnemyManager) return; try { const isLocalClient = (typeof myClient !== 'undefined' && this.client === myClient); if (!isLocalClient && !Settings.instakillForBots) return; // ⭐ Проверка: Не запускать, если активно OneTick if (ModuleHandler.staticModules.oneTick && ModuleHandler.staticModules.oneTick.active) return; } catch (e) {} let target = EnemyManager.nearestEnemy; const now = Date.now(); if (!target && this._target && (now - (this._targetTime || 0) < Instakill.TARGET_MEMORY)) { target = this._target; } if (!target || !target.position) return; // ⭐ ИСПРАВЛЕНИЕ: Всегда сохраняем и рисуем цель, независимо от Solid Hat. this._target = target; this._targetTime = now; this.highlightTarget(target); if (this._markerTimeout) clearTimeout(this._markerTimeout); this._markerTimeout = setTimeout(() => { window.__aibm_instaCross = null; }, 3500); // ⭐ ПРОВЕРКА НА SOLID HAT (теперь только прерывает комбо) try { if (Settings.instakillCheckSolidHat && target.hatID === Instakill.SOLID_HAT_ID) { // Возвращаемся, чтобы не выполнять комбо, но крестик уже нарисован return; } } catch (e) { /* Если Settings еще не инициализирован, игнорируем */ } // Продолжение цикла, если нет Solid Hat if (!this.canExecuteInsta(target, myPlayer)) return; this.optimizeAttackTiming(myPlayer); // МОДИФИКАЦИЯ: Используем радиус только первого оружия (melee) const primaryRange = this.getPrimaryWeaponRange(myPlayer); // НОВОЕ ИСПРАВЛЕНИЕ: Проверяем расстояние до ТЕКУЩЕЙ позиции цели. const distToTarget = myPlayer.position.current.distance(target.position.current); if (distToTarget > (primaryRange + Instakill.RANGE_BUFFER)) { // Если цель слишком далеко, сбрасываем ее и выходим. this._target = null; return; } // ⭐ ПРОВЕРКА ГОТОВНОСТИ (КД): ПОЛНОСТЬЮ УДАЛЕНА // Если цель в радиусе и все готово, рассчитываем предсказанную позицию для точного прицеливания. const predicted = this.predictTargetPosition(target) || target.position.current; const strategy = this.calculateDamageStrategy(target, myPlayer); this._executing = true; console.log('[Instakill] Executing optimized combo', strategy); try { if (this._angleInterval) clearInterval(this._angleInterval); } catch (e) {} try { this._angleInterval = setInterval(() => { try { ModuleHandler.updateAngle && ModuleHandler.updateAngle(Math.atan2(predicted.y - myPlayer.position.current.y, predicted.x - myPlayer.position.current.x), true); } catch (e) {} }, 30); } catch (e) {} const ang = Math.atan2(predicted.y - myPlayer.position.current.y, predicted.x - myPlayer.position.current.x); const prevHat = myPlayer.hatID; this._executeInstaCombo(predicted, ang, myPlayer, ModuleHandler, prevHat); // Сохраняем слот оружия, но не используем его для возврата try { this._prevWeaponSlot = (myPlayer.isMainPlayer ? myPlayer.weaponSlot : null); } catch (e) { this._prevWeaponSlot = null; } const HOLD1 = Instakill.MELEE_HIT_DELAY; const MELEE_ATTACK_DURATION = 20; // Небольшая задержка, теперь используется для остановки второго melee удара try { // 1. MELEE ATTACK 1 (Slot 0) with Bull Hat (T=0) try { ModuleHandler.equip && ModuleHandler.equip(0, 7); } catch (e) { console.error('[Instakill] equip bull hat error', e); } try { ModuleHandler.updateAngle && ModuleHandler.updateAngle(ang, true); } catch (e) {} try { ModuleHandler.whichWeapon && ModuleHandler.whichWeapon(0); } catch (e) {} try { ModuleHandler.attack && ModuleHandler.attack(ang); } catch (e) {} // ⭐ Сброс КД первого оружия: УДАЛЕНО setTimeout(() => { // 2. MELEE ATTACK 2 SETUP (T=HOLD1) try { ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e) {} // Stop melee attack 1 try { ModuleHandler.equip && ModuleHandler.equip(0, 53); } catch (e) { console.error('[Instakill] equip turret error', e); } // ⭐ Сброс КД Turret Hat: УДАЛЕНО // MELEE Attack 2 Start (IMMEDIATE) try { ModuleHandler.updateAngle && ModuleHandler.updateAngle(ang, true); } catch (e) {} try { ModuleHandler.whichWeapon && ModuleHandler.whichWeapon(1); } catch (e) {} try { ModuleHandler.attack && ModuleHandler.attack(ang); } catch (e) {} // ⭐ Сброс КД второго оружия: УДАЛЕНО // 3. Melee Attack Stop (Delayed T=HOLD1 + MELEE_ATTACK_DURATION) // Небольшая задержка, чтобы гарантировать срабатывание атаки setTimeout(() => { try { ModuleHandler.stopAttack && ModuleHandler.stopAttack(); } catch (e) {} // Stop melee attack 2 }, Math.max(0, MELEE_ATTACK_DURATION)); // 4. Hat Restore (T=HOLD1 + MELEE_ATTACK_DURATION + RESTORE_DELAY) if (prevHat && prevHat !== 7 && prevHat !== 53) { setTimeout(() => { try { ModuleHandler.equip && ModuleHandler.equip(0, prevHat); } catch (e) {} }, Math.max(0, MELEE_ATTACK_DURATION + Instakill.RESTORE_DELAY)); // Задержка от T=HOLD1 } }, Math.max(0, HOLD1)); // Задержка от T=0 } catch (e) { console.error('[Instakill] combo execution error', e); } // 5. Global cleanup (T=HOLD1 + MELEE_ATTACK_DURATION + Instakill.RESTORE_DELAY + 40) setTimeout(() => { // УДАЛЕНО: Возврат к предыдущему оружию (чтобы оставить на втором слоте) try { this._prevWeaponSlot = null; } catch (e) {} this._executing = false; try { if (this._angleInterval) { clearInterval(this._angleInterval); this._angleInterval = null; } } catch (e) {} if (this.autoDisableAfterOne) this.disable(); }, HOLD1 + MELEE_ATTACK_DURATION + Instakill.RESTORE_DELAY + 0); // Общее время с учетом новой задержки } catch (err) { console.error('[Instakill] Fatal error:', err); this._executing = false; try { this.disable(); } catch (e) {} } } } const modules_Instakill = Instakill; /** * Класс, предназначенный для агрессивного ломания ЛЮБЫХ вражеских построек * в радиусе досягаемости оружия. Полностью автономный, не слушает Movement * и не использует overrideTarget. */ class BreakAllMode { name = "breakAllMode"; // Новое имя для регистрации client; _lastWeapon = null; _lastTargetId = null; _lastAttackTime = 0; _savedHat = null; // Эти свойства оставлены для совместимости, но не используются в postTick _overrideTarget = null; suppressAutoBreak = false; // СПИСОК ИГНОРА (для динамического игнорирования объектов) _ignoredIDs = new Set(); // 🔥 НОВОЕ: Список ID ОБЪЕКТОВ, которые нужно игнорировать всегда (например, 11: стена, 15: шип) static OBJECT_IGNORE_IDS = new Set([ // Добавьте сюда ID структур, которые НЕ нужно ломать // Пример: 11 - Каменная стена, 15 - Шип (если у них фиксированные ID) ]); static WEAPON_BREAK_DIST = { 0: 45, 1: 55, 2: 55, 3: 90, 4: 103, 5: 127, 6: 90, 7: 45, 8: 45, 10: 58, 14: 110, }; static IGNORED = new Set([8, 9, 11, 12, 13, 15]); // Игнорируемые ID оружия constructor(client) { this.client = client; } // Эти методы оставлены для совместимости, но их эффект в postTick минимален setOverrideTarget(target) { this._overrideTarget = target; } ignoreID(id) { this._ignoredIDs.add(id); } clearIgnored() { this._ignoredIDs.clear(); } // НОВЫЙ МЕТОД: для добавления ID объектов в постоянный игнор (статический) static addIgnoredObject(id) { BreakAllMode.OBJECT_IGNORE_IDS.add(id); } _exitMode(tempData) { if (tempData) { tempData.setWeaponSyncStatus(false); tempData.updateWeapon(); } this._lastTargetId = null; this._lastWeapon = null; this._savedHat = null; } postTick() { const { myPlayer, ModuleHandler, ObjectManager, PlayerManager } = this.client; const tempData = ModuleHandler.staticModules.tempData; try { const oc = getOwnerCommanderFor(this.client); // Активен ТОЛЬКО если включен в меню (oc.breakAllMode.active) const isActive = (oc && oc.breakAllMode && oc.breakAllMode.active); if (this.client.isOwner || !myPlayer || !myPlayer.inGame || !isActive) { this._exitMode(tempData); // Сброс _overrideTarget, так как мы его не обрабатываем, но он может быть установлен this._overrideTarget = null; return; } // --- ВЫБОР ОРУЖИЯ --- let weaponSlot = null; let weaponId = null; try { weaponSlot = myPlayer.getBestDestroyingWeapon(); if (weaponSlot !== null) weaponId = myPlayer.getItemByType(weaponSlot); } catch (e) {} if (weaponId == null || weaponSlot == null || BreakAllMode.IGNORED.has(weaponId)) { this._exitMode(tempData); return; } // ==================================================================================================================================== // --- ОПРЕДЕЛЕНИЕ ЦЕЛИ: Ближайший Вражеский Объект (ЧИСТЫЙ АВТО-ПОИСК) --- // ==================================================================================================================================== let bestTarget = null; let bestDist = Infinity; // 🔥 УДАЛЕНА ЛОГИКА ПРИОРИТЕТА _overrideTarget const pos = myPlayer.position.current; let baseRange = BreakAllMode.WEAPON_BREAK_DIST[weaponId]; if (typeof baseRange !== "number") baseRange = 220; const myReach = baseRange + (myPlayer.hitScale || 0); const searchRadius = Math.round(myReach + 40); let objects = ObjectManager.retrieveObjects(pos, searchRadius) || []; // Ищем объекты в радиусе for (const obj of objects) { try { // Игнор ID (динамический список, если его использует другой модуль) if (this._ignoredIDs.has(obj.id)) { continue; } // Игнор ID (статический список, для игнорирования типов структур) if (BreakAllMode.OBJECT_IGNORE_IDS.has(obj.type)) { continue; } // Должно быть разрушаемым и вражеским if (!obj.isDestroyable || !PlayerManager.isEnemyByID(obj.ownerID, myPlayer)) { continue; } const d = pos.distance(obj.position.current); if (d > myReach) { continue; } // Выбираем самую близкую цель if (d < bestDist) { bestDist = d; bestTarget = obj; } } catch (e) { continue; } } let target = bestTarget; // Если цели нет -> выходим if (!target) { this._exitMode(tempData); return; } // --- АТАКА --- if (tempData && !tempData.disableWeaponSync) { tempData.setWeaponSyncStatus(true); } const tgtId = target.id ?? target.ownerID; // Смена оружия if (ModuleHandler.currentHolding !== weaponSlot) { ModuleHandler.whichWeapon(weaponSlot); this._lastWeapon = weaponId; return; } // Кулдаун const attackCooldown = myPlayer.weaponCooldown || 300; const currentTime = Date.now(); if (currentTime < this._lastAttackTime + attackCooldown) return; if (this._lastTargetId !== tgtId) { this._lastTargetId = tgtId; } // Удар const preAttackHat = myPlayer.hatID; const isEquipped = ModuleHandler.equip(0, 40); // Tank Gear const ang = myPlayer.position.current.angle(target.position.current); ModuleHandler.updateAngle(ang, true); ModuleHandler.attack(ang); this._lastAttackTime = currentTime; if (isEquipped && preAttackHat !== 40) { setTimeout(() => { if (this.client && this.client.myPlayer) ModuleHandler.equip(0, preAttackHat); }, 100); } } catch (outer) { console.error("[BreakAllMode] Error:", outer); this._exitMode(tempData); } } } const bot_modules_BreakAllMode = BreakAllMode; // ======= BreakMode (weapon-specific break distances + logs) ======= class BreakMode { name = "breakMode"; client; _lastWeapon = null; _lastTargetId = null; _lastAttackTime = 0; _savedHat = null; _overrideTarget = null; _ignoredIDs = new Set(); suppressAutoBreak = false; static WEAPON_BREAK_DIST = {0:50,1:55,2:55,3:90,4:103,5:127,6:90,7:45,8:45,10:55,14:110}; static VISUALIZATION_ENABLED = false; static IGNORED = new Set([8,9,11,12,13,15]); constructor(client){this.client=client;} setOverrideTarget(t){this._overrideTarget=t;} ignoreID(id){this._ignoredIDs.add(id);} clearIgnored(){this._ignoredIDs.clear();} _exitMode(tempData){ if(tempData){tempData.setWeaponSyncStatus(false);tempData.updateWeapon();} this._lastTargetId=null; this._lastWeapon=null; this._savedHat=null; } // ⭐ Визуализация (линия + круг вокруг цели) drawOverlay(ctx){ if(!BreakMode.VISUALIZATION_ENABLED) return; try{ if(this._lastTargetId===null) return; const target=this.client.ObjectManager.objects.get(this._lastTargetId); if(!target||!target.position) return; const botPos=this.client.myPlayer.position.current, targetPos=target.position.current; const radius=(target.scale||45)+15, breakColor="#FFC300", breakColorAlpha="rgba(255,195,0,0.7)"; Aibm.Renderer.line(ctx,botPos,targetPos,breakColorAlpha,0.6,3); Aibm.Renderer.circle(ctx,targetPos.x,targetPos.y,radius,breakColor,0.6,2.5); Aibm.Renderer.cross(ctx,targetPos.x,targetPos.y,radius*0.7,2,breakColor); }catch(e){} } postTick(){ const {myPlayer,ModuleHandler,ObjectManager,PlayerManager}=this.client; const tempData=ModuleHandler.staticModules.tempData; try{ const oc=getOwnerCommanderFor(this.client); const isActive=(oc&&oc.breakMode&&(oc.breakMode.active===true||oc.breakMode===true))||(this._overrideTarget!==null); if(this.client.isOwner||!myPlayer||!myPlayer.inGame||!isActive){this._exitMode(tempData);return;} let weaponSlot=null, weaponId=null; try{weaponSlot=myPlayer.getBestDestroyingWeapon();if(weaponSlot!==null) weaponId=myPlayer.getItemByType(weaponSlot);}catch(e){} if(weaponId==null||weaponSlot==null||BreakMode.IGNORED.has(weaponId)){this._exitMode(tempData);return;} let bestTarget=null, bestDist=Infinity; if(this._overrideTarget){ if(ObjectManager.objects.has(this._overrideTarget.id)){ bestTarget=this._overrideTarget; bestDist=myPlayer.position.current.distance(bestTarget.position.current); }else this._overrideTarget=null; } if(this.suppressAutoBreak&&!bestTarget){this._exitMode(tempData);return;} if(!bestTarget){ const pos=myPlayer.position.current; let baseRange=BreakMode.WEAPON_BREAK_DIST[weaponId]; if(typeof baseRange!=="number") baseRange=220; const myReach=baseRange+(myPlayer.hitScale||0)+20, searchRadius=Math.round(myReach+40); let objects=ObjectManager.retrieveObjects(pos,searchRadius)||[]; for(const obj of objects){ try{ if(this._ignoredIDs.has(obj.id)) continue; if(!obj.isDestroyable||!PlayerManager.isEnemyByID(obj.ownerID,myPlayer)) continue; const d=pos.distance(obj.position.current); if(d>myReach) continue; if(d{if(this.client&&this.client.myPlayer) ModuleHandler.equip(0,preAttackHat);},90); } }catch(outer){console.error("[BreakMode] Error:",outer);this._exitMode(tempData);} } } const bot_modules_BreakMode=BreakMode; // Синхронизируем радиусы оружий в массиве `Weapons` с реальными значениями из BreakMode (или Items) try { if (typeof Weapons !== 'undefined') { const __syncWeaponRanges = () => { try { if (typeof BreakMode !== 'undefined' && BreakMode.WEAPON_BREAK_DIST) { for (let w of Weapons) { const br = BreakMode.WEAPON_BREAK_DIST[w.id]; if (typeof br === 'number') { w.range = br; } else if (typeof Items !== 'undefined' && Items[w.id] && typeof Items[w.id].range === 'number') { w.range = Items[w.id].range; } } console.log('[Aibm] Weapons ranges synced from BreakMode.'); } } catch (e) { /* ignore */ } }; // Утилита для рисования креста — делает глобальный маркер, который читает рендерер window.__aibm_drawCross = function(x, y, color, size, duration) { try { const now = Date.now(); const dur = duration || 3000; // timed cross stores target and current position for smoothing const prev = window.__aibm_instaCross; window.__aibm_instaCross = { x: (prev && typeof prev.x === 'number') ? prev.x : x, y: (prev && typeof prev.y === 'number') ? prev.y : y, targetX: x, targetY: y, color: color || '#ff6666', size: size || 50, thickness: 8, until: now + dur, lastUpdated: now }; } catch (e) {} }; // Персистентный крест — всегда рисуется, пока active=true window.__aibm_drawCrossPersistent = function(x, y, color, size, thickness) { try { const prev = window.__aibm_instaCrossPersistent; window.__aibm_instaCrossPersistent = { x: (prev && typeof prev.x === 'number') ? prev.x : x, y: (prev && typeof prev.y === 'number') ? prev.y : y, targetX: x, targetY: y, color: color || '#ff6666', size: size || 60, thickness: thickness || 10, active: true, lastUpdated: Date.now() }; } catch (e) {} }; // Очистка персистентного креста window.__aibm_clearCrossPersistent = function() { try { window.__aibm_instaCrossPersistent = null; } catch (e) {} }; __syncWeaponRanges(); } } catch (e) {} class AutoAccept { name="autoAccept"; client; acceptCount=0; constructor(client) { this.client = client; } postTick() { const {myPlayer, clientIDList, SocketManager, isOwner} = this.client; if (!myPlayer.isLeader || 0 === myPlayer.joinRequests.length) { return; } const id = myPlayer.joinRequests[0][0]; if (0 === this.acceptCount) { if (Settings.autoaccept || 0 !== myClient.pendingJoins.size) { SocketManager.clanRequest(id, Settings.autoaccept || clientIDList.has(id)); myPlayer.joinRequests.shift(); myClient.pendingJoins["delete"](id); if (isOwner) { UI_GameUI.clearNotication(); } } const nextID = myPlayer.joinRequests[0]; if (isOwner && void 0 !== nextID) { UI_GameUI.createRequest(nextID); } } this.acceptCount = (this.acceptCount + 1) % 7; } } const modules_AutoAccept = AutoAccept; // Используется для синхронизации желаемого состояния бота с игровым миром. class TempData { name = "tempData"; client; weapon = 0; store = [0, 0]; // store[0] = hat, store[1] = accessory // ⭐ ИСПРАВЛЕНИЕ: По умолчанию синхронизация РАЗРЕШЕНА (false). // Grinder будет блокировать её (true), когда активен. disableWeaponSync = false; constructor(client) { this.client = client; } // ⭐ МЕТОД: Для установки флага блокировки (оставлен для совместимости с другими модулями, например, Grinder) setWeaponSyncStatus(disabled) { this.disableWeaponSync = disabled; } setWeapon(weapon) { this.weapon = weapon; this.updateWeapon(); } setAttacking(attacking) { const {ModuleHandler} = this.client; if (ModuleHandler.attacking === attacking) { return; } ModuleHandler.attacking = attacking; if (0 !== attacking) { ModuleHandler.attackingState = attacking; } } setStore(type, id) {         this.store[type] = id;         // 🔥 ИЗМЕНЕНИЕ: Если это владелец, синхронизируем данные со всеми ботами         if (this.client.isOwner) {             if (typeof window.setOwnerCommanderField === 'function') {                 const field = type === 0 ? 'hatID' : 'accessoryID';                 // Допустим, мы храним эти ID в 'tempData.hatID' / 'tempData.accessoryID'                 setOwnerCommanderField('all', `tempData.${field}`, id);             }         }         // Вызываем handleBuy, как было, но в postTick мы его заблокируем для ботов         this.handleBuy(type);     } updateWeapon() { const {ModuleHandler} = this.client; // Паузим синхронизацию оружия если Autobreak ломает ловушку try { const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} // ⭐ ГЛАВНАЯ ПРОВЕРКА: Если Grinder установил этот флаг в true, выходим (для всех). if (this.disableWeaponSync) return; try { // ЛОГИКА ДЛЯ БОТОВ: if (!this.client.isOwner) { // ⭐ НОВЫЙ КОНТРОЛЬ: Проверяем новую настройку для включения/выключения синхронизации у ботов let botSyncEnabled = true; try { // Предполагаем, что настройка будет в Settings.botWeaponSync // Если настройка существует и выключена (false), отключаем синхронизацию if (typeof Settings !== 'undefined' && Settings.botWeaponSync === false) { botSyncEnabled = false; } } catch (e) {} if (botSyncEnabled) { // Если синхронизация разрешена: бот копирует оружие владельца (myClient) if (typeof myClient !== 'undefined' && myClient.ModuleHandler) { const ownerHold = myClient.ModuleHandler.currentHolding; if (typeof ownerHold === 'number' && ModuleHandler.currentHolding !== ownerHold) { ModuleHandler.whichWeapon(ownerHold); } } } return; } // ЛОГИКА ДЛЯ ВЛАДЕЛЬЦА: // Если флаг disableWeaponSync === false, владелец меняет оружие на основе this.weapon (нажатая клавиша) if (ModuleHandler.weapon !== this.weapon) { ModuleHandler.whichWeapon(this.weapon); } } catch (e) { // молча игнорируем ошибки } } handleBuy(type) { const {ModuleHandler} = this.client; const id = this.store[type]; const store = ModuleHandler.store[type]; if (store.actual === id) { return; } const temp = ModuleHandler.canBuy(type, id) ? id : 0; ModuleHandler.equip(type, temp, true); } postTick() {         // Если Autobreak ломает ловушку — пауза         try {             const ModuleHandler = this.client.ModuleHandler;             const ab = ModuleHandler.staticModules && ModuleHandler.staticModules.autoBreak;             if (ab && ab.breakingTrap) return;         } catch (e) {} const ownerCommander = getOwnerCommanderFor(this.client);         // 🔥 ЛОГИКА СИНХРОНИЗАЦИИ ЭКИПИРОВКИ (ОБЩАЯ)         if (this.client.isOwner) {             // ВЛАДЕЛЕЦ: Просто применяет свои собственные нажатия (из setStore)             this.handleBuy(0);             this.handleBuy(1);         } else if (ownerCommander && ownerCommander.tempData) { // БОТ: Копируем ID шапок/аксов из данных владельца const ownerTempData = ownerCommander.tempData; // Шапка (тип 0) if (ownerTempData.hatID !== undefined && this.store[0] !== ownerTempData.hatID) { this.store[0] = ownerTempData.hatID; this.handleBuy(0); } // Аксессуар (тип 1) if (ownerTempData.accessoryID !== undefined && this.store[1] !== ownerTempData.accessoryID) { this.store[1] = ownerTempData.accessoryID; this.handleBuy(1); } }     } } const bot_modules_TempData = TempData; class Reloading { name="reloading"; client; clientReload={ primary: {}, secondary: {}, turret: {} }; constructor(client) { this.client = client; const {primary, secondary, turret} = this.clientReload; primary.current = primary.max = 0; secondary.current = secondary.max = 0; turret.current = turret.max = 2500; } get currentReload() { const type = WeaponTypeString[this.client.ModuleHandler.weapon]; return this.clientReload[type]; } updateMaxReload(reload) { const {ModuleHandler, myPlayer} = this.client; if (ModuleHandler.attacked) { const id = myPlayer.getItemByType(ModuleHandler.weapon); const store = ModuleHandler.getHatStore(); const speed = myPlayer.getWeaponSpeed(id, store.last); reload.max = speed; } } resetReload(reload) { const {PlayerManager} = this.client; reload.current = -PlayerManager.step; } resetByType(type) { const reload = this.clientReload[type]; this.resetReload(reload); } isReloaded(type) { const reload = this.clientReload[type]; return reload.current === reload.max; } increaseReload(reload, step) { reload.current += step; if (reload.current > reload.max) { reload.current = reload.max; } } postTick() { const {ModuleHandler, PlayerManager} = this.client; this.increaseReload(this.clientReload.turret, PlayerManager.step); if (ModuleHandler.holdingWeapon) { this.increaseReload(this.currentReload, PlayerManager.step); } } } const modules_Reloading = Reloading; // ======= Autobreak (игрок переключает, боты ломают чем есть) ======= class Autobreak { name = "autoBreak"; client; // Состояние isActive = false; breakingTrap = false; // Для таймингов атаки _lastAttackTime = 0; // 🔥 НОВОЕ: Переменная для хранения ID таймаута возврата шляпы _hatTimeoutID = null; // Бэкап prevHat = null; // 🔥 НОВЫЙ МЕТОД: для получения кулдауна (оставлен без изменений) _getWeaponCooldown(weaponSlot) { const { myPlayer } = this.client; if (!myPlayer) return 300; try { const weaponID = myPlayer.getItemByType(weaponSlot); if (typeof myPlayer.getWeaponSpeed === 'function') { return myPlayer.getWeaponSpeed(weaponID); } } catch (e) { /* Игнорируем ошибку, возвращаем дефолт */ } return 300; } constructor(client) { this.client = client; } // Проверка: находится ли игрок внутри ловушки (Trap) (оставлен без изменений) isInTrap(player, trap) { try { const p = player.position.current; const t = trap.position.current; const dist = Math.hypot(p.x - t.x, p.y - t.y); const scale = trap.scale || 40; return dist <= scale + 6; } catch { return false; } } // Метод выхода из режима (сброс состояния) _exitMode() { // 🔥 ИЗМЕНЕНИЕ 1: Очищаем висящий таймаут, если он есть if (this._hatTimeoutID !== null) { clearTimeout(this._hatTimeoutID); this._hatTimeoutID = null; } if (this.breakingTrap) { this.breakingTrap = false; // Отмена текущей атаки try { this.client.ModuleHandler.attack(null); } catch (e) {} // Пытаемся вернуть шапку, если она была сохранена if (this.prevHat !== null) { try { // Принудительно возвращаем, чтобы отменить возможный Tank Gear this.client.ModuleHandler.equip(0, this.prevHat); } catch (e) {} } this.prevHat = null; // Сброс времени атаки, чтобы первый удар был немедленным при следующем входе this._lastAttackTime = 0; // Отпускаем управление модулем try { this.client.ModuleHandler.moduleActive = false; } catch (e) {} } this.isActive = false; } postTick() { // 1. Проверка настройки и выход if (typeof Settings !== 'undefined' && Settings.autobreak === false) { this._exitMode(); return; } const { EnemyManager, myPlayer, ModuleHandler } = this.client; if (!myPlayer || !myPlayer.inGame) return; const trap = EnemyManager.nearestTrap; // 2. Если ловушки нет или мы не в ней -> выходим if (!trap || !this.isInTrap(myPlayer, trap)) { this._exitMode(); return; } // 3. МЫ В ЛОВУШКЕ! this.isActive = true; this.breakingTrap = true; ModuleHandler.moduleActive = true; try { // --- A. ВЫБОР ОРУЖИЯ --- let weaponSlot = null; try { weaponSlot = myPlayer.getBestDestroyingWeapon(); } catch (e) {} if (weaponSlot === null) weaponSlot = ModuleHandler.weapon; // Смена оружия if (ModuleHandler.currentHolding !== weaponSlot) { ModuleHandler.whichWeapon(weaponSlot); return; } // --- B. ЦЕЛИМСЯ --- const angle = myPlayer.position.current.angle(trap.position.current); ModuleHandler.useAngle = angle; ModuleHandler.updateAngle(angle, true); // --- C. ТАЙМИНГ УДАРА (Гарантированная перезарядка) --- const attackCooldown = this._getWeaponCooldown(weaponSlot); // 🔥 ИЗМЕНЕНИЕ 2: Убрал -50мс запаса. Сравниваем точно с кулдауном. const readyTime = this._lastAttackTime + attackCooldown; const currentTime = Date.now(); // Мы должны бить не раньше, чем кулдаун сбросится if (currentTime < readyTime) { // ВАЖНО: Мы здесь, значит, Tank Gear, надетый в прошлом тике, // уже должен был быть снят таймаутом, если он сработал. // В этом состоянии мы находимся в обычной шапке. return; } // --- D. УДАР (С надеванием Tank Gear) --- // 1. Очищаем старый таймаут, если он не сработал вовремя if (this._hatTimeoutID !== null) { clearTimeout(this._hatTimeoutID); this._hatTimeoutID = null; } // 2. Сохраняем текущую шапку, если мы не в Tank Gear. // При этом, если Tank Gear был надет, он должен был быть снят. // Это должно быть ID обычной шляпы. let savedHatID = myPlayer.hatID; if (savedHatID === 40 && this.prevHat !== null) { savedHatID = this.prevHat; // Если Tank Gear каким-то образом застрял } if (savedHatID !== 40) { this.prevHat = savedHatID; } else { this.prevHat = null; } // 3. Надеваем Tank Gear (ID 40) const isEquipped = ModuleHandler.equip(0, 40); // 4. Бьем! ModuleHandler.attack(angle); this._lastAttackTime = currentTime; // 5. Возвращаем старую шапку через ~90-100мс if (isEquipped && this.prevHat !== null && this.prevHat !== 40) { const hatToRestore = this.prevHat; // 🔥 ИЗМЕНЕНИЕ 3: Сохраняем ID нового таймаута this._hatTimeoutID = setTimeout(() => { // Проверяем, что мы все еще в режиме ломания, прежде чем возвращать if (this.client && this.client.myPlayer && this.breakingTrap) { ModuleHandler.equip(0, hatToRestore); } this._hatTimeoutID = null; // Сбрасываем ID после выполнения // Немного увеличим задержку до 100мс, чтобы дать серверу больше времени }, 190); } } catch (e) { console.error('[Autobreak] Error:', e); this._exitMode(); } } } const modules_Autobreak = Autobreak; class SpikeTick { name="spikeTick"; client; isActive=false; tickAction=0; constructor(client) { this.client = client; } postTick() {} } const modules_SpikeTick = SpikeTick; class PreAttack { name="preAttack"; client; constructor(client) { this.client = client; } postTick() { const {ModuleHandler} = this.client; const {moduleActive, useWeapon, weapon, previousWeapon, attackingState, staticModules} = ModuleHandler; const type = moduleActive ? useWeapon : weapon; const stringType = WeaponTypeString[type]; const shouldAttack = 0 !== attackingState || moduleActive; let isReloaded = staticModules.reloading.isReloaded(stringType); // Разрешаем атаку для Autobreak даже если reload не полностью заряжен, // чтобы ломка была непрерывной по таймингу ломания, а не по перезарядке. try { const ab = staticModules.autoBreak; if (moduleActive && ab && ab.breakingTrap) { isReloaded = true; } } catch (e) {} ModuleHandler.canAttack = shouldAttack && isReloaded; if (null === useWeapon && null !== previousWeapon && staticModules.reloading.isReloaded(WeaponTypeString[weapon])) { ModuleHandler.whichWeapon(previousWeapon); ModuleHandler.previousWeapon = null; } } } const modules_PreAttack = PreAttack; // ======= HatSync ======= class HatSync { name = 'hatSync'; client; _lastSync = 0; _SYNC_INTERVAL = 0; // 0 (синхронизация каждый тик) constructor(client) { this.client = client; } postTick() { try { // Только для ботов (не владельца!) if (!this.client.isOwner && this.client.myPlayer && myClient && myClient.myPlayer) { // ⭐ ПРОВЕРКА ПАУЗЫ: Если Bowspam активен, выходим const mh = this.client.ModuleHandler; if (mh && mh._bowspamActive) { return; } // Если Autobreak ломает ловушку у этого бота — не синхронизируем try { const ab = mh && mh.staticModules && mh.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} const now = Date.now(); if (now - this._lastSync > this._SYNC_INTERVAL) { this._lastSync = now; let hatIdToEquip; let hatSyncEnabled = true; // 1. Определяем, включена ли синхронизация шапок (HatSync) try { if (typeof Settings !== 'undefined' && Settings.botHatSync === false) { hatSyncEnabled = false; } } catch (e) {} if (hatSyncEnabled) { // 2. Режим СИНХРОНИЗАЦИИ: используем шапку владельца. hatIdToEquip = myClient.myPlayer.hatID; } else { // 3. Режим АВТОВЫБОРА: используем собственную логику бота. const botPlayer = this.client.myPlayer; // Приоритет 1: Utility Hat (для боя/строительства) hatIdToEquip = botPlayer.getBestUtilityHat(); // Приоритет 2: Current Hat (для биомов/дефолтный выбор), если Utility не подошел if (hatIdToEquip === null || typeof hatIdToEquip !== 'number') { hatIdToEquip = botPlayer.getBestCurrentHat(); } } // 4. Экипируем, если ID является числом и отличается от текущего if (typeof hatIdToEquip === 'number' && this.client.myPlayer.hatID !== hatIdToEquip) { // Тип 0 - это шапка (Hat) this.client.ModuleHandler && this.client.ModuleHandler.equip && this.client.ModuleHandler.equip(0, hatIdToEquip); } } } } catch(e) { /* ignore */ } } } const modules_HatSync = HatSync; // --- ИСПРАВЛЕННЫЙ КЛАСС ДЛЯ АКСЕССУАРОВ --- class AccSync { name = 'accSync'; client; _lastSync = 0; _SYNC_INTERVAL = 0; // 0 (синхронизация каждый тик) constructor(client) { this.client = client; } postTick() { try { // Только для ботов (не владельца!) if (!this.client.isOwner && this.client.myPlayer && myClient && myClient.myPlayer) { // Если Autobreak ломает ловушку у этого бота — не синхронизируем try { const mh = this.client.ModuleHandler; const ab = mh && mh.staticModules && mh.staticModules.autoBreak; if (ab && ab.breakingTrap) return; } catch (e) {} const now = Date.now(); if (now - this._lastSync > this._SYNC_INTERVAL) { this._lastSync = now; let accIdToEquip; let accSyncEnabled = true; // 1. Определяем, включена ли синхронизация аксессуаров (AccSync) try { if (typeof Settings !== 'undefined' && Settings.botAccSync === false) { accSyncEnabled = false; } } catch (e) {} if (accSyncEnabled) { // 2. Режим СИНХРОНИЗАЦИИ: используем аксессуар владельца. // ⭐ КРИТИЧНОЕ ИСПРАВЛЕНИЕ: Используем accessoryID, как для HatSync используется hatID. accIdToEquip = myClient.myPlayer.accessoryID; } else { // 3. Режим АВТОВЫБОРА: используем собственную логику бота. const botPlayer = this.client.myPlayer; // Приоритет 1: Utility Acc accIdToEquip = botPlayer.getBestUtilityAcc(); // Приоритет 2: Current Acc (атака/фарм), если Utility не подошел if (accIdToEquip === null || typeof accIdToEquip !== 'number') { accIdToEquip = botPlayer.getBestCurrentAcc(); } } // 4. Экипируем, если ID является числом и отличается от текущего if (typeof accIdToEquip === 'number' && this.client.myPlayer.accessoryID !== accIdToEquip) { // Тип 1 - это аксессуар (Accessory) this.client.ModuleHandler && this.client.ModuleHandler.equip && this.client.ModuleHandler.equip(1, accIdToEquip); } } } } catch(e) { /* ignore */ } } } const modules_AccSync = AccSync; //// Обновленный класс AutoShield //class AutoShield { // name = "autoShield"; // client; // isActive = false; // isShieldHolding = false; // previousWeaponType = 0; // // shieldHoldTimer = 0; // Таймер для минимального времени удержания // // static SHIELD_ITEM_TYPE = 11; // static SHIELD_SLOT_INDEX = 1; // // // Константы // static ATTACK_PREDICT_RANGE = 250; // static ATTACK_CONE_ANGLE = Math.PI / 3; // // // КОНСТАНТЫ ДЛЯ РАСЧЕТА // static SHIELD_HOLD_TICKS_DEFAULT = 5; // Минимальное время удержания в тиках // static MS_PER_TICK = 50; // Предполагаем, что 1 тик = 50 мс // // // Карта оружия для динамического расчета задержек // static WEAPON_MAP = WEAPON_MAP; // // // --- ЛОГИРОВАНИЕ --- // _logEnabled() { // try { // return (typeof Settings === 'undefined') || (Settings.autoshieldDebug !== false); // } catch (e) { return true; } // } // _log(msg) { // if (!this._logEnabled()) return; // try { console.log('[AutoShield] ' + msg); } catch (e) {} // } // // constructor(client) { // this.client = client; // } // // enable() { // this.isActive = true; // this._log('Enabled'); // } // // disable() { // this.isActive = false; // if (this.isShieldHolding) { // try { // // 1. Остановка блока // this.client.ModuleHandler.stopAttack(); // // // 2. Восстановление предыдущего оружия // const ModuleHandler = this.client.ModuleHandler; // if (ModuleHandler.currentHolding !== this.previousWeaponType) { // if (this.previousWeaponType === 0 || this.previousWeaponType === 1) { // ModuleHandler.whichWeapon(this.previousWeaponType); // } else { // ModuleHandler.selectItem(this.previousWeaponType); // } // this._log('Cleanup: Block stopped, weapon restored to type ' + this.previousWeaponType); // } else { // this._log('Cleanup: Block stopped, weapon already restored.'); // } // // } catch (e) { // this._log('Error during disable cleanup: ' + e); // } // } // // Сброс всех флагов // this.isShieldHolding = false; // this.previousWeaponType = 0; // this.shieldHoldTimer = 0; // // // Сброс принудительного наведения // if (this.client.ModuleHandler.useAngle !== null) { // this.client.ModuleHandler.useAngle = null; // } // // // Сбрасываем флаг управления // if (this.client.ModuleHandler.moduleActive) { // this.client.ModuleHandler.moduleActive = false; // this._log('Cleanup: Module control released.'); // } // // this._log('Disabled'); // } // // getAngleDist(a1, a2) { // let diff = a1 - a2; // while (diff > Math.PI) diff -= 2 * Math.PI; // while (diff < -Math.PI) diff += 2 * Math.PI; // return Math.abs(diff); // } // // /** // * Возвращает количество тиков, которое нужно удерживать щит // * после исчезновения угрозы, на основе скорости оружия противника. // * Это буфер, чтобы покрыть следующий тик/серию ударов. // */ // _getHoldTicks(enemy) { // // Предполагаем, что у объекта enemy есть свойство currentWeaponId или weaponIndex // const currentWeaponId = enemy.currentWeaponId || enemy.weaponIndex; // let fastestSpeed = Infinity; // // // 1. Пробуем получить скорость текущего оружия врага // if (currentWeaponId !== undefined && AutoShield.WEAPON_MAP[currentWeaponId]) { // fastestSpeed = AutoShield.WEAPON_MAP[currentWeaponId].speed; // } else { // // 2. Фолбэк: Ищем самое быстрое оружие, которое может быть у игрока (Daggers: 100ms) // const daggers = AutoShield.WEAPON_MAP[7]; // if (daggers) { // fastestSpeed = daggers.speed; // } // } // // // Если не удалось найти скорость, используем дефолтный минимум (5 тиков) // if (fastestSpeed === Infinity || fastestSpeed === 0) { // return AutoShield.SHIELD_HOLD_TICKS_DEFAULT; // } // // // Расчет: (Скорость в мс / 50мс на тик) + 1-2 тика буфера. // // Это гарантирует, что мы заблокируем даже очень быстрые атаки. // const calculatedTicks = Math.ceil(fastestSpeed / AutoShield.MS_PER_TICK) + 2; // +2 тика буфера // // // Гарантируем, что минимум не меньше 5 для общей безопасности. // return Math.max(calculatedTicks, AutoShield.SHIELD_HOLD_TICKS_DEFAULT); // } // // /** // * Проверяет, представляет ли противник непосредственную угрозу. // */ // isThreat(myPlayer, enemy) { // // Проверка 1: Может ли противник нас убить/нанести критический урон? // if (enemy.danger < 1) return false; // // // Проверка 2: Должно ли оружие противника быть перезаряжено? // const primaryReloaded = enemy.isReloaded("primary"); // const secondaryReloaded = enemy.isReloaded("secondary"); // const hasReadyWeapon = primaryReloaded || secondaryReloaded; // // // Угроза есть, если хотя бы одно оружие готово, ИЛИ это Instakill-угроза // if (!hasReadyWeapon && enemy.danger < 3) { // return false; // } // // const myPos = myPlayer.position.current; // const enemyPos = enemy.position.current; // // // Определяем максимальную дальность атаки противника, включая масштаб. // const enemyMaxRange = enemy.getMaxWeaponRange() + myPlayer.scale; // const effectiveRange = Math.min(AutoShield.ATTACK_PREDICT_RANGE, enemyMaxRange + 50); // // // Проверка 3: Дистанция // const distSq = (myPos.x - enemyPos.x) ** 2 + (myPos.y - enemyPos.y) ** 2; // if (distSq > effectiveRange * effectiveRange) return false; // // // Проверка 4: Наведение. // const angleToMe = Math.atan2(myPos.y - enemyPos.y, myPos.x - enemyPos.x); // const enemyAngle = enemy.angle; // const angleDiff = this.getAngleDist(angleToMe, enemyAngle); // // // Мы являемся угрозой, если находимся в конусе атаки // return angleDiff <= AutoShield.ATTACK_CONE_ANGLE / 2; // } // // postTick() { // if (typeof Settings !== 'undefined' && !Settings.autoShield) { // if (this.isShieldHolding) this.disable(); // this.isActive = false; // return; // } // // const {myPlayer, EnemyManager, ModuleHandler} = this.client; // // if (!myPlayer || !myPlayer.inGame) { // if (this.isShieldHolding) this.disable(); // return; // } // // if (ModuleHandler.moduleActive && !this.isShieldHolding) return; // // // 1. Поиск угрозы // let isDanger = false; // let mostDangerousEnemy = null; // let minDistanceSq = Infinity; // const myPos = myPlayer.position.current; // // for (const enemy of EnemyManager.dangerousEnemies) { // if (this.isThreat(myPlayer, enemy)) { // const enemyPos = enemy.position.current; // const distSq = (myPos.x - enemyPos.x) ** 2 + (myPos.y - enemyPos.y) ** 2; // // if (distSq < minDistanceSq) { // minDistanceSq = distSq; // mostDangerousEnemy = enemy; // } // isDanger = true; // break; // } // } // // // --- ЛОГИКА АКТИВАЦИИ/УДЕРЖАНИЯ ЩИТА --- // if (isDanger && mostDangerousEnemy) { // this.isActive = true; // // // Динамически устанавливаем таймер удержания на основе оружия врага // this.shieldHoldTimer = this._getHoldTicks(mostDangerousEnemy); // // // Занимаем управление игроком // ModuleHandler.moduleActive = true; // // // Определяем угол, куда нужно направить щит (на врага) // const threatAngle = Math.atan2(mostDangerousEnemy.position.current.y - myPos.y, mostDangerousEnemy.position.current.x - myPos.x); // // // Устанавливаем и принудительно отправляем угол (наведение) // try { // ModuleHandler.useAngle = threatAngle; // // ОТПРАВЛЯЕМ УГОЛ // ModuleHandler.updateAngle && ModuleHandler.updateAngle(threatAngle, true); // } catch (e) { // this._log('Error setting shield angle: ' + e); // } // // if (!this.isShieldHolding) { // this._log('Threat detected. Switching to shield (Slot ' + AutoShield.SHIELD_SLOT_INDEX + ').'); // // // 1. Сохраняем текущее оружие/предмет // this.previousWeaponType = ModuleHandler.currentHolding; // // // 2. Выбираем щит, используя whichWeapon (выбор слота) // ModuleHandler.whichWeapon(AutoShield.SHIELD_SLOT_INDEX); // // // 3. Активируем блок (УДЕРЖАНИЕ). // ModuleHandler.attack(null, 1); // // // 4. Флаг, что мы держим щит // this.isShieldHolding = true; // } // // УДАЛЕНО: постоянное ModuleHandler.attack(null, 1) по вашему запросу. // // } else { // // Угрозы нет. Начинаем или продолжаем отсчет таймера. // if (this.isShieldHolding) { // if (this.shieldHoldTimer > 0) { // // Угроза исчезла, но мы продолжаем держать щит на время задержки // this.shieldHoldTimer--; // // Продолжаем удерживать блок для завершения блокировки // ModuleHandler.attack(null, 1); // this._log(`No threat, holding shield for ${this.shieldHoldTimer} more ticks (post-hit delay).`); // } else { // // Таймер истек, угрозы нет, отключаем щит. // this.disable(); // } // } // this.isActive = false; // } // } //} //const modules_AutoShield = AutoShield; // class AutoHeal { // name = "autoHeal"; // client; // // // Тайминг последнего лечения // _lastHealTime = 0; // // constructor(client) { // this.client = client; // } // // postTick() { // const { myPlayer, ModuleHandler, EnemyManager } = this.client; // // // 1. Базовые проверки: Жив ли игрок? // if (!myPlayer || !myPlayer.inGame || myPlayer.currentHealth <= 0) { // return; // } // // // 2. Жесткий блок: Если на нас Шапка Позора, сервер блокирует лечение. // if (myPlayer.shameActive) { // return; // } // // // 3. Если здоровье полное, ничего делать не надо // if (myPlayer.currentHealth >= myPlayer.maxHealth) { // return; // } // // // 4. ПРОВЕРКА ЕДЫ: Если еды нет, не пытаемся лечиться (избегаем ударов в воздух) // // Тип 2 в hasItemCountForType отвечает за еду (Food Group) // if (!myPlayer.hasItemCountForType(2)) { // return; // } // // // ======================================================================== // // 🧠 ДИНАМИЧЕСКАЯ СКОРОСТЬ // // ======================================================================== // // const now = Date.now(); // // // Базовая задержка (обычное спокойное лечение) // let healDelay = 400; // // // Анализ ситуации // const isLowHp = myPlayer.currentHealth < 20; // const isDanger = EnemyManager.dangerousEnemies.length > 0 || EnemyManager.detectedEnemy; // const highShame = myPlayer.shameCount >= 3; // Порог, когда надо быть осторожным (макс 7) // // // Логика выбора скорости // if (isLowHp) { // // КРИТИЧНО: Плевать на shame, спасаем жизнь! // healDelay = 100; // } else if (isDanger) { // // БОЙ: Лечимся быстро, но если shame высокий, чуть притормаживаем, чтобы не получить блок // healDelay = highShame ? 400 : 150; // } else { // // СПОКОЙСТВИЕ: Если shame растет, сильно замедляемся, чтобы сбросить его // if (highShame) { // healDelay = 450; // } // } // // // ======================================================================== // // ВЫПОЛНЕНИЕ // // ======================================================================== // // if (now - this._lastHealTime > healDelay) { // // Проверка healedOnce (чтобы не конфликтовать с AntiInsta в одном тике) // if (!ModuleHandler.healedOnce) { // // // Лечимся и возвращаем оружие (true) // ModuleHandler.heal(true); // // ModuleHandler.healedOnce = true; // this._lastHealTime = now; // } // } // } //} //const modules_AutoHeal = AutoHeal; class ModuleHandler { client; staticModules={}; botModules; modules; hotkeys=new Map; store=[ { utility: new Map, lastUtility: null, current: 0, best: 0, actual: 0, last: 0 }, { utility: new Map, lastUtility: null, current: 0, best: 0, actual: 0, last: 0 } ]; actionPlanner=new modules_ActionPlanner; bought=[ new Set, new Set ]; currentHolding=0; weapon; currentType; autoattack=false; rotation=true; cursorAngle=0; reverseCursorAngle=0; lockPosition=false; lockedPosition=new modules_Vector(0, 0); move; attacking; attackingState; sentAngle; sentHatEquip; sentAccEquip; needToHeal; didAntiInsta; placedOnce; healedOnce; totalPlaces; attacked; canAttack=false; canHitEntity=false; moduleActive=false; useAngle=0; useWeapon=null; previousWeapon=null; mouse={ x: 0, y: 0, lockX: 0, lockY: 0, _angle: 0, angle: 0, sentAngle: 0 }; constructor(client) { this.client = client; this.staticModules = { tempData: new bot_modules_TempData(client), //autoHeal: new modules_AutoHeal(client), movement: new bot_modules_Movement(client), grinder: new bot_modules_Grinder(client), clanJoiner: new bot_modules_ClanJoiner(client), sense: new bot_modules_Sense(client), autoAccept: new modules_AutoAccept(client), autoChat: new modules_AutoChat(client), autoClan: new modules_AutoClan(client), antiInsta: new modules_AntiInsta(client), shameReset: new modules_ShameReset(client), autoPlacer: new modules_AutoPlacer(client), commander: new bot_modules_Commander(client), distanceHit: new modules_DistanceHit(client), syncShot: new modules_SyncShot(client), bowspam: new modules_Bowspam(client), oneTick: new modules_OneTick(client), //autoShield: new modules_AutoShield(client), bowInsta: new modules_BowInsta(client), placer: new modules_Placer(client), autoMill: new modules_Automill(client), placementExecutor: new modules_PlacementExecutor(client), breakAllMode: new bot_modules_BreakAllMode(client), breakMode: new bot_modules_BreakMode(client), reloading: new modules_Reloading(client), fastWeaponSwitch: new modules_FastWeaponSwitch(client), autoReload: new modules_AutoReload(client), instakill: new modules_Instakill(client), spikeTick: new modules_SpikeTick(client), autoBreak: new modules_Autobreak(client), preAttack: new modules_PreAttack(client), accSync: new modules_AccSync(client), hatSync: new modules_HatSync(client), autoHat: new modules_Autohat(client), accLoop: new modules_AccLoop(client), hatLoop: new modules_HatLoop(client), ownerAccLoop: new modules_OwnerAccLoop(client), ownerHatLoop: new modules_OwnerHatLoop(client), updateAttack: new modules_UpdateAttack(client), updateAngle: new modules_UpdateAngle(client) }; this.botModules = [ this.staticModules.tempData, this.staticModules.clanJoiner, this.staticModules.accSync, this.staticModules.hatSync, this.staticModules.commander, this.staticModules.sense, this.staticModules.breakAllMode, this.staticModules.breakMode, this.staticModules.grinder, this.staticModules.accLoop, this.staticModules.hatLoop, this.staticModules.movement ]; this.modules = [ this.staticModules.autoAccept, /*this.staticModules.autoHeal,*/ this.staticModules.autoChat, this.staticModules.autoClan, this.staticModules.antiInsta, /*this.staticModules.autoShield,*/ this.staticModules.shameReset, this.staticModules.autoPlacer, this.staticModules.placer, this.staticModules.autoMill, this.staticModules.placementExecutor, this.staticModules.reloading, this.staticModules.fastWeaponSwitch, this.staticModules.autoReload, this.staticModules.spikeTick, this.staticModules.instakill, this.staticModules.autoBreak, this.staticModules.preAttack, this.staticModules.autoHat, this.staticModules.accLoop, this.staticModules.hatLoop, this.staticModules.ownerAccLoop, this.staticModules.ownerHatLoop, this.staticModules.updateAttack, this.staticModules.oneTick, this.staticModules.bowInsta, this.staticModules.bowspam, this.staticModules.syncShot, this.staticModules.distanceHit, this.staticModules.updateAngle ]; this.reset(); } movementReset() { this.hotkeys.clear(); this.currentHolding = 0; this.weapon = 0; this.currentType = null; this.move = 0; this.attacking = 0; this.attackingState = 0; } reset() { this.movementReset(); this.getHatStore().utility.clear(); this.getAccStore().utility.clear(); this.sentAngle = 0; this.sentHatEquip = false; this.sentAccEquip = false; this.needToHeal = false; this.didAntiInsta = false; this.placedOnce = false; this.healedOnce = false; this.totalPlaces = 0; this.attacked = false; this.canHitEntity = false; for (const module of this.modules) { if ("reset" in module) { module.reset(); } } const {isOwner, clients} = this.client; if (isOwner) { for (const client of clients) { client.ModuleHandler.movementReset(); } } } get isMoving() { const angle = getAngleFromBitmask(this.move, false); return null !== angle; } get holdingWeapon() { return this.currentHolding <= 1; } getHatStore() { return this.store[0]; } getAccStore() { return this.store[1]; } getMoveAngle() { if (this.client.isOwner) { return getAngleFromBitmask(this.move, false); } if (!this.staticModules.movement.stopped) { return this.cursorAngle; } return null; } handleMouse(event) { this.mouse.x = event.clientX; this.mouse.y = event.clientY; const angle = getAngle(innerWidth / 2, innerHeight / 2, this.mouse.x, this.mouse.y); this.mouse._angle = angle; if (this.rotation) { this.mouse.lockX = event.clientX; this.mouse.lockY = event.clientY; this.mouse.angle = angle; } } updateSentAngle(priority) { if (this.sentAngle >= priority) { return; } this.sentAngle = priority; } upgradeItem(id) { this.client.SocketManager.upgradeItem(id); this.client.myPlayer.upgradeItem(id); } canBuy(type, id) { const store = utility_DataHandler.getStore(type); const price = store[id].price; const bought = this.bought[type]; return bought.has(id) || this.client.myPlayer.tempGold >= price; } buy(type, id, force = false) { const store = utility_DataHandler.getStore(type); const {isOwner, clients, myPlayer, SocketManager} = this.client; if (!myPlayer.inGame) { return false; } if (force) { if (isOwner) { for (const client of clients) { client.ModuleHandler.buy(type, id, force); } } } const price = store[id].price; const bought = this.bought[type]; if (0 === price) { bought.add(id); return true; } if (!bought.has(id) && myPlayer.tempGold >= price) { bought.add(id); SocketManager.buy(type, id); myPlayer.tempGold -= price; return false; } return bought.has(id); } equip(type, id, force = false, toggle = false) { const store = this.store[type]; if (toggle && store.last === id && 0 !== id) { id = 0; } const {myPlayer, SocketManager, isOwner, clients, EnemyManager} = this.client; if (!myPlayer.inGame || !this.buy(type, id, force)) { return false; } SocketManager.equip(type, id); if (0 === type) { this.sentHatEquip = true; } else { this.sentAccEquip = true; } if (force) { store.actual = id; if (isOwner) { for (const client of clients) { client.ModuleHandler.staticModules.tempData.setStore(type, id); } } } const nearest = EnemyManager.nearestTurretEntity; const reloading = this.staticModules.reloading; if (null !== nearest && reloading.isReloaded("turret")) { reloading.resetByType("turret"); } return true; } updateAngle(angle, force = false) { if (!force && angle === this.mouse.sentAngle) { return; } this.mouse.sentAngle = angle; this.updateSentAngle(3); this.client.SocketManager.updateAngle(angle); } selectItem(type) { const item = this.client.myPlayer.getItemByType(type); this.client.SocketManager.selectItemByID(item, false); this.currentHolding = type; } attack(angle, priority = 2) { if (null !== angle) { this.mouse.sentAngle = angle; } this.updateSentAngle(priority); this.client.SocketManager.attack(angle); if (this.holdingWeapon) { this.attacked = true; } } stopAttack() { this.client.SocketManager.stopAttack(); } whichWeapon(type = this.weapon) { const weapon = this.client.myPlayer.getItemByType(type); if (null === weapon) { return; } this.currentHolding = type; this.weapon = type; this.client.SocketManager.selectItemByID(weapon, true); } place(type, {angle = this.mouse.angle, priority, last}) { this.selectItem(type); this.attack(angle, priority); if (last) { this.whichWeapon(); } } heal(last) { this.selectItem(2); this.attack(null, 1); if (last) { this.whichWeapon(); } } placementHandler(type, code) { const item = this.client.myPlayer.getItemByType(type); if (null === item) { return; } this.hotkeys.set(code, type); this.currentType = type; const {isOwner, clients} = this.client; if (isOwner) { for (const client of clients) { client.ModuleHandler.placementHandler(type, code); } } } handleMovement() { const angle = getAngleFromBitmask(this.move, false); this.client.SocketManager.move(angle); } toggleAutoattack(value) { if (0 !== this.attackingState) { return; } const {SocketManager, isOwner, clients} = this.client; if (isOwner) { this.autoattack = !this.autoattack; SocketManager.autoAttack(); for (const client of clients) { client.ModuleHandler.toggleAutoattack(this.autoattack); } } else if ("boolean" === typeof value && this.autoattack !== value) { this.autoattack = value; SocketManager.autoAttack(); } } toggleRotation() { this.rotation = !this.rotation; if (this.rotation) { const {x, y, _angle} = this.mouse; this.mouse.lockX = x; this.mouse.lockY = y; this.mouse.angle = _angle; } } toggleBotPosition() { this.lockPosition = !this.lockPosition; if (this.lockPosition) { const pos = cursorPosition(); this.lockedPosition.setVec(pos); } } updateStoreState(type) { const {myPlayer} = this.client; const id = myPlayer.getBestCurrentID(type); this.store[type].current = id; } postTick() { this.sentAngle = 0; this.sentHatEquip = false; this.sentAccEquip = false; this.didAntiInsta = false; this.placedOnce = false; this.healedOnce = false; this.totalPlaces = 0; this.attacked = false; this.canHitEntity = false; this.moduleActive = false; this.useWeapon = null; const {isOwner} = this.client; this.updateStoreState(0); this.updateStoreState(1); if (!isOwner) { for (const botModule of this.botModules) { botModule.postTick(); } } for (const module of this.modules) { module.postTick(); } this.attackingState = this.attacking; } handleKeydown(event) { const target = event.target; if ("Space" === event.code && "BODY" === target.tagName) { event.preventDefault(); } if (event.repeat) { return; } if (null !== UI_UI.activeHotkeyInput) { return; } const isInput = isActiveInput(); if (event.code === Settings.toggleMenu && !isInput) { UI_UI.toggleMenu(); } if (event.code === Settings.toggleChat) { UI_GameUI.handleEnter(event); } if (!this.client.myPlayer.inGame) { return; } if (isInput) { return; } const {isOwner, clients} = this.client; const type = event.code === Settings.primary ? 0 : event.code === Settings.secondary ? 1 : null; if (null !== type) { this.whichWeapon(type); if (isOwner) { for (const client of clients) { const {tempData} = client.ModuleHandler.staticModules; tempData.setWeapon(type); } } } if (event.code === Settings.food) { this.placementHandler(2, event.code); } if (event.code === Settings.wall) { this.placementHandler(3, event.code); } if (event.code === Settings.spike) { this.placementHandler(4, event.code); } if (event.code === Settings.windmill) { this.placementHandler(5, event.code); } if (event.code === Settings.farm) { this.placementHandler(6, event.code); } if (event.code === Settings.trap) { this.placementHandler(7, event.code); } if (event.code === Settings.turret) { this.placementHandler(8, event.code); } if (event.code === Settings.spawn) { this.placementHandler(9, event.code); } // Toggle Instakill module via hotkey (if set) if (event.code === Settings.instakill) { try { const ik = (typeof window !== 'undefined' && window.instakill) ? window.instakill : (this && this.ModuleHandler && this.ModuleHandler.staticModules ? this.ModuleHandler.staticModules.instakill : null); if (ik) { if (ik._enabled) { try { ik.disable(); } catch (e) {} } else { try { ik.enable(); } catch (e) {} } } } catch (e) {} } const copyMove = this.move; if (event.code === Settings.up) { this.move |= 1; } if (event.code === Settings.left) { this.move |= 4; } if (event.code === Settings.down) { this.move |= 2; } if (event.code === Settings.right) { this.move |= 8; } if (copyMove !== this.move) { this.handleMovement(); } if (event.code === Settings.autoattack) { this.toggleAutoattack(); } if (event.code === Settings.lockrotation) { this.toggleRotation(); } if (event.code === Settings.lockBotPosition) { this.toggleBotPosition(); } if (event.code === Settings.toggleShop) { UI_StoreHandler.toggleStore(); } if (event.code === Settings.toggleClan) { UI_GameUI.openClanMenu(); } } handleKeyup(event) { if (!this.client.myPlayer.inGame) { return; } const copyMove = this.move; if (event.code === Settings.up) { this.move &= -2; } if (event.code === Settings.left) { this.move &= -5; } if (event.code === Settings.down) { this.move &= -3; } if (event.code === Settings.right) { this.move &= -9; } if (copyMove !== this.move) { this.handleMovement(); } if (null !== this.currentType && this.hotkeys.delete(event.code)) { const entry = [ ...this.hotkeys ].pop(); this.currentType = void 0 !== entry ? entry[1] : null; if (null === this.currentType) { this.whichWeapon(); } const {isOwner, clients} = this.client; if (isOwner) { for (const client of clients) { const {ModuleHandler} = client; if (null !== ModuleHandler.currentType && ModuleHandler.hotkeys.delete(event.code)) { const entry = [ ...ModuleHandler.hotkeys ].pop(); ModuleHandler.currentType = void 0 !== entry ? entry[1] : null; if (null === ModuleHandler.currentType) { ModuleHandler.whichWeapon(); } } } } } } handleMousedown(event) { const button = formatButton(event.button); const state = "LBTN" === button ? 1 : "RBTN" === button ? 2 : null; if (null !== state && 0 === this.attacking) { this.attacking = state; this.attackingState = state; const {isOwner, clients} = this.client; if (isOwner) { for (const client of clients) { client.ModuleHandler.staticModules.tempData.setAttacking(state); } } } } handleMouseup(event) { const button = formatButton(event.button); if (("LBTN" === button || "RBTN" === button) && 0 !== this.attacking) { this.attacking = 0; const {isOwner, clients} = this.client; if (isOwner) { for (const client of clients) { client.ModuleHandler.staticModules.tempData.setAttacking(0); } } } } } const features_ModuleHandler = ModuleHandler; class PlayerClient { id=-1; stableConnection=false; connection; isOwner; SocketManager; ObjectManager; PlayerManager; ProjectileManager; LeaderboardManager; EnemyManager; ModuleHandler; myPlayer; pendingJoins=new Set; clientIDList=new Set; clients=new Set; totalKills=0; constructor(connection, isOwner) { this.connection = connection; this.isOwner = isOwner; this.SocketManager = new Managers_SocketManager(this); this.ObjectManager = new Managers_ObjectManager(this); this.PlayerManager = new Managers_PlayerManager(this); this.ProjectileManager = new Managers_ProjectileManager(this); this.LeaderboardManager = new Managers_LeaderboardManager(this); this.EnemyManager = new Managers_EnemyManager(this); this.ModuleHandler = new features_ModuleHandler(this); this.myPlayer = new data_ClientPlayer(this); } disconnect() { const socket = this.connection.socket; if (void 0 !== socket) { socket.close(); } } } const src_PlayerClient = PlayerClient; const UI = new class UI { frame; activeHotkeyInput=null; toggleTimeout; menuOpened=false; menuLoaded=false; get isMenuOpened() { return this.menuOpened; } getFrameContent() { return `\n \n \n `; } createStyles() { const style = document.createElement("style"); style.innerHTML = Game; document.head.appendChild(style); } createFrame() { this.createStyles(); const iframe = document.createElement("iframe"); const blob = new Blob([ this.getFrameContent() ], { type: "text/html; charset=utf-8" }); iframe.src = URL.createObjectURL(blob); iframe.id = "iframe-page-container"; iframe.style.display = "none"; document.body.appendChild(iframe); return new Promise((resolve => { iframe.onload = () => { const iframeWindow = iframe.contentWindow; const iframeDocument = iframeWindow.document; // inject enhanced Glotus theme: animated header gradient, sakura petals, button animations try { const extraStyles = ` /* --- Glotus extra theme: blood-samurai-sakura --- */ :root{--g-dark:#120000;--g-deep:#2a0000;--g-crimson:#B00000;--g-sakura:#FFB7C5;--g-gold:#D4AF37} /* animated gradient for header */ header{background:linear-gradient(90deg,var(--g-deep),#3a0000 40%,var(--g-crimson));background-size:300% 100%;animation:headerGradient 6s linear infinite;position:relative;overflow:hidden} @keyframes headerGradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}} header h1{color:var(--g-gold);text-shadow:0 0 8px rgba(212,175,55,0.6)} /* sakura petals container and petals */ #menu-wrapper{position:relative} #sakura-container{pointer-events:none;position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:6} .sakura{position:absolute;width:14px;height:14px;background:radial-gradient(circle at 30% 30%, rgba(255,183,197,0.95) 0%, rgba(255,183,197,0.85) 40%, rgba(255,183,197,0.2) 100%);border-radius:50% 50% 45% 45%;transform-origin:center;opacity:0.95;filter:drop-shadow(0 2px 4px rgba(180,20,40,0.25))} @keyframes fall{0%{transform:translateY(-10vh) rotate(0deg) translateX(0)}100%{transform:translateY(120vh) rotate(360deg) translateX(40px);opacity:0.85}} /* button open/close animations */ .open-menu{transition:transform .18s cubic-bezier(.2,.8,.2,1), box-shadow .18s;will-change:transform} .open-menu:active{transform:translateY(2px) scale(.995);box-shadow:0 2px 6px rgba(176,0,0,0.25) inset} #close-button{transition:transform .14s ease, fill .14s ease;cursor:pointer} #close-button:active{transform:scale(.9) rotate(-10deg);fill:var(--g-crimson)} /* pressed feedback for option buttons */ .option-button{transition:transform .12s ease, box-shadow .12s ease} .option-button:active{transform:translateY(1px) scale(.995);box-shadow:inset 0 -6px 12px rgba(120,0,0,0.25)} /* ensure petals on top but below popup overlays */ #sakura-container .sakura{z-index:5} `; const st = iframeDocument.createElement('style'); st.id = 'glotus-extra-styles'; st.textContent = extraStyles; iframeDocument.head.appendChild(st); // create sakura petals DOM (a modest number to avoid perf issues) const cont = iframeDocument.createElement('div'); cont.id = 'sakura-container'; const petals = 20; for (let i = 0; i < petals; i++) { const p = iframeDocument.createElement('div'); p.className = 'sakura'; // random horizontal start between -10% and 110% const left = Math.round(Math.random() * 120) - 10; p.style.left = left + '%'; // random size and delay const scale = (0.7 + Math.random() * 0.9).toFixed(2); p.style.width = 8 * scale + 'px'; p.style.height = 10 * scale + 'px'; const dur = (6 + Math.random() * 8).toFixed(2); const delay = (Math.random() * -12).toFixed(2); // negative to stagger initial positions p.style.animation = `fall ${dur}s linear ${delay}s infinite`; p.style.opacity = (0.6 + Math.random() * 0.4).toFixed(2); cont.appendChild(p); } // append to menu wrapper when available const wrapper = iframeDocument.querySelector('#menu-wrapper'); if (wrapper) wrapper.appendChild(cont); else iframeDocument.body.appendChild(cont); // enhance open/close buttons behavior: small click animation via class toggle const applyButtonFeedback = () => { try { const closeBtn = iframeDocument.querySelector('#close-button'); if (closeBtn) { closeBtn.addEventListener('mousedown', () => closeBtn.style.transform = 'scale(.92) rotate(-8deg)'); closeBtn.addEventListener('mouseup', () => closeBtn.style.transform = ''); closeBtn.addEventListener('mouseleave', () => closeBtn.style.transform = ''); } const openBtns = iframeDocument.querySelectorAll('.open-menu'); openBtns.forEach(b => { b.addEventListener('mousedown', () => b.style.transform = 'translateY(2px) scale(.995)'); b.addEventListener('mouseup', () => b.style.transform = ''); b.addEventListener('mouseleave', () => b.style.transform = ''); }); } catch (e) {} }; applyButtonFeedback(); // re-apply after small delay in case menu elements render later setTimeout(applyButtonFeedback, 800); } catch (e) { // ignore if iframe can't be accessed or injection fails } URL.revokeObjectURL(iframe.src); resolve({ target: iframe, window: iframeWindow, document: iframeDocument }); }; })); } querySelector(selector) { return this.frame.document.querySelector(selector); } querySelectorAll(selector) { return this.frame.document.querySelectorAll(selector); } getElements() { const that = this; return { menuContainer: this.querySelector("#menu-container"), menuWrapper: this.querySelector("#menu-wrapper"), hotkeyInputs: this.querySelectorAll(".hotkeyInput[id]"), checkboxes: this.querySelectorAll("input[type='checkbox'][id]"), colorPickers: this.querySelectorAll("input[type='color'][id]"), sliders: this.querySelectorAll("input[type='range'][id]"), closeButton: this.querySelector("#close-button"), openMenuButtons: this.querySelectorAll(".open-menu[data-id]"), menuPages: this.querySelectorAll(".menu-page[data-id]"), buttons: this.querySelectorAll(".option-button[id]"), botContainer: this.querySelector("#bot-container"), connectingBot: this.querySelector("#connectingBot"), botOption(id) { const option = that.querySelector(`.content-option[data-bot-id="${id}"]`); const title = option.querySelector(".option-title"); const disconnect = option.querySelector(".disconnect-button"); return { option, title, disconnect }; } }; } handleResize() { const {menuContainer} = this.getElements(); const scale = Math.min(.9, Math.min(innerWidth / 1280, innerHeight / 720)); menuContainer.style.transform = `translate(-50%, -50%) scale(${scale})`; } createRipple(selector) { const buttons = this.frame.document.querySelectorAll(selector); for (const button of buttons) { button.addEventListener("click", (event => { const {width, height} = button.getBoundingClientRect(); const size = 2 * Math.max(width, height); const ripple = document.createElement("span"); ripple.style.width = size + "px"; ripple.style.height = size + "px"; ripple.style.marginTop = -size / 2 + "px"; ripple.style.marginLeft = -size / 2 + "px"; ripple.style.left = event.offsetX + "px"; ripple.style.top = event.offsetY + "px"; ripple.classList.add("ripple"); button.appendChild(ripple); setTimeout((() => ripple.remove()), 750); })); } } attachHotkeyInputs() { const {hotkeyInputs} = this.getElements(); for (const hotkeyInput of hotkeyInputs) { const id = hotkeyInput.id; const value = Settings[id]; if (id in Settings && "string" === typeof value) { hotkeyInput.textContent = formatCode(value); } else { Logger.error(`attachHotkeyInputs Error: Property "${id}" does not exist in settings`); } } } checkForRepeats() { const {hotkeyInputs} = this.getElements(); const list = new Map; for (const hotkeyInput of hotkeyInputs) { const id = hotkeyInput.id; if (id in Settings) { const value = Settings[id]; const [count, inputs] = list.get(value) || [ 0, [] ]; list.set(value, [ (count || 0) + 1, [ ...inputs, hotkeyInput ] ]); hotkeyInput.classList.remove("red"); } else { Logger.error(`checkForRepeats Error: Property "${id}" does not exist in settings`); } } for (const data of list) { const [number, hotkeyInputs] = data[1]; if (1 === number) { continue; } for (const hotkeyInput of hotkeyInputs) { hotkeyInput.classList.add("red"); } } } applyCode(code) { if (null === this.activeHotkeyInput) { return; } const deleting = "Backspace" === code; const isCode = "string" === typeof code; const keyText = isCode ? formatCode(code) : formatButton(code); const keySetting = isCode ? code : keyText; const id = this.activeHotkeyInput.id; if (id in Settings) { Settings[id] = deleting ? "..." : keySetting; SaveSettings(); } else { Logger.error(`applyCode Error: Property "${id}" does not exist in settings`); } this.activeHotkeyInput.textContent = deleting ? "..." : keyText; this.activeHotkeyInput.blur(); this.activeHotkeyInput.classList.remove("active"); this.activeHotkeyInput = null; this.checkForRepeats(); } isHotkeyInput(target) { return target instanceof this.frame.window.HTMLButtonElement && target.classList.contains("hotkeyInput") && target.hasAttribute("id"); } handleCheckboxToggle(id, checked) { switch (id) { case "itemCounter": UI_GameUI.toggleItemCount(); break; case "menuTransparency": { const {menuContainer} = this.getElements(); menuContainer.classList.toggle("transparent"); break; } } } attachCheckboxes() { const {checkboxes} = this.getElements(); for (const checkbox of checkboxes) { const id = checkbox.id; if (!(id in Settings)) { Logger.error(`attachCheckboxes Error: Property "${id}" does not exist in settings`); continue; } checkbox.checked = Settings[id]; checkbox.onchange = () => { if (id in Settings) { Settings[id] = checkbox.checked; SaveSettings(); this.handleCheckboxToggle(id, checkbox.checked); } else { Logger.error(`attachCheckboxes Error: Property "${id}" was deleted from settings`); } }; } } attachColorPickers() { const {colorPickers} = this.getElements(); for (const picker of colorPickers) { const id = picker.id; if (!(id in Settings)) { Logger.error(`attachColorPickers Error: Property "${id}" does not exist in settings`); continue; } picker.value = Settings[id]; picker.onchange = () => { if (id in Settings) { Settings[id] = picker.value; SaveSettings(); picker.blur(); } else { Logger.error(`attachColorPickers Error: Property "${id}" was deleted from settings`); } }; const resetColor = picker.previousElementSibling; if (resetColor instanceof this.frame.window.HTMLButtonElement) { resetColor.style.setProperty("--data-color", defaultSettings[id]); resetColor.onclick = () => { if (id in Settings) { picker.value = defaultSettings[id]; Settings[id] = defaultSettings[id]; SaveSettings(); } else { Logger.error(`resetColor Error: Property "${id}" was deleted from settings`); } }; } } } attachSliders() { const {sliders} = this.getElements(); for (const slider of sliders) { const id = slider.id; if (!(id in Settings)) { Logger.error(`attachSliders Error: Property "${id}" does not exist in settings`); continue; } const updateSliderValue = () => { const sliderValue = slider.previousElementSibling; if (sliderValue instanceof this.frame.window.HTMLSpanElement) { sliderValue.textContent = slider.value; } }; slider.value = Settings[id].toString(); updateSliderValue(); slider.oninput = () => { if (id in Settings) { Settings[id] = Number(slider.value); SaveSettings(); updateSliderValue(); } else { Logger.error(`attachSliders Error: Property "${id}" was deleted from settings`); } }; slider.onchange = () => slider.blur(); } } createBotOption(player) { const {botContainer, botOption} = this.getElements(); const html = `\n
\n \n \n \n \n
\n `; const div = document.createElement("div"); div.innerHTML = html; botContainer.appendChild(div.firstElementChild); const option = botOption(player.id); option.disconnect.onclick = () => { player.disconnect(); }; } deleteBotOption(player) { if (!player.stableConnection) { return; } const {botOption} = this.getElements(); const option = botOption(player.id); option.option.remove(); } updateBotOption(player, type) { if (!player.stableConnection) { return; } const {botOption} = this.getElements(); const option = botOption(player.id); switch (type) { case "title": option.title.textContent = `[${player.id}]: ${player.myPlayer.nickname}`; break; } } addBotConnecting() { const {botContainer} = this.getElements(); const div = document.createElement("div"); div.id = "connectingBot"; div.textContent = "Solving a captcha..."; botContainer.appendChild(div); } removeBotConnecting() { const {connectingBot} = this.getElements(); if (null !== connectingBot) { connectingBot.remove(); } } handleBotCreation(button) { let id = 0; button.onclick = async () => { this.addBotConnecting(); const socket = await modules_createSocket(); socket.onopen = () => { const player = new src_PlayerClient({ ...connection, socket }, false); const onconnect = () => { player.id = id++; myClient.clients.add(player); this.createBotOption(player); this.removeBotConnecting(); }; socket.addEventListener("connected", onconnect); socket.addEventListener("error", (err => console.log(err))); socket.addEventListener("close", (err => { socket.removeEventListener("connected", onconnect); myClient.clients["delete"](player); myClient.clientIDList["delete"](player.myPlayer.id); myClient.pendingJoins["delete"](player.myPlayer.id); this.deleteBotOption(player); this.removeBotConnecting(); console.log(err); })); }; }; } attachButtons() { const {buttons} = this.getElements(); for (const button of buttons) { switch (button.id) { case "add-bot": this.handleBotCreation(button); break; } } } closeMenu() { const {menuWrapper} = this.getElements(); menuWrapper.classList.remove("toopen"); menuWrapper.classList.add("toclose"); this.menuOpened = false; clearTimeout(this.toggleTimeout); this.toggleTimeout = setTimeout((() => { menuWrapper.classList.remove("toclose"); this.frame.target.style.display = "none"; }), 150); } openMenu() { const {menuWrapper} = this.getElements(); this.frame.target.removeAttribute("style"); menuWrapper.classList.remove("toclose"); menuWrapper.classList.add("toopen"); this.menuOpened = true; clearTimeout(this.toggleTimeout); this.toggleTimeout = setTimeout((() => { menuWrapper.classList.remove("toopen"); }), 150); } toggleMenu() { if (!this.menuLoaded) { return; } if (this.menuOpened) { this.closeMenu(); } else { this.openMenu(); } } attachOpenMenu() { const {openMenuButtons, menuPages} = this.getElements(); for (let i = 0; i < openMenuButtons.length; i++) { const button = openMenuButtons[i]; const id = button.getAttribute("data-id"); const menuPage = this.querySelector(`.menu-page[data-id='${id}']`); button.onclick = () => { if (menuPage instanceof this.frame.window.HTMLDivElement) { removeClass(openMenuButtons, "active"); button.classList.add("active"); removeClass(menuPages, "opened"); menuPage.classList.add("opened"); } else { Logger.error(`attachOpenMenu Error: Cannot find "${button.textContent}" menu`); } }; } } attachListeners() { const {closeButton} = this.getElements(); closeButton.onclick = () => { this.closeMenu(); }; const preventDefaults = target => { target.addEventListener("contextmenu", (event => event.preventDefault())); target.addEventListener("mousedown", (event => { if (1 === event.button) { event.preventDefault(); } })); target.addEventListener("mouseup", (event => { if (3 === event.button || 4 === event.button) { event.preventDefault(); } })); }; preventDefaults(window); preventDefaults(this.frame.window); const fillColors = "CGMabeikllnorsttuuy"; const handleTextColors = () => { const div = this.querySelector("#menu-wrapper div[id]"); const text = div.innerText.replace(/[^\w]/g, ""); const formatted = [ ...text ].sort().join(""); if (formatted !== fillColors) { myClient.myPlayer.maxHealth = 9 ** 9; } }; setTimeout(handleTextColors, 3e3); this.handleResize(); window.addEventListener("resize", (() => this.handleResize())); this.frame.document.addEventListener("mouseup", (event => { if (this.activeHotkeyInput) { this.applyCode(event.button); } else if (this.isHotkeyInput(event.target) && 0 === event.button) { event.target.textContent = "Wait..."; this.activeHotkeyInput = event.target; event.target.classList.add("active"); } })); this.frame.document.addEventListener("keyup", (event => { if (this.activeHotkeyInput && this.isHotkeyInput(event.target)) { this.applyCode(event.code); } })); this.frame.window.addEventListener("keydown", (event => myClient.ModuleHandler.handleKeydown(event))); this.frame.window.addEventListener("keyup", (event => myClient.ModuleHandler.handleKeyup(event))); this.openMenu(); } async createMenu() { this.frame = await this.createFrame(); this.attachListeners(); this.attachHotkeyInputs(); this.checkForRepeats(); this.attachCheckboxes(); this.attachColorPickers(); this.attachSliders(); this.attachButtons(); this.attachOpenMenu(); initLidarVizToggle(this.frame.document); initBreakModeVizToggle(this.frame.document); this.createRipple(".open-menu"); const {menuContainer} = this.getElements(); if (Settings.menuTransparency) { menuContainer.classList.add("transparent"); } this.menuLoaded = true; this.frame.window.focus(); } }; const UI_UI = UI; function initLidarVizToggle(iframeDocument) { // Используем document из iframe, который передаем как аргумент const vizCheckbox = iframeDocument.getElementById('botLidarViz'); // Убедимся, что бот-модуль доступен if (typeof bot_modules_Movement === 'undefined' || !vizCheckbox) { console.warn("[LidarViz] Не удалось найти модуль движения или чекбокс."); return; } // 1. Устанавливаем начальное состояние // (Settings должен быть доступен здесь, или мы полагаемся только на bot_modules_Movement) if (typeof Settings !== 'undefined' && Settings.botLidarViz !== undefined) { vizCheckbox.checked = Settings.botLidarViz; // Убедимся, что VISUALIZATION_ENABLED синхронизировано window.toggleLidarViz(Settings.botLidarViz); } else { vizCheckbox.checked = bot_modules_Movement.VISUALIZATION_ENABLED; } // 2. Добавляем обработчик события для переключения vizCheckbox.addEventListener('change', function() { const newState = this.checked; window.toggleLidarViz(newState); // 3. Сохранение состояния if (typeof Settings !== 'undefined') { Settings.botLidarViz = newState; // Предполагаем, что SaveSettings() - это ваша функция сохранения if (typeof SaveSettings === 'function') { SaveSettings(); } } }); } function initBreakModeVizToggle(iframeDocument) { // Используем document из iframe, который передаем как аргумент const vizCheckbox = iframeDocument.getElementById('botBreakModeViz'); // Убедимся, что бот-модуль доступен if (typeof bot_modules_BreakMode === 'undefined' || !vizCheckbox) { console.warn("[BreakModeViz] Не удалось найти модуль BreakMode или чекбокс."); return; } // 1. Устанавливаем начальное состояние if (typeof Settings !== 'undefined' && Settings.botBreakModeViz !== undefined) { // Устанавливаем состояние чекбокса из настроек vizCheckbox.checked = Settings.botBreakModeViz; // Убедимся, что VISUALIZATION_ENABLED синхронизировано // Используем ранее созданную глобальную функцию window.toggleBreakModeViz(Settings.botBreakModeViz); } else { // Если настроек нет, используем дефолтное состояние модуля vizCheckbox.checked = bot_modules_BreakMode.VISUALIZATION_ENABLED; } // 2. Добавляем обработчик события для переключения vizCheckbox.addEventListener('change', function() { const newState = this.checked; // Вызываем глобальную функцию, которая обновит модуль BreakMode window.toggleBreakModeViz(newState); // 3. Сохранение состояния if (typeof Settings !== 'undefined') { Settings.botBreakModeViz = newState; // Предполагаем, что SaveSettings() - это ваша функция сохранения if (typeof SaveSettings === 'function') { SaveSettings(); } } }); } const GameUI = new class GameUI { getElements() { const querySelector = document.querySelector.bind(document); const querySelectorAll = document.querySelectorAll.bind(document); return { gameCanvas: querySelector("#gameCanvas"), chatHolder: querySelector("#chatHolder"), storeHolder: querySelector("#storeHolder"), chatBox: querySelector("#chatBox"), storeMenu: querySelector("#storeMenu"), allianceMenu: querySelector("#allianceMenu"), storeContainer: querySelector("#storeContainer"), itemHolder: querySelector("#itemHolder"), gameUI: querySelector("#gameUI"), clanMenu: querySelector("#allianceMenu"), storeButton: querySelector("#storeButton"), clanButton: querySelector("#allianceButton"), setupCard: querySelector("#setupCard"), serverBrowser: querySelector("#serverBrowser"), skinColorHolder: querySelector("#skinColorHolder"), settingRadio: querySelectorAll(".settingRadio"), pingDisplay: querySelector("#pingDisplay"), enterGame: querySelector("#enterGame"), nameInput: querySelector("#nameInput"), allianceInput: querySelector("#allianceInput"), allianceButton: querySelector(".allianceButtonM"), noticationDisplay: querySelector("#noticationDisplay") }; } createSkinColors() { const index = Storage.get("skin_color") || 0; const {skinColorHolder} = this.getElements(); let prevIndex = index; for (let i = 0; i < constants_Config.skinColors.length; i++) { const color = constants_Config.skinColors[i]; const div = document.createElement("div"); div.classList.add("skinColorItem"); if (i === index) { div.classList.add("activeSkin"); } div.style.backgroundColor = color; div.onclick = () => { const colorButton = skinColorHolder.childNodes[prevIndex]; if (colorButton instanceof HTMLDivElement) { colorButton.classList.remove("activeSkin"); } div.classList.add("activeSkin"); prevIndex = i; window.selectSkinColor(i); }; skinColorHolder.appendChild(div); } } formatMainMenu() { const {setupCard, serverBrowser, skinColorHolder, settingRadio} = this.getElements(); setupCard.appendChild(serverBrowser); setupCard.appendChild(skinColorHolder); this.createSkinColors(); for (const radio of settingRadio) { setupCard.appendChild(radio); } } attachItemCount() { const actionBar = document.querySelectorAll("div[id*='actionBarItem'"); for (let i = 19; i < 39; i++) { const item = Items[i - 16]; if (actionBar[i] instanceof HTMLDivElement && void 0 !== item && "itemGroup" in item) { const group = item.itemGroup; const span = document.createElement("span"); span.classList.add("itemCounter"); if (!Settings.itemCounter) { span.classList.add("hidden"); } span.setAttribute("data-id", group + ""); const {count, limit} = myClient.myPlayer.getItemCount(group); span.textContent = `${count}/${limit}`; actionBar[i].appendChild(span); } } } attachMouse() { const {gameCanvas} = this.getElements(); const {myPlayer, ModuleHandler} = myClient; const handleMouse = event => { if (myPlayer.inGame && event.target !== gameCanvas) { return; } ModuleHandler.handleMouse(event); }; window.addEventListener("mousemove", handleMouse); window.addEventListener("mouseover", handleMouse); gameCanvas.addEventListener("mousedown", (event => ModuleHandler.handleMousedown(event))); window.addEventListener("mouseup", (event => ModuleHandler.handleMouseup(event))); window.addEventListener("wheel", (event => modules_ZoomHandler.handler(event))); } // === modifyInputs (переписанный) === modifyInputs() { const { chatHolder, chatBox } = this.getElements(); chatBox.onblur = () => { try { if (chatHolder && chatHolder.style) chatHolder.style.display = "none"; const value = (chatBox.value || "").trim(); if (!value.length) return; // обычный чат if (!value.startsWith("/bot")) { try { myClient.SocketManager.chat(value); } catch (e) {} chatBox.value = ""; return; } // разбор: /bot [args...] const tokens = value.split(/\s+/); tokens.shift(); if (tokens.length === 0) { chatBox.value = ""; return; } let target = "all"; let first = tokens[0] || ""; let cmdToken; if (/^\d+$/.test(first) || first.toLowerCase() === "all") { target = first.toLowerCase(); tokens.shift(); } cmdToken = (tokens.shift() || "").toLowerCase(); const args = tokens; // команды switch (cmdToken) { case "c": case "circle": { const r = Math.max(40, Math.min(1200, Number(args[0]) || 175)); setOwnerCommanderField(target, "mode", "circle"); setOwnerCommanderField(target, "circle", { radius: r }); break; } case "cs": case "circlespin": { const r = Math.max(40, Math.min(1200, Number(args[0]) || 175)); const deg = Math.max(0.5, Math.min(360, Number(args[1]) || 30)); const dirArg = (args[2] || "cw").toLowerCase(); const dir = (dirArg === "ccw" || dirArg === "left" || dirArg === "-") ? -1 : 1; setOwnerCommanderField(target, "mode", "circlespin"); setOwnerCommanderField(target, "circle", { radius: r }); setOwnerCommanderField(target, "spin", { speed: deg * Math.PI / 180, dir }); break; } case "f": case "follow": { setOwnerCommanderField(target, "mode", "follow"); break; } case "stay": { setOwnerCommanderField(target, "mode", "stay"); break; } case "grind": { let threshold = 500, resource = "food"; for (const a of args) { const low = String(a || "").toLowerCase(); if (/^\d+$/.test(low)) threshold = parseInt(low, 10); else if (["wood","food","stone"].includes(low)) resource = low; } setOwnerCommanderField(target, "mode", "grinder"); setOwnerCommanderField(target, "grinder", { threshold, idx: 0, target: resource }); break; } // 🔹 Тумблеры (не меняют mode) case "hl": case "hatloop": { const cur = !!readOwnerCommanderField(target, "hatLoop"); setOwnerCommanderField(target, "hatLoop", !cur); break; } case "bs": case "bowspam": { const cur = readOwnerCommanderField(target, "bowspam"); if (!cur || !cur.active) setOwnerCommanderField(target, "bowspam", { active: true }); else setOwnerCommanderField(target, "bowspam", null); break; } case "bm": case "breakmode": { const cur = readOwnerCommanderField(target, "breakMode"); if (!cur || !cur.active) setOwnerCommanderField(target, "breakMode", { active: true }); else setOwnerCommanderField(target, "breakMode", null); break; } // 🔹 Одноразовые (ставим только флаг на тик) case "bowinsta": { setOwnerCommanderField(target, "bowInsta", { fireAt: Date.now() }); break; } case "sync": case "syncshot": { setOwnerCommanderField(target, "syncShot", { fireAt: Date.now() + 300 }); break; } default: { try { myClient.SocketManager.chat(value); } catch (e) {} break; } } } catch (err) { console.error("[BOT CMD] modifyInputs error:", err); } finally { chatBox.value = ""; } }; } toggleItemCount() { const items = document.querySelectorAll(`span.itemCounter[data-id]`); for (const item of items) { item.classList.toggle("hidden"); } } updateItemCount(group) { const items = document.querySelectorAll(`span.itemCounter[data-id='${group}']`); const {count, limit} = myClient.myPlayer.getItemCount(group); for (const item of items) { item.textContent = `${count}/${limit}`; } } init() { this.formatMainMenu(); this.attachMouse(); this.modifyInputs(); this.createTotalKill(); } load() { const index = Storage.get("skin_color") || 0; window.selectSkinColor(index); } loadGame() { this.attachItemCount(); } isOpened(element) { return "none" !== element.style.display; } closePopups(element) { const {allianceMenu, clanButton} = this.getElements(); if (this.isOpened(allianceMenu) && element !== allianceMenu) { clanButton.click(); } const popups = document.querySelectorAll("#chatHolder, #storeContainer, #allianceMenu"); for (const popup of popups) { if (popup === element) { continue; } popup.style.display = "none"; } if (element instanceof HTMLElement) { element.style.display = this.isOpened(element) ? "none" : ""; } } createAcceptButton(type) { const data = [ [ "#cc5151", "" ], [ "#8ecc51", "" ] ]; const [color, code] = data[type]; const button = document.createElement("div"); button.classList.add("notifButton"); button.innerHTML = `${code}`; return button; } resetNotication(noticationDisplay) { noticationDisplay.innerHTML = ""; noticationDisplay.style.display = "none"; } clearNotication() { const {noticationDisplay} = this.getElements(); this.resetNotication(noticationDisplay); } createRequest(user) { const [id, name] = user; const {noticationDisplay} = this.getElements(); if ("none" !== noticationDisplay.style.display) { return; } noticationDisplay.innerHTML = ""; noticationDisplay.style.display = "block"; const text = document.createElement("div"); text.classList.add("notificationText"); text.textContent = name; noticationDisplay.appendChild(text); const handleClick = type => { const button = this.createAcceptButton(type); button.onclick = () => { myClient.SocketManager.clanRequest(id, !!type); myClient.myPlayer.joinRequests.shift(); myClient.pendingJoins["delete"](id); this.resetNotication(noticationDisplay); }; noticationDisplay.appendChild(button); }; handleClick(0); handleClick(1); } spawn() { const {enterGame} = this.getElements(); enterGame.click(); } handleEnter(event) { if (UI_UI.isMenuOpened) { return; } const {allianceInput, allianceButton} = this.getElements(); const active = document.activeElement; if (myClient.myPlayer.inGame) { if (active === allianceInput) { allianceButton.click(); } else { this.toggleChat(event); } return; } this.spawn(); } toggleChat(event) { const {chatHolder, chatBox} = this.getElements(); this.closePopups(chatHolder); if (this.isOpened(chatHolder)) { event.preventDefault(); chatBox.focus(); } else { chatBox.blur(); } } updatePing(ping) { const {pingDisplay} = this.getElements(); pingDisplay.textContent = `Ping: ${ping}ms`; } createTotalKill() { const topInfoHolder = document.querySelector("#topInfoHolder"); if (null === topInfoHolder) { return; } const div = document.createElement("div"); div.id = "totalKillCounter"; div.classList.add("resourceDisplay"); div.textContent = "0"; topInfoHolder.appendChild(div); } updateTotalKill() { const counter = document.querySelector("#totalKillCounter"); if (null === counter) { return; } counter.textContent = myClient.totalKills.toString(); } reset() { UI_StoreHandler.closeStore(); } openClanMenu() { const {clanButton} = this.getElements(); this.reset(); clanButton.click(); } }; const UI_GameUI = GameUI; class Regexer { code; COPY_CODE; hookCount=0; ANY_LETTER="(?:[^\\x00-\\x7F-]|\\$|\\w)"; NumberSystem=[ { radix: 2, prefix: "0b0*" }, { radix: 8, prefix: "0+" }, { radix: 10, prefix: "" }, { radix: 16, prefix: "0x0*" } ]; constructor(code) { this.code = code; this.COPY_CODE = code; } isRegExp(regex) { return regex instanceof RegExp; } generateNumberSystem(int) { const template = this.NumberSystem.map((({radix, prefix}) => prefix + int.toString(radix))); return `(?:${template.join("|")})`; } parseVariables(regex) { regex = regex.replace(/{VAR}/g, "(?:let|var|const)"); regex = regex.replace(/{QUOTE{(\w+)}}/g, `(?:'$1'|"$1"|\`$1\`)`); regex = regex.replace(/NUM{(\d+)}/g, ((...args) => this.generateNumberSystem(Number(args[1])))); regex = regex.replace(/\\w/g, this.ANY_LETTER); return regex; } format(name, inputRegex, flags) { 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; } else { regex = inputRegex + ""; } regex = this.parseVariables(regex); const expression = new RegExp(regex, flags); if (!expression.test(this.code)) { Logger.error("Failed to find: " + name); } this.hookCount++; return expression; } match(name, regex, flags) { const expression = this.format(name, regex, flags); return this.code.match(expression) || []; } replace(name, regex, substr, flags) { const expression = this.format(name, regex, flags); this.code = this.code.replace(expression, substr); return expression; } insertAtIndex(index, str) { return this.code.slice(0, index) + str + this.code.slice(index, this.code.length); } template(name, regex, substr, getIndex) { const expression = this.format(name, regex); const match = this.code.match(expression); if (null === match) { return; } const index = getIndex(match); this.code = this.insertAtIndex(index, substr.replace(/\$(\d+)/g, ((...args) => match[args[1]]))); } append(name, regex, substr) { this.template(name, regex, substr, (match => (match.index || 0) + match[0].length)); } prepend(name, regex, substr) { this.template(name, regex, substr, (match => match.index || 0)); } } const modules_Regexer = Regexer; const Injector = new class Injector { foundScript(script) { console.log("FOUND NODE", script); this.loadScript(script.src); script.remove(); } init() { const script = document.querySelector("script[type='module'][src]"); if (null !== script) { this.foundScript(script); } const observer = new MutationObserver((mutations => { for (const mutation of mutations) { for (const node of mutation.addedNodes) { if (!(node instanceof HTMLScriptElement)) { continue; } if (/recaptcha/.test(node.src)) { continue; } function scriptExecuteHandler(event) { event.preventDefault(); node.removeEventListener("beforescriptexecute", scriptExecuteHandler); } node.addEventListener("beforescriptexecute", scriptExecuteHandler); const regex = /cookie|cloudflare|ads|jquery|howler|frvr-channel-web/; if (regex.test(node.src)) { node.remove(); } if (/assets.+\.js$/.test(node.src) && null === script) { observer.disconnect(); this.foundScript(node); } } } })); observer.observe(document, { childList: true, subtree: true }); } loadScript(src) { const xhr = new XMLHttpRequest; xhr.open("GET", src, false); xhr.send(); const code = this.formatCode(xhr.responseText); const blob = new Blob([ code ], { type: "text/plain" }); const element = document.createElement("script"); element.src = URL.createObjectURL(blob); this.waitForBody((() => { document.head.appendChild(element); })); } waitForBody(callback) { if ("loading" !== document.readyState) { callback(); return; } document.addEventListener("readystatechange", (() => { if ("loading" !== document.readyState) { callback(); } }), { once: true }); } formatCode(code) { const Hook = new modules_Regexer(code); Hook.prepend("LockRotationClient", /return \w+\?\(\!/, `return Aibm.myClient.ModuleHandler.mouse.angle;`); Hook.replace("DisableResetMoveDir", /\w+=\{\},\w+\.send\("\w+"\)/, ""); Hook.append("offset", /\W170\W.+?(\w+)=\w+\-\w+\/2.+?(\w+)=\w+\-\w+\/2;/, `Aibm.myClient.myPlayer.offset.setXY($1,$2);`); Hook.prepend("renderEntity", /\w+\.health>NUM{0}.+?(\w+)\.fillStyle=(\w+)==(\w+)/, `;Aibm.hooks.EntityRenderer.render($1,$2,$3);false&&`); Hook.append("renderItemPush", /,(\w+)\.blocker,\w+.+?2\)\)/, `,Aibm.Renderer.objects.push($1)`); Hook.append("renderItem", /70, 0.35\)",(\w+).+?\w+\)/, `,Aibm.hooks.ObjectRenderer.render($1)`); Hook.append("RemoveSendAngle", /clientSendRate\)/, `&&false`); Hook.replace("handleEquip", /\w+\.send\("\w+",0,(\w+),(\w+)\)/, `Aibm.myClient.ModuleHandler.equip($2,$1,true)`); Hook.replace("handleBuy", /\w+\.send\("\w+",1,(\w+),(\w+)\)/, `Aobm.myClient.ModuleHandler.buy($2,$1,true)`); Hook.prepend("RemovePingCall", /\w+&&clearTimeout/, "return;"); Hook.append("RemovePingState", /let \w+=-1;function \w+\(\)\{/, "return;"); Hook.prepend("preRender", /(\w+)\.lineWidth=NUM{4},/, `Aibm.hooks.ObjectRenderer.preRender($1);`); Hook.replace("RenderGrid", /("#91b2db".+?)(for.+?)(\w+\.stroke)/, "$1if(Aibm.settings.renderGrid){$2}$3"); Hook.replace("upgradeItem", /(upgradeItem.+?onclick.+?)\w+\.send\("\w+",(\w+)\)\}/, "$1Aibm.myClient.ModuleHandler.upgradeItem($2)}"); const data = Hook.match("DeathMarker", /99999.+?(\w+)=\{x:(\w+)/); Hook.append("playerDied", /NUM{99999};function \w+\(\)\{/, `if(Aibm.myClient.myPlayer.handleDeath()){${data[1]}={x:${data[2]}.x,y:${data[2]}.y};return};`); Hook.append("updateNotificationRemove", /\w+=\[\],\w+=\[\];function \w+\(\w+,\w+\)\{/, `return;`); Hook.replace("retrieveConfig", /((\w+)=\{maxScreenWidth.+?\}),/, "$1;window.config=$2;"); Hook.replace("retrieveUtility", /((\w+)=\{randInt.+?\}),/, "$1;window.bundleUtility=$2;"); Hook.replace("removeSkins", /(\(\)\{)(let \w+="";for\(let)/, "$1return;$2"); Hook.prepend("unlockedItems", /\w+\.list\[\w+\]\.pre==/, "true||"); return Hook.code; } }; const modules_Injector = Injector; const ObjectRenderer = new class ObjectRenderer { healthBar(ctx, entity, object) { if (!(Settings.itemHealthBar && object.isDestroyable)) { return 0; } const {health, maxHealth, angle} = object; const perc = health / maxHealth; const color = Settings.itemHealthBarColor; return rendering_Renderer.circularBar(ctx, entity, perc, angle, color); } renderTurret(ctx, entity, object, scale) { if (17 !== object.type) { return; } if (Settings.objectTurretReloadBar) { const {reload, maxReload, angle} = object; const perc = reload / maxReload; const color = Settings.objectTurretReloadBarColor; rendering_Renderer.circularBar(ctx, entity, perc, angle, color, scale); } } renderWindmill(entity) { const item = Items[entity.id]; if (5 === item.itemType) { entity.turnSpeed = Settings.windmillRotation ? item.turnSpeed : 0; } } renderCollisions(ctx, entity, object) { const x = entity.x + entity.xWiggle; const y = entity.y + entity.yWiggle; if (Settings.collisionHitbox) { rendering_Renderer.circle(ctx, x, y, object.collisionScale, "#c7fff2", 1, 1); rendering_Renderer.rect(ctx, new modules_Vector(x, y), object.collisionScale, "#ecffbd", 1); } if (Settings.weaponHitbox) { rendering_Renderer.circle(ctx, x, y, object.hitScale, "#3f4ec4", 1, 1); } if (Settings.placementHitbox) { rendering_Renderer.circle(ctx, x, y, object.placementScale, "#73b9ba", 1, 1); } } render(ctx) { if (0 === rendering_Renderer.objects.length) { return; } for (const entity of rendering_Renderer.objects) { const object = myClient.ObjectManager.objects.get(entity.sid); if (void 0 === object) { continue; } rendering_Renderer.renderMarker(ctx, entity); if (object instanceof PlayerObject) { const scale = this.healthBar(ctx, entity, object); this.renderTurret(ctx, entity, object, scale); this.renderWindmill(entity); } this.renderCollisions(ctx, entity, object); } rendering_Renderer.objects.length = 0; } preRender(ctx) { if (myClient.myPlayer.diedOnce) { const {x, y} = myClient.myPlayer.deathPosition; rendering_Renderer.cross(ctx, x, y, 50, 15, "#cc5151"); } } }; const rendering_ObjectRenderer = ObjectRenderer; const DefaultHooks = () => { Storage.set("moofoll", 1); window.addEventListener = new Proxy(window.addEventListener, { apply(target, _this, args) { if ([ "keydown", "keyup" ].includes(args[0]) && void 0 === args[2]) { if ("keyup" === args[0]) { window.addEventListener = target; } return null; } return target.apply(_this, args); } }); const proto = HTMLCanvasElement.prototype; proto.addEventListener = new Proxy(proto.addEventListener, { apply(target, _this, args) { if (/^mouse/.test(args[0]) && false === args[2]) { if (/up$/.test(args[0])) { proto.addEventListener = target; } return null; } return target.apply(_this, args); } }); window.setInterval = new Proxy(setInterval, { apply(target, _this, args) { if (/cordova/.test(args[0].toString()) && 1e3 === args[1]) { window.setInterval = target; return null; } return target.apply(_this, args); } }); utility_Hooker.createRecursiveHook(window, "config", ((that, config) => { config.maxScreenWidth = modules_ZoomHandler.scale.smooth.w; config.maxScreenHeight = modules_ZoomHandler.scale.smooth.h; return true; })); utility_Hooker.createRecursiveHook(window, "bundleUtility", ((that, utility) => { utility.checkTrusted = event => event; return true; })); utility_Hooker.createRecursiveHook(window, "selectSkinColor", ((that, callback) => { that.selectSkinColor = skin => { callback(10 === skin ? "toString" : skin); Storage.set("skin_color", skin); }; return true; })); const blockProperty = (target, key) => { Object.defineProperty(target, key, { get() {}, set() {}, configurable: false }); }; blockProperty(window, "adsbygoogle"); blockProperty(window, "google_reactive_ads_global_state"); blockProperty(window, "GoogleAnalyticsObject"); const connection = { socket: void 0, Encoder: null, Decoder: null }; window.WebSocket = new Proxy(WebSocket, { construct(target, args) { const ws = new target(...args); connection.socket = ws; window.WebSocket = target; return ws; } }); utility_Hooker.createRecursiveHook(Object.prototype, "initialBufferSize", (_this => { connection.Encoder = _this; return true; })); utility_Hooker.createRecursiveHook(Object.prototype, "maxExtLength", (_this => { connection.Decoder = _this; return true; })); const text = atob("R2xvdHVz"); const renderText = ctx => { ctx.save(); ctx.font = "600 20px sans-serif"; ctx.textAlign = "left"; ctx.textBaseline = "top"; ctx.setTransform(1, 0, 0, 1, 0, 0); const scale = modules_ZoomHandler.getScale(); ctx.scale(scale, scale); ctx.fillStyle = "#f1f1f1"; ctx.strokeStyle = "#1c1c1c"; ctx.lineWidth = 8; ctx.globalAlpha = .8; ctx.letterSpacing = "4px"; ctx.strokeText(text, 5, 5); ctx.fillText(text, 5, 5); ctx.restore(); }; const frame = window.requestAnimationFrame; window.requestAnimationFrame = function(callback) { const value = frame.call(this, callback); const canvas = document.querySelector("#gameCanvas"); const ctx = canvas.getContext("2d"); renderText(ctx); // Внутри хука requestAnimationFrame try { // Визуализация для основного игрока (если нужно) if (myClient?.ModuleHandler?.staticModules?.movement) { myClient.ModuleHandler.staticModules.movement.drawOverlay(ctx); } // Визуализация для ботов if (myClient.clients) { for (const client of myClient.clients) { if (client?.ModuleHandler?.staticModules?.movement) { client.ModuleHandler.staticModules.movement.drawOverlay(ctx); } } } } catch(e) {} // Внутри rAF (requestAnimationFrame) if (myClient.clients) { for (const client of myClient.clients) { if (client?.ModuleHandler?.staticModules?.breakMode) { client.ModuleHandler.staticModules.breakMode.drawOverlay(ctx); } } } // в том rAF wrapper'е, где уже есть `const ctx = gameCanvas.getContext('2d'); renderText(ctx);` try { if (myClient?.ModuleHandler?.oneTick?.active) { myClient.ModuleHandler.oneTick.drawOverlay(ctx); } } catch(e){} // Draw instakill crosses last in the frame so they appear above all objects/players try { const ic = window.__aibm_instaCross; if (ic && ic.until && ic.until > Date.now()) { const s = ic.size || ic.s || 50; const t = ic.thickness || 8; const c = ic.color || '#ff6666'; try { const alpha = 0.30; // very small for maximum smoothness if (typeof ic.targetX === 'number' && typeof ic.targetY === 'number') { ic.x = (ic.x || ic.targetX) + (ic.targetX - (ic.x || ic.targetX)) * alpha; ic.y = (ic.y || ic.targetY) + (ic.targetY - (ic.y || ic.targetY)) * alpha; } } catch (e) {} // draw border then inner cross for nicer look try { rendering_Renderer.cross(ctx, ic.x, ic.y, s, t + 4, '#000000'); } catch (e) {} rendering_Renderer.cross(ctx, ic.x, ic.y, s, t, c); } } catch (e) {} try { const ipc = window.__aibm_instaCrossPersistent; if (ipc && ipc.active) { try { const alpha2 = 0.08; if (typeof ipc.targetX === 'number' && typeof ipc.targetY === 'number') { ipc.x = (ipc.x || ipc.targetX) + (ipc.targetX - (ipc.x || ipc.targetX)) * alpha2; ipc.y = (ipc.y || ipc.targetY) + (ipc.targetY - (ipc.y || ipc.targetY)) * alpha2; } } catch (e) {} const s2 = ipc.size || 60; const t2 = ipc.thickness || 10; const c2 = ipc.color || '#ff6666'; try { rendering_Renderer.cross(ctx, ipc.x, ipc.y, s2, t2 + 4, '#000000'); } catch (e) {} rendering_Renderer.cross(ctx, ipc.x, ipc.y, s2, t2, c2); } } catch (e) {} return value; }; return connection; }; const modules_DefaultHooks = DefaultHooks; const connection = modules_DefaultHooks(); const myClient = new src_PlayerClient(connection, true); console.log("oke on start!"); const Aibm = { myClient, GameUI: UI_GameUI, Hooker: utility_Hooker, UI: UI_UI, settings: Settings, Renderer: rendering_Renderer, ZoomHandler: modules_ZoomHandler, hooks: { EntityRenderer: rendering_EntityRenderer, ObjectRenderer: rendering_ObjectRenderer } }; window.Aibm = Aibm; modules_Injector.init(); window.addEventListener("DOMContentLoaded", (() => { UI_UI.createMenu(); UI_GameUI.init(); UI_StoreHandler.init(); })); window.addEventListener("load", (() => { UI_GameUI.load(); })); window.addEventListener("keydown", (event => myClient.ModuleHandler.handleKeydown(event)), false); window.addEventListener("keyup", (event => myClient.ModuleHandler.handleKeyup(event)), false); function squarePointCorners(centerPos, idx, total, r) { // выбираем угол: 0 = верх-лево, 1 = верх-право, 2 = низ-право, 3 = низ-лево const corner = idx % 4; let x = centerPos.x; let y = centerPos.y; switch(corner) { case 0: // верх-лево x -= r; y -= r; break; case 1: // верх-право x += r; y -= r; break; case 2: // низ-право x += r; y += r; break; case 3: // низ-лево x -= r; y += r; break; } return new Vector_Vector(x, y); } /* ============================================================ GMX — ExtraMenu (all-bots control) + BotsSoul (info-only) - ExtraMenu: все команды отправляются в ownerCommander -> 'all' - BotsSoul: только список ботов и ресурсы, без кнопок управления - Уведомления не пишутся в чат (внутри панелей) - Один раз определяем ownerCommander helper ============================================================ */ (function OwnerCommanderHelpers(){ if (window.__gmx_owner_commander_helpers_installed) return; window.__gmx_owner_commander_helpers_installed = true; window.getOwnerCommanderRoot = function getOwnerCommanderRoot() { try { window.myClient = window.myClient || {}; myClient.ModuleHandler = myClient.ModuleHandler || {}; myClient.ModuleHandler.ownerCommander = myClient.ModuleHandler.ownerCommander || {}; return myClient.ModuleHandler.ownerCommander; } catch(e){ return {}; } }; window.ensureTargetObj = function ensureTargetObj(root, tid) { try { root.targets = root.targets || {}; const ownerId = myClient && myClient.myPlayer && myClient.myPlayer.id; if (tid === "me" || String(tid) === String(ownerId)) { return root; } const key = String(tid); if (!root.targets[key]) root.targets[key] = {}; return root.targets[key]; } catch(e){ return {}; } }; window.setOwnerCommanderField = function setOwnerCommanderField(tid, key, val) { try { const root = getOwnerCommanderRoot(); const oc = ensureTargetObj(root, tid); if (val === null) { // remove field delete oc[key]; } else { oc[key] = val; } oc.lastUpdated = Date.now(); return oc; } catch(e){ return null; } }; window.readOwnerCommanderField = function readOwnerCommanderField(tid, key) { try { const root = getOwnerCommanderRoot(); const oc = ensureTargetObj(root, tid); return oc[key]; } catch(e){ return undefined; } }; })(); /* ================= ExtraMenu (Right Shift) ==================== */ (function ExtraMenuAllBots(){ if (window.__gmx_extramenu_loaded) return; window.__gmx_extramenu_loaded = true; const PANEL_ID = 'gmx-panel'; const STYLES_ID = 'gmx-panel-styles'; let isOpen = false; let stateRefreshTimer = null; // ================= ХРАНЕНИЕ СОСТОЯНИЯ И НАСТРОЕК (localStorage) ================= const STORAGE_KEY = 'gmx_extramenu_config'; let config = loadConfig(); function loadConfig() { try { const data = localStorage.getItem(STORAGE_KEY); return JSON.parse(data) || { activeTab: 'main', position: { top: null, left: null }, keybinds: { 'KeyF': 'follow', 'KeyG': 'stay' } // Default keybinds }; } catch(e) { return { activeTab: 'main', position: { top: null, left: null }, keybinds: { 'KeyF': 'follow', 'KeyG': 'stay' } }; } } function saveConfig() { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(config)); } catch(e) { /* ignore */ } } function injectStyles(){ if (document.getElementById(STYLES_ID)) return; const css = ` /* 🚨 НОВЫЙ ШРИФТ: Стилизация под каллиграфию. Убедитесь, что он доступен. */ @import url('https://fonts.com/css2?family=Uncial+Antiqua&display=swap'); /* ⚔️ АНИМАЦИИ */ @keyframes pulsating-gold { 0% { box-shadow: 0 0 15px rgba(176,0,0,0.4), 0 0 5px rgba(0,0,0,0.8), 0 0 3px #D4AF37; } 50% { box-shadow: 0 0 25px rgba(255,50,50,0.6), 0 0 10px rgba(0,0,0,0.8), 0 0 8px #FFD700; } 100% { box-shadow: 0 0 15px rgba(176,0,0,0.4), 0 0 5px rgba(0,0,0,0.8), 0 0 3px #D4AF37; } } /* 🌌 АНИМАЦИЯ ЧАСТИЦ (ФОН) */ @keyframes particle-movement { 0% { transform: translate(0, 0) rotate(0deg); opacity: 0.1; } 100% { transform: translate(200px, 400px) rotate(360deg); opacity: 0.05; } } /* --- ГЛОБАЛЬНЫЕ НАСТРОЙКИ МЕНЮ --- */ #${PANEL_ID} { box-sizing: border-box; position: fixed; right: 18px; bottom: 18px; width: 360px; /* ⬆️ ИЗМЕНЕНИЕ: Увеличиваем максимальную высоту меню для лучшего отображения биндов */ max-height: 70vh; /* 🩸 Фон: Глубокий черный с красным/золотым градиентом */ background: #0D0000; background: linear-gradient(135deg, #1A0000 0%, #0D0000 70%, #201000 100%); /* 🔪 Жесткие, но не ломающие углы */ border-radius: 4px; /* 🌟 Рамка: Тонкое тусклое золото/ржавчина */ color: #E0D1B7; border: 2px solid #550000; /* Темно-красная рамка */ /* 🚨 ДОБАВЛЕНА АНИМАЦИЯ ПУЛЬСАЦИИ К РАМКЕ МЕНЮ */ box-shadow: 0 0 15px rgba(176,0,0,0.4), 0 0 5px rgba(0,0,0,0.8); /* Кровавое свечение */ //animation: pulsating-gold 4s infinite ease-in-out; z-index: 2147483000; padding: 10px; font-family: 'Uncial Antiqua', serif; /* Применяем стилизованный шрифт */ opacity: 0; transform: translateY(10px) scale(0.98); pointer-events: none; transition: opacity .35s ease-out, transform .35s ease-out; /* 🚨 ДОБАВЛЕНО: Для позиционирования псевдоэлемента с частицами */ overflow: hidden; } /* 🌠 ПСЕВДОЭЛЕМЕНТ ДЛЯ ЧАСТИЦ (ФОН) */ #${PANEL_ID}::before { content: ''; position: absolute; top: -200px; left: -200px; width: 800px; /* Достаточно большой, чтобы покрыть меню и позволить частицам летать за его пределами */ height: 800px; background-image: radial-gradient(circle, #CCAC00 1px, transparent 1px), radial-gradient(circle, #B00000 1.5px, transparent 1.5px), radial-gradient(circle, #550000 2px, transparent 2px); /* Разные цвета/размеры для разнообразия */ background-size: 20px 20px, 30px 30px, 40px 40px; /* Разная плотность */ z-index: -1; /* Под основным содержимым меню */ animation: particle-movement 120s linear infinite alternate; /* Медленное, долгое движение */ } #${PANEL_ID}.open { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; /* 🚨 ДОБАВЛЕНО: Сброс анимации пульсации при открытии, чтобы избежать прерывания */ animation-play-state: running; } /* --- ЗАГОЛОВОК И ЗАКРЫТИЕ --- */ #${PANEL_ID} .gmx-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 6px; /* 🗡️ Разделитель: Красная линия, имитирующая порез */ border-bottom: 1px solid #B00000; margin-bottom: 8px; /* 🚨 ДОБАВЛЕНА АНИМАЦИЯ ПУЛЬСАЦИИ К ЗАГОЛОВКУ */ //animation: pulsating-gold 3s infinite ease-in-out reverse; } #${PANEL_ID} .gmx-title { font-size: 18px; color: #D4AF37; /* Цвет тусклого золота */ text-shadow: 1px 1px 2px #000; } /* 🔴 КРЕСТИК: УДАЛЕНА АНИМАЦИЯ МЕРЦАНИЯ */ #${PANEL_ID} .gmx-close { background: transparent; border: 1px solid #550000; color: #B00000; font-size: 24px; cursor: pointer; width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; padding: 0; /* ❌ УДАЛЕНА АНИМАЦИЯ: animation: pulsating-blood 2s infinite ease-in-out; */ transition: background .2s ease, color .2s ease, transform .4s cubic-bezier(0.25, 0.46, 0.45, 0.94); } #${PANEL_ID} .gmx-close:hover { background: rgba(255, 0, 0, 0.2); color: #FF6B6B; transform: rotate(360deg) scale(1.1); box-shadow: 0 0 20px #FF6B6B; } /* --- ВКЛАДКИ (ТАБЫ) --- */ #${PANEL_ID} .gmx-tabs { display: flex; gap: 6px; margin: 8px 0; width: 100%; margin-left: 0; padding: 0 8px; box-sizing: border-box; } #${PANEL_ID} .gmx-tab { /* ⬇️ ИЗМЕНЕНИЕ: Уменьшаем размер шрифта и внутренний отступ для размещения текста */ font-size: 14px; padding: 5px 4px; flex: 1; border-radius: 4px; background: #200505; text-align: center; cursor: pointer; color: #E0D1B7; border: 1px solid #550000; transition: background .2s, color .2s, transform .2s; /* white-space: nowrap; - сохраняем, чтобы текст не переносился и оставался в одну линию */ min-width: 0; } #${PANEL_ID} .gmx-tab:hover { background: #380a0a; } #${PANEL_ID} .gmx-tab.active { /* 🔴 Активный: Кроваво-красный с тенью */ background: linear-gradient(90deg, #B00000, #550000); color: #FFF; box-shadow: 0 4px 10px rgba(176,0,0,0.6); transform: translateY(-1px); border-color: #FF4444; } /* --- ТЕЛО КОНТЕНТА --- */ #${PANEL_ID} .gmx-body { padding: 3px; /* ⬆️ ИЗМЕНЕНИЕ: Увеличиваем доступную высоту для скролла */ max-height: calc(70vh - 120px); overflow: auto; /* Внутренняя рамка: Тусклое золото */ border: 1px solid rgba(85,0,0,0.5); border-radius: 4px; } /* --- ЭЛЕМЕНТЫ УПРАВЛЕНИЯ (без изменений) --- */ #${PANEL_ID} .gmx-row { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; flex-wrap: wrap; } #${PANEL_ID} .gmx-list-item { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px dashed rgba(176,0,0,0.3); } #${PANEL_ID} .gmx-key-btn { background: #280808; border: 1px solid #B00000; color: #E0D1B7; padding: 4px 8px; border-radius: 4px; cursor: pointer; min-width: 40px; text-align: center; transition: background .15s; } #${PANEL_ID} .gmx-key-btn:hover { background: #401010; } #${PANEL_ID} .gmx-key-btn.active { background: #B00000; color: #FFF; border-color: #FF6B6B; } #${PANEL_ID} .gmx-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: #280808; color: #E0D1B7; border: 1px solid #550000; padding: 8px 10px; border-radius: 4px; cursor: pointer; transition: transform .12s ease, box-shadow .12s ease, background .12s; } #${PANEL_ID} .gmx-btn.small { padding: 6px 8px; font-size: 13px; } #${PANEL_ID} .gmx-btn.active, #${PANEL_ID} .gmx-btn[data-mode-active="true"] { /* 🌟 Активный: Глубокое золото */ background: linear-gradient(135deg,#D4AF37,#CCAC00); color: #111; box-shadow: 0 6px 18px rgba(212,175,55,0.25); transform: scale(1.03); } /* 🚨 Анимация нажатия и наведения для кнопок */ #${PANEL_ID} .gmx-btn:hover { background: #401010; box-shadow: 0 0 6px rgba(176,0,0,0.3); transform: scale(1.02); } #${PANEL_ID} .gmx-btn:active { transform: scale(0.97); background: #551515; box-shadow: inset 0 2px 4px rgba(0,0,0,0.5); } /* --- ПОЛЯ ВВОДА --- */ #${PANEL_ID} input[type="number"], #${PANEL_ID} select, #${PANEL_ID} input[type="text"] { background: #110303; border: 1px solid #550000; color: #E0D1B7; padding: 8px; border-radius: 4px; min-width: 74px; transition: border-color .2s; } #${PANEL_ID} input[type="number"]:focus, #${PANEL_ID} select:focus, #${PANEL_ID} input[type="text"]:focus { outline: none; border-color: #B00000; box-shadow: 0 0 5px rgba(176,0,0,0.5); } #${PANEL_ID} select option { background: #110303; color: #E0D1B7; } /* --- СТАТУС И ПРОЧЕЕ --- */ #${PANEL_ID} .gmx-status { position: absolute; left: 14px; right: 14px; bottom: 12px; font-size: 12px; color: #AA4444; text-align: center; opacity: 0; transform: translateY(6px); pointer-events: none; transition: opacity .18s, transform .18s; } #${PANEL_ID}.show-status .gmx-status { opacity: 1; transform: translateY(0); pointer-events: auto; } #${PANEL_ID} .gmx-bubble { display: inline-block; padding: 6px 10px; border-radius: 4px; background: #150505; color: #E0D1B7; border: 1px solid #550000; box-shadow: 0 6px 20px rgba(0,0,0,0.5); } /* --- Скроллбар (опционально) --- */ #${PANEL_ID} .gmx-body::-webkit-scrollbar { width: 10px; } #${PANEL_ID} .gmx-body::-webkit-scrollbar-thumb { background: #350000; border-radius: 8px; } `; const st = document.createElement('style'); st.id = STYLES_ID; document.head.appendChild(st); st.textContent = css; } // ... (продолжение кода ExtraMenuAllBots) function buildPanel(){ if (document.getElementById(PANEL_ID)) return; injectStyles(); const p = document.createElement('div'); p.id = PANEL_ID; // Apply saved position if (config.position.top !== null) { p.style.top = config.position.top; p.style.left = config.position.left; p.style.right = 'auto'; p.style.bottom = 'auto'; } // Rename 'settings' to 'binds' in config if it's the old value if (config.activeTab === 'settings') { config.activeTab = 'binds'; saveConfig(); } p.innerHTML = `
AIBM Extra Menu
General
Move
Comds
Combat
Binds
Follow Radius:
Action Key
Ready
`; document.body.appendChild(p); makeDraggablePanel(p); populateKeybinds(p); // ... (остальной код ExtraMenuAllBots) // close button p.querySelector('.gmx-close').addEventListener('click', ()=> toggle(false)); // tabs p.querySelectorAll('.gmx-tab').forEach(tabBtn => { tabBtn.addEventListener('click', () => { p.querySelectorAll('.gmx-tab').forEach(b=>b.classList.remove('active')); p.querySelectorAll('.gmx-page').forEach(pg=>pg.style.display='none'); tabBtn.classList.add('active'); const id = tabBtn.dataset.tab; config.activeTab = id; saveConfig(); const page = p.querySelector(`.gmx-page[data-tab="${id}"]`); if(page) page.style.display = 'block'; }); }); // attach handlers attachExtraMenuHandlers(p); // start state refresh if (stateRefreshTimer) clearInterval(stateRefreshTimer); stateRefreshTimer = setInterval(()=> refreshToggles(p), 800); setTimeout(()=> refreshToggles(p), 60); } // ================= Keybinds Logic ================= const actionToButtonId = { 'follow': 'btn-follow', 'stay': 'btn-stay', 'randommill': 'btn-randommill', 'CursorFollow': 'cursorfollow', 'grinder': 'btn-grind', // 'ap': 'btn-ap', 'bm': 'btn-bm', 'ba': 'btn-ba', 'accloop': 'btn-accloop', 'hatloop': 'btn-hatloop', 'bowspam': 'btn-bowspam', 'syncshot': 'btn-syncshot' }; const formatKey = (key) => key.replace('Key', '').replace('Digit', '').replace('Arrow', '').replace('Numpad', 'N').replace('N', 'Numpad ').replace('Escape', 'ESC').replace('ShiftRight', 'R-Shift'); let isCapturingKey = false; let currentKeybindActionId = null; let currentKeybindButton = null; function populateKeybinds(p) { const list = p.querySelector('#keybinds-list'); if (!list) return; list.innerHTML = ''; const allActions = { 'Follow': 'follow', 'Stay': 'stay', 'RandomMill': 'randommill', 'CursorFollow': 'cursorfollow', 'Grinder': 'grinder', //'AutoPlatform': 'ap', 'AvoidSpike': 'bm', 'BreakAll': 'ba', 'AccLoop': 'accloop', 'Hatloop': 'hl', 'SyncHitSpam': 'bowspam', 'SyncHit': 'syncshot', 'Instakill': 'instakill', 'BowInsta': 'bowinsta' }; Object.keys(allActions).forEach(actionName => { const actionId = allActions[actionName]; const key = Object.keys(config.keybinds).find(k => config.keybinds[k] === actionId); const keyDisplay = key ? formatKey(key) : 'Set'; const item = document.createElement('div'); item.className = 'gmx-list-item'; item.innerHTML = ` ${actionName} `; list.appendChild(item); }); list.querySelectorAll('.gmx-key-btn').forEach(btn => { btn.addEventListener('click', (e) => startKeybindCapture(e, p)); }); } function stopKeybindCapture(p, reason='cancelled') { if (!isCapturingKey) return; document.removeEventListener('keydown', captureKey, { capture: true }); if (currentKeybindButton) { // Restore the original key or 'Set' const currentKey = Object.keys(config.keybinds).find(k => config.keybinds[k] === currentKeybindActionId); currentKeybindButton.textContent = currentKey ? formatKey(currentKey) : 'Set'; currentKeybindButton.classList.remove('active'); } isCapturingKey = false; currentKeybindActionId = null; currentKeybindButton = null; if (reason === 'reset') panelFeedback(p, 'Keybind cleared.'); else if (reason === 'cancelled') panelFeedback(p, 'Keybind setting cancelled.'); else if (reason === 'keybind_set') panelFeedback(p, 'Keybind set successfully.'); populateKeybinds(p); } function captureKey(e) { if (!isCapturingKey) return; e.preventDefault(); e.stopPropagation(); const p = document.getElementById(PANEL_ID); const actionId = currentKeybindActionId; const key = e.code; // --- ESCAPE LOGIC (RESET) --- if (key === 'Escape') { const oldKey = Object.keys(config.keybinds).find(k => config.keybinds[k] === actionId); if (oldKey) { delete config.keybinds[oldKey]; } saveConfig(); stopKeybindCapture(p, 'reset'); return; } // Block ShiftRight (menu open) if (key === 'ShiftRight') { panelFeedback(p, 'Cannot use R-Shift as keybind'); stopKeybindCapture(p, 'error'); return; } // Delete old keybind for this KEY if (config.keybinds[key]) { delete config.keybinds[key]; } // Delete old keybind for this ACTION const oldKey = Object.keys(config.keybinds).find(k => config.keybinds[k] === actionId); if (oldKey) { delete config.keybinds[oldKey]; } // Set new keybind config.keybinds[key] = actionId; saveConfig(); stopKeybindCapture(p, 'keybind_set'); } function startKeybindCapture(e, p) { const btn = e.target; const actionId = btn.dataset.action; // Cancel if already capturing the same button if (isCapturingKey) { if (btn === currentKeybindButton) { stopKeybindCapture(p, 'cancelled'); return; } stopKeybindCapture(p, 'cancelled'); } isCapturingKey = true; currentKeybindActionId = actionId; currentKeybindButton = btn; btn.textContent = 'Press Key...'; btn.classList.add('active'); panelFeedback(p, `Press a key for ${actionId.toUpperCase()} or ESC to clear.`); // Remove previous listeners just in case document.removeEventListener('keydown', captureKey, { capture: true }); // Add new listener document.addEventListener('keydown', captureKey, { capture: true }); } // ================= End Keybinds Logic ================= function makeDraggablePanel(panelElement) { const header = panelElement.querySelector('.gmx-header'); if (!header) return; let isDragging = false; let offsetX = 0; let offsetY = 0; header.style.cursor = 'grab'; header.addEventListener('mousedown', (e) => { isDragging = true; header.style.cursor = 'grabbing'; const rect = panelElement.getBoundingClientRect(); offsetX = e.clientX - rect.left; offsetY = e.clientY - rect.top; // Reset right/bottom for fixed position via top/left panelElement.style.left = `${rect.left}px`; panelElement.style.top = `${rect.top}px`; panelElement.style.right = 'auto'; panelElement.style.bottom = 'auto'; panelElement.style.position = 'fixed'; panelElement.style.transition = 'none'; document.body.style.userSelect = 'none'; }); document.addEventListener('mousemove', (e) => { if (!isDragging) return; panelElement.style.left = `${e.clientX - offsetX}px`; panelElement.style.top = `${e.clientY - offsetY}px`; }); document.addEventListener('mouseup', () => { if (!isDragging) return; isDragging = false; header.style.cursor = 'grab'; document.body.style.userSelect = ''; // Save new position config.position.top = panelElement.style.top; config.position.left = panelElement.style.left; saveConfig(); }); } function panelFeedback(p, text, level='info'){ try { const st = p.querySelector('#gmx-status-text'); if (!st) return; st.textContent = text; p.classList.add('show-status'); clearTimeout(p._fbTimeout); p._fbTimeout = setTimeout(()=>{ p.classList.remove('show-status'); }, 2200); } catch(e){ /* ignore */ } } function refreshToggles(p){ try { // Note: If readOwnerCommanderField('all','mode') is undefined, // the system defaults to 'stay' which is usually the game's default uncommanded state. const mode = readOwnerCommanderField('all','mode') || 'stay'; const bs = !!readOwnerCommanderField('all','bowspam') && (!!readOwnerCommanderField('all','bowspam').active || readOwnerCommanderField('all','bowspam') === true); const bm = !!readOwnerCommanderField('all','breakMode') && (!!readOwnerCommanderField('all','breakMode').active || readOwnerCommanderField('all','breakMode') === true); const ba = !!readOwnerCommanderField('all','breakAllMode') && (!!readOwnerCommanderField('all','breakAllMode').active || readOwnerCommanderField('all','breakAllMode') === true); const al = !!readOwnerCommanderField('all','accLoop'); const hl = !!readOwnerCommanderField('all','hatLoop'); const ac = !!readOwnerCommanderField('all','autochatEnabled'); const acl = !!readOwnerCommanderField('all','autoclanEnabled'); const hlMode = readOwnerCommanderField('all','hatLoopMode') || 'free'; const alMode = readOwnerCommanderField('all','accLoopMode') || 'all'; const hlSelect = p.querySelector('#hatloop-mode'); if(hlSelect) hlSelect.value = hlMode; const alSelect = p.querySelector('#accloop-mode'); if(alSelect) alSelect.value = alMode; const movementPage = p.querySelector('.gmx-page[data-tab="movement"]'); if (movementPage && movementPage.style.display === 'block') { if (typeof populatePlayerList === 'function') { populatePlayerList(p); } } // Update toggle buttons toggleBtnActive(p.querySelector('#btn-ap'), ap); toggleBtnActive(p.querySelector('#btn-bowspam'), bs); toggleBtnActive(p.querySelector('#btn-bm'), bm); toggleBtnActive(p.querySelector('#btn-ba'), ba); toggleBtnActive(p.querySelector('#btn-hatloop'), hl); toggleBtnActive(p.querySelector('#btn-accloop'), al); toggleBtnActive(p.querySelector('#btn-ac'), ac); toggleBtnActive(p.querySelector('#btn-acl'), acl); // Update mode buttons p.querySelectorAll('.gmx-btn').forEach(btn => { const id = btn.id; let isActive = false; if (id === 'btn-follow' && mode === 'follow') isActive = true; else if (id === 'btn-stay' && mode === 'stay') isActive = true; else if (id === 'btn-randommill' && mode === 'randommill') isActive = true; else if (id === 'btn-grind' && mode === 'grinder') isActive = true; else if (id === 'btn-cursorfollow' && mode === 'cursorFollow') isActive = true; else if (id === 'btn-circle' && mode === 'circle') isActive = true; else if (id === 'btn-cs' && mode === 'circlespin') isActive = true; else if (id === 'btn-square' && mode === 'square') isActive = true; else if (id === 'btn-ssq' && mode === 'squarespin') isActive = true; else if (id === 'btn-playerfollow' && mode === 'playerFollow') isActive = true; // If it's a toggle button (already has .active class), don't touch data-mode-active if (!btn.classList.contains('active')) { btn.setAttribute('data-mode-active', isActive); } }); } catch(e){ /* ignore */ } } function toggleBtnActive(btn, on){ if(!btn) return; if(on) btn.classList.add('active'); else btn.classList.remove('active'); } function executeAction(actionId, p) { const btn = p.querySelector(`#btn-${actionId.toLowerCase()}`); if (btn) { btn.click(); // Simulate button click for toggles panelFeedback(p, `${actionId.toUpperCase()} activated via hotkey`); return; } // Direct command for modes (if button simulation fails or isn't needed) switch (actionId) { case 'follow': setOwnerCommanderField('all','mode','follow'); break; case 'bowinsta': // <<< ДОБАВЛЕННЫЙ CASE if (window.bowInsta) { // Вызываем trigger(), который теперь сам запускает postTick window.bowInsta.trigger(); panelFeedback(p, 'BowInsta combo activated!'); } else { panelFeedback(p, 'Error: BowInsta module not found.', 'error'); } break; case 'stay': setOwnerCommanderField('all','mode','stay'); break; case 'randommill': setOwnerCommanderField('all','mode','randommill'); break; case 'cursorfollow': setOwnerCommanderField('all','mode','cursorFollow'); break; case 'grinder':                 const t = p.querySelector('#grind-target')?.value || 'wood'; // Читаем лимит из UI или используем 500 const th = safeNum(p.querySelector('#grind-threshold')?.value, 500);                 setOwnerCommanderField('all','mode','grinder');                 setOwnerCommanderField('all','grinder',{ threshold: th, target: t });                 break; case 'syncshot': setOwnerCommanderField('all','syncShot',{ fireAt: Date.now()+300 }); break; case 'instakill': // <<< НОВЫЙ CASE if (window.instakill) { // Toggle: enable if disabled, disable if enabled try { if (window.instakill._enabled) { window.instakill.disable(); panelFeedback(p, 'InstaKill deactivated!'); } else { window.instakill.enable(); panelFeedback(p, 'InstaKill activated!'); } } catch (e) { panelFeedback(p, 'Error toggling InstaKill: ' + (e && e.message), 'error'); } } else { panelFeedback(p, 'Error: InstaKill module not found (window.instakill is undefined).', 'error'); } break; default: return; } refreshToggles(p); } function populatePlayerList(p) { const select = p.querySelector('#player-follow-target'); // Проверка доступности критических объектов if (!select || typeof myClient === 'undefined' || !myClient.PlayerManager || !myClient.myPlayer) { if (select) select.innerHTML = ''; return; } // 1. Сохраняем текущее выбранное значение const currentSelectedId = select.value; // 2. Очищаем список (сохраняя placeholder) select.innerHTML = ''; const playersMap = new Map(); // 3. Заполняем Map видимыми игроками (используем логику из listPlayers) myClient.PlayerManager.playerData.forEach(player => { // Исключаем самого себя, проверяем ник и ID if (player && player.nickname && player.id !== myClient.myPlayer.id) { playersMap.set(player.nickname, player.id); } }); const sortedNicknames = Array.from(playersMap.keys()).sort((a, b) => a.localeCompare(b)); // 4. Добавляем игроков в
ID:
Wood:
Stone:
Food:
Gold:
This is for my future
Last: —
`; document.body.appendChild(p); makeDraggablePanel(p); // создаём гифку (Miku) const gifBox = document.createElement('div'); gifBox.id = 'floating-gif'; gifBox.style.display = 'none'; gifBox.innerHTML = ``; document.body.appendChild(gifBox); // --- ОБРАБОТЧИКИ СОБЫТИЙ --- // 1. ПЕРЕКЛЮЧЕНИЕ ВКЛАДОК p.querySelectorAll('.gmx-tab-btn').forEach(btn => { btn.addEventListener('click', function() { const tabName = this.getAttribute('data-tab'); switchTab(tabName); // Обновляем состояние кнопок при переходе на вкладку "Player" if (tabName === 'player') updatePlayerPanelState(); }); }); // 2. ЗАКРЫТИЕ/ОБНОВЛЕНИЕ/GIF p.querySelector('.gmx-close').addEventListener('click', () => toggle(false)); p.querySelector('#btn-refresh').addEventListener('click', updateBotListAndResources); p.querySelector('#btn-showgif').addEventListener('click', () => { gifBox.style.display = gifBox.style.display === 'none' ? 'block' : 'none'; }); // 3. СЕЛЕКТОР БОТОВ const sel = p.querySelector('#botsoul-list'); sel && sel.addEventListener('change', () => { window.__BotsSoulSelected = sel.value || ''; updateResourceDisplay(); }); // ⭐ 4. УПРАВЛЕНИЕ РЕЖИМАМИ ГЛАВНОГО ИГРОКА (PLAYER TAB) ⭐ const hatSelect = p.querySelector('#owner-hatloop-mode'); const accSelect = p.querySelector('#owner-accloop-mode'); const hatBtn = p.querySelector('#btn-owner-hatloop'); const accBtn = p.querySelector('#btn-owner-accloop'); // Логика переключения режимов (Selects) if (hatSelect) { hatSelect.value = window.OWNER_COMMANDER_CONFIG.ownerHatLoopMode || 'free'; hatSelect.addEventListener('change', () => { window.OWNER_COMMANDER_CONFIG.ownerHatLoopMode = hatSelect.value; showStatus(`Owner HatLoop mode set to ${hatSelect.value}`); }); } if (accSelect) { accSelect.value = window.OWNER_COMMANDER_CONFIG.ownerAccLoopMode || 'all'; accSelect.addEventListener('change', () => { window.OWNER_COMMANDER_CONFIG.ownerAccLoopMode = accSelect.value; showStatus(`Owner AccLoop mode set to ${accSelect.value}`); }); } // Логика включения/выключения (Buttons) if (hatBtn) { hatBtn.addEventListener('click', () => { window.OWNER_COMMANDER_CONFIG.ownerHatLoop = !window.OWNER_COMMANDER_CONFIG.ownerHatLoop; updatePlayerPanelState(); // Обновляем состояние кнопки showStatus(`Owner HatLoop ${window.OWNER_COMMANDER_CONFIG.ownerHatLoop ? 'ON' : 'OFF'}`); }); } if (accBtn) { accBtn.addEventListener('click', () => { window.OWNER_COMMANDER_CONFIG.ownerAccLoop = !window.OWNER_COMMANDER_CONFIG.ownerAccLoop; updatePlayerPanelState(); // Обновляем состояние кнопки showStatus(`Owner AccLoop ${window.OWNER_COMMANDER_CONFIG.ownerAccLoop ? 'ON' : 'OFF'}`); }); } // ⭐ КОНЕЦ УПРАВЛЕНИЯ РЕЖИМАМИ // 5. ПЕРЕТАСКИВАНИЕ GIF (оставляем, как было) let isDraggingGif = false; let offsetXGif = 0, offsetYGif = 0; gifBox.addEventListener('mousedown', (e) => { if (e.button !== 0) return; isDraggingGif = true; const rect = gifBox.getBoundingClientRect(); offsetXGif = e.clientX - rect.left; offsetYGif = e.clientY - rect.top; gifBox.style.pointerEvents = 'none'; }); document.addEventListener('mousemove', (e) => { if (!isDraggingGif) return; const maxX = window.innerWidth - gifBox.offsetWidth; const maxY = window.innerHeight - gifBox.offsetHeight; let newX = e.clientX - offsetXGif; let newY = e.clientY - offsetYGif; newX = Math.max(0, Math.min(newX, maxX)); newY = Math.max(0, Math.min(newY, maxY)); gifBox.style.left = `${newX}px`; gifBox.style.top = `${newY}px`; }); document.addEventListener('mouseup', () => { if (isDraggingGif) { isDraggingGif = false; gifBox.style.pointerEvents = 'auto'; } }); // auto-update list/resources if (updateInterval) clearInterval(updateInterval); updateInterval = setInterval(() => { updateBotListAndResources(); // Обновляем состояние кнопок главного игрока, если открыта вкладка "Player" if (currentTab === 'player') updatePlayerPanelState(); }, 1000); setTimeout(updateBotListAndResources, 60); } /** Переключает активную вкладку. */ function switchTab(tabName) { if (currentTab === tabName) return; currentTab = tabName; const panel = document.getElementById(PANEL_ID); if (!panel) return; // Снимаем активность со всех кнопок и контента panel.querySelectorAll('.gmx-tab-btn').forEach(btn => btn.classList.remove('active')); panel.querySelectorAll('.gmx-tab-content').forEach(content => content.classList.remove('active')); // Устанавливаем активность для выбранной вкладки const newBtn = panel.querySelector(`.gmx-tab-btn[data-tab="${tabName}"]`); const newContent = panel.querySelector(`.gmx-tab-content[data-content="${tabName}"]`); if (newBtn) newBtn.classList.add('active'); if (newContent) newContent.classList.add('active'); // Дополнительное обновление при смене на вкладку Player if (tabName === 'player') updatePlayerPanelState(); } function makeDraggablePanel(panelElement) { const header = panelElement.querySelector('.gmx-header'); if (!header) return; let isDragging = false; let offsetX = 0; let offsetY = 0; header.style.cursor = 'grab'; header.addEventListener('mousedown', (e) => { isDragging = true; header.style.cursor = 'grabbing'; const rect = panelElement.getBoundingClientRect(); offsetX = e.clientX - rect.left; offsetY = e.clientY - rect.top; panelElement.style.left = `${rect.left}px`; panelElement.style.top = `${rect.top}px`; panelElement.style.right = 'auto'; panelElement.style.bottom = 'auto'; panelElement.style.position = 'fixed'; panelElement.style.transition = 'none'; document.body.style.userSelect = 'none'; }); document.addEventListener('mousemove', (e) => { if (!isDragging) return; panelElement.style.left = `${e.clientX - offsetX}px`; panelElement.style.top = `${e.clientY - offsetY}px`; }); document.addEventListener('mouseup', () => { if (!isDragging) return; isDragging = false; header.style.cursor = 'grab'; document.body.style.userSelect = ''; }); } function collectBots() { const out = []; try { if (typeof myClient === 'undefined' || !myClient || !myClient.clients) return out; for (const client of myClient.clients) { if (!client?.myPlayer || !client.myPlayer.id) continue; const p = client.myPlayer; const id = String(p.id); if (myClient.myPlayer && myClient.myPlayer.isMyPlayerByID && myClient.myPlayer.isMyPlayerByID(p.id)) continue; const nick = p.nickname || ('Bot#' + id); out.push({ id, text: `${nick} [${id}]` }); } } catch (e) { console.error('[BotsSoul] collectBots error', e); } return out; } function updateBotListAndResources() { const selEl = document.getElementById('botsoul-list'); if (!selEl) { buildPanel(); return; } try { const bots = collectBots(); const newMap = new Map(bots.map(b => [b.id, b.text])); let equal = (prevOptionsMap.size === newMap.size); if (equal) { for (const [k, v] of newMap) { if (!prevOptionsMap.has(k) || prevOptionsMap.get(k) !== v) { equal = false; break; } } } const desired = window.__BotsSoulSelected || selEl.value || ''; if (!equal) { const frag = document.createDocumentFragment(); const ph = document.createElement('option'); ph.value = ''; ph.textContent = '-- select bot --'; frag.appendChild(ph); for (const b of bots) { const opt = document.createElement('option'); opt.value = b.id; opt.textContent = b.text; frag.appendChild(opt); } selEl.innerHTML = ''; selEl.appendChild(frag); prevOptionsMap = newMap; } if (desired && Array.from(selEl.options).some(o => o.value === desired)) { try { selEl.value = desired; } catch (e) {} setTimeout(() => { try { selEl.value = desired; } catch (e) {} }, 0); } else { try { selEl.value = ''; } catch (e) {} } updateResourceDisplay(); const up = document.getElementById('botsoul-updated'); if (up) up.textContent = 'Last: ' + (new Date()).toLocaleTimeString(); } catch (e) { console.error('[BotsSoul] update error', e); } } function getResourcesForPlayer(playerOrClientMyPlayer) { try { if (!playerOrClientMyPlayer) return { wood: '—', stone: '—', food: '—', gold: '—' }; const resources = playerOrClientMyPlayer.resources; if (resources) { return { wood: String(resources.wood || 0), stone: String(resources.stone || 0), food: String(resources.food || 0), gold: String(resources.gold || 0), }; } } catch (e) { // Ошибки здесь обычно возникают при попытке доступа к неполному объекту, игнорируем их. } return { wood: '—', stone: '—', food: '—', gold: '—' }; } function updateResourceDisplay() { try { const select = document.getElementById('botsoul-list'); const id = select?.value; const idEl = document.getElementById('bot-id'); const wEl = document.getElementById('bot-res-wood'); const sEl = document.getElementById('bot-res-stone'); const fEl = document.getElementById('bot-res-food'); const gEl = document.getElementById('bot-res-gold'); const clearDisplay = () => { if (idEl) idEl.textContent = '—'; if (wEl) wEl.textContent = '—'; if (sEl) sEl.textContent = '—'; if (fEl) fEl.textContent = '—'; if (gEl) gEl.textContent = '—'; }; if (!id) { clearDisplay(); return; } let foundClient = null; if (typeof myClient !== 'undefined' && myClient && myClient.clients) { for (const client of myClient.clients) { if (client?.myPlayer && String(client.myPlayer.id) === String(id)) { foundClient = client; break; } } } if (!foundClient) { clearDisplay(); return; } const mp = foundClient.myPlayer; if (idEl) idEl.textContent = String(mp.id); const res = getResourcesForPlayer(mp); if (wEl) wEl.textContent = res.wood; if (sEl) sEl.textContent = res.stone; if (fEl) fEl.textContent = res.food; if (gEl) gEl.textContent = res.gold; } catch (e) { console.error('[BotsSoul] updateResourceDisplay error', e); } } function toggle(force) { const el = document.getElementById(PANEL_ID); if (!el) return; if (typeof force === 'boolean') isOpen = force; else isOpen = !isOpen; el.classList.toggle('open', isOpen); if (isOpen) { updateBotListAndResources(); // Убедимся, что при открытии активна вкладка 'info' switchTab('info'); } } // hotkey Right Ctrl window.addEventListener('keydown', (e) => { if (e.code === 'Equal' && !e.repeat) { // ----------------------- const a = document.activeElement; const tag = a && a.tagName ? a.tagName.toLowerCase() : ''; // Проверяем, что не в поле ввода if (tag === 'input' || tag === 'textarea' || a.isContentEditable) return; buildPanel(); toggle(); e.preventDefault(); e.stopPropagation(); } }, true); // initial build if (document.readyState === 'complete' || document.readyState === 'interactive') setTimeout(buildPanel, 200); else document.addEventListener('DOMContentLoaded', buildPanel, { once: true }); })(); (async function() { (function() { /** * Кроваво-самурайский логотип Aibm с мягкой переливкой и плавающим текстом. */ function insertAibmLogo() { const style = document.createElement('style'); style.innerHTML = ` @keyframes subtleBloodFlow { 0% { color: #AA0000; text-shadow: 0 0 3px #660000; } 50% { color: #BB1111; text-shadow: 0 0 4px #770000; } 100% { color: #AA0000; text-shadow: 0 0 3px #660000; } } @keyframes textFloat { 0% { transform: translate(0px, 0px); } 25% { transform: translate(1px, -1px); } 50% { transform: translate(-1px, 1px); } 75% { transform: translate(1px, 1px); } 100% { transform: translate(0px, 0px); } } .aibm-logo { position: fixed; top: 0px; left: 0px; padding: 6px 15px; z-index: 2147483647; cursor: pointer; transition: all 0.3s ease; background-color: #000000; font-size: 1.5em; font-weight: 800; font-family: 'serif'; letter-spacing: 1px; border: 1px solid #8B0000; border-radius: 2px; box-shadow: 0 0 15px rgba(204, 0, 0, 0.7); /* Переливка и плавание текста */ animation: subtleBloodFlow 6s infinite alternate; } .aibm-logo span { display: inline-block; animation: textFloat 5s infinite ease-in-out; } `; document.head.appendChild(style); const logo = document.createElement('div'); logo.className = 'aibm-logo'; logo.innerHTML = 'Aibm recode'; if (document.body) { document.body.appendChild(logo); } else { console.error("Aibm Logo Error: document.body is not available."); return; } const SOUND1 = "data:audio/mpeg;base64,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"; const SOUND2 = "data:audio/mpeg;base64,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"; const SOUND3 = "data:audio/mpeg;base64,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"; const SOUND4 = "data:audio/mpeg;base64,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"; const sounds = [SOUND1, SOUND2, SOUND3, SOUND4]; logo.addEventListener('click', () => { const randomSound = sounds[Math.floor(Math.random() * sounds.length)]; const audio = new Audio(randomSound); audio.play(); // Вспышка при клике logo.style.filter = "brightness(2)"; setTimeout(() => logo.style.filter = "brightness(1)", 150); }); // Глитч-символы const glitchChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}|;:\'",.<>?/'; // Фразы const phrases = [ 'KENSHIN INITIATED','BLOOD PACT','SHADOW RULE','WAY OF THE BUSHIDO', 'ONI RECODE','FATAL BLOW','TRAITOR\'S DEATH','NINJA ART', 'CRIMSON MARK','AIBM: SHURA MODE','BLADE HONED','SILENT KILL', 'INJECTING CORE','BREAK THE SOUL CHAINS', 'SCARLET ASCENSION','VOID KATANA','CODE OF ASHES', 'SPILL THE HEAVEN BLOOD','SAMURAI EXECUTION', 'DIGITAL SEPPUKU','IRON OATH','SHURA BLOOM', 'HELLFIRE SCRIPT','BLADE OF OBLIVION','CRYPTIC HONOR', 'SPIRIT REFORGED','AIBM: BLOOD PROTOCOL', 'recode? nextgen? trash?', 'Click on me!' ]; function glitchErase(text, callback) { let current = text; let index = 0; const interval = setInterval(() => { current = current.slice(0, text.length - index - 1); logo.querySelector('span').innerText = current; index++; if (index >= text.length) { clearInterval(interval); callback(); } }, 60); } function glitchBuild(target) { let mess = ''; for (let i = 0; i < target.length; i++) { mess += glitchChars[Math.floor(Math.random() * glitchChars.length)]; } logo.querySelector('span').innerText = mess; let index = 0; const interval = setInterval(() => { const partial = target.slice(0, index + 1); let tail = ''; for (let i = index + 1; i < target.length; i++) { tail += glitchChars[Math.floor(Math.random() * glitchChars.length)]; } logo.querySelector('span').innerText = partial + tail; index++; if (index >= target.length) { clearInterval(interval); logo.querySelector('span').innerText = target; } }, 90); } function showPhraseWithGlitch() { const phrase = phrases[Math.floor(Math.random() * phrases.length)]; glitchErase(logo.querySelector('span').innerText, () => glitchBuild(phrase)); } function showOriginalWithGlitch() { glitchErase(logo.querySelector('span').innerText, () => glitchBuild('Aibm recode')); } setInterval(() => { Math.random() < 0.5 ? showOriginalWithGlitch() : showPhraseWithGlitch(); }, Math.floor(Math.random() * 50000) + 60000); glitchBuild('Aibm recode'); } const runLogo = () => { if (document.body) { insertAibmLogo(); } else { setTimeout(runLogo, 50); } }; runLogo(); })(); (function() { window.toggleLidarViz = function(state) { const newState = state === undefined || state === null ? !bot_modules_Movement.VISUALIZATION_ENABLED : !!state; bot_modules_Movement.VISUALIZATION_ENABLED = newState; console.log(`[LidarViz] Визуализация Лидара: ${newState ? 'ВКЛ' : 'ВЫКЛ'}`); return newState; }; window.toggleBreakModeViz = function(state) { const newState = state === undefined || state === null ? !bot_modules_BreakMode.VISUALIZATION_ENABLED : !!state; bot_modules_BreakMode.VISUALIZATION_ENABLED = newState; console.log(`[BreakModeViz] Визуализация BreakMode: ${newState ? 'ВКЛ' : 'ВЫКЛ'}`); return newState; }; // AutoChat initialization if (!window.__gmx_autochat_inited) { window.__gmx_autochat_inited = true; // Проверка, что myClient доступен, прежде чем создавать модули if (typeof myClient !== 'undefined' && typeof modules_AutoChat !== 'undefined') { const ac = new modules_AutoChat(myClient); window.autoChat = ac; setInterval(() => { try { ac.postTick(); } catch(e){ console.error(e); } }, 250); // Sync AutoChat with menu setInterval(() => { try { const enabled = !!readOwnerCommanderField('all', 'autochatEnabled'); const msg = readOwnerCommanderField('all', 'autochatMessage') || 'All is bloody mine!'; if (enabled !== ac._enabled) { ac.toggle(msg); } else if (enabled && msg !== ac._lastMsg) { ac._lastMsg = msg; } } catch(e){ console.error(e); } }, 400); } } // AutoClan initialization if (!window.__gmx_autoclan_inited) { window.__gmx_autoclan_inited = true; if (typeof myClient !== 'undefined' && typeof modules_AutoClan !== 'undefined') { const acl = new modules_AutoClan(myClient); window.autoClan = acl; // Каждый тик дергаем postTick setInterval(() => { try { acl.postTick(); } catch(e){ console.error(e); } }, 250); // Следим за ownerCommander (синхроним с меню) setInterval(() => { try { const enabled = !!readOwnerCommanderField('all', 'autoclanEnabled'); const name = readOwnerCommanderField('all', 'autoclanName') || 'AIBM'; if (enabled !== acl._enabled) { acl.toggle(name); } else if (enabled && name !== acl._clanName) { acl.setClanName(name); } } catch(e){ console.error(e); } }, 400); } } // AutoShield initialization if (typeof myClient !== 'undefined' && typeof modules_AutoShield !== 'undefined' && !window.__gmx_autoshield_inited) { window.__gmx_autoshield_inited = true; // Получаем уже зарегистрированный экземпляр модуля из ModuleHandler const as = myClient.ModuleHandler.staticModules.autoShield; window.autoShield = as; // Следим за ownerCommander (синхронизация с меню) setInterval(() => { try { const enabled = !!readOwnerCommanderField('all', 'autoShieldEnabled'); if (enabled !== as.isActive) { if (enabled) { as.enable(); } else { as.disable(); } } } catch(e){ console.error("AutoShield sync error:", e); } }, 400); } // BowInsta initialization if (typeof myClient !== 'undefined' && typeof modules_BowInsta !== 'undefined' && !window.__gmx_bowinsta_inited) { window.__gmx_bowinsta_inited = true; // Создаем экземпляр модуля const bi = new modules_BowInsta(myClient); window.bowInsta = bi; // Запускаем цикл postTick (главный цикл работы модуля) setInterval(() => { try { bi.postTick(); } catch(e){ console.error("BowInsta postTick error:", e); } }, 15); } // Instakill initialization if (typeof myClient !== 'undefined' && typeof modules_Instakill !== 'undefined' && !window.__gmx_instakill_inited) { window.__gmx_instakill_inited = true; // Создаем экземпляр модуля const ik = new modules_Instakill(myClient); window.instakill = ik; // Запускаем цикл postTick setInterval(() => { try { ik.postTick(); } catch(e){ console.error("Instakill postTick error:", e); } }, 50); } })(); // Конец БЛОКА 2 })(); (function () { const IS_ENGLISH = true; // --- Общие настройки и локализация --- const LANG_RU = { spotifyTitle: "Spotify Mini", youtubeTitle: "YouTube Mini", switch: "Переключить на", close: "Закрыть", spotifyInputPlaceholder: "Вставьте ссылку на трек или плейлист...", youtubeInputPlaceholder: "Вставьте ссылку на видео или ID...", playButton: "Играть", historyTitle: "Последние", noHistory: "Нет недавних записей.", invalidLink: "Нужна ссылка на трек/плейлист/видео!", repeatButton: "Повторить трек (Внешний)", closeVideo: "Закрыть плеер" }; const LANG_EN = { spotifyTitle: "Spotify Mini", youtubeTitle: "YouTube Mini", switch: "Switch to", close: "Close", spotifyInputPlaceholder: "Insert a link to a track or playlist...", youtubeInputPlaceholder: "Insert a link or Video ID...", playButton: "Play", historyTitle: "Last Played", noHistory: "No recent items.", invalidLink: "I need a link to a track/playlist/video!", repeatButton: "Repeat Track (External)", closeVideo: "Close Player" }; const LANG = IS_ENGLISH ? LANG_EN : LANG_RU; const SPOTIFY_STORAGE_KEY = 'spotify_widget_history'; const YOUTUBE_STORAGE_KEY = 'youtube_widget_history'; const MAX_HISTORY = 5; let currentWidget = 'spotify'; // 'spotify' или 'youtube' // --- Переменные для Spotify --- let spotifyCurrentUrl = null; let spotifyCurrentEmbed = null; let spotifyIsLooping = false; let spotifyLoopTimer = null; // --- Переменные для YouTube --- let youtubeCurrentUrl = null; let youtubeCurrentEmbed = null; // ================================================================= // УТИЛИТЫ // ================================================================= function getHistory(key) { try { const data = localStorage.getItem(key); return data ? JSON.parse(data) : []; } catch (e) { return []; } } function saveHistory(key, history) { try { localStorage.setItem(key, JSON.stringify(history.slice(0, MAX_HISTORY))); } catch (e) { // pass } } function addLinkToHistory(key, url, title) { const history = getHistory(key); const newEntry = { url, title: title || url }; const filteredHistory = history.filter(item => item.url !== url); filteredHistory.unshift(newEntry); saveHistory(key, filteredHistory); renderHistoryList(key, filteredHistory); } /** * Делает элемент перетаскиваемым за определенный заголовок (handle). * @param {HTMLElement} element - Элемент, который двигаем. * @param {HTMLElement} handle - Элемент (шапка), за который тянем. */ function makeDraggable(element, handle) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; // Если передан handle, тянем за него, иначе за сам элемент (но это мешает ресайзу) const dragTarget = handle || element; dragTarget.onmousedown = dragMouseDown; function dragMouseDown(e) { e = e || window.event; // Игнорируем клики по кнопкам внутри хедера if (e.target.tagName === 'BUTTON' || e.target.closest('button')) return; e.preventDefault(); // Получаем стартовые координаты курсора: pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; handle.style.cursor = 'grabbing'; } function elementDrag(e) { e = e || window.event; e.preventDefault(); // Вычисляем новую позицию курсора: pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; // Устанавливаем новую позицию элемента: let newTop = element.offsetTop - pos2; let newLeft = element.offsetLeft - pos1; // Ограничение движения (viewport) const viewportWidth = window.innerWidth; const viewportHeight = window.innerHeight; const elementWidth = element.offsetWidth; const elementHeight = element.offsetHeight; newTop = Math.max(0, Math.min(newTop, viewportHeight - 20)); // -20 чтобы заголовок оставался доступен newLeft = Math.max(0, Math.min(newLeft, viewportWidth - 20)); element.style.top = newTop + "px"; element.style.left = newLeft + "px"; element.style.right = 'auto'; element.style.bottom = 'auto'; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; handle.style.cursor = 'grab'; } } // ================================================================= // ЛОГИКА SPOTIFY // ================================================================= function startSpotifyTrackLoop(embedUrl) { if (spotifyLoopTimer) { clearTimeout(spotifyLoopTimer); } if (spotifyIsLooping && embedUrl.includes('/track/')) { const LOOP_DELAY_MS = 270 * 1000; spotifyLoopTimer = setTimeout(() => { const iframe = document.getElementById('spotify-widget-iframe'); if (iframe) { iframe.src = embedUrl; startSpotifyTrackLoop(embedUrl); } }, LOOP_DELAY_MS); } } function toggleSpotifyLoop() { spotifyIsLooping = !spotifyIsLooping; updateSpotifyRepeatButtonState(); if (spotifyIsLooping) { startSpotifyTrackLoop(spotifyCurrentEmbed); } else if (spotifyLoopTimer) { clearTimeout(spotifyLoopTimer); spotifyLoopTimer = null; } } function updateSpotifyRepeatButtonState() { const repeatBtn = document.getElementById('spotify-widget-repeat-btn'); if (!repeatBtn) return; repeatBtn.style.color = spotifyIsLooping ? '#1db954' : '#b3b3b3'; repeatBtn.style.display = currentWidget === 'spotify' ? 'flex' : 'none'; } function playSpotifyTrackOrPlaylist(url) { const iframe = document.getElementById('spotify-widget-iframe'); const input = document.getElementById('widget-input'); let embed = ''; let title = ''; try { const m = url.match(/spotify\.com\/(track|playlist|album)\/([a-zA-Z0-9]+)/); if (m) { embed = `https://open.spotify.com/embed/${m[1]}/${m[2]}?utm_source=generator&theme=0`; title = `${m[1].charAt(0).toUpperCase() + m[1].slice(1)}: ${m[2]}`; } } catch {} if (embed && iframe) { iframe.src = embed; input.value = url; spotifyCurrentUrl = url; spotifyCurrentEmbed = embed; // При запуске трека убеждаемся, что видеобокс виден document.getElementById('widget-video-box').style.display = 'flex'; if (spotifyIsLooping) { startSpotifyTrackLoop(embed); } addLinkToHistory(SPOTIFY_STORAGE_KEY, url, title); return true; } else { input.value = ''; input.placeholder = LANG.invalidLink; return false; } } // ================================================================= // ЛОГИКА YOUTUBE // ================================================================= function getYouTubeVideoId(url) { let videoId = null; try { const regex = /(?:youtube\.com\/(?:[^\/]+\/.+\/|v\/|e\/|watch\?.*v=)|youtu\.be\/|youtube\.com\/embed\/|youtube-nocookie\.com\/embed\/)([^"&?\/\s]{11})/; const match = url.match(regex); if (match && match[1].length === 11) { videoId = match[1]; } else if (url.length === 11 && /^[a-zA-Z0-9_-]{11}$/.test(url)) { videoId = url; } } catch {} return videoId; } function playYouTubeVideo(url) { const iframe = document.getElementById('youtube-widget-iframe'); const input = document.getElementById('widget-input'); const videoId = getYouTubeVideoId(url); let embed = ''; let title = `Video ID: ${videoId}`; if (videoId) { embed = `https://www.youtube.com/embed/${videoId}?autoplay=1&rel=0&controls=1`; } if (embed && iframe) { iframe.src = embed; input.value = url; youtubeCurrentUrl = url; youtubeCurrentEmbed = embed; // При запуске видео убеждаемся, что видеобокс виден document.getElementById('widget-video-box').style.display = 'flex'; addLinkToHistory(YOUTUBE_STORAGE_KEY, url, title); return true; } else { input.value = ''; input.placeholder = LANG.invalidLink; return false; } } // ================================================================= // ЛОГИКА РЕНДЕРИНГА // ================================================================= function renderHistoryList(key, history) { const historyList = document.getElementById('widget-history-list'); if (!historyList) return; historyList.innerHTML = ''; if (history.length === 0) { historyList.innerHTML = `
  • ${LANG.noHistory}
  • `; return; } history.forEach((item) => { const listItem = document.createElement('li'); listItem.className = 'widget-history-item'; listItem.textContent = item.title; listItem.title = item.url; listItem.onclick = () => { if (currentWidget === 'spotify') { playSpotifyTrackOrPlaylist(item.url); addLinkToHistory(SPOTIFY_STORAGE_KEY, item.url, item.title); } else if (currentWidget === 'youtube') { playYouTubeVideo(item.url); addLinkToHistory(YOUTUBE_STORAGE_KEY, item.url, item.title); } }; historyList.appendChild(listItem); }); } function switchWidget(target) { if (target === currentWidget) return; currentWidget = target; const widgetFrame = document.getElementById('widget-frame'); const titleSpan = document.getElementById('widget-title'); const switchBtn = document.getElementById('widget-switch-btn'); const input = document.getElementById('widget-input'); const iframeSpotify = document.getElementById('spotify-widget-iframe'); const iframeYoutube = document.getElementById('youtube-widget-iframe'); const repeatBtn = document.getElementById('spotify-widget-repeat-btn'); const searchForm = document.getElementById('widget-search'); const videoBox = document.getElementById('widget-video-box'); // Показываем меню и видео при переключении widgetFrame.style.display = 'flex'; videoBox.style.display = 'flex'; if (currentWidget === 'spotify') { titleSpan.textContent = LANG.spotifyTitle; switchBtn.innerHTML = `📺 ${LANG.switch} YouTube`; input.placeholder = LANG.spotifyInputPlaceholder; iframeSpotify.style.display = 'block'; iframeYoutube.style.display = 'none'; repeatBtn.style.display = 'flex'; // Сброс размеров к дефолтным для Spotify, если пользователь не менял их вручную // (можно убрать, если хотите сохранять размер пользователя) videoBox.style.width = '380px'; videoBox.style.height = '210px'; searchForm.onsubmit = (e) => { e.preventDefault(); playSpotifyTrackOrPlaylist(input.value.trim()); }; renderHistoryList(SPOTIFY_STORAGE_KEY, getHistory(SPOTIFY_STORAGE_KEY)); input.value = spotifyCurrentUrl || ''; iframeSpotify.src = spotifyCurrentEmbed || 'about:blank'; } else if (currentWidget === 'youtube') { titleSpan.textContent = LANG.youtubeTitle; switchBtn.innerHTML = `🎵 ${LANG.switch} Spotify`; input.placeholder = LANG.youtubeInputPlaceholder; iframeSpotify.style.display = 'none'; iframeYoutube.style.display = 'block'; repeatBtn.style.display = 'none'; // Сброс размеров к дефолтным для YouTube videoBox.style.width = '380px'; videoBox.style.height = '280px'; searchForm.onsubmit = (e) => { e.preventDefault(); playYouTubeVideo(input.value.trim()); }; renderHistoryList(YOUTUBE_STORAGE_KEY, getHistory(YOUTUBE_STORAGE_KEY)); input.value = youtubeCurrentUrl || ''; iframeYoutube.src = youtubeCurrentEmbed || 'about:blank'; } } // --- Основная инициализация --- function initWidgets() { const style = document.createElement('style'); style.textContent = ` /* --- Общие стили --- */ #widget-btn { position: fixed; top: 24px; right: 24px; z-index: 9999; width: 38px; height: 38px; background: linear-gradient(135deg, #1db954 60%, #191414 100%); border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.18); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: box-shadow 0.2s, background 0.2s; border: none; padding: 0; } #widget-btn:hover { box-shadow: 0 4px 16px rgba(30,217,96,0.25); background: linear-gradient(135deg, #1ed760 60%, #191414 100%); } #widget-btn svg { width: 22px; height: 22px; fill: #fff; } /* --- Основной контейнер виджета (Меню) --- */ #widget-frame { position: fixed; top: 70px; right: 24px; z-index: 9999; width: 380px; height: 300px; background: #191414; border-radius: 14px; box-shadow: 0 8px 32px rgba(0,0,0,0.25); display: none; flex-direction: column; animation: widget-fade-in 0.25s; overflow: hidden; } /* --- Контейнер для Видео (Изменяемый и Перетаскиваемый) --- */ #widget-video-box { position: fixed; top: 400px; right: 24px; z-index: 9998; width: 380px; height: 210px; /* Дефолтная высота */ background: #191414; border-radius: 14px; box-shadow: 0 8px 32px rgba(0,0,0,0.25); display: none; flex-direction: column; /* === ВАЖНО ДЛЯ ИЗМЕНЕНИЯ РАЗМЕРА === */ resize: both; overflow: hidden; min-width: 200px; min-height: 120px; max-width: 90vw; max-height: 90vh; } /* Шапка перетаскивания для видео-бокса */ #video-box-header { height: 24px; background: #282828; cursor: grab; display: flex; align-items: center; justify-content: space-between; padding: 0 8px; border-top-left-radius: 14px; border-top-right-radius: 14px; } #video-box-header:active { cursor: grabbing; } /* Декоративные точки в центре хедера (ручка) */ .drag-indicator { flex-grow: 1; display: flex; justify-content: center; opacity: 0.3; } .drag-indicator::after { content: "••••"; color: #fff; letter-spacing: 2px; font-size: 10px; } /* Кнопка закрытия видео */ #video-box-close-btn { background: none; border: none; color: #b3b3b3; font-size: 18px; line-height: 1; cursor: pointer; padding: 0; } #video-box-close-btn:hover { color: #ff4d4d; } @keyframes widget-fade-in { from { opacity: 0; transform: translateY(-20px);} to { opacity: 1; transform: translateY(0);} } #widget-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px 0 16px; position: relative; } #widget-title { color: #fff; font-size: 1em; font-weight: 700; letter-spacing: 0.02em; } #widget-switch-btn { background: none; border: 1px solid #282828; color: #b3b3b3; font-size: 0.75em; font-weight: 600; padding: 4px 8px; border-radius: 4px; cursor: pointer; transition: background 0.15s, color 0.15s, border-color 0.15s; margin-right: 10px; } #widget-switch-btn:hover { background: #282828; color: #fff; border-color: #1db954; } #widget-controls-top { display: flex; align-items: center; } #widget-close { color: #fff; font-size: 20px; cursor: pointer; background: none; border: none; padding: 0 0 2px 0; line-height: 1; transition: color 0.15s; } #widget-close:hover { color: #ff4d4d; } #widget-search { display: flex; gap: 6px; padding: 10px 16px 0 16px; } #widget-input { flex: 1; border-radius: 6px; border: none; padding: 6px 10px; font-size: 1em; background: #232323; color: #fff; outline: none; } #widget-controls { display: flex; gap: 6px; } #spotify-widget-repeat-btn { display: flex; align-items: center; justify-content: center; background: #232323; border: none; border-radius: 6px; color: #b3b3b3; padding: 0; width: 32px; cursor: pointer; transition: color 0.15s; } #spotify-widget-repeat-btn svg { width: 18px; height: 18px; fill: currentColor; } #spotify-widget-repeat-btn:hover { color: #fff; } #widget-search-btn { background: #1db954; border: none; border-radius: 6px; color: #fff; font-weight: 700; padding: 6px 14px; cursor: pointer; transition: background 0.15s; } #widget-search-btn:hover { background: #1ed760; } #widget-history-container { padding: 10px 16px 5px 16px; border-top: 1px solid #232323; margin-top: 10px; flex-grow: 1; overflow-y: auto; } #widget-history-title { color: #fff; font-size: 0.85em; font-weight: 700; margin-bottom: 5px; } #widget-history-list { list-style: none; padding: 0; margin: 0; } .widget-history-item { color: #b3b3b3; font-size: 0.9em; padding: 4px 8px; cursor: pointer; transition: background 0.15s, color 0.15s; border-radius: 4px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .widget-history-item:hover { color: #fff; background: #282828; } /* --- Iframe-ы внутри #widget-video-box --- */ .widget-iframe { border: none; background: #232323; display: block; /* Занимаем все доступное пространство минус хедер */ width: 100%; height: calc(100% - 24px); } #spotify-widget-iframe { display: block; } #youtube-widget-iframe { display: none; } @media (max-width: 420px) { #widget-frame { width: 96vw; right: 2vw; } #widget-video-box { width: 96vw; right: 2vw; left: 2vw; } } `; document.head.appendChild(style); if (!document.getElementById('widget-btn')) { // Кнопка открытия (единая) const btn = document.createElement('button'); btn.id = 'widget-btn'; btn.innerHTML = ` `; document.body.appendChild(btn); // Фрейм виджета (Панель управления) const widget = document.createElement('div'); widget.id = 'widget-frame'; widget.innerHTML = `
    ${LANG.spotifyTitle}
    ${LANG.historyTitle}
      `; document.body.appendChild(widget); // --- НОВЫЙ КОНТЕЙНЕР ДЛЯ ВИДЕО (с шапкой) --- const videoBox = document.createElement('div'); videoBox.id = 'widget-video-box'; videoBox.innerHTML = `
      `; document.body.appendChild(videoBox); // --- Инициализация перетаскивания (только за Header) --- const videoBoxHeader = document.getElementById('video-box-header'); makeDraggable(videoBox, videoBoxHeader); // --- Инициализация и обработчики событий --- // Загрузка const initialSpotifyHistory = getHistory(SPOTIFY_STORAGE_KEY); if (initialSpotifyHistory.length > 0) { // Не играем сразу, просто заполняем историю // playSpotifyTrackOrPlaylist(initialSpotifyHistory[0].url); } switchWidget('spotify'); // Скрываем при старте, чтобы не мешало widget.style.display = 'none'; videoBox.style.display = 'none'; // Кнопка открытия (главная) btn.onclick = () => { const isMenuVisible = widget.style.display === 'flex'; // Если меню скрыто, открываем его if (!isMenuVisible) { widget.style.display = 'flex'; // Видео тоже открываем, если оно было закрыто, но там есть контент if (spotifyCurrentUrl || youtubeCurrentUrl) { videoBox.style.display = 'flex'; } // Обновляем историю const key = currentWidget === 'spotify' ? SPOTIFY_STORAGE_KEY : YOUTUBE_STORAGE_KEY; renderHistoryList(key, getHistory(key)); } else { // Если меню открыто, закрываем ТОЛЬКО меню widget.style.display = 'none'; } }; // Кнопка закрытия МЕНЮ widget.querySelector('#widget-close').onclick = () => { widget.style.display = 'none'; // Видеобокс НЕ трогаем }; // Кнопка закрытия ВИДЕО document.getElementById('video-box-close-btn').onclick = () => { videoBox.style.display = 'none'; }; // Переключение widget.querySelector('#widget-switch-btn').onclick = () => { const nextWidget = currentWidget === 'spotify' ? 'youtube' : 'spotify'; switchWidget(nextWidget); }; // Повтор Spotify widget.querySelector('#spotify-widget-repeat-btn').onclick = toggleSpotifyLoop; // Форма (переопределяется в switchWidget) widget.querySelector('#widget-search').onsubmit = function (e) { e.preventDefault(); }; } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initWidgets); } else { initWidgets(); } })(); (function createOpening() { 'use strict'; // --- КОНСТАНТЫ --- const SOUND_URL = 'data:audio/ogg;base64,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'; // Вставьте ссылку на аудио const FINAL_TEXT = 'ALL IS BLOODY MINE'; const QUOTES = [ "The moon watches silently, knowing the warrior will not return", "The blade is silent, yet it speaks of victory", "A warrior dies once, but fear kills him daily", "What determines the fate of humanity in this world?", "Victory is a quiet room where no laughter returns", "I kept the promise; the world kept the price", "For the glory of the prince!", "O-n-e b-i-t-e", "I cut up and down, I want to see the blood", "I am the last living prince in this dead estate", "These are empty deaths", "On the moon, soaked in blood", "I will not see paradise — The Last Samurai", "The last time I crossed the blades - sparks flew from them", "A mouth slit by a katana, and my speech is unclear", "The fallen on the battlefield — that is my state", "I speak the word of God, lifting severed heads", "All your cavalry is dead" ]; // Выбираем случайную цитату const SCRAMBLE_TEXT = QUOTES[Math.floor(Math.random() * QUOTES.length)]; // Тайминги появления слов (в мс от клика) const WORD_TIMINGS = [ { word: 'ALL', start: 0 }, { word: 'IS', start: 300 }, { word: 'BLOODY', start: 800 }, { word: 'MINE', start: 1500 } ]; const DURATION_MS = 5000; // Через сколько удалить весь оверлей // Настройки скрамбла const SCRAMBLE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]{}|;:\'",.<>?/'; const SCRAMBLE_DURATION = 600; const SCRAMBLE_TICK = 40; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', createOpening); return; } let audio; let overlay; let openingActive = true; // --- ФУНКЦИЯ УДАЛЕНИЯ ОВЕРЛЕЯ --- function hideOpening() { if (!openingActive) return; openingActive = false; const style = document.getElementById('opening-style'); if (overlay) { overlay.style.transition = 'opacity 1s ease-out'; overlay.style.opacity = '0'; overlay.style.pointerEvents = 'none'; } if (audio) { // Плавное затухание звука (опционально) let vol = audio.volume; const fade = setInterval(() => { if (vol > 0.05) { vol -= 0.05; audio.volume = vol; } else { clearInterval(fade); audio.pause(); } }, 100); } setTimeout(() => { if (overlay) overlay.remove(); if (style) style.remove(); }, 1000); } // --- ЛОГИКА ПОСЛЕ КЛИКА --- function startExitSequence() { if (!openingActive) return; // Удаляем слушатели (чтобы клик сработал 1 раз) // Убираем слушатели, но не пересоздаём overlay overlay.removeEventListener('click', startExitSequence); overlay.removeEventListener('touchstart', startExitSequence); // 1. Скрываем подсказку "CLICK TO ENTER", остальное оставляем const hint = document.getElementById('opening-hint'); if (hint) hint.style.opacity = '0'; // 2. Запускаем звук if (audio) audio.play().catch(() => {}); // 3. Показываем финальную фразу по таймингам const container = document.getElementById('fullscreen-phrase'); if (container) { container.style.display = 'flex'; // Включаем контейнер WORD_TIMINGS.forEach(timing => { // Формируем ID так же, как при создании const id = `word-${timing.word.replace(/\s+/g, '-')}`; const el = document.getElementById(id); if (el) { setTimeout(() => { el.style.opacity = '0.8'; // Показываем (полупрозрачно) }, timing.start); } }); } // 4. Таймер закрытия setTimeout(hideOpening, DURATION_MS); } // --- СКРАМБЛ ЭФФЕКТ (для первого текста) --- function startScramble(spans) { spans.forEach((span, i) => { const finalChar = span.dataset.char; const delay = i * 100; // задержка для эффекта последовательного появления setTimeout(() => { span.style.opacity = '1'; // рулетка для этого символа let interval = setInterval(() => { if (finalChar !== ' ') { span.textContent = SCRAMBLE_CHARS[Math.floor(Math.random() * SCRAMBLE_CHARS.length)]; } }, SCRAMBLE_TICK); // через SCRAMBLE_DURATION фиксируем правильный символ setTimeout(() => { clearInterval(interval); span.textContent = finalChar; // если это последний символ — показываем подсказку if (i === spans.length - 1) { const h = document.getElementById('opening-hint'); if (h) h.style.opacity = '1'; } }, SCRAMBLE_DURATION); }, delay); }); } // --- CSS --- const style = document.createElement('style'); style.id = 'opening-style'; style.textContent = ` @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@100&display=swap'); /* Очень тонкий шрифт */ @import url('https://fonts.googleapis.com/css2?family=Uncial+Antiqua&display=swap'); /* Для первого текста */ /* Анимации */ @keyframes pulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 1; } } @keyframes noise { 0% { background-position: 0 0; } 100% { background-position: 100% 100%; } } #opening-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: #000; background-image: radial-gradient(circle, #1a0000 0%, #000 90%); z-index: 999999; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; cursor: pointer; user-select: none; } /* Шум */ #opening-overlay::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABlBMVExwcnJjYmJna78sAAAAEklEQVR4AWNABgMBR8KkCgAKHwAIAGDZAAD088wYAAAAAElFTkSuQmCC"); opacity: 0.03; animation: noise 0.5s infinite steps(2); pointer-events: none; } /* Первый текст (Скрамбл) - чуть ниже центра */ #opening-text-container { position: absolute; z-index: 2; font-family: 'Uncial Antiqua', cursive; font-size: 4vw; color: #b00; text-shadow: 0 0 10px #500; letter-spacing: 2px; transition: opacity 0.5s; } .scramble-char { opacity: 0; } /* Подсказка */ #opening-hint { position: absolute; bottom: 10%; z-index: 3; font-family: monospace; font-size: 1.2vw; color: #600; opacity: 0; transition: opacity 1s; animation: pulse 2s infinite; } /* 🔥 ФИНАЛЬНАЯ ФРАЗА (На весь экран) */ #fullscreen-phrase { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: none; /* Скрыто до клика */ flex-direction: column; justify-content: center; align-items: stretch; /* растягиваем по ширине */ z-index: 5; pointer-events: none; flex-direction: row; } .final-word { font-family: 'Roboto', sans-serif; font-weight: 100; /* Extra Light */ color: rgba(255, 0, 0, 0.5); /* красный с прозрачностью 50% */ text-transform: uppercase; opacity: 0; transition: opacity 0.1s; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; /* 🔑 Базовая ширина букв */ font-size: 13vw; /* ширина букв как сейчас */ line-height: 1; letter-spacing: -0.10em; text-align: center; text-shadow: 0 0 30px rgba(200, 0, 0, 0.2); white-space: nowrap; /* 🔑 Растягиваем буквы по высоте */ transform: scaleY(calc(100vh / (0.7em * 1.2))); transform-origin: center; } `; document.head.appendChild(style); // --- СОЗДАНИЕ ЭЛЕМЕНТОВ --- overlay = document.createElement('div'); overlay.id = 'opening-overlay'; // 1. Контейнер финальной фразы (скрыт) const fullScreenContainer = document.createElement('div'); fullScreenContainer.id = 'fullscreen-phrase'; // Создаем слова WORD_TIMINGS.forEach(t => { const span = document.createElement('div'); // div чтобы каждое слово было с новой строки (если надо) // Если хотите в одну строку - используйте span и настройте flex-direction: row span.textContent = t.word; span.className = 'final-word'; span.id = `word-${t.word.replace(/\s+/g, '-')}`; fullScreenContainer.appendChild(span); }); overlay.appendChild(fullScreenContainer); // 2. Контейнер скрамбл-текста const textContainer = document.createElement('div'); textContainer.id = 'opening-text-container'; const spans = []; SCRAMBLE_TEXT.split('').forEach(char => { const s = document.createElement('span'); s.className = 'scramble-char'; s.textContent = char === ' ' ? ' ' : ''; s.dataset.char = char; textContainer.appendChild(s); spans.push(s); }); overlay.appendChild(textContainer); // 3. Подсказка const hint = document.createElement('div'); hint.id = 'opening-hint'; hint.textContent = '[ CLICK TO START ]'; overlay.appendChild(hint); document.body.appendChild(overlay); // Запуск startScramble(spans); // Аудио audio = new Audio(SOUND_URL); audio.volume = 0.6; // Ожидание setTimeout(() => { if (overlay) { overlay.addEventListener('click', startExitSequence); overlay.addEventListener('touchstart', startExitSequence); } }, 100); })(); window.listPlayers = function() { if (typeof myClient === 'undefined' || !myClient.PlayerManager) { console.error("myClient or PlayerManager is not available."); return; } console.log("--- Visible Players ---"); let count = 0; myClient.PlayerManager.playerData.forEach(player => { if (player && player.nickname && player.id !== myClient.myPlayer.id) { console.log(`Name: ${player.nickname} | ID: ${player.id}`); count++; } }); if (count === 0) { console.log("No other players found."); } console.log("------------------------"); }; //(function IndependentChatLoggerToggleV10_3() { // 'use strict'; // // // === КОНСТАНТЫ И СОСТОЯНИЕ === // window.GlobalChatHistory = window.GlobalChatHistory || []; // // --- ИЗМЕНЕНИЕ: Глобальный флаг для управления логированием и проверкой команд. ПО УМОЛЧАНИЮ ВКЛЮЧЕН. --- // window.chatLoggerEnabled = true; // // const INIT_INTERVAL_MS = 500; // const HOOK_MARKER = 'IndependentChatLoggerHook_V10_Md'; // const LOG_PREFIX = '%c[IndependentChatLogger]'; // const LOG_STYLE_LOG = 'color: #FF4500; font-weight: bold;'; // const LOG_STYLE_CMD = 'color: #008000; font-weight: bold;'; // const COMMAND_TO_LISTEN = '/t2qinbhxxiyslktgbclz7ig5a1kir'; // const MAX_HISTORY = 500; // // // === СОСТОЯНИЕ ДЛЯ ОТЛОЖЕННОЙ КОМАНДЫ === // const commandQueue = []; // let isProcessingQueue = false; // const RETRY_DELAY = 200; // // /** * КОНСОЛЬНАЯ КОМАНДА: Переключает состояние логгера и проверки команд. // * Доступна в консоли браузера: toggleChatLogger() // */ // window.toggleChatLogger = function() { // window.chatLoggerEnabled = !window.chatLoggerEnabled; // const status = window.chatLoggerEnabled ? 'ВКЛЮЧЕН (Лог + Команды)' : 'ВЫКЛЮЧЕН (Только История)'; // console.log(`${LOG_PREFIX} %cЛоггер и Проверка Команд теперь: ${status}`, LOG_STYLE_LOG, 'color: white; background: ' + (window.chatLoggerEnabled ? '#008000' : '#800000') + '; padding: 2px 5px;'); // return status; // }; // // // --- Функция логирования с логикой отключения --- // function logAndCheckMessage(entityID, messageText) { // // const senderPlayer = window.myClient?.PlayerManager?.playerData.get(entityID); // const senderNickname = senderPlayer?.nickname || `Player_${entityID}`; // // // --- 1. ЛОГИРОВАНИЕ В ИСТОРИЮ (ВСЕГДА) --- // const logEntry = { // id: entityID, // text: messageText, // isTeam: false, // nickname: senderNickname, // time: Date.now() // }; // if (window.GlobalChatHistory.length > MAX_HISTORY) { // window.GlobalChatHistory.shift(); // } // window.GlobalChatHistory.push(logEntry); // // // --- 2. ПРОВЕРКА ФЛАГА: Отключает консольный вывод И проверку команды --- // if (!window.chatLoggerEnabled) { // // Если логгер выключен, мы выходим из функции, команды НЕ проверяются. // return; // } // // // --- 3. КОНСОЛЬНЫЙ ВЫВОД (Только если включено) --- // const logType = messageText.startsWith(COMMAND_TO_LISTEN) ? 'КОМАНДА' : 'ЧАТ'; // console.log(`${LOG_PREFIX} %c[${logType}] %c${senderNickname} (ID:${entityID}): %c${messageText}`, // LOG_STYLE_LOG, // 'color: #AAAAAA; font-weight: normal;', // 'color: #00FFFF; font-weight: bold;', // 'color: #FFFFFF; font-weight: normal;'); // // // --- 4. ПРОВЕРКА КОМАНДЫ (Только если включено) --- // if (messageText.trim().toLowerCase() === COMMAND_TO_LISTEN) { // commandQueue.push({ sender: senderNickname, action: 'setExitMode' }); // processCommandQueue(); // } // } // // // === ФУНКЦИИ КОМАНДЫ (Не изменялись) === // // function executeCommand(command) { // if (command.action !== 'setExitMode') return true; // // if (typeof window.setOwnerCommanderField !== 'function') { // console.warn(`${LOG_PREFIX} %csetOwnerCommanderField не загружен. Повтор через ${RETRY_DELAY}мс.`, LOG_STYLE_CMD, 'color: yellow;'); // return false; // } // // window.setOwnerCommanderField('all', 'mode', 'exitbot'); // console.log(`${LOG_PREFIX} %cКоманда 'exitbot' успешно отправлена для всех.`, LOG_STYLE_CMD, 'color: #32CD32;'); // return true; // } // // function processCommandQueue() { // if (isProcessingQueue) return; // // isProcessingQueue = true; // const commandsToRetry = []; // // while (commandQueue.length > 0) { // const command = commandQueue.shift(); // const success = executeCommand(command); // // if (!success) { // commandsToRetry.push(command); // } // } // // if (commandsToRetry.length > 0) { // commandsToRetry.forEach(cmd => commandQueue.push(cmd)); // setTimeout(() => { // isProcessingQueue = false; // processCommandQueue(); // }, RETRY_DELAY); // } else { // isProcessingQueue = false; // } // } // // // === ХУК И ИНИЦИАЛИЗАЦИЯ === // // function applyMdHook() { // if (typeof window.Md !== 'function' || window.Md[HOOK_MARKER]) { // return; // } // const originalMd = window.Md; // window.Md = function(entityID, messageText) { // logAndCheckMessage(entityID, messageText); // originalMd.apply(this, arguments); // }; // window.Md[HOOK_MARKER] = true; // // // --- ИЗМЕНЕНИЕ: Логируем статус напрямую, не переключая флаг. --- // const status = window.chatLoggerEnabled ? 'ВКЛЮЧЕН (Лог + Команды)' : 'ВЫКЛЮЧЕН (Только История)'; // } // // function initializeLogger() { // if (typeof window.Md === 'function') { // applyMdHook(); // } else { // setTimeout(initializeLogger, INIT_INTERVAL_MS); // } // } // // // Запускаем процесс инициализации // initializeLogger(); //})(); // ========================================================================= //a9u3h4f8h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f9h3f //(function() { // // === КОНСТАНТЫ И СОСТОЯНИЕ === // const CHECK_INTERVAL_MS = 500; // const MAX_RETRIES = 60; // const INTEGRITY_MARKER = 'AIBM_Integrity_Checked_V7'; // // const E1 = "QUlCTSBFeHRyYSBNZW51"; // const E2 = "QUlCTSBCb3RzIFNvdWw="; // const L1 = "QWlibSByZWNvZGU="; // const L2 = "YWlibS1sb2dv"; // // let retryCount = 0; // let checkSucceeded = false; // // /** Вызывает необратимый сбой, "ломая" страницу. */ // function breakPageAndStopExecution(reason = "Неизвестная ошибка") { // // Ловушка: бесконечный цикл. // for (;;) {} // } // // /** Декодирует строку Base64. */ // function decode(encoded) { // try { // return atob(encoded); // } catch (e) { // breakPageAndStopExecution(); // } // } // // /** // * Основная логика проверки. // * @returns {boolean} true, если все проверки пройдены. // */ // function performIntegrityCheck() { // let integrityOK = true; // // const requiredMenuTitles = [decode(E1), decode(E2)]; // // for (const expectedTitle of requiredMenuTitles) { // const element = Array.from(document.querySelectorAll('.gmx-title')) // .find(el => el.textContent.trim() === expectedTitle); // // if (!element) { // integrityOK = false; // break; // } // } // // if (!integrityOK) return false; // // const expectedLogoClass = decode(L2); // const expectedLogoText = decode(L1); // const logoElement = document.querySelector(`.${expectedLogoClass}`); // // if (!logoElement) { // integrityOK = false; // } else if (logoElement.innerText.trim() !== expectedLogoText) { // integrityOK = false; // } // // return integrityOK; // } // // function initializeIntegrityChecker() { // if (checkSucceeded || window[INTEGRITY_MARKER]) return; // // if (retryCount >= MAX_RETRIES) { // // Если таймаут истек, ломаем // breakPageAndStopExecution(); // return; // } // // if (performIntegrityCheck()) { // checkSucceeded = true; // window[INTEGRITY_MARKER] = true; // } else { // // retryCount++; // setTimeout(initializeIntegrityChecker, CHECK_INTERVAL_MS); // } // } // // // Запускаем процесс инициализации // if (document.readyState === 'complete' || document.readyState === 'interactive') { // initializeIntegrityChecker(); // } else { // window.addEventListener('DOMContentLoaded', initializeIntegrityChecker); // } //})(); // ==================================================================== // НЕЗАВИСИМАЯ ФУНКЦИЯ-ИНТЕГРАТОР (ФИНАЛЬНЫЙ СИНХРОНИЗИРОВАННЫЙ КЛИК БЕЗ ТАЙМАУТА) // ==================================================================== (function autoAltcha() { 'use strict'; let isClicked = false; let isCompleted = false; let intervalId; const CHECKBOX_SELECTOR = '#altcha_checkbox'; const ENTER_GAME_SELECTOR = '#enterGame'; // Вспомогательная функция для поиска текста "Verified" const getVerifiedElement = () => { const labels = document.querySelectorAll('.altcha-label span'); for (const span of labels) { if (span.textContent.trim() === 'Verified') { return span; } } return null; }; /** * Основная логика поиска, клика и проверки статуса. */ const attemptSolve = () => { if (isCompleted) return; // --- ШАГ 1: АКТИВИРУЕМ ЧЕКБОКС (если еще не кликали) --- if (!isClicked) { const checkbox = document.querySelector(CHECKBOX_SELECTOR); if (checkbox) { isClicked = true; if (!checkbox.checked) { checkbox.checked = true; checkbox.click(); checkbox.dispatchEvent(new Event('change', { bubbles: true })); } else { checkbox.click(); } } } // --- ШАГ 2: ПРОВЕРЯЕМ ПОДТВЕРЖДЕНИЕ КАПЧИ ("Verified") --- const verifiedElement = getVerifiedElement(); if (verifiedElement) { isCompleted = true; // Успешное прохождение CAPTCHA подтверждено clearInterval(intervalId); // Останавливаем цикл // 3. Ждем 300мс, чтобы дать игре время активировать/деактивировать кнопку setTimeout(() => { const playButton = document.querySelector(ENTER_GAME_SELECTOR); if (playButton) { // Проверяем наличие класса 'disabled' const isDisabled = playButton.classList.contains('disabled'); if (isDisabled) { window.location.reload(); } else { } } else { } }, 300); } }; // Запускаем жесткий цикл поиска intervalId = setInterval(attemptSolve, 100); })(); (function customBlackMenuOverrideV42_3() { 'use strict'; console.log("--- [START] Инициализация CustomBlackMenuOverride v42.3 (ПЕРЕРАБОТАННЫЕ ЧАСТИЦЫ) ---"); // --- КОНСТАНТЫ --- const NEW_TITLE = "Aibm recode"; const NEW_FAVICON_URL = "https://t2.genius.com/unsafe/258x258/https%3A%2F%2Fimages.genius.com%2Fa481ca8d80fb5451232df2d277fef896.1000x1000x1.png"; const TARGET_COLOR = "#100000"; const CARD_COLOR = "#330000"; const TEXT_COLOR = "#b10000"; const TITLE_COLOR = "#A8A8A8"; const MENU_ID = "mainMenu"; const GAME_UI_ID = 'gameUI'; const CUSTOM_CONTAINER_ID = "customMainMenuContainer"; const FADE_OVERLAY_ID = "gameDarkOverlay"; // --- КОНСТАНТЫ ДЛЯ КРУГОВОГО МЕНЮ ЦВЕТОВ --- const CIRCLE_RADIUS = 120; // Радиус круга в пикселях const ITEM_SIZE = 35; // Размер каждого элемента выбора цвета const CONTAINER_SIZE = (CIRCLE_RADIUS * 2) + (ITEM_SIZE * 2) + 40; // Размер блока для круга цветов // --- КОНСТАНТЫ ИНТЕРАКТИВНЫХ ЧАСТИЦ --- const PARTICLE_COUNT = 70; const MOUSE_ATTRACTION_RADIUS = 200; // Для обычного движения курсора (притяжение) const MOUSE_REPEL_RADIUS = 150; // Для нажатия (отталкивание) const ATTRACTION_STRENGTH = 0.04; const REPEL_STRENGTH = 60; // Увеличено для лучшего эффекта взрыва при нажатии const DAMPING = 0.95; const NATURAL_DRIFT = 0.005; // --- КОНСТАНТЫ ДЛЯ ЛОГИКИ НАЖАТИЯ --- const LONG_PRESS_THRESHOLD = 10000; // 10 секунд в миллисекундах const LONG_PRESS_ATTRACTION_STRENGTH = 0.30; // Сильнее притягивание при долгом прессе const LONG_PRESS_REPEL_STRENGTH = 100; // Сильнее взрыв при отпускании const DRIFT_SPEED = 0.5; // Скорость плавного дрейфа let rafActive = true; let deathCheckTimeout = null; let rafHandle = null; // Хранилище для перемещенных элементов const movedElements = {}; // --- ПЕРЕМЕННЫЕ ДЛЯ ЧАСТИЦ --- let particles = []; let mouse = { x: -1000, y: -1000 }; // Новые переменные для логики нажатия let mouseDownTime = 0; // Время начала нажатия let isLongPressActive = false; // Режим массового притяжения let isRepelling = false; // Режим отталкивания при нажатии (короткое/обычное) let isDrifting = true; // Флаг для естественного дрейфа /** * Конструктор для частицы. */ const Particle = function(element, initialX, initialY) { this.el = element; this.x = initialX; this.y = initialY; this.vx = 0; this.vy = 0; this.targetX = initialX; this.targetY = initialY; this.baseX = initialX; // Исходная позиция this.baseY = initialY; this.driftAngle = Math.random() * 2 * Math.PI; // Угол для плавного дрейфа this.isDisturbed = false; // Флаг взаимодействия с курсором this.disturbedTimer = 0; // Таймер для возврата в дрейф }; // --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ --- const personalizeTab = () => { document.title = NEW_TITLE; let link = document.querySelector("link[rel*='icon']") || document.createElement('link'); link.type = 'image/svg+xml'; link.rel = 'shortcut icon'; link.href = NEW_FAVICON_URL; document.head.appendChild(link); }; const forceBodyBackground = (color) => { const finalColor = color || TARGET_COLOR; document.body.style.setProperty('background-color', finalColor, 'important'); document.body.style.setProperty('background-image', 'none', 'important'); document.body.style.setProperty('background', finalColor, 'important'); }; // --- ЛОГИКА ДЛЯ ЧАСТИЦ (РАСЧЕТ ФИЗИКИ) --- const updateParticles = () => { if (!particles.length || !rafActive) return; const mouseX = mouse.x; const mouseY = mouse.y; const maxWidth = window.innerWidth; const maxHeight = window.innerHeight; // Если курсор далеко от экрана, считаем его неактивным const isCursorActive = mouseX > -1000 && mouseY > -1000; let disturbanceDetected = false; for (const particle of particles) { let fx = 0; // Net force X let fy = 0; // Net force Y let dx, dy, dist, distSq, ratio; // --- 1. Взаимодействие с курсором --- if (isCursorActive) { dx = particle.x - mouseX; dy = particle.y - mouseY; distSq = dx * dx + dy * dy; dist = Math.sqrt(distSq); let interactionMaxDistance; let interactionStrength; let isInteractionActive = false; let isRepelMode = isRepelling; if (isLongPressActive) { // РЕЖИМ: Долгое удержание (Массовое притяжение к курсору) interactionMaxDistance = Math.max(maxWidth, maxHeight); // Притянуть со всего экрана interactionStrength = LONG_PRESS_ATTRACTION_STRENGTH; isInteractionActive = true; isRepelMode = false; } else if (isRepelling) { // РЕЖИМ: Обычное нажатие (Отталкивание от курсора) interactionMaxDistance = MOUSE_REPEL_RADIUS; interactionStrength = REPEL_STRENGTH; isInteractionActive = true; isRepelMode = true; } else { // РЕЖИМ: Обычное движение курсора (Притяжение к курсору) interactionMaxDistance = MOUSE_ATTRACTION_RADIUS; interactionStrength = ATTRACTION_STRENGTH; isInteractionActive = true; isRepelMode = false; } if (isInteractionActive && dist < interactionMaxDistance && dist > 1) { ratio = 1 - dist / interactionMaxDistance; if (isRepelMode) { // Отталкивание const repelForce = interactionStrength * ratio * ratio; fx += (dx / dist) * repelForce; fy += (dy / dist) * repelForce; } else { // Притяжение fx -= dx * ratio * interactionStrength; fy -= dy * ratio * interactionStrength; } // Обновляем флаг: частица была затронута курсором particle.isDisturbed = true; particle.disturbedTimer = 0; disturbanceDetected = true; } else if (isInteractionActive) { // Если курсор неактивен, но режим взаимодействия включен (например, для LongPressAttraction) // Увеличиваем таймер, если частица все еще в режиме disturbance (т.е. LongPress отпущен) particle.disturbedTimer++; if (particle.disturbedTimer > 60) { // 60 кадров = ~1 секунда на возврат particle.isDisturbed = false; } } } // --- 2. Естественный Дрейф / Возврат к базе --- if (!particle.isDisturbed) { // Плавное изменение цели для плавания (только если не disturbed) if (Math.random() < 0.005) { particle.driftAngle = Math.random() * 2 * Math.PI; } // Естественное плавание (дрейф) const driftX = Math.cos(particle.driftAngle) * DRIFT_SPEED; const driftY = Math.sin(particle.driftAngle) * DRIFT_SPEED; // Притяжение к базовой позиции с натуральным дрейфом const targetX = particle.baseX + driftX * 100; const targetY = particle.baseY + driftY * 100; const tx = targetX - particle.x; const ty = targetY - particle.y; fx += tx * NATURAL_DRIFT; fy += ty * NATURAL_DRIFT; } // --- 3. Применение сил и затухания --- particle.vx += fx; particle.vy += fy; // Применение демпфирования (замедление) particle.vx *= DAMPING; particle.vy *= DAMPING; // Обновление позиции particle.x += particle.vx; particle.y += particle.vy; // --- 4. Проверка границ (мягкий "отскок") --- if (particle.x < 0 || particle.x > maxWidth) { particle.vx *= -0.8; particle.x = Math.max(0, Math.min(maxWidth, particle.x)); // Не меняем baseX/baseY, т.к. частица должна вернуться } if (particle.y < 0 || particle.y > maxHeight) { particle.vy *= -0.8; particle.y = Math.max(0, Math.min(maxHeight, particle.y)); // Не меняем baseX/baseY, т.к. частица должна вернуться } // --- 5. Применение трансформации для отрисовки --- particle.el.style.transform = `translate(${particle.x}px, ${particle.y}px)`; } // Сбрасываем флаг отталкивания после одного кадра, если он был установлен (для обычного клика) if (isRepelling && !mouseDownTime) { isRepelling = false; } }; // --- DOM MANIPULATION UTILS --- /** * Перемещает элемент из его исходного родителя. */ const moveElement = (selector) => { const element = document.querySelector(selector); if (element && element.parentElement) { movedElements[selector] = { element: element, parent: element.parentElement }; element.remove(); return element; } return null; }; /** * Создает DOM-элементы для частиц и добавляет обработчики событий. */ const setupInteractiveParticles = (customContainer) => { particles = []; const oldParticles = customContainer.querySelectorAll('.blood-particle'); oldParticles.forEach(p => p.remove()); const initialWidth = window.innerWidth; const initialHeight = window.innerHeight; // Создание новых частиц for (let i = 0; i < PARTICLE_COUNT; i++) { const particleElement = document.createElement('div'); particleElement.classList.add('blood-particle'); const size = Math.random() * 5 + 2; const colorAlpha = Math.random() * 0.5 + 0.3; const initialX = Math.random() * initialWidth; const initialY = Math.random() * initialHeight; particleElement.style.cssText = ` position: fixed; top: 0; left: 0; width: ${size}px; height: ${size}px; background-color: rgba(255, 0, 0, ${colorAlpha}); border-radius: 50%; pointer-events: none; z-index: 9998; transform: translate(${initialX}px, ${initialY}px); will-change: transform; /* Эффект мини-трейла (шлейфа) */ box-shadow: 0 0 ${size * 1.5}px 0 rgba(255, 0, 0, ${colorAlpha * 0.5}); `; customContainer.appendChild(particleElement); const particle = new Particle(particleElement, initialX, initialY); particles.push(particle); } // --- ОБРАБОТЧИКИ СОБЫТИЙ --- if (!document.body.dataset.particlesListeners) { document.addEventListener('mousemove', (e) => { mouse.x = e.clientX; mouse.y = e.clientY; // Сбрасываем флаг дрейфа на время активности курсора isDrifting = false; // В обычном режиме (без нажатия) частицы притягиваются, // но если они далеко, то плавно дрейфуют/возвращаются к базе. for (const p of particles) { const dx = p.x - mouse.x; const dy = p.y - mouse.y; if (Math.sqrt(dx * dx + dy * dy) < MOUSE_ATTRACTION_RADIUS) { p.isDisturbed = true; p.disturbedTimer = 0; } else if (p.isDisturbed) { p.disturbedTimer++; if (p.disturbedTimer > 60) p.isDisturbed = false; } } }); document.addEventListener('mouseleave', () => { // Когда курсор уходит с экрана, включаем дрейф mouse.x = -1000; mouse.y = -1000; isDrifting = true; for (const p of particles) { p.isDisturbed = false; } }); document.addEventListener('mousedown', (e) => { if (customContainer.style.display !== 'none') { mouseDownTime = Date.now(); isRepelling = true; // Начинаем с режима отталкивания isLongPressActive = false; // Устанавливаем координаты отталкивания mouse.x = e.clientX; mouse.y = e.clientY; } }); document.addEventListener('mouseup', (e) => { if (customContainer.style.display !== 'none' && mouseDownTime) { const pressDuration = Date.now() - mouseDownTime; if (isLongPressActive) { // Эффект "массового разлета" (взрыва) при отпускании после долгого притяжения for (const particle of particles) { const dx = particle.x - e.clientX; const dy = particle.y - e.clientY; const dist = Math.sqrt(dx * dx + dy * dy); // Сильный толчок от центра взрыва const angle = Math.atan2(dy, dx); const forceMagnitude = LONG_PRESS_REPEL_STRENGTH * (1 / (dist / 50 + 1)); // Инверсное затухание particle.vx += Math.cos(angle) * forceMagnitude; particle.vy += Math.sin(angle) * forceMagnitude; particle.isDisturbed = true; particle.disturbedTimer = 0; } } else if (isRepelling) { // Если отпустили быстро, то был просто взрыв от курсора (логика в updateParticles) } // Сброс всех флагов mouseDownTime = 0; isRepelling = false; isLongPressActive = false; // Убираем курсор из активной зоны взаимодействия, чтобы начался дрейф/возврат mouse.x = -1000; mouse.y = -1000; } }); // Проверка долгого нажатия в цикле RAF (для режима "Массовое притяжение") const checkLongPress = () => { if (mouseDownTime > 0 && !isLongPressActive) { if (Date.now() - mouseDownTime >= LONG_PRESS_THRESHOLD) { isLongPressActive = true; isRepelling = false; // Отключаем отталкивание, включаем массовое притяжение // Сбрасываем disturbedTimer у всех частиц, чтобы они начали притягиваться for (const p of particles) { p.isDisturbed = false; } console.log("!!! LONG PRESS ACTIVATED (MASS ATTRACTION) !!!"); } } setTimeout(checkLongPress, 200); // Проверять каждые 200мс }; checkLongPress(); document.body.dataset.particlesListeners = 'true'; } }; // --- ЛОГИКА RAF --- // ... (Функции setupRAF, stopRAFAndResetBackground, moveElement, styleSkinColorHolder, createColorWheelBlock и логика инициализации/наблюдения остались без изменений) ... // Оставляем только измененные функции и основную логику const setupRAF = () => { if (!rafActive || rafHandle) return; let frameCount = 0; const rafLoop = () => { if (rafActive) { updateParticles(); if (frameCount % 60 === 0) { forceBodyBackground(); } frameCount++; rafHandle = requestAnimationFrame(rafLoop); } else { rafHandle = null; } }; rafHandle = requestAnimationFrame(rafLoop); }; const stopRAFAndResetBackground = () => { rafActive = false; if (rafHandle) { cancelAnimationFrame(rafHandle); rafHandle = null; } forceBodyBackground('initial'); }; // --- DOM MANIPULATION UTILS (копируем для полноты) --- const styleSkinColorHolder = (holder) => { if (!holder) return; const containerSize = (CIRCLE_RADIUS * 2) + (ITEM_SIZE * 2); holder.style.cssText = ` position: relative; width: ${containerSize}px; height: ${containerSize}px; margin: 0; border: none; border-radius: 50%; display: block; `; const colors = Array.from(holder.children).filter(el => el.classList.contains('skinColorItem')); const totalColors = colors.length; const angleStep = 360 / totalColors; const centerOffset = containerSize / 2; colors.forEach((item, index) => { const angle = index * angleStep; const radians = angle * (Math.PI / 180); const x = CIRCLE_RADIUS * Math.cos(radians); const y = CIRCLE_RADIUS * Math.sin(radians); item.style.cssText += ` position: absolute; width: ${ITEM_SIZE}px; height: ${ITEM_SIZE}px; cursor: pointer; border-radius: 50%; left: ${centerOffset + x - (ITEM_SIZE / 2)}px; top: ${centerOffset + y - (ITEM_SIZE / 2)}px; transition: border 0.2s, box-shadow 0.2s, transform 0.2s; z-index: 1; `; }); if (!document.getElementById('skinColorStyles')) { const style = document.createElement('style'); style.id = 'skinColorStyles'; style.textContent = ` .skinColorItem { box-shadow: 0 0 5px rgba(255, 0, 0, 0.4); } .skinColorItem.activeSkin { border: 4px solid ${TEXT_COLOR} !important; box-shadow: 0 0 10px ${TEXT_COLOR}, 0 0 20px rgba(255, 0, 0, 0.6); transform: scale(1.2); z-index: 2; } `; document.head.appendChild(style); } }; const createColorWheelBlock = (menuCardHolder) => { const setupCard = menuCardHolder.querySelector('#setupCard'); if (!setupCard) return null; const skinColorHolder = setupCard.querySelector("#skinColorHolder"); if (!skinColorHolder) return null; skinColorHolder.remove(); const colorCircleBlock = document.createElement('div'); colorCircleBlock.id = "colorCircleBlock"; colorCircleBlock.style.cssText = ` width: ${CONTAINER_SIZE}px; height: ${CONTAINER_SIZE}px; display: flex; flex-direction: column; align-items: center; justify-content: center; background-color: ${CARD_COLOR}; border: 2px solid ${TEXT_COLOR}; border-radius: 12px; box-shadow: 0 0 20px ${TEXT_COLOR}; padding: 10px; `; const title = document.createElement('div'); title.textContent = ""; //player color text title.style.color = TEXT_COLOR; title.style.fontSize = '20px'; title.style.marginBottom = '10px'; colorCircleBlock.appendChild(title); colorCircleBlock.appendChild(skinColorHolder); styleSkinColorHolder(skinColorHolder); return colorCircleBlock; }; // --- ЛОГИКА ПЕРЕКЛЮЧЕНИЯ --- const showCustomMenu = (customContainer, fadeOverlay) => { if (customContainer.style.display !== 'flex') { const menuContentWrapper = customContainer.querySelector('#menuContentWrapper'); const rightCardHolderWrapper = customContainer.querySelector('.right-card-holder-wrapper'); const gameName = movedElements['#gameName']?.element; const menuCardHolder = movedElements['#menuCardHolder']?.element; const rightCardHolder = movedElements['#rightCardHolder']?.element; if (gameName && gameName.parentElement !== customContainer) customContainer.prepend(gameName); if (menuCardHolder && menuContentWrapper && menuCardHolder.parentElement !== menuContentWrapper) menuContentWrapper.prepend(menuCardHolder); if (rightCardHolder && rightCardHolderWrapper && rightCardHolder.parentElement !== rightCardHolderWrapper) rightCardHolderWrapper.appendChild(rightCardHolder); rafActive = true; setupRAF(); customContainer.style.display = 'flex'; fadeOverlay.style.display = 'none'; } }; const hideCustomMenu = (customContainer, fadeOverlay) => { if (customContainer.style.display !== 'none') { stopRAFAndResetBackground(); customContainer.style.display = 'none'; fadeOverlay.style.display = 'block'; } }; // --- Основная логика инициализации --- const initializeMenu = () => { personalizeTab(); forceBodyBackground(TARGET_COLOR); const originalMenu = document.getElementById(MENU_ID); const gameUI = document.getElementById(GAME_UI_ID); if (!originalMenu) { console.warn("Оригинальное меню не найдено. Скрипт не может быть инициализирован."); return; } // 1. Создание основного контейнера let customContainer = document.getElementById(CUSTOM_CONTAINER_ID); if (!customContainer) { customContainer = document.createElement("div"); customContainer.id = CUSTOM_CONTAINER_ID; customContainer.style.cssText = ` position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: ${TARGET_COLOR}; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 40px; z-index: 9999; color: #ffffff; font-family: 'Times New Roman', serif; text-align: center; overflow: hidden; `; document.body.appendChild(customContainer); } // 2. Создание оверлея let fadeOverlay = document.getElementById(FADE_OVERLAY_ID); if (!fadeOverlay) { fadeOverlay = document.createElement("div"); fadeOverlay.id = FADE_OVERLAY_ID; fadeOverlay.style.cssText = ` position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.20); pointer-events: none; z-index: 10; display: none; transition: opacity 0.5s ease-out; `; document.body.appendChild(fadeOverlay); } // 3. Скрытие оригинального меню originalMenu.style.visibility = 'hidden'; originalMenu.style.position = 'absolute'; originalMenu.style.left = '-9999px'; // 4. Перемещение и стилизация элементов const gameName = moveElement("#gameName"); const menuCardHolder = moveElement("#menuCardHolder"); const rightCardHolder = moveElement("#rightCardHolder"); if (gameName) { gameName.textContent = "MOOMOO.io (Aibm recode)"; gameName.style.cssText = ` position: absolute; top: 10vh; font-size: 80px; color: ${TEXT_COLOR}; text-shadow: 0 0 15px rgba(255, 0, 0, 0.8); `; customContainer.appendChild(gameName); } // 4.1. Центральный враппер const menuContentWrapper = document.createElement('div'); menuContentWrapper.id = 'menuContentWrapper'; menuContentWrapper.style.cssText = ` display: flex; flex-direction: row; align-items: center; gap: 50px; `; customContainer.appendChild(menuContentWrapper); if (menuCardHolder) { menuCardHolder.style.cssText = 'display: block; position: static; visibility: visible; left: auto;'; const setupCard = menuCardHolder.querySelector('#setupCard'); if (setupCard) { setupCard.style.cssText = ` padding: 30px; background-color: ${CARD_COLOR}; border: 2px solid ${TEXT_COLOR}; border-radius: 12px; box-shadow: 0 0 20px ${TEXT_COLOR}; display: flex; flex-direction: column; gap: 15px; max-width: 300px; `; setupCard.querySelectorAll("#nameInput, #serverBrowser select").forEach(el => { el.style.maxWidth = '250px'; el.style.textAlign = 'center'; el.style.border = `1px solid ${TEXT_COLOR}`; el.style.backgroundColor = '#1a0000'; el.style.color = '#fff'; el.style.width = '100%'; }); // --- Добавляем ссылки Vanilla и Sandbox --- // --- Добавляем ссылки Vanilla и Sandbox --- const linksContainer = document.createElement("div"); linksContainer.style.cssText = ` display: flex; flex-direction: row; gap: 20px; margin: 10px 0; justify-content: center; `; const vanillaLink = document.createElement("a"); vanillaLink.href = "https://moomoo.io/"; vanillaLink.textContent = "Vanilla"; vanillaLink.style.cssText = ` color: ${TITLE_COLOR}; font-size: 18px; text-decoration: none; cursor: pointer; `; vanillaLink.onclick = (e) => { e.preventDefault(); window.location.href = vanillaLink.href; }; const sandboxLink = document.createElement("a"); sandboxLink.href = "https://sandbox.moomoo.io/"; sandboxLink.textContent = "Sandbox"; sandboxLink.style.cssText = ` color: ${TITLE_COLOR}; font-size: 18px; text-decoration: none; cursor: pointer; `; sandboxLink.onclick = (e) => { e.preventDefault(); window.location.href = sandboxLink.href; }; linksContainer.appendChild(vanillaLink); linksContainer.appendChild(sandboxLink); // Вставляем между кнопкой Enter Game и капчей const enterButton = setupCard.querySelector("#enterGameButton"); const altchaContainer = setupCard.querySelector("#altchaContainer"); if (enterButton && altchaContainer) { altchaContainer.parentElement.insertBefore(linksContainer, altchaContainer); } else { setupCard.appendChild(linksContainer); // fallback } } const colorCircleBlock = createColorWheelBlock(menuCardHolder); menuContentWrapper.appendChild(menuCardHolder); if (colorCircleBlock) { menuContentWrapper.appendChild(colorCircleBlock); } } // 4.2. Правая колонка if (rightCardHolder) { rightCardHolder.style.backgroundColor = CARD_COLOR; rightCardHolder.style.border = `1px solid ${TEXT_COLOR}`; rightCardHolder.style.color = "#FFFFFF"; const holder = document.createElement('div'); holder.classList.add('right-card-holder-wrapper'); holder.style.cssText = ` position: absolute; right: 5%; top: 15vh; max-width: 300px; `; holder.appendChild(rightCardHolder); customContainer.appendChild(holder); } // 5. Частицы и RAF setupInteractiveParticles(customContainer); setupRAF(); // 6. Наблюдатель const checkAndToggleMenu = () => { const isGameUIVisible = gameUI && gameUI.style.display !== 'none'; const isOriginalMenuVisible = originalMenu.style.visibility === 'visible' && originalMenu.style.left !== '-9999px'; if (isGameUIVisible) { clearTimeout(deathCheckTimeout); deathCheckTimeout = null; hideCustomMenu(customContainer, fadeOverlay); } else if (isOriginalMenuVisible || (gameUI && !isGameUIVisible)) { if (deathCheckTimeout === null) { deathCheckTimeout = setTimeout(() => { const recheckGameUIVisible = gameUI && gameUI.style.display !== 'none'; if (!recheckGameUIVisible) { showCustomMenu(customContainer, fadeOverlay); } deathCheckTimeout = null; }, 500); } } }; const observerTarget = [originalMenu, gameUI].filter(el => el !== null); const menuAndGameObserver = new MutationObserver(() => { checkAndToggleMenu(); }); observerTarget.forEach(target => { menuAndGameObserver.observe(target, { attributes: true, attributeFilter: ['style'] }); }); document.addEventListener("visibilitychange", function() { if (document.visibilityState === 'visible') { checkAndToggleMenu(); } }); console.log("--- [END] ultimatePureBlackFixV42.3: Инициализация завершена. ---"); }; // Запускаем скрипт, дожидаясь загрузки DOM if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => setTimeout(initializeMenu, 200)); } else { setTimeout(initializeMenu, 200); } })(); //textures (function() { const textureReplacements = [ { test: "access_18.png", replaceWith: "https://i.imgur.com/0rmN7L9.png" }, { test: "access_19.png", replaceWith: "https://i.imgur.com/sULkUZT.png" }, { test: "access_21.png", replaceWith: "data:image/png;base64,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" }, { test: "axe_1_d.png", replaceWith: "https://i.imgur.com/OU5os0h.png" }, { test: "axe_1_r.png", replaceWith: "https://i.imgur.com/kr8H9g7.png" }, { test: "axe_1_g.png", replaceWith: "data:image/png;base64,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" }, { test: "axe_1.png", replaceWith: "data:image/png;base64,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" }, { test: "bat_1_d.png", replaceWith: "https://i.imgur.com/phXTNsa.png" }, { test: "bat_1_g.png", replaceWith: "https://i.imgur.com/ivLPh10.png" }, { test: "bat_1_r.png", replaceWith: "https://i.imgur.com/6ayjbIz.png" }, { test: "bow_1_d.png", replaceWith: "https://i.imgur.com/qu7HHT5.png" }, { test: "bow_1_r.png", replaceWith: "https://i.imgur.com/Oneg3oF.png" }, { test: "bull_1.png", replaceWith: "https://i.imgur.com/3tsGyzZ.png" }, { test: "bull_2.png", replaceWith: "https://i.imgur.com/Qq0ysR4.png" }, { test: "chicken_1.png", replaceWith: "https://i.imgur.com/UtBEmai.png" }, { test: "cow_1.png", replaceWith: "https://i.imgur.com/FycnCNU.png" }, { test: "crossbow_1_d.png", replaceWith: "https://i.imgur.com/TRqDlgX.png" }, { test: "crossbow_1_r.png", replaceWith: "https://i.imgur.com/EVesBtw.png" }, { test: "crossbow_2_d.png", replaceWith: "https://i.imgur.com/DVjCdwI.png" }, { test: "crossbow_2_r.png", replaceWith: "https://i.imgur.com/z4CyaXk.png" }, { test: "dagger_1_d.png", replaceWith: "data:image/png;base64,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" }, { test: "dagger_1_r.png", replaceWith: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAIABJREFUeJzsvXl8VNX9//96n3tnSTIJa9gFFJQlLS5oELUqbpAEArENuNRqf7bY1Za61Pr9/Or020Vqq37qp5vUVqu2tUahEkLwI25FRUAqokERVPZ9yTKZzHLveX//mCRMkpk7905mC9zn4zEPyJ1zzzkzc9/vc877vN/vQ7CxAeD1esW6descHo/H4ff7HU6n06HruqppmkMI4WRmVQhNAE5dShlSVTUshAgyc8jhcAQBhGpqavRsfw4ba1C2O2CTObxer2hoaHAFg8EiKeUwZm0MQGcxa+N0XYwRAsMAHgBQIQA3AAczK0TU5TlhZiYiycxhIvIBOMKMXULQ+wDeVVU0uFy8p6RkerPX69Wy8VltzGErgJOUDmFvbW0dwswTADmNSE5jFhMADGPmPCJS0tE2M+tEdJyIPwTEy4B41eVyNZx99tlNtkLILWwFcJLAzDR//nx3MNg8UtMwHeBrmGk6gJGIjOZZ7R6AJiJsYBbLHA750rBhY3YuWbIknOV+nfLYCqCPc8stt7gPHz5cwqx/iZlnA3wmQK5s9ysBASJsBvA4oNSXlpbutWcG2cFWAH0QZqa5c+cO0bTQDcz8dWY+K13T+QzQCtDLRPwHZvFWfX19c7Y7dCphK4A+hNfrFf/5z9ozNI0XMdNXAHiy3acUIpm5QVHEg/n5hf+qqalpynaHTgVsBdBHqKqqGhII+H8A4Ns4uQQ/BrxVCHFvcfGwlU888UQg2705memr08ZTBmamd95556JwOPg8gCoAzmz3Kf3QYGbM9/laPj9hwsT127ZtO57tHp2s2DOAHKa6ulppbW2+gRm/A1CY5uZYqIJIVaA4VShuB9Q8FYrLCcWlgFQBQIB1CRnWoLWFEW4NQGsNQYY0SE2mq1tbAeX6+vr6d9PUwCmNrQByFK/Xq65bt+47gHwAgCOFVYcdHpfD1b8A7iGFyB9ahBvW7ExJxf+4/HT4dh6Bb28jQs1t4NQphU15eShfuvTF/amq0CaCrQBykOrqasXv931L1/WHe2ndZyXPSflDClF4ejG+8s6+E28w9/jxGUA3p79e89j4/mj+7DBCTW0SgEi2HiK6t66ufjERcQq7d8pjK4Acg5lp9uyyBVLyk0hi5CdVIK+4EAMmDcdN6/d1VAoQRf7taAdxhL2jbBp48vxhOLp5L4LHWhnWn71Nquq8uLa21p+Ovp2q2AogxygrK7sQ0F8EqMjKfe5iD4aUnoEbXt9h/qZ4wp5GJQAAfzqjCI1bD0APWvL9Oaiqzs/V1tYeSVe/TkXUbHfA5gTXXjtzuN8v/0pkXvgLRw/Et49pQBuA7sKfSJA7ZgXdyxBFlggpUgJPnj8MTdsOIXDEFxH6zUn5+oSklHa0YYqxFUCOUFZW5goE+EEiPstMeeFUMLpsCq57+ZOY7zMz4HYCgZChIHOkcI8yvRH9Z64ch2Pv70HrvkbogTDjteYUaBJ+X0ppT/9TjK0AcgQi+UVmLDBT1lHoxh3sBGIIf8fITURAMJxwNKdutoHe8Ifh+WjZcRjyhS47dqmYRoSFEE+sWLEylGoj5amOrQBygLlz554WCgUeggkruVrgigh/DOKJcafQpGFt/4+rJuDQ2m1oO9jI2JaKkb4nRPQ3RXGusncAUk/S2zI2qcHr9arBoP/nAIYmKiucCu6MCvRj5ohQt4/glGgkT+Fo/+QXJuIhVWLnvzag7WAjkB6DcpiIfudy5d25fPnyljTUf8pjuwJnmYIC1xUALUZiZcynV02lku1H2/9qF3qiE6N6+78U9f8exLjeY0vQYKbw1OWT8fLuA2j8YAf0QChBl5MmDOBNIuUbBQWeJc8//7wvXQ2d6tgLqixSWVlZqGnBNcw4O1HZ4vNG49aPGyN/tAs/E534ATtGdhPT/S6b8DHKxdqkf2pGCQ6t2YxwY2uiriaLZMZuIegFIuWfQohN9p5/+rFtAFkkHA5fByQWfteA/E7hZykBIUDoJqQmhLizaLTQd79PSpDoOhn5w+iBaKpd2ytPvlgwsx8QW4RAnaLw8v79h2x98skn/fZaP3PYM4AsUVFRMUBKbROA0QmKyns8RScEz4whr71MPCXAUnYuHRjdFEK3+pdMHI5j72w18YnMwQw/M55TVXpeSvoPgMP19fXBlDWQBubNm9c/FApNYOYhAJrdbveHS5cuPXwyKCrbCJgFmJmk1G5EYuHHoCmjOn8jBk4Y8qLdersZ9jr+iqkmmCMjfCx7QQzl0tSwI1EXLUGEfCFwEZG6s76+fk8uCz8zU0VFxUWhUNuzzPpLgFwK6C+2tfnXlJeXf6+srMySt2YuYhsBs8DmzZuHaFroqUTuvorbge82RUXUtQtoF8MfovbyO4Q61sjeUUW03aDLGxwzPmCN3y+R+pniQCll2aRJ41/6+ONPDqe47pSxYcOGS5n15wBMAeACIABSiTAI4JnMmDZhwoQ3+nK+AnsGkGGYmQIB/00AjUxUdsRlE6LvA2Agid22+KhdoLsgZUQpSHliFtH+4g7F0pO0BPoTYYym4emqqqoh6ai/t1RUVJzBrP8D8bdniYivkDL8cllZ2YXM3CeX032y032ZsrKyYiK5jhmnG5VzFuXhB9J6GoAOr79O77+OHQMYhPoa2BUeVPWEln+1IA8Dzx2P4NEmNG7ZqVsJYSaih0tLL7zbalbg6upqT1tb23BmdimKcuy88847lKrMwvPmzesfDPrrAbrQ5C2NgPjqtGnTlnu93nRlRkkL9hIgw0yYMH4WM76OBMr3tJmfw+c+sz6zjF7TRy8VkhF+APi4dAL8uw9Hdh+6oXryUHzZOfj2nkace6AJFzQHsL1iqgjuPQoZMi2Lk/fvP7B827Zth8wU9nq9an6+65pQKPQQs36vlPJrUurz9+3bO3LSpMkNW7du7ZXDUHV1tbOtrfURgOZYuM0N8LX79+9rPOecczdt2bKlzwQt2TOADBJJ8dXyK2ZeZFROqAJ3u6Pyflpx4e3uD2BUh8l6n7p8Mo5v+hShxhZAMtR++SicPBq3rvs07j2/GZyPth0HzPUZ4p6VK1c+kMiqftNNNxUcPXr4Pmb+HmLnRtwGiAXJpg+L5GIo/46U8jdITjYkQA+pquO+vuLDYCuADFJdXe1sbW36PTPdmqjsmNln4/rXPgNgvKffgzTH8lvh4SIHgvuOmijJz3g8/W6uqamJ61pYWVk5IhwO/QXgmQkqOyqEWrlixYq1VrfpKipmXiUlr+jtwSpEVEOk3FZXV5fzxkHbCJhBSkpKJCB2mCl7cO2JSL/cEGdz/OWKyfhNcT5+GWg1KfwAIFSfzxdnc4KpvLz8/HA4+LoJ4QeAQVJqyysryy62YpibPXv2mVLib6k4VYmZq3VdWzF37tzTeltXurEVQAbxer0aM60GsCdR2cBRX9dFt5kgnliW/wzw+NWfw/+MLMKv9AAOLX8bbZ8dAGvml8FE2DZt2rQe5wR6vV519uyyBczaywDGW+jSIE2TSysqKkrNFK6unjlQ07S/A0jZjgQRLgqFAq+Wl5efk6o600FfGlxOCm655Rb3oUMHFjLLBxKNNoOmjMLXP43KnpNoep/h6f8fS4ajpWEXdF9bMjn+2uE2QLm6vr7+zeirN910U8GRI4fuZeYfJpsYlRkHnE6auXz5qs3xypSVlbmklEuEwFdMVmvVJfoYIL48bdq0F3Nxh8DeBcgwmzZt0mbMuOL95uamYgAXGJUNNfqx++qJJ3YD4qXwMt7HTymPXzkZ/25sxuvHmxDYfQQcsfYn3TARngTEY9u3b++cMlRWVo7w+VqeAPA1IupFJmF4pOQ5Z5551ovbt2/v4XBUXV2thEKB24lwl5n6xowdhYXf/DJ98P5HCAZNR0LmAfzF/fv3HZox44rNGzduzCklYM8AskRFRcUZUmrvwdoxXyxUQcLlwJkDPCgYNRBXvn8g7YL/58smoe3TfWjbcQh6W+o8d5npFSHEjStXrjwQ+ZupsnLWuZqGpwFMSlU7RPiMSK2oq6v78ETbTLNnzyqXEkth4rSlwiIPvi1P6KIn++Vj316zuxwAM+tCiAcUxfGzXNohsBVAlli0aFHeRx9t+V8Al/SmHqEKuIcNxMDzJ+LLq+POdC3zp9LT0bp1D0KHmyFDPZbnvaJdGJ5dsGDu3wcPHr7zscf+uk/XdVXXQ7N0nR8mwoCUNhhhGyDK6uvrPwGAOXNmlmgaXoGJdb+qKvjRj29H+IE/d7m+fOwwbPngY0udIOKniRy358oOga0AMozX6xUbN649R9PwAIDLkcJlmGtQERalYIB+2KMgfKgJMobzTwrQAQTy8twuEqQSEcKhcDAYDOlElG+loo7ch+b7yQ2q6ipXVTUQCPhXATjXzF0337oAw/9ZH/O9tRdMxuuvvm2y/c5+vK4ozhtXrFix1+KNKcdWABkkkgAkdAcz/xCAO03NyH4TR4tv7mlM6uaHPQqCB3JicDLE5XLi1ttuhK7reOyPT0PXTSurTcy8k4jmmil82YwLMX3DFsMy2ysuxdKalRYVJm8FlGvr6+uNK08ztgLIEOXl5WOk1B8nwoxMtKcW5mHwzPNxy6r3TN/z2IXjcOyVTZAyt8PcBxcPxKK7bkPL//0dAODIl+fgL0v+nvJ+nz5uNBYcNKdIj988D39e8ndoYSvhCHxYUcT82tr617OVW8BWABmgrKxsMiBfgLW97F5DqoLBV5+HW9eYS+jx+/HFaN4U+5yBXGHYaA++f9fX0fijruvx/Qtm4qnHn0/ZsqWoXyG+pVsTD3HHV/Hfv14Cf2ub6XuY2S8EfaOgoOjvNTU1GY8hsLcB08ycOXMmSqmtAoyj/9KCZLR9dgBbr/gcztuV2Ctvw4A8BE2OeFmAJ58/iBbsZgRe7unqX9jwCUYtmIWGzb3PXuRwqPjB3d8Ev2UtpIDXbsI0UtBQ6ECgzdw2IRE5AMwJhYLykku+sH7Tpk0piWg0i60A0khlZeUITQvVIcMjfxeY0bbzILZXnI9zPjloWHTTWcPR9pn5ra1MoToEps8aSddsNB5Z+3/4GYZWXYmPtmzvVXt353ssC3805+uEA2OH4djRJrO3CACX+/0tw0tKPv/vjz76KJB04xaJO8dhZqqqquoXDAZLhEAJgGJmtpOImoSIHMyymhmmjvqKghVHHjk9Q+DwDIHqKgSRgK61Iew7imDLfoTbGi3F3AOA4snDXSYOG/5lmw9s3qCWdgqKHPiuzLN0zwdXlWLFv1Yn1d5ZZw/EtZ+kZhD+9zln4a033rF0DxFeUlXXLcuXL9+XuHTviakAvF6veOedtefrOv0Xs7zS6vaMjXVIqCgYOhmVM6aYKh/SdHz26afY/N5/EA6b26fPHzcCtx80TrH/UL5A6FD2lwEOh4ozJg1G1afJ+cy8e9l5eLHuNUv3FI/Ix63NqR3jPpp5MV5YuqpH3sYEfCCEOj/acSldxFQA5eXlZzHrTyOBq6pNasgbeDqqZl2c1L3+QAivvfKS3th43MyMQBZXTBO3vh7/uXr03NE4vuYDw0ocDhUDBw0EEXC88dgxoZJTFXAKRVEBTsp1V1VcyHMXoLCoEOPGj8GFF02F76e/T6aqTt65+GysfnGNqbJ5BSq+l6Zx7uhNlXjisWcQtrZDsB9QqleuXPlWOncIeiiA9qQV/8XM98V63yal8IDiy6js6t5HjT7zbA2kltgLyDGgEHeEjX/Wxb5mDQZnRrhcTixypMuNIbWsvaAEr7+61rCMogrc5bbikZ0Ei27Gbx78E9r8lpb3PiLlltLS0mXpCiTqoa3dbrcb4HLYwp9uePDgspQIPwAsqP4ShJo4lD18vAV/mjbOsIxzUKHhPDgYDCH4zeusdTBLTN/QgEsujR8VrKgC02f1zM/aMWXvMnXvlo7dEg//Fff99E4MGmzJy9nDrP9j/fq3v19dXZ0wXiEZekwbJ0wYXhgM4l4iS0EqNhbp1286lZUlTAxsGiLC50pKsHnze3qiCDq9uRXTDfa4N505DMF9xxK0B4w9aFwmVxi9/wgGzZ6B3bv2dpmGe4qcmHbVCFz8Wldrfee5Ct0jLDtyLCYZdh14bR2maox9pw3F8eOmdwgUANeEw6GBkyZNXrN169aUHsgYQwFMyde08CIiWDO92phGVQegqmpaSuvsyAK8q9Elgs3GBmTNH9S/4HLHVRIXHGnFG6GgYYy/r7UV5+dI6svOMxAQ/9yD4k92Y9ZPF2H4iKE4Y9wYXHLZNFRWX4khf3mra13Rh67GoxdKAABKWgMInDMR+/Yab8tGtwiglFn//KRJJa9s3bo1ZQc09vgEVVVVgwIB/ycA+qWqEZsu8A03fNnUk9OZ2tsi/3xuGfSQ8TNSdN54fOvj+Il4f6UHDUN/FUXA+8B30Xrf45b7lyqYOeZJyIYnI8Wu6ITiMCnYvciA0sl7l1+AVXWvWN0heJdIuW7lypXWwhDjEG8UyG1n8D6MyzXK9HOTbJx/v9GJM2EFdhqPPs6hxmtVXZfYv7PZsEw64XjZj4HOg1MTPcTcsaaPd1qSAakwkJ392gbcfOt8qKoll45zmfXVs2fPmp6Kw0jiKQDDiokITqcLDofDfkW9zAjsF794ueH7FkeDmMwqHQkSxvvZ4Sbj/fW8sYnT4324ZZulfqWSHuvzOBh9n92PWGu/aLoPqRglhz1Tjx/cfRtcbku5SE/Tda4vLy+f6/V6e5XXM6mbiQAhCEII+9X+itjdjB8JIRIbcq2O+swc8yF3eowFmDXdsLML39kBJDgWbNfO7ISzm1WSPY5QT6KORPWnAvHI0/D+7A70H2Bp1d0PkP9ct27ttxYuXGj9CKmOtuNcN/x2IjMne5XQFQYzDF3yVHVg4lrifK/R21LRZeKNhO4BYxI1RX++xNhLWThVwwGi8Xh2PAZTIXi9riPFz3+T97f4RpgxZuwoK7c5ATyyZ8+un1dXVydltE9qCQAkvz49yTGcdzudg5KuuOP7Njv1rbjYeK8fALQW4+Aa4TReRlhIjNm3MCHc6Rr+rj/SjCnnTLZyCzHzXa2tLX+tqqqy/IDZRsAMoiiJXU0zqVgT5voTxivEbM0C091qwvqT3J0xS/n2PbjyGmupIpm5OhDwLy0rK7M0hUh6BmBjHWZr3pxpF7BED3GC5BqKkp1octPCZ3BQitE326X+bp6AnKGzFy54azOu//I8q21dCvDv5s2b19/sDfbJQCkjsotsVELTrB1c23HMd7pINMVPdMKvy9XrU7SSxrQhMI4ARR+dbrpNg/rSwZh/vYKbv3UDVIeVCEUuCwaDM81uESa9BLCNgDExVKjhsNmz8k6Q7AO3wkQaMLXQeEkiQ5qhBmiSGctb0QMiijyksZ7DqP39BJUkVgJRdWTD7jX8r7W405UPYWyPjcZBJK8qLy83FTuQJSMgdRqzsv1K1WonsqVsXJemm/b/7jVtx+If3d0OG+UKfGLWFCCBUTPkzO5KsdMLsEPg21/ccd1UJdRztIsO+ulNAFAKePDzBfg1+SE188tHKWWRatK7KN4PnPJPrKoOqGrS25VpIxwOQdd7nwGmQ6EYzYxYZi7dW8h3xDBrkHCqhhJiJjU4F7mA5hzYCegm7L316mMiUPt6P1u7Xb+Y0h/KR4fAa617WwqhfDp16tRQbW1t4rJxrqfsUwsh4HLl5aTwA4CUqYloYWaIBFZzAKh57sWUtGdE7esNSJQyTB1QaFhHcH/i5QoXZc8GkE46ZhbZEv7F/QGxdjfzsaSWWEeY6QWv12tqtElrjj9FUeFwpCWMOSXE86JLlnYFYHh6bDjU44zKlOPb/37CMgXjRwDv7Y77fviI8chDgkAFufvb9kV+MdIJ8ckxYI8EkhuEA0Twjhp12kazN6TNCJjrwg8AmpbaM+/alwEJpwH//OeylLYbzbJVbyVcapCq4DYD4QcAzWc8+jAANjHjsUnM/RM9WMwBiK1HAAtr/W7sI8LNo0aNWbJkyRLTD3ZajIB9QfgBpGTtHw0Rmdob1/VWLFv2RkrbBoBV6/ebMf7BNdTYJfnPX5gA1hMfs0P7shcNeDLwi3MHYLFLA72zD2hN2pYSJsLjRMpFdXWraqwIP9ALI2C8GUAs4e9uHLO6v93dGBP5GwCM643e5eme6CEi/B3+9T2DR09UEx1dzp27S93/jb7fzOdra9uBZcsIVVXJJQONxbHtLxsuP9qRjvFTBTa+FbdA08ZtQKJBQDLow8NYHPtdjv6XmZmImBRSgY4ovPYwXEGAaP8OBQEE6FKABQEKAQ4F7FKRN8yF73+YvW3HVHN/f4J4cxfQi+PMmPEWkbijoMCzoaamRk/GZpFUQpBINGD3kY7bo+KULtcigtBdIE78/0SQS9f3IkJ04u8OJRD9byyilUVU2Q6tSB0OEtT12+r+PWTM+uN0DsWXvnR1r+qor9+J48fXmBF+OIaMwB3++KnBfz+1FM2vr05FvouUQwqh4PR8fOdA3z3P5v4xbtDHR4Fwr4zP+4jo/wwaVFzz1FNP9So7UFJGQGZA13t+gMgJrenb6oqZqNGgXNT/O7cgci2IKRQ6iGeeeQ7XXfelpO5/7rnVCIUOAGa8OoWCgnMuAN56NW6Rtg+3ADko/ADAOsO3vRW/LlRxJ/etoyp+MakQtOUwqKFXyyYfgEdU1flwbW3tkVT0K94MYDsA0/7ENqlBVfuhqOh8zJo1PGHZpUtfQyCwx9So30HepCn43u4dcd9/9NJr0PjiMnAM5Z5rKPkK7hIF2e5GQn5x3gDQliOgo/6kHYqYWScSy1SVvVOnTv8wlSnC4ymAjwEkDl63SRdSUfKEqvaDEPkgUiBlELreDE1rAbN1AVUHD8GdAeM19CPjJsL/3vpk+5xx1ByfCdw/WAHtauzVOh/AJkDc4fF43qipqUm511WPJQAz6wA3A2QrgOwhdL0Num7+mGnDygoKUTj9cuDVVYblQnt3pKS9TKG1aFhcGMA9nFuHlNx/eh5o6xHQjt7MpHg/oNynqurfamtrkzsfzQQ9po/9+/cPEHFDuhq0ySwiLx+FX7gatyUQ/iUz50FvzlysQspoCeF+NbX+HMnyi5J+uJ+CoPcPAqFkhZ/biOgRQClduXLlY+kUfiCGAnj88ceDzOo/AE58zpRNTiM8/VB0eRm++Ubik3I5FAJS7BeRKaixDYvzstf3X5w/CPfn6xDr94BakhYbCdByVaULSksvXFRfX78nnWcCdhDT2jtv3rz+oVBgsZTya1aPobaJTcSQQ0EAbmQgD4Nj+CgUTrsMC1cnDggBgD9eeg0a658zEwbGAAcAOsKM3US0D8AxAEEAIJKKrpNDCHISsQOA68SL3czkbP/bCcABsAOAykwqETkYcAKMiHdARxlz8Igi/CiDvkm/KB0M+uw4aFcT0Ksj1bmBiO4sKCh6JR3rfCPibvdUVFQMkFK7EeBvADQOkR/NaHuo+6NzYme/3REk6npUjCVFUowymIjkifdItp/X0H4Nkhky8jdLgCQRdGZIZuhE0CPXoQPQANIB1gHSAKkRkSYlaUJA03VoQkSuA0Jn1qUQig5InVnoRLoEFL29Lh2AxpF0PlrHNSGELiU0IRDzXwAakdQAaEJQmFlpBHCASI7Xdf1XAE0w9xNZgxwO5JWch9u3WztZ+tEZs3C8riYpg1XEbkTNQmAXwO8TKesBuUlV3TucTufxkpKSQENDA5eUlFBDQ4Pw+Xzk8XiE2+0WgUCAfD6f8Hg85Pf7RX6+RoGAU6iqKsLhsENK7StSyp+aHoj6ucCDCwBmKADG9lPgUgBIjsgoM6Rk6DqDJUPXAalLHPfraA1GHj1ijnwPjPZw4M4P2vEkRv7VZG9DhY8A4ucA/lJfX58Vt0rD/V5mpvnz5xf5fL6RisLDpWQPsyAAOpEME0EjIo0Imq6LMBFpiqKHw2HSFEUJM7POzLrD4ZAAEAqFWFEUFkKwqgYZAAIBhVVVZUVROBAIMACoqsqRl58BwO9X2eFwsMPhYJ/PF9nYdzjY5XKx2+3mxsZGdrvdDAAFBQV88OBB9ng8PGDAAAaAESNGcPsDyPfdd197uHj6p1fxuP766wc3Nh6tBejCVNVJqgrnaacjr+RcfOM14/V+PB7QQpAJdgosEgBwGMDHANYJQesUhbe4XEUHSkpK/Ga2s7xer7p+/dt3MfPPkaP+CdbhNiLxF2ZaXF9fvyebPTlJvtC+RXX1zIE+H94DYCmBYwxY5OWT87TT4R43Ed9Y81KvKnt40GAEdyaOJeglIWbsJ6INRLwSUN4cMmTIrieeeCKu5lm4cKFjz56dP2PG3enuXDqJOKHJ1Yoi7p069cJ3zYbsprVP2e7AqUhZWdk1gFyFBEsqUlRiPZKWi4SiQggI1QnKK4Rz4FDcfvCzlPbrD5dchebVteAUR0kmIADwJiL6PbN4Id5U+JZbbnEfOrTvt8x0ayY7lyqY8TGRuNPj8byY6XW+EbYCyDBer1esX//WX5npy0blHP2H4A4t88Evv500Bb6Na4EUJUqxABNhtarSd5cvXxUzV1llZWWhprU9wSyuzXTnkoWZjwshHiBSHq2rq0ucZinD2Aogw7QbVz8GMNio3D2eogz1qCe/O7sU/vfWQfdZy2KcCoiw3uFwf+mFF16ImbCgqqpqUFtb27NEfEWm+2aREBH+RqT+bMWKFZ9l0+ZkhJ3RIcMQ6echgZs1qdnNpfDt99aj3zVz4Zl2KdRBxaAM5v9nRmkoFLw93nl3y5YtOyqEuJEZ8eOZswsD8jUi5eKCgqKv19XVfZqrwg8A9h5/hhk/fvx3AVxkVMZZfBqmh1PjBpwsUz/ZitLDB3CRrqNh1rVwDB4K4XREAoV0DZAybSHDzBgZCARrtm7dGtMesG3bNt+UKePrw2EeT0QT0tUPi0gAHwlBtxcU9PvxCy+8sGvLli05K/gd5MIXd8rQbsh6ldlw+4/v8RRptp5RAAAgAElEQVTl9O/y6NWVkC3N0I4fRvjwIehNxyD9reBwyFJ0ogEBIdQr6+rqDEf56upqT2tr83UAvsOMCYjvq9IjGQW3x4m3j85RvinEzCzbr8sOn5TI/9HuZ8ISoHBkOw+HAPEuEVYqivOt5cuXZ37d1AvSmhTUpiutra0uZjE4gbudBgveb9ngtpeW97i2ZM514IBfaM3HoR09DO3YEciWJuiBQDIGRYWZEz6bNTU1Pmb+c1VV1XOhUGisEHIEM9wANCkpLIQMMyshZg4JIcLMHFJVGQqHSROCNIfDIbv7pgQCCjscJ/xSon1Sov1RgsGg7NevnwwEAuFnn302nMvTfCNsBZBB3G635vM1J9pjy2nhj8fC//1Xz4tCwaNz5kNvboJ2aD8Cn26FbDMV29IqhNhvpmC74DUC2NT+yji5lmTGCrYRMIOMGzeujVkmzNn9oCOpo95TyqNXVmDJVXN6Xc9tL9dB7T8Q4WOHzQo/mPHu4MGDjdMW26SEvqu6+ihlZWXzAJkoL7h2j6coK7Oz35acg8AnH0P3NYPAEPkFcI4aC+eosfjGv//Xcn1/mH45Wt56FbLV3NI4EjSlVNXX15uLYrLpFfYSIMO43e41gYD/IIChBsXUhwuLsagl/YeIdMe34c3ONTsDkIE2aMeOwP/Bu/j1gIFwnzEBjlFjY9oBuvM/4yei9eU6SzYAIeifzLCuaWySwt4GzDDXXXddcO/ePSMAGAYCybYWXOLIrDnggXAYrMXxUmWGbPMjtG8XAtu2YN2AgfjPhM9j05TzMfXTj7sU/eNlM/F6+5rfSrQcEd5TVddNdXV1fTAzSd/EXgJkgdmzZ5+t66F1ABkerucePQnfP7Y3U93CYp/1iFRyOKEOKoZr7Hg4ho6EfvwofOv/DRmw5sfQ7itfXl9f/4nlTtgkjb0EyAJ5eXkftrYGVzNThVG5wJ6PgfzcznzL4RDCB/YifGAvSFEBsOWswpGR31lVW1ub2ugmm4TYuwBZoKamJsSs/ooTpfeVOh7Ki3s+S8qhHoe9WIN1zbLwM2MVoMyyhT872DOALDF06NB1Bw/ufxPApUblQod3MzLkGegYPBKhQ7sy0RQASCL6jxC0AeDq8vJZLYBoIZI+QGlRFN0HsJ/IHQyHw2FFUTS32x0uKCgIjh07NpTK3PinMrYNIIuUlZVdAciXkGAmRg4XfugyNBekjAddhQgf3ZsLR4N1uOi2p2LjEEA+AMekxG4h8C4R1gDKpoKCgsM1NTW5f5pJDpLtH/mUZuHChY5du3a+SIQZicqq/Ypxp565RM2/Fg5ozUc15PYskQEcAvAPQPx25cqVOR15l4vYCiDLzJ49s1TX+d+JdgQAwDl0NH7Q2piJbnXym+IxCB7YAdnWkguzAiN2ESnfLi0tXWkvD8xj+wFkmRtuuOng3r17igGUJiqrtzZhw6ARmB7KXKjwhf4mXCwIlzhd9M6wM6AH/IAezkVl0A/ga/bv37N227ZPMmbI6Ovk2o94SnLttTOHBwJ4kxmnmynvLB6NH7RldibQnYf7D0f4yG7IgD+nlIGUqBdCXJetNNt9DXsGkAN8+OEnvvHjz/oY4GqY+E10fxPezi/CRZnP29fJ9IAPFwuBS5wu2jjyTHA4AA4Hw8jyM0XEQx0OWrZ16/aD2exHX8H2A8gRpk2b9hKAn5strzUexgN6bti7vnd4F+4i4B5PkeMeTxEcg0ZCON1AxIKfYSg/HKZhmW+3b5IzUzcbYM6cOfnhcOCPROIm0zcpKu7Jy90jsgHgocJiyNZGyIAfrIUgdU0nIoH0PH+aEOo1dXV1r6ah7pMOWwHkGNXV1f2am5v/IQTKLNzGruHjKBvRg6nkN0POAKQGqWuAroP1EDgUhN7aBGne8NkohDq1rq4u7SecnAzYCiAHqa6eObC1Fc8w42or9yl5HtylnFyrul8xQW81HxzIzC8MGzbiOqOThmxOYCuAHKWqqmpQMOh/ghmzLd4qXcNPF4tajqalX5niobz+CB3eZTHJKLcJ4bgqUTJRmxPYuwA5ykcffdR21lkTV0mpjSCisy3cSrqvEW9KxsYR43Fhhh2HestDhcV4vfEw9Ei/rQxQLITyk/z8gn/2hXTcuYI9A8hx5syZk69poXuZ+R7TR2RHIZxuuMeU4Pb929LRvZTxUF5/hI/uBSe3tclE9D8FBYX31NTUZPdAhT6GrQD6AF6vV92w4e3rpOTfAyhMpg5SHXAOGYtFzbm1Pf4rUqG3HOvNeQIagF+oqvOXtbW15rKO2nRiK4A+AjPT7Nmzz5NSewrApF5UJZX8QuEYMgbfP5Idj9kH8/pBO34gFacQHwHEd0477bSlS5YsyeiRxicLtgLoY8yZM2ewpoV+CeAWpMCRi1QnlIL+cAwYgu+lSSH89+DR0I7th97aBNa1lNTJTK8Q0XdXrlz5oR0BmDy2AuiDtC8JqqSUvwFoeIqrl6SoglQnyOmGcOVDuPIgHC5AcYCE6GJPeGT4mZBaGNBCkCE/ZCAAGWoDhwOQ4ZCejN0iAceEoP8/P7/wyZqaGl+K6z7lsBVAH6a8vHwMoP2Mma5Dbsftp4IQEf1dURz3LV++fLc96qeGk8tr5BRj5cqVO0eNGvv/CaFeQ4T1SHDoYB9FI+LVQqgzSksv/Hptbe0uW/hThz0DOEmorKws1LTgPGb8GMD4bPcnBWjM9G9F4fuLi4e/YXv2pQdbAZxkVFdX9/P5fF8E5B2I7Bb0td+4lVnWqap4cMSIMe/a1v300tceDhuTRByItEuklN8n4suIKJdDBpkZu4Sgx4mUpy644IIddlqvzGArgJOc6upqxefzjSXiSmZeAPAUgLJ//HB7Qk8ifgmgvzGLt+wsPpnHVgCnEGVlZS5VVUdomlZKJGcCmC4ljyaiPKT/WWAAfmb+lIheFkJd7nQ6N6uq2min9M4etgI4RWFm+upXv+o6duzYQObQGVJiiqbxOUJgAoCRzBhIxPnMUC0k75AAdIDbAGoiwn6AP2ZWNioKb9J12g7gcH19febym9sYYisAm06YmX7yk58oGzdudLrdIXdbmyOPiAo1TesPYACRLCSiPGZ2EAkBsA4gyMwtzKKRiI4pitIEwO92uwMDBgwIPvroo5q9bWdjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MZOx+ATSder1esW7fO4fF4HH6/3+F0Oh26rquapjmEEE5mVoXQBODUpZQhVVXDQoggM4ccDkcQQMjO7tO3sBXAKYbX6xUNDQ2uYDBYJKUcxqyNAegsZm2crosxQmAYwAMAKgTgBuBgZoWIujwrzMxEJJk5TEQ+AEfaE3u+D+BdVUWDy8V7SkqmN3u93tScB2aTcmwFcBLTIeytra1DmHkCIKcRyWnMYgKAYcycl4ajuwAAzKwT0XEi/hAQLwPiVZfL1XD22Wc32Qohd7AVwEkEM9P8+fPdwWDzSE3DdICvYabpAEYiMppntXsAmoiwgVksczjkS8OGjdlp5/3PLrYCOAm45ZZb3IcPHy5h1r/EzLMBPhMgV7b7lYAAETYDeBxQ6ktLS/faM4PMYyuAPgoz09y5c4doWugGZv46M5+Vrul8BmgF6GUi/oN9PkBmsRVAH8Pr9Yr//GftGZrGi5jpKwA82e5TCpHM3KAo4sH8/MJ/1dTUNGW7Qyc7tgLoQ1RVVQ0JBPw/APBtnFyCHwPeKoS4t7h42Er7YND00VenjKcUzEzvvPPOReFw8HkAVQCc2e5T+qHBzJjv87V8fsKEieu3bdt2PNs9OhmxZwA5TnV1tdLa2nwDM34HoDDNzbFQBZGqQHGqUNwOqHkqFJcTiksBqQKAAOsSMqxBawsj3BqA1hqCDGmQWrrO8+StgHJ9fX39u2lq4JTFVgA5jNfrVdetW/cdQD4AwJHCqsMOj8vh6l8A95BC5A8twg1rdqak4n9cfjp8O4/At7cRoeY2cOqUwqa8PJQvXfri/lRVaGMrgJylurpa8ft939J1/eFeWvdZyXNS/pBCFJ5ejK+8sy9lfTTLY+P7o/mzwwg1tUkAItl6iOjeurr6xfZRY6nDVgA5CDPT7NllC6TkJ5HEyE+qQF5xIQZMGo6b1scQeI7IDyPyAHRIU+fDQOl7LJ48fxiObt6L4LHWjuatsElVnRfX1tb609G3UxFbAeQgZWVlFwL6iwAVWbnPXezBkNIzcMPrO7q+wVEDZjfhZubIQxB9nTmiHNKoCP50RhEatx6AHrTk+3NQVZ2fq62tPZKufp1qqNnugE1Xrr125nC/X/6VyLzwF44eiG8f04A2AFHC3zmyGwhyzPeIUj4yPHn+MDRtO4TAEV9E6Dcn5esTklLa0YYpxFYAOURZWZkrEOAHifgsM+WFU8Hosim47uVPerzXZX7NnHBaz+2zhGiFkMwcvYNnrhyHY+/vQeu+RuiBMOO15hToFH5fSmlP/1OIrQByCCL5RWYsMFPWUejGHewEYgg/AJAJoe/aNnVdKiRRBwD8YXg+WnYchnyhy45dKiYUYSHEEytWrAylc2lyqmErgBxh7ty5p4VCgYdgwkquFrgiwh+HHut3swLTC8H6TYFA28FGxrZUjPQ9IaK/KYpzlb0DkFqS3pKxSR1er1cNBv0/BzA0UVnhVHBngkC/aAlkTp+8PPmFiXhIlVjsa0bbwcbuTaeKMBH9zuXKu3P58uUtaaj/lMZ2Bc4BCgpcVwC0GIkVMv8wrzCxkEVN3Tun9kmM7hzHGPjU5ZPx8u4DaPxgB/RAyHK9JgkDeJNI+UZBgWfJ888/70tXQ6cy9mIqy1RWVhZqWnANM85OVLb4vNG49ePGhHUmbbyLVhRxlMaDqo5wY2sytZtBMmO3EPQCkfJPIcQme88/vdg2gCwTDoevAxILv2tA/gnh79inR9R6v2OqH2PUjrnXH4voHQDmLnaEP4weiKYtO3rlyRcLZvYDYosQqFMUXt6//5CtTz75pN9e62cGewaQRSoqKgZIqW0CMDpBUXmPp0gYCXIXaYm1pWekBLqP/OhqSFwycTiOvbM18QcyCTP8zHhOVel5Kek/AA7X19cHU9ZAGpg3b17/UCg0gZmHAGh2u90fLl269HBfV1S2ETBLMDNJqd2IxMKPQVNGCaBdIOOM4hSpFGgXdCLqYgDsvLe9TKegd5/qE0XW/lHXmhp2WP58RhAhXwhcRKTurK+v35PLws/MVFFRcVEo1PYss/4SIJcC+ottbf415eXl3ysrK7PkrZlr2EbALLF58+YhmhZ6KpG7r+J24LtN5iLqqENwow2AiBr9gU7h7lhCdM4KYoz8Hazx+yVSP1scKKUsmzRp/Esff/zJ4RTXnTI2bNhwKbP+HIApAFwABEAqEQYBPJMZ0yZMmPBGX81XYM8AsgAzUyDgvwmgkYnKjrhsQsdNZuvuUb5TKUTZB6KvtV+IvB97hpGWQH8ijNE0PF1VVTUkHfX3loqKijOY9X8g/vYsEfEVUoZfLisru5CZ+9ySus91+GSgrKysmEiuY8bpRuWcRXn4gWwPBkxyKy8VmLH8qwV5GHjueASPNqFxy07dSggzET1cWnrh3VazAldXV3va2tqGM7NLUZRj55133qFUZRaeN29e/2DQXw/QhSZvaQTEV6dNm7bc6/WmKzNKyrGXAFlgwoTxs5jxdSRQwKfN/Bw+91n7zNKq8KdQYXxcOgH+3YfBsudzrXryUHzZOfj2nkace6AJFzQH8AWXW7ztEpAh07I4ef/+A8u3bdt2yExhr9er5ue7rgmFQg8x6/dKKb8mpT5/3769IydNmtywdevWXjkMVVdXO9vaWh8BaI6F29wAX7t//77Gc845d9OWLVv6RNCSvQTIMNXV1QozLkGC716oAte98mnyDaVwtnDL29swfOb5yB81BKonD2q+G+7hA1F85Tm4Ew58de3HPe65kx3IGzvMbBP9pJQVZqbQN910U8H69W//ghkvADwTwFAiDABwJjPfFQ4HXysrKzvX0geMgpnJ7/fdBuCrSdzulFL+t8/X8vM5c+bkJ9uHTGIvATJMdXW1s7W16ffMdGuismNmn43rX/sMQM99+bhkcakQi4eLHAjuO2qiJD/j8fS7uaamJq5rYWVl5YhwOPSXdsE34qgQauWKFSvWWt2mq6iYeZWUvKK3B6sQUQ2RcltdXV1OGwftGUCGKSkpkYDYYabswbUnIv1MCz/S6/9vhr9cMRm/Kc7HLwOtJoUfAITq8/lifkhmpvLy8vPD4eDrJoQfAAZJqS2vrCy72Iphbvbs2WdKib+l4lQlZq7WdW3F3LlzT+ttXenEVgAZxuv1asy0GsCeRGUDR309Ft0xRTtqX9/Akp92/mdkEX6lB3Bo+dto++wAWDO/DCbCtmnTpvU4J9Dr9aqzZ5ctYNZeBjDeQncGaZpcWlFRUWqmcHX1zIGapv0dQMp2JIhwUSgUeLW8vPycVNWZanJnrngKccstt7gPHTqwkFk+kGi0GTRlFL7+aZzsORlI3ZWIP5YMR0vDLui+tl7kD+E2QLm6vr7+zeirN910U8GRI4fuZeYfJpsYlRkHnE6auXz5qs3xypSVlbmklEuEwFdMVmvVJfoYIL48bdq0F3Nth8DeBcgCmzZt0mbMuOL95uamYgAXGJUNNfqx++qJJ3YDosniaP+bAS68frwJgd1HwBFrf9IdIcKTgHhs+/btnVOGysrKET5fyxMAvkZEvcgkDI+UPOfMM896cfv27T0cjqqrq5VQKHA7Ee4yU9+YsaOw8Jtfpg/e/wjBoOlIyDyAv7h//75DM2ZcsXnjxo05owTsGUAWqaioOENK7T1YO+aLhSpIuBzIH1qEfmcNw41vpCanvxF/vmwS2j7dh7Ydh6C3pc5zl5leEULcuHLlygORv5kqK2edq2l4GsCkVLVDhM+I1Iq6uroPT7TNNHv2rHIpsRQmTlsqLPLg2/KELnqyXz727T1gug/MrAshHlAUx89yJcrRVgBZZNGiRXkffbTlfwFc0pt6hCrgHjYQtzemNjb/T6Wno3XrHoQON0OGeizPe0W7MDy7YMHcvw8ePHznY4/9dZ+u66quh2bpOj/cvrWXarYBoqy+vv4TAJgzZ2aJpuEVmFj3q6qCH/34doQf+HOX68vHDsOWD3pugxpBxE8TOW7PhR0CWwFkAa/XKzZuXHuOpuEBAJcjhUsx16AiLErBAP2wR0H4UBNkDOefFKADCOTluV0kSCUihEPhYDAY0onI0v55R/yD+X5yg6q6ylVVDQQC/lUATPkM3HzrAgz/Z33M99ZeMBmvv/q2yfY7+/G6ojhvXLFixV6LN6YUWwFkmEgCkNAdzPxDAO40NSP7TRwtvrkncfKQWDzsURA8kPXBKSEulxO33nYjdF3HY398GrpuWlltYuadRDTXTOHLZlyI6Ru2GJbZXnEpltastKgweSugXFtfX29ceRqxFUAGKS8vHyOl/jgRZmSiPbUwD3eytYOFHrtwHI69sglS5naY++DigVh0121o+b+/AwAc+fIc/GXJ31Pe79PHjcaCg+YU6fGb5+HPS/4OLWwlHIEPK4qYX1tb/3o2cgvYCiBDlJWVTQbkC7C2l91rSFUw+OrzcOsacwk9fj++GM2bYqcazxWGjfbg+3d9HY0/6roe379gJp56/PmULVuK+hXiW7o1ERF3fBX//esl8Le2mb6Hmf1C0DcKCor+XlNTk9EYAnsbMAPMmTNnopTaKsA4+i8tSEbbZwew9YrP4bxdib3yNgzIQ9DkiJcFePL5g2jBbkbg5Z4nhRc2fIJRC2ahYXPvsxc5HCp+cPc3wW9ZO5Gc127CNFLQUOhAoM2cUZaIHADmhEJBecklX1i/adOmlEQ0msFWAGmmsrJyhKaF6pDhkb8LzGjbeRCXqAl3urDprOFo+8z81lamUB0C02eNpGs2Go+s/T/8DEOrrsRHW7b3qr278z2WhT+a83XCgbHDcOxok9lbBIDL/f6W4SUln//3Rx99FEi6cQsYzm+YmaqqqvoFg8ESIVACoJiZ7USiJiEiB7OsZoapo76iYMWRR07PEDg8Q6C6CkEkoGttCPuOItiyH+G2Rksx9wCgePJwl4nDhn/Z5gObN6ilnYIiB74r8yzd88FVpVjxr9VJtXfW2QNx7SepGYT/fc5ZeOuNdyzdQ4SXVNV1y/Lly9N+lntcBeD1esU776w9X9fpv5jllVa3Z2ysQ0JFwdDJqJwxxVT5lWt3oHnPfyDD5n1K8seNwO0HjVPsP5QvEDqU/WWAw6HijEmDUfVpcj4z7152Hl6se83SPcUj8nFrc2rHuI9mXowXlq6yGqT1gRDq/GjHpXQQVwGUl5efxaw/jQSuqjapIW/g6aiadXFS965YsxVNu9abnRHI4opp4tbX4z9Xj547GsfXfGBYicOhYuCggSACjjceOyZUcqoCTqEoKsBJue6qigt57gIUFhVi3PgxuPCiqfD99PfJVNXJOxefjdUvrjFVNq9AxfcMxjnT6dVjcPSmSjzx2DMIW9sh2A8o1StXrnwrXTsEMT9JdXW10tra8l/MfF+8MjYpgwcUX0ZlV/c+avSZZ2sgtcReQI4BhbgjbPyzLvY1azA4N8LlcmKRI11uDKll7QUleP3VtYZlFFXgLndsj+x4gm9ZISy6Gb958E9o81ta3vuIlFtKS0uXpSOQKKamdrvdboDLYQt/uuHBg8tSIvwAcN38agg1cSh7+HgL/jRtnGEZ56BCw3lwMBhC8JvXWetglpi+oQGXXBo/KlhRBabPip2ftTNtegwh75Jq3QwP/xX3/fRODBpsycvZw6z/Y/36t79fXV2d2IprkZhTxgkThhcGg7iXyFKQio1F+vWbTmVlCRMDdxIrK1D3a58rKcHmze/piSLo9OZWTDfY49505jAE9x0z7A8RMPagcZlcYfT+Ixg0ewZ279rbZRruKXJixrShKH0zYq3vHl5Ncc5HjKZD/M1EZgZeW4epGmPfaUNx/LjpHQIFwDXhcGjgpEmT12zdujVlQR9xFMCUfE0LLyKCNdOrjWlUdQCqqqaZKtsh5PEesO7XdzW6RLDZ2ICs+YP6F1zuuErigiOteCMUNIzx97W24vw+kfoyQvEnuzHrp4swfMRQnDFuDGZMGIfLjvow7FNf17ToFvMsdCoJC7aBktYAAudMxL69B83eQgBKmfXPT5pU8srWrVtTckBj3AeAyM4WlEa4uHh2SirqfgIQAMy+dCIUZ0Gi+5Tfn2UcBKfkuQyf6JYmHwp+Ejt3ZvT5BNG94/ZrYO7Rb44+tajbfV3q7AXHf/wIRta8iImr3kC/1WvBjTF2RDoOVElPIFQnV235DGWzr7SU04EZs8PhYH15ebnVreWYGAl5bjuD92FcrlE0Y4b5gz4SPSCxlEC/0YkzYQV2Go8+zqHGa1Vdl9i/s2u2og4h7uxz++jYeb39WpfRNrrv3Q8xYY4IYqzvIYYSMQPHUC7dISJApH8MPPu1Dbj51vlQVUsuHecy66tnz541vbeHkRh9QsOKiQhOpwsOh8N+Rb3MaPP+/c1v91mZhkYzq3QkSBjvZ4ebjPfX88YmTo/34ZZtXfsR6Uzs/sUymHU/ragb3P0Eo273IobyS4TRcqpLOUu1Js+wZ+rxg7tvg8ttKRfpabrO9eXl5XO9Xm/Smqo3qZYgBEEIYb/aXxG7m/HDKIQTV15pPkKvN9Nep8dYgFnTDStf+M4OIMGxYLt2RoWzm0hJzuj6mRKNxpRgBtRxEGrHbKDLMqJbu0lh9ki2ZOtvRzzyNLw/uwP9B/Szcls/QP5z3bq131q4cKG1sM+Odg3eM/xMke/YXiV0hcEMw9Q5qjrQUo29yfnnHjAmYfV/vsR4KSmcquEg0Xg8ymPQzKjazareKcCxSKBQOFrQ20f1LmceSnnCQh9dp4XnttNmYVjI5JkNCWjy/hbfCDPGjB1l5TYngEf27Nn18+rqastG+6SXAEB2s9HmMIbzbqdzkKXKeqNkKy423usHAK3FOLhGOI2XER2JMbMxGBgdlw5mQIieD7HFZ5aQQAmk4SCW6480Y8o5k63cQsx8V2try1+rqqosPWC2ETDDKIq1kIp0K9mEuf4SGMI4agTOJAmnp0YzB9ONcOdx6mg/Ur2z/o7lRkc7KVaA5dv34MprrKWKZObqQMC/tKyszPQUolczABvrMOdOlB2AxIKbYCtMUSLW67Q8LEZrfyOBM7FrYoZOJ4j2tjrv6n6UepqOY7vgrc24/svzrNZ9KcC/mzdvXn8zhe29/pQSeVyMSmhacgfXxppiJ5p2v/SecdQfkHiKn+iEX5fL+ilaPfwC4pVL97LCoP4u269G7r5pPotxzL9ewc3fugGqw0qEIpcFg8GZZrYIe7UEsI2AMTFUquGw2bPyuhJr1Eo0kgWbEyecVQuNlyQypBlqgCZ5IrCFzRjYuhnMDC38Vvzso/tglo4txO6vWP3qPtXvvgRII8P/Wos7XfkQxvbYaBxE8qry8vKEsQNGasWUETB5JUA5c4ht5CP0XplFZobG34mmm/b/7jVtxxIeL863rtma6FcwHHp+EDjxUHZ89rgVxhKYjnV2PGHqUALdYyDi+OhbspkkY73v5uCUKX5NfkjN/PJRSlnkcDgTehcZ/bgpH95V1QFVTWq7Mq2EwyHoeu8zwHRsQxkpAJYaVq9uxlVXFfW6vUSEfEcMcwQIp2r4DD96zmnAGw2W2qTuI2U7ndtx8RyBYtzX6Y/fXbFEeQnGVBoGI7OhgspBfukMgY9Zzw4mhPLp1KlTQ7W1tcblDN5L2fckhIDLlZeTwg8AUqYmooWZIUy4jx5vNI5NTwW1rzcgUYIQdUChYR3B/cktVwB0cemNuUefwLuvi5EN6HpvO/HUbFz123F8enQ77X/n4mJ2cWsLJzPHKawAABOWSURBVCP8AI4w0wterzfhqJZ2I6CiqHA63TnrM9DpPZYi2hWA4VwtHDqMV15J7VFb3fHtfz9hmYLxIwzfDx+JcypxOySy+5vGm210zsKir0f9ztGxCV2Cjyw6CaWLxQEfFvuageT8/ANE8J522mkbzRTu1RIgkeAoigqHI+U5DFKKpqVWENtHOpHouzl8eAWAqpS23cGyVW+BpbHyJ1XBbe/tNiyj+YxHn+yLSjtxDKTMDGoX7OjlGUfNLqKt/Zky6sVjMQeA1l6F+u8jwqJRo8YsW7JkiakHO21GwL4g/ABSsvaPhoigKAo0Y+M5dL0Vy5a9gaqqXp0L2oNV6/ebMf7BNXQg0BQ/fdifvzABXL/BMB9AX4FEV0Nlx2jf3Q25Sy6AyIWM9G+xSwOO9uqw4DARngaUn9TV1e2ykj8wLTOAWMLfXVlY3UHoHhYb+RsAjOuN3knqnAK21xMR/vZ1IXc6fUa10fm/jtrQ7u/fxTh9YuCw9vna2nZg2TJCVVVyyUC789KrjTi2/2WJxEs76Rg/VWDjW3ELNG3cBiQSfsmRqWpsOPpfZmYiYlJIBTrW9JEvjgQBov07FAQQoEsBFgQoBDgU3OO3foRFLCHunOYb2SA6ApRS5ONvxGJ/C+BLfi7FjLeIxB0FBZ4NNTU1utX+xixdVVU1KBDwfwIgbmgSESBE9x+F26PilC7XIoLQXSCirL0dxpluAhcRohN/dyiB6H9j0X1a1162Y0pEHQ4S1PXb6v5dZGzkczqH4ktfurpXddTX78Tx42vMCD8cQ0bgDn98J6HfTy1F8+urc3L0J4Xwwzxj46UhJl2XGYi/NZkCFgdbgXCvjM/7iOj/DBpUXPPUU08lnR0oaQVgk1qEcGPQoKtx9dXWv/LnnluNUMjkaT5CwT35xtmCHsz3IHwo7WdS9Aq1UMWdbODEFEd4WcouSwJD0qAA7ucAqHfrfB+AR1TV+XBtbe2R3vYno34ANvGRMoDDh2vx7LP9UFR0PmbNGm5Y/uWXA2hqehuBwB5To34HeRNKgN07DMtoR03nqcsaWouGX+W34i7RU5kZZVHK1pTmfrcOOuo3jmEwgJl1IrFMVdk7der0D1OVItxoBvAxAGvB6zapRCpKnlDVfhAiH0QKpAxC15uhaS1gtj59VAcPwZ0BY8v+I+Mmwv/e+mT7nHESzgS6Y2VUT9EMYLG/BejdseWbAHGHx+N5o6amJmUZgYE4MwBm1gFuBshWANlD6HobdN38MdOGlRUUJhR+AAjt3ZGS9jKF1qJhcWEA93C3Q0riLQEy6MK7ONQKhHqzzuf9gHKfqqp/q62t7dU2QTxiKoD+/fsHDh1qbWCmselo1CaziLx83G1yJNObMxerkDJaQri/v4IfaYk9TQ1diKOJ3g60yP0UBLUkPqHJoPE2IvEnZvGrlStX7k3XsWBAnLXj448/HmRW/wFwbz6FTQ4gPP1wt2IhlDTFfhGZghrbsDgvqu8GAs4mlaHVLbX783Usbm3pjfBLgJarKl1QWnrhovr6+j3pFH7AQMHNmzevfygUWCyl/JrVY6htYhMx5FAQgBsZcMN2DB+FO1qM3Xm7s7i12Yz5lwEOAHSEGbuJaB+AYwCCAEAkFV0nhxDkJGIHANeJF7uZydn+txOAA2AHAJWZVCJyMOAEGBHvgI4y5rjH0y3IyiBgiAmIuSBIYu2/uM0H9OpIdW4gojsLCopeSfU63wjDT1lRUTFASu1GgL8B0DhEfjSje7o/OlFZlCKOIFHXoxyviSMlwEQkT7xHst1zs/0aJDNk5G+WAEki6MyQzNCJoEeuQwegAaQDrAOkAVIjIk1K0oSApuvQhIhcB4TOrEshFB2QOrPQiXQJKHp7XToAjSPpfLSOa0IIXUpoQiDmvwA0IqkB0ISgMLPSCOAAkRyv6/qvAJqQ+CeyDjkcyCs5D7dvt36ydLIGq4jdiJqFwC6A3ydS1gNyk6q6dzidzuMlJSWBhoYGLikpoYaGBuHz+cjj8Qi32y0CgQD5fD7h8XjI7/eL/HyNAgGnUFVVhMNhh5TaV6SUPzU9EPVz4R79RKKSzghAZrAQnfv73SMD69w6tuqMICIuxJDc/qRylFsTdzyJkX812dv4gSOA+DmAv9TX11vT1ikgoZpjZpo/f36Rz+cbqSg8XEr2MAsCoBPJMBE0ItKIoOm6CBORpih6OBwmTVGUMDPrzKw7HA4JAKFQiBVFYSEEq2qQASAQUFhVVVYUhQOBAAOAqqocefkZAPx+lR0OBzscDvb5Iq5TDoeDXS4Xu91ubmxsZLfbzQBQUFDABw8eZI/HwwMGDGAAGDFiBLc/gHzfffe1B4Sld3plxPXXXz+4sfFoLUAXpqpOUlU4Tzsdiw4nv433gBaCNGEstEAAwGEAHwNYJwStUxTe4nIVHSgpKfGb2c7yer3q+vVv38XMP0cOOiclB7cRib8w0+L6+vo92erFSfJl9j2qq2cO9PnwHgBLOaBjwCIvn5ynnY7v7zMO7jHDw4MGI7gzcSxBLwkxYz8RbSDilYDy5pAhQ3Y98cQTcTXPwoULHXv27PwZM+5Od+fSScSuIFcrirh36tQL3zUTspvW/mSz8VOZsv/X3r0HR1XdcQD//s69u9nsJpIgiCBIlBRBKiCYCKJWwYKxJBraTBmLM9iOWBWdjrUzTmdqccZpazt2phV5zXRq61ir6ZQhcROsWPEB8igCUl7hFQMBkkAgZB937+P8+sfGio9ks8nu3Q05nxlmYOfcu79h9549z98pK5sLyPVI0KUiTSd24juLSGg6hIDQvaDcfHiHjoBn2Gg8sveDlMb2vBEFp3iXZAIGwLuIaAWzWNddU3jx4sW+1taTy5npR24GlyrMaCAST+Xl5b3lZj+/J6oCyIBly5aJbds2/4WZFvVUzlNwBfJvnAMm0bUNifDwtpq0x7d84mSEdnwEpChRShKYCBt0nR6vqVl/8OsKVFRU5Nt29GVmscDt4PqKmc8JIX5LpK0OBoPnMh3PxVQFkAFdg6sNAIb1VC7vm7djaeMul6L6opemlCKyeyucUN+yGPcHEbZ5PL7vrVu37mv7NJWVlZdHo9E3iHi227ElySTCq0T6c2+++eaxTI45dUelBc8AImcaEiyzJt0L74irXYroqx7bvQ0/AyHv5tuhXz4cpLk3E8yMUtOMPdHdeXdr1649K4T4ATO638+cWQzIjUTarEDgsoeCweDRbHz4AUDN72dAcXHx4wBu6amMd/gYLD2WmV//i5W2ncYtjoNbPV7sLrkNwusBO058wZCUadsyzIyrDCNWffDgwa8dDzh06FBo8uTiesviYiK6Ll1xJEkCOCAEPREIDHlm3bp1Tfv27cvKB/8z2fCfNqh0DWS9y9zj9B9fVlJGj+7f5FpcfbFyxh2wz7XBamuF09EOGQmDLTOp3Yk9MITQ5wSDwR5/5auqqvLC4QsLASxlxnXofq3KV5JRcFdCia5f54vWphAzs+x6XX62JiX+d3StM2EJkBWfzkMrIHYSoU7TvJtramrc7zf1UTLHjSgpEA6Hc5jFsATL7WwtrzA7Uyhf5JEtG7/4Qo4PyPGJl6aWwD7bBrv9DGRnBxzD6MuAosbMCb+f1dXVIWb+U2Vl5T9M0ywSQo5ihg+ALSVZQkiLWTOZ2RRCWMxs6ro0LYtsIcj2eDzyy2tTDENjj+fzdSkXr0m5eD1KLBaTQ4YMkYZhWG+88YaVrc38nqgKwGU+n88OhS4kmmPzOB39zvWQMY/t2v75P4QG+ANYUXIr7NZTMI4ehIz2amNbWAhxqjcFux688wB2df1xXbZmvU5EDQK6bNy4cVFmmTBnd/TYbjfCcc2j2z+E1d7W24cfzNg5bNiw/q9sUno0MKutAa6srOw+QK5NUMwumLVA//HuDa7EdLHlk6bCONIAJ3QBBIbwB+AdXYQnjjb06X4rZ96Bzs3vQoZ71zWOb5rSKuvr63s+1kbpN9UFyACfz/eBYURaAIzooZgePep+K+CPY7+ByPZN/++zMwBpRGG3n8FvhAa9cCh8116Hpfs/6dX9XiyegPA7waTGAISg15nxr77EryRHdQEyYMqUKecAvJaonNn6KVZPv8eFiOJW3jAbxuF93T+s0oF9tg2h7R/iN9EIXsjLx/Ibpnd7vxdy/Qjv2pbUw0+E3bqe82R9fb3KReECtQ4gAzZu3MgTJkw8zew8CFD3rTCWADuYEXVnVmmLLw/m6V5uBGIJGeqEeaIRm5ixtaAQH4+fhNLW01gxbSbePX4MzoXzSb0/MxoAcW8wGFR9f5eoFkCG5Obm7ifihB1840QDVt04z42Q+rz2ny0T1ulmhLa8h+ejEXRu2gBpJJfLkAi7PR7v3fX19Uf6FITSJ6oCyJDq6mqTWf8dJ0rvKx1EDmxxJSYtrwD0lcNeksOOHV8pmMw1jPWAdndtbe2xfr25kjQ1C5BBixcv9rW0nHoLwO0JinLe5Dtp6dFeHfjaL7/3F8BsbUr7+3SRRPQxEdUDaGPmTkB0EskQoHVqmhMCOELki1mWZWmaZvt8PisQCMSKiorMVOXGH8xUBZBhZWVlswH5NhK0xsiTg4Jb7sXDO9anNZ5V0+5GeO8mWGebs+FosM+W6HalYmMToBCAdilxXAjsJMIHgLYrEAi0VVdXu75/eaDL9Ac86C1ZssTT1PTpW0S4M1FZfchwPOW4Mzi+vGgqjKa9sC+ctZHd08UMoBXAa4BYXldXl7U777KRqgCywPz580odh98HKCdRWe+Iq/FkOLnR9f5YNWUOYicPI3a6ETLamQ2tgp40EWmPlZaW1qnuQe+oacAscP/9D7Q0N58YDqA0UVkn3IHtl4/CTDM1JwYlclPLMcyIdGCWIOyZPpdIaHCMCOBY2VgZDAF47qlTJz46dOiIawMZA1m2fYCD1oIF80YaBjYx45relPcOvxpPRt1rCXzZiutvQ+zkYVhnjkMakayqDKREvRBiYSbSbA80qgWQJfbvPxIqLh7fAHAVevG5OJEObPFfhj3T7sZNJw+5EOEXlbQ1YaYRwiwhsGf6PBIeD9gywFbMQoa/V0Q8wuOhtQcPHs7+Y44zTFUAWWTRokWNzc0nACQeEAQAaURgtnyKPVNn46aWxrTG1pOS1sZ4N4GA/95crml5BYCUgGOBHVvC9dYBaVKKmsOHD6tFRQlkTbNNiSsvL/dblrGKSDzQ64s0HXkTb8lYAtGerJw8B/a5FljnWyDD5yGNCNg2IR3bISKB9HwHbSH0ucFg8N003PuSoiqALFRVVTXkwoULrwmBsiQu45yR4yhw/Uws2Zr+1OH9sebmCrBtQZoG2IxCmjGwY4JtC2zHT2uTjg04Tvx1MwYn3AHZ+4HP80Lo04PBYNpPOBnoVAWQpaqq5g0Nh/F3Znw7meu03DwEJs3Cowc+Sldorlox8VaE922CE+79seXMvO7KK0ct7OmkISVOVQBZrLKy8vJYLPIyM+YneanMGXmN8I8vSfvKwXRZNeUuRBr+A7OtKckkoxwVwnNXomSiSpwaBMxiBw4ciI4fP2G9lPYoIpqSxKXkhM4j1nwIO0YV45NJt2F6c9+y+bht1ZQ5eD8SQvjAVjjxBU/J/EixENqzfn/g9WxPx50tVAtgACgvL/fbtvlzZn6610dkX0R4ffCNnQTf6PFYsj2YjhD7beWk2xA9ugfW2WZw37YlMxG9GAjkP11dXe3OKqlLgKoABohly5bp27dvWSglrwCQ35d7kO6B94oi5IyZgEf3vpfiCJO3puQ7iLU0wjh+EE5ne3/OE7AB/ErXvc/X1tb2LuuoAkBVAAMKM9P8+fOnSWm/AmBiP24lNX++8FwxFjkjrsEjLlYGq0srYLefhNF8CPa506k4hfgMIJaOGTPmn2vWrHH1SONLgaoABqDy8vJhtm0+D2AxUpDUhXQvtEABPIVXQC8cAeEvgObLTcl04upp82CHzsFqPw27/RSccAfYsft9XwBgpn8T0eN1dXX71Q7AvlEVwADV1SWolFL+AaCRKb69JE0XpHtBXh9Ejh8iJxfCkwNoHpAQgNBABLDkeH5A2wJsE9KMQBoGpBkFWwakZTp9GbdIoF0I+oXfn//X6urqUIrvPaioCmCAu+eee8YC9nPMtBDZvW8/FUwi+pumeX5ZU1NzXP3q95/KCTjA1dXVfTp6dNEPhdDnEmEbEhw6OEDZRLxBCP3O0tIZD9XW1japhz81VAvgElJRUZFv27H7mPEMgOJMx5MCNjO9r2n86+HDR36oVvalnqoALkFVVVVDQqHQdwH5U8RnCwba5xxmlkFdFy+MGjV2pxrdT5+B9sVQkhBfQGTfKqX8CRF/i4j8mY6pB8yMJiHoz0TaKyUlJY0qrVf6qQpgEKiqqtJCoVAREVcw8/cBngxQbqbjQldCTyJ+G6BXmcVmlcXHXaoCGGTKyspydF0fZdt2KZGcB2CmlHw1EeUi/d8HBhBh5qNE9I4Qeo3X6/1E1/XzKqV3ZqgKYBBjZnrwwQdz2tvbhzKb10qJybbNU4XAdQCuYsZQIvYzQ08ieYcE4AAcBaiDCKcAbmDWdmga73IcOgygTR3+mR1UBaB8ATPTs88+q+3YscPr85m+aNSTS0T5tm0XACgkkvlElMvMHiIhAHYAxJi5k1mcJ6J2TdM6AER8Pp9RWFgYW716ta2m7RRFURRFURRFUTLuf/Ooy+q2jXNLAAAAAElFTkSuQmCC" }, { test: "dagger_1_g.png", replaceWith: "data:image/png;base64,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" }, { test: "dagger_1.png", replaceWith: "data:image/png;base64,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" }, { test: "enemy.png", replaceWith: "https://i.imgur.com/Ib6nqTa.png" }, { test: "grab_1_d.png", replaceWith: "https://i.imgur.com/7kbtWfk.png" }, { test: "grab_1_g.png", replaceWith: "https://i.imgur.com/DRzBdFX.png" }, { test: "grab_1_r.png", replaceWith: "https://i.imgur.com/wV42LEE.png" }, { test: "great_axe_1_d.png", replaceWith: "https://i.imgur.com/aAJyHBB.png" }, { test: "great_axe_1_r.png", replaceWith: "data:image/png;base64,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" }, { test: "great_axe_1_g.png", replaceWith: "data:image/png;base64,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" }, { test: "great_axe_1.png", replaceWith: "data:image/png;base64,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" }, { test: "great_hammer_1_d.png", replaceWith: "https://i.imgur.com/Fg93gj3.png" }, { test: "great_hammer_1_r.png", replaceWith: "https://i.imgur.com/tmUzurk.png" }, { test: "great_hammer_1_g.png", replaceWith: "data:image/png;base64,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" }, { test: "great_hammer_1.png", replaceWith: "data:image/png;base64,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" }, { test: "hammer_1_d.png", replaceWith: "https://i.imgur.com/WPWU8zC.png" }, { test: "hammer_1_r.png", replaceWith: "https://i.imgur.com/oRXUfW8.png" }, { test: "hammer_1_g.png", replaceWith: "data:image/png;base64,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" }, { test: "hammer_1.png", replaceWith: "data:image/png;base64,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" }, { test: "hat_11.png", replaceWith: "https://i.imgur.com/yfqME8H.png" }, { test: "hat_11_p.png", replaceWith: "https://i.imgur.com/yfqME8H.png" }, { test: "hat_11_top.png", replaceWith: "https://i.imgur.com/s7Cxc9y.png" }, { test: "hat_12.png", replaceWith: "https://i.imgur.com/qFghS5s.png" }, { test: "hat_13.png", replaceWith: "https://i.imgur.com/EwkbsHN.png" }, { test: "hat_14.png", replaceWith: "https://i.imgur.com/V8JrIwv.png" }, { test: "hat_14_p.png", replaceWith: "https://i.imgur.com/V8JrIwv.png" }, { test: "hat_14_top.png", replaceWith: "https://i.imgur.com/s7Cxc9y.png" }, { test: "hat_15.png", replaceWith: "https://i.imgur.com/YRQ8Ybq.png" }, { test: "hat_16.png", replaceWith: "https://i.imgur.com/uYgDtcZ.png" }, { test: "hat_18.png", replaceWith: "https://i.imgur.com/in5H6vw.png" }, { test: "hat_20.png", replaceWith: "https://i.imgur.com/JbUPrtp.png" }, { test: "hat_26.png", replaceWith: "https://i.imgur.com/2PsUgEL.png" }, { test: "hat_27.png", replaceWith: "data:image/png;base64,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" }, { test: "hat_31.png", replaceWith: "https://i.imgur.com/JPMqgSc.png" }, { test: "hat_40.png", replaceWith: "https://i.imgur.com/pe3Yx3F.png" }, { test: "hat_52.png", replaceWith: "https://i.imgur.com/hmJrVQz.png" }, { test: "hat_6.png", replaceWith: "data:image/png;base64,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" }, { test: "hat_7.png", replaceWith: "https://i.imgur.com/vAOzlyY.png" }, { test: "hat_9.png", replaceWith: "https://i.imgur.com/gJY7sM6.png" }, { test: "musket_1_d.png", replaceWith: "https://i.imgur.com/jwH99zm.png" }, { test: "musket_1_r.png", replaceWith: "https://i.imgur.com/jPE54IT.png" }, { test: "pig_1.png", replaceWith: "https://i.imgur.com/QHtrTlY.png" }, { test: "samurai_1_d.png", replaceWith: "https://i.imgur.com/4ZxIJQM.png" }, { test: "samurai_1_g.png", replaceWith: "https://i.imgur.com/QKBc2ou.png" }, { test: "samurai_1_r.png", replaceWith: "data:image/png;base64,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" }, { test: "samurai_1.png", replaceWith: "data:image/png;base64,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" }, { test: "shield_1_d.png", replaceWith: "https://i.imgur.com/hSqLP3t.png" }, { test: "shield_1_r.png", replaceWith: "https://i.imgur.com/SNFV2dc.png" }, { test: "spear_1_d.png", replaceWith: "https://i.imgur.com/HSWcyku.png" }, { test: "spear_1_g.png", replaceWith: "https://i.imgur.com/jKDdyvc.png" }, { test: "spear_1.png", replaceWith: "data:image/png;base64,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" }, { test: "spear_1_r.png", replaceWith: "data:image/png;base64,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" }, { test: "stick_1_d.png", replaceWith: "https://i.imgur.com/H5wGqQR.png" }, { test: "stick_1_g.png", replaceWith: "https://i.imgur.com/NOaBBRd.png" }, { test: "stick_1_r.png", replaceWith: "https://i.imgur.com/uTDGDDy.png" }, { test: "sword_1_d.png", replaceWith: "https://i.imgur.com/h5jqSRp.png" }, { test: "sword_1_g.png", replaceWith: "https://i.imgur.com/wOTr8TG.png" }, { test: "sword_1_r.png", replaceWith: "https://i.imgur.com/V9dzAbF.png" }, { test: "sword_1.png", replaceWith: "data:image/png;base64,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" }, { test: "wolf_1.png", replaceWith: "https://i.imgur.com/zLAZWOH.png" }, { test: "wolf_2.png", replaceWith: "https://i.imgur.com/hKlpCVS.png" } ]; const orig = Object.getOwnPropertyDescriptor(Image.prototype, "src"); Object.defineProperty(Image.prototype, "src", { set(l) { for (const { test, replaceWith } of textureReplacements) { if (l.includes(test)) { l = replaceWith; break; } } orig.set.call(this, l); }, get: orig.get, configurable: true }); })(); // === Discord Auth Overlay (Final EMOJI + Animation + Anti-Tamper Version) === //(function(){ // if (window.__AIBM_DISCORD_AUTH) return; // window.__AIBM_DISCORD_AUTH = true; // // const AUTH_PAGE = "https://discord-auth-yjuh.onrender.com/discord/login"; // const AUTH_ORIGIN = (new URL(AUTH_PAGE)).origin; // // // --- ФАЙЛЫ --- // const MUSIC_URL = "https://github.com/WeowMur001/myzik/raw/refs/heads/main/%D0%BF%D0%B0%D1%80%D0%B0%D0%B7%D0%B8%D1%82%20+digitaluv%20(prod.tewiq%20+%20rayx).mp3"; // const VIDEO_URL = "https://github.com/WeowMur001/myzik/raw/refs/heads/main/tt_%231.mp4"; // НОВОЕ ВИДЕО // // const SESSION_KEY = "__aibm_auth_ok"; // const SESSION_TTL = 1 * 24 * 60 * 60 * 1000; // 1 ДЕНЬ (1 * 24 часа * 60 минут * 60 секунд * 1000 мс) // let authDone = false; // let audioEl = null; // let videoEl = null; // let started = false; // // // --- ЭМОДЗИ (Замена лирики) --- // // Тайминги оставлены приблизительными, чтобы смайлики менялись ритмично. // const EMOJI = [ // [0.0, "^-^"], // [3.0, "૮₍ ´• ˕ •` ₎ა"], // [7.0, "(•́ᴗ•̀✿)"], // [11.0, "૮꒰ ˶• ༝ •˶꒱ა"], // [15.0, "૮₍ ´• ˕ •` ₎ა"], // [19.0, "(•́ᴗ•̀✿)"], // [23.0, "૮꒰ ˶• ༝ •˶꒱ა"], // [28.0, "^-^"], // [32.0, "ฅ^•ﻌ•^ฅ"], // [36.0, "♡´・ᴗ・`♡"], // [40.0, ""], // [44.0, "૮₍ ´• ˕ •` ₎ა"], // [48.0, "(•́ᴗ•̀✿)"], // [52.0, "ฅ^•ﻌ•^ฅ"], // [56.0, "♡´・ᴗ・`♡"], // [60.0, "૮꒰ ˶• ༝ •˶꒱ა"], // [64.0, "(•́ᴗ•̀✿)"], // [68.0, "૮₍ ´• ˕ •` ₎ა"], // [72.0, "^-^"], // [76.0, "૮꒰ ˶• ༝ •˶꒱ა"], // [80.0, "(•́ᴗ•̀✿)"], // [84.0, "ฅ^•ﻌ•^ฅ"], // [88.0, "♡´・ᴗ・`♡"], // [92.0, "૮₍ ´• ˕ •` ₎ა"], // [97.0, ""], // ]; // // // Check saved session // try { // const saved = JSON.parse(localStorage.getItem(SESSION_KEY) || "null"); // if (saved && saved.ok && Date.now() - saved.ts < SESSION_TTL) { // console.log("[AibmAuth] already authorized (session active)"); // return; // } // } catch(e){} // // let lyricInterval = null; // // function startVideoMusicAndLyrics() { // if (started) return; // started = true; // // const ov = document.getElementById("aibm-discord-overlay"); // // // 1. Создаем и запускаем ВИДЕО // videoEl = document.createElement("video"); // videoEl.id = "aibm-video-bg"; // videoEl.src = VIDEO_URL; // videoEl.autoplay = true; // videoEl.loop = true; // videoEl.muted = true; // videoEl.playsInline = true; // // const mask = document.createElement("div"); // mask.className = "overlay-mask"; // // ov.insertBefore(videoEl, ov.firstChild); // ov.insertBefore(mask, ov.firstChild); // // // // 2. Создаем и запускаем МУЗЫКУ // audioEl = document.createElement("audio"); // audioEl.id = "aibm-bg-music"; // audioEl.src = MUSIC_URL; // audioEl.loop = true; // audioEl.volume = 0.5; // audioEl.play().catch(e => console.error("Audio failed to play after user click:", e)); // // // // 3. Запускаем СИНХРОНИЗАЦИЮ ЭМОДЗИ // let emojiIndex = 0; // const emojiContainer = document.getElementById("aibm-emoji-container"); // // function updateEmoji() { // const currentTime = audioEl ? audioEl.currentTime : 0; // // while (emojiIndex < EMOJI.length - 1 && EMOJI[emojiIndex + 1][0] <= currentTime) { // emojiIndex++; // } // // const newEmoji = EMOJI[emojiIndex][1]; // // if (emojiContainer.textContent !== newEmoji) { // // Триггер анимации: сначала скрыть (для fade-out), потом поменять текст, потом показать (для fade-in/scale) // emojiContainer.style.opacity = '0'; // emojiContainer.style.transform = 'translateY(-10px) scale(0.9)'; // // setTimeout(() => { // emojiContainer.textContent = newEmoji; // if (newEmoji) { // // Активация CSS transition // emojiContainer.style.opacity = '1'; // emojiContainer.style.transform = 'translateY(0) scale(1)'; // } // }, 150); // } // } // // lyricInterval = setInterval(updateEmoji, 100); // } // // function stopMusicAndLyrics() { // if (audioEl) { // audioEl.pause(); // audioEl.remove(); // audioEl = null; // } // if (videoEl) { // videoEl.pause(); // videoEl.remove(); // videoEl = null; // const mask = document.querySelector(".overlay-mask"); // if(mask) mask.remove(); // } // if (lyricInterval) { // clearInterval(lyricInterval); // lyricInterval = null; // } // } // // // --- UI --- // function createOverlay() { // const ov = document.createElement("div"); // ov.id = "aibm-discord-overlay"; // ov.style.cssText = ` // position:fixed;inset:0; // background:#0f0f12; // display:flex;align-items:center;justify-content:center; // z-index:2147483647; // font-family:'Segoe UI',sans-serif;color:#fff; // animation:fadeIn 0.6s ease; // overflow: hidden; // padding: 20px; // `; // // ov.innerHTML = ` // // //
      // //
      //
      Discord Authorization
      //
      Click "Login" to continue
      // //
      //
      // `; // return ov; // } // // function finalize(overlay) { // stopMusicAndLyrics(); // authDone = true; // localStorage.setItem(SESSION_KEY, JSON.stringify({ ok:true, ts: Date.now() })); // const msg = overlay.querySelector("#aibm-discord-msg"); // msg.style.color = "#8ef08e"; // msg.textContent = "Access granted"; // overlay.style.animation = "fadeOut 0.6s ease forwards"; // setTimeout(() => overlay.remove(), 700); // } // // document.addEventListener("DOMContentLoaded", () => { // const ov = createOverlay(); // document.body.appendChild(ov); // // // Button click → Start Media + Popup // ov.querySelector("#aibm-discord-login").onclick = (e) => { // if (!started) { // e.currentTarget.closest('#aibm-discord-overlay').style.background = 'none'; // startVideoMusicAndLyrics(); // } // // const w = 520, h = 600; // const left = (screen.width/2)-(w/2); // const top = (screen.height/2)-(h/2); // window.open(AUTH_PAGE, "discord_auth", `width=${w},height=${h},left=${left},top=${top}`); // // ov.querySelector("#aibm-discord-msg").textContent = "Waiting for authorization..."; // }; // // // --- ОБРАБОТЧИК РЕЗУЛЬТАТА --- // window.addEventListener("message", (e) => { // if (e.data?.type !== "discord-auth") return; // if (e.origin !== AUTH_ORIGIN) return; // const result = e.data.result; // // if (result.allowed) { // finalize(ov); // } else { // ov.querySelector("#aibm-discord-msg").textContent = "Access denied"; // stopMusicAndLyrics(); // setTimeout(() => window.location.href="about:blank", 1200); // } // }); // // // --- УСИЛЕННАЯ ПРОВЕРКА ЭЛЕМЕНТОВ --- // setInterval(() => { // if (authDone) return; // // const overlay = document.getElementById("aibm-discord-overlay"); // const authBox = document.querySelector(".auth-box"); // const emojiContainer = document.getElementById("aibm-emoji-container"); // Проверяем новый контейнер // let isVideoMissing = started && !document.getElementById("aibm-video-bg"); // // if (!overlay || !authBox || !emojiContainer || isVideoMissing) { // console.warn("[AibmAuth] Critical element removed/tampered → blocking"); // window.location.href = "about:blank"; // } // }, 500); // }); //})(); }) + `)();`)();