MES — غش لـ Meeland، مجاني.
// ==UserScript==
// @name Meeland Enhancement Suite
// @name:am Meeland Enhancement Suite
// @name:ar Meeland Enhancement Suite
// @name:az Meeland Enhancement Suite
// @name:bg Meeland Enhancement Suite
// @name:bn Meeland Enhancement Suite
// @name:cs Meeland Enhancement Suite
// @name:da Meeland Enhancement Suite
// @name:de Meeland Enhancement Suite
// @name:el Meeland Enhancement Suite
// @name:es Meeland Enhancement Suite
// @name:et Meeland Enhancement Suite
// @name:fa Meeland Enhancement Suite
// @name:fi Meeland Enhancement Suite
// @name:fr Meeland Enhancement Suite
// @name:gu Meeland Enhancement Suite
// @name:ha Meeland Enhancement Suite
// @name:hi Meeland Enhancement Suite
// @name:hr Meeland Enhancement Suite
// @name:hu Meeland Enhancement Suite
// @name:id Meeland Enhancement Suite
// @name:ig Meeland Enhancement Suite
// @name:it Meeland Enhancement Suite
// @name:ja Meeland Enhancement Suite
// @name:ka Meeland Enhancement Suite
// @name:kk Meeland Enhancement Suite
// @name:km Meeland Enhancement Suite
// @name:kn Meeland Enhancement Suite
// @name:ko Meeland Enhancement Suite
// @name:lt Meeland Enhancement Suite
// @name:lv Meeland Enhancement Suite
// @name:ml Meeland Enhancement Suite
// @name:mr Meeland Enhancement Suite
// @name:ms Meeland Enhancement Suite
// @name:my Meeland Enhancement Suite
// @name:ne Meeland Enhancement Suite
// @name:nl Meeland Enhancement Suite
// @name:nn Meeland Enhancement Suite
// @name:pa Meeland Enhancement Suite
// @name:pl Meeland Enhancement Suite
// @name:pt Meeland Enhancement Suite
// @name:ro Meeland Enhancement Suite
// @name:si Meeland Enhancement Suite
// @name:sk Meeland Enhancement Suite
// @name:sr Meeland Enhancement Suite
// @name:sv Meeland Enhancement Suite
// @name:sw Meeland Enhancement Suite
// @name:ta Meeland Enhancement Suite
// @name:te Meeland Enhancement Suite
// @name:th Meeland Enhancement Suite
// @name:tl Meeland Enhancement Suite
// @name:tr Meeland Enhancement Suite
// @name:uk Meeland Enhancement Suite
// @name:ur Meeland Enhancement Suite
// @name:uz Meeland Enhancement Suite
// @name:vi Meeland Enhancement Suite
// @name:yo Meeland Enhancement Suite
// @name:zh-CN Meeland Enhancement Suite
// @name:zh-TW Meeland Enhancement Suite
// @name:zu Meeland Enhancement Suite
// @namespace meeland-script
// @version 16.4.1
// @description MES gives you wallhack, auto-farming, rare pet collection, speed boost, flight, invisibility, and more in Meeland
// @description:am MES — ለ Meeland ቺቶች፣ ነፃ።
// @description:ar MES — غش لـ Meeland، مجاني.
// @description:az MES — Meeland üçün fırıldaqlar, pulsuz.
// @description:bg MES — чийтове за Meeland, безплатно.
// @description:bn MES — Meeland এর জন্য চিট, বিনামূল্যে।
// @description:cs MES — cheaty pro Meeland, zdarma.
// @description:da MES — snyd til Meeland, gratis.
// @description:de MES — Cheats für Meeland, kostenlos.
// @description:el MES — cheats για το Meeland, δωρεάν.
// @description:es MES — trucos para Meeland, gratis.
// @description:et MES — cheats Meelandile, tasuta.
// @description:fa MES — تقلب برای Meeland، رایگان.
// @description:fi MES — huijauksia Meelandiin, ilmainen.
// @description:fr MES — triche pour Meeland, gratuit.
// @description:gu MES — Meeland માટે ચીટ્સ, મફત.
// @description:ha MES — ha'inci don Meeland, kyauta.
// @description:hi MES — Meeland के लिए चीट, मुफ्त।
// @description:hr MES — varalice za Meeland, besplatno.
// @description:hu MES — csalások a Meelandhez, ingyenes.
// @description:id MES — cheat untuk Meeland, gratis.
// @description:ig MES — aghụghọ maka Meeland, n'efu.
// @description:it MES — cheats per Meeland, gratis.
// @description:ja MES — Meeland用チート、無料。
// @description:ka MES — ჩითები Meeland-სთვის, უფასო.
// @description:kk MES — Meeland үшін читтер, тегін.
// @description:km MES — cheat សម្រាប់ Meeland ឥតគិតថ្លៃ។
// @description:kn MES — Meeland ಗೆ ಚೀಟ್ಗಳು, ಉಚಿತ.
// @description:ko MES — Meeland용 치트, 무료.
// @description:lt MES — cheat'ai Meeland, nemokamai.
// @description:lv MES — krāpšanās Meeland, bezmaksas.
// @description:ml MES — Meeland-നുള്ള ചീറ്റുകൾ, സൗജന്യം.
// @description:mr MES — Meeland साठी चीट, विनामूल्य.
// @description:ms MES — tipu untuk Meeland, percuma.
// @description:my MES — Meeland အတွက် cheat၊ အခမဲ့။
// @description:ne MES — Meeland का लागि चिट, नि:शुल्क।
// @description:nl MES — cheats voor Meeland, gratis.
// @description:nn MES — juks til Meeland, gratis.
// @description:pa MES — Meeland ਲਈ ਚੀਟਾਂ, ਮੁਫ਼ਤ।
// @description:pl MES — cheaty do Meeland, za darmo.
// @description:pt MES — cheats para Meeland, grátis.
// @description:ro MES — cheat-uri pentru Meeland, gratuit.
// @description:si MES — Meeland සඳහා වංචා, නොමිලේ.
// @description:sk MES — cheaty pre Meeland, zadarmo.
// @description:sr MES — варалице за Meeland, бесплатно.
// @description:sv MES — fusk för Meeland, gratis.
// @description:sw MES — danganya kwa Meeland, bure.
// @description:ta MES — Meeland-க்கான ஏமாற்றுகள், இலவசம்.
// @description:te MES — Meeland కోసం చీట్లు, ఉచితం.
// @description:th MES — โกงสำหรับ Meeland ฟรี
// @description:tl MES — mga cheat para sa Meeland, libre.
// @description:tr MES — Meeland için hileler, ücretsiz.
// @description:uk MES — чити для Meeland, безкоштовно.
// @description:ur MES — Meeland کے لیے چیٹس، مفت۔
// @description:uz MES — Meeland uchun chiytlar, bepul.
// @description:vi MES — hack cho Meeland, miễn phí.
// @description:yo MES — àwọn ẹ̀tàn fún Meeland, ọ̀fẹ́.
// @description:zh-CN MES — Meeland作弊工具,免费。
// @description:zh-TW MES — Meeland作弊工具,免費。
// @description:zu MES — ama-cheats e-Meeland, mahhala.
// @match *://*/*
// @run-at document-start
// @license MIT
// @resource catFallback https://cdn.pixabay.com/photo/2017/02/20/18/03/cat-2083492_1280.jpg
// @resource catBanner https://cdn2.thecatapi.com/images/b4q.jpg
// @grant GM_getResourceURL
// @grant GM_xmlhttpRequest
// @connect api.thecatapi.com
// @connect cdn2.thecatapi.com
// @connect opengameart.org
// @connect eu.meeland.io
// @connect api.meeland.io
// ==/UserScript==
(async function () {
'use strict';
{ const h = location.hostname; if (!h.includes('meeland') && !h.includes('crazygames')) return; }
const W = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;
const _perfExtRe = /^(chrome|moz|safari)-extension:\/\//;
const _perfOurRe = /thecatapi\.com|cdn\.pixabay\.com/;
const _hidePerfEntry = x => !_perfExtRe.test(x.name) && !_perfOurRe.test(x.name);
const _filterHiddenOwnKeysSpoof = (obj, keys) => {
const hk = _hiddenOwnKeys.get(obj);
return hk ? keys.filter(k => !hk.has(k)) : keys;
};
const _clog = () => {};
const _cwarn = () => {};
const _pgHidden = () => {
try { return typeof document !== 'undefined' && document.visibilityState === 'hidden'; } catch (e) { return false; }
};
const _featOf = (k, d) => {
try { const v = _feats && _feats[k]; return v === undefined ? d : v; } catch (e) { return d; }
};
const _bgFps = () => { const f = _featOf('bgKeepAliveFps', 60) | 0; return f > 0 ? f : 60; };
const _pgErrOk = (e) => (e instanceof Error) && !!e.stack && e.stack.includes('__game-scripts');
const _pgWorker = (src, onmsg) => {
try {
const url = (W.URL || URL).createObjectURL(new (W.Blob || Blob)([src], { type: 'text/javascript' }));
const wk = new (W.Worker || Worker)(url);
wk.onmessage = onmsg;
return wk;
} catch (e) { return null; }
};
const _pgMirror = (...names) => {
try { const g = (typeof globalThis !== 'undefined') ? globalThis : W; for (const n of names) g[n] = W[n]; } catch (e) {}
};
const _spoofMap = new WeakMap();
const _origFpToString = Function.prototype.toString;
Function.prototype.toString = { toString() {
const s = _spoofMap.get(this);
if (s !== undefined) return s;
return _origFpToString.call(this);
} }.toString;
_spoofMap.set(Function.prototype.toString, _origFpToString.call(_origFpToString));
{
const _patchedWins = new WeakSet();
const _patchWin = win => {
if (_patchedWins.has(win)) return;
_patchedWins.add(win);
try {
const iTS = win.Function.prototype.toString;
win.Function.prototype.toString = { toString() {
const s = _spoofMap.get(this);
if (s !== undefined) return s;
return iTS.call(this);
} }.toString;
_spoofMap.set(win.Function.prototype.toString, iTS.call(iTS));
const iGOPS = win.Object.getOwnPropertySymbols;
win.Object.getOwnPropertySymbols = { getOwnPropertySymbols(o) {
return iGOPS.call(this, o).filter(s => !_OUR_SYMS.has(s));
} }.getOwnPropertySymbols;
_spoofMap.set(win.Object.getOwnPropertySymbols, iTS.call(iGOPS));
const iROK = win.Reflect.ownKeys;
win.Reflect.ownKeys = { ownKeys(o) {
return iROK.call(this, o).filter(k => {
if (typeof k === 'symbol') return !_OUR_SYMS.has(k);
return !_isHiddenOwn(o, k);
});
} }.ownKeys;
_spoofMap.set(win.Reflect.ownKeys, iTS.call(iROK));
const iGOPDs = win.Object.getOwnPropertyDescriptors;
win.Object.getOwnPropertyDescriptors = { getOwnPropertyDescriptors(o) {
const d = iGOPDs.call(this, o);
for (const s of _OUR_SYMS) delete d[s];
const hk = _hiddenOwnKeys.get(o);
if (hk) for (const k of hk) delete d[k];
return d;
} }.getOwnPropertyDescriptors;
_spoofMap.set(win.Object.getOwnPropertyDescriptors, iTS.call(iGOPDs));
const iOPD = win.Object.getOwnPropertyDescriptor;
win.Object.getOwnPropertyDescriptor = { getOwnPropertyDescriptor(o, p) {
if (_OUR_SYMS.has(p)) return undefined;
if (_opdHiddenSet.has(o) && p === 'enabled') return undefined;
if (_isHiddenOwn(o, p)) return undefined;
return iOPD.call(this, o, p);
} }.getOwnPropertyDescriptor;
_spoofMap.set(win.Object.getOwnPropertyDescriptor, iTS.call(iOPD));
const iGOPN = win.Object.getOwnPropertyNames;
win.Object.getOwnPropertyNames = { getOwnPropertyNames(o) {
return _filterHiddenOwnKeysSpoof(o, iGOPN.call(this, o));
} }.getOwnPropertyNames;
_spoofMap.set(win.Object.getOwnPropertyNames, iTS.call(iGOPN));
const iKeys = win.Object.keys;
win.Object.keys = { keys(o) {
return _filterHiddenOwnKeysSpoof(o, iKeys.call(this, o));
} }.keys;
_spoofMap.set(win.Object.keys, iTS.call(iKeys));
const iHOP = win.Object.prototype.hasOwnProperty;
win.Object.defineProperty(win.Object.prototype, 'hasOwnProperty', { value: function(key) {
if ((typeof key === 'symbol' && _OUR_SYMS.has(key)) || _isHiddenOwn(this, key)) return false;
return iHOP.call(this, key);
}, writable: true, configurable: true, enumerable: false });
_spoofMap.set(win.Object.prototype.hasOwnProperty, iTS.call(iHOP));
if (typeof win.Object.hasOwn === 'function') {
const iHO = win.Object.hasOwn;
win.Object.hasOwn = { hasOwn(o, key) {
if ((typeof key === 'symbol' && _OUR_SYMS.has(key)) || _isHiddenOwn(o, key)) return false;
return iHO.call(this, o, key);
} }.hasOwn;
_spoofMap.set(win.Object.hasOwn, iTS.call(iHO));
}
const iIFP = win.HTMLIFrameElement.prototype;
const iCW = iOPD.call(win.Object, iIFP, 'contentWindow').get;
const iCWG = { get() { const w = iCW.call(this); if (w) _patchWin(w); return w; } }.get;
win.Object.defineProperty(iIFP, 'contentWindow', { get: iCWG, configurable: true, enumerable: true });
_spoofMap.set(iCWG, iTS.call(iCW));
const iCD = iOPD.call(win.Object, iIFP, 'contentDocument').get;
const iCDG = { get() { const d = iCD.call(this); if (d?.defaultView) _patchWin(d.defaultView); return d; } }.get;
win.Object.defineProperty(iIFP, 'contentDocument', { get: iCDG, configurable: true, enumerable: true });
_spoofMap.set(iCDG, iTS.call(iCD));
} catch {}
};
const _origCW = Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype, 'contentWindow').get;
const _cwGetter = { ['get contentWindow']() {
const w = _origCW.call(this);
if (w) _patchWin(w);
return w;
} }['get contentWindow'];
Object.defineProperty(HTMLIFrameElement.prototype, 'contentWindow', {
get: _cwGetter, configurable: true, enumerable: true
});
_spoofMap.set(_cwGetter, _origFpToString.call(_origCW));
const _origCD = Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype, 'contentDocument').get;
const _cdGetter = { ['get contentDocument']() {
const d = _origCD.call(this);
if (d?.defaultView) _patchWin(d.defaultView);
return d;
} }['get contentDocument'];
Object.defineProperty(HTMLIFrameElement.prototype, 'contentDocument', {
get: _cdGetter, configurable: true, enumerable: true
});
_spoofMap.set(_cdGetter, _origFpToString.call(_origCD));
const _origOpen = W.open;
const _openStr = _origFpToString.call(_origOpen);
W.open = { open() {
const w = _origOpen.apply(this, arguments);
if (w) _patchWin(w);
return w;
} }.open;
_spoofMap.set(W.open, _openStr);
}
let _sh = null;
let _sr = null;
{
const _OrigMO = MutationObserver;
const _filterMut = m => {
if (!_sh || m.type !== 'childList') return m;
const hasOur = [...m.addedNodes].includes(_sh) || [...m.removedNodes].includes(_sh);
if (!hasOur) return m;
if (m.addedNodes.length + m.removedNodes.length === 1) return null;
return m;
};
const _moStr = _origFpToString.call(_OrigMO);
W.MutationObserver = function(cb) {
if (!new.target) throw new TypeError("Failed to construct 'MutationObserver': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
return new _OrigMO((mutations, obs) => {
const filtered = mutations.map(_filterMut).filter(Boolean);
if (filtered.length) cb(filtered, obs);
});
};
W.MutationObserver.prototype = _OrigMO.prototype;
Object.defineProperty(W.MutationObserver, 'prototype', { writable: false });
_OrigMO.prototype.constructor = W.MutationObserver;
Object.defineProperty(W.MutationObserver, 'name', { value: 'MutationObserver', configurable: true });
_spoofMap.set(W.MutationObserver, _moStr);
}
{
const _filterEntries = e => e.filter(_hidePerfEntry);
const _PP = Performance.prototype;
const _origGE = _PP.getEntries;
const _origGEBT = _PP.getEntriesByType;
const _origGEBN = _PP.getEntriesByName;
_PP.getEntries = { getEntries() { return _filterEntries(_origGE.call(this)); } }.getEntries;
_PP.getEntriesByType = { getEntriesByType(t) { return _filterEntries(_origGEBT.call(this, t)); } }.getEntriesByType;
_PP.getEntriesByName = { getEntriesByName(n) {
if (_perfExtRe.test(n) || _perfOurRe.test(n)) return [];
const t = arguments[1];
return t !== undefined ? _origGEBN.call(this, n, t) : _origGEBN.call(this, n);
} }.getEntriesByName;
_spoofMap.set(_PP.getEntries, _origFpToString.call(_origGE));
_spoofMap.set(_PP.getEntriesByType, _origFpToString.call(_origGEBT));
_spoofMap.set(_PP.getEntriesByName, _origFpToString.call(_origGEBN));
}
{
const _extRe2 = /^(chrome|moz|safari)-extension:\/\//;
const _stripStack = s => {
if (typeof s !== 'string') return s;
return s.split('\n').filter(l => !_extRe2.test(l) && !/userscript|tampermonkey|violentmonkey|greasemonkey/i.test(l)).join('\n');
};
const _origStackDesc = Object.getOwnPropertyDescriptor(Error.prototype, 'stack');
if (_origStackDesc?.get) {
const _origStackGet = _origStackDesc.get;
const _stackGetter = { ['get stack']() { return _stripStack(_origStackGet.call(this)); } }['get stack'];
Object.defineProperty(Error.prototype, 'stack', { get: _stackGetter, set: _origStackDesc.set, configurable: true, enumerable: false });
_spoofMap.set(_stackGetter, _origFpToString.call(_origStackGet));
} else if (_origStackDesc?.writable) {
const _OrigError = Error;
const _errorStr = _origFpToString.call(_OrigError);
W.Error = function Error(...a) {
const e = new.target ? Reflect.construct(_OrigError, a, new.target) : new _OrigError(...a);
if (e.stack) e.stack = _stripStack(e.stack);
return e;
};
W.Error.prototype = _OrigError.prototype;
Object.defineProperty(W.Error, 'prototype', { writable: false });
_OrigError.prototype.constructor = W.Error;
Object.defineProperty(W.Error, 'name', { value: 'Error', configurable: true });
Object.defineProperty(W.Error, 'length', { value: 1, configurable: true });
for (const k of Object.getOwnPropertyNames(_OrigError)) {
if (k !== 'prototype' && k !== 'name' && k !== 'length') {
try { W.Error[k] = _OrigError[k]; } catch {}
}
}
_spoofMap.set(W.Error, _errorStr);
}
}
{
const _origPO = PerformanceObserver;
const _poStr = _origFpToString.call(_origPO);
W.PerformanceObserver = function(cb) {
if (!new.target) throw new TypeError("Failed to construct 'PerformanceObserver': Please use the 'new' operator");
return new _origPO((list, obs) => {
const raw = list.getEntries();
const filtered = raw.filter(_hidePerfEntry);
if (!filtered.length) return;
const fakeList = Object.create(typeof PerformanceObserverEntryList !== 'undefined' ? PerformanceObserverEntryList.prototype : Object.prototype);
fakeList.getEntries = () => filtered; fakeList.getEntriesByType = t => filtered.filter(e => e.entryType === t); fakeList.getEntriesByName = n => filtered.filter(e => e.name === n);
cb(fakeList, obs);
});
};
W.PerformanceObserver.prototype = _origPO.prototype;
Object.defineProperty(W.PerformanceObserver, 'prototype', { writable: false });
_origPO.prototype.constructor = W.PerformanceObserver;
Object.defineProperty(W.PerformanceObserver, 'name', { value: 'PerformanceObserver', configurable: true });
if (_origPO.supportedEntryTypes) {
const _origSET = Object.getOwnPropertyDescriptor(_origPO, 'supportedEntryTypes');
const _setGetObj = { get supportedEntryTypes() { return _origPO.supportedEntryTypes; } };
const _setGet = Object.getOwnPropertyDescriptor(_setGetObj, 'supportedEntryTypes').get;
Object.defineProperty(W.PerformanceObserver, 'supportedEntryTypes', { get: _setGet, configurable: true, enumerable: true });
if (_origSET?.get) _spoofMap.set(_setGet, _origFpToString.call(_origSET.get));
}
_spoofMap.set(W.PerformanceObserver, _poStr);
}
{
const _origRAF = W.requestAnimationFrame;
const _origCAF = W.cancelAnimationFrame;
const _rafStr = _origFpToString.call(_origRAF);
const _cafStr = _origFpToString.call(_origCAF);
const _rafCbs = new Map();
let _rafNext = 1;
let _rafToken = null;
let _rafWorker = null;
let _bgAudioCtx = null;
let _bgAudioStart = false;
const _bgAudioEnsure = () => {
if (_bgAudioStart && _bgAudioCtx && _bgAudioCtx.state === 'running') return;
try {
const AC = W.AudioContext || W.webkitAudioContext;
if (!AC) return;
if (!_bgAudioCtx) {
_bgAudioCtx = new AC();
const osc = _bgAudioCtx.createOscillator();
const g = _bgAudioCtx.createGain();
g.gain.value = 0.0001;
osc.connect(g); g.connect(_bgAudioCtx.destination);
osc.start();
}
if (_bgAudioCtx.resume) _bgAudioCtx.resume();
_bgAudioStart = true;
} catch (e) { _bgAudioStart = false; }
};
const _rafInterval = () => Math.max(8, Math.round(1000 / _bgFps()));
const _rafDrive = (ts) => {
if (_rafCbs.size === 0) return;
const list = Array.from(_rafCbs.values());
_rafCbs.clear();
for (let i = 0; i < list.length; i++) {
try { list[i].apply(W, [ts]); } catch (e) {
if (!_pgErrOk(e)) throw e;
}
}
if (_rafCbs.size > 0) _rafSchedule();
};
const _rafEnsureWorker = () => {
if (_rafWorker) return true;
const src = 'setInterval(function(){postMessage(0)},' + _rafInterval() + ');';
const wk = _pgWorker(src, () => {
if (!_pgHidden()) return;
if (_rafToken === null) return;
_rafToken = null;
_rafDrive((W.performance || performance).now());
});
if (!wk) return false;
_rafWorker = wk;
return true;
};
const _rafSchedule = () => {
if (_rafToken !== null) return;
const tok = {};
_rafToken = tok;
if (_featOf('bgKeepAlive', true) && _pgHidden()) {
if (!_rafEnsureWorker()) {
setTimeout(() => {
if (_rafToken !== tok) return;
_rafToken = null;
_rafDrive((W.performance || performance).now());
}, _rafInterval());
}
} else {
_origRAF.call(W, (ts) => {
if (_rafToken !== tok) return;
_rafToken = null;
_rafDrive(ts);
});
}
};
W.requestAnimationFrame = { requestAnimationFrame(fn) {
const id = _rafNext++;
_rafCbs.set(id, fn);
_rafSchedule();
return id;
} }.requestAnimationFrame;
_spoofMap.set(W.requestAnimationFrame, _rafStr);
W.cancelAnimationFrame = { cancelAnimationFrame(id) {
_rafCbs.delete(id);
} }.cancelAnimationFrame;
_spoofMap.set(W.cancelAnimationFrame, _cafStr);
_pgMirror('requestAnimationFrame', 'cancelAnimationFrame');
document.addEventListener('visibilitychange', () => {
if (_pgHidden()) {
if (_featOf('bgKeepAlive', true)) {
_bgAudioEnsure();
_rafToken = null;
if (_rafCbs.size > 0) _rafSchedule();
}
} else {
if (_rafWorker) { try { _rafWorker.terminate(); } catch (e) {} _rafWorker = null; }
if (_rafToken !== null) {
_rafToken = null;
if (_rafCbs.size > 0) _rafSchedule();
}
}
});
}
{
const _origST = W.setTimeout;
const _origSI = W.setInterval;
const _origCT = W.clearTimeout;
const _origCI = W.clearInterval;
const _stStr = _origFpToString.call(_origST);
const _siStr = _origFpToString.call(_origSI);
const _ctStr = _origFpToString.call(_origCT);
const _ciStr = _origFpToString.call(_origCI);
const _tm = new Map();
let _tmNext = 1;
let _tmWorker = null;
const _tmEnsureWorker = () => {
if (_tmWorker) return true;
const src = 'var m=Object.create(null);onmessage=(e)=>{var d=e.data;if(d.c==="timeout"){if(m[d.i])clearTimeout(m[d.i]);m[d.i]=setTimeout(()=>{delete m[d.i];postMessage(d.i)},d.d);}else if(d.c==="interval"){if(m[d.i])clearInterval(m[d.i]);m[d.i]=setInterval(()=>{postMessage(d.i)},d.d);}else if(d.c==="clear"){if(m[d.i]){clearTimeout(m[d.i]);clearInterval(m[d.i]);delete m[d.i];}}};';
const wk = _pgWorker(src, (e) => {
const id = e?.data;
if (id === undefined || id === null) return;
const t = _tm.get(id);
if (!t) return;
if (t.kind === 'timeout') _tm.delete(id);
try { t.fn.apply(W, t.args || []); } catch (e2) {
if (!_pgErrOk(e2)) throw e2;
}
});
if (!wk) return false;
_tmWorker = wk;
return true;
};
const _tmFire = (id, t) => {
if (t.kind === 'timeout') _tm.delete(id);
try { t.fn.apply(W, t.args || []); } catch (e) {
if (!_pgErrOk(e)) throw e;
}
};
const _tmSchedule = (id, t) => {
if (_featOf('bgKeepAlive', true) && _pgHidden() && _tmEnsureWorker()) {
_tmWorker.postMessage({ c: t.kind === 'interval' ? 'interval' : 'timeout', i: id, d: t.delay });
t.worker = true;
return;
}
const cb = () => _tmFire(id, t);
t.native = (t.kind === 'interval' ? _origSI(cb, t.delay) : _origST(cb, t.delay));
t.worker = false;
};
const _tmMake = (fn, delay, args, kind) => {
const id = _tmNext++;
_tm.set(id, { fn, args: (args && args.length) ? args : null, delay: Math.max(0, delay | 0), kind, native: null, worker: false });
_tmSchedule(id, _tm.get(id));
return id;
};
const _tmClear = (id, kind) => {
const t = _tm.get(id);
if (!t) return;
if (t.worker) { if (_tmWorker) _tmWorker.postMessage({ c: 'clear', i: id }); }
else if (t.native !== null) { if (kind === 'interval') _origCI(t.native); else _origCT(t.native); }
_tm.delete(id);
};
const _tmMigrate = () => {
if (!_tmEnsureWorker()) return;
for (const [id, t] of _tm) {
if (t.worker) continue;
if (t.native !== null) { if (t.kind === 'interval') _origCI(t.native); else _origCT(t.native); t.native = null; }
_tmWorker.postMessage({ c: t.kind === 'interval' ? 'interval' : 'timeout', i: id, d: t.delay });
t.worker = true;
}
};
W.setTimeout = { setTimeout(fn, delay, ...args) {
return _tmMake(fn, delay, args, 'timeout');
} }.setTimeout;
_spoofMap.set(W.setTimeout, _stStr);
W.setInterval = { setInterval(fn, delay, ...args) {
return _tmMake(fn, delay, args, 'interval');
} }.setInterval;
_spoofMap.set(W.setInterval, _siStr);
W.clearTimeout = { clearTimeout(id) {
_tmClear(id, 'timeout');
} }.clearTimeout;
_spoofMap.set(W.clearTimeout, _ctStr);
W.clearInterval = { clearInterval(id) {
_tmClear(id, 'interval');
} }.clearInterval;
_spoofMap.set(W.clearInterval, _ciStr);
_pgMirror('setTimeout', 'setInterval', 'clearTimeout', 'clearInterval');
document.addEventListener('visibilitychange', () => {
if (_pgHidden() && _featOf('bgKeepAlive', true)) _tmMigrate();
});
let _engHooked = false;
let _engSeen = 0;
let _engLast = 0;
const _engHook = () => {
if (_engHooked) return;
const proto = W.pc?.Application?.prototype;
if (!proto || typeof proto.update !== 'function') return;
const orig = proto.update;
const wrapped = { update(dt) { _engSeen++; return orig.apply(this, arguments); } }.update;
try {
_hookProp(proto, 'update', wrapped);
_engHooked = true;
} catch (e) {}
};
const _engTick = () => {
_engHook();
if (!_engHooked || !_pgHidden()) return;
const app = W.pc?.app;
if (!app || typeof app.update !== 'function') return;
if (_engSeen !== _engLast) { _engLast = _engSeen; return; }
try { app.update(1 / _bgFps()); } catch (e2) {
if (!_pgErrOk(e2)) throw e2;
}
_engLast = _engSeen;
};
if (_featOf('bgKeepAlive', true)) {
setInterval(_engTick, Math.max(33, Math.round(1000 / _bgFps())));
}
}
const _SYM_SEND = Symbol();
const _SYM_ORIG = Symbol();
const _SYM_FOUNT = Symbol();
const _SYM_MAT = Symbol();
const _SYM_OFIRE = Symbol();
const _SYM_ADHK = Symbol();
const _SYM_PSPWN = Symbol();
const _SYM_BDC = Symbol();
const _SYM_DCHK = Symbol();
const _SYM_PMUT = Symbol();
const _SYM_PRAR = Symbol();
const _SYM_PVAL = Symbol();
const _SYM_LTXT = Symbol();
const _SYM_GHOST = Symbol();
const _SYM_XRAY = Symbol();
const _SYM_JSPD = Symbol();
const _SYM_GRAV = Symbol();
const _SYM_WSET = Symbol();
const _SYM_PTRH = Symbol();
const _SYM_PTRI = Symbol();
const _SYM_CBUB = Symbol();
const _SYM_RR = Symbol();
const _SYM_STAR = Symbol();
const _SYM_RLX = Symbol();
const _SYM_DK = Symbol();
const _SYM_BST = Symbol();
const _SYM_CRF = Symbol();
const _SYM_HUBG = Symbol();
const _OUR_SYMS = new Set([_SYM_SEND, _SYM_ORIG, _SYM_FOUNT, _SYM_MAT, _SYM_OFIRE, _SYM_ADHK, _SYM_PSPWN, _SYM_BDC, _SYM_DCHK, _SYM_PMUT, _SYM_PRAR, _SYM_PVAL, _SYM_LTXT, _SYM_GHOST, _SYM_XRAY, _SYM_JSPD, _SYM_GRAV, _SYM_WSET, _SYM_PTRH, _SYM_PTRI, _SYM_CBUB, _SYM_RR, _SYM_STAR, _SYM_RLX, _SYM_DK, _SYM_BST, _SYM_CRF, _SYM_HUBG]);
const _hiddenOwnKeys = new WeakMap();
const _hideOwnKey = (obj, key) => { let s = _hiddenOwnKeys.get(obj); if (!s) { s = new Set(); _hiddenOwnKeys.set(obj, s); } s.add(key); };
const _isHiddenOwn = (obj, key) => _hiddenOwnKeys.get(obj)?.has(key) ?? false;
const _filterHiddenOwnKeys = (obj, keys) => {
const hk = _hiddenOwnKeys.get(obj);
return hk ? keys.filter(k => !hk.has(k)) : keys;
};
{
const _origGOPS = Object.getOwnPropertySymbols;
const _gopsStr = _origFpToString.call(_origGOPS);
Object.getOwnPropertySymbols = { getOwnPropertySymbols(o) {
return _origGOPS.call(this, o).filter(s => !_OUR_SYMS.has(s));
} }.getOwnPropertySymbols;
_spoofMap.set(Object.getOwnPropertySymbols, _gopsStr);
const _origROK = Reflect.ownKeys;
const _rokStr = _origFpToString.call(_origROK);
Reflect.ownKeys = { ownKeys(o) {
return _origROK.call(this, o).filter(k => {
if (typeof k === 'symbol') return !_OUR_SYMS.has(k);
return !_isHiddenOwn(o, k);
});
} }.ownKeys;
_spoofMap.set(Reflect.ownKeys, _rokStr);
const _origGOPDs = Object.getOwnPropertyDescriptors;
const _gopdsStr = _origFpToString.call(_origGOPDs);
Object.getOwnPropertyDescriptors = { getOwnPropertyDescriptors(o) {
const descs = _origGOPDs.call(this, o);
for (const s of _OUR_SYMS) delete descs[s];
const hk = _hiddenOwnKeys.get(o);
if (hk) for (const k of hk) delete descs[k];
return descs;
} }.getOwnPropertyDescriptors;
_spoofMap.set(Object.getOwnPropertyDescriptors, _gopdsStr);
const _origGOPN = Object.getOwnPropertyNames;
const _gopnStr = _origFpToString.call(_origGOPN);
Object.getOwnPropertyNames = { getOwnPropertyNames(o) {
return _filterHiddenOwnKeys(o, _origGOPN.call(this, o));
} }.getOwnPropertyNames;
_spoofMap.set(Object.getOwnPropertyNames, _gopnStr);
const _origKeys = Object.keys;
const _keysStr = _origFpToString.call(_origKeys);
Object.keys = { keys(o) {
return _filterHiddenOwnKeys(o, _origKeys.call(this, o));
} }.keys;
_spoofMap.set(Object.keys, _keysStr);
const _origHOP = Object.prototype.hasOwnProperty;
const _hopStr = _origFpToString.call(_origHOP);
Object.defineProperty(Object.prototype, 'hasOwnProperty', { value: function(key) {
if ((typeof key === 'symbol' && _OUR_SYMS.has(key)) || _isHiddenOwn(this, key)) return false;
return _origHOP.call(this, key);
}, writable: true, configurable: true, enumerable: false });
_spoofMap.set(Object.prototype.hasOwnProperty, _hopStr);
if (typeof Object.hasOwn === 'function') {
const _origHasOwn = Object.hasOwn;
const _hoStr = _origFpToString.call(_origHasOwn);
Object.hasOwn = { hasOwn(o, key) {
if ((typeof key === 'symbol' && _OUR_SYMS.has(key)) || _isHiddenOwn(o, key)) return false;
return _origHasOwn.call(this, o, key);
} }.hasOwn;
_spoofMap.set(Object.hasOwn, _hoStr);
}
}
const _opdHiddenSet = new Set();
{
const _origOPD = Object.getOwnPropertyDescriptor;
const _opdStr = _origFpToString.call(_origOPD);
Object.getOwnPropertyDescriptor = { getOwnPropertyDescriptor(o, p) {
if (_OUR_SYMS.has(p)) return undefined;
if (_opdHiddenSet.has(o) && p === 'enabled') return undefined;
if (_isHiddenOwn(o, p)) return undefined;
return _origOPD.call(this, o, p);
} }.getOwnPropertyDescriptor;
_spoofMap.set(Object.getOwnPropertyDescriptor, _opdStr);
}
const _protoSpoofProps = new WeakMap();
const _fakePottos = new WeakMap();
const _protoSpoofSet = (obj, key, val) => {
let m = _protoSpoofProps.get(obj);
if (!m) { m = new Map(); _protoSpoofProps.set(obj, m); }
m.set(key, val);
_fakePottos.delete(obj);
};
{
const _origGPO = Object.getPrototypeOf;
const _gpoStr = _origFpToString.call(_origGPO);
Object.getPrototypeOf = { getPrototypeOf(o) {
const realProto = _origGPO(o);
const overrides = _protoSpoofProps.get(o);
if (!overrides || overrides.size === 0) return realProto;
let fp = _fakePottos.get(o);
if (!fp) {
fp = Object.create(realProto);
_fakePottos.set(o, fp);
}
for (const [k] of overrides) {
if (!Object.prototype.hasOwnProperty.call(fp, k)) {
const capturedKey = k;
Object.defineProperty(fp, capturedKey, {
get() { return overrides.get(capturedKey); },
configurable: true, enumerable: false
});
}
}
return fp;
} }.getPrototypeOf;
_spoofMap.set(Object.getPrototypeOf, _gpoStr);
}
const _hookProp = (obj, key, fn, spoofProto = false) => {
const wasOwn = Object.prototype.hasOwnProperty.call(obj, key);
const str = _origFpToString.call(obj[key]);
obj[key] = fn;
const pdesc = Object.getOwnPropertyDescriptor(fn, 'prototype');
if (pdesc && pdesc.configurable) delete fn.prototype;
_spoofMap.set(fn, str);
if (!wasOwn) _hideOwnKey(obj, key);
if (spoofProto) _protoSpoofSet(obj, key, fn);
};
const _hash = s => { let h = 0; for (let i = 0; i < s.length; i++) h = ((h << 5) - h + s.charCodeAt(i)) | 0; return (h >>> 0).toString(36); };
const _pfx = '_' + _hash(location.hostname + navigator.userAgent.slice(0,40)) + '_';
if (indexedDB.databases) {
const _IFP = IDBFactory.prototype;
const _origDatabases = _IFP.databases;
const _dbStr = _origFpToString.call(_origDatabases);
_IFP.databases = { databases() {
return _origDatabases.call(this).then(dbs => dbs.filter(db => !db.name?.startsWith(_pfx)));
} }.databases;
_spoofMap.set(_IFP.databases, _dbStr);
}
const _K_CFG = _pfx + 's';
const _K_WP = _pfx + 'w';
const _K_WARN = _pfx + 'd';
const _K_CURL = _pfx + 'cu';
const _K_CHOUR = _pfx + 'ch';
const _K_CPOOL = _pfx + 'cp';
const _K_BAN = _pfx + 'b';
const _K_HOPR = _pfx + 'hr';
const _K_LASTMODE = _pfx + 'lm';
const _K_ACCT = _pfx + 'a';
const _blockedKeysSet = new Set(['ml_cfg','ml_wp','ml_warn_seen','ml_cat_url','ml_cat_hour','ml_cat_pool',
'_pcx_s','_pcx_w','_pcx_d','_pcx_cu','_pcx_ch','_pcx_cp']);
const _isBlocked = k => _blockedKeysSet.has(k) || (typeof k === 'string' && (k.startsWith('ml-') || k.startsWith('ml_') || k.startsWith('_ml') || k.startsWith('__ml')));
const _origGI = Storage.prototype.getItem;
const _origSI = Storage.prototype.setItem;
const _origRI = Storage.prototype.removeItem;
const _origSK = Storage.prototype.key;
const _lsLen = Object.getOwnPropertyDescriptor(Storage.prototype, 'length').get;
const _staleLS = new Map();
{
for (const k of _blockedKeysSet) {
const v = _origGI.call(localStorage, k);
if (v !== null) { _staleLS.set(k, v); _origRI.call(localStorage, k); }
}
for (let i = _lsLen.call(localStorage) - 1; i >= 0; i--) {
const k = _origSK.call(localStorage, i);
if (_isBlocked(k)) {
const v = _origGI.call(localStorage, k);
if (v !== null) { _staleLS.set(k, v); _origRI.call(localStorage, k); }
}
}
}
const _lsGet = _origGI.bind(localStorage);
const _lsSet = _origSI.bind(localStorage);
const _lsRm = _origRI.bind(localStorage);
const _lsKey = _origSK.bind(localStorage);
{
const _giStr = _origFpToString.call(_origGI);
const _siStr = _origFpToString.call(_origSI);
const _riStr = _origFpToString.call(_origRI);
const _kStr = _origFpToString.call(_origSK);
const _wrapGI = { getItem(k) {
if (_isBlocked(k)) return null;
return _origGI.call(this, k);
} }.getItem;
const _wrapSI = { setItem(k, v) {
if (_isBlocked(k)) return;
if (typeof k === 'string' && (k === 'Settings' || k.startsWith('Settings_')) && typeof v === 'string') {
try {
const s = JSON.parse(v);
if (s && typeof s === 'object') {
const prev = _origGI.call(this, k);
if (prev === null) s.musicVolume = '0';
else if (s.musicVolume === 0) s.musicVolume = '0';
v = JSON.stringify(s);
}
} catch (_) {}
}
return _origSI.call(this, k, v);
} }.setItem;
const _wrapRI = { removeItem(k) {
if (_isBlocked(k)) return;
return _origRI.call(this, k);
} }.removeItem;
const _wrapKey = { key(idx) {
let seen = 0;
const realLen = _lsLen.call(this);
for (let i = 0; i < realLen; i++) {
const k = _origSK.call(this, i);
if (_isBlocked(k)) continue;
if (seen === idx) return k;
seen++;
}
return null;
} }.key;
Object.defineProperty(Storage.prototype, 'getItem', { value: _wrapGI, configurable: true, writable: true, enumerable: true });
Object.defineProperty(Storage.prototype, 'setItem', { value: _wrapSI, configurable: true, writable: true, enumerable: true });
Object.defineProperty(Storage.prototype, 'removeItem', { value: _wrapRI, configurable: true, writable: true, enumerable: true });
Object.defineProperty(Storage.prototype, 'key', { value: _wrapKey, configurable: true, writable: true, enumerable: true });
_spoofMap.set(_wrapGI, _giStr);
_spoofMap.set(_wrapSI, _siStr);
_spoofMap.set(_wrapRI, _riStr);
_spoofMap.set(_wrapKey, _kStr);
const _lenGetter = { get() {
let total = _lsLen.call(this);
const realTotal = total;
for (let i = 0; i < realTotal; i++) { if (_isBlocked(_origSK.call(this, i))) total--; }
return total;
} }.get;
const _origLenDesc = Object.getOwnPropertyDescriptor(Storage.prototype, 'length');
if (_origLenDesc?.get) {
_spoofMap.set(_lenGetter, _origFpToString.call(_origLenDesc.get));
Object.defineProperty(_lenGetter, 'name', { value: _origLenDesc.get.name, configurable: true });
}
Object.defineProperty(Storage.prototype, 'length', {
get: _lenGetter,
configurable: true,
enumerable: true
});
}
{
for (let i = _lsLen.call(localStorage) - 1; i >= 0; i--) {
const k = _origSK.call(localStorage, i);
if (typeof k !== 'string' || (k !== 'Settings' && !k.startsWith('Settings_'))) continue;
const raw = _origGI.call(localStorage, k);
if (!raw) continue;
try {
const s = JSON.parse(raw);
if (s && typeof s === 'object' && s.musicVolume === 0) {
s.musicVolume = '0';
_origSI.call(localStorage, k, JSON.stringify(s));
}
} catch (_) {}
}
}
const _DB_NAME = _pfx + 'x';
const _DB_STORE = 'kv';
const _mem = new Map();
let _idb = null;
{
const _openDB = () => new Promise((resolve, reject) => {
const req = indexedDB.open(_DB_NAME, 1);
req.onupgradeneeded = e => e.target.result.createObjectStore(_DB_STORE);
req.onsuccess = e => resolve(e.target.result);
req.onerror = e => reject(e.target.error);
});
try {
const db = await _openDB();
const tx = db.transaction(_DB_STORE, 'readonly');
const store = tx.objectStore(_DB_STORE);
await new Promise((resolve, reject) => {
const req = store.getAll();
const keys = store.getAllKeys();
const results = {};
req.onsuccess = () => { results.vals = req.result; };
keys.onsuccess = () => { results.keys = keys.result; };
tx.oncomplete = () => {
for (let i = 0; i < (results.keys?.length || 0); i++) _mem.set(results.keys[i], results.vals[i]);
resolve();
};
tx.onerror = e => reject(e.target.error);
});
const _keyMap = {'ml_cfg':_K_CFG,'ml_wp':_K_WP,'ml_warn_seen':_K_WARN,
'ml_cat_url':_K_CURL,'ml_cat_hour':_K_CHOUR,'ml_cat_pool':_K_CPOOL,
'_pcx_s':_K_CFG,'_pcx_w':_K_WP,'_pcx_d':_K_WARN,
'_pcx_cu':_K_CURL,'_pcx_ch':_K_CHOUR,'_pcx_cp':_K_CPOOL};
let migrated = false;
for (const [old, v] of _staleLS) {
if (!_keyMap[old] && !old.startsWith('ml-pos-')) continue;
const nk = _keyMap[old] || (_pfx + 'p-' + old.slice(7));
if (!_mem.has(nk)) { _mem.set(nk, v); migrated = true; }
}
_staleLS.clear();
if (migrated) {
const wtx = db.transaction(_DB_STORE, 'readwrite');
const ws = wtx.objectStore(_DB_STORE);
for (const [k, v] of _mem) ws.put(v, k);
}
_idb = db;
} catch {
}
}
const _dbGet = k => _mem.get(k) ?? null;
const _dbWrite = (op, k, v) => {
try {
const tx = _idb?.transaction(_DB_STORE, 'readwrite');
const store = tx?.objectStore(_DB_STORE);
if (!store) return;
if (op === 'put') store.put(v, k);
else if (op === 'delete') store.delete(k);
} catch {}
};
const _dbSet = (k, v) => { _mem.set(k, v); _dbWrite('put', k, v); };
const _dbRm = k => { _mem.delete(k); _dbWrite('delete', k); };
{
const _chk = [];
if (localStorage.getItem('ml_cfg') !== null) _chk.push('getItem');
if (localStorage.getItem('ml_wp') !== null) _chk.push('getItem:wp');
if (localStorage.hasOwnProperty('getItem')) _chk.push('hasOwn');
if (Storage.prototype.getItem !== localStorage.getItem) _chk.push('proto≠inst');
const ts = Function.prototype.toString.call(Storage.prototype.getItem);
if (ts.includes('_isBlocked') || ts.includes('_lsGet')) _chk.push('toString');
if (typeof indexedDB.databases === 'function') {
const dts = Function.prototype.toString.call(indexedDB.databases);
if (dts.includes('_pfx') || dts.includes('filter')) _chk.push('idb.toString');
}
if (_chk.length) _clog('%c⚠ stealth self-check failed: ' + _chk.join(', '), 'color:#ff3860;font-weight:bold');
}
{
const _integrityRefs = [
() => [Function.prototype, 'toString', Function.prototype.toString],
() => [Object, 'getOwnPropertySymbols', Object.getOwnPropertySymbols],
() => [Reflect, 'ownKeys', Reflect.ownKeys],
() => [Object, 'getOwnPropertyDescriptors', Object.getOwnPropertyDescriptors],
() => [Object, 'getOwnPropertyDescriptor', Object.getOwnPropertyDescriptor],
() => [Storage.prototype, 'getItem', Storage.prototype.getItem],
() => [Storage.prototype, 'setItem', Storage.prototype.setItem],
() => [Performance.prototype, 'getEntries', Performance.prototype.getEntries],
];
const _snapshots = _integrityRefs.map(fn => { const [obj, key, val] = fn(); return { obj, key, val }; });
setInterval(() => {
for (const s of _snapshots) {
if (s.obj[s.key] !== s.val) {
_spoofMap.set(s.obj[s.key], _spoofMap.get(s.val) || _origFpToString.call(s.val));
s.obj[s.key] = s.val;
}
}
}, 2000 + Math.random() * 1000);
}
if (!document.body) await new Promise(r => {
const _mo = new MutationObserver(() => { if (document.body) { _mo.disconnect(); r(); } });
_mo.observe(document.documentElement, { childList: true });
});
_sh = document.createElement('div');
document.body.appendChild(_sh);
_sr = _sh.attachShadow({ mode: 'closed' });
{
const _origEFP = Document.prototype.elementFromPoint;
Document.prototype.elementFromPoint = { elementFromPoint(x, y) {
const el = _origEFP.call(this, x, y);
if (el === _sh) {
_sh.style.pointerEvents = 'none';
const below = _origEFP.call(this, x, y);
_sh.style.pointerEvents = '';
return below;
}
return el;
} }.elementFromPoint;
_spoofMap.set(Document.prototype.elementFromPoint, _origFpToString.call(_origEFP));
const _origEsFP = Document.prototype.elementsFromPoint;
Document.prototype.elementsFromPoint = { elementsFromPoint(x, y) {
return _origEsFP.call(this, x, y).filter(e => e !== _sh);
} }.elementsFromPoint;
_spoofMap.set(Document.prototype.elementsFromPoint, _origFpToString.call(_origEsFP));
}
let _splashWalkAnim = null;
let _splFlipIv = 0, _splBlinkIv = 0;
{
let wrapper = document.getElementById('application-splash-wrapper');
if (!wrapper) {
wrapper = await new Promise(r => {
const _smo = new MutationObserver(() => {
const el = document.getElementById('application-splash-wrapper');
if (el) { _smo.disconnect(); r(el); }
});
_smo.observe(document.documentElement, { childList: true, subtree: true });
setTimeout(() => { _smo.disconnect(); r(null); }, 8000);
});
}
if (wrapper) {
const img = document.createElement('img');
img.alt = '';
img.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .4s;object-fit:cover';
img.onload = () => { img.style.opacity = '1'; };
wrapper.appendChild(img);
const cached = _dbGet(_K_CURL);
try { img.src = cached || GM_getResourceURL('catFallback'); } catch(e) { if (cached) img.src = cached; }
const _splCatSvg = '<svg viewBox="0 0 115 72" fill="none" xmlns="http://www.w3.org/2000/svg" style="display:block;width:100%;height:auto">' +
'<g class="cs" style="transform-box:fill-box;transform-origin:50% 50%">' +
'<ellipse cx="55" cy="69" rx="30" ry="3" fill="rgba(0,0,0,.18)"/></g>' +
'<g class="ct" style="transform-box:fill-box;transform-origin:100% 100%">' +
'<path d="M28,38 C18,30 8,20 12,12 C15,6 20,10 18,16" stroke="#fff" stroke-width="5" stroke-linecap="round"/></g>' +
'<g class="cb" style="transform-box:fill-box;transform-origin:50% 0%">' +
'<rect x="33" y="52" width="7" height="15" rx="3.5" fill="#ddd"/>' +
'<rect x="40" y="52" width="7" height="15" rx="3.5" fill="#eee"/></g>' +
'<ellipse cx="52" cy="40" rx="24" ry="14" fill="#fff"/>' +
'<g class="cf" style="transform-box:fill-box;transform-origin:50% 0%">' +
'<rect x="62" y="52" width="7" height="15" rx="3.5" fill="#ddd"/>' +
'<rect x="69" y="52" width="7" height="15" rx="3.5" fill="#eee"/></g>' +
'<g class="ch" style="transform-box:fill-box;transform-origin:50% 100%">' +
'<circle cx="78" cy="28" r="15" fill="#fff"/>' +
'<g class="cr" style="transform-box:fill-box;transform-origin:50% 100%">' +
'<polygon points="65,18 69,2 73,16" fill="#fff"/><polygon points="81,16 85,2 89,18" fill="#fff"/>' +
'<polygon points="67.5,16.5 69,7 70.5,16" fill="#FFB6C1"/><polygon points="83,16 85,7 87,16.5" fill="#FFB6C1"/></g>' +
'<g class="ce" style="transform-box:fill-box;transform-origin:50% 50%">' +
'<ellipse cx="72" cy="26" rx="2.8" ry="3.2" fill="#333"/><ellipse cx="84" cy="26" rx="2.8" ry="3.2" fill="#333"/>' +
'<circle cx="73.2" cy="25" r="1.1" fill="#fff"/><circle cx="85.2" cy="25" r="1.1" fill="#fff"/></g>' +
'<ellipse cx="78" cy="31" rx="2" ry="1.4" fill="#FFB6C1"/>' +
'<path d="M78,32.5 C76.5,34.5 74.5,34.5 73.5,33.5" stroke="#777" stroke-width=".8" fill="none" stroke-linecap="round"/>' +
'<path d="M78,32.5 C79.5,34.5 81.5,34.5 82.5,33.5" stroke="#777" stroke-width=".8" fill="none" stroke-linecap="round"/>' +
'<g class="cw" style="transform-box:fill-box;transform-origin:50% 50%" stroke="#ccc" stroke-width=".7" stroke-linecap="round">' +
'<line x1="67" y1="29" x2="57" y2="27"/><line x1="67" y1="31.5" x2="57" y2="33.5"/>' +
'<line x1="89" y1="29" x2="99" y2="27"/><line x1="89" y1="31.5" x2="99" y2="33.5"/></g></g></svg>';
const splOuter = document.createElement('div');
splOuter.style.cssText = 'position:absolute;bottom:80px;left:0;width:clamp(70px,12vw,120px);pointer-events:none;will-change:transform;z-index:2';
const splInner = document.createElement('div');
splInner.style.cssText = 'will-change:transform;transform-origin:center bottom';
splInner.innerHTML = _splCatSvg;
splOuter.appendChild(splInner);
wrapper.appendChild(splOuter);
const splSvg = splInner.querySelector('svg');
const splTail = splInner.querySelector('.ct');
const splLb = splInner.querySelector('.cb');
const splLf = splInner.querySelector('.cf');
const splEyes = splInner.querySelector('.ce');
const splWhisk = splInner.querySelector('.cw');
const splWalk = splOuter.animate([
{ transform: 'translateX(2vw)' },
{ transform: 'translateX(92vw)' }
], { duration: 8000, direction: 'alternate', iterations: Infinity, easing: 'linear' });
splWalk.currentTime = Math.random() * 16000;
_splashWalkAnim = splWalk;
splInner.animate([{ transform: 'translateY(0)' }, { transform: 'translateY(-4px)' }, { transform: 'translateY(0)' }], { duration: 350, iterations: Infinity, easing: 'ease-in-out' });
splTail.animate([{ transform: 'rotate(-10deg)' }, { transform: 'rotate(10deg)' }, { transform: 'rotate(-10deg)' }], { duration: 600, iterations: Infinity, easing: 'ease-in-out' });
splLb.animate([{ transform: 'rotate(-8deg)' }, { transform: 'rotate(8deg)' }, { transform: 'rotate(-8deg)' }], { duration: 350, iterations: Infinity, easing: 'ease-in-out' });
splLf.animate([{ transform: 'rotate(8deg)' }, { transform: 'rotate(-8deg)' }, { transform: 'rotate(8deg)' }], { duration: 350, iterations: Infinity, easing: 'ease-in-out' });
splWhisk.animate([{ transform: 'rotate(-2deg)' }, { transform: 'rotate(2deg)' }, { transform: 'rotate(-2deg)' }], { duration: 800, iterations: Infinity, easing: 'ease-in-out' });
let splRight = true;
_splFlipIv = setInterval(function () {
const t = splWalk.effect?.getComputedTiming();
if (!t || t.currentIteration == null) return;
const r = (t.currentIteration % 2) === 0;
if (r !== splRight) { splRight = r; splSvg.style.transform = r ? '' : 'scaleX(-1)'; }
}, 16);
_splBlinkIv = setInterval(function () {
splEyes.animate([{ transform: 'scaleY(1)' }, { transform: 'scaleY(0.1)' }, { transform: 'scaleY(0.1)' }, { transform: 'scaleY(1)' }], { duration: 180, easing: 'ease-in-out' });
}, 4000 + Math.random() * 3000);
const hourKey = Math.floor(Date.now() / 3600000);
if (Number(_dbGet(_K_CHOUR)) !== hourKey || !_dbGet(_K_CPOOL)) {
const catApi = 'https://api.thecatapi.com/v1/images/search?limit=10&mime_types=jpg';
const _gmCat = u => new Promise((res, rej) => GM_xmlhttpRequest({ method: 'GET', url: u, onload: r => { try { res(JSON.parse(r.responseText)); } catch { rej(); } }, onerror: rej }));
Promise.all([_gmCat(catApi), _gmCat(catApi)])
.then(([a, b]) => {
const all = [...a, ...b].filter(x => x?.url && (x.width >= 1024 || x.height >= 1024));
const urls = [...new Set(all.map(x => x.url))];
if (urls.length) {
_dbSet(_K_CURL, urls[0]);
_dbSet(_K_CHOUR, String(hourKey));
new Image().src = urls[0];
if (urls.length > 1) {
const pool = urls.slice(1);
_dbSet(_K_CPOOL, JSON.stringify(pool));
pool.slice(0, 3).forEach(u => { new Image().src = u; });
}
}
})
.catch(() => {});
}
}
}
for (let i = 0; i < 150 && !W.pc?.app?.root; i++) await new Promise(r => setTimeout(r, 100));
if (!W.pc?.app?.root) return;
{
const _patchCollision = () => {
const Cls = W.pc?.CollisionComponent;
if (typeof Cls !== 'function' || !Cls.prototype) return;
const _v3zero = Object.freeze({ x: 0, y: 0, z: 0, clone() { return { x:0,y:0,z:0 }; } });
const _stub = new Proxy({}, { get(t, k) { if (k === 'halfExtents' || k === 'linearOffset' || k === 'angularOffset') return _v3zero; return undefined; }, has() { return true; } });
const _dataKey = Object.getOwnPropertyNames(Cls.prototype).find(n => { const d = Object.getOwnPropertyDescriptor(Cls.prototype, n); return d?.get && n === 'data'; });
if (_dataKey) {
const _origDataDesc = Object.getOwnPropertyDescriptor(Cls.prototype, _dataKey);
Object.defineProperty(Cls.prototype, _dataKey, { get: function() { const v = _origDataDesc.get.call(this); return v != null ? v : _stub; }, set: _origDataDesc.set, configurable: true, enumerable: _origDataDesc.enumerable });
} else {
const _sys = W.pc.app.systems?.collision;
if (_sys) {
const _sysProto = Object.getPrototypeOf(_sys);
['_updateDynamic','_updateKinematic','updateBody','_updateShape','beforeInitialize','initializeComponentData'].forEach(method => {
if (typeof _sysProto[method] !== 'function') return;
const _orig = _sysProto[method];
_hookProp(_sysProto, method, { [method](comp, ...args) { if (comp?.data == null) return; return _orig.call(this, comp, ...args); } }[method]);
});
}
}
};
if (W.pc.app._started) { _patchCollision(); } else { W.pc.app.once('start', _patchCollision); }
}
const ML_VERSION = typeof GM_info !== 'undefined' ? GM_info.script.version : 'unknown';
const _i18n = {};
_i18n.en = {
_name: 'English',
close: '✕',
refresh: '↻',
go: 'Go',
set: 'Set',
auto: 'Auto',
empty: 'empty',
help_title: 'Help',
players_title: 'Players',
players_empty: 'No other players found',
settings_title: 'Settings',
settings_reset: 'Reset',
tab_gameplay: 'Gameplay',
tab_economy: 'Economy',
tab_audio: 'Audio',
tab_advanced: 'Advanced',
tab_hud: 'HUD',
tab_keys: 'Keys',
tab_accounts: 'Accounts',
acct_current: 'Current',
acct_new: 'New',
acct_import: 'Import',
acct_switch: 'Switch',
acct_reload: 'Reload',
acct_delete: 'Delete',
acct_cancel: 'Cancel',
acct_empty: 'Empty',
acct_token_ph: 'Token',
acct_copy: 'Copy',
acct_export: 'Export',
acct_rename: 'Rename',
acct_save: 'Save',
acct_name_len: 'Name must be 4-12 characters',
acct_name_fail: 'Rename failed',
acct_invalid: 'Invalid',
acct_ready: 'Account ready. Close Meeland, switch your IP, then reload.',
acct_ip_note: 'Always use a VPN and switch your IP when changing accounts.',
acct_howto: '1. Click Copy to copy this account\'s link.\n2. On another browser or device — or with a friend — open MES.\n3. Click Import and paste the link.',
sh_movement: 'Movement',
sh_defense: 'Defence',
sh_camera: 'Camera',
sh_overlays: 'Overlays',
sh_behaviour: 'Behaviour',
sh_buttons: 'Buttons',
sh_language: 'Language',
sh_chat: 'Chat',
sh_waves: 'Waves',
sh_steal_a_pet: 'Steal a Pet',
sh_tower: 'Tower',
sh_misc_multi: 'Misc (multi-mode)',
s_noclip: 'Noclip',
s_fly: 'Fly',
s_fly_emotes: 'Fly Emotes',
s_base_speed: 'Base Speed',
s_jump_mult: 'Jump Height',
s_grav_mult: 'Gravity',
s_walk_up_walls: 'Walk Up Walls',
s_carry_normalize: 'Carry Speed + Jump',
s_invincibility: 'Invincibility',
s_anti_kb: 'Anti-Knockback',
s_invisible: 'Invisible',
s_xray_infection: 'X-Ray (Murder Mystery)',
s_ghost_mode: 'Ghost Mode',
s_flee_intruder: 'Flee on Intruder',
s_first_person: 'First Person View',
s_fov_first_person: 'FOV (First Person)',
s_fov_third_person: 'FOV (Third Person)',
s_fov_vertical_mult: 'FOV Vertical Multiplier',
s_auto_lock: 'Auto-Lock Base',
s_auto_fountain: 'Auto-Fountain (1.5×)',
s_daily_coins: 'Daily Coins',
s_stars: 'Stars',
s_diamonds_tower: 'Diamonds',
s_tower_loop: 'Tower Loop',
s_auto_roll_x25: 'Auto Roll x25 Luck',
s_auto_craft: 'Auto-Craft',
s_auto_vip_sword: 'Auto Buy VIP',
s_auto_vip_waves: 'Auto Buy VIP',
s_direct_kill: 'Instant Kill',
s_direct_kill_rate: 'Kill Rate',
s_auto_buy_upgrades: 'Auto Buy Upgrades',
s_boost_coins: 'Auto Upgrade: Coins',
s_boost_diamonds: 'Auto Upgrade: Diamonds',
s_boost_luck: 'Auto Upgrade: Luck',
s_auto_unlock_areas: 'Auto Unlock Areas',
s_auto_rebirth: 'Auto Rebirth',
s_auto_join_tp: 'Teleport to Highest Area',
s_hide_kill_rewards: 'Hide Kill Rewards',
s_hide_roll_anim: 'Hide Roll Animation',
rng_title: 'Pets RNG Cheats',
rng_sec_rolling: 'Rolling',
rng_sec_crafting: 'Crafting',
rng_sec_combat: 'Combat',
rng_sec_upgrades: 'Upgrades',
rng_sec_areas: 'Areas',
rng_actions: 'Actions',
log_craft: 'Craft',
log_success: 'SUCCESS',
log_fail: 'FAIL',
log_unlocking_area: 'Unlocking area',
log_area_unlocked: 'Area unlocked',
log_equipped: 'Equipped',
log_bought_upgrade: 'Bought upgrade',
log_teleported_to: 'Teleported to',
log_rebirthing: 'Rebirthing',
h_rng: 'RNG',
h_accts: 'Accounts',
s_auto_collect: 'Auto-Collect Earnings',
s_collect_interval: 'Collect Interval',
s_chat_fade: 'Chat Fade Time',
s_name_colors: 'Username Colours',
s_chat_enhance: 'Chat Enhancements',
mes_hint: 'Tip: Include "mes" in your username for a rainbow animated effect!',
s_carry_tune: 'Carry Tune (Steal)',
s_pet_pickup_radius: 'Pet Steal Radius',
s_carry_vol: 'Carry Volume',
carry_tune_default: 'Default',
carry_tune_silent: 'Silent',
carry_tune_ambient: 'Ambient',
carry_tune_blues: 'Blues',
carry_tune_chiptune: 'Chiptune',
carry_tune_classical: 'Classical',
carry_tune_electronic: 'Electronic',
carry_tune_epic: 'Epic',
carry_tune_folk: 'Folk',
carry_tune_funk: 'Funk',
carry_tune_jazz: 'Jazz',
carry_tune_lofi: 'Lo-Fi',
carry_tune_metal: 'Metal',
carry_tune_pop: 'Pop',
carry_tune_punk: 'Punk',
carry_tune_reggae: 'Reggae',
carry_tune_rock: 'Rock',
s_cont_cuddle: 'Continuous Cuddle',
s_protips: 'Pro Tips',
s_hideprotips: 'Hide My Pro Tips',
s_show_exp_modes: 'Show Experimental Modes',
s_showcoords: 'Show Coords',
s_showfps: 'Show FPS',
s_showtargetinfo: 'Show Target Info',
s_showobj: 'Show Entity / Mesh Count',
s_copy_dbg: 'Copy Debug Logs',
s_copy_json: 'Copy JSON',
s_clear_dbg: 'Clear',
h_fly: 'Fly',
h_speed: 'Blink',
h_waypoints: 'Waypoints',
h_autolock: 'Auto-Lock',
h_invisible: 'Invisible',
h_cuddle: 'Cuddle',
h_pets: 'Pets',
h_snipe: 'Snipe',
h_help: 'Help',
h_settings: 'Settings',
h_prv: 'Private Room',
h_tc: 'Tower Complete',
h_tcl: 'Tower Loop',
kb_fly: 'Fly (toggle/up)',
kb_fly_down: 'Fly Down',
kb_set_home: 'Set Home',
kb_home: 'Home',
kb_back: 'Back',
kb_cuddle: 'Cuddle Panel',
kb_settings: 'Settings',
kb_pets: 'Pet Browser',
kb_slots: 'Waypoint Slots',
kb_snipe: 'Sniper Panel',
kb_snipe_toggle: 'Sniper On/Off',
kb_attack: 'Attack',
kb_help: 'Help / Description',
kb_tower: 'Tower Complete',
kb_tower_loop: 'Tower Loop',
kb_invisible: 'Invisible',
kb_first_person: 'First Person',
kb_autolock: 'Auto-Lock Base',
kb_prv: 'Private Room',
kb_rng: 'RNG',
kb_accts: 'Accounts',
pets_title: 'Pets',
pets_search_placeholder: 'e.g. wild kitty, golden OR diamond, (golden OR emerald) wild',
pets_hint: 'Words are AND’d together. Use OR for alternatives, brackets to group. * or % as wildcard. Prefix - before a word to exclude it.',
pets_empty: 'No pets found in this room',
pt_name: 'Name',
pt_mut: 'Mutation',
pt_rar: 'Rarity',
pt_owner: 'Owner',
pt_worth: 'Worth',
pt_income: 'Income/s',
pt_dist: 'Dist',
slots_title: 'Waypoint Slots',
sniper_title: 'Pet Sniper',
sniper_tbl_pet: 'Pet',
sniper_tbl_owner: 'Owner',
sniper_tbl_lock: 'Lock',
sniper_placeholder: 'e.g. halo, golden OR diamond, emerald dragon',
sniper_hint: 'Words are AND’d. Use OR for alternatives, brackets to group. * or % as wildcard. Prefix - before a word to exclude it.',
sniper_room_col: 'Room',
sniper_scans_col: 'Scans',
sniper_top_pet_col: 'Top Pet',
sniper_top_worth_col: 'Top Worth',
sniper_top_owner_col: 'Top Owner',
sniper_age_col: 'Age',
sniper_join_btn: 'Join',
sniper_full: 'Full',
sniper_join_failed: 'Target room full',
sniper_scanning_rooms: 'Searching other rooms…',
sniper_scan_off: 'Auto hunt off',
sniper_scan_next: 'Next scan in',
sniper_scan_idle: 'Idle — waiting to scan',
sniper_auto_place: 'Auto-place on base',
sniper_place_desc: '(puts sniped pet on your base slot)',
sniper_auto_drop: 'Auto-drop non-matching pets in Waves',
sniper_drop_desc: '(drops wild pets that don\'t match the filter to refresh the spawn pool)',
sniper_auto_hunt: 'Auto Hunt',
sniper_hunt_desc: '(probe other rooms, hop to the best match)',
sniper_auto_sell: 'Auto-sell in Steal',
sniper_sell_desc: '(sell lowest when base full)',
sniper_lockdown: 'Lockdown ≤',
sniper_lockdown_hint: 'Steal targets on bases with ≤ this time left.',
sniper_join_grace: 'Join grace',
sniper_start: 'Start Sniping',
sniper_stop: 'Stop Sniping',
sniper_idle: 'Idle',
sniper_no_filter: 'No filter set',
sniper_waiting: 'Waiting for game...',
sniper_hold_pause: 'Holding a pet — paused',
sniper_stolen_pause: 'has our pet — paused',
sniper_cooldown: 'Cooldown',
sniper_hopping: 'Hopping server...',
sniper_na: 'Sniper N/A in lobby — join a game first',
sniper_wait_lock: 'Waiting for lock data...',
sniper_locked: 'Base locked — skipping...',
sniper_full_eggs: 'Base full — only eggs, can’t sell',
sniper_stealing: 'Stealing',
sniper_dropped: 'Dropped',
sniper_holding: 'Holding',
sniper_place: '! Place on base.',
sniper_steal_mode: '[Steal]',
sniper_theft_nohop: 'Pet being stolen by',
sniper_nohop_suffix: '— no hop',
sniper_sniping: 'Sniping:',
sniper_options: 'Options',
sniper_drop_fail_status: 'Drop failed!',
sniper_hotkey_label: 'Toggle hotkey:',
sniper_panel_label: 'Panel:',
sniper_grab_fail: 'Grab failed. Retrying...',
sniper_our_pet_stolen: 'Our pet stolen — 8s cooldown',
sniper_hopping_short: 'Hopping...',
sniper_base_full: 'Base full',
mobile_up: '▲',
mobile_down: '▼',
mobile_sprint: 'BLINK',
pet_teleport_title: 'Teleport',
pet_pickup_title: 'Pick up',
owner_yours: 'Yours',
owner_wild: 'Wild',
footer_gf: 'Greasy Fork',
copy_ok: 'Copied',
copy_failed: 'Copy Failed',
s_invis_on_fly: 'Invis on Fly',
snipe_walk_home: 'Walk home after steal',
snipe_walk_home_desc: 'Walk back to your base',
sniper_afk_sell: 'AFK sell non-matching pets',
sniper_afk_sell_desc: '(when idle 5s, sell pets not matching filter by value — waves only)',
hb_fly: 'FLY',
hb_lck: 'LCK',
hb_inv: 'INV',
hb_cud: 'CUD',
hb_pet: 'PET',
hb_snp: 'SNP',
hb_cfg: 'CFG',
hb_help: '?',
hb_rng: 'RNG',
hb_accts: 'ACC',
ban_title: 'Connection Blocked',
ban_sub: 'Your IP address has been restricted by Meeland',
ban_body: 'No worries — this is easy to fix! A free VPN will give you a new IP so you can play again.',
ban_pick: 'Quick fix — pick any one:',
ban_warp: 'free, unlimited, one-click setup',
ban_warp_store: 'also on App Store & Play Store as "1.1.1.1"',
ban_proton: 'no data cap, 5 countries',
ban_steps: 'Install → connect → refresh this page. That’s it!',
ban_ok: 'Got it',
warn_title: 'Always Use a VPN',
warn_body: 'Always play with a <b>VPN</b> on.',
warn_ok: 'Got it, I understand',
loading: 'Loading',
tcl_loading: 'Running Tower Complete Loop. Press {key} to stop.',
hop_search: 'Finding match',
hop_match: 'Found {name} — joining',
hop_flee: 'Fleeing intruder',
hop_reconnect: 'Reconnecting',
hop_reload: 'Reloading',
hop_fall: 'Recovering from fall',
hop_join: 'Joining room',
lock_off: 'OFF',
lock_unlocked: 'UNLOCKED',
};
function _buildDesc(L) {
return `
<h1>Meeland Enhancement Suite</h1>
<p>${L.desc_intro}</p>
<p><em>${L.desc_free}</em></p>
<h2>\u2694\ufe0f ${L.desc_h_combat}</h2>
<ul>
<li>\ud83d\udc80 <strong>${L.desc_nodeathh}</strong> \u2014 ${L.desc_nodeath_d}</li>
<li>\u2694\ufe0f <strong>${L.desc_attack}</strong> \u2014 ${L.desc_attack_d}</li>
<li>\ud83d\udc41\ufe0f <strong>${L.desc_invis}</strong> \u2014 ${L.desc_invis_d}</li>
<li>\ud83d\udc41\u200d\ud83d\udfe9 <strong>${L.desc_xray}</strong> \u2014 ${L.desc_xray_d}</li>
<li>\ud83d\udd0d <strong>${L.desc_anti_invis}</strong> \u2014 ${L.desc_anti_invis_d}</li>
<li>\ud83d\udee1\ufe0f <strong>${L.desc_antikb}</strong> \u2014 ${L.desc_antikb_d}</li>
<li>\ud83c\udfaf <strong>${L.desc_fpv}</strong> \u2014 ${L.desc_fpv_d}</li>
</ul>
<h2>\ud83d\udcb0 ${L.desc_h_economy}</h2>
<ul>
<li>\ud83d\udcb0 <strong>${L.desc_money}</strong> \u2014 ${L.desc_money_d}</li>
<li>\ud83d\udc3e <strong>${L.desc_collect}</strong> \u2014 ${L.desc_collect_d}</li>
<li>\ud83d\udd12 <strong>${L.desc_autolock}</strong> \u2014 ${L.desc_autolock_d}</li>
<li>\u26f2 <strong>${L.desc_fountain}</strong> \u2014 ${L.desc_fountain_d}</li>
</ul>
<h2>\ud83c\udfae ${L.desc_h_movement}</h2>
<ul>
<li>\ud83d\ude80 <strong>${L.desc_fly}</strong> \u2014 ${L.desc_fly_d}</li>
<li>\ud83d\udc7b <strong>${L.desc_noclip}</strong> \u2014 ${L.desc_noclip_d}</li>
<li>\ud83e\uddf1 <strong>${L.desc_walls}</strong> \u2014 ${L.desc_walls_d}</li>
<li>\ud83d\udccd <strong>${L.desc_waypts}</strong> \u2014 ${L.desc_waypts_d}</li>
<li>\u26a1 <strong>${L.desc_speed}</strong> \u2014 ${L.desc_speed_d}</li>
</ul>
<h2>\ud83d\udc3e ${L.desc_h_pets}</h2>
<ul>
<li>\ud83d\udc15 <strong>${L.desc_petbrow}</strong> \u2014 ${L.desc_petbrow_d}</li>
<li>🎯 <strong>${L.desc_sniper}</strong> \u2014 ${L.desc_sniper_d}</li>
<li>\ud83d\udc3e <strong>${L.desc_cuddle}</strong> \u2014 ${L.desc_cuddle_d}</li>
<li>🔐 <strong>${L.desc_prv}</strong> \u2014 ${L.desc_prv_d}</li>
<li>\ud83c\udfe0 <strong>${L.desc_return}</strong> \u2014 ${L.desc_return_d}</li>
</ul>
<h2>\ud83c\udf9b\ufe0f ${L.desc_h_tuning}</h2>
<ul>
<li>\ud83c\udfc3 <strong>${L.desc_jumpgrav}</strong> \u2014 ${L.desc_jumpgrav_d}</li>
<li>\ud83d\udc41\ufe0f <strong>${L.desc_fov}</strong> \u2014 ${L.desc_fov_d}</li>
<li>\ud83e\udee5 <strong>${L.desc_autoinvis}</strong> \u2014 ${L.desc_autoinvis_d}</li>
</ul>
<h2>\ud83c\udfa8 ${L.desc_h_custom}</h2>
<ul>
<li>\ud83d\udd7a <strong>${L.desc_emotes}</strong> \u2014 ${L.desc_emotes_d}</li>
<li>\ud83c\udfb5 <strong>${L.desc_music}</strong> \u2014 ${L.desc_music_d}</li>
<li>\ud83d\udcca <strong>${L.desc_displays}</strong> \u2014 ${L.desc_displays_d}</li>
<li>\ud83d\udcac <strong>${L.desc_chatfade}</strong> \u2014 ${L.desc_chatfade_d}</li>
<li>\ud83c\udf0d <strong>${L.desc_langs}</strong> \u2014 ${L.desc_langs_d}</li>
<li>\u2699\ufe0f <strong>${L.desc_config}</strong> \u2014 ${L.desc_config_d}</li>
</ul>
<h2>\ud83c\udfaa ${L.desc_h_extras}</h2>
<ul>
<li>\ud83c\udfd7\ufe0f <strong>${L.desc_tower}</strong> \u2014 ${L.desc_tower_d}</li>
<li>\ud83d\udc31 <strong>${L.desc_cats}</strong> \u2014 ${L.desc_cats_d}</li>
</ul>
<h2>${L.desc_h_privacy}</h2>
<ul><li>\u2705 ${L.desc_privacy}</li></ul>
<h2>${L.desc_h_install}</h2>
<h3>${L.desc_desktop}</h3>
<ol><li>${L.desc_inst_ext}</li><li>${L.desc_inst_click}</li><li>${L.desc_inst_open}</li></ol>
<h3>${L.desc_mobile}</h3>
<ol><li>${L.desc_mob_ff}</li><li>${L.desc_mob_addon}</li><li>${L.desc_mob_visit}</li><li>${L.desc_mob_play}</li></ol>
<p style="font-size:11px"><em>${L.desc_ios}</em></p>
`;
}
function _buildWarnBody(L) {
return `<p>${L.warn_body}</p>`;
}
const _enName = code => { try { return new Intl.DisplayNames('en', {type:'language', languageDisplay:'standard'}).of(code); } catch { return code; } };
const _langOptions = () => Object.keys(_i18n).map(c => '<option value="' + c + '"' + (c === _currentLang ? ' selected' : '') + '>' + (_i18n[c]._name || c) + ' (' + _enName(c) + ')</option>').join('');
Object.assign(_i18n.en, {
desc_intro: 'MES gives you wallhack, auto-farming, rare pet collection, speed boost, flight, invisibility, and more in Meeland',
desc_free: '100% free, always. Got feedback? Leave a ⭐ positive review — that\'s what keeps updates coming.',
desc_h_movement: 'Movement',
desc_h_combat: 'Combat',
desc_h_tuning: 'Tuning',
desc_h_pets: 'Pets & Stealing',
desc_h_economy: 'Economy',
desc_h_custom: 'Customization',
desc_h_extras: 'Extras',
desc_fly: 'Fly',
desc_fly_d: 'Hold Space to rise, F to drop. Adjustable speed.',
desc_speed: 'Blink',
desc_speed_d: 'Shift to blink to wherever you are looking.',
desc_noclip: 'Noclip',
desc_noclip_d: 'Walk through walls.',
desc_walls: 'Walk Up Walls',
desc_walls_d: 'Climb any surface.',
desc_waypts: 'Waypoints',
desc_waypts_d: 'Save 10 positions. One-key teleport. <kbd>Z</kbd> to toggle back.',
desc_invis: 'Invisible',
desc_invis_d: 'Press <kbd>CapsLock</kbd> to vanish completely.',
desc_fpv: 'First Person View',
desc_fpv_d: 'Press <kbd>.</kbd> to toggle first-person camera.',
desc_anti_invis: 'Anti-Invisibility',
desc_anti_invis_d: 'See invisible players as ghosts.',
desc_xray: 'X-Ray Vision',
desc_xray_d: 'See players through walls in Murder Mystery. Red = murderer, green = civilian.',
desc_nodeathh: 'Invincible',
desc_nodeath_d: 'Immune to all damage.',
desc_antikb: 'Anti-Knockback',
desc_antikb_d: 'Can\'t be pushed.',
desc_attack: 'Instant Attack',
desc_attack_d: '<kbd>G</kbd> teleports to nearest player and hits.',
desc_jumpgrav: 'Jump & Gravity',
desc_jumpgrav_d: 'Adjustable multipliers in Settings.',
desc_fov: 'FOV Control',
desc_fov_d: 'First-person and third-person FOV sliders.',
desc_autoinvis: 'Auto-Invis on Fly',
desc_autoinvis_d: 'Go invisible automatically when flying.',
desc_sniper: 'Pet Sniper',
desc_sniper_d: 'Auto-steal filtered pets hands-free. Both game modes.',
desc_prv: 'Private Room',
desc_prv_d: '<kbd>PgDn</kbd> creates a private room in the current mode and auto-joins.',
desc_petbrow: 'Pet Browser',
desc_petbrow_d: '<kbd>K</kbd> shows all pets. Sort, filter, grab.',
desc_cuddle: 'Cuddle Panel',
desc_cuddle_d: '<kbd>J</kbd> lists players by distance. Click to follow.',
desc_return: 'Auto Return',
desc_return_d: 'Teleports home after steal.',
desc_autolock: 'Auto-Lock',
desc_autolock_d: 'Base stays locked always.',
desc_fountain: 'Auto-Fountain',
desc_fountain_d: 'Permanent 1.5× profit. Auto-renews.',
desc_money: 'Free Money + Stars + Diamonds',
desc_money_d: 'No ads needed.',
desc_collect: 'Auto-Collect',
desc_collect_d: 'Pet income claimed every 30s.',
desc_music: 'Carry Tune',
desc_music_d: 'Music while stealing. 15 genres.',
desc_chatfade: 'Chat Fade',
desc_chatfade_d: 'Control message visibility. 5–120s.',
desc_emotes: 'Fly Emotes',
desc_emotes_d: 'Random emotes while flying.',
desc_displays: 'Display Overlays',
desc_displays_d: 'Coords, FPS counter, and target info toggles.',
desc_config: 'Settings',
desc_config_d: '<kbd>M</kbd> to toggle features, rebind keys, adjust speeds.',
desc_langs: '60 Languages',
desc_langs_d: 'Full UI translation.',
desc_tower: 'Tower Complete',
desc_tower_d: '<kbd>Y</kbd> to instant-win Obby Tower.',
desc_cats: 'Cat Loading Screens',
desc_cats_d: 'Cute cats replace loading.',
desc_h_install: 'Install',
desc_desktop: 'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext: 'Get <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> or <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click: 'Click Install above',
desc_inst_open: 'Open any Meeland game — it just works',
desc_mobile: 'Mobile (Android)',
desc_mob_ff: 'Install <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox for Android</a> from the Play Store',
desc_mob_addon: 'Open Firefox → Menu → Add-ons → install <strong>Tampermonkey</strong>',
desc_mob_visit: 'Visit this page in Firefox and tap Install',
desc_mob_play: 'Play Meeland — tap-friendly HUD buttons appear automatically',
desc_ios: 'iOS: Apple blocks browser extensions on all iOS browsers (including Firefox). Use a desktop browser or Android.',
desc_h_privacy: 'Privacy',
desc_privacy: 'Client-side only — no data leaves your browser',
});
let _currentLang = 'en';
let T = _i18n.en;
let _rebuildKeybinds = null;
let _refreshUsernameUI = null;
const _mk = (c, n, o) => { _i18n[c] = Object.assign({}, _i18n.en, { _name: n }, o); };
function _setLang(code) {
if (!_i18n[code]) code = 'en';
_currentLang = code;
T = _i18n[code];
try { const c = JSON.parse(_dbGet(CFG_KEY) || '{}'); c._lang = code; _dbSet(CFG_KEY, JSON.stringify(c)); } catch (e) { _log('err', 'lang save: ' + e.message); }
}
function _applyLangToDOM() {
if (!_sr) return;
const _$ = id => _sr.querySelector('.' + id);
const _t = (id, key) => { const el = _$(id); if (el) el.textContent = T[key] || ''; };
_t('ml-dialog-title', 'help_title');
_t('ml-warn-title', 'warn_title');
_t('ml-plist-title', 'players_title');
_t('ml-pets-title', 'pets_title');
_t('ml-slots-pop-title', 'slots_title');
_t('ml-snipe-title', 'sniper_title');
_t('ml-snipe-reset', 'settings_reset');
_t('ml-snipe-close', 'close');
const stTitle = _$('ml-settings-title');
if (stTitle) { const ver = _$('ml-settings-ver'); stTitle.textContent = T.settings_title || ''; if (ver) stTitle.appendChild(ver); }
_t('ml-accounts-title', 'tab_accounts');
_t('ml-accounts-close', 'close');
_t('ml-settings-reset', 'settings_reset');
_t('ml-settings-close', 'close');
const tabKeyMap = { gameplay:'tab_gameplay', economy:'tab_economy', audio:'tab_audio', hud:'tab_hud', keys:'tab_keys', advanced:'tab_advanced' };
_sr.querySelectorAll('.ml-tab[data-tab]').forEach(el => { const k = tabKeyMap[el.getAttribute('data-tab')]; if (k && T[k]) el.textContent = T[k]; });
_sr.querySelectorAll('[data-ml-sh]').forEach(el => { const k = el.getAttribute('data-ml-sh'); if (T[k]) el.textContent = T[k]; });
_sr.querySelectorAll('[data-ml-label]').forEach(el => { const k = el.getAttribute('data-ml-label'); if (T[k]) el.textContent = T[k]; });
_sr.querySelectorAll('[data-ml-sniper]').forEach(el => { const k = el.getAttribute('data-ml-sniper'); if (T[k]) el.textContent = T[k]; });
const mSpr = _$('ml-msprint'); if (mSpr) mSpr.textContent = T.mobile_sprint;
const mUp = _$('ml-mfly-up'); if (mUp) mUp.textContent = T.mobile_up;
const mDn = _$('ml-mfly-down'); if (mDn) mDn.textContent = T.mobile_down;
const ptMap = { 'ml-pt-name': 'pt_name', 'ml-pt-mut': 'pt_mut', 'ml-pt-rar': 'pt_rar', 'ml-pt-owner': 'pt_owner', 'ml-pt-worth': 'pt_worth', 'ml-pt-income': 'pt_income', 'ml-pt-dist': 'pt_dist' };
for (const [id, key] of Object.entries(ptMap)) _t(id, key);
const plEmpty = _$('ml-plist-empty'); if (plEmpty) plEmpty.textContent = T.players_empty;
const petEmpty = _$('ml-pets-empty'); if (petEmpty) petEmpty.textContent = T.pets_empty;
const petSearch = _$('ml-pets-search'); if (petSearch) petSearch.placeholder = T.pets_search_placeholder || '';
const petHint = _sr.querySelector('.ml-pets-filter .ml-snipe-hint-tip'); if (petHint) petHint.textContent = T.pets_hint;
const petsClose = _$('ml-pets-close'); if (petsClose) petsClose.textContent = T.close;
const petsAutoLabel = _$('ml-pets-auto-label'); if (petsAutoLabel) petsAutoLabel.textContent = T.auto;
const snToggle = _$('ml-snipe-toggle');
if (snToggle) snToggle.textContent = _sc().active ? T.sniper_stop : T.sniper_start;
const snHK = _$('ml-snipe-hotkey-hint');
if (snHK) { const _kcl = c => typeof _keyLabels === 'object' && _keyLabels[c] ? _keyLabels[c] : c === 'Space' ? 'Space' : c.startsWith('Key') ? c.slice(3) : c.startsWith('Digit') ? c.slice(5) : c; snHK.textContent = T.sniper_hotkey_label + ' ' + _kcl(KEYBINDS.snipeToggle) + ' \u2022 ' + T.sniper_panel_label + ' ' + _kcl(KEYBINDS.snipe); }
const snSearch = _$('ml-snipe-search'); if (snSearch) snSearch.placeholder = T.sniper_placeholder || '';
const snHint = _sr.querySelector('.ml-snipe-body .ml-snipe-search-row .ml-snipe-hint-tip'); if (snHint) snHint.textContent = T.sniper_hint || '';
const snOptsToggle = _$('ml-snipe-opts-toggle'); if (snOptsToggle) snOptsToggle.textContent = T.sniper_options || 'Options';
const _setSniperRow = (rowId, titleKey, descKey) => {
const row = _$(rowId);
if (!row) return;
const lb = row.querySelector('.ml-snipe-opt-label');
if (lb) lb.textContent = T[titleKey] || '';
const tip = row.querySelector('.ml-snipe-hint-tip');
if (tip) tip.textContent = T[descKey] || '';
};
_setSniperRow('ml-snipe-place-row', 'sniper_auto_place', 'sniper_place_desc');
_setSniperRow('ml-snipe-drop-row', 'sniper_auto_drop', 'sniper_drop_desc');
_setSniperRow('ml-snipe-hop-row', 'sniper_auto_hunt', 'sniper_hunt_desc');
_setSniperRow('ml-snipe-walkhome-row', 'snipe_walk_home', 'snipe_walk_home_desc');
_setSniperRow('ml-snipe-sell-row', 'sniper_auto_sell', 'sniper_sell_desc');
_setSniperRow('ml-snipe-afksell-row', 'sniper_afk_sell', 'sniper_afk_sell_desc');
const snLockRow = _$('ml-snipe-lockdown-row'); if (snLockRow) { const lb = snLockRow.querySelector('.ml-snipe-opt-label'); if (lb) lb.textContent = T.sniper_lockdown || ''; const lTip = snLockRow.querySelector('.ml-snipe-hint-tip'); if (lTip) lTip.textContent = T.sniper_lockdown_hint || ''; }
const joinGraceLabel = _$('ml-joingrace-label'); if (joinGraceLabel) { const modeText = (T.sniper_steal_mode || '').trim(); joinGraceLabel.textContent = ((T.sniper_join_grace || '') + (modeText ? ' ' + modeText : '')).trim(); }
const dbgCopyBtn = _$("ml-debug-copy"); if (dbgCopyBtn) dbgCopyBtn.textContent = T.s_copy_json || '';
const ctSel = _$('ml-s-carrytune');
if (ctSel) {
const tuneKeyMap = {
default: 'carry_tune_default',
silent: 'carry_tune_silent',
ambient: 'carry_tune_ambient',
blues: 'carry_tune_blues',
chiptune: 'carry_tune_chiptune',
classical: 'carry_tune_classical',
electronic: 'carry_tune_electronic',
epic: 'carry_tune_epic',
folk: 'carry_tune_folk',
funk: 'carry_tune_funk',
jazz: 'carry_tune_jazz',
lofi: 'carry_tune_lofi',
metal: 'carry_tune_metal',
pop: 'carry_tune_pop',
punk: 'carry_tune_punk',
reggae: 'carry_tune_reggae',
rock: 'carry_tune_rock',
};
ctSel.querySelectorAll('option').forEach(opt => {
const key = tuneKeyMap[opt.value];
if (key && T[key]) opt.textContent = T[key];
});
}
const pAutoIn = _$('ml-pets-auto');
if (pAutoIn) { const lbl = pAutoIn.parentNode; if (lbl) { const cb = pAutoIn; lbl.textContent = ''; lbl.appendChild(cb); lbl.append(' ' + (T.auto || '')); } }
const pSearch = _$('ml-pets-search'); if (pSearch) pSearch.placeholder = T.pets_search_placeholder || '';
const pHint = _sr.querySelector('.ml-pets-filter .ml-snipe-hint-tip'); if (pHint) pHint.textContent = T.pets_hint || '';
const slotsPE = _$('ml-slots-pop'); if (slotsPE) slotsPE.dispatchEvent(new Event('ml-rebuild'));
const acctBody = _$('ml-accounts-body'); if (acctBody) acctBody.dispatchEvent(new Event('ml-rebuild'));
_sr.querySelectorAll('.ml-feedback').forEach(el => {
const gf = el.querySelector('.ml-feedback-gf');
if (gf) gf.textContent = T.footer_gf || 'Greasy Fork';
});
if (_rebuildKeybinds) _rebuildKeybinds();
if (_nativeHud) {
const hbMap = {fly:'hb_fly',invis:'hb_inv',lock:'hb_lck',cfg:'hb_cfg',help:'hb_help',snipeBtn:'hb_snp',petsBtn:'hb_pet',tp:'hb_cud'};
for (const [k, tKey] of Object.entries(hbMap)) {
const lbl = _nativeHud[k]?._native?.lbl;
if (lbl?.element) { const t = T[tKey] || ''; lbl[_SYM_LTXT] = t; if (_nativeHud._renderLblTex) { const oldTex = lbl.element.texture; lbl.element.texture = _nativeHud._renderLblTex(t); if (oldTex) oldTex.destroy(); } }
}
}
const dlgBody = _$('ml-dialog-body'); if (dlgBody) dlgBody.innerHTML = _buildDesc(T);
const warnBody = _$('ml-warn-body'); if (warnBody) warnBody.innerHTML = _buildWarnBody(T);
const warnClose = _$('ml-warn-close'); if (warnClose) warnClose.textContent = T.warn_ok || '';
const warnLangLabel = _$('ml-warn-lang-label'); if (warnLangLabel) warnLangLabel.textContent = T.sh_language || '';
const warnLangSel = _$('ml-warn-lang'); if (warnLangSel) {
const curVal = warnLangSel.value;
warnLangSel.innerHTML = Object.keys(_i18n).map(c => '<option value="' + c + '"' + (c === _currentLang ? ' selected' : '') + '>' + (_i18n[c]._name || c) + ' (' + _enName(c) + ')</option>').join('');
if (curVal && _i18n[_currentLang]) warnLangSel.value = _currentLang;
}
const langSel = _$('ml-lang-sel'); if (langSel) {
langSel.innerHTML = Object.keys(_i18n).map(c => '<option value="' + c + '"' + (c === _currentLang ? ' selected' : '') + '>' + (_i18n[c]._name || c) + ' (' + _enName(c) + ')</option>').join('');
if (_i18n[_currentLang]) langSel.value = _currentLang;
}
const _intlScripts = new Set(['ar','fa','ur','ka','am','hi','mr','ne','bn','gu','pa','ta','te','kn','ml','si','th','my','km','ko','ja','zh-CN','zh-TW']);
_sr.querySelectorAll('.ml-dialog,.ml-settings,.ml-plist,.ml-pets,.ml-slots-pop,.ml-snipe').forEach(el => {
if (_intlScripts.has(_currentLang)) el.classList.add('ml-intl');
else el.classList.remove('ml-intl');
});
_log('setup', 'UI language applied: ' + _currentLang);
}
setTimeout(() => {
_mk('es','Español',{
close:'✕',
refresh:'↻',
go:'Ir',
set:'Fijar',
auto:'auto',
empty:'vacío',
help_title:'Ayuda',
players_title:'Jugadores',
players_empty:'No se encontraron otros jugadores',
settings_title:'Ajustes',
settings_reset:'Restablecer',
tab_gameplay:'Juego',
tab_economy:'Economía',
tab_audio:'Audio',
tab_advanced:'Avanzado',
tab_hud:'HUD',
tab_keys:'Llaves',
tab_accounts:'Cuentas',
acct_current:'Actual',
acct_new:'Nueva',
acct_import:'Importar',
acct_switch:'Cambiar',
acct_reload:'Recargar',
acct_delete:'Eliminar',
acct_cancel:'Cancelar',
acct_empty:'Vacío',
acct_token_ph:'Token',
acct_copy:'Copiar',
acct_export:'Exportar',
acct_rename:'Renombrar',
acct_save:'Guardar',
acct_name_len:'El nombre debe tener 4-12 caracteres',
acct_name_fail:'Error al renombrar',
acct_invalid:'Inválido',
acct_ready:'Cuenta lista. Cierra Meeland, cambia tu IP y recarga.',
acct_ip_note:'Usa siempre una VPN y cambia tu IP al cambiar de cuenta.',
acct_howto:'1. Haz clic en Copiar para copiar el enlace de esta cuenta.\n2. En otro navegador o dispositivo — o con un amigo — abre MES.\n3. Haz clic en Importar y pega el enlace.',
sh_movement:'Movimiento',
sh_defense:'Defensa',
sh_camera:'Cámara',
sh_overlays:'Superposiciones',
sh_behaviour:'Comportamiento',
sh_buttons:'Botones',
sh_language:'Idioma',
sh_chat:'Charlar',
sh_waves:'Waves',
sh_steal_a_pet:'Robar una mascota',
sh_tower:'Tower',
sh_misc_multi:'Varios (varios modos)',
s_noclip:'Atravesar paredes',
s_fly:'Volar',
s_fly_emotes:'Gestos de volar',
s_base_speed:'Velocidad básica',
s_jump_mult:'Altura del salto',
s_grav_mult:'Gravedad',
s_walk_up_walls:'Caminar por las paredes',
s_carry_normalize:'Velocidad de transporte + salto',
s_invincibility:'Invencibilidad',
s_anti_kb:'Anti-retroceso',
s_invisible:'invisible',
s_xray_infection:'Rayos X (Misterio de Asesinato)',
s_ghost_mode:'Modo fantasma',
s_flee_intruder:'Huir ante un intruso',
s_first_person:'Vista en primera persona',
s_fov_first_person:'FOV (Primera persona)',
s_fov_third_person:'FOV (3ª pers.)',
s_fov_vertical_mult:'Multiplicador vertical FOV',
s_auto_lock:'Base de bloqueo automático',
s_auto_fountain:'Auto-fuente (1.5×)',
s_daily_coins:'Monedas diarias',
s_stars:'Estrellas',
s_diamonds_tower:'Diamantes (Torre)',
s_tower_loop:'Bucle de torre',
s_auto_roll_x25:'Auto Roll x25 Suerte',
s_auto_craft:'Crafteo automático',
s_auto_vip_sword:'Comprar VIP automáticamente',
s_auto_vip_waves:'Comprar VIP automáticamente (Olas)',
s_direct_kill:'Spam de muerte directo',
s_direct_kill_rate:'Velocidad de muerte',
s_auto_buy_upgrades:'Actualizaciones de compra automática',
s_boost_coins:'Actualización automática: monedas',
s_boost_diamonds:'Actualización automática: diamantes',
s_boost_luck:'Actualización automática: suerte',
s_auto_unlock_areas:'Áreas de desbloqueo automático',
s_auto_rebirth:'Renacimiento automático',
s_auto_join_tp:'Teletransportarse a la zona más alta',
s_hide_kill_rewards:'Ocultar recompensas por matar',
s_hide_roll_anim:'Ocultar animación de rollo',
rng_title:'Trucos de RNG para mascotas',
rng_sec_rolling:'Tirada',
rng_sec_crafting:'Elaboración',
rng_sec_combat:'Combatir',
rng_sec_upgrades:'Actualizaciones',
rng_sec_areas:'Áreas',
rng_actions:'Acciones',
log_craft:'Artesanía',
log_success:'ÉXITO',
log_fail:'FALLAR',
log_unlocking_area:'Área de desbloqueo',
log_area_unlocked:'Área desbloqueada',
log_equipped:'Equipado',
log_bought_upgrade:'Actualización comprada',
log_teleported_to:'Teletransportado a',
log_rebirthing:'Renacimiento',
h_rng:'rng',
h_accts:'Cuentas',
s_auto_collect:'Auto-recoger ganancias',
s_collect_interval:'Intervalo de recogida',
s_chat_fade:'Tiempo de desvanecimiento del chat',
s_name_colors:'Colores de usuario',
s_chat_enhance:'Mejoras del chat',
mes_hint:'Consejo: incluye "mes" en tu nombre de usuario para un efecto arcoíris animado!',
s_carry_tune:'Llevar melodía (robar)',
s_pet_pickup_radius:'Radio de Robo de Mascotas',
s_carry_vol:'Volumen de transporte',
carry_tune_default:'Por defecto',
carry_tune_silent:'Silencioso',
carry_tune_ambient:'Ambiente',
carry_tune_blues:'Blues',
carry_tune_chiptune:'chiptune',
carry_tune_classical:'Clásico',
carry_tune_electronic:'Electrónico',
carry_tune_epic:'Épica',
carry_tune_folk:'Gente',
carry_tune_funk:'Canguelo',
carry_tune_jazz:'jazz',
carry_tune_lofi:'baja fidelidad',
carry_tune_metal:'Metal',
carry_tune_pop:'Estallido',
carry_tune_punk:'punk',
carry_tune_reggae:'reggae',
carry_tune_rock:'Roca',
s_cont_cuddle:'Abrazo continuo',
s_protips:'Consejos profesionales',
s_hideprotips:'Ocultar mis consejos Pro',
s_show_exp_modes:'Mostrar modos experimentales',
s_showcoords:'Mostrar coordenadas',
s_showfps:'Mostrar FPS',
s_showtargetinfo:'Mostrar información del objetivo',
s_showobj:'Mostrar entidad/recuento de malla',
s_copy_dbg:'Copiar registros de depuración',
s_copy_json:'Copiar JSON',
s_clear_dbg:'Limpiar',
h_fly:'Volar',
h_speed:'Hack de velocidad',
h_waypoints:'Puntos de ruta',
h_autolock:'Bloqueo automático',
h_invisible:'invisible',
h_cuddle:'Abrazo',
h_pets:'Mascotas',
h_snipe:'Agachadiza',
h_help:'Ayuda',
h_settings:'Ajustes',
h_prv:'Sala Privada',
h_tc:'Completar torre',
h_tcl:'Bucle de torre',
kb_fly:'Volar (alternar/arriba)',
kb_fly_down:'volar hacia abajo',
kb_set_home:'Fijar hogar',
kb_home:'Hogar',
kb_back:'Atrás',
kb_cuddle:'Panel de abrazo',
kb_settings:'Ajustes',
kb_pets:'Navegador de mascotas',
kb_slots:'Ranuras de puntos de ruta',
kb_snipe:'Panel de francotirador',
kb_snipe_toggle:'Francotirador activado/desactivado',
kb_attack:'Ataque',
kb_help:'Ayuda / Descripción',
kb_tower:'Completar torre',
kb_tower_loop:'Bucle de torre',
kb_invisible:'Invisible',
kb_first_person:'Primera persona',
kb_autolock:'Auto-bloquear base',
kb_prv:'Habitación Privada',
kb_rng:'RNG',
kb_accts:'Cuentas',
pets_title:'Mascotas',
pets_search_placeholder:'p.ej. gatito salvaje, dorado O diamante, (dorado O esmeralda) salvaje',
pets_hint:'Las palabras están unidas con Y. Utilice OR para alternativas, corchetes para agrupar. * o % como comodín. Pon - delante de una palabra para excluirla.',
pets_empty:'No se encontraron mascotas en esta habitación.',
pt_name:'Nombre',
pt_mut:'Mutación',
pt_rar:'Rareza',
pt_owner:'Dueño',
pt_worth:'Valor',
pt_income:'Ingreso/s',
pt_dist:'dist.',
slots_title:'Ranuras de puntos de ruta',
sniper_title:'Francotirador de mascotas',
sniper_tbl_pet:'Mascota',
sniper_tbl_owner:'Dueño',
sniper_tbl_lock:'Cerrar',
sniper_placeholder:'ej. halo, dorado OR diamante, dragón esmeralda',
sniper_hint:'Las palabras se combinan con Y. Usa OR para alternativas, paréntesis para agrupar. * o % como comodín. Pon - delante de una palabra para excluirla.',
sniper_room_col:'Habitación',
sniper_scans_col:'Escaneos',
sniper_top_pet_col:'mascota superior',
sniper_top_worth_col:'valor máximo',
sniper_top_owner_col:'Propietario superior',
sniper_age_col:'Edad',
sniper_join_btn:'Unirse',
sniper_full:'Lleno',
sniper_join_failed:'Sala de destino llena',
sniper_scanning_rooms:'Buscando otras habitaciones…',
sniper_scan_off:'Búsqueda automática',
sniper_scan_next:'Siguiente escaneo en',
sniper_scan_idle:'Inactivo: esperando para escanear',
sniper_auto_place:'Auto-colocar en base',
sniper_place_desc:'(coloca la mascota robada en tu ranura de base)',
sniper_auto_drop:'Auto-soltar mascotas no coincidentes en Ondas',
sniper_drop_desc:'(suelta mascotas salvajes que no coinciden con el filtro para renovar el grupo de aparición)',
sniper_auto_hunt:'Caza automática',
sniper_hunt_desc:'(explora otras salas, salta a la mejor coincidencia)',
sniper_auto_sell:'Auto-venta en Robar',
sniper_sell_desc:'(vender más bajo cuando la base esté llena)',
sniper_lockdown:'Bloqueo ≤',
sniper_lockdown_hint:'Robar objetivos en bases con ≤ este tiempo restante. 0 = solo desbloqueadas.',
sniper_join_grace:'Únete a la gracia',
sniper_start:'Iniciar francotirador',
sniper_stop:'Detener francotirador',
sniper_idle:'Inactivo',
sniper_no_filter:'Sin conjunto de filtros',
sniper_waiting:'Esperando juego...',
sniper_hold_pause:'Sosteniendo una mascota — pausado',
sniper_stolen_pause:'tiene nuestra mascota - pausada',
sniper_cooldown:'Enfriarse',
sniper_hopping:'Cambiando servidor...',
sniper_na:'Francotirador N/A en el lobby: únete a un juego primero',
sniper_wait_lock:'Esperando datos de bloqueo...',
sniper_locked:'Base bloqueada: saltando...',
sniper_full_eggs:'Base llena: solo huevos, no se pueden vender',
sniper_stealing:'Robo',
sniper_dropped:'Abandonó',
sniper_holding:'Tenencia',
sniper_place:'! Colocar en la base.',
sniper_steal_mode:'[Robar]',
sniper_theft_nohop:'Mascota siendo robada por',
sniper_nohop_suffix:'— sin salto',
sniper_sniping:'Francotiradores:',
sniper_options:'Opciones',
sniper_drop_fail_status:'¡La caída falló!',
sniper_hotkey_label:'Tecla rápida:',
sniper_panel_label:'panel:',
sniper_grab_fail:'El agarre falló. Reintentando...',
sniper_our_pet_stolen:'Nuestra mascota robada: tiempo de reutilización de 8 s.',
sniper_hopping_short:'Saltando...',
sniper_base_full:'Base llena',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'PARPADEAR',
pet_teleport_title:'Teletransportarse',
pet_pickup_title:'Levantar',
owner_yours:'Tuyo',
owner_wild:'Salvaje',
footer_gf:'Tenedor Grasiento',
copy_ok:'Copiado',
copy_failed:'Copia fallida',
s_invis_on_fly:'Invisibilidad al volar',
snipe_walk_home:'Caminar a casa tras robar',
snipe_walk_home_desc:'Volver a tu base andando',
sniper_afk_sell:'Vender AFK mascotas no coincidentes',
sniper_afk_sell_desc:'(cuando inactivo 5s, vender mascotas que no coinciden con el filtro por valor — solo oleadas)',
hb_fly:'VOL',
hb_lck:'lck',
hb_inv:'inv',
hb_cud:'ABR',
hb_pet:'MAS',
hb_snp:'SNP',
hb_cfg:'AJU',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'CTA',
ban_title:'Conexión bloqueada',
ban_sub:'Tu dirección IP ha sido restringida por Meeland',
ban_body:'No te preocupes — ¡es fácil de solucionar! Una VPN gratuita te dará una nueva IP para que puedas volver a jugar.',
ban_pick:'Solución rápida: elija cualquiera:',
ban_warp:'Configuración gratuita, ilimitada y con un solo clic.',
ban_warp_store:'también en App Store y Play Store como "1.1.1.1"',
ban_proton:'sin límite de datos, 5 países',
ban_steps:'Instalar → conectar → actualizar esta página. ¡Eso es todo!',
ban_ok:'Entiendo',
warn_title:'Usa siempre una VPN',
warn_body:'Juega siempre con una <b>VPN</b> activada.',
warn_ok:'Entendido, lo entiendo',
loading:'Cargando',
tcl_loading:'Ejecutando el bucle de torre completo. Pulsa {key} para detener.',
hop_search:'Buscando partida',
hop_match:'Encontrado {name} — entrando',
hop_flee:'Huyendo de intruso',
hop_reconnect:'Reconectando',
hop_reload:'Recargando',
hop_fall:'Recuperándose de una caída',
hop_join:'Entrando en la sala',
lock_off:'APAG',
lock_unlocked:'DESBLOQUEADO',
desc_intro:'MES te ofrece wallhack, agricultura automática, colección de mascotas raras, aumento de velocidad, vuelo, invisibilidad y más en Meeland',
desc_free:'100% gratis, siempre. ¿Tienes comentarios? Deja una ⭐ reseña positiva — eso es lo que mantiene las actualizaciones.',
desc_h_movement:'Movimiento',
desc_h_combat:'Combatir',
desc_h_tuning:'Ajustes',
desc_h_pets:'Mascotas y robo',
desc_h_economy:'Economía',
desc_h_custom:'Personalización',
desc_h_extras:'extras',
desc_fly:'Volar',
desc_fly_d:'Space para subir, F para bajar. Velocidad ajustable.',
desc_speed:'Parpadear',
desc_speed_d:'Cambie para parpadear hacia donde esté mirando.',
desc_noclip:'Sin clip',
desc_noclip_d:'Atraviesa paredes.',
desc_walls:'Escalar Paredes',
desc_walls_d:'Trepa cualquier superficie.',
desc_waypts:'Puntos de ruta',
desc_waypts_d:'Guarda 10 posiciones. Teletransporte con una sola tecla. <kbd>Z</kbd> para retroceder.',
desc_invis:'invisible',
desc_invis_d:'Presiona Bloq Mayús para desaparecer por completo.',
desc_fpv:'Vista en primera persona',
desc_fpv_d:'Presiona <kbd>.</kbd> para alternar la cámara en primera persona.',
desc_anti_invis:'Anti-Invisibilidad',
desc_anti_invis_d:'Vea a los jugadores invisibles como fantasmas.',
desc_xray:'Visión de Rayos X',
desc_xray_d:'Ve jugadores a través de paredes en Misterio de Asesinato. Rojo = asesino, verde = civil.',
desc_nodeathh:'Invencible',
desc_nodeath_d:'Inmune a todo el daño.',
desc_antikb:'Anti-Retroceso',
desc_antikb_d:'No se puede presionar.',
desc_attack:'Ataque instantáneo',
desc_attack_d:'<kbd>G</kbd> te teletransporta al jugador más cercano y golpea.',
desc_jumpgrav:'Salto y Gravedad',
desc_jumpgrav_d:'Multiplicadores ajustables en Ajustes.',
desc_fov:'Control de FOV',
desc_fov_d:'Controles de FOV en primera y tercera persona.',
desc_autoinvis:'Auto-Invis al Volar',
desc_autoinvis_d:'Vuélvete invisible automáticamente al volar.',
desc_sniper:'francotirador mascota',
desc_sniper_d:'Robo automático de mascotas filtradas con manos libres. Ambos modos de juego.',
desc_prv:'Habitación Privada',
desc_prv_d:'<kbd>PgDn</kbd> crea una sala privada en el modo actual y se une automáticamente.',
desc_petbrow:'Explorador de mascotas',
desc_petbrow_d:'<kbd>K</kbd> muestra todas las mascotas. Clasificar, filtrar, captar.',
desc_cuddle:'Panel de abrazo',
desc_cuddle_d:'<kbd>J</kbd> enumera los jugadores por distancia. Haga clic para seguir.',
desc_return:'Auto Retorno',
desc_return_d:'Se teletransporta a casa después del robo.',
desc_autolock:'Bloqueo automático',
desc_autolock_d:'La base permanece bloqueada siempre.',
desc_fountain:'Auto-fuente',
desc_fountain_d:'Beneficio permanente de 1,5×. Renovación automática.',
desc_money:'Dinero gratis + Estrellas + Diamantes',
desc_money_d:'Sin anuncios necesarios.',
desc_collect:'Auto-Recolectar',
desc_collect_d:'Los ingresos por mascotas se reclaman cada 30 chelines.',
desc_music:'Llevar melodía',
desc_music_d:'Música mientras robas. 15 géneros.',
desc_chatfade:'Desvanecimiento de Chat',
desc_chatfade_d:'Controlar la visibilidad de los mensajes. 5 a 120 s.',
desc_emotes:'Gestos de volar',
desc_emotes_d:'Gestos aleatorios mientras vuelas.',
desc_displays:'Superposiciones',
desc_displays_d:'Coordenadas, FPS e info de objetivo.',
desc_config:'Ajustes',
desc_config_d:'<kbd>M</kbd> para alternar funciones, volver a vincular teclas y ajustar velocidades.',
desc_langs:'60 Idiomas',
desc_langs_d:'Traducción completa de la interfaz de usuario.',
desc_tower:'Torre completa',
desc_tower_d:'<kbd>Y</kbd> para completar la Torre Obby al instante.',
desc_cats:'Pantallas de carga con gatos',
desc_cats_d:'Los gatos lindos reemplazan la carga.',
desc_h_install:'Instalar',
desc_desktop:'Escritorio (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Obtenga <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> o <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Haz clic en Instalar arriba',
desc_inst_open:'Abre cualquier juego de Meeland — simplemente funciona',
desc_mobile:'Móvil (Android)',
desc_mob_ff:'Instale <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox para Android</a> desde Play Store',
desc_mob_addon:'Abra Firefox → Menú → Complementos → instale <strong>Tampermonkey</strong>',
desc_mob_visit:'Visita esta página en Firefox y toca Instalar',
desc_mob_play:'Juega Meeland: los botones HUD fáciles de tocar aparecen automáticamente',
desc_ios:'iOS: Apple bloquea las extensiones de navegador en todos los navegadores iOS (incluido Firefox). Utilice un navegador de escritorio o Android.',
desc_h_privacy:'Privacidad',
desc_privacy:'Solo del lado del cliente: ningún dato sale de su navegador'
});
_mk('fr','Français',{
close:'✕',
refresh:'↻',
go:'Aller',
set:'Définir',
auto:'auto',
empty:'vide',
help_title:'Aide',
players_title:'Joueurs',
players_empty:'Aucun autre joueur trouvé',
settings_title:'Paramètres',
settings_reset:'Réinitialiser',
tab_gameplay:'Jeu',
tab_economy:'Économie',
tab_audio:'Audio',
tab_advanced:'Avancé',
tab_hud:'ATH',
tab_keys:'Clés',
tab_accounts:'Comptes',
acct_current:'Actuel',
acct_new:'Nouveau',
acct_import:'Importer',
acct_switch:'Changer',
acct_reload:'Recharger',
acct_delete:'Supprimer',
acct_cancel:'Annuler',
acct_empty:'Vide',
acct_token_ph:'Jeton',
acct_copy:'Copier',
acct_export:'Exporter',
acct_rename:'Renommer',
acct_save:'Enregistrer',
acct_name_len:'Le nom doit contenir 4 à 12 caractères',
acct_name_fail:'Échec du renommage',
acct_invalid:'Invalide',
acct_ready:'Compte prêt. Fermez Meeland, changez votre IP, puis rechargez.',
acct_ip_note:'Utilisez toujours une VPN et changez votre IP lors du changement de compte.',
acct_howto:'1. Cliquez sur Copier pour copier le lien de ce compte.\n2. Sur un autre navigateur ou appareil — ou avec un ami — ouvrez MES.\n3. Cliquez sur Importer et collez le lien.',
sh_movement:'Déplacement',
sh_defense:'Défense',
sh_camera:'Caméra',
sh_overlays:'Superpositions',
sh_behaviour:'Comportement',
sh_buttons:'Boutons',
sh_language:'Langue',
sh_chat:'Chat',
sh_waves:'Waves',
sh_steal_a_pet:'Voler un animal',
sh_tower:'Tower',
sh_misc_multi:'Divers (multi-mode)',
s_noclip:'Passe-muraille',
s_fly:'Voler',
s_fly_emotes:'Voler des émoticônes',
s_base_speed:'Vitesse de base',
s_jump_mult:'Hauteur de saut',
s_grav_mult:'Pesanteur',
s_walk_up_walls:'Grimper les murs',
s_carry_normalize:'Vitesse de transport + saut',
s_invincibility:'Invincibilité',
s_anti_kb:'Anti-recul',
s_invisible:'invisible',
s_xray_infection:'Rayons X (Mystère de Meurtre)',
s_ghost_mode:'Mode fantôme',
s_flee_intruder:'Fuir si intrus',
s_first_person:'Vue à la première personne',
s_fov_first_person:'FOV (Première personne)',
s_fov_third_person:'FOV (3ème pers.)',
s_fov_vertical_mult:'Multiplicateur vertical FOV',
s_auto_lock:'Base à verrouillage automatique',
s_auto_fountain:'Auto-fontaine (1.5×)',
s_daily_coins:'Pièces quotidiennes',
s_stars:'Étoiles',
s_diamonds_tower:'Diamants (Tour)',
s_tower_loop:'Boucle de tour',
s_auto_roll_x25:'Roll auto x25 chance',
s_auto_craft:'Fabrication auto',
s_auto_vip_sword:'Acheter VIP auto',
s_auto_vip_waves:'Acheter VIP auto (Vagues)',
s_direct_kill:'Spam de mort direct',
s_direct_kill_rate:'Taux de mort',
s_auto_buy_upgrades:'Mises à niveau d\'achat automatique',
s_boost_coins:'Mise à niveau automatique : pièces',
s_boost_diamonds:'Mise à niveau automatique : Diamants',
s_boost_luck:'Mise à niveau automatique : Chance',
s_auto_unlock_areas:'Zones de déverrouillage automatique',
s_auto_rebirth:'Renaissance automatique',
s_auto_join_tp:'Téléportation vers la zone la plus élevée',
s_hide_kill_rewards:'Masquer les récompenses de mise à mort',
s_hide_roll_anim:'Masquer l\'animation de rouleau',
rng_title:'Astuces RNG pour animaux de compagnie',
rng_sec_rolling:'Lancer',
rng_sec_crafting:'Artisanat',
rng_sec_combat:'combat',
rng_sec_upgrades:'Mises à niveau',
rng_sec_areas:'Domaines',
rng_actions:'Actions',
log_craft:'Artisanat',
log_success:'SUCCÈS',
log_fail:'ÉCHOUER',
log_unlocking_area:'Zone de déverrouillage',
log_area_unlocked:'Zone débloquée',
log_equipped:'Équipé',
log_bought_upgrade:'Mise à niveau achetée',
log_teleported_to:'Téléporté à',
log_rebirthing:'Renaissance',
h_rng:'sonnerie',
h_accts:'Comptes',
s_auto_collect:'Auto-collecter les gains',
s_collect_interval:'Intervalle de collecte',
s_chat_fade:'Temps de fondu du chat',
s_name_colors:'Couleurs des utilisateurs',
s_chat_enhance:'Améliorations du chat',
mes_hint:'Astuce : incluez "mes" dans votre nom d\'utilisateur pour un effet arc-en-ciel animé !',
s_carry_tune:'Carry Tune (voler)',
s_pet_pickup_radius:'Rayon de Vol d\'Animal',
s_carry_vol:'Volume de transport',
carry_tune_default:'Par défaut',
carry_tune_silent:'Silencieux',
carry_tune_ambient:'Ambiant',
carry_tune_blues:'Bleus',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Classique',
carry_tune_electronic:'Électronique',
carry_tune_epic:'Épique',
carry_tune_folk:'Populaire',
carry_tune_funk:'Trouille',
carry_tune_jazz:'jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Métal',
carry_tune_pop:'Populaire',
carry_tune_punk:'punk',
carry_tune_reggae:'reggae',
carry_tune_rock:'Rocher',
s_cont_cuddle:'Câlin continu',
s_protips:'Conseils de pro',
s_hideprotips:'Masquer mes astuces Pro',
s_show_exp_modes:'Afficher les modes expérimentaux',
s_showcoords:'Afficher les coordonnées',
s_showfps:'Afficher les FPS',
s_showtargetinfo:'Afficher les infos de la cible',
s_showobj:'Afficher le nombre d\'entités/maillages',
s_copy_dbg:'Copier les journaux de débogage',
s_copy_json:'Copier JSON',
s_clear_dbg:'Effacer',
h_fly:'Voler',
h_speed:'Clignoter',
h_waypoints:'Points de cheminement',
h_autolock:'Verrouillage automatique',
h_invisible:'invisible',
h_cuddle:'Câlin',
h_pets:'Animaux de compagnie',
h_snipe:'Bécassine',
h_help:'Aide',
h_settings:'Paramètres',
h_prv:'Salle Privée',
h_tc:'Tour terminée',
h_tcl:'Boucle de tour',
kb_fly:'Voler (basculer/monter)',
kb_fly_down:'Voler vers le bas',
kb_set_home:'Définir la maison',
kb_home:'Maison',
kb_back:'Dos',
kb_cuddle:'Panneau câlin',
kb_settings:'Paramètres',
kb_pets:'Navigateur d\'animaux de compagnie',
kb_slots:'Emplacements de points de cheminement',
kb_snipe:'Panneau de tireur d\'élite',
kb_snipe_toggle:'Tireur d\'élite activé/désactivé',
kb_attack:'Attaque',
kb_help:'Aide / Description',
kb_tower:'Tour terminée',
kb_tower_loop:'Boucle de tour',
kb_invisible:'Invisible',
kb_first_person:'Première personne',
kb_autolock:'Base auto-verrouillage',
kb_prv:'Salle Privée',
kb_rng:'RNG',
kb_accts:'Comptes',
pets_title:'Animaux de compagnie',
pets_search_placeholder:'par ex. minou sauvage, doré OU diamant, (doré OU émeraude) sauvage',
pets_hint:'Les mots sont ET ensemble. Utilisez OU pour les alternatives, parenthèses pour regrouper. * ou % comme caractère générique. Mettez - devant un mot pour l\'exclure.',
pets_empty:'Aucun animal trouvé dans cette chambre',
pt_name:'Nom',
pt_mut:'mutation',
pt_rar:'Rareté',
pt_owner:'Propriétaire',
pt_worth:'Valeur',
pt_income:'Revenu(s)',
pt_dist:'Dist.',
slots_title:'Emplacements de points de cheminement',
sniper_title:'Tireur d\'élite pour animaux de compagnie',
sniper_tbl_pet:'Animal de compagnie',
sniper_tbl_owner:'Propriétaire',
sniper_tbl_lock:'Verrouillage',
sniper_placeholder:'par ex. halo, or OU diamant, dragon émeraude',
sniper_hint:'Les mots sont ET. Utilisez OU pour les alternatives, parenthèses pour regrouper. * ou % comme caractère générique. Mettez - devant un mot pour l\'exclure.',
sniper_room_col:'Salle',
sniper_scans_col:'Analyses',
sniper_top_pet_col:'Meilleur animal de compagnie',
sniper_top_worth_col:'Meilleure valeur',
sniper_top_owner_col:'Propriétaire principal',
sniper_age_col:'Âge',
sniper_join_btn:'Rejoindre',
sniper_full:'Plein',
sniper_join_failed:'Salle cible pleine',
sniper_scanning_rooms:'Recherche d\'autres salles…',
sniper_scan_off:'Chasse automatique',
sniper_scan_next:'Analyse suivante',
sniper_scan_idle:'Inactif : en attente de numérisation',
sniper_auto_place:'Placement auto sur la base',
sniper_place_desc:'(place l\'animal volé dans votre emplacement)',
sniper_auto_drop:'Déposer automatiquement les animaux non correspondants dans les vagues',
sniper_drop_desc:'(dépose les animaux sauvages qui ne correspondent pas au filtre pour renouveler le pool d\'apparition)',
sniper_auto_hunt:'Chasse automatique',
sniper_hunt_desc:'(sonde d\'autres salles, saute vers la meilleure correspondance)',
sniper_auto_sell:'Vente automatique dans Steal',
sniper_sell_desc:'(vendre le plus bas lorsque la base est pleine)',
sniper_lockdown:'Confinement ≤',
sniper_lockdown_hint:'Volez des cibles sur des bases avec ≤ ce temps restant. 0 = uniquement déverrouillé.',
sniper_join_grace:'Rejoignez la grâce',
sniper_start:'Commencer à tirer',
sniper_stop:'Arrêtez de tirer',
sniper_idle:'Inactif',
sniper_no_filter:'Aucun filtre défini',
sniper_waiting:'En attendant le jeu...',
sniper_hold_pause:'Tenir un animal de compagnie – en pause',
sniper_stolen_pause:'notre animal de compagnie est-il en pause',
sniper_cooldown:'Refroidir',
sniper_hopping:'Serveur de saut...',
sniper_na:'Sniper N/A dans le hall – rejoignez d’abord une partie',
sniper_wait_lock:'En attente des données de verrouillage...',
sniper_locked:'Base verrouillée – sauter...',
sniper_full_eggs:'Base pleine – seulement des œufs, impossible à vendre',
sniper_stealing:'Vol',
sniper_dropped:'Abandonné',
sniper_holding:'Portant',
sniper_place:'! Placer sur le socle.',
sniper_steal_mode:'[Voler]',
sniper_theft_nohop:'Animal volé par',
sniper_nohop_suffix:'- pas de saut',
sniper_sniping:'Tireur d\'élite :',
sniper_options:'Options',
sniper_drop_fail_status:'Échec du dépôt !',
sniper_hotkey_label:'Basculer le raccourci clavier :',
sniper_panel_label:'Panneau:',
sniper_grab_fail:'La saisie a échoué. Nouvelle tentative...',
sniper_our_pet_stolen:'Notre animal de compagnie volé – temps de recharge de 8 s',
sniper_hopping_short:'En sautant...',
sniper_base_full:'Base pleine',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'CLIGNOTER',
pet_teleport_title:'Téléportation',
pet_pickup_title:'Ramasser',
owner_yours:'Le vôtre',
owner_wild:'Sauvage',
footer_gf:'Fourchette grasse',
copy_ok:'Copié',
copy_failed:'Échec de la copie',
s_invis_on_fly:'Invisible en vol',
snipe_walk_home:'Marcher à la base après vol',
snipe_walk_home_desc:'Retourner à pied à ta base',
sniper_afk_sell:'AFK vendre les animaux non correspondants',
sniper_afk_sell_desc:'(quand inactif 5s, vendre les animaux ne correspondant pas au filtre par valeur — vagues uniquement)',
hb_fly:'VOL',
hb_lck:'VER',
hb_inv:'inv.',
hb_cud:'CÂL',
hb_pet:'ANI',
hb_snp:'SNI',
hb_cfg:'PAR',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'CPT',
ban_title:'Connexion bloquée',
ban_sub:'Votre adresse IP a été restreinte par Meeland',
ban_body:'Ne vous inquiétez pas, c\'est facile à résoudre ! Un VPN gratuit vous donnera une nouvelle IP pour que vous puissiez jouer à nouveau.',
ban_pick:'Solution rapide : choisissez-en une :',
ban_warp:'configuration gratuite et illimitée en un clic',
ban_warp_store:'également sur App Store et Play Store sous le nom "1.1.1.1"',
ban_proton:'pas de plafond de données, 5 pays',
ban_steps:'Installer → se connecter → actualiser cette page. C\'est ça!',
ban_ok:'J\'ai compris',
warn_title:'Utilisez toujours un VPN',
warn_body:'Joue toujours avec un <b>VPN</b> activé.',
warn_ok:'Compris, je comprends',
loading:'Chargement',
tcl_loading:'Boucle complète de tour en cours. Appuyez sur {key} pour arrêter.',
hop_search:'Recherche d\'une partie',
hop_match:'Trouvé {name} — connexion',
hop_flee:'Fuite face à un intrus',
hop_reconnect:'Reconnexion',
hop_reload:'Rechargement',
hop_fall:'Récupération après une chute',
hop_join:'Connexion à la salle',
lock_off:'DÉSACTIVÉ',
lock_unlocked:'DÉBLOQUÉ',
desc_intro:'MES vous offre wallhack, auto-farming, collection d\'animaux rares, augmentation de vitesse, vol, invisibilité et bien plus encore à Meeland',
desc_free:'Gratuit et open source pour toujours.',
desc_h_movement:'Mouvement',
desc_h_combat:'combat',
desc_h_tuning:'Réglages',
desc_h_pets:'Animaux et Vol',
desc_h_economy:'Économie',
desc_h_custom:'Personnalisation',
desc_h_extras:'Suppléments',
desc_fly:'Vol',
desc_fly_d:'Espace pour monter, F pour descendre. Vitesse réglable.',
desc_speed:'Clignoter',
desc_speed_d:'Shift pour se téléporter instantanément.',
desc_noclip:'Passe-muraille',
desc_noclip_d:'Traverser les murs et le sol.',
desc_walls:'Marcher aux Murs',
desc_walls_d:'Grimpe toute surface.',
desc_waypts:'Points de voyage',
desc_waypts_d:'Enregistrer et se téléporter entre 8 emplacements.',
desc_invis:'Invisible',
desc_invis_d:'Appuie sur Verr Maj pour disparaître complètement.',
desc_fpv:'Vue à la première personne',
desc_fpv_d:'Appuyez sur <kbd>.</kbd> pour basculer en vue première personne.',
desc_anti_invis:'Anti-invisibilité',
desc_anti_invis_d:'Considérez les joueurs invisibles comme des fantômes.',
desc_xray:'Vision à Rayons X',
desc_xray_d:'Voyez les joueurs à travers les murs dans Mystère de Meurtre. Rouge = meurtrier, vert = civil.',
desc_nodeathh:'Invincibilité',
desc_nodeath_d:'HP bloqués au maximum. Aucun dégât.',
desc_antikb:'Anti-recul',
desc_antikb_d:'Impossible de vous pousser.',
desc_attack:'Auto-attaque',
desc_attack_d:'<kbd>G</kbd> vous téléporte au joueur le plus proche et frappe.',
desc_jumpgrav:'Saut et Gravité',
desc_jumpgrav_d:'Multiplicateurs réglables dans Paramètres.',
desc_fov:'Contrôle du FOV',
desc_fov_d:'Curseurs FOV première et troisième personne.',
desc_autoinvis:'Invisibilité Auto en Vol',
desc_autoinvis_d:'Deviens invisible automatiquement en volant.',
desc_sniper:'Tireur d\'élite pour animaux de compagnie',
desc_sniper_d:'Filtrer, voler ou lâcher des animaux automatiquement.',
desc_prv:'Salle Privée',
desc_prv_d:'<kbd>PgDn</kbd> crée une salle privée dans le mode actuel et rejoint automatiquement.',
desc_petbrow:'Navigateur animaux',
desc_petbrow_d:'<kbd>K</kbd> affiche tous les animaux de compagnie. Trier, filtrer, saisir.',
desc_cuddle:'Panneau câlin',
desc_cuddle_d:'<kbd>J</kbd> répertorie les joueurs par distance. Cliquez pour suivre.',
desc_return:'Retour auto',
desc_return_d:'Ramène automatiquement les animaux volés.',
desc_autolock:'Verrou auto',
desc_autolock_d:'La base reste toujours verrouillée.',
desc_fountain:'Fontaine auto',
desc_fountain_d:'Gain permanent 1.5×. Se renouvelle automatiquement.',
desc_money:'Argent gratuit + étoiles + diamants',
desc_money_d:'Collecte les pièces quotidiennes automatiquement.',
desc_collect:'Auto-collecte',
desc_collect_d:'Revenus des animaux toutes les 30s.',
desc_music:'Musique personnalisée',
desc_music_d:'Remplacer la musique du jeu par la vôtre.',
desc_chatfade:'Fondu du chat',
desc_chatfade_d:'Contrôlez la visibilité des messages. 5 à 120 secondes.',
desc_emotes:'Voler des émoticônes',
desc_emotes_d:'Émotes aléatoires en vol.',
desc_displays:'Superpositions',
desc_displays_d:'Coordonnées, compteur FPS et infos cible.',
desc_config:'Paramètres',
desc_config_d:'<kbd>M</kbd> pour activer les fonctions, réassigner les touches, ajuster les vitesses.',
desc_langs:'60 langues',
desc_langs_d:'Interface traduite automatiquement.',
desc_tower:'Tour terminée',
desc_tower_d:'Termine la tour en un clic.',
desc_cats:'Écrans de chargement chat',
desc_cats_d:'Des chats mignons remplacent le chargement.',
desc_h_install:'Installer',
desc_desktop:'Bureau (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installer Tampermonkey ou Violentmonkey',
desc_inst_click:'Cliquer sur Installer',
desc_inst_open:'Ouvrir nʼimporte quel jeu Meeland — ça fonctionne',
desc_mobile:'Mobile',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Ouvrez Firefox → Menu → Modules complémentaires → installez <strong>Tampermonkey</strong>',
desc_mob_visit:'Visiter cette page et installer',
desc_mob_play:'Jouer à Meeland dans Firefox',
desc_ios:'iOS : Utiliser Userscripts (Safari) + ce script',
desc_h_privacy:'Confidentialité',
desc_privacy:'Côté client uniquement : aucune donnée ne quitte votre navigateur'
});
_mk('de','Deutsch',{
close:'✕',
refresh:'↻',
go:'Los',
set:'Setzen',
auto:'Automatisch',
empty:'leer',
help_title:'Helfen',
players_title:'Spieler',
players_empty:'Keine anderen Spieler gefunden',
settings_title:'Einstellungen',
settings_reset:'Zurücksetzen',
tab_gameplay:'Gameplay',
tab_economy:'Wirtschaft',
tab_audio:'Audio',
tab_advanced:'Erweitert',
tab_hud:'HUD',
tab_keys:'Tasten',
tab_accounts:'Konten',
acct_current:'Aktuell',
acct_new:'Neu',
acct_import:'Importieren',
acct_switch:'Wechseln',
acct_reload:'Neu laden',
acct_delete:'Löschen',
acct_cancel:'Abbrechen',
acct_empty:'Leer',
acct_token_ph:'Token',
acct_copy:'Kopieren',
acct_export:'Exportieren',
acct_rename:'Umbenennen',
acct_save:'Speichern',
acct_name_len:'Name muss 4-12 Zeichen haben',
acct_name_fail:'Umbenennen fehlgeschlagen',
acct_invalid:'Ungültig',
acct_ready:'Konto bereit. Schließe Meeland, wechsle die IP, dann neu laden.',
acct_ip_note:'Benutze immer ein VPN und wechsle die IP beim Kontowechsel.',
acct_howto:'1. Klicke auf Kopieren, um den Link dieses Kontos zu kopieren.\n2. Öffne MES in einem anderen Browser oder Gerät — oder bei einem Freund.\n3. Klicke auf Importieren und füge den Link ein.',
sh_movement:'Bewegung',
sh_defense:'Verteidigung',
sh_camera:'Kamera',
sh_overlays:'Overlays',
sh_behaviour:'Verhalten',
sh_buttons:'Schaltflächen',
sh_language:'Sprache',
sh_chat:'Chatten',
sh_waves:'Waves',
sh_steal_a_pet:'Haustier stehlen',
sh_tower:'Tower',
sh_misc_multi:'Sonstiges (mehrere Modi)',
s_noclip:'Durch Wände gehen',
s_fly:'Fliegen',
s_fly_emotes:'Flug-Emotes',
s_base_speed:'Grundgeschwindigkeit',
s_jump_mult:'Sprunghöhe',
s_grav_mult:'Schwerkraft',
s_walk_up_walls:'Wände hochgehen',
s_carry_normalize:'Tragegeschwindigkeit + Sprung',
s_invincibility:'Unverwundbarkeit',
s_anti_kb:'Anti-Rückstoß',
s_invisible:'Unsichtbar',
s_xray_infection:'Röntgenblick (Mordgeheimnis)',
s_ghost_mode:'Geistermodus',
s_flee_intruder:'Fliehen bei Eindringling',
s_first_person:'Ego-Perspektive',
s_fov_first_person:'Sichtfeld (Ego)',
s_fov_third_person:'Sichtfeld (3. Pers.)',
s_fov_vertical_mult:'Vertikaler FOV-Multiplikator',
s_auto_lock:'Auto-Lock-Basis',
s_auto_fountain:'Auto-Brunnen (1.5×)',
s_daily_coins:'Tägliche Münzen',
s_stars:'Sterne',
s_diamonds_tower:'Diamanten (Turm)',
s_tower_loop:'Turm-Schleife',
s_auto_roll_x25:'Auto-Roll x25 Glück',
s_auto_craft:'Auto-Handwerk',
s_auto_vip_sword:'VIP automatisch kaufen',
s_auto_vip_waves:'VIP automatisch kaufen (Wellen)',
s_direct_kill:'Direkter Kill-Spam',
s_direct_kill_rate:'Kill-Rate',
s_auto_buy_upgrades:'Automatischer Kauf von Upgrades',
s_boost_coins:'Automatisches Upgrade: Münzen',
s_boost_diamonds:'Automatisches Upgrade: Diamanten',
s_boost_luck:'Automatisches Upgrade: Glück',
s_auto_unlock_areas:'Bereiche automatisch entsperren',
s_auto_rebirth:'Automatische Wiedergeburt',
s_auto_join_tp:'Teleportieren Sie sich in den höchsten Bereich',
s_hide_kill_rewards:'Tötungsbelohnungen ausblenden',
s_hide_roll_anim:'Rollanimation ausblenden',
rng_title:'Haustiere RNG-Cheats',
rng_sec_rolling:'Rollen',
rng_sec_crafting:'Basteln',
rng_sec_combat:'Kampf',
rng_sec_upgrades:'Übersetzen ins Englische: Upgrades',
rng_sec_areas:'Bereiche',
rng_actions:'Aktionen',
log_craft:'Handwerk',
log_success:'ERFOLG',
log_fail:'SCHEITERN',
log_unlocking_area:'Entriegelungsbereich',
log_area_unlocked:'Bereich freigeschaltet',
log_equipped:'Ausgestattet',
log_bought_upgrade:'Upgrade gekauft',
log_teleported_to:'Teleportiert nach',
log_rebirthing:'Wiedergeburt',
h_rng:'rng',
h_accts:'Konten',
s_auto_collect:'Auto-Einnahmen sammeln',
s_collect_interval:'Sammelintervall',
s_chat_fade:'Chat-Fade-Zeit',
s_name_colors:'Benutzernamen-Farben',
s_chat_enhance:'Chat-Verbesserungen',
mes_hint:'Tipp: Füge "mes" in deinen Benutzernamen ein, für einen animierten Regenbogeneffekt!',
s_carry_tune:'Carry Tune (Stehlen)',
s_pet_pickup_radius:'Tier-Diebstahl-Radius',
s_carry_vol:'Tragevolumen',
carry_tune_default:'Standard',
carry_tune_silent:'Lautlos',
carry_tune_ambient:'Ambiente',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassik',
carry_tune_electronic:'Elektronisch',
carry_tune_epic:'Episch',
carry_tune_folk:'Volksmusik',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metall',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Felsen',
s_cont_cuddle:'Dauerkuscheln',
s_protips:'Pro-Tipps',
s_hideprotips:'Meine Pro-Tipps ausblenden',
s_show_exp_modes:'Experimentelle Modi anzeigen',
s_showcoords:'Koordinaten anzeigen',
s_showfps:'FPS anzeigen',
s_showtargetinfo:'Zielinfo anzeigen',
s_showobj:'Objekt-/Maschenanzahl anzeigen',
s_copy_dbg:'Debug-Protokolle kopieren',
s_copy_json:'JSON kopieren',
s_clear_dbg:'Löschen',
h_fly:'Fliegen',
h_speed:'Geschwindigkeitshack',
h_waypoints:'Wegpunkte',
h_autolock:'Automatische Sperre',
h_invisible:'Unsichtbar',
h_cuddle:'Kuscheln',
h_pets:'Haustiere',
h_snipe:'Sniper',
h_help:'Hilfe',
h_settings:'Einstellungen',
h_prv:'Privater Raum',
h_tc:'Turm abschließen',
h_tcl:'Turm-Schleife',
kb_fly:'Fliegen (umschalten/hoch)',
kb_fly_down:'Fliege nach unten',
kb_set_home:'Zuhause setzen',
kb_home:'Heim',
kb_back:'Zurück',
kb_cuddle:'Kuschel-Panel',
kb_settings:'Einstellungen',
kb_pets:'Haustierbrowser',
kb_slots:'Wegpunkt-Slots',
kb_snipe:'Sniper-Panel',
kb_snipe_toggle:'Sniper Ein/Aus',
kb_attack:'Angriff',
kb_help:'Hilfe / Beschreibung',
kb_tower:'Turm abschließen',
kb_tower_loop:'Turm-Schleife',
kb_invisible:'Unsichtbar',
kb_first_person:'Ego-Perspektive',
kb_autolock:'Auto-Lock-Basis',
kb_prv:'Privatzimmer',
kb_rng:'RNG',
kb_accts:'Konten',
pets_title:'Haustiere',
pets_search_placeholder:'z.B. wildes Kätzchen, golden ODER Diamant, (golden ODER Smaragd) wild',
pets_hint:'Wörter werden mit UND verknüpft. Verwende OR für Alternativen, Klammern zum Gruppieren. * oder % als Platzhalter. Setze - vor ein Wort, um es auszuschließen.',
pets_empty:'Keine Haustiere in diesem Raum gefunden',
pt_name:'Name',
pt_mut:'Mutation',
pt_rar:'Seltenheit',
pt_owner:'Eigentümer',
pt_worth:'Wert',
pt_income:'Einkommen/s',
pt_dist:'Entf',
slots_title:'Wegpunkt-Slots',
sniper_title:'Haustier-Sniper',
sniper_tbl_pet:'Haustier',
sniper_tbl_owner:'Eigentümer',
sniper_tbl_lock:'Sperren',
sniper_placeholder:'z.B. halo, golden OR diamant, smaragd drache',
sniper_hint:'Wörter werden mit UND verknüpft. Verwende OR für Alternativen, Klammern zum Gruppieren. * oder % als Platzhalter. Setze - vor ein Wort, um es auszuschließen.',
sniper_room_col:'Raum',
sniper_scans_col:'Scannt',
sniper_top_pet_col:'Top Haustier',
sniper_top_worth_col:'Top wert',
sniper_top_owner_col:'Top-Besitzer',
sniper_age_col:'Alter',
sniper_join_btn:'Beitreten',
sniper_full:'Voll',
sniper_join_failed:'Zielraum voll',
sniper_scanning_rooms:'Suche andere Räume…',
sniper_scan_off:'Automatische Jagd aus',
sniper_scan_next:'Nächster Scan in',
sniper_scan_idle:'Im Leerlauf – Warten auf Scan',
sniper_auto_place:'Auto-Platzierung auf Basis',
sniper_place_desc:'(platziert gestohlenes Tier im Basis-Slot)',
sniper_auto_drop:'Nicht passende Haustiere in Wellen automatisch ablegen',
sniper_drop_desc:'(legt wilde Haustiere ab, die nicht zum Filter passen, um den Spawn-Pool aufzufrischen)',
sniper_auto_hunt:'Auto-Jagd',
sniper_hunt_desc:'(durchsucht andere Räume, springt zur besten Übereinstimmung)',
sniper_auto_sell:'Automatischer Verkauf in Steal',
sniper_sell_desc:'(Niedrigster Preis, wenn die Basis voll ist)',
sniper_lockdown:'Sperre ≤',
sniper_lockdown_hint:'Ziele auf Basen mit ≤ dieser Restzeit stehlen. 0 = nur entsperrte.',
sniper_join_grace:'Schließe dich der Gnade an',
sniper_start:'Snipen starten',
sniper_stop:'Snipen stoppen',
sniper_idle:'Untätig',
sniper_no_filter:'Kein Filter gesetzt',
sniper_waiting:'Warte auf das Spiel...',
sniper_hold_pause:'Hält ein Haustier — pausiert',
sniper_stolen_pause:'hat unser Haustier — pausiert',
sniper_cooldown:'Abklingzeit',
sniper_hopping:'Serverwechsel...',
sniper_na:'Sniper N/V in der Lobby — tritt zuerst einem Spiel bei',
sniper_wait_lock:'Warten auf Sperrdaten...',
sniper_locked:'Basis gesperrt – Überspringen...',
sniper_full_eggs:'Basis voll – nur Eier, nicht verkaufbar',
sniper_stealing:'Stehle',
sniper_dropped:'Abgelegt',
sniper_holding:'Hält',
sniper_place:'! Auf die Basis stellen.',
sniper_steal_mode:'[Stehlen]',
sniper_theft_nohop:'Haustier wird gestohlen von',
sniper_nohop_suffix:'— kein Sprung',
sniper_sniping:'Snipe läuft:',
sniper_options:'Optionen',
sniper_drop_fail_status:'Abwurf fehlgeschlagen!',
sniper_hotkey_label:'Schnelltaste:',
sniper_panel_label:'Bedienfeld:',
sniper_grab_fail:'Das Greifen ist fehlgeschlagen. Erneuter Versuch...',
sniper_our_pet_stolen:'Unser Haustier gestohlen – 8 Sekunden Abklingzeit',
sniper_hopping_short:'Springe...',
sniper_base_full:'Basis voll',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'RENNEN',
pet_teleport_title:'Teleportieren',
pet_pickup_title:'Abholen',
owner_yours:'Dein',
owner_wild:'Wild',
footer_gf:'Fettige Gabel',
copy_ok:'Kopiert',
copy_failed:'Kopieren fehlgeschlagen',
s_invis_on_fly:'Unsichtbar beim Fliegen',
snipe_walk_home:'Nach Hause laufen nach Diebstahl',
snipe_walk_home_desc:'Zurück zu deiner Basis laufen',
sniper_afk_sell:'AFK nicht passende Tiere verkaufen',
sniper_afk_sell_desc:'(bei Inaktivität 5s, nicht zum Filter passende Tiere nach Wert verkaufen — nur Wellen)',
hb_fly:'FLI',
hb_lck:'lck',
hb_inv:'Inv',
hb_cud:'KUS',
hb_pet:'TIE',
hb_snp:'SNI',
hb_cfg:'EIN',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KTO',
ban_title:'Verbindung blockiert',
ban_sub:'Deine IP-Adresse wurde von Meeland eingeschränkt',
ban_body:'Kein Problem — das ist leicht zu beheben! Ein kostenloses VPN gibt dir eine neue IP, damit du wieder spielen kannst.',
ban_pick:'Schnelle Lösung — wähle eins:',
ban_warp:'kostenlos, unbegrenzt, Ein-Klick-Einrichtung',
ban_warp_store:'auch im App Store & Play Store als „1.1.1.1“',
ban_proton:'Keine Datenbeschränkung, 5 Länder',
ban_steps:'Installieren → Verbinden → Diese Seite aktualisieren. Das ist es!',
ban_ok:'OK',
warn_title:'Verwenden Sie immer ein VPN',
warn_body:'Spiele immer mit einem aktiven <b>VPN</b>.',
warn_ok:'Verstanden, ich verstehe',
loading:'Laden',
tcl_loading:'Turmdurchlauf läuft. Drücke {key} zum Stoppen.',
hop_search:'Suche nach Spiel',
hop_match:'{name} gefunden — beitreten',
hop_flee:'Flucht vor Eindringling',
hop_reconnect:'Verbindung wird wiederhergestellt',
hop_reload:'Neu laden',
hop_fall:'Erholung nach Sturz',
hop_join:'Raum wird betreten',
lock_off:'AUS',
lock_unlocked:'ENTSPERRT',
desc_intro:'MES bietet Ihnen Wallhack, Auto-Farming, das Sammeln seltener Haustiere, Geschwindigkeitssteigerung, Flug, Unsichtbarkeit und mehr in Meeland',
desc_free:'100% kostenlos, immer. Feedback? Hinterlasse eine ⭐ positive Bewertung — das ist es, was die Updates am Laufen hält.',
desc_h_movement:'Bewegung',
desc_h_combat:'Kampf',
desc_h_tuning:'Feinabstimmung',
desc_h_pets:'Haustiere & Stehlen',
desc_h_economy:'Wirtschaft',
desc_h_custom:'Anpassung',
desc_h_extras:'Extras',
desc_fly:'Fliegen',
desc_fly_d:'Space halten zum Steigen, F zum Sinken. Geschwindigkeit einstellbar.',
desc_speed:'Blinken',
desc_speed_d:'Shift zum sofortigen Teleportieren.',
desc_noclip:'Durch Wände gehen',
desc_noclip_d:'Geh durch Wände.',
desc_walls:'Wände Hochlaufen',
desc_walls_d:'Erklimme jede Oberfläche.',
desc_waypts:'Wegpunkte',
desc_waypts_d:'10 Positionen speichern. Teleport per Taste. <kbd>Z</kbd> zum Zurückwechseln.',
desc_invis:'Unsichtbar',
desc_invis_d:'Drücke Feststelltaste, um vollständig zu verschwinden.',
desc_fpv:'Ego-Perspektive',
desc_fpv_d:'Drücke <kbd>.</kbd> zum Umschalten der Ego-Perspektive.',
desc_anti_invis:'Anti-Unsichtbarkeit',
desc_anti_invis_d:'Betrachten Sie unsichtbare Spieler als Geister.',
desc_xray:'Röntgenblick',
desc_xray_d:'Sieh Spieler durch Wände im Mordgeheimnis. Rot = Mörder, grün = Zivilist.',
desc_nodeathh:'Unbesiegbar',
desc_nodeath_d:'Immun gegen allen Schaden.',
desc_antikb:'Anti-Rückstoß',
desc_antikb_d:'Du kannst nicht geschubst werden.',
desc_attack:'Sofortangriff',
desc_attack_d:'<kbd>G</kbd> teleportiert zum nächsten Spieler und schlägt.',
desc_jumpgrav:'Sprung & Schwerkraft',
desc_jumpgrav_d:'Einstellbare Multiplikatoren in den Einstellungen.',
desc_fov:'Sichtfeld-Steuerung',
desc_fov_d:'Sichtfeld-Regler für Ego- und Drittperson.',
desc_autoinvis:'Auto-Unsichtbar beim Flug',
desc_autoinvis_d:'Werde beim Fliegen automatisch unsichtbar.',
desc_sniper:'Haustierscharfschütze',
desc_sniper_d:'Automatischer Diebstahl gefilterter Haustiere. Beide Modi.',
desc_prv:'Privater Raum',
desc_prv_d:'<kbd>PgDn</kbd> erstellt einen privaten Raum im aktuellen Modus und tritt automatisch bei.',
desc_petbrow:'Haustier-Browser',
desc_petbrow_d:'<kbd>K</kbd> zeigt alle Haustiere. Sortieren, filtern, greifen.',
desc_cuddle:'Kuschelpanel',
desc_cuddle_d:'<kbd>J</kbd> listet Spieler nach Entfernung auf. Klicken Sie hier, um zu folgen.',
desc_return:'Auto-Rückkehr',
desc_return_d:'Teleportiert nach Diebstahl nach Hause.',
desc_autolock:'Auto-Sperre',
desc_autolock_d:'Basis bleibt immer gesperrt.',
desc_fountain:'Auto-Brunnen',
desc_fountain_d:'Dauerhafter 1.5× Gewinn. Erneuert sich automatisch.',
desc_money:'Gratisgeld + Sterne + Diamanten',
desc_money_d:'Keine Werbung nötig.',
desc_collect:'Auto-Sammeln',
desc_collect_d:'Haustiereinnahmen alle 30s.',
desc_music:'Transportmusik',
desc_music_d:'Musik beim Stehlen. 15 Genres.',
desc_chatfade:'Chat-Ausblendung',
desc_chatfade_d:'Steuere die Nachrichtensichtbarkeit. 5–120s.',
desc_emotes:'Flug-Emotes',
desc_emotes_d:'Zufällige Emotes beim Fliegen.',
desc_displays:'Anzeige-Overlays',
desc_displays_d:'Koordinaten, FPS-Zähler und Zielinfos.',
desc_config:'Einstellungen',
desc_config_d:'<kbd>M</kbd> zum Umschalten, Tasten ändern, Geschwindigkeiten anpassen.',
desc_langs:'60 Sprachen',
desc_langs_d:'Vollständige UI-Übersetzung.',
desc_tower:'Turm abschließen',
desc_tower_d:'<kbd>Y</kbd> für sofortigen Turm-Sieg.',
desc_cats:'Katzen-Ladebildschirme',
desc_cats_d:'Süße Katzen ersetzen das Laden.',
desc_h_install:'Installation',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installiere <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> oder <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klicke oben auf Installieren',
desc_inst_open:'Öffne ein beliebiges Meeland-Spiel — es funktioniert einfach',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Installiere <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox für Android</a> aus dem Play Store',
desc_mob_addon:'Öffne Firefox → Menü → Add-ons → installiere <strong>Tampermonkey</strong>',
desc_mob_visit:'Besuche diese Seite in Firefox und tippe auf Installieren',
desc_mob_play:'Spiele Meeland — tippfreundliche HUD-Buttons erscheinen automatisch',
desc_ios:'iOS: Apple blockiert Browser-Erweiterungen in allen iOS-Browsern (einschließlich Firefox). Verwende einen Desktop-Browser oder Android.',
desc_h_privacy:'Datenschutz',
desc_privacy:'Nur clientseitig — keine Daten verlassen deinen Browser'
});
_mk('pt','Português',{
close:'✕',
refresh:'↻',
go:'Ir',
set:'Definir',
auto:'Auto',
empty:'vazio',
help_title:'Ajuda',
players_title:'Jogadores',
players_empty:'Nenhum outro jogador encontrado',
settings_title:'Configurações',
settings_reset:'Redefinir',
tab_gameplay:'Jogo',
tab_economy:'Economia',
tab_audio:'Áudio',
tab_advanced:'Avançado',
tab_hud:'HUD',
tab_keys:'Teclas',
tab_accounts:'Contas',
acct_current:'Atual',
acct_new:'Nova',
acct_import:'Importar',
acct_switch:'Trocar',
acct_reload:'Recarregar',
acct_delete:'Excluir',
acct_cancel:'Cancelar',
acct_empty:'Vazio',
acct_token_ph:'Token',
acct_copy:'Copiar',
acct_export:'Exportar',
acct_rename:'Renomear',
acct_save:'Salvar',
acct_name_len:'O nome deve ter 4-12 caracteres',
acct_name_fail:'Falha ao renomear',
acct_invalid:'Inválido',
acct_ready:'Conta pronta. Feche o Meeland, troque seu IP e recarregue.',
acct_ip_note:'Use sempre uma VPN e troque seu IP ao trocar de conta.',
acct_howto:'1. Clique em Copiar para copiar o link desta conta.\n2. Em outro navegador ou dispositivo — ou com um amigo — abra o MES.\n3. Clique em Importar e cole o link.',
sh_movement:'Movimento',
sh_defense:'Defesa',
sh_camera:'Câmera',
sh_overlays:'Sobreposições',
sh_behaviour:'Comportamento',
sh_buttons:'Botões',
sh_language:'Idioma',
sh_chat:'Bater papo',
sh_waves:'Waves',
sh_steal_a_pet:'Roubar um animal',
sh_tower:'Tower',
sh_misc_multi:'Diversos (multi-modo)',
s_noclip:'Atravessar paredes',
s_fly:'Voar',
s_fly_emotes:'Emotes de voo',
s_base_speed:'Velocidade base',
s_jump_mult:'Altura do salto',
s_grav_mult:'Gravidade',
s_walk_up_walls:'Suba pelas paredes',
s_carry_normalize:'Velocidade de transporte + salto',
s_invincibility:'Invencibilidade',
s_anti_kb:'Anti-recuo',
s_invisible:'Invisível',
s_xray_infection:'Raio-X (Mistério de Assassinato)',
s_ghost_mode:'Modo fantasma',
s_flee_intruder:'Fugir se houver intruso',
s_first_person:'Visão em primeira pessoa',
s_fov_first_person:'FOV (Primeira pessoa)',
s_fov_third_person:'FOV (3ª pess.)',
s_fov_vertical_mult:'Multiplicador Vertical FOV',
s_auto_lock:'Auto-trancar base',
s_auto_fountain:'Auto-fonte (1.5×)',
s_daily_coins:'Moedas diárias',
s_stars:'Estrelas',
s_diamonds_tower:'Diamantes (Torre)',
s_tower_loop:'Loop de torre',
s_auto_roll_x25:'Rolo auto x25 sorte',
s_auto_craft:'Craft automático',
s_auto_vip_sword:'Comprar VIP automaticamente',
s_auto_vip_waves:'Comprar VIP automaticamente (Ondas)',
s_direct_kill:'Spam de morte direto',
s_direct_kill_rate:'Taxa de morte',
s_auto_buy_upgrades:'Atualizações de compra automática',
s_boost_coins:'Atualização automática: moedas',
s_boost_diamonds:'Atualização automática: diamantes',
s_boost_luck:'Atualização automática: sorte',
s_auto_unlock_areas:'Áreas de desbloqueio automático',
s_auto_rebirth:'Renascimento Automático',
s_auto_join_tp:'Teleporte para a área mais alta',
s_hide_kill_rewards:'Ocultar recompensas de morte',
s_hide_roll_anim:'Ocultar animação do rolo',
rng_title:'Truques de RNG para animais de estimação',
rng_sec_rolling:'Rolando',
rng_sec_crafting:'Artesanato',
rng_sec_combat:'Combate',
rng_sec_upgrades:'Atualizações',
rng_sec_areas:'Áreas',
rng_actions:'Ações',
log_craft:'Arte',
log_success:'SUCESSO',
log_fail:'FALHAR',
log_unlocking_area:'Área de desbloqueio',
log_area_unlocked:'Área desbloqueada',
log_equipped:'Equipado',
log_bought_upgrade:'Atualização comprada',
log_teleported_to:'Teletransportado para',
log_rebirthing:'Renascimento',
h_rng:'anel',
h_accts:'Contas',
s_auto_collect:'Auto-coletar ganhos',
s_collect_interval:'Intervalo de coleta',
s_chat_fade:'Tempo de esvanecimento do chat',
s_name_colors:'Cores dos utilizadores',
s_chat_enhance:'Melhorias do chat',
mes_hint:'Dica: inclua "mes" no seu nome de utilizador para um efeito de arco-íris animado!',
s_carry_tune:'Melodia de transporte (Roubo)',
s_pet_pickup_radius:'Raio de Roubo de Pet',
s_carry_vol:'Volume de transporte',
carry_tune_default:'Padrão',
carry_tune_silent:'Silencioso',
carry_tune_ambient:'Ambiente',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Clássica',
carry_tune_electronic:'Eletrônica',
carry_tune_epic:'Épico',
carry_tune_folk:'Folclórico',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metal',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Pedra',
s_cont_cuddle:'Abraço contínuo',
s_protips:'Dicas Pro',
s_hideprotips:'Ocultar minhas dicas Pro',
s_show_exp_modes:'Mostrar modos experimentais',
s_showcoords:'Mostrar coordenadas',
s_showfps:'Mostrar FPS',
s_showtargetinfo:'Mostrar informações do alvo',
s_showobj:'Mostrar entidade/contagem de malha',
s_copy_dbg:'Copiar registros de depuração',
s_copy_json:'Copiar JSON',
s_clear_dbg:'Limpar',
h_fly:'Voar',
h_speed:'Hack de velocidade',
h_waypoints:'Pontos de rota',
h_autolock:'Auto-tranca',
h_invisible:'Invisível',
h_cuddle:'Abraço',
h_pets:'Animais de estimação',
h_snipe:'Sniper',
h_help:'Ajuda',
h_settings:'Configurações',
h_prv:'Sala Privada',
h_tc:'Completar torre',
h_tcl:'Loop de torre',
kb_fly:'Voar (alternar/subir)',
kb_fly_down:'Voar para baixo',
kb_set_home:'Definir lar',
kb_home:'Casa',
kb_back:'Voltar',
kb_cuddle:'Painel de abraço',
kb_settings:'Configurações',
kb_pets:'Explorador de pets',
kb_slots:'Slots de pontos de rota',
kb_snipe:'Painel sniper',
kb_snipe_toggle:'Sniper Lig/Desl',
kb_attack:'Atacar',
kb_help:'Ajuda / Descrição',
kb_tower:'Completar torre',
kb_tower_loop:'Loop de torre',
kb_invisible:'Invisível',
kb_first_person:'Primeira pessoa',
kb_autolock:'Base de bloqueio automático',
kb_prv:'Sala Privada',
kb_rng:'RNG',
kb_accts:'Contas',
pets_title:'Animais de estimação',
pets_search_placeholder:'por exemplo gatinho selvagem, dourado OU diamante, (dourado OU esmeralda) selvagem',
pets_hint:'As palavras são combinadas com E. Use OR para alternativas, parênteses para agrupar. * ou % como curinga. Coloque - antes de uma palavra para excluí-la.',
pets_empty:'Nenhum pet encontrado nesta sala',
pt_name:'Nome',
pt_mut:'Mutação',
pt_rar:'Raridade',
pt_owner:'Dono',
pt_worth:'Valor',
pt_income:'Renda/s',
pt_dist:'Dist',
slots_title:'Slots de pontos de rota',
sniper_title:'Sniper de pets',
sniper_tbl_pet:'Bicho de estimação',
sniper_tbl_owner:'Proprietário',
sniper_tbl_lock:'Trancar',
sniper_placeholder:'ex. halo, dourado OR diamante, dragão esmeralda',
sniper_hint:'As palavras são combinadas com E. Use OR para alternativas, parênteses para agrupar. * ou % como curinga. Coloque - antes de uma palavra para excluí-la.',
sniper_room_col:'Sala',
sniper_scans_col:'Verificações',
sniper_top_pet_col:'Melhor animal de estimação',
sniper_top_worth_col:'Valor máximo',
sniper_top_owner_col:'Principal proprietário',
sniper_age_col:'Idade',
sniper_join_btn:'Entrar',
sniper_full:'Cheio',
sniper_join_failed:'Sala alvo cheia',
sniper_scanning_rooms:'Procurando outras salas…',
sniper_scan_off:'Caça automática desativada',
sniper_scan_next:'Próxima digitalização em',
sniper_scan_idle:'Inativo – aguardando para digitalizar',
sniper_auto_place:'Auto-colocar na base',
sniper_place_desc:'(coloca o pet roubado no seu slot de base)',
sniper_auto_drop:'Soltar automaticamente pets não correspondentes nas Ondas',
sniper_drop_desc:'(solta pets selvagens que não correspondem ao filtro para renovar o pool de spawn)',
sniper_auto_hunt:'Caça automática',
sniper_hunt_desc:'(sonda outras salas, pula para a melhor correspondência)',
sniper_auto_sell:'Auto-vender em Roubar',
sniper_sell_desc:'(vender o pior quando a base estiver cheia)',
sniper_lockdown:'Bloqueio ≤',
sniper_lockdown_hint:'Roubar alvos em bases com ≤ este tempo restante. 0 = apenas desbloqueadas.',
sniper_join_grace:'Junte-se à graça',
sniper_start:'Iniciar sniper',
sniper_stop:'Parar sniper',
sniper_idle:'Inativo',
sniper_no_filter:'Nenhum filtro definido',
sniper_waiting:'Aguardando partida...',
sniper_hold_pause:'Segurando um pet — pausado',
sniper_stolen_pause:'tem nosso pet — pausado',
sniper_cooldown:'Recarga',
sniper_hopping:'Trocando servidor...',
sniper_na:'Sniper N/D no lobby — entre em uma partida primeiro',
sniper_wait_lock:'Aguardando dados de bloqueio...',
sniper_locked:'Base bloqueada — pulando...',
sniper_full_eggs:'Base cheia — só ovos, não dá para vender',
sniper_stealing:'Roubando',
sniper_dropped:'Solto',
sniper_holding:'Segurando',
sniper_place:'! Coloque na base.',
sniper_steal_mode:'[Roubar]',
sniper_theft_nohop:'Pet sendo roubado por',
sniper_nohop_suffix:'— sem pulo',
sniper_sniping:'Snipando:',
sniper_options:'Opções',
sniper_drop_fail_status:'Soltar falhou!',
sniper_hotkey_label:'Atalho:',
sniper_panel_label:'Painel:',
sniper_grab_fail:'Falha ao pegar. Tentando novamente...',
sniper_our_pet_stolen:'Nosso pet roubado — 8s de recarga',
sniper_hopping_short:'Pulando...',
sniper_base_full:'Base cheia',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'CORRER',
pet_teleport_title:'Teleporte',
pet_pickup_title:'Escolher',
owner_yours:'Seu',
owner_wild:'Selvagem',
footer_gf:'Garfo Gorduroso',
copy_ok:'Copiado',
copy_failed:'Falha na cópia',
s_invis_on_fly:'Invisível ao voar',
snipe_walk_home:'Andar para casa após roubar',
snipe_walk_home_desc:'Voltar andando para sua base',
sniper_afk_sell:'AFK vender pets não correspondentes',
sniper_afk_sell_desc:'(quando inativo 5s, vender pets que não correspondem ao filtro por valor — apenas ondas)',
hb_fly:'VOA',
hb_lck:'TRA',
hb_inv:'INV',
hb_cud:'ABR',
hb_pet:'PET',
hb_snp:'SNI',
hb_cfg:'CFG',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'CTA',
ban_title:'Conexão bloqueada',
ban_sub:'O seu endereço IP foi restringido pelo Meeland',
ban_body:'Sem problemas — é fácil de resolver! Uma VPN gratuita dará um novo IP para você jogar novamente.',
ban_pick:'Solução rápida — escolha uma:',
ban_warp:'gratuita, ilimitada, configuração com um clique',
ban_warp_store:'também na App Store e Play Store como "1.1.1.1"',
ban_proton:'sem limite de dados, 5 países',
ban_steps:'Instale → conecte-se → recarregue esta página. É só isso!',
ban_ok:'Entendi',
warn_title:'Use sempre uma VPN',
warn_body:'Jogue sempre com uma <b>VPN</b> ativada.',
warn_ok:'Entendi',
loading:'Carregando',
tcl_loading:'Executando o loop de torre completo. Pressione {key} para parar.',
hop_search:'Procurando partida',
hop_match:'Encontrado {name} — entrando',
hop_flee:'Fugindo de intruso',
hop_reconnect:'Reconectando',
hop_reload:'Recarregando',
hop_fall:'Recuperando de queda',
hop_join:'Entrando na sala',
lock_off:'DESL',
lock_unlocked:'DESBLOQ',
desc_intro:'MES oferece wallhack, cultivo automático, coleta de animais de estimação raros, aumento de velocidade, vôo, invisibilidade e muito mais em Meeland',
desc_free:'100% grátis, sempre. Tem feedback? Deixe uma ⭐ avaliação positiva — é isso que mantém as atualizações.',
desc_h_movement:'Movimento',
desc_h_combat:'Combate',
desc_h_tuning:'Ajustes',
desc_h_pets:'Pets e Roubo',
desc_h_economy:'Economia',
desc_h_custom:'Personalização',
desc_h_extras:'Extras',
desc_fly:'Voar',
desc_fly_d:'Space para subir, F para descer. Velocidade ajustável.',
desc_speed:'Piscar',
desc_speed_d:'Shift para teleportar instantaneamente.',
desc_noclip:'Atravessar paredes',
desc_noclip_d:'Atravesse paredes.',
desc_walls:'Escalar Paredes',
desc_walls_d:'Escale qualquer superfície.',
desc_waypts:'Pontos de rota',
desc_waypts_d:'Salve 10 posições. Teleporte com uma tecla. <kbd>Z</kbd> para alternar.',
desc_invis:'Invisível',
desc_invis_d:'Pressione Caps Lock para desaparecer completamente.',
desc_fpv:'Visão em primeira pessoa',
desc_fpv_d:'Pressione <kbd>.</kbd> para alternar a câmera em primeira pessoa.',
desc_anti_invis:'Anti-invisibilidade',
desc_anti_invis_d:'Veja jogadores invisíveis como fantasmas.',
desc_xray:'Visão de Raio-X',
desc_xray_d:'Veja jogadores através das paredes no Mistério de Assassinato. Vermelho = assassino, verde = civil.',
desc_nodeathh:'Invencível',
desc_nodeath_d:'Imune a todo dano.',
desc_antikb:'Anti-Recuo',
desc_antikb_d:'Não podem te empurrar.',
desc_attack:'Ataque instantâneo',
desc_attack_d:'<kbd>G</kbd> teleporta ao jogador mais próximo e ataca.',
desc_jumpgrav:'Salto e Gravidade',
desc_jumpgrav_d:'Multiplicadores ajustáveis nas Configurações.',
desc_fov:'Controle de FOV',
desc_fov_d:'Controles de FOV em primeira e terceira pessoa.',
desc_autoinvis:'Auto-Invis ao Voar',
desc_autoinvis_d:'Fique invisível automaticamente ao voar.',
desc_sniper:'Sniper de pets',
desc_sniper_d:'Roubo automático de pets filtrados. Ambos modos.',
desc_prv:'Sala Privada',
desc_prv_d:'<kbd>PgDn</kbd> cria uma sala privada no modo atual e entra automaticamente.',
desc_petbrow:'Explorador de pets',
desc_petbrow_d:'<kbd>K</kbd> mostra todos os pets. Ordenar, filtrar, pegar.',
desc_cuddle:'Painel de abraço',
desc_cuddle_d:'<kbd>J</kbd> lista jogadores por distância. Clique para seguir.',
desc_return:'Auto Retorno',
desc_return_d:'Teleporta para casa após roubo.',
desc_autolock:'Auto-tranca',
desc_autolock_d:'Base sempre trancada.',
desc_fountain:'Auto-fonte',
desc_fountain_d:'Lucro permanente 1.5×. Renova automaticamente.',
desc_money:'Dinheiro grátis + Estrelas + Diamantes',
desc_money_d:'Sem anúncios necessários.',
desc_collect:'Auto-Coleta',
desc_collect_d:'Renda de pets a cada 30s.',
desc_music:'Música de Transporte',
desc_music_d:'Música enquanto rouba. 15 gêneros.',
desc_chatfade:'Desaparecimento de Chat',
desc_chatfade_d:'Controle a visibilidade das mensagens. 5–120s.',
desc_emotes:'Emotes de Voo',
desc_emotes_d:'Emotes aleatórios ao voar.',
desc_displays:'Sobreposições de Tela',
desc_displays_d:'Coordenadas, FPS e informações do alvo.',
desc_config:'Configurações',
desc_config_d:'<kbd>M</kbd> para alternar recursos, reconfigurar teclas, ajustar velocidades.',
desc_langs:'60 Idiomas',
desc_langs_d:'Tradução completa da interface.',
desc_tower:'Completar torre',
desc_tower_d:'<kbd>Y</kbd> para vencer a Torre Obby instantaneamente.',
desc_cats:'Telas de carregamento com gatos',
desc_cats_d:'Gatos fofos substituem o carregamento.',
desc_h_install:'Instalar',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Instale o <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ou <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Clique em Instalar acima',
desc_inst_open:'Abra qualquer jogo do Meeland — simplesmente funciona',
desc_mobile:'Celular (Android)',
desc_mob_ff:'Instale o <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox para Android</a> na Play Store',
desc_mob_addon:'Abra o Firefox → Menu → Complementos → instale o <strong>Tampermonkey</strong>',
desc_mob_visit:'Visite esta página no Firefox e toque em Instalar',
desc_mob_play:'Jogue Meeland — os botões HUD sensíveis ao toque aparecem automaticamente',
desc_ios:'iOS: A Apple bloqueia extensões de navegador em todos os navegadores iOS (incluindo Firefox). Use um navegador desktop ou Android.',
desc_h_privacy:'Privacidade',
desc_privacy:'Apenas no lado do cliente — nenhum dado sai do seu navegador'
});
_mk('zh-CN','简体中文',{
close:'✕',
refresh:'↻',
go:'前往',
set:'设置',
auto:'自动',
empty:'空',
help_title:'帮助',
players_title:'玩家',
players_empty:'未找到其他玩家',
settings_title:'设置',
settings_reset:'重置',
tab_gameplay:'游戏',
tab_economy:'经济',
tab_audio:'音频',
tab_advanced:'高级',
tab_hud:'平视显示器',
tab_keys:'按键',
tab_accounts:'账号',
acct_current:'当前',
acct_new:'新建',
acct_import:'导入',
acct_switch:'切换',
acct_reload:'重新加载',
acct_delete:'删除',
acct_cancel:'取消',
acct_empty:'空',
acct_token_ph:'令牌',
acct_copy:'复制',
acct_export:'导出',
acct_rename:'重命名',
acct_save:'保存',
acct_name_len:'名称需为4-12个字符',
acct_name_fail:'重命名失败',
acct_invalid:'无效',
acct_ready:'账号就绪。关闭Meeland,切换IP后重新加载。',
acct_ip_note:'切换账号时务必使用VPN并更换IP。',
acct_howto:'1. 点击复制来复制此账号的链接。\n2. 在另一个浏览器或设备上——或与朋友一起——打开 MES。\n3. 点击导入并粘贴链接。',
sh_movement:'移动',
sh_defense:'防御',
sh_camera:'相机',
sh_overlays:'叠加层',
sh_behaviour:'行为',
sh_buttons:'按钮',
sh_language:'语言',
sh_chat:'聊天',
sh_waves:'Waves',
sh_steal_a_pet:'偷宠物',
sh_tower:'Tower',
sh_misc_multi:'其他(多模式)',
s_noclip:'穿墙',
s_fly:'飞',
s_fly_emotes:'飞行表情',
s_base_speed:'基础速度',
s_jump_mult:'跳跃高度',
s_grav_mult:'重力',
s_walk_up_walls:'走上墙',
s_carry_normalize:'携带速度+跳跃',
s_invincibility:'无敌',
s_anti_kb:'防击退',
s_invisible:'隐身',
s_xray_infection:'X光视觉(谋杀之谜)',
s_ghost_mode:'幽灵模式',
s_flee_intruder:'遇到入侵者逃跑',
s_first_person:'第一人称视角',
s_fov_first_person:'视野 (第一人称)',
s_fov_third_person:'视野(3rd)',
s_fov_vertical_mult:'FOV 垂直倍增器',
s_auto_lock:'自动锁定基地',
s_auto_fountain:'自动喷泉 (1.5×)',
s_daily_coins:'每日金币',
s_stars:'星星',
s_diamonds_tower:'钻石(塔楼)',
s_tower_loop:'塔楼循环',
s_auto_roll_x25:'自动掷骰 x25 运气',
s_auto_craft:'自动合成',
s_auto_vip_sword:'自动购买VIP',
s_auto_vip_waves:'自动购买VIP(海浪)',
s_direct_kill:'直接击杀刷屏',
s_direct_kill_rate:'击杀速率',
s_auto_buy_upgrades:'自动购买升级',
s_boost_coins:'自动升级:金币',
s_boost_diamonds:'自动升级:钻石',
s_boost_luck:'自动升级:运气',
s_auto_unlock_areas:'自动解锁区域',
s_auto_rebirth:'自动重生',
s_auto_join_tp:'传送到最高区域',
s_hide_kill_rewards:'隐藏击杀奖励',
s_hide_roll_anim:'隐藏滚动动画',
rng_title:'宠物 RNG 秘籍',
rng_sec_rolling:'滚动',
rng_sec_crafting:'制作',
rng_sec_combat:'战斗',
rng_sec_upgrades:'升级',
rng_sec_areas:'领域',
rng_actions:'行动',
log_craft:'工艺',
log_success:'成功',
log_fail:'失败',
log_unlocking_area:'解锁区',
log_area_unlocked:'区域已解锁',
log_equipped:'装备齐全',
log_bought_upgrade:'买了升级版',
log_teleported_to:'传送到',
log_rebirthing:'重生',
h_rng:'RNG。',
h_accts:'账号',
s_auto_collect:'自动收取收益',
s_collect_interval:'收取间隔',
s_chat_fade:'聊天淡出时间',
s_name_colors:'用户名颜色',
s_chat_enhance:'聊天增强',
mes_hint:'提示:在用户名中加入 "mes" 即可获得彩虹动画效果!',
s_carry_tune:'携带音乐(偷窃)',
s_pet_pickup_radius:'宠物偷取范围',
s_carry_vol:'携带音量',
carry_tune_default:'默认',
carry_tune_silent:'静音',
carry_tune_ambient:'氛围',
carry_tune_blues:'蓝调',
carry_tune_chiptune:'芯片乐',
carry_tune_classical:'古典',
carry_tune_electronic:'电子',
carry_tune_epic:'史诗',
carry_tune_folk:'民谣',
carry_tune_funk:'放克',
carry_tune_jazz:'爵士',
carry_tune_lofi:'低保真',
carry_tune_metal:'金属',
carry_tune_pop:'流行',
carry_tune_punk:'朋克',
carry_tune_reggae:'雷鬼',
carry_tune_rock:'摇滚',
s_cont_cuddle:'持续拥抱',
s_protips:'专业提示',
s_hideprotips:'隐藏我的专业提示',
s_show_exp_modes:'显示实验模式',
s_showcoords:'显示坐标',
s_showfps:'显示帧率',
s_showtargetinfo:'显示目标信息',
s_showobj:'显示实体/网格数',
s_copy_dbg:'复制调试日志',
s_copy_json:'复制 JSON',
s_clear_dbg:'清空',
h_fly:'飞行',
h_speed:'速度修改',
h_waypoints:'路径点',
h_autolock:'自动锁定',
h_invisible:'隐身',
h_cuddle:'拥抱',
h_pets:'宠物',
h_snipe:'狙击',
h_help:'帮助',
h_settings:'设置',
h_prv:'私人房间',
h_tc:'通关塔楼',
h_tcl:'塔楼循环',
kb_fly:'飞行(切换/上升)',
kb_fly_down:'飞行下降',
kb_set_home:'设定家',
kb_home:'回家',
kb_back:'返回',
kb_cuddle:'拥抱面板',
kb_settings:'设置',
kb_pets:'宠物浏览器',
kb_slots:'路径点槽位',
kb_snipe:'狙击面板',
kb_snipe_toggle:'狙击 开/关',
kb_attack:'攻击',
kb_help:'帮助 / 说明',
kb_tower:'通关塔楼',
kb_tower_loop:'塔楼循环',
kb_invisible:'隐身',
kb_first_person:'第一人称',
kb_autolock:'自动锁底座',
kb_prv:'私人房间',
kb_rng:'RNG',
kb_accts:'账号',
pets_title:'宠物',
pets_search_placeholder:'例如野生小猫,金色或钻石,(金色或祖母绿)野生',
pets_hint:'词语以"与"组合。使用 OR 表示替代,括号分组。* 或 % 作为通配符。 在词前加 - 可排除该词。',
pets_empty:'该房间未找到宠物',
pt_name:'名称',
pt_mut:'变异',
pt_rar:'稀有度',
pt_owner:'主人',
pt_worth:'价值',
pt_income:'收入/秒',
pt_dist:'距离',
slots_title:'路径点槽位',
sniper_title:'宠物狙击',
sniper_tbl_pet:'宠物',
sniper_tbl_owner:'所有者',
sniper_tbl_lock:'锁',
sniper_placeholder:'例如 halo, 金色 OR 钻石, 翡翠龙',
sniper_hint:'词语以"与"组合。使用 OR 表示替代,括号分组。* 或 % 作为通配符。 在词前加 - 可排除该词。',
sniper_room_col:'房间',
sniper_scans_col:'扫描',
sniper_top_pet_col:'顶级宠物',
sniper_top_worth_col:'最值得',
sniper_top_owner_col:'顶级业主',
sniper_age_col:'时长',
sniper_join_btn:'加入',
sniper_full:'已满',
sniper_join_failed:'目标房间已满',
sniper_scanning_rooms:'正在搜索其他房间…',
sniper_scan_off:'自动狩猎',
sniper_scan_next:'下次扫描进入',
sniper_scan_idle:'空闲 — 等待扫描',
sniper_auto_place:'自动放置到基地',
sniper_place_desc:'(将偷来的宠物放到你的基地格)',
sniper_auto_drop:'自动丢弃波浪中不匹配的宠物',
sniper_drop_desc:'(丢弃与过滤器不匹配的野生宠物,以刷新生成池)',
sniper_auto_hunt:'自动搜寻',
sniper_hunt_desc:'(探测其他房间,跳转到最佳匹配)',
sniper_auto_sell:'偷取中自动出售',
sniper_sell_desc:'(基地满时卖最差的)',
sniper_lockdown:'锁定 ≤',
sniper_lockdown_hint:'偷取剩余时间 ≤ 此值的基地目标。0 = 仅未锁定的。',
sniper_join_grace:'加入恩典',
sniper_start:'启动狙击',
sniper_stop:'停止狙击',
sniper_idle:'空闲',
sniper_no_filter:'未设置过滤器',
sniper_waiting:'等待比赛...',
sniper_hold_pause:'持有宠物 — 已暂停',
sniper_stolen_pause:'拥有我们的宠物 — 已暂停',
sniper_cooldown:'冷却中',
sniper_hopping:'切换服务器...',
sniper_na:'大厅中狙击不可用 — 请先加入比赛',
sniper_wait_lock:'等待锁定数据...',
sniper_locked:'基地已锁定 — 跳过...',
sniper_full_eggs:'基地已满 — 全是蛋,无法出售',
sniper_stealing:'正在偷取',
sniper_dropped:'已丢弃',
sniper_holding:'持有中',
sniper_place:'!放到基地。',
sniper_steal_mode:'[偷取]',
sniper_theft_nohop:'宠物正被偷取,偷取者:',
sniper_nohop_suffix:'— 不跳转',
sniper_sniping:'狙击中:',
sniper_options:'选项',
sniper_drop_fail_status:'丢弃失败!',
sniper_hotkey_label:'快捷键:',
sniper_panel_label:'面板:',
sniper_grab_fail:'抓取失败。正在重试...',
sniper_our_pet_stolen:'我们的宠物被偷 — 8秒冷却',
sniper_hopping_short:'跳转中...',
sniper_base_full:'底座满',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'冲刺',
pet_teleport_title:'传送',
pet_pickup_title:'捡起',
owner_yours:'你的',
owner_wild:'荒野',
footer_gf:'油腻的叉子',
copy_ok:'已复制',
copy_failed:'复制失败',
s_invis_on_fly:'飞行时隐身',
snipe_walk_home:'偷取后步行回家',
snipe_walk_home_desc:'步行返回基地',
sniper_afk_sell:'AFK出售不匹配的宠物',
sniper_afk_sell_desc:'(闲置5秒时,按价值出售不匹配过滤器的宠物 — 仅波浪模式)',
hb_fly:'飞',
hb_lck:'锁',
hb_inv:'隐',
hb_cud:'抱',
hb_pet:'宠',
hb_snp:'狙',
hb_cfg:'设',
hb_help:'助',
hb_rng:'RNG',
hb_accts:'账号',
ban_title:'连接被阻止',
ban_sub:'您的IP地址已被Meeland限制',
ban_body:'别担心——这很容易解决!免费VPN会给你一个新IP,让你重新开始游戏。',
ban_pick:'快速修复——选一个:',
ban_warp:'免费、无限制、一键设置',
ban_warp_store:'也可在App Store和Play Store搜索"1.1.1.1"',
ban_proton:'无流量限制,5个国家',
ban_steps:'安装 → 连接 → 刷新此页面。就这样!',
ban_ok:'知道了',
warn_title:'务必使用VPN',
warn_body:'游戏时始终开启<b>VPN</b>。',
warn_ok:'知道了',
loading:'加载中',
tcl_loading:'正在运行完整塔楼循环。按 {key} 停止。',
hop_search:'正在寻找匹配',
hop_match:'找到了{name} — 加入中',
hop_flee:'躲避入侵者',
hop_reconnect:'正在重新连接',
hop_reload:'正在重新加载',
hop_fall:'正在从坠落中恢复',
hop_join:'正在加入房间',
lock_off:'关闭',
lock_unlocked:'已解锁',
desc_intro:'MES 为您提供了 Meeland 的墙壁黑客、自动耕作、稀有宠物收集、速度提升、飞行、隐形等功能',
desc_free:'100% 免费,永远。有反馈?留下 ⭐ 好评 — 这是保持更新的动力。',
desc_h_movement:'移动',
desc_h_combat:'战斗',
desc_h_tuning:'调校',
desc_h_pets:'宠物与偷窃',
desc_h_economy:'经济',
desc_h_custom:'自定义',
desc_h_extras:'其他',
desc_fly:'飞行',
desc_fly_d:'按住空格上升,F下降。速度可调。',
desc_speed:'闪现',
desc_speed_d:'Shift瞬间传送。',
desc_noclip:'穿墙',
desc_noclip_d:'穿墙行走。',
desc_walls:'爬墙',
desc_walls_d:'攀爬任意表面。',
desc_waypts:'路径点',
desc_waypts_d:'保存10个位置。一键传送。<kbd>Z</kbd>切换返回。',
desc_invis:'隐身',
desc_invis_d:'按CapsLock完全消失。',
desc_fpv:'第一人称视角',
desc_fpv_d:'按 <kbd>.</kbd> 切换第一人称视角。',
desc_anti_invis:'反隐身',
desc_anti_invis_d:'看到隐身玩家的幽灵。',
desc_xray:'X光视觉',
desc_xray_d:'透过墙壁看到玩家,在谋杀之谜中。红色 = 凶手,绿色 = 平民。',
desc_nodeathh:'无敌',
desc_nodeath_d:'免疫所有伤害。',
desc_antikb:'防击退',
desc_antikb_d:'不会被推动。',
desc_attack:'瞬间攻击',
desc_attack_d:'<kbd>G</kbd>传送到最近玩家并攻击。',
desc_jumpgrav:'跳跃与重力',
desc_jumpgrav_d:'设置中可调倍率。',
desc_fov:'视野控制',
desc_fov_d:'第一/第三人称视野滑块。',
desc_autoinvis:'飞行自动隐身',
desc_autoinvis_d:'飞行时自动隐身。',
desc_sniper:'宠物狙击',
desc_sniper_d:'自动偷取筛选宠物。两种模式。',
desc_prv:'私人房间',
desc_prv_d:'<kbd>PgDn</kbd> 在当前模式创建私人房间并自动加入。',
desc_petbrow:'宠物浏览器',
desc_petbrow_d:'<kbd>K</kbd>显示所有宠物。排序、筛选、抓取。',
desc_cuddle:'拥抱面板',
desc_cuddle_d:'<kbd>J</kbd>按距离列出玩家。点击跟随。',
desc_return:'自动返回',
desc_return_d:'偷取后传送回家。',
desc_autolock:'自动锁定',
desc_autolock_d:'基地始终锁定。',
desc_fountain:'自动喷泉',
desc_fountain_d:'永久1.5×利润。自动续期。',
desc_money:'免费金钱 + 星星 + 钻石',
desc_money_d:'无需广告。',
desc_collect:'自动收集',
desc_collect_d:'宠物收入每30秒领取。',
desc_music:'偷窃音乐',
desc_music_d:'偷窃时播放音乐。15种风格。',
desc_chatfade:'聊天淡出',
desc_chatfade_d:'控制消息显示时间。5–120秒。',
desc_emotes:'飞行表情',
desc_emotes_d:'飞行时随机表情。',
desc_displays:'显示叠加',
desc_displays_d:'坐标、FPS和目标信息。',
desc_config:'设置',
desc_config_d:'<kbd>M</kbd>切换功能、重绑按键、调整速度。',
desc_langs:'60种语言',
desc_langs_d:'完整界面翻译。',
desc_tower:'通关塔楼',
desc_tower_d:'<kbd>Y</kbd>秒通障碍塔。',
desc_cats:'猫咪加载画面',
desc_cats_d:'可爱的猫咪替代加载画面。',
desc_h_install:'安装',
desc_desktop:'桌面端(Chrome、Edge、Firefox、Opera、Brave)',
desc_inst_ext:'安装 <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> 或 <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'点击上方的安装',
desc_inst_open:'打开任意 Meeland 游戏 — 直接生效',
desc_mobile:'手机(Android)',
desc_mob_ff:'从 Play 商店安装 <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android 版</a>',
desc_mob_addon:'打开 Firefox → 菜单 → 附加组件 → 安装 <strong>Tampermonkey</strong>',
desc_mob_visit:'在 Firefox 中访问此页面并点击安装',
desc_mob_play:'玩 Meeland — 触摸 HUD 按钮自动出现',
desc_ios:'iOS:Apple 在所有 iOS 浏览器(包括 Firefox)中屏蔽浏览器扩展。请使用桌面浏览器或 Android。',
desc_h_privacy:'隐私',
desc_privacy:'仅限客户端 — 没有数据离开你的浏览器'
});
_mk('zh-TW','繁體中文',{
close:'✕',
refresh:'↻',
go:'前往',
set:'設定',
auto:'自動',
empty:'空',
help_title:'幫助',
players_title:'玩家',
players_empty:'未找到其他玩家',
settings_title:'設定',
settings_reset:'重設',
tab_gameplay:'遊戲',
tab_economy:'經濟',
tab_audio:'音頻',
tab_advanced:'進階',
tab_hud:'抬頭顯示器',
tab_keys:'按鍵',
tab_accounts:'帳號',
acct_current:'目前',
acct_new:'新增',
acct_import:'匯入',
acct_switch:'切換',
acct_reload:'重新載入',
acct_delete:'刪除',
acct_cancel:'取消',
acct_empty:'空',
acct_token_ph:'權杖',
acct_copy:'複製',
acct_export:'匯出',
acct_rename:'重新命名',
acct_save:'儲存',
acct_name_len:'名稱需為4-12個字元',
acct_name_fail:'重新命名失敗',
acct_invalid:'無效',
acct_ready:'帳號就緒。關閉Meeland,切換IP後重新載入。',
acct_ip_note:'切換帳號時務必使用VPN並更換IP。',
acct_howto:'1. 點擊複製來複製此帳號的連結。\n2. 在另一個瀏覽器或裝置上——或與朋友一起——開啟 MES。\n3. 點擊匯入並貼上連結。',
sh_movement:'移動',
sh_defense:'防禦',
sh_camera:'相機',
sh_overlays:'疊加層',
sh_behaviour:'行為',
sh_buttons:'按鈕',
sh_language:'語言',
sh_chat:'聊天',
sh_waves:'Waves',
sh_steal_a_pet:'偷寵物',
sh_tower:'Tower',
sh_misc_multi:'其他(多模式)',
s_noclip:'穿牆',
s_fly:'飛',
s_fly_emotes:'飛行表情',
s_base_speed:'基礎速度',
s_jump_mult:'跳躍高度',
s_grav_mult:'重力',
s_walk_up_walls:'走上牆',
s_carry_normalize:'攜帶速度+跳躍',
s_invincibility:'無敵',
s_anti_kb:'防擊退',
s_invisible:'隱身',
s_xray_infection:'X光視覺(謀殺之謎)',
s_ghost_mode:'幽靈模式',
s_flee_intruder:'遇到入侵者逃跑',
s_first_person:'第一人稱視角',
s_fov_first_person:'視野 (第一人稱)',
s_fov_third_person:'視野(3rd)',
s_fov_vertical_mult:'FOV 垂直倍增器',
s_auto_lock:'自動鎖定基地',
s_auto_fountain:'自動噴泉 (1.5×)',
s_daily_coins:'每日金幣',
s_stars:'星星',
s_diamonds_tower:'鑽石(塔樓)',
s_tower_loop:'塔樓循環',
s_auto_roll_x25:'自動擲骰 x25 運氣',
s_auto_craft:'自動合成',
s_auto_vip_sword:'自動購買VIP',
s_auto_vip_waves:'自動購買VIP(海浪)',
s_direct_kill:'直接擊殺刷屏',
s_direct_kill_rate:'擊殺速率',
s_auto_buy_upgrades:'自動購買升級',
s_boost_coins:'自動升級:金幣',
s_boost_diamonds:'自動升級:鑽石',
s_boost_luck:'自動升級:運氣',
s_auto_unlock_areas:'自動解鎖區域',
s_auto_rebirth:'自動重生',
s_auto_join_tp:'傳送到最高區域',
s_hide_kill_rewards:'隱藏擊殺獎勵',
s_hide_roll_anim:'隱藏滾動動畫',
rng_title:'寵物 RNG 秘籍',
rng_sec_rolling:'捲動',
rng_sec_crafting:'製作',
rng_sec_combat:'戰鬥',
rng_sec_upgrades:'升級',
rng_sec_areas:'領域',
rng_actions:'行動',
log_craft:'工藝',
log_success:'成功',
log_fail:'失敗',
log_unlocking_area:'解鎖區',
log_area_unlocked:'區域已解鎖',
log_equipped:'裝備齊全',
log_bought_upgrade:'買了升級版',
log_teleported_to:'傳送到',
log_rebirthing:'重生',
h_rng:'RNG。',
h_accts:'帳號',
s_auto_collect:'自動收取收益',
s_collect_interval:'收取間隔',
s_chat_fade:'聊天淡出時間',
s_name_colors:'用戶名稱顏色',
s_chat_enhance:'聊天增強',
mes_hint:'提示:在使用者名稱中加入 "mes" 即可獲得彩虹動畫效果!',
s_carry_tune:'攜帶音樂(偷竊)',
s_pet_pickup_radius:'寵物偷取範圍',
s_carry_vol:'攜帶音量',
carry_tune_default:'預設',
carry_tune_silent:'靜音',
carry_tune_ambient:'氛圍',
carry_tune_blues:'藍調',
carry_tune_chiptune:'晶片音樂',
carry_tune_classical:'古典',
carry_tune_electronic:'電子',
carry_tune_epic:'史詩',
carry_tune_folk:'民謠',
carry_tune_funk:'放克',
carry_tune_jazz:'爵士',
carry_tune_lofi:'低保真',
carry_tune_metal:'金屬',
carry_tune_pop:'流行',
carry_tune_punk:'龐克',
carry_tune_reggae:'雷鬼',
carry_tune_rock:'搖滾',
s_cont_cuddle:'持續擁抱',
s_protips:'專業提示',
s_hideprotips:'隱藏我的專業提示',
s_show_exp_modes:'顯示實驗模式',
s_showcoords:'顯示座標',
s_showfps:'顯示幀率',
s_showtargetinfo:'顯示目標資訊',
s_showobj:'顯示實體/網格數',
s_copy_dbg:'複製偵錯日誌',
s_copy_json:'複製 JSON',
s_clear_dbg:'清空',
h_fly:'飛行',
h_speed:'速度修改',
h_waypoints:'路徑點',
h_autolock:'自動鎖定',
h_invisible:'隱身',
h_cuddle:'擁抱',
h_pets:'寵物',
h_snipe:'狙擊',
h_help:'幫助',
h_settings:'設定',
h_prv:'私人房間',
h_tc:'通關塔樓',
h_tcl:'塔樓循環',
kb_fly:'飛行(切換/上升)',
kb_fly_down:'飛行下降',
kb_set_home:'設定家',
kb_home:'回家',
kb_back:'返回',
kb_cuddle:'擁抱面板',
kb_settings:'設定',
kb_pets:'寵物瀏覽器',
kb_slots:'路徑點欄位',
kb_snipe:'狙擊面板',
kb_snipe_toggle:'狙擊 開/關',
kb_attack:'攻擊',
kb_help:'幫助 / 說明',
kb_tower:'通關塔樓',
kb_tower_loop:'塔樓循環',
kb_invisible:'隱身',
kb_first_person:'第一人稱',
kb_autolock:'自動鎖底座',
kb_prv:'私人房間',
kb_rng:'RNG',
kb_accts:'帳號',
pets_title:'寵物',
pets_search_placeholder:'例如野生小貓,金色或鑽石,(金色或祖母綠)野生',
pets_hint:'詞語以「與」組合。使用 OR 表示替代,括號分組。* 或 % 作為萬用字元。 在詞前加 - 可排除該詞。',
pets_empty:'該房間未找到寵物',
pt_name:'名稱',
pt_mut:'變異',
pt_rar:'稀有度',
pt_owner:'主人',
pt_worth:'價值',
pt_income:'收入/秒',
pt_dist:'距離',
slots_title:'路徑點欄位',
sniper_title:'寵物狙擊',
sniper_tbl_pet:'寵物',
sniper_tbl_owner:'擁有者',
sniper_tbl_lock:'鎖',
sniper_placeholder:'例如 halo, 金色 OR 鑽石, 翡翠龍',
sniper_hint:'詞語以「與」組合。使用 OR 表示替代,括號分組。* 或 % 作為萬用字元。 在詞前加 - 可排除該詞。',
sniper_room_col:'房間',
sniper_scans_col:'掃描',
sniper_top_pet_col:'頂級寵物',
sniper_top_worth_col:'最值得',
sniper_top_owner_col:'頂級業主',
sniper_age_col:'時長',
sniper_join_btn:'加入',
sniper_full:'已滿',
sniper_join_failed:'目標房間已滿',
sniper_scanning_rooms:'正在搜尋其他房間…',
sniper_scan_off:'自動狩獵',
sniper_scan_next:'下次掃描進入',
sniper_scan_idle:'空閒 — 等待掃描',
sniper_auto_place:'自動放置到基地',
sniper_place_desc:'(將偷來的寵物放到你的基地格)',
sniper_auto_drop:'自動丟棄波浪中不匹配的寵物',
sniper_drop_desc:'(丟棄與篩選器不匹配的野生寵物,以刷新重生池)',
sniper_auto_hunt:'自動搜尋',
sniper_hunt_desc:'(探測其他房間,跳轉到最佳匹配)',
sniper_auto_sell:'偷取中自動出售',
sniper_sell_desc:'(基地滿時賣最差的)',
sniper_lockdown:'鎖定 ≤',
sniper_lockdown_hint:'偷取剩餘時間 ≤ 此值的基地目標。0 = 僅未鎖定的。',
sniper_join_grace:'加入恩典',
sniper_start:'啟動狙擊',
sniper_stop:'停止狙擊',
sniper_idle:'閒置',
sniper_no_filter:'未設定過濾器',
sniper_waiting:'等待比賽...',
sniper_hold_pause:'持有寵物 — 已暫停',
sniper_stolen_pause:'擁有我們的寵物 — 已暫停',
sniper_cooldown:'冷卻中',
sniper_hopping:'切換伺服器...',
sniper_na:'大廳中狙擊不可用 — 請先加入比賽',
sniper_wait_lock:'等待鎖定資料...',
sniper_locked:'基地已鎖定 — 跳過...',
sniper_full_eggs:'基地已滿 — 全是蛋,無法出售',
sniper_stealing:'正在偷取',
sniper_dropped:'已丟棄',
sniper_holding:'持有中',
sniper_place:'!放到基地。',
sniper_steal_mode:'[偷取]',
sniper_theft_nohop:'寵物正被偷取,偷取者:',
sniper_nohop_suffix:'— 不跳轉',
sniper_sniping:'狙擊中:',
sniper_options:'選項',
sniper_drop_fail_status:'丟棄失敗!',
sniper_hotkey_label:'快捷鍵:',
sniper_panel_label:'面板:',
sniper_grab_fail:'抓取失敗。正在重試...',
sniper_our_pet_stolen:'我們的寵物被偷 — 8秒冷卻',
sniper_hopping_short:'跳轉中...',
sniper_base_full:'底座滿',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'衝刺',
pet_teleport_title:'傳送',
pet_pickup_title:'撿起',
owner_yours:'你的',
owner_wild:'荒野',
footer_gf:'油膩的叉子',
copy_ok:'已複製',
copy_failed:'複製失敗',
s_invis_on_fly:'飛行時隱身',
snipe_walk_home:'偷取後步行回家',
snipe_walk_home_desc:'步行返回基地',
sniper_afk_sell:'AFK出售不匹配的寵物',
sniper_afk_sell_desc:'(閒置5秒時,按價值出售不匹配過濾器的寵物 — 僅波浪模式)',
hb_fly:'飛',
hb_lck:'鎖',
hb_inv:'隱',
hb_cud:'抱',
hb_pet:'寵',
hb_snp:'狙',
hb_cfg:'設',
hb_help:'助',
hb_rng:'RNG',
hb_accts:'帳號',
ban_title:'連線被阻擋',
ban_sub:'您的IP位址已被Meeland限制',
ban_body:'別擔心——這很容易解決!免費VPN會給你一個新IP,讓你重新開始遊戲。',
ban_pick:'快速修復——選一個:',
ban_warp:'免費、無限制、一鍵設定',
ban_warp_store:'也可在App Store和Play Store搜尋"1.1.1.1"',
ban_proton:'無流量限制,5個國家',
ban_steps:'安裝 → 連線 → 重新整理此頁面。就這樣!',
ban_ok:'知道了',
warn_title:'務必使用VPN',
warn_body:'遊玩時始終開啟<b>VPN</b>。',
warn_ok:'知道了',
loading:'載入中',
tcl_loading:'正在執行完整塔樓循環。按 {key} 停止。',
hop_search:'正在尋找匹配',
hop_match:'找到了{name} — 加入中',
hop_flee:'躲避入侵者',
hop_reconnect:'正在重新連接',
hop_reload:'正在重新載入',
hop_fall:'正在從墜落中恢復',
hop_join:'正在加入房間',
lock_off:'關閉',
lock_unlocked:'已解鎖',
desc_intro:'MES 為您提供了 Meeland 的牆壁駭客、自動耕作、稀有寵物收集、速度提升、飛行、隱形等功能',
desc_free:'100% 免費,永遠。有回饋?留下 ⭐ 好評 — 這是維持更新的動力。',
desc_h_movement:'移動',
desc_h_combat:'戰鬥',
desc_h_tuning:'調校',
desc_h_pets:'寵物與偷竊',
desc_h_economy:'經濟',
desc_h_custom:'自訂',
desc_h_extras:'其他',
desc_fly:'飛行',
desc_fly_d:'按住空白鍵上升,F下降。速度可調。',
desc_speed:'閃現',
desc_speed_d:'Shift瞬間傳送。',
desc_noclip:'穿牆',
desc_noclip_d:'穿牆行走。',
desc_walls:'爬牆',
desc_walls_d:'攀爬任意表面。',
desc_waypts:'路徑點',
desc_waypts_d:'儲存10個位置。一鍵傳送。<kbd>Z</kbd>切換返回。',
desc_invis:'隱身',
desc_invis_d:'按CapsLock完全消失。',
desc_fpv:'第一人稱視角',
desc_fpv_d:'按 <kbd>.</kbd> 切換第一人稱視角。',
desc_anti_invis:'反隱身',
desc_anti_invis_d:'看到隱身玩家的幽靈。',
desc_xray:'X光視覺',
desc_xray_d:'透過牆壁看到玩家,在謀殺之謎中。紅色 = 凶手,綠色 = 平民。',
desc_nodeathh:'無敵',
desc_nodeath_d:'免疫所有傷害。',
desc_antikb:'防擊退',
desc_antikb_d:'不會被推動。',
desc_attack:'瞬間攻擊',
desc_attack_d:'<kbd>G</kbd>傳送到最近玩家並攻擊。',
desc_jumpgrav:'跳躍與重力',
desc_jumpgrav_d:'設定中可調倍率。',
desc_fov:'視野控制',
desc_fov_d:'第一/第三人稱視野滑塊。',
desc_autoinvis:'飛行自動隱身',
desc_autoinvis_d:'飛行時自動隱身。',
desc_sniper:'寵物狙擊',
desc_sniper_d:'自動偷取篩選寵物。兩種模式。',
desc_prv:'私人房間',
desc_prv_d:'<kbd>PgDn</kbd> 在當前模式建立私人房間並自動加入。',
desc_petbrow:'寵物瀏覽器',
desc_petbrow_d:'<kbd>K</kbd>顯示所有寵物。排序、篩選、抓取。',
desc_cuddle:'擁抱面板',
desc_cuddle_d:'<kbd>J</kbd>按距離列出玩家。點擊跟隨。',
desc_return:'自動返回',
desc_return_d:'偷取後傳送回家。',
desc_autolock:'自動鎖定',
desc_autolock_d:'基地始終鎖定。',
desc_fountain:'自動噴泉',
desc_fountain_d:'永久1.5×利潤。自動續期。',
desc_money:'免費金錢 + 星星 + 鑽石',
desc_money_d:'無需廣告。',
desc_collect:'自動收集',
desc_collect_d:'寵物收入每30秒領取。',
desc_music:'偷竊音樂',
desc_music_d:'偷竊時播放音樂。15種風格。',
desc_chatfade:'聊天淡出',
desc_chatfade_d:'控制訊息顯示時間。5–120秒。',
desc_emotes:'飛行表情',
desc_emotes_d:'飛行時隨機表情。',
desc_displays:'顯示疊加',
desc_displays_d:'座標、FPS和目標資訊。',
desc_config:'設定',
desc_config_d:'<kbd>M</kbd>切換功能、重綁按鍵、調整速度。',
desc_langs:'60種語言',
desc_langs_d:'完整介面翻譯。',
desc_tower:'通關塔樓',
desc_tower_d:'<kbd>Y</kbd>秒通障礙塔。',
desc_cats:'貓咪載入畫面',
desc_cats_d:'可愛的貓咪取代載入畫面。',
desc_h_install:'安裝',
desc_desktop:'桌面端(Chrome、Edge、Firefox、Opera、Brave)',
desc_inst_ext:'安裝 <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> 或 <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'點擊上方的安裝',
desc_inst_open:'開啟任意 Meeland 遊戲 — 直接生效',
desc_mobile:'手機(Android)',
desc_mob_ff:'從 Play 商店安裝 <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android 版</a>',
desc_mob_addon:'開啟 Firefox → 選單 → 附加元件 → 安裝 <strong>Tampermonkey</strong>',
desc_mob_visit:'在 Firefox 中造訪此頁面並點擊安裝',
desc_mob_play:'玩 Meeland — 觸控 HUD 按鈕自動出現',
desc_ios:'iOS:Apple 在所有 iOS 瀏覽器(包括 Firefox)中封鎖瀏覽器擴充功能。請使用桌面瀏覽器或 Android。',
desc_h_privacy:'隱私',
desc_privacy:'僅限用戶端 — 沒有資料離開你的瀏覽器'
});
_mk('ja','日本語',{
close:'✕',
refresh:'↻',
go:'移動',
set:'設定',
auto:'自動',
empty:'空',
help_title:'ヘルプ',
players_title:'プレイヤー',
players_empty:'他のプレイヤーが見つかりません',
settings_title:'設定',
settings_reset:'リセット',
tab_gameplay:'ゲーム',
tab_economy:'経済',
tab_audio:'オーディオ',
tab_advanced:'高度',
tab_hud:'HUD',
tab_keys:'キー',
tab_accounts:'アカウント',
acct_current:'現在',
acct_new:'新規',
acct_import:'インポート',
acct_switch:'切り替え',
acct_reload:'再読み込み',
acct_delete:'削除',
acct_cancel:'キャンセル',
acct_empty:'空',
acct_token_ph:'トークン',
acct_copy:'コピー',
acct_export:'エクスポート',
acct_rename:'名前を変更',
acct_save:'保存',
acct_name_len:'名前は4〜12文字で入力してください',
acct_name_fail:'名前の変更に失敗しました',
acct_invalid:'無効',
acct_ready:'アカウント準備完了。Meelandを閉じてIPを切り替えて再読み込みしてください。',
acct_ip_note:'アカウント切替時は必ずVPNを使用しIPを切り替えてください。',
acct_howto:'1. コピーをクリックして、このアカウントのリンクをコピーします。\n2. 別のブラウザやデバイスで — 友達と一緒でも — MESを開きます。\n3. インポートをクリックしてリンクを貼り付けます。',
sh_movement:'移動',
sh_defense:'防御',
sh_camera:'カメラ',
sh_overlays:'オーバーレイ',
sh_behaviour:'動作',
sh_buttons:'ボタン',
sh_language:'言語',
sh_chat:'チャット',
sh_waves:'Waves',
sh_steal_a_pet:'ペットを盗む',
sh_tower:'Tower',
sh_misc_multi:'その他(マルチモード)',
s_noclip:'壁すり抜け',
s_fly:'飛ぶ',
s_fly_emotes:'飛行エモート',
s_base_speed:'基本速度',
s_jump_mult:'ジャンプの高さ',
s_grav_mult:'重力',
s_walk_up_walls:'ウォークアップウォールズ',
s_carry_normalize:'キャリースピード+ジャンプ',
s_invincibility:'無敵',
s_anti_kb:'ノックバック無効',
s_invisible:'透明化',
s_xray_infection:'Xレイビジョン(マーダーミステリー)',
s_ghost_mode:'ゴーストモード',
s_flee_intruder:'侵入者で逃げる',
s_first_person:'一人称視点',
s_fov_first_person:'視野 (一人称)',
s_fov_third_person:'視野(3人称)',
s_fov_vertical_mult:'FOV垂直乗数',
s_auto_lock:'拠点自動ロック',
s_auto_fountain:'自動噴水(1.5倍)',
s_daily_coins:'デイリーコイン',
s_stars:'スター',
s_diamonds_tower:'ダイヤモンド(タワー)',
s_tower_loop:'タワーループ',
s_auto_roll_x25:'オートロール x25 ラック',
s_auto_craft:'自動クラフト',
s_auto_vip_sword:'自動VIP購入',
s_auto_vip_waves:'自動VIP購入(ウェーブ)',
s_direct_kill:'直接キル連打',
s_direct_kill_rate:'キルレート',
s_auto_buy_upgrades:'アップグレードの自動購入',
s_boost_coins:'自動アップグレード: コイン',
s_boost_diamonds:'自動アップグレード: ダイヤモンド',
s_boost_luck:'自動アップグレード: 幸運',
s_auto_unlock_areas:'自動ロック解除エリア',
s_auto_rebirth:'自動復活',
s_auto_join_tp:'最も高いエリアへテレポート',
s_hide_kill_rewards:'キル報酬を非表示にする',
s_hide_roll_anim:'ロールアニメーションを非表示にする',
rng_title:'ペット RNG 攻略',
rng_sec_rolling:'ローリング',
rng_sec_crafting:'クラフト',
rng_sec_combat:'戦闘',
rng_sec_upgrades:'アップグレード',
rng_sec_areas:'エリア',
rng_actions:'アクション',
log_craft:'クラフト',
log_success:'成功',
log_fail:'失敗',
log_unlocking_area:'ロック解除エリア',
log_area_unlocked:'エリアロック解除',
log_equipped:'装備済み',
log_bought_upgrade:'購入したアップグレード',
log_teleported_to:'テレポート先',
log_rebirthing:'生まれ変わる',
h_rng:'NG',
h_accts:'アカウント',
s_auto_collect:'収入自動回収',
s_collect_interval:'回収間隔',
s_chat_fade:'チャットフェード時間',
s_name_colors:'ユーザー名の色',
s_chat_enhance:'チャットの強化',
mes_hint:'ヒント: ユーザー名に "mes" を含めると、虹色のアニメーション効果が得られます!',
s_carry_tune:'キャリー曲(盗む)',
s_pet_pickup_radius:'ペット盗み範囲',
s_carry_vol:'キャリー音量',
carry_tune_default:'デフォルト',
carry_tune_silent:'サイレント',
carry_tune_ambient:'アンビエント',
carry_tune_blues:'ブルース',
carry_tune_chiptune:'チップチューン',
carry_tune_classical:'クラシック',
carry_tune_electronic:'エレクトロニック',
carry_tune_epic:'エピック',
carry_tune_folk:'フォーク',
carry_tune_funk:'ファンク',
carry_tune_jazz:'ジャズ',
carry_tune_lofi:'ローファイ',
carry_tune_metal:'メタル',
carry_tune_pop:'ポップ',
carry_tune_punk:'パンク',
carry_tune_reggae:'レゲエ',
carry_tune_rock:'ロック',
s_cont_cuddle:'ハグ継続',
s_protips:'プロのヒント',
s_hideprotips:'マイプロヒントを非表示',
s_show_exp_modes:'実験モードを表示',
s_showcoords:'座標を表示',
s_showfps:'FPS を表示',
s_showtargetinfo:'ターゲット情報を表示',
s_showobj:'エンティティ/メッシュ数を表示',
s_copy_dbg:'デバッグログをコピー',
s_copy_json:'JSONをコピー',
s_clear_dbg:'クリア',
h_fly:'飛行',
h_speed:'スピードハック',
h_waypoints:'ウェイポイント',
h_autolock:'自動ロック',
h_invisible:'透明化',
h_cuddle:'ハグ',
h_pets:'ペット',
h_snipe:'スナイパー',
h_help:'ヘルプ',
h_settings:'設定',
h_prv:'プライベートルーム',
h_tc:'タワークリア',
h_tcl:'タワーループ',
kb_fly:'飛行(切替/上昇)',
kb_fly_down:'飛行下降',
kb_set_home:'ホーム設定',
kb_home:'ホーム',
kb_back:'戻る',
kb_cuddle:'ハグパネル',
kb_settings:'設定',
kb_pets:'ペットブラウザ',
kb_slots:'ウェイポイントスロット',
kb_snipe:'スナイパーパネル',
kb_snipe_toggle:'スナイパー オン/オフ',
kb_attack:'攻撃',
kb_help:'ヘルプ / 説明',
kb_tower:'タワークリア',
kb_tower_loop:'タワーループ',
kb_invisible:'透明化',
kb_first_person:'一人称',
kb_autolock:'オートロックベース',
kb_prv:'プライベートルーム',
kb_rng:'RNG',
kb_accts:'アカウント',
pets_title:'ペット',
pets_search_placeholder:'例えばワイルドキティ、ゴールデン OR ダイヤモンド、(ゴールデン OR エメラルド) ワイルド',
pets_hint:'単語はANDで結合されます。ORで代替、括弧でグループ化。* または % をワイルドカードとして使用。 単語の前に - を付けると除外されます。',
pets_empty:'この部屋にペットが見つかりません',
pt_name:'名前',
pt_mut:'変異',
pt_rar:'レアリティ',
pt_owner:'オーナー',
pt_worth:'価値',
pt_income:'収入/秒',
pt_dist:'距離',
slots_title:'ウェイポイントスロット',
sniper_title:'ペットスナイパー',
sniper_tbl_pet:'ペット',
sniper_tbl_owner:'所有者',
sniper_tbl_lock:'ロック',
sniper_placeholder:'例: ハロー, ゴールド OR ダイヤモンド, エメラルドドラゴン',
sniper_hint:'単語はANDで結合されます。ORで代替、括弧でグループ化。* または % をワイルドカードとして使用。 単語の前に - を付けると除外されます。',
sniper_room_col:'ルーム',
sniper_scans_col:'スキャン',
sniper_top_pet_col:'トップペット',
sniper_top_worth_col:'トップワース',
sniper_top_owner_col:'トップオーナー',
sniper_age_col:'経過',
sniper_join_btn:'参加',
sniper_full:'満杯',
sniper_join_failed:'対象の部屋が満室',
sniper_scanning_rooms:'他のルームを検索中…',
sniper_scan_off:'オートハントオフ',
sniper_scan_next:'次のスキャンイン',
sniper_scan_idle:'アイドル — スキャンを待機中',
sniper_auto_place:'拠点に自動配置',
sniper_place_desc:'(盗んだペットを拠点スロットに置く)',
sniper_auto_drop:'ウェーブでフィルターに一致しないペットを自動ドロップ',
sniper_drop_desc:'(フィルターに一致しない野生ペットをドロップしてスポーンプールを更新)',
sniper_auto_hunt:'自動ハント',
sniper_hunt_desc:'(他の部屋を調査し、最良の一致へホップ)',
sniper_auto_sell:'スティールで自動売却',
sniper_sell_desc:'(拠点が満杯時に最低のものを売却)',
sniper_lockdown:'ロックダウン ≤',
sniper_lockdown_hint:'この残り時間以下の拠点でスティール対象。0 = ロック解除のみ。',
sniper_join_grace:'恵みに参加してください',
sniper_start:'スナイパー開始',
sniper_stop:'スナイパー停止',
sniper_idle:'待機中',
sniper_no_filter:'フィルター未設定',
sniper_waiting:'試合待機中...',
sniper_hold_pause:'ペット保持中 — 一時停止',
sniper_stolen_pause:'ペットが盗まれました — 一時停止',
sniper_cooldown:'クールダウン',
sniper_hopping:'サーバー変更中...',
sniper_na:'ロビーではスナイパー使用不可 — まず試合に参加してください',
sniper_wait_lock:'ロックデータ待機中...',
sniper_locked:'拠点ロック中 — スキップ...',
sniper_full_eggs:'拠点満杯 — 卵のみ、売却不可',
sniper_stealing:'スティール中',
sniper_dropped:'ドロップ済み',
sniper_holding:'保持中',
sniper_place:'!拠点に配置してください。',
sniper_steal_mode:'【スティール】',
sniper_theft_nohop:'ペットが盗まれています:',
sniper_nohop_suffix:'— ホップなし',
sniper_sniping:'スナイプ中:',
sniper_options:'オプション',
sniper_drop_fail_status:'ドロップ失敗!',
sniper_hotkey_label:'ホットキー:',
sniper_panel_label:'パネル:',
sniper_grab_fail:'グラブ失敗。再試行中...',
sniper_our_pet_stolen:'ペットが盗まれました — 8秒クールダウン',
sniper_hopping_short:'ホップ中...',
sniper_base_full:'ベースがいっぱい',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'スプリント',
pet_teleport_title:'テレポート',
pet_pickup_title:'選び出す',
owner_yours:'あなたのもの',
owner_wild:'野生',
footer_gf:'脂っこいフォーク',
copy_ok:'コピーされました',
copy_failed:'コピーに失敗しました',
s_invis_on_fly:'飛行時に透明化',
snipe_walk_home:'盗んだ後歩いて帰る',
snipe_walk_home_desc:'歩いて拠点に戻る',
sniper_afk_sell:'AFK一致しないペットを売却',
sniper_afk_sell_desc:'(5秒間操作がない場合、フィルターに一致しないペットを価値で売却 — ウェーブのみ)',
hb_fly:'飛',
hb_lck:'錠',
hb_inv:'隠',
hb_cud:'抱',
hb_pet:'寵',
hb_snp:'狙',
hb_cfg:'設',
hb_help:'助',
hb_rng:'RNG',
hb_accts:'アカウント',
ban_title:'接続がブロックされました',
ban_sub:'あなたのIPアドレスはMeelandによって制限されています',
ban_body:'ご心配なく——簡単に解決できます!無料VPNで新しいIPを取得して、再びプレイできます。',
ban_pick:'簡単な修正——どれか選んでください:',
ban_warp:'無料、無制限、ワンクリック設定',
ban_warp_store:'App StoreとPlay Storeでも"1.1.1.1"として入手可能',
ban_proton:'データ制限なし、5か国',
ban_steps:'インストール → 接続 → このページを更新。それだけ!',
ban_ok:'了解',
warn_title:'常にVPNを使用してください',
warn_body:'常に<b>VPN</b>をオンにしてプレイ。',
warn_ok:'了解しました',
loading:'読み込み中',
tcl_loading:'タワー完全ループを実行中。{key} を押して停止。',
hop_search:'マッチを検索中',
hop_match:'{name} 発見 — 参加中',
hop_flee:'侵入者から逃走中',
hop_reconnect:'再接続中',
hop_reload:'再読み込み中',
hop_fall:'落下から復帰中',
hop_join:'ルームに参加中',
lock_off:'オフ',
lock_unlocked:'解除済',
desc_intro:'MES は、メーランドでウォールハック、自動農業、珍しいペットの収集、速度向上、飛行、透明化などを提供します。',
desc_free:'100%無料、永久に。フィードバックがありますか?⭐ レビューをお願いします — それがアップデートの原動力です。',
desc_h_movement:'移動',
desc_h_combat:'戦闘',
desc_h_tuning:'調整',
desc_h_pets:'ペットと窃盗',
desc_h_economy:'経済',
desc_h_custom:'カスタマイズ',
desc_h_extras:'その他',
desc_fly:'飛行',
desc_fly_d:'Space長押しで上昇、Fで下降。速度調整可。',
desc_speed:'ブリンク',
desc_speed_d:'Shiftで瞬間移動。',
desc_noclip:'壁すり抜け',
desc_noclip_d:'壁をすり抜ける。',
desc_walls:'壁歩き',
desc_walls_d:'どんな表面も登れる。',
desc_waypts:'ウェイポイント',
desc_waypts_d:'10箇所保存。ワンキーテレポート。<kbd>Z</kbd>で切替。',
desc_invis:'透明',
desc_invis_d:'CapsLockで完全に消える。',
desc_fpv:'一人称視点',
desc_fpv_d:'<kbd>.</kbd> で一人称視点を切り替え。',
desc_anti_invis:'透明化対策',
desc_anti_invis_d:'透明プレイヤーが幽霊で見える。',
desc_xray:'Xレイビジョン',
desc_xray_d:'マーダーミステリーで壁越しにプレイヤーを見る。赤 = 殺人鬼、緑 = 市民。',
desc_nodeathh:'無敵',
desc_nodeath_d:'すべてのダメージに免疫。',
desc_antikb:'アンチノックバック',
desc_antikb_d:'押されない。',
desc_attack:'即時攻撃',
desc_attack_d:'<kbd>G</kbd>で最寄りプレイヤーに移動して攻撃。',
desc_jumpgrav:'ジャンプと重力',
desc_jumpgrav_d:'設定で倍率を調整可能。',
desc_fov:'FOV 調整',
desc_fov_d:'一人称・三人称のFOVスライダー。',
desc_autoinvis:'飛行時自動透明化',
desc_autoinvis_d:'飛行時に自動で透明になる。',
desc_sniper:'ペットスナイパー',
desc_sniper_d:'フィルター済みペット自動窃盗。両モード。',
desc_prv:'プライベートルーム',
desc_prv_d:'<kbd>PgDn</kbd>で現在のモードのプライベートルームを作成し自動参加。',
desc_petbrow:'ペットブラウザ',
desc_petbrow_d:'<kbd>K</kbd>で全ペット表示。並替、絞込、取得。',
desc_cuddle:'ハグパネル',
desc_cuddle_d:'<kbd>J</kbd>で距離順にプレイヤー一覧。クリックで追従。',
desc_return:'自動帰還',
desc_return_d:'窃盗後に自宅へテレポート。',
desc_autolock:'自動ロック',
desc_autolock_d:'拠点は常にロック。',
desc_fountain:'自動噴水',
desc_fountain_d:'永続1.5×利益。自動更新。',
desc_money:'無料マネー + スター + ダイヤモンド',
desc_money_d:'広告不要。',
desc_collect:'自動回収',
desc_collect_d:'ペット収入30秒ごとに回収。',
desc_music:'キャリーチューン',
desc_music_d:'盗み中に音楽。15ジャンル。',
desc_chatfade:'チャットフェード',
desc_chatfade_d:'メッセージ表示時間を制御。5–120秒。',
desc_emotes:'飛行エモート',
desc_emotes_d:'飛行中にランダムエモート。',
desc_displays:'表示オーバーレイ',
desc_displays_d:'座標、FPSカウンター、ターゲット情報。',
desc_config:'設定',
desc_config_d:'<kbd>M</kbd>で機能切替、キー変更、速度調整。',
desc_langs:'60言語',
desc_langs_d:'UI完全翻訳。',
desc_tower:'タワークリア',
desc_tower_d:'<kbd>Y</kbd>でオビータワー即クリア。',
desc_cats:'猫のロード画面',
desc_cats_d:'かわいい猫がロード画面に。',
desc_h_install:'インストール',
desc_desktop:'デスクトップ(Chrome、Edge、Firefox、Opera、Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a>または<a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>を入手',
desc_inst_click:'上のインストールをクリック',
desc_inst_open:'Meelandゲームを開く — そのまま動作します',
desc_mobile:'モバイル(Android)',
desc_mob_ff:'Play ストアから<a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android版</a>をインストール',
desc_mob_addon:'Firefoxを開く → メニュー → アドオン → <strong>Tampermonkey</strong>をインストール',
desc_mob_visit:'Firefoxでこのページを開いてインストールをタップ',
desc_mob_play:'Meelandをプレイ — タッチHUDボタンが自動表示',
desc_ios:'iOS:AppleはすべてのiOSブラウザ(Firefox含む)でブラウザ拡張機能をブロックしています。デスクトップブラウザまたはAndroidをご利用ください。',
desc_h_privacy:'プライバシー',
desc_privacy:'クライアントサイドのみ — データはブラウザから出ません'
});
_mk('ko','한국어',{
close:'✕',
refresh:'↻',
go:'이동',
set:'설정',
auto:'자동',
empty:'비어 있음',
help_title:'도움말',
players_title:'플레이어',
players_empty:'다른 플레이어를 찾을 수 없습니다',
settings_title:'설정',
settings_reset:'초기화',
tab_gameplay:'게임',
tab_economy:'경제',
tab_audio:'오디오',
tab_advanced:'고급',
tab_hud:'HUD',
tab_keys:'키',
tab_accounts:'계정',
acct_current:'현재',
acct_new:'새로 만들기',
acct_import:'가져오기',
acct_switch:'전환',
acct_reload:'새로고침',
acct_delete:'삭제',
acct_cancel:'취소',
acct_empty:'비어 있음',
acct_token_ph:'토큰',
acct_copy:'복사',
acct_export:'내보내기',
acct_rename:'이름 변경',
acct_save:'저장',
acct_name_len:'이름은 4-12자여야 합니다',
acct_name_fail:'이름 변경 실패',
acct_invalid:'잘못됨',
acct_ready:'계정 준비 완료. Meeland를 닫고 IP를 바꾼 뒤 새로고침하세요.',
acct_ip_note:'계정을 변경할 때는 항상 VPN을 사용하고 IP를 바꾸세요.',
acct_howto:'1. 복사를 클릭해 이 계정의 링크를 복사합니다.\n2. 다른 브라우저나 기기에서 — 또는 친구와 함께 — MES를 엽니다.\n3. 가져오기를 클릭하고 링크를 붙여넣습니다.',
sh_movement:'이동',
sh_defense:'방어',
sh_camera:'카메라',
sh_overlays:'오버레이',
sh_behaviour:'동작',
sh_buttons:'버튼',
sh_language:'언어',
sh_chat:'채팅',
sh_waves:'Waves',
sh_steal_a_pet:'펫 훔치기',
sh_tower:'Tower',
sh_misc_multi:'기타 (다중 모드)',
s_noclip:'벽 통과',
s_fly:'파리',
s_fly_emotes:'비행 이모트',
s_base_speed:'기본 속도',
s_jump_mult:'점프 높이',
s_grav_mult:'중력',
s_walk_up_walls:'벽을 걷다',
s_carry_normalize:'운반 속도 + 점프',
s_invincibility:'무적',
s_anti_kb:'넉백 무효',
s_invisible:'투명화',
s_xray_infection:'X-Ray (살인 미스터리)',
s_ghost_mode:'고스트 모드',
s_flee_intruder:'침입자 시 도주',
s_first_person:'1인칭 시점',
s_fov_first_person:'시야 (1인칭)',
s_fov_third_person:'시야(3인칭)',
s_fov_vertical_mult:'FOV 수직 승수',
s_auto_lock:'기지 자동 잠금',
s_auto_fountain:'자동 분수(1.5배)',
s_daily_coins:'일일 코인',
s_stars:'별',
s_diamonds_tower:'다이아몬드(타워)',
s_tower_loop:'타워 루프',
s_auto_roll_x25:'자동 롤 x25 럭',
s_auto_craft:'자동 크래프트',
s_auto_vip_sword:'VIP 자동 구매',
s_auto_vip_waves:'VIP 자동 구매 (웨이브)',
s_direct_kill:'직접 처치 스팸',
s_direct_kill_rate:'처치 속도',
s_auto_buy_upgrades:'자동 업그레이드 구매',
s_boost_coins:'자동 업그레이드: 코인',
s_boost_diamonds:'자동 업그레이드: 다이아몬드',
s_boost_luck:'자동 업그레이드: 행운',
s_auto_unlock_areas:'자동 잠금 해제 영역',
s_auto_rebirth:'자동 환생',
s_auto_join_tp:'가장 높은 지역으로 순간이동',
s_hide_kill_rewards:'킬 보상 숨기기',
s_hide_roll_anim:'롤 애니메이션 숨기기',
rng_title:'애완동물 RNG 치트',
rng_sec_rolling:'롤링',
rng_sec_crafting:'제작',
rng_sec_combat:'전투',
rng_sec_upgrades:'업그레이드',
rng_sec_areas:'지역',
rng_actions:'행위',
log_craft:'선박',
log_success:'성공',
log_fail:'실패하다',
log_unlocking_area:'잠금 해제 영역',
log_area_unlocked:'지역 잠금 해제',
log_equipped:'갖추게 하는',
log_bought_upgrade:'업그레이드 구매',
log_teleported_to:'다음으로 순간이동됨',
log_rebirthing:'환생',
h_rng:'무작위',
h_accts:'계정',
s_auto_collect:'수입 자동 수집',
s_collect_interval:'수집 간격',
s_chat_fade:'채팅 페이드 시간',
s_name_colors:'사용자 이름 색상',
s_chat_enhance:'채팅 개선',
mes_hint:'팁: 사용자 이름에 "mes"를 포함하면 무지개 애니메이션 효과가 적용됩니다!',
s_carry_tune:'캐리 음악 (훔치기)',
s_pet_pickup_radius:'펫 훔치기 범위',
s_carry_vol:'캐리 음량',
carry_tune_default:'기본',
carry_tune_silent:'무음',
carry_tune_ambient:'앰비언트',
carry_tune_blues:'블루스',
carry_tune_chiptune:'칩튠',
carry_tune_classical:'클래식',
carry_tune_electronic:'일렉트로닉',
carry_tune_epic:'에픽',
carry_tune_folk:'포크',
carry_tune_funk:'훵크',
carry_tune_jazz:'재즈',
carry_tune_lofi:'로파이',
carry_tune_metal:'메탈',
carry_tune_pop:'팝',
carry_tune_punk:'펑크',
carry_tune_reggae:'레게',
carry_tune_rock:'록',
s_cont_cuddle:'포옹 지속',
s_protips:'프로 팁',
s_hideprotips:'내 프로 팁 숨기기',
s_show_exp_modes:'실험 모드 보기',
s_showcoords:'좌표 표시',
s_showfps:'FPS 표시',
s_showtargetinfo:'대상 정보 표시',
s_showobj:'엔터티/메시 수 표시',
s_copy_dbg:'디버그 로그 복사',
s_copy_json:'JSON 복사',
s_clear_dbg:'지우기',
h_fly:'비행',
h_speed:'스피드핵',
h_waypoints:'웨이포인트',
h_autolock:'자동 잠금',
h_invisible:'투명화',
h_cuddle:'포옹',
h_pets:'펫',
h_snipe:'스나이퍼',
h_help:'도움말',
h_settings:'설정',
h_prv:'개인 방',
h_tc:'타워 클리어',
h_tcl:'타워 루프',
kb_fly:'비행 (전환/상승)',
kb_fly_down:'비행 하강',
kb_set_home:'홈 설정',
kb_home:'홈',
kb_back:'뒤로',
kb_cuddle:'포옹 패널',
kb_settings:'설정',
kb_pets:'펫 브라우저',
kb_slots:'웨이포인트 슬롯',
kb_snipe:'스나이퍼 패널',
kb_snipe_toggle:'스나이퍼 켜기/끄기',
kb_attack:'공격',
kb_help:'도움말 / 설명',
kb_tower:'타워 클리어',
kb_tower_loop:'타워 루프',
kb_invisible:'투명화',
kb_first_person:'1인칭',
kb_autolock:'자동 잠금 베이스',
kb_prv:'개인 방',
kb_rng:'RNG',
kb_accts:'계정',
pets_title:'펫',
pets_search_placeholder:'예를 들어 야생 고양이, 황금 OR 다이아몬드, (황금 OR 에메랄드) 야생',
pets_hint:'단어는 AND로 결합됩니다. OR로 대안, 괄호로 그룹화. * 또는 %를 와일드카드로 사용. 단어 앞에 - 를 붙이면 제외됩니다.',
pets_empty:'이 방에서 펫을 찾을 수 없습니다',
pt_name:'이름',
pt_mut:'변이',
pt_rar:'희귀도',
pt_owner:'주인',
pt_worth:'가치',
pt_income:'수입/초',
pt_dist:'거리',
slots_title:'웨이포인트 슬롯',
sniper_title:'펫 스나이퍼',
sniper_tbl_pet:'애완 동물',
sniper_tbl_owner:'소유자',
sniper_tbl_lock:'잠그다',
sniper_placeholder:'예: 할로, 골드 OR 다이아몬드, 에메랄드 드래곤',
sniper_hint:'단어는 AND로 결합됩니다. OR로 대안, 괄호로 그룹화. * 또는 %를 와일드카드로 사용. 단어 앞에 - 를 붙이면 제외됩니다.',
sniper_room_col:'방',
sniper_scans_col:'스캔',
sniper_top_pet_col:'최고의 애완동물',
sniper_top_worth_col:'최고 가치',
sniper_top_owner_col:'최고 소유자',
sniper_age_col:'경과',
sniper_join_btn:'참가',
sniper_full:'가득 참',
sniper_join_failed:'대상 방이 가득 찼습니다.',
sniper_scanning_rooms:'다른 방 검색 중…',
sniper_scan_off:'자동사냥 꺼짐',
sniper_scan_next:'다음 스캔',
sniper_scan_idle:'유휴 — 스캔 대기 중',
sniper_auto_place:'기지에 자동 배치',
sniper_place_desc:'(훔친 펫을 기지 슬롯에 배치함)',
sniper_auto_drop:'웨이브에서 필터와 일치하지 않는 펫 자동 드롭',
sniper_drop_desc:'(필터와 일치하지 않는 야생 펫을 드롭하여 스폰 풀을 갱신)',
sniper_auto_hunt:'자동 사냥',
sniper_hunt_desc:'(다른 방을 탐색해 최고의 매치로 이동)',
sniper_auto_sell:'스틸에서 자동 판매',
sniper_sell_desc:'(기지 가득 차면 최저 판매)',
sniper_lockdown:'잠금 ≤',
sniper_lockdown_hint:'이 남은 시간 이하의 기지에서 스틸 대상. 0 = 잠금 해제만.',
sniper_join_grace:'은혜에 동참하세요',
sniper_start:'스나이퍼 시작',
sniper_stop:'스나이퍼 중지',
sniper_idle:'대기 중',
sniper_no_filter:'필터 미설정',
sniper_waiting:'경기 대기 중...',
sniper_hold_pause:'펫 보유 중 — 일시정지',
sniper_stolen_pause:'펫을 도둑맞음 — 일시정지',
sniper_cooldown:'쿨다운',
sniper_hopping:'서버 변경 중...',
sniper_na:'로비에서 스나이퍼 사용 불가 — 먼저 경기에 참가하세요',
sniper_wait_lock:'잠금 데이터 대기 중...',
sniper_locked:'기지 잠김 — 건너뛰기...',
sniper_full_eggs:'기지 가득 참 — 알만 있음, 판매 불가',
sniper_stealing:'스틸 중',
sniper_dropped:'드롭 완료',
sniper_holding:'보유 중',
sniper_place:'! 기지에 배치하세요.',
sniper_steal_mode:'【스틸】',
sniper_theft_nohop:'펫 도난 중:',
sniper_nohop_suffix:'— 홉 없음',
sniper_sniping:'스나이핑 중:',
sniper_options:'옵션',
sniper_drop_fail_status:'드롭 실패!',
sniper_hotkey_label:'단축키:',
sniper_panel_label:'패널:',
sniper_grab_fail:'잡기 실패. 재시도 중...',
sniper_our_pet_stolen:'펫을 도둑맞음 — 8초 쿨다운',
sniper_hopping_short:'홉 중...',
sniper_base_full:'베이스 가득 참',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'질주',
pet_teleport_title:'텔레포트',
pet_pickup_title:'찾다',
owner_yours:'당신 것',
owner_wild:'야생의',
footer_gf:'기름진 포크',
copy_ok:'복사됨',
copy_failed:'복사 실패',
s_invis_on_fly:'비행 시 투명',
snipe_walk_home:'훔친 후 걸어서 귀환',
snipe_walk_home_desc:'걸어서 기지로 돌아가기',
sniper_afk_sell:'AFK 일치하지 않는 펫 판매',
sniper_afk_sell_desc:'(5초 동안 유휴 상태일 때, 필터와 일치하지 않는 펫을 가치별로 판매 — 웨이브 전용)',
hb_fly:'비행',
hb_lck:'잠금',
hb_inv:'투명',
hb_cud:'포옹',
hb_pet:'펫',
hb_snp:'저격',
hb_cfg:'설정',
hb_help:'도움',
hb_rng:'RNG',
hb_accts:'계정',
ban_title:'연결이 차단되었습니다',
ban_sub:'Meeland에서 귀하의 IP 주소를 제한했습니다',
ban_body:'걱정 마세요 — 쉽게 해결할 수 있습니다! 무료 VPN으로 새 IP를 받아 다시 플레이하세요.',
ban_pick:'빠른 해결 — 하나를 선택하세요:',
ban_warp:'무료, 무제한, 원클릭 설정',
ban_warp_store:'App Store와 Play Store에서 "1.1.1.1"로도 이용 가능',
ban_proton:'데이터 제한 없음, 5개국',
ban_steps:'설치 → 연결 → 이 페이지 새로고침. 그게 다입니다!',
ban_ok:'알겠습니다',
warn_title:'항상 VPN을 사용하세요',
warn_body:'항상 <b>VPN</b>을 켜고 플레이하세요.',
warn_ok:'알겠습니다',
loading:'로딩중',
tcl_loading:'타워 전체 루프 실행 중. {key}를 눌러 중지하세요.',
hop_search:'매치 찾는 중',
hop_match:'{name} 발견 — 입장 중',
hop_flee:'침입자에게서 도주 중',
hop_reconnect:'다시 연결 중',
hop_reload:'다시 불러오는 중',
hop_fall:'추락에서 복구 중',
hop_join:'방에 입장 중',
lock_off:'끄기',
lock_unlocked:'해제됨',
desc_intro:'MES는 Meeland에서 월해킹, 자동 농업, 희귀 애완동물 수집, 속도 향상, 비행, 투명화 등을 제공합니다.',
desc_free:'100% 무료, 영원히. 피드백이 있으신가요? ⭐ 리뷰를 남겨주세요 — 그것이 업데이트의 원동력입니다.',
desc_h_movement:'이동',
desc_h_combat:'전투',
desc_h_tuning:'튜닝',
desc_h_pets:'펫 & 도둑',
desc_h_economy:'경제',
desc_h_custom:'커스터마이즈',
desc_h_extras:'기타',
desc_fly:'비행',
desc_fly_d:'Space로 상승, F로 하강. 속도 조절 가능.',
desc_speed:'블링크',
desc_speed_d:'Shift로 순간이동.',
desc_noclip:'벽 통과',
desc_noclip_d:'벽을 통과.',
desc_walls:'벽 타기',
desc_walls_d:'모든 표면을 오릅니다.',
desc_waypts:'웨이포인트',
desc_waypts_d:'10곳 저장. 원키 텔레포트. <kbd>Z</kbd>로 전환.',
desc_invis:'투명',
desc_invis_d:'CapsLock으로 완전히 사라집니다.',
desc_fpv:'1인칭 시점',
desc_fpv_d:'<kbd>.</kbd> 키로 1인칭 시점 전환.',
desc_anti_invis:'투명화 감지',
desc_anti_invis_d:'투명 플레이어가 유령으로 보임.',
desc_xray:'X-Ray 비전',
desc_xray_d:'살인 미스터리에서 벽을 통해 플레이어를 봅니다. 빨강 = 살인자, 초록 = 민간인.',
desc_nodeathh:'무적',
desc_nodeath_d:'모든 피해에 면역.',
desc_antikb:'안티 넉백',
desc_antikb_d:'밀릴 수 없음.',
desc_attack:'즉시 공격',
desc_attack_d:'<kbd>G</kbd>로 가장 가까운 플레이어에게 이동 후 공격.',
desc_jumpgrav:'점프와 중력',
desc_jumpgrav_d:'설정에서 배율 조정 가능.',
desc_fov:'FOV 조정',
desc_fov_d:'1인칭 및 3인칭 FOV 슬라이더.',
desc_autoinvis:'비행 시 자동 투명',
desc_autoinvis_d:'비행 시 자동으로 투명해집니다.',
desc_sniper:'펫 스나이퍼',
desc_sniper_d:'필터링된 펫 자동 훔치기. 양쪽 모드.',
desc_prv:'개인 방',
desc_prv_d:'<kbd>PgDn</kbd>으로 현재 모드의 개인 방을 즉시 생성하고 자동 입장.',
desc_petbrow:'펫 브라우저',
desc_petbrow_d:'<kbd>K</kbd>로 모든 펫 표시. 정렬, 필터, 잡기.',
desc_cuddle:'포옹 패널',
desc_cuddle_d:'<kbd>J</kbd>로 거리순 플레이어 목록. 클릭하여 따라가기.',
desc_return:'자동 귀환',
desc_return_d:'훔친 후 집으로 텔레포트.',
desc_autolock:'자동 잠금',
desc_autolock_d:'기지 항상 잠김.',
desc_fountain:'자동 분수',
desc_fountain_d:'영구 1.5× 수익. 자동 갱신.',
desc_money:'무료 머니 + 별 + 다이아몬드',
desc_money_d:'광고 필요 없음.',
desc_collect:'자동 수집',
desc_collect_d:'펫 수입 30초마다 수금.',
desc_music:'캐리 튠',
desc_music_d:'도둑질 중 음악. 15개 장르.',
desc_chatfade:'채팅 페이드',
desc_chatfade_d:'메시지 표시 시간 제어. 5–120초.',
desc_emotes:'비행 이모트',
desc_emotes_d:'비행 중 랜덤 이모트.',
desc_displays:'화면 오버레이',
desc_displays_d:'좌표, FPS 카운터, 대상 정보.',
desc_config:'설정',
desc_config_d:'<kbd>M</kbd>으로 기능 전환, 키 변경, 속도 조절.',
desc_langs:'60개 언어',
desc_langs_d:'UI 전체 번역.',
desc_tower:'타워 클리어',
desc_tower_d:'<kbd>Y</kbd>로 오비 타워 즉시 클리어.',
desc_cats:'고양이 로딩 화면',
desc_cats_d:'귀여운 고양이가 로딩을 대체합니다.',
desc_h_install:'설치',
desc_desktop:'데스크톱 (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> 또는 <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>를 설치하세요',
desc_inst_click:'위의 설치를 클릭하세요',
desc_inst_open:'Meeland 게임을 열면 — 바로 작동합니다',
desc_mobile:'모바일 (Android)',
desc_mob_ff:'Play 스토어에서 <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android</a>를 설치하세요',
desc_mob_addon:'Firefox 열기 → 메뉴 → 부가 기능 → <strong>Tampermonkey</strong> 설치',
desc_mob_visit:'Firefox에서 이 페이지를 방문하고 설치를 탭하세요',
desc_mob_play:'Meeland 플레이 — 터치 HUD 버튼이 자동으로 나타납니다',
desc_ios:'iOS: Apple은 모든 iOS 브라우저(Firefox 포함)에서 브라우저 확장을 차단합니다. 데스크톱 브라우저 또는 Android를 사용하세요.',
desc_h_privacy:'개인정보',
desc_privacy:'클라이언트 측만 — 데이터가 브라우저 밖으로 나가지 않습니다'
});
_mk('ar','العربية',{
close:'✕',
refresh:'↻',
go:'انتقال',
set:'تعيين',
auto:'تلقائي',
empty:'فارغ',
help_title:'مساعدة',
players_title:'اللاعبون',
players_empty:'لم يُعثر على لاعبين آخرين',
settings_title:'الإعدادات',
settings_reset:'إعادة تعيين',
tab_gameplay:'اللعب',
tab_economy:'الاقتصاد',
tab_audio:'الصوت',
tab_advanced:'متقدم',
tab_hud:'هود',
tab_keys:'المفاتيح',
tab_accounts:'الحسابات',
acct_current:'الحالي',
acct_new:'جديد',
acct_import:'استيراد',
acct_switch:'تبديل',
acct_reload:'إعادة تحميل',
acct_delete:'حذف',
acct_cancel:'إلغاء',
acct_empty:'فارغ',
acct_token_ph:'رمز',
acct_copy:'نسخ',
acct_export:'تصدير',
acct_rename:'إعادة تسمية',
acct_save:'حفظ',
acct_name_len:'يجب أن يكون الاسم من 4-12 حرفًا',
acct_name_fail:'فشل إعادة التسمية',
acct_invalid:'غير صالح',
acct_ready:'الحساب جاهز. أغلق Meeland ثم غيّر عنوان IP ثم أعد التحميل.',
acct_ip_note:'استخدم دائمًا VPN وغيّر عنوان IP عند تغيير الحساب.',
acct_howto:'1. انقر على نسخ لنسخ رابط هذا الحساب.\n2. في متصفح أو جهاز آخر — أو مع صديق — افتح MES.\n3. انقر على استيراد والصق الرابط.',
sh_movement:'الحركة',
sh_defense:'الدفاع',
sh_camera:'الكاميرا',
sh_overlays:'تراكبات',
sh_behaviour:'سلوك',
sh_buttons:'أزرار',
sh_language:'اللغة',
sh_chat:'محادثة',
sh_waves:'Waves',
sh_steal_a_pet:'سرقة حيوان أليف',
sh_tower:'Tower',
sh_misc_multi:'متنوع (وضع متعدد)',
s_noclip:'عبور الجدران',
s_fly:'سافر',
s_fly_emotes:'رموز الطيران',
s_base_speed:'السرعة الأساسية',
s_jump_mult:'ارتفاع القفزة',
s_grav_mult:'جاذبية',
s_walk_up_walls:'المشي فوق الجدران',
s_carry_normalize:'سرعة الحمل + القفز',
s_invincibility:'الخلود',
s_anti_kb:'إلغاء الارتداد',
s_invisible:'الإخفاء',
s_xray_infection:'أشعة إكس (غموض الجريمة)',
s_ghost_mode:'وضع الشبح',
s_flee_intruder:'الفرار عند دخيل',
s_first_person:'منظور الشخص الأول',
s_fov_first_person:'مجال الرؤية (الأول)',
s_fov_third_person:'FOV (3)',
s_fov_vertical_mult:'مجال الرؤية المضاعف العمودي',
s_auto_lock:'قفل القاعدة تلقائيًا',
s_auto_fountain:'نافورة تلقائية (1.5×)',
s_daily_coins:'عملات يومية',
s_stars:'نجوم',
s_diamonds_tower:'ألماس (برج)',
s_tower_loop:'حلقة البرج',
s_auto_roll_x25:'لفة تلقائية x25 حظ',
s_auto_craft:'صياغة تلقائية',
s_auto_vip_sword:'شراء VIP تلقائياً',
s_auto_vip_waves:'شراء VIP تلقائياً (الأمواج)',
s_direct_kill:'إرسال قتل مباشر',
s_direct_kill_rate:'معدل القتل',
s_auto_buy_upgrades:'ترقيات الشراء التلقائي',
s_boost_coins:'الترقية التلقائية: العملات المعدنية',
s_boost_diamonds:'الترقية التلقائية: الماس',
s_boost_luck:'الترقية التلقائية: الحظ',
s_auto_unlock_areas:'فتح المناطق تلقائيًا',
s_auto_rebirth:'إعادة الميلاد التلقائي',
s_auto_join_tp:'النقل الفوري إلى أعلى منطقة',
s_hide_kill_rewards:'إخفاء مكافآت القتل',
s_hide_roll_anim:'إخفاء لفة الرسوم المتحركة',
rng_title:'غش الحيوانات الأليفة RNG',
rng_sec_rolling:'المتداول',
rng_sec_crafting:'صياغة',
rng_sec_combat:'القتال',
rng_sec_upgrades:'ترقيات',
rng_sec_areas:'المناطق',
rng_actions:'الإجراءات',
log_craft:'حرفة',
log_success:'نجاح',
log_fail:'يفشل',
log_unlocking_area:'فتح المنطقة',
log_area_unlocked:'المنطقة مقفلة',
log_equipped:'مجهزة',
log_bought_upgrade:'اشترى الترقية',
log_teleported_to:'منقول إلى',
log_rebirthing:'إعادة الميلاد',
h_rng:'آر إن جي',
h_accts:'الحسابات',
s_auto_collect:'جمع الدخل تلقائيًا',
s_collect_interval:'فترة الجمع',
s_chat_fade:'وقت تلاشي الدردشة',
s_name_colors:'ألوان أسماء المستخدمين',
s_chat_enhance:'تحسينات الدردشة',
mes_hint:'نصيحة: أدرج "mes" في اسم المستخدم للحصول على تأثير قوس قزح متحرك!',
s_carry_tune:'لحن الحمل (السرقة)',
s_pet_pickup_radius:'نطاق سرقة الحيوانات',
s_carry_vol:'مستوى صوت الحمل',
carry_tune_default:'افتراضي',
carry_tune_silent:'صامت',
carry_tune_ambient:'موسيقى محيطية',
carry_tune_blues:'بلوز',
carry_tune_chiptune:'شيبتون',
carry_tune_classical:'كلاسيكي',
carry_tune_electronic:'إلكترونية',
carry_tune_epic:'ملحمي',
carry_tune_folk:'موسيقى شعبية',
carry_tune_funk:'فانك',
carry_tune_jazz:'جاز',
carry_tune_lofi:'لو-فاي',
carry_tune_metal:'ميتال',
carry_tune_pop:'بوب',
carry_tune_punk:'بانك',
carry_tune_reggae:'ريغي',
carry_tune_rock:'روك',
s_cont_cuddle:'عناق مستمر',
s_protips:'نصائح احترافية',
s_hideprotips:'إخفاء نصائحي الاحترافية',
s_show_exp_modes:'إظهار الأوضاع التجريبية',
s_showcoords:'إظهار الإحداثيات',
s_showfps:'عرض إطارا في الثانية',
s_showtargetinfo:'عرض معلومات الهدف',
s_showobj:'إظهار عدد الكيانات/الشبكات',
s_copy_dbg:'نسخ سجلات التصحيح',
s_copy_json:'نسخ JSON',
s_clear_dbg:'مسح',
h_fly:'الطيران',
h_speed:'اختراق السرعة',
h_waypoints:'نقاط الطريق',
h_autolock:'القفل التلقائي',
h_invisible:'الإخفاء',
h_cuddle:'العناق',
h_pets:'الحيوانات',
h_snipe:'القنّاص',
h_help:'مساعدة',
h_settings:'الإعدادات',
h_prv:'غرفة خاصة',
h_tc:'إكمال البرج',
h_tcl:'حلقة البرج',
kb_fly:'الطيران (تبديل/صعود)',
kb_fly_down:'الطيران للأسفل',
kb_set_home:'تعيين المنزل',
kb_home:'المنزل',
kb_back:'رجوع',
kb_cuddle:'لوحة العناق',
kb_settings:'الإعدادات',
kb_pets:'متصفّح الحيوانات',
kb_slots:'خانات نقاط الطريق',
kb_snipe:'لوحة القنّاص',
kb_snipe_toggle:'القنّاص تشغيل/إيقاف',
kb_attack:'هجوم',
kb_help:'مساعدة / وصف',
kb_tower:'إكمال البرج',
kb_tower_loop:'حلقة البرج',
kb_invisible:'الإخفاء',
kb_first_person:'الشخص الأول',
kb_autolock:'قاعدة القفل التلقائي',
kb_prv:'غرفة خاصة',
kb_rng:'RNG',
kb_accts:'الحسابات',
pets_title:'الحيوانات',
pets_search_placeholder:'على سبيل المثال قطة برية، ذهبية أو ماسية، (ذهبية أو زمردية) برية',
pets_hint:'الكلمات تُجمع بـ AND. استخدم OR للبدائل، والأقواس للتجميع. * أو % كحرف بدل. ضع - قبل كلمة لاستبعادها.',
pets_empty:'لم يُعثر على حيوانات في هذه الغرفة',
pt_name:'الاسم',
pt_mut:'الطفرة',
pt_rar:'الندرة',
pt_owner:'المالك',
pt_worth:'القيمة',
pt_income:'الدخل/ث',
pt_dist:'المسافة',
slots_title:'خانات نقاط الطريق',
sniper_title:'قنّاص الحيوانات',
sniper_tbl_pet:'حيوان أليف',
sniper_tbl_owner:'مالك',
sniper_tbl_lock:'قفل',
sniper_placeholder:'مثال: هالو، ذهبي OR ألماسي، تنين زمرّدي',
sniper_hint:'الكلمات تُجمع بـ AND. استخدم OR للبدائل، والأقواس للتجميع. * أو % كحرف بدل. ضع - قبل كلمة لاستبعادها.',
sniper_room_col:'الغرفة',
sniper_scans_col:'المسح',
sniper_top_pet_col:'أعلى الحيوانات الأليفة',
sniper_top_worth_col:'أعلى قيمة',
sniper_top_owner_col:'المالك الأعلى',
sniper_age_col:'العمر',
sniper_join_btn:'انضم',
sniper_full:'ممتلئ',
sniper_join_failed:'الغرفة المستهدفة ممتلئة',
sniper_scanning_rooms:'جارٍ البحث عن غرف أخرى…',
sniper_scan_off:'مطاردة السيارات قبالة',
sniper_scan_next:'المسح التالي في',
sniper_scan_idle:'خامل - في انتظار الفحص',
sniper_auto_place:'وضع تلقائي على القاعدة',
sniper_place_desc:'(يضع الحيوان الأليف المسروق في فتحة قاعدتك)',
sniper_auto_drop:'إسقاط تلقائي للحيوانات غير المطابقة في الموجات',
sniper_drop_desc:'(يسقط الحيوانات البرية غير المطابقة للفلتر لتحديث مجموعة الظهور)',
sniper_auto_hunt:'مطاردة تلقائية',
sniper_hunt_desc:'(يفحص غرفًا أخرى ويقفز إلى أفضل تطابق)',
sniper_auto_sell:'بيع تلقائي في السرقة',
sniper_sell_desc:'(بيع الأسوأ عند امتلاء القاعدة)',
sniper_lockdown:'إغلاق ≤',
sniper_lockdown_hint:'أهداف السرقة في قواعد بهذا الوقت المتبقي أو أقل. 0 = غير مقفلة فقط.',
sniper_join_grace:'انضم إلى النعمة',
sniper_start:'بدء القنّاص',
sniper_stop:'إيقاف القنّاص',
sniper_idle:'خامل',
sniper_no_filter:'لا يوجد فلتر مُعدّ',
sniper_waiting:'في انتظار المباراة...',
sniper_hold_pause:'يحمل حيوانًا — متوقف مؤقتًا',
sniper_stolen_pause:'حيواننا سُرق — متوقف مؤقتًا',
sniper_cooldown:'فترة انتظار',
sniper_hopping:'تغيير الخادم...',
sniper_na:'القنّاص غير متاح في الردهة — انضم لمباراة أولًا',
sniper_wait_lock:'في انتظار بيانات القفل...',
sniper_locked:'القاعدة مقفلة — تخطّي...',
sniper_full_eggs:'القاعدة ممتلئة — بيض فقط، لا يمكن البيع',
sniper_stealing:'سرقة جارية',
sniper_dropped:'تم الإسقاط',
sniper_holding:'يحمل',
sniper_place:'! ضعه في القاعدة.',
sniper_steal_mode:'【سرقة】',
sniper_theft_nohop:'حيوان يُسرق بواسطة',
sniper_nohop_suffix:'— بدون تنقّل',
sniper_sniping:'اصطياد:',
sniper_options:'خيارات',
sniper_drop_fail_status:'فشل الإسقاط!',
sniper_hotkey_label:'مفتاح اختصار:',
sniper_panel_label:'لوحة:',
sniper_grab_fail:'فشل الالتقاط. إعادة المحاولة...',
sniper_our_pet_stolen:'سُرق حيواننا — 8 ثوانٍ انتظار',
sniper_hopping_short:'تنقّل...',
sniper_base_full:'القاعدة ممتلئة',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ركض',
pet_teleport_title:'النقل الفوري',
pet_pickup_title:'يلتقط',
owner_yours:'لك',
owner_wild:'بري',
footer_gf:'شوكة دهنية',
copy_ok:'منقول',
copy_failed:'فشل النسخ',
s_invis_on_fly:'تختفي عند الطيران',
snipe_walk_home:'المشي للمنزل بعد السرقة',
snipe_walk_home_desc:'العودة سيراً إلى قاعدتك',
sniper_afk_sell:'بيع الحيوانات الأليفة غير المتطابقة AFK',
sniper_afk_sell_desc:'(عند الخمول 5ث، بيع الحيوانات الأليفة غير المتطابقة مع الفلتر حسب القيمة — الأمواج فقط)',
hb_fly:'طير',
hb_lck:'قفل',
hb_inv:'خفي',
hb_cud:'عنق',
hb_pet:'حيو',
hb_snp:'قنص',
hb_cfg:'ضبط',
hb_help:'؟',
hb_rng:'RNG',
hb_accts:'حس',
ban_title:'تم حظر الاتصال',
ban_sub:'تم تقييد عنوان IP الخاص بك من قبل Meeland',
ban_body:'لا تقلق — هذا سهل الإصلاح! VPN مجاني سيمنحك عنوان IP جديدًا لتتمكن من اللعب مرة أخرى.',
ban_pick:'حل سريع — اختر واحدًا:',
ban_warp:'مجاني، غير محدود، إعداد بنقرة واحدة',
ban_warp_store:'متوفر أيضًا في App Store و Play Store باسم "1.1.1.1"',
ban_proton:'بدون حد للبيانات، 5 دول',
ban_steps:'ثبّت → اتصل → أعد تحميل هذه الصفحة. هذا كل شيء!',
ban_ok:'فهمت',
warn_title:'استخدم VPN دائمًا',
warn_body:'العب دائمًا مع <b>VPN</b> قيد التشغيل.',
warn_ok:'فهمت',
loading:'جار التحميل',
tcl_loading:'جارٍ تشغيل دورة البرج الكاملة. اضغط {key} للإيقاف.',
hop_search:'جارٍ البحث عن مباراة',
hop_match:'تم العثور على {name} — جارٍ الانضمام',
hop_flee:'الهروب من دخيل',
hop_reconnect:'جارٍ إعادة الاتصال',
hop_reload:'جارٍ إعادة التحميل',
hop_fall:'جارٍ التعافي من السقوط',
hop_join:'جارٍ الانضمام إلى الغرفة',
lock_off:'إيقاف',
lock_unlocked:'مفتوح',
desc_intro:'تمنحك MES إمكانية اختراق الجدران، والزراعة التلقائية، وجمع الحيوانات الأليفة النادرة، وزيادة السرعة، والطيران، والاختفاء، والمزيد في Meeland',
desc_free:'مجاني 100%، دائمًا. لديك ملاحظات؟ اترك تقييمًا ⭐ إيجابيًا — هذا ما يُبقي التحديثات مستمرة.',
desc_h_movement:'الحركة',
desc_h_combat:'القتال',
desc_h_tuning:'ضبط',
desc_h_pets:'الحيوانات والسرقة',
desc_h_economy:'الاقتصاد',
desc_h_custom:'التخصيص',
desc_h_extras:'إضافات',
desc_fly:'الطيران',
desc_fly_d:'Space للصعود، F للنزول. سرعة قابلة للتعديل.',
desc_speed:'وميض',
desc_speed_d:'Shift للتنقل الفوري.',
desc_noclip:'عبور الجدران',
desc_noclip_d:'امشِ عبر الجدران.',
desc_walls:'تسلق الجدران',
desc_walls_d:'تسلق أي سطح.',
desc_waypts:'نقاط الطريق',
desc_waypts_d:'احفظ 10 مواقع. تنقل بمفتاح واحد. <kbd>Z</kbd> للتبديل.',
desc_invis:'مخفي',
desc_invis_d:'اضغط CapsLock للاختفاء تماماً.',
desc_fpv:'منظور الشخص الأول',
desc_fpv_d:'اضغط <kbd>.</kbd> للتبديل إلى كاميرا الشخص الأول.',
desc_anti_invis:'مضاد الإخفاء',
desc_anti_invis_d:'شاهد اللاعبين المخفيين كأشباح.',
desc_xray:'رؤية أشعة إكس',
desc_xray_d:'شاهد اللاعبين عبر الجدران في غموض الجريمة. أحمر = قاتل، أخضر = مدني.',
desc_nodeathh:'خالد',
desc_nodeath_d:'محصّن ضد كل الأضرار.',
desc_antikb:'مضاد الارتداد',
desc_antikb_d:'لا يمكن دفعك.',
desc_attack:'هجوم فوري',
desc_attack_d:'<kbd>G</kbd> ينقلك لأقرب لاعب ويضرب.',
desc_jumpgrav:'القفز والجاذبية',
desc_jumpgrav_d:'مضاعفات قابلة للتعديل في الإعدادات.',
desc_fov:'التحكم بمجال الرؤية',
desc_fov_d:'شرائط مجال الرؤية للشخص الأول والثالث.',
desc_autoinvis:'إخفاء تلقائي عند الطيران',
desc_autoinvis_d:'اختفِ تلقائياً عند الطيران.',
desc_sniper:'قنّاص الحيوانات',
desc_sniper_d:'سرقة تلقائية للحيوانات المفلترة. كلا الوضعين.',
desc_prv:'غرفة خاصة',
desc_prv_d:'<kbd>PgDn</kbd> ينشئ غرفة خاصة في الوضع الحالي وينضم تلقائياً.',
desc_petbrow:'متصفّح الحيوانات',
desc_petbrow_d:'<kbd>K</kbd> يعرض كل الحيوانات. رتب، صفِّ، اخطف.',
desc_cuddle:'لوحة العناق',
desc_cuddle_d:'<kbd>J</kbd> يعرض اللاعبين حسب المسافة. اضغط للمتابعة.',
desc_return:'عودة تلقائية',
desc_return_d:'ينقلك للمنزل بعد السرقة.',
desc_autolock:'القفل التلقائي',
desc_autolock_d:'القاعدة مقفلة دائمًا.',
desc_fountain:'النافورة التلقائية',
desc_fountain_d:'ربح دائم 1.5×. تجديد تلقائي.',
desc_money:'أموال مجانية + نجوم + ألماس',
desc_money_d:'لا حاجة لإعلانات.',
desc_collect:'جمع تلقائي',
desc_collect_d:'دخل الحيوانات كل 30 ثانية.',
desc_music:'موسيقى النقل',
desc_music_d:'موسيقى أثناء السرقة. 15 نوعًا.',
desc_chatfade:'تلاشي الدردشة',
desc_chatfade_d:'تحكم في مدة ظهور الرسائل. 5–120 ثانية.',
desc_emotes:'إيموتات الطيران',
desc_emotes_d:'إيموتات عشوائية أثناء الطيران.',
desc_displays:'تراكبات العرض',
desc_displays_d:'الإحداثيات وعداد FPS ومعلومات الهدف.',
desc_config:'إعدادات',
desc_config_d:'<kbd>M</kbd> لتبديل الميزات وإعادة ربط المفاتيح وضبط السرعات.',
desc_langs:'60 لغة',
desc_langs_d:'ترجمة كاملة للواجهة.',
desc_tower:'إكمال البرج',
desc_tower_d:'<kbd>Y</kbd> لإنهاء برج Obby فورًا.',
desc_cats:'شاشات تحميل بالقطط',
desc_cats_d:'قطط لطيفة تحل محل التحميل.',
desc_h_install:'التثبيت',
desc_desktop:'سطح المكتب (Chrome، Edge، Firefox، Opera، Brave)',
desc_inst_ext:'احصل على <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> أو <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'انقر على تثبيت أعلاه',
desc_inst_open:'افتح أي لعبة Meeland — تعمل مباشرة',
desc_mobile:'الهاتف (Android)',
desc_mob_ff:'ثبّت <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox لأندرويد</a> من متجر Play',
desc_mob_addon:'افتح Firefox ← القائمة ← الإضافات ← ثبّت <strong>Tampermonkey</strong>',
desc_mob_visit:'قم بزيارة هذه الصفحة في Firefox وانقر تثبيت',
desc_mob_play:'العب Meeland — أزرار HUD التي تعمل باللمس تظهر تلقائيًا',
desc_ios:'iOS: تحظر Apple إضافات المتصفح في جميع متصفحات iOS (بما في ذلك Firefox). استخدم متصفح سطح المكتب أو أندرويد.',
desc_h_privacy:'الخصوصية',
desc_privacy:'من جانب العميل فقط — لا تخرج أي بيانات من متصفحك'
});
_mk('hi','हिन्दी',{
close:'✕',
refresh:'↻',
go:'जाएँ',
set:'सेट करें',
auto:'ऑटो',
empty:'खाली',
help_title:'सहायता',
players_title:'खिलाड़ी',
players_empty:'कोई अन्य खिलाड़ी नहीं मिला',
settings_title:'सेटिंग्स',
settings_reset:'रीसेट',
tab_gameplay:'गेमप्ले',
tab_economy:'अर्थव्यवस्था',
tab_audio:'ऑडियो',
tab_advanced:'उन्नत',
tab_hud:'हुड',
tab_keys:'कुंजियाँ',
tab_accounts:'खाते',
acct_current:'वर्तमान',
acct_new:'नया',
acct_import:'आयात',
acct_switch:'बदलें',
acct_reload:'पुनः लोड',
acct_delete:'हटाएं',
acct_cancel:'रद्द करें',
acct_empty:'खाली',
acct_token_ph:'टोकन',
acct_copy:'कॉपी',
acct_export:'निर्यात',
acct_rename:'नाम बदलें',
acct_save:'सहेजें',
acct_name_len:'नाम 4-12 अक्षरों का होना चाहिए',
acct_name_fail:'नाम बदलने में विफल',
acct_invalid:'अमान्य',
acct_ready:'खाता तैयार। Meeland बंद करें, फिर IP बदलें, फिर पुनः लोड करें।',
acct_ip_note:'खाता बदलते समय हमेशा VPN उपयोग करें और IP बदलें।',
acct_howto:'1. इस खाते का लिंक कॉपी करने के लिए कॉपी पर क्लिक करें।\n2. किसी अन्य ब्राउज़र या डिवाइस पर — या किसी दोस्त के साथ — MES खोलें।\n3. आयात पर क्लिक करें और लिंक पेस्ट करें।',
sh_movement:'गति',
sh_defense:'रक्षा',
sh_camera:'कैमरा',
sh_overlays:'ओवरले',
sh_behaviour:'व्यवहार',
sh_buttons:'बटन',
sh_language:'भाषा',
sh_chat:'बात करना',
sh_waves:'Waves',
sh_steal_a_pet:'पालतू जानवर चुराएं',
sh_tower:'Tower',
sh_misc_multi:'विविध (मल्टी-मोड)',
s_noclip:'दीवार पार',
s_fly:'उड़ना',
s_fly_emotes:'उड़ान इमोट',
s_base_speed:'बेस स्पीड',
s_jump_mult:'कूदने की ऊंचाई',
s_grav_mult:'गुरुत्वाकर्षण',
s_walk_up_walls:'दीवारों पर चलो',
s_carry_normalize:'कैरी स्पीड + जंप',
s_invincibility:'अजेयता',
s_anti_kb:'एंटी-नॉकबैक',
s_invisible:'अदृश्य',
s_xray_infection:'एक्स-रे (मर्डर मिस्ट्री)',
s_ghost_mode:'भूत मोड',
s_flee_intruder:'घुसपैठिए पर भागें',
s_first_person:'प्रथम-व्यक्ति दृश्य',
s_fov_first_person:'FOV (प्रथम-व्यक्ति)',
s_fov_third_person:'FOV (तृतीय)',
s_fov_vertical_mult:'FOV लंबवत गुणक',
s_auto_lock:'बेस ऑटो-लॉक',
s_auto_fountain:'ऑटो-फ़ाउंटेन (1.5×)',
s_daily_coins:'दैनिक सिक्के',
s_stars:'सितारे',
s_diamonds_tower:'हीरे (टावर)',
s_tower_loop:'टावर लूप',
s_auto_roll_x25:'ऑटो रोल x25 लक',
s_auto_craft:'ऑटो-क्राफ्ट',
s_auto_vip_sword:'VIP स्वतः खरीदें',
s_auto_vip_waves:'VIP स्वतः खरीदें (वेव्स)',
s_direct_kill:'डायरेक्ट किल स्पैम',
s_direct_kill_rate:'किल दर',
s_auto_buy_upgrades:'ऑटो खरीदें अपग्रेड',
s_boost_coins:'ऑटो अपग्रेड: सिक्के',
s_boost_diamonds:'ऑटो अपग्रेड: हीरे',
s_boost_luck:'ऑटो अपग्रेड: भाग्य',
s_auto_unlock_areas:'ऑटो अनलॉक क्षेत्र',
s_auto_rebirth:'स्वतः पुनर्जन्म',
s_auto_join_tp:'उच्चतम क्षेत्र में टेलीपोर्ट',
s_hide_kill_rewards:'हत्या पुरस्कार छिपाएँ',
s_hide_roll_anim:'रोल एनीमेशन छिपाएँ',
rng_title:'पालतू जानवर आरएनजी धोखा देती है',
rng_sec_rolling:'रोलिंग',
rng_sec_crafting:'क्राफ्टिंग',
rng_sec_combat:'लड़ाई',
rng_sec_upgrades:'उन्नयन',
rng_sec_areas:'क्षेत्रों',
rng_actions:'कार्रवाई',
log_craft:'शिल्प',
log_success:'सफलता',
log_fail:'असफल',
log_unlocking_area:'अनलॉकिंग क्षेत्र',
log_area_unlocked:'क्षेत्र खुला',
log_equipped:'लैस',
log_bought_upgrade:'अपग्रेड खरीदा',
log_teleported_to:'को टेलीपोर्ट किया गया',
log_rebirthing:'पुनर्जन्म',
h_rng:'आरएनजी',
h_accts:'खाते',
s_auto_collect:'आय ऑटो-संग्रह',
s_collect_interval:'संग्रह अंतराल',
s_chat_fade:'चैट फ़ेड समय',
s_name_colors:'उपयोगकर्ता नाम रंग',
s_chat_enhance:'चैट सुधार',
mes_hint:'सुझाव: अपने उपयोगकर्ता नाम में "mes" शामिल करें, इंद्रधनुष एनिमेटेड प्रभाव पाने के लिए!',
s_carry_tune:'कैरी धुन (चुराना)',
s_pet_pickup_radius:'पालतू चोरी दूरी',
s_carry_vol:'कैरी वॉल्यूम',
carry_tune_default:'डिफ़ॉल्ट',
carry_tune_silent:'मौन',
carry_tune_ambient:'परिवेश',
carry_tune_blues:'ब्लूज़',
carry_tune_chiptune:'चिपट्यून',
carry_tune_classical:'शास्त्रीय',
carry_tune_electronic:'इलेक्ट्रॉनिक',
carry_tune_epic:'महाकाव्य',
carry_tune_folk:'लोक',
carry_tune_funk:'फंक',
carry_tune_jazz:'जैज़',
carry_tune_lofi:'लो-फ़ाई',
carry_tune_metal:'मेटल',
carry_tune_pop:'पॉप',
carry_tune_punk:'पंक',
carry_tune_reggae:'रेगे',
carry_tune_rock:'रॉक',
s_cont_cuddle:'लगातार गले लगाना',
s_protips:'प्रो टिप्स',
s_hideprotips:'मेरे प्रो टिप्स छुपाएं',
s_show_exp_modes:'प्रायोगिक मोड दिखाएं',
s_showcoords:'निर्देशांक दिखाएं',
s_showfps:'एफपीएस दिखाएँ',
s_showtargetinfo:'लक्ष्य जानकारी दिखाएं',
s_showobj:'इकाई/मेष गणना दिखाएँ',
s_copy_dbg:'डीबग लॉग कॉपी करें',
s_copy_json:'JSON कॉपी करें',
s_clear_dbg:'साफ़ करें',
h_fly:'उड़ान',
h_speed:'स्पीड हैक',
h_waypoints:'वेपॉइंट',
h_autolock:'ऑटो-लॉक',
h_invisible:'अदृश्य',
h_cuddle:'गले लगाना',
h_pets:'पेट्स',
h_snipe:'स्नाइपर',
h_help:'सहायता',
h_settings:'सेटिंग्स',
h_prv:'निजी कमरा',
h_tc:'टावर पूरा करें',
h_tcl:'टावर लूप',
kb_fly:'उड़ान (टॉगल/ऊपर)',
kb_fly_down:'उड़ान नीचे',
kb_set_home:'होम सेट करें',
kb_home:'घर',
kb_back:'वापस',
kb_cuddle:'गले लगाने का पैनल',
kb_settings:'सेटिंग्स',
kb_pets:'पेट ब्राउज़र',
kb_slots:'वेपॉइंट स्लॉट',
kb_snipe:'स्नाइपर पैनल',
kb_snipe_toggle:'स्नाइपर चालू/बंद',
kb_attack:'हमला',
kb_help:'सहायता / विवरण',
kb_tower:'टावर पूरा करें',
kb_tower_loop:'टावर लूप',
kb_invisible:'अदृश्य',
kb_first_person:'प्रथम-व्यक्ति',
kb_autolock:'ऑटो-लॉक बेस',
kb_prv:'निजी कमरा',
kb_rng:'RNG',
kb_accts:'खाते',
pets_title:'पेट्स',
pets_search_placeholder:'जैसे जंगली बिल्ली, सुनहरा या हीरा, (सुनहरा या पन्ना) जंगली',
pets_hint:'शब्द AND से जुड़ते हैं। OR से विकल्प, कोष्ठक से समूह बनाएँ। * या % वाइल्डकार्ड के रूप में। किसी शब्द को बाहर करने के लिए उसके आगे - लगाएँ।',
pets_empty:'इस कमरे में कोई पेट नहीं मिला',
pt_name:'नाम',
pt_mut:'म्यूटेशन',
pt_rar:'दुर्लभता',
pt_owner:'मालिक',
pt_worth:'मूल्य',
pt_income:'आय/सेकंड',
pt_dist:'दूरी',
slots_title:'वेपॉइंट स्लॉट',
sniper_title:'पेट स्नाइपर',
sniper_tbl_pet:'पालतू',
sniper_tbl_owner:'मालिक',
sniper_tbl_lock:'ताला',
sniper_placeholder:'उदा: हेलो, गोल्ड OR डायमंड, एमराल्ड ड्रैगन',
sniper_hint:'शब्द AND से जुड़ते हैं। OR से विकल्प, कोष्ठक से समूह बनाएँ। * या % वाइल्डकार्ड के रूप में। किसी शब्द को बाहर करने के लिए उसके आगे - लगाएँ।',
sniper_room_col:'कमरा',
sniper_scans_col:'स्कैन',
sniper_top_pet_col:'शीर्ष पालतू',
sniper_top_worth_col:'शीर्ष मूल्य',
sniper_top_owner_col:'शीर्ष स्वामी',
sniper_age_col:'आयु',
sniper_join_btn:'शामिल हों',
sniper_full:'भरा हुआ',
sniper_join_failed:'लक्ष्य कक्ष पूर्ण',
sniper_scanning_rooms:'अन्य कमरे खोज रहे हैं…',
sniper_scan_off:'ऑटो शिकार बंद',
sniper_scan_next:'अगला स्कैन करें',
sniper_scan_idle:'निष्क्रिय - स्कैन करने की प्रतीक्षा में',
sniper_auto_place:'बेस पर स्वतः रखें',
sniper_place_desc:'(चुराए पेट को अपने बेस स्लॉट में रखता है)',
sniper_auto_drop:'वेव्स में बेमेल पालतू जानवरों को ऑटो-ड्रॉप करें',
sniper_drop_desc:'(फ़िल्टर से मेल न खाने वाले जंगली पालतू जानवरों को ड्रॉप करके स्पॉन पूल को ताज़ा करता है)',
sniper_auto_hunt:'ऑटो हंट',
sniper_hunt_desc:'(अन्य कमरों की जाँच कर सबसे अच्छे मैच पर जाएँ)',
sniper_auto_sell:'स्टील में ऑटो-सेल',
sniper_sell_desc:'(बेस भरा होने पर सबसे कम बेचें)',
sniper_lockdown:'लॉकडाउन ≤',
sniper_lockdown_hint:'इतने या कम शेष समय वाले बेस में स्टील लक्ष्य। 0 = केवल अनलॉक।',
sniper_join_grace:'अनुग्रह से जुड़ें',
sniper_start:'स्नाइपर शुरू',
sniper_stop:'स्नाइपर बंद',
sniper_idle:'निष्क्रिय',
sniper_no_filter:'कोई फ़िल्टर सेट नहीं',
sniper_waiting:'मैच की प्रतीक्षा...',
sniper_hold_pause:'पेट पकड़ा हुआ — रोका गया',
sniper_stolen_pause:'हमारा पेट चुराया गया — रोका गया',
sniper_cooldown:'कूलडाउन',
sniper_hopping:'सर्वर बदल रहे हैं...',
sniper_na:'लॉबी में स्नाइपर उपलब्ध नहीं — पहले मैच में शामिल हों',
sniper_wait_lock:'लॉक डेटा की प्रतीक्षा...',
sniper_locked:'बेस लॉक है — छोड़ रहे हैं...',
sniper_full_eggs:'बेस भरा है — केवल अंडे, बेचा नहीं जा सकता',
sniper_stealing:'चोरी जारी',
sniper_dropped:'ड्रॉप किया',
sniper_holding:'पकड़ा हुआ',
sniper_place:'! बेस में रखें।',
sniper_steal_mode:'【स्टील】',
sniper_theft_nohop:'पेट चुराया जा रहा है:',
sniper_nohop_suffix:'— हॉप नहीं',
sniper_sniping:'स्नाइपिंग:',
sniper_options:'विकल्प',
sniper_drop_fail_status:'ड्रॉप विफल!',
sniper_hotkey_label:'हॉटकी:',
sniper_panel_label:'पैनल:',
sniper_grab_fail:'पकड़ विफल। पुनः प्रयास...',
sniper_our_pet_stolen:'हमारा पेट चुराया गया — 8 सेकंड कूलडाउन',
sniper_hopping_short:'हॉप हो रहा है...',
sniper_base_full:'आधार भरा हुआ',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'स्प्रिंट',
pet_teleport_title:'टेलीपोर्ट',
pet_pickup_title:'उठाना',
owner_yours:'आपका',
owner_wild:'जंगली',
footer_gf:'चिकना कांटा',
copy_ok:'कॉपी किया गया',
copy_failed:'प्रतिलिपि विफल',
s_invis_on_fly:'उड़ते समय अदृश्य',
snipe_walk_home:'चोरी के बाद घर चलो',
snipe_walk_home_desc:'अपने बेस पर वापस चलो',
sniper_afk_sell:'AFK बेमेल पालतू जानवर बेचें',
sniper_afk_sell_desc:'(जब निष्क्रिय 5से, फ़िल्टर से मेल न खाने वाले पालतू जानवरों को मूल्य के अनुसार बेचें — केवल तरंगें)',
hb_fly:'उड़',
hb_lck:'लॉक',
hb_inv:'गायब',
hb_cud:'गले',
hb_pet:'पेट',
hb_snp:'निशा',
hb_cfg:'सेटि',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'खाता',
ban_title:'कनेक्शन ब्लॉक किया गया',
ban_sub:'आपका IP पता Meeland द्वारा प्रतिबंधित किया गया है',
ban_body:'चिंता न करें — इसे ठीक करना आसान है! एक मुफ्त VPN आपको एक नया IP देगा ताकि आप फिर से खेल सकें।',
ban_pick:'तुरंत समाधान — कोई एक चुनें:',
ban_warp:'मुफ्त, असीमित, एक-क्लिक सेटअप',
ban_warp_store:'App Store और Play Store पर भी "1.1.1.1" के रूप में उपलब्ध',
ban_proton:'कोई डेटा सीमा नहीं, 5 देश',
ban_steps:'इंस्टॉल करें → कनेक्ट करें → इस पेज को रिफ्रेश करें। बस इतना ही!',
ban_ok:'समझ गया',
warn_title:'हमेशा VPN का उपयोग करें',
warn_body:'हमेशा <b>VPN</b> चालू रखकर खेलें।',
warn_ok:'समझ गया',
loading:'लोड हो रहा है',
tcl_loading:'टावर पूर्ण लूप चल रहा है। रोकने के लिए {key} दबाएँ।',
hop_search:'मैच खोज रहा है',
hop_match:'{name} मिला — जुड़ रहा है',
hop_flee:'घुसपैठिए से भाग रहा है',
hop_reconnect:'फिर से जुड़ रहा है',
hop_reload:'फिर से लोड हो रहा है',
hop_fall:'गिरने से उबर रहा है',
hop_join:'कमरे में जुड़ रहा है',
lock_off:'बंद',
lock_unlocked:'अनलॉक',
desc_intro:'एमईएस आपको मीलैंड में वॉलहैक, ऑटो-फार्मिंग, दुर्लभ पालतू जानवरों का संग्रह, स्पीड बूस्ट, उड़ान, अदृश्यता और बहुत कुछ देता है।',
desc_free:'100% मुफ़्त, हमेशा। प्रतिक्रिया है? एक ⭐ सकारात्मक समीक्षा छोड़ें — यही अपडेट जारी रखता है।',
desc_h_movement:'गति',
desc_h_combat:'युद्ध',
desc_h_tuning:'ट्यूनिंग',
desc_h_pets:'पेट्स और चोरी',
desc_h_economy:'अर्थव्यवस्था',
desc_h_custom:'अनुकूलन',
desc_h_extras:'अतिरिक्त',
desc_fly:'उड़ान',
desc_fly_d:'Space से ऊपर, F से नीचे। स्पीड समायोज्य।',
desc_speed:'ब्लिंक',
desc_speed_d:'Shift से तुरंत टेलीपोर्ट।',
desc_noclip:'दीवार पार',
desc_noclip_d:'दीवारों से गुज़रें।',
desc_walls:'दीवारों पर चलें',
desc_walls_d:'किसी भी सतह पर चढ़ें।',
desc_waypts:'वेपॉइंट',
desc_waypts_d:'10 स्थान सेव करें। एक-कुंजी टेलीपोर्ट। <kbd>Z</kbd> टॉगल।',
desc_invis:'अदृश्य',
desc_invis_d:'पूरी तरह गायब होने के लिए CapsLock दबाएँ।',
desc_fpv:'प्रथम-व्यक्ति दृश्य',
desc_fpv_d:'पहले व्यक्ति कैमरे पर स्विच करने के लिए <kbd>.</kbd> दबाएं।',
desc_anti_invis:'एंटी-अदृश्यता',
desc_anti_invis_d:'अदृश्य खिलाड़ी भूत दिखें।',
desc_xray:'एक्स-रे दृष्टि',
desc_xray_d:'मर्डर मिस्ट्री में दीवारों के पार खिलाड़ियों को देखें। लाल = हत्यारा, हरा = नागरिक।',
desc_nodeathh:'अमर',
desc_nodeath_d:'सभी नुकसान से प्रतिरक्षित।',
desc_antikb:'एंटी-नॉकबैक',
desc_antikb_d:'आपको धक्का नहीं जा सकता।',
desc_attack:'तुरंत हमला',
desc_attack_d:'<kbd>G</kbd> निकटतम खिलाड़ी पर टेलीपोर्ट करके मारता है।',
desc_jumpgrav:'कूद और गुरुत्वाकर्षण',
desc_jumpgrav_d:'सेटिंग्स में समायोज्य गुणक।',
desc_fov:'FOV नियंत्रण',
desc_fov_d:'प्रथम-व्यक्ति और तृतीय-व्यक्ति FOV स्लाइडर।',
desc_autoinvis:'उड़ान पर ऑटो-अदृश्य',
desc_autoinvis_d:'उड़ते समय स्वचालित रूप से अदृश्य हो जाएं।',
desc_sniper:'पेट स्नाइपर',
desc_sniper_d:'फ़िल्टर पालतू जानवरों की ऑटो-चोरी। दोनों मोड।',
desc_prv:'निजी कमरा',
desc_prv_d:'<kbd>PgDn</kbd> वर्तमान मोड में निजी कमरा बनाता है और अपने आप जुड़ता है।',
desc_petbrow:'पेट ब्राउज़र',
desc_petbrow_d:'<kbd>K</kbd> सभी पालतू दिखाता है। छाँटें, फ़िल्टर, पकड़ें।',
desc_cuddle:'गले लगाने का पैनल',
desc_cuddle_d:'<kbd>J</kbd> दूरी अनुसार खिलाड़ी दिखाता है। फॉलो करने के लिए क्लिक।',
desc_return:'ऑटो वापसी',
desc_return_d:'चोरी के बाद घर टेलीपोर्ट।',
desc_autolock:'ऑटो-लॉक',
desc_autolock_d:'बेस हमेशा लॉक।',
desc_fountain:'ऑटो-फ़ाउंटेन',
desc_fountain_d:'स्थायी 1.5× लाभ। ऑटो-नवीकरण।',
desc_money:'मुफ़्त पैसा + सितारे + हीरे',
desc_money_d:'विज्ञापन की ज़रूरत नहीं।',
desc_collect:'ऑटो-संग्रह',
desc_collect_d:'पालतू आय हर 30 सेकंड।',
desc_music:'कैरी ट्यून',
desc_music_d:'चोरी के दौरान संगीत। 15 शैलियाँ।',
desc_chatfade:'चैट फेड',
desc_chatfade_d:'संदेश दृश्यता नियंत्रित करें। 5–120से.',
desc_emotes:'उड़ान इमोट्स',
desc_emotes_d:'उड़ते समय रैंडम इमोट्स।',
desc_displays:'डिस्प्ले ओवरले',
desc_displays_d:'निर्देशांक, FPS काउंटर और लक्ष्य जानकारी।',
desc_config:'सेटिंग्स',
desc_config_d:'<kbd>M</kbd> से फ़ीचर टॉगल, कुंजी बदलें, स्पीड समायोजित करें।',
desc_langs:'60 भाषाएँ',
desc_langs_d:'पूर्ण UI अनुवाद।',
desc_tower:'टावर पूरा करें',
desc_tower_d:'<kbd>Y</kbd> से Obby Tower तुरंत जीतें।',
desc_cats:'बिल्ली लोडिंग स्क्रीन',
desc_cats_d:'प्यारी बिल्लियाँ लोडिंग बदलती हैं।',
desc_h_install:'इंस्टॉल',
desc_desktop:'डेस्कटॉप (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> या <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> प्राप्त करें',
desc_inst_click:'ऊपर इंस्टॉल पर क्लिक करें',
desc_inst_open:'कोई भी Meeland गेम खोलें — बस काम करता है',
desc_mobile:'मोबाइल (Android)',
desc_mob_ff:'Play Store से <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android</a> इंस्टॉल करें',
desc_mob_addon:'Firefox खोलें → मेनू → ऐड-ऑन → <strong>Tampermonkey</strong> इंस्टॉल करें',
desc_mob_visit:'Firefox में इस पेज पर जाएँ और इंस्टॉल टैप करें',
desc_mob_play:'Meeland खेलें — टच HUD बटन ऑटो-दिखते हैं',
desc_ios:'iOS: Apple सभी iOS ब्राउज़र (Firefox सहित) में ब्राउज़र एक्सटेंशन ब्लॉक करता है। डेस्कटॉप ब्राउज़र या Android उपयोग करें।',
desc_h_privacy:'गोपनीयता',
desc_privacy:'केवल क्लाइंट-साइड — कोई डेटा आपके ब्राउज़र से बाहर नहीं जाता'
});
_mk('it','Italiano',{
close:'✕',
refresh:'↻',
go:'Vai',
set:'Imposta',
auto:'Automatico',
empty:'vuoto',
help_title:'Aiuto',
players_title:'Giocatori',
players_empty:'Nessun altro giocatore trovato',
settings_title:'Impostazioni',
settings_reset:'Ripristina',
tab_gameplay:'Gioco',
tab_economy:'Economia',
tab_audio:'Audio',
tab_advanced:'Avanzate',
tab_hud:'HUD',
tab_keys:'Tasti',
tab_accounts:'Account',
acct_current:'Attuale',
acct_new:'Nuovo',
acct_import:'Importa',
acct_switch:'Cambia',
acct_reload:'Ricarica',
acct_delete:'Elimina',
acct_cancel:'Annulla',
acct_empty:'Vuoto',
acct_token_ph:'Token',
acct_copy:'Copia',
acct_export:'Esporta',
acct_rename:'Rinomina',
acct_save:'Salva',
acct_name_len:'Il nome deve avere 4-12 caratteri',
acct_name_fail:'Rinomina fallita',
acct_invalid:'Non valido',
acct_ready:'Account pronto. Chiudi Meeland, cambia IP, poi ricarica.',
acct_ip_note:'Usa sempre una VPN e cambia IP quando cambi account.',
acct_howto:'1. Fai clic su Copia per copiare il link di questo account.\n2. Su un altro browser o dispositivo — o con un amico — apri MES.\n3. Fai clic su Importa e incolla il link.',
sh_movement:'Movimento',
sh_defense:'Difesa',
sh_camera:'Fotocamera',
sh_overlays:'Sovrapposizioni',
sh_behaviour:'Comportamento',
sh_buttons:'Pulsanti',
sh_language:'Lingua',
sh_chat:'Chiacchierata',
sh_waves:'Waves',
sh_steal_a_pet:'Ruba un animale',
sh_tower:'Tower',
sh_misc_multi:'Varie (multi-modalità)',
s_noclip:'Attraversa muri',
s_fly:'Volare',
s_fly_emotes:'Emote di volo',
s_base_speed:'Velocità base',
s_jump_mult:'Salto in altezza',
s_grav_mult:'Gravità',
s_walk_up_walls:'Cammina sui muri',
s_carry_normalize:'Velocità di trasporto + salto',
s_invincibility:'Invincibilità',
s_anti_kb:'Anti-rinculo',
s_invisible:'Invisibile',
s_xray_infection:'Raggi X (Mistero dell\'Omicidio)',
s_ghost_mode:'Modalità fantasma',
s_flee_intruder:'Scappa se c\'è un intruso',
s_first_person:'Vista in prima persona',
s_fov_first_person:'FOV (Prima persona)',
s_fov_third_person:'FOV (3ª pers.)',
s_fov_vertical_mult:'Moltiplicatore verticale FOV',
s_auto_lock:'Auto-blocco base',
s_auto_fountain:'Auto-fontana (1.5×)',
s_daily_coins:'Monete giornaliere',
s_stars:'Stelle',
s_diamonds_tower:'Diamanti (Torre)',
s_tower_loop:'Loop della torre',
s_auto_roll_x25:'Roll auto x25 fortuna',
s_auto_craft:'Craft automatico',
s_auto_vip_sword:'Compra VIP automatica',
s_auto_vip_waves:'Compra VIP automatica (Onde)',
s_direct_kill:'Spam di uccisioni diretto',
s_direct_kill_rate:'Tasso di uccisione',
s_auto_buy_upgrades:'Aggiornamenti per l\'acquisto automatico',
s_boost_coins:'Aggiornamento automatico: monete',
s_boost_diamonds:'Aggiornamento automatico: diamanti',
s_boost_luck:'Aggiornamento automatico: fortuna',
s_auto_unlock_areas:'Aree di sblocco automatico',
s_auto_rebirth:'Rinascita automatica',
s_auto_join_tp:'Teletrasportarsi all\'area più alta',
s_hide_kill_rewards:'Nascondi le ricompense di uccisione',
s_hide_roll_anim:'Nascondi l\'animazione del rotolo',
rng_title:'Trucchi RNG per animali domestici',
rng_sec_rolling:'Tiro',
rng_sec_crafting:'Creazione',
rng_sec_combat:'Combattere',
rng_sec_upgrades:'Aggiornamenti',
rng_sec_areas:'Aree',
rng_actions:'Azioni',
log_craft:'Mestiere',
log_success:'SUCCESSO',
log_fail:'FALLIRE',
log_unlocking_area:'Zona di sblocco',
log_area_unlocked:'Area sbloccata',
log_equipped:'Attrezzato',
log_bought_upgrade:'Acquistato aggiornamento',
log_teleported_to:'Teletrasportato a',
log_rebirthing:'Rinascita',
h_rng:'rng',
h_accts:'Account',
s_auto_collect:'Auto-raccolta guadagni',
s_collect_interval:'Intervallo di raccolta',
s_chat_fade:'Tempo di dissolvenza chat',
s_name_colors:'Colori dei nomi utente',
s_chat_enhance:'Miglioramenti della chat',
mes_hint:'Suggerimento: includi "mes" nel tuo nome utente per un effetto arcobaleno animato!',
s_carry_tune:'Melodia di trasporto (Furto)',
s_pet_pickup_radius:'Raggio Furto Animale',
s_carry_vol:'Volume di trasporto',
carry_tune_default:'Predefinito',
carry_tune_silent:'Silenzioso',
carry_tune_ambient:'Ambiente',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Classica',
carry_tune_electronic:'Elettronica',
carry_tune_epic:'Epica',
carry_tune_folk:'Gente',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metallo',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Roccia',
s_cont_cuddle:'Abbraccio continuo',
s_protips:'Consigli Pro',
s_hideprotips:'Nascondi i miei consigli Pro',
s_show_exp_modes:'Mostra modalità sperimentali',
s_showcoords:'Mostra coordinate',
s_showfps:'Mostra FPS',
s_showtargetinfo:'Mostra info bersaglio',
s_showobj:'Mostra conteggio entità/mesh',
s_copy_dbg:'Copia log di debug',
s_copy_json:'Copia JSON',
s_clear_dbg:'Pulisci',
h_fly:'Volo',
h_speed:'Hack velocità',
h_waypoints:'Punti di viaggio',
h_autolock:'Auto-blocco',
h_invisible:'Invisibile',
h_cuddle:'Abbraccio',
h_pets:'Animali',
h_snipe:'Cecchino',
h_help:'Aiuto',
h_settings:'Impostazioni',
h_prv:'Stanza Privata',
h_tc:'Completa torre',
h_tcl:'Loop della torre',
kb_fly:'Volo (alterna/su)',
kb_fly_down:'Volo giù',
kb_set_home:'Imposta casa',
kb_home:'Casa',
kb_back:'Indietro',
kb_cuddle:'Pannello abbraccio',
kb_settings:'Impostazioni',
kb_pets:'Browser animali',
kb_slots:'Slot punti di viaggio',
kb_snipe:'Pannello cecchino',
kb_snipe_toggle:'Cecchino On/Off',
kb_attack:'Attacca',
kb_help:'Aiuto / Descrizione',
kb_tower:'Completa torre',
kb_tower_loop:'Loop della torre',
kb_invisible:'Invisibile',
kb_first_person:'Prima persona',
kb_autolock:'Base con blocco automatico',
kb_prv:'Stanza Privata',
kb_rng:'RNG',
kb_accts:'Account',
pets_title:'Animali',
pets_search_placeholder:'per esempio. gattino selvatico, oro O diamante, (oro O smeraldo) selvaggio',
pets_hint:'Le parole si combinano con AND. Usa OR per alternative, parentesi per raggruppare. * o % come jolly. Metti - prima di una parola per escluderla.',
pets_empty:'Nessun animale trovato in questa stanza',
pt_name:'Nome',
pt_mut:'Mutazione',
pt_rar:'Rarità',
pt_owner:'Proprietario',
pt_worth:'Valore',
pt_income:'Reddito/s',
pt_dist:'Dist',
slots_title:'Slot punti di viaggio',
sniper_title:'Cecchino animali',
sniper_tbl_pet:'Animale domestico',
sniper_tbl_owner:'Proprietario',
sniper_tbl_lock:'Serratura',
sniper_placeholder:'es. halo, dorato OR diamante, drago smeraldo',
sniper_hint:'Le parole si combinano con AND. Usa OR per alternative, parentesi per raggruppare. * o % come jolly. Metti - prima di una parola per escluderla.',
sniper_room_col:'Stanza',
sniper_scans_col:'Scansioni',
sniper_top_pet_col:'Miglior animale domestico',
sniper_top_worth_col:'Il massimo valore',
sniper_top_owner_col:'Proprietario principale',
sniper_age_col:'Età',
sniper_join_btn:'Unisciti',
sniper_full:'Pieno',
sniper_join_failed:'Stanza target piena',
sniper_scanning_rooms:'Cerco altre stanze…',
sniper_scan_off:'Ricerca automatica disattivata',
sniper_scan_next:'Prossima scansione',
sniper_scan_idle:'Inattivo: in attesa di scansione',
sniper_auto_place:'Posiziona auto sulla base',
sniper_place_desc:'(mette l\'animale rubato nel tuo slot base)',
sniper_auto_drop:'Rilascia automaticamente gli animali non corrispondenti nelle Onde',
sniper_drop_desc:'(rilascia gli animali selvatici che non corrispondono al filtro per rinnovare il pool di spawn)',
sniper_auto_hunt:'Caccia automatica',
sniper_hunt_desc:'(esplora altre stanze, salta alla migliore corrispondenza)',
sniper_auto_sell:'Auto-vendita nel Furto',
sniper_sell_desc:'(vendi il peggiore quando la base è piena)',
sniper_lockdown:'Blocco ≤',
sniper_lockdown_hint:'Obiettivi furto in basi con ≤ questo tempo rimanente. 0 = solo sbloccate.',
sniper_join_grace:'Unisciti alla grazia',
sniper_start:'Avvia cecchino',
sniper_stop:'Ferma cecchino',
sniper_idle:'Inattivo',
sniper_no_filter:'Nessun filtro impostato',
sniper_waiting:'In attesa della partita...',
sniper_hold_pause:'Tiene un animale — in pausa',
sniper_stolen_pause:'il nostro animale rubato — in pausa',
sniper_cooldown:'Recupero',
sniper_hopping:'Cambio server...',
sniper_na:'Cecchino N/D nella lobby — entra prima in una partita',
sniper_wait_lock:'Attendendo dati di blocco...',
sniper_locked:'Base bloccata — saltando...',
sniper_full_eggs:'Base piena — solo uova, impossibile vendere',
sniper_stealing:'Furto in corso',
sniper_dropped:'Rilasciato',
sniper_holding:'In possesso',
sniper_place:'! Posiziona nella base.',
sniper_steal_mode:'[Furto]',
sniper_theft_nohop:'Animale rubato da',
sniper_nohop_suffix:'— nessun hop',
sniper_sniping:'Cecchino attivo',
sniper_options:'Opzioni',
sniper_drop_fail_status:'Rilascio fallito!',
sniper_hotkey_label:'Attiva/disattiva il tasto di scelta rapida:',
sniper_panel_label:'Pannello:',
sniper_grab_fail:'Afferrazione fallita. Nuovo tentativo...',
sniper_our_pet_stolen:'Il nostro animale domestico è stato rubato: tempo di recupero di 8 secondi',
sniper_hopping_short:'Saltando...',
sniper_base_full:'Base piena',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'BATTITO DI CIGLIA',
pet_teleport_title:'Teletrasporto',
pet_pickup_title:'Raccolta',
owner_yours:'Il tuo',
owner_wild:'Selvaggio',
footer_gf:'Forchetta Unta',
copy_ok:'Copiato',
copy_failed:'Copia non riuscita',
s_invis_on_fly:'Invisibile in volo',
snipe_walk_home:'Cammina a casa dopo il furto',
snipe_walk_home_desc:'Torna a piedi alla tua base',
sniper_afk_sell:'Vendi AFK animali non corrispondenti',
sniper_afk_sell_desc:'(quando inattivo 5s, vendi animali non corrispondenti al filtro per valore — solo onde)',
hb_fly:'VOL',
hb_lck:'BLO',
hb_inv:'INV',
hb_cud:'ABB',
hb_pet:'ANI',
hb_snp:'CEC',
hb_cfg:'IMP',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ACC',
ban_title:'Connessione bloccata',
ban_sub:'Il tuo indirizzo IP è stato limitato da Meeland',
ban_body:'Non preoccuparti: è facile risolvere questo problema! Una VPN gratuita ti darà un nuovo IP così potrai giocare di nuovo.',
ban_pick:'Soluzione rapida: scegline una:',
ban_warp:'configurazione gratuita, illimitata, con un clic',
ban_warp_store:'anche su App Store e Play Store come "1.1.1.1"',
ban_proton:'nessun limite massimo di dati, 5 paesi',
ban_steps:'Installa → connetti → aggiorna questa pagina. Questo è tutto!',
ban_ok:'Fatto',
warn_title:'Utilizza sempre una VPN',
warn_body:'Gioca sempre con una <b>VPN</b> attiva.',
warn_ok:'Capito, ho capito',
loading:'Caricamento',
tcl_loading:'Esecuzione del ciclo completo della torre. Premi {key} per fermare.',
hop_search:'Ricerca di una partita',
hop_match:'Trovato {name} — entrando',
hop_flee:'In fuga da un intruso',
hop_reconnect:'Riconnessione',
hop_reload:'Ricarica',
hop_fall:'Recupero da una caduta',
hop_join:'Entrando nella stanza',
lock_off:'SPENTO',
lock_unlocked:'SBLOCCATO',
desc_intro:'MES ti offre wallhack, auto-farming, raccolta di animali rari, aumento di velocità, volo, invisibilità e altro ancora in Meeland',
desc_free:'Gratuito e open source per sempre.',
desc_h_movement:'Movimento',
desc_h_combat:'Combattimento',
desc_h_tuning:'Regolazione',
desc_h_pets:'Animali e Furto',
desc_h_economy:'Economia',
desc_h_custom:'Personalizzazione',
desc_h_extras:'Extra',
desc_fly:'Volo',
desc_fly_d:'Spazio per salire, F per scendere. Velocità regolabile.',
desc_speed:'Battito di ciglia',
desc_speed_d:'Shift per teletrasportarti istantaneamente.',
desc_noclip:'Attraversa muri',
desc_noclip_d:'Passa attraverso muri e pavimenti.',
desc_walls:'Cammina sui Muri',
desc_walls_d:'Scala qualsiasi superficie.',
desc_waypts:'Punti viaggio',
desc_waypts_d:'Salva e teletrasportati tra 8 posizioni.',
desc_invis:'Invisibile',
desc_invis_d:'Premi Bloc Maiusc per scomparire completamente.',
desc_fpv:'Vista in prima persona',
desc_fpv_d:'Premi <kbd>.</kbd> per passare alla visuale in prima persona.',
desc_anti_invis:'Anti-Invisibile',
desc_anti_invis_d:'Vedi i giocatori invisibili come fantasmi.',
desc_xray:'Vista a Raggi X',
desc_xray_d:'Guarda i giocatori attraverso i muri in Mistero dell\'Omicidio. Rosso = assassino, verde = civile.',
desc_nodeathh:'Invincibilità',
desc_nodeath_d:'HP bloccati al massimo. Nessun danno.',
desc_antikb:'Anti-rinculo',
desc_antikb_d:'Non possono spingerti.',
desc_attack:'Auto-attacco',
desc_attack_d:'<kbd>G</kbd> ti teletrasporta al giocatore più vicino e colpisce.',
desc_jumpgrav:'Salto e Gravità',
desc_jumpgrav_d:'Moltiplicatori regolabili nelle Impostazioni.',
desc_fov:'Controllo FOV',
desc_fov_d:'Cursori FOV in prima e terza persona.',
desc_autoinvis:'Auto-Invis in Volo',
desc_autoinvis_d:'Diventa invisibile automaticamente quando voli.',
desc_sniper:'Cecchino animali',
desc_sniper_d:'Filtra, ruba o rilascia animali automaticamente.',
desc_prv:'Stanza Privata',
desc_prv_d:'<kbd>PgDn</kbd> crea una stanza privata nel modo corrente e si unisce automaticamente.',
desc_petbrow:'Browser animali',
desc_petbrow_d:'<kbd>P</kbd> apre una tabella ordinabile e filtrabile.',
desc_cuddle:'Abbraccio continuo',
desc_cuddle_d:'<kbd>J</kbd> elenca i giocatori per distanza. Clicca per seguire.',
desc_return:'Ritorno auto',
desc_return_d:'Riporta automaticamente gli animali rubati.',
desc_autolock:'Blocco auto',
desc_autolock_d:'La base rimane sempre bloccata.',
desc_fountain:'Fontana auto',
desc_fountain_d:'Guadagno permanente 1.5×. Si rinnova automaticamente.',
desc_money:'Monete giornaliere',
desc_money_d:'Raccoglie le monete giornaliere automaticamente.',
desc_collect:'Auto-raccolta',
desc_collect_d:'Redditi degli animali ogni 30s.',
desc_music:'Musica personalizzata',
desc_music_d:'Sostituisci la musica del gioco con la tua.',
desc_chatfade:'Dissolvenza chat',
desc_chatfade_d:'Controlla la visibilità dei messaggi. 5–120s.',
desc_emotes:'Emote di volo',
desc_emotes_d:'Emote casuali durante il volo.',
desc_displays:'Sovrapposizioni Schermo',
desc_displays_d:'Coordinate, contatore FPS e info bersaglio.',
desc_config:'Impostazioni',
desc_config_d:'<kbd>M</kbd> per attivare funzioni, riassegnare tasti, regolare velocità.',
desc_langs:'60 lingue',
desc_langs_d:'Interfaccia tradotta automaticamente.',
desc_tower:'Torre auto',
desc_tower_d:'Completa la torre con un clic.',
desc_cats:'Schermate di caricamento gatti',
desc_cats_d:'Gatti carini sostituiscono il caricamento.',
desc_h_install:'Installazione',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installa Tampermonkey o Violentmonkey',
desc_inst_click:'Clicca su Installa',
desc_inst_open:'Apri qualsiasi gioco Meeland — funziona',
desc_mobile:'Mobile',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Installa lʼestensione Tampermonkey',
desc_mob_visit:'Visita questa pagina e installa',
desc_mob_play:'Gioca a Meeland in Firefox',
desc_ios:'iOS: Usa Userscripts (Safari) + questo script',
desc_h_privacy:'Privacy',
desc_privacy:'Nessun dato raccolto. Tutto resta locale.'
});
_mk('tr','Türkçe',{
close:'✕',
refresh:'↻',
go:'Git',
set:'Ayarla',
auto:'Oto',
empty:'boş',
help_title:'Yardım',
players_title:'Oyuncular',
players_empty:'Başka oyuncu bulunamadı',
settings_title:'Ayarlar',
settings_reset:'Sıfırla',
tab_gameplay:'Oynanış',
tab_economy:'Ekonomi',
tab_audio:'Ses',
tab_advanced:'Gelişmiş',
tab_hud:'HUD',
tab_keys:'Anahtarlar',
tab_accounts:'Hesaplar',
acct_current:'Mevcut',
acct_new:'Yeni',
acct_import:'İçe aktar',
acct_switch:'Değiştir',
acct_reload:'Yenile',
acct_delete:'Sil',
acct_cancel:'İptal',
acct_empty:'Boş',
acct_token_ph:'Token',
acct_copy:'Kopyala',
acct_export:'Dışa aktar',
acct_rename:'Yeniden adlandır',
acct_save:'Kaydet',
acct_name_len:'İsim 4-12 karakter olmalı',
acct_name_fail:'Yeniden adlandırma başarısız',
acct_invalid:'Geçersiz',
acct_ready:'Hesap hazır. Meeland kapatın, IP değiştirin, sonra yenileyin.',
acct_ip_note:'Hesap değiştirirken daima VPN kullanın ve IP değiştirin.',
acct_howto:'1. Bu hesabın bağlantısını kopyalamak için Kopyala\'ya tıklayın.\n2. Başka bir tarayıcıda veya cihazda — ya da bir arkadaşla — MES\'i açın.\n3. İçe aktar\'a tıklayıp bağlantıyı yapıştırın.',
sh_movement:'Hareket',
sh_defense:'Savunma',
sh_camera:'Kamera',
sh_overlays:'Yer payları',
sh_behaviour:'Davranış',
sh_buttons:'Düğmeler',
sh_language:'Dil',
sh_chat:'Sohbet',
sh_waves:'Waves',
sh_steal_a_pet:'Evcil hayvan çal',
sh_tower:'Tower',
sh_misc_multi:'Çeşitli (çoklu mod)',
s_noclip:'Duvarlardan geç',
s_fly:'Uçmak',
s_fly_emotes:'Uçma İfadeleri',
s_base_speed:'Temel Hız',
s_jump_mult:'Atlama Yüksekliği',
s_grav_mult:'Yer çekimi',
s_walk_up_walls:'Duvarlardan Yukarı Yürümek',
s_carry_normalize:'Taşıma Hızı + Zıplama',
s_invincibility:'Yenilmezlik',
s_anti_kb:'Geri Tepmeyi Önleme',
s_invisible:'Görünmez',
s_xray_infection:'X-Ray (Cinayet Gizemi)',
s_ghost_mode:'Hayalet modu',
s_flee_intruder:'Davetsiz misafirde kaç',
s_first_person:'Birinci şahıs görünümü',
s_fov_first_person:'Görüş (Birinci şahıs)',
s_fov_third_person:'FOV (3. şahıs)',
s_fov_vertical_mult:'FOV Dikey Çarpanı',
s_auto_lock:'Otomatik Kilit Tabanı',
s_auto_fountain:'Otomatik Çeşme (1,5×)',
s_daily_coins:'Günlük Paralar',
s_stars:'Yıldızlar',
s_diamonds_tower:'Elmaslar (Kule)',
s_tower_loop:'Kule döngüsü',
s_auto_roll_x25:'Otomatik Roll x25 Şans',
s_auto_craft:'Otomatik Üretim',
s_auto_vip_sword:'Otomatik VIP satın al',
s_auto_vip_waves:'Otomatik VIP satın al (Dalgalar)',
s_direct_kill:'Doğrudan öldürme spamı',
s_direct_kill_rate:'Öldürme hızı',
s_auto_buy_upgrades:'Otomatik Satın Alma Yükseltmeleri',
s_boost_coins:'Otomatik Yükseltme: Paralar',
s_boost_diamonds:'Otomatik Yükseltme: Elmaslar',
s_boost_luck:'Otomatik Yükseltme: Şans',
s_auto_unlock_areas:'Otomatik Kilit Açma Alanları',
s_auto_rebirth:'Otomatik Yeniden Doğuş',
s_auto_join_tp:'En Yüksek Bölgeye Işınlanma',
s_hide_kill_rewards:'Öldürme Ödüllerini Gizle',
s_hide_roll_anim:'Rulo Animasyonu Gizle',
rng_title:'Evcil Hayvanlar RNG Hileleri',
rng_sec_rolling:'Yuvarlamak',
rng_sec_crafting:'işçiliği',
rng_sec_combat:'Dövüş',
rng_sec_upgrades:'Yükseltmeler',
rng_sec_areas:'Alanlar',
rng_actions:'Eylemler',
log_craft:'Zanaat',
log_success:'BAŞARI',
log_fail:'HATA',
log_unlocking_area:'Kilit açma alanı',
log_area_unlocked:'Alanın kilidi açıldı',
log_equipped:'Donanımlı',
log_bought_upgrade:'Yükseltme satın alındı',
log_teleported_to:'Şuraya ışınlandı:',
log_rebirthing:'Yeniden doğuş',
h_rng:'rng',
h_accts:'Hesaplar',
s_auto_collect:'Kazançları Otomatik Olarak Topla',
s_collect_interval:'Toplama Aralığı',
s_chat_fade:'Sohbetin Sönme Süresi',
s_name_colors:'Kullanıcı adı renkleri',
s_chat_enhance:'Sohbet geliştirmeleri',
mes_hint:'İpucu: Gökkuşağı animasyonu efekti için kullanıcı adınıza "mes" ekleyin!',
s_carry_tune:'Carry Melodisi (Çalmak)',
s_pet_pickup_radius:'Hayvan Çalma Yarıçapı',
s_carry_vol:'Taşıma Hacmi',
carry_tune_default:'Varsayılan',
carry_tune_silent:'Sessiz',
carry_tune_ambient:'Ortam',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasik',
carry_tune_electronic:'Elektronik',
carry_tune_epic:'Destansı',
carry_tune_folk:'Halk',
carry_tune_funk:'Funk',
carry_tune_jazz:'Caz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'maden',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Kaynak',
s_cont_cuddle:'Sürekli Sarılma',
s_protips:'Profesyonel İpuçları',
s_hideprotips:'Profesyonel İpuçlarımı Gizle',
s_show_exp_modes:'Deneysel Modları Göster',
s_showcoords:'Koordinatları Göster',
s_showfps:'FPS\'yi göster',
s_showtargetinfo:'Hedef bilgisini göster',
s_showobj:'Varlık / Mesh Sayısını Göster',
s_copy_dbg:'Hata Ayıklama Günlüklerini Kopyala',
s_copy_json:'JSON\'u kopyala',
s_clear_dbg:'Temizle',
h_fly:'Uçmak',
h_speed:'Göz kırpmak',
h_waypoints:'Ara noktalar',
h_autolock:'Otomatik Kilit',
h_invisible:'Görünmez',
h_cuddle:'Sarılmak',
h_pets:'Evcil hayvanlar',
h_snipe:'Su çulluğu',
h_help:'Yardım',
h_settings:'Ayarlar',
h_prv:'Özel Oda',
h_tc:'Kule Tamamlandı',
h_tcl:'Kule döngüsü',
kb_fly:'Uç (geçiş/yukarı)',
kb_fly_down:'Aşağı Uç',
kb_set_home:'Ana Sayfayı Ayarla',
kb_home:'Ev',
kb_back:'Geri',
kb_cuddle:'Sarılma Paneli',
kb_settings:'Ayarlar',
kb_pets:'Evcil Hayvan Tarayıcı',
kb_slots:'Yol Noktası Yuvaları',
kb_snipe:'Keskin Nişancı Paneli',
kb_snipe_toggle:'Keskin Nişancı Açık/Kapalı',
kb_attack:'Saldırı',
kb_help:'Yardım / Açıklama',
kb_tower:'Kule Tamamlandı',
kb_tower_loop:'Kule döngüsü',
kb_invisible:'Görünmez',
kb_first_person:'Birinci şahıs',
kb_autolock:'Otomatik Kilit Tabanı',
kb_prv:'Özel Oda',
kb_rng:'RNG',
kb_accts:'Hesaplar',
pets_title:'Evcil hayvanlar',
pets_search_placeholder:'örneğin vahşi kedi, altın VEYA elmas, (altın VEYA zümrüt) vahşi',
pets_hint:'Kelimeler birlikte VE ile işaretlenmiştir. Alternatifler için VEYA\'yı, gruplandırmak için parantezleri kullanın. * veya joker karakter olarak %. Hariç tutmak için kelimenin önüne - koyun.',
pets_empty:'Bu odada evcil hayvan bulunamadı',
pt_name:'İsim',
pt_mut:'Mutasyon',
pt_rar:'Nadirlik',
pt_owner:'Mal sahibi',
pt_worth:'Değer',
pt_income:'Gelir/ler',
pt_dist:'Mesafe',
slots_title:'Yol Noktası Yuvaları',
sniper_title:'Evcil Hayvan Keskin Nişancı',
sniper_tbl_pet:'Evcil Hayvan',
sniper_tbl_owner:'Mal sahibi',
sniper_tbl_lock:'Kilit',
sniper_placeholder:'örneğin hale, altın VEYA elmas, zümrüt ejderha',
sniper_hint:'Kelimeler VE\'dir. Alternatifler için VEYA\'yı, gruplandırmak için parantezleri kullanın. * veya joker karakter olarak %. Hariç tutmak için kelimenin önüne - koyun.',
sniper_room_col:'Oda',
sniper_scans_col:'taramalar',
sniper_top_pet_col:'En İyi Evcil Hayvan',
sniper_top_worth_col:'En Yüksek Değer',
sniper_top_owner_col:'Üst Sahip',
sniper_age_col:'Yaş',
sniper_join_btn:'Katıl',
sniper_full:'Dolu',
sniper_join_failed:'Hedef oda dolu',
sniper_scanning_rooms:'Diğer odalar aranıyor…',
sniper_scan_off:'Otomatik av kapalı',
sniper_scan_next:'Sonraki tarama',
sniper_scan_idle:'Boşta — taramayı bekliyor',
sniper_auto_place:'Üsse Otomatik Yerleştir',
sniper_place_desc:'(çalınan hayvanı üs slotuna yerleştirir)',
sniper_auto_drop:'Dalgalarda filtre uymayan evcil hayvanları otomatik bırak',
sniper_drop_desc:'(filtreye uymayan vahşi hayvanları bırakarak doğma havuzunu tazeler)',
sniper_auto_hunt:'Otomatik Av',
sniper_hunt_desc:'(diğer odaları tarar, en iyi eşleşmeye atlar)',
sniper_auto_sell:'Çalmada otomatik satış',
sniper_sell_desc:'(taban dolduğunda en düşük satışı yapın)',
sniper_lockdown:'Kilitleme ≤',
sniper_lockdown_hint:'Bu sefer kalan ≤ üslerdeki hedefleri çalın. 0 = yalnızca kilidi açıldı.',
sniper_join_grace:'Zarafete katıl',
sniper_start:'Keskin Nişancılığa Başla',
sniper_stop:'Keskin Nişancılığı Durdur',
sniper_idle:'Boşta',
sniper_no_filter:'Filtre seti yok',
sniper_waiting:'Oyun bekleniyor...',
sniper_hold_pause:'Evcil hayvan tutmak — duraklatıldı',
sniper_stolen_pause:'evcil hayvanımız var — duraklatıldı',
sniper_cooldown:'Sakin ol',
sniper_hopping:'Atlamalı sunucu...',
sniper_na:'Lobide keskin nişancı yok — önce bir oyuna katılın',
sniper_wait_lock:'Kilit verileri bekleniyor...',
sniper_locked:'Üs kilitlendi — atlanıyor...',
sniper_full_eggs:'Tabanı dolu - yalnızca yumurtalar satılamaz',
sniper_stealing:'Hırsızlık',
sniper_dropped:'Düştü',
sniper_holding:'Tutma',
sniper_place:'! Tabana yerleştirin.',
sniper_steal_mode:'[Hırsızlık yapmak]',
sniper_theft_nohop:'Evcil hayvanın çalınması',
sniper_nohop_suffix:'- atlama yok',
sniper_sniping:'Keskin nişancılık:',
sniper_options:'Seçenekler',
sniper_drop_fail_status:'Bırakma başarısız oldu!',
sniper_hotkey_label:'Kısayol tuşunu değiştir:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Yakalama başarısız oldu. Yeniden deneniyor...',
sniper_our_pet_stolen:'Evcil hayvanımız çalındı — 8s bekleme süresi',
sniper_hopping_short:'Hopluyor...',
sniper_base_full:'Taban dolu',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'GÖZ KIRPMAK',
pet_teleport_title:'Işınlanma',
pet_pickup_title:'Toplamak',
owner_yours:'seninki',
owner_wild:'Vahşi',
footer_gf:'Yağlı Çatal',
copy_ok:'Kopyalandı',
copy_failed:'Kopyalama Başarısız',
s_invis_on_fly:'Uçarken görünmez',
snipe_walk_home:'Çaldıktan sonra eve yürü',
snipe_walk_home_desc:'Üssüne yürüyerek dön',
sniper_afk_sell:'AFK uymayan hayvanları sat',
sniper_afk_sell_desc:'(5sn boşta kalınca, filtreye uymayan hayvanları değere göre sat — sadece dalgalar)',
hb_fly:'UÇ',
hb_lck:'KİL',
hb_inv:'GÖR',
hb_cud:'SAR',
hb_pet:'EVC',
hb_snp:'KNŞ',
hb_cfg:'AYR',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'HSP',
ban_title:'Bağlantı Engellendi',
ban_sub:'IP adresiniz Meeland tarafından kısıtlandı',
ban_body:'Endişeye gerek yok; bunu düzeltmek çok kolay! Ücretsiz bir VPN size tekrar oynayabilmeniz için yeni bir IP verecektir.',
ban_pick:'Hızlı düzeltme — herhangi birini seçin:',
ban_warp:'ücretsiz, sınırsız, tek tıklamayla kurulum',
ban_warp_store:'ayrıca App Store & Play Store\'da "1.1.1.1" adıyla',
ban_proton:'veri sınırı yok, 5 ülke',
ban_steps:'Yükle → bağlan → bu sayfayı yenileyin. İşte bu!',
ban_ok:'Anladım',
warn_title:'Her Zaman VPN Kullanın',
warn_body:'Her zaman <b>VPN</b> açıkken oyna.',
warn_ok:'Anladım, anlıyorum',
loading:'Yükleniyor',
tcl_loading:'Kule tam döngüsü çalışıyor. Durdurmak için {key} tuşuna basın.',
hop_search:'Maç aranıyor',
hop_match:'{name} bulundu — katılınıyor',
hop_flee:'Davetsiz misafirden kaçılıyor',
hop_reconnect:'Yeniden bağlanıyor',
hop_reload:'Yeniden yükleniyor',
hop_fall:'Düşmeden kurtarılıyor',
hop_join:'Odaya katılınıyor',
lock_off:'KAPALI',
lock_unlocked:'KİLİDİ AÇIK',
desc_intro:'MES size Meeland\'de wallhack, otomatik çiftçilik, nadir evcil hayvan toplama, hız artırma, uçuş, görünmezlik ve daha fazlasını sunuyor',
desc_free:'Sonsuza kadar ücretsiz ve açık kaynak.',
desc_h_movement:'Hareket',
desc_h_combat:'Savaş',
desc_h_tuning:'Ayar',
desc_h_pets:'Hayvanlar ve Hırsızlık',
desc_h_economy:'Ekonomi',
desc_h_custom:'Özelleştirme',
desc_h_extras:'Ekstralar',
desc_fly:'Uçuş',
desc_fly_d:'Boşluk yukarı, F aşağı. Ayarlanabilir hız.',
desc_speed:'Göz kırpmak',
desc_speed_d:'Shift ile anında ışınlan.',
desc_noclip:'Duvardan geçme',
desc_noclip_d:'Duvarlardan ve zeminlerden geç.',
desc_walls:'Duvarlarda Yürü',
desc_walls_d:'Her yüzeye tırman.',
desc_waypts:'Seyahat noktaları',
desc_waypts_d:'8 konum kaydet ve aralarında ışınlan.',
desc_invis:'Görünmezlik',
desc_invis_d:'Tamamen kaybolmak için CapsLock\'a bas.',
desc_fpv:'Birinci şahıs görünümü',
desc_fpv_d:'Birinci şahıs kameraya geçmek için <kbd>.</kbd> tuşuna bas.',
desc_anti_invis:'Anti-Görünmezlik',
desc_anti_invis_d:'Görünmez oyuncuları hayalet olarak gör.',
desc_xray:'X-Ray Görüşü',
desc_xray_d:'Cinayet Gizemi\'nde duvarların ardından oyuncuları görün. Kırmızı = katil, yeşil = sivil.',
desc_nodeathh:'Yenilmezlik',
desc_nodeath_d:'HP maksimumda sabit. Hasar yok.',
desc_antikb:'Anti-itme',
desc_antikb_d:'Sizi itemezler.',
desc_attack:'Otomatik saldırı',
desc_attack_d:'<kbd>G</kbd> en yakın oyuncuya ışınlar ve vurur.',
desc_jumpgrav:'Zıplama ve Yerçekimi',
desc_jumpgrav_d:'Ayarlar\'da ayarlanabilir çarpanlar.',
desc_fov:'FOV Kontrolü',
desc_fov_d:'Birinci ve üçüncü şahıs FOV kaydırıcıları.',
desc_autoinvis:'Uçuşta Oto-Görünmez',
desc_autoinvis_d:'Uçarken otomatik olarak görünmez ol.',
desc_sniper:'Hayvan keskin nişancı',
desc_sniper_d:'Hayvanları otomatik filtrele, çal veya bırak.',
desc_prv:'Özel Oda',
desc_prv_d:'<kbd>PgDn</kbd> mevcut modda özel oda oluşturur ve otomatik katılır.',
desc_petbrow:'Hayvan tarayıcı',
desc_petbrow_d:'<kbd>P</kbd> sıralanabilir ve filtrelenebilir tablo açar.',
desc_cuddle:'Sürekli sarılma',
desc_cuddle_d:'<kbd>J</kbd> mesafeye göre oyuncuları listeler. Takip için tıkla.',
desc_return:'Otomatik iade',
desc_return_d:'Çalınan hayvanları otomatik geri getirir.',
desc_autolock:'Otomatik kilit',
desc_autolock_d:'Üs her zaman kilitli kalır.',
desc_fountain:'Otomatik çeşme',
desc_fountain_d:'Kalıcı 1.5× kazanç. Otomatik yenilenir.',
desc_money:'Günlük paralar',
desc_money_d:'Günlük paraları otomatik toplar.',
desc_collect:'Otomatik toplama',
desc_collect_d:'Her 30 saniyede hayvan geliri.',
desc_music:'Özel müzik',
desc_music_d:'Oyun müziğini kendinizinkiyle değiştirin.',
desc_chatfade:'Sohbet solması',
desc_chatfade_d:'Mesaj görünürlüğünü kontrol edin. 5–120s.',
desc_emotes:'Uçuş emojileri',
desc_emotes_d:'Uçarken rastgele emojiler.',
desc_displays:'Ekran Yerleşimleri',
desc_displays_d:'Koordinatlar, FPS sayacı ve hedef bilgisi.',
desc_config:'Ayarlar',
desc_config_d:'<kbd>M</kbd> ile özellikleri aç, tuşları değiştir, hızları ayarla.',
desc_langs:'60 dil',
desc_langs_d:'Arayüz otomatik çevrilir.',
desc_tower:'Otomatik kule',
desc_tower_d:'Kuleyi tek tıkla tamamla.',
desc_cats:'Kedi yükleme ekranları',
desc_cats_d:'Sevimli kediler yüklemeyi değiştirir.',
desc_h_install:'Kurulum',
desc_desktop:'Masaüstü (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Tampermonkey veya Violentmonkey yükleyin',
desc_inst_click:'Kur düğmesine tıklayın',
desc_inst_open:'Herhangi bir Meeland oyunu açın — çalışır',
desc_mobile:'Mobil',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Tampermonkey eklentisini yükleyin',
desc_mob_visit:'Bu sayfayı ziyaret edin ve yükleyin',
desc_mob_play:'Firefox ile Meeland oynayın',
desc_ios:'iOS: Userscripts (Safari) + bu betiği kullanın',
desc_h_privacy:'Gizlilik',
desc_privacy:'Veri toplanmaz. Her şey yerel kalır.'
});
_mk('nl','Nederlands',{
close:'✕',
refresh:'↻',
go:'Ga',
set:'Instellen',
auto:'Auto',
empty:'leeg',
help_title:'Hulp',
players_title:'Spelers',
players_empty:'Geen andere spelers gevonden',
settings_title:'Instellingen',
settings_reset:'Resetten',
tab_gameplay:'Gameplay',
tab_economy:'Economie',
tab_audio:'Audio',
tab_advanced:'Geavanceerd',
tab_hud:'HUD',
tab_keys:'Toetsen',
tab_accounts:'Accounts',
acct_current:'Huidig',
acct_new:'Nieuw',
acct_import:'Importeren',
acct_switch:'Wisselen',
acct_reload:'Herladen',
acct_delete:'Verwijderen',
acct_cancel:'Annuleren',
acct_empty:'Leeg',
acct_token_ph:'Token',
acct_copy:'Kopiëren',
acct_export:'Exporteren',
acct_rename:'Hernoemen',
acct_save:'Opslaan',
acct_name_len:'Naam moet 4-12 tekens bevatten',
acct_name_fail:'Hernoemen mislukt',
acct_invalid:'Ongeldig',
acct_ready:'Account gereed. Sluit Meeland, wissel je IP, dan herladen.',
acct_ip_note:'Gebruik altijd een VPN en wissel je IP bij het wisselen van account.',
acct_howto:'1. Klik op Kopiëren om de link van dit account te kopiëren.\n2. Open MES in een andere browser of op een ander apparaat — of bij een vriend.\n3. Klik op Importeren en plak de link.',
sh_movement:'Beweging',
sh_defense:'Verdediging',
sh_camera:'Camera',
sh_overlays:'Overlays',
sh_behaviour:'Gedrag',
sh_buttons:'Knoppen',
sh_language:'Taal',
sh_chat:'Chatten',
sh_waves:'Waves',
sh_steal_a_pet:'Huisdier stelen',
sh_tower:'Tower',
sh_misc_multi:'Overig (multi-modus)',
s_noclip:'Door muren lopen',
s_fly:'Vlieg',
s_fly_emotes:'Vliegemotes',
s_base_speed:'Basissnelheid',
s_jump_mult:'Spring hoogte',
s_grav_mult:'Zwaartekracht',
s_walk_up_walls:'Loop muren op',
s_carry_normalize:'Draagsnelheid + springen',
s_invincibility:'Onkwetsbaarheid',
s_anti_kb:'Anti-terugslag',
s_invisible:'Onzichtbaar',
s_xray_infection:'Röntgen (Moordmysterie)',
s_ghost_mode:'Spookmodus',
s_flee_intruder:'Vlucht bij indringer',
s_first_person:'Eerste persoonsweergave',
s_fov_first_person:'FOV (Eerste persoon)',
s_fov_third_person:'FOV (3e pers.)',
s_fov_vertical_mult:'FOV verticale vermenigvuldiger',
s_auto_lock:'Auto-vergrendeling basis',
s_auto_fountain:'Auto-fontein (1.5×)',
s_daily_coins:'Dagelijkse munten',
s_stars:'Sterren',
s_diamonds_tower:'Diamanten (Toren)',
s_tower_loop:'Torenlus',
s_auto_roll_x25:'Auto-roll x25 geluk',
s_auto_craft:'Automatisch craften',
s_auto_vip_sword:'Automatisch VIP kopen',
s_auto_vip_waves:'Automatisch VIP kopen (Golven)',
s_direct_kill:'Direct kill-spam',
s_direct_kill_rate:'Kill-snelheid',
s_auto_buy_upgrades:'Upgrades voor automatisch kopen',
s_boost_coins:'Automatische upgrade: munten',
s_boost_diamonds:'Automatische upgrade: diamanten',
s_boost_luck:'Automatische upgrade: geluk',
s_auto_unlock_areas:'Gebieden automatisch ontgrendelen',
s_auto_rebirth:'Automatische wedergeboorte',
s_auto_join_tp:'Teleporteer naar het hoogste gebied',
s_hide_kill_rewards:'Verberg Kill-beloningen',
s_hide_roll_anim:'Rolanimatie verbergen',
rng_title:'Huisdieren RNG Cheats',
rng_sec_rolling:'Rollend',
rng_sec_crafting:'Knutselen',
rng_sec_combat:'Gevecht',
rng_sec_upgrades:'upgrades',
rng_sec_areas:'Gebieden',
rng_actions:'Acties',
log_craft:'Ambacht',
log_success:'SUCCES',
log_fail:'MISLUKKING',
log_unlocking_area:'Ontgrendelingsgebied',
log_area_unlocked:'Gebied ontgrendeld',
log_equipped:'Uitgerust',
log_bought_upgrade:'Upgrade gekocht',
log_teleported_to:'Geteleporteerd naar',
log_rebirthing:'Wedergeboorte',
h_rng:'rng',
h_accts:'Accounts',
s_auto_collect:'Auto-inkomsten verzamelen',
s_collect_interval:'Verzamelinterval',
s_chat_fade:'Chat-uitvagtijd',
s_name_colors:'Gebruikersnaamkleuren',
s_chat_enhance:'Chatverbeteringen',
mes_hint:'Tip: voeg "mes" toe aan je gebruikersnaam voor een regenboog-animatie-effect!',
s_carry_tune:'Draagmelodie (Stelen)',
s_pet_pickup_radius:'Dier Stelen Straal',
s_carry_vol:'Draagvolume',
carry_tune_default:'Standaard',
carry_tune_silent:'Stil',
carry_tune_ambient:'Omgeving',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassiek',
carry_tune_electronic:'Elektronisch',
carry_tune_epic:'Episch',
carry_tune_folk:'Volk',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metaal',
carry_tune_pop:'Knal',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Steen',
s_cont_cuddle:'Doorlopend knuffelen',
s_protips:'Professionele tips',
s_hideprotips:'Mijn Pro Tips verbergen',
s_show_exp_modes:'Experimentele modi tonen',
s_showcoords:'Coördinaten tonen',
s_showfps:'FPS tonen',
s_showtargetinfo:'Doelinformatie tonen',
s_showobj:'Toon entiteit/meshtelling',
s_copy_dbg:'Debug-logs kopiëren',
s_copy_json:'JSON kopiëren',
s_clear_dbg:'Wissen',
h_fly:'Vliegen',
h_speed:'Snelheidshack',
h_waypoints:'Punten',
h_autolock:'Auto-vergrendeling',
h_invisible:'Onzichtbaar',
h_cuddle:'Knuffelen',
h_pets:'Huisdieren',
h_snipe:'Scherpschutter',
h_help:'Hulp',
h_settings:'Instellingen',
h_prv:'Privékamer',
h_tc:'Toren voltooien',
h_tcl:'Torenlus',
kb_fly:'Vliegen (schakelen/omhoog)',
kb_fly_down:'Omlaag vliegen',
kb_set_home:'Thuis instellen',
kb_home:'Thuis',
kb_back:'Terug',
kb_cuddle:'Knuffelpaneel',
kb_settings:'Instellingen',
kb_pets:'Huisdierverkenner',
kb_slots:'Waypointslots',
kb_snipe:'Scherpschutterpaneel',
kb_snipe_toggle:'Scherpschutter Aan/Uit',
kb_attack:'Aanvallen',
kb_help:'Help / Beschrijving',
kb_tower:'Toren voltooien',
kb_tower_loop:'Torenlus',
kb_invisible:'Onzichtbaar',
kb_first_person:'Eerste persoon',
kb_autolock:'Basis met automatische vergrendeling',
kb_prv:'Privékamer',
kb_rng:'RNG',
kb_accts:'Accounts',
pets_title:'Huisdieren',
pets_search_placeholder:'bijv. wilde kat, goud OF diamant, (gouden OF smaragd) wild',
pets_hint:'Woorden combineren met EN. Gebruik OR voor alternatieven, haakjes voor groepering. * of % als joker. Zet - voor een woord om het uit te sluiten.',
pets_empty:'Geen huisdieren gevonden in deze kamer',
pt_name:'Naam',
pt_mut:'Mutatie',
pt_rar:'Zeldzaamheid',
pt_owner:'Eigenaar',
pt_worth:'Waarde',
pt_income:'Inkomen/s',
pt_dist:'Afst',
slots_title:'Waypointslots',
sniper_title:'Huisdier-scherpschutter',
sniper_tbl_pet:'Huisdier',
sniper_tbl_owner:'Eigenaar',
sniper_tbl_lock:'Slot',
sniper_placeholder:'bijv. halo, goud OR diamant, smaragd draak',
sniper_hint:'Woorden combineren met EN. Gebruik OR voor alternatieven, haakjes voor groepering. * of % als joker. Zet - voor een woord om het uit te sluiten.',
sniper_room_col:'Kamer',
sniper_scans_col:'Scannen',
sniper_top_pet_col:'Top huisdier',
sniper_top_worth_col:'Top waard',
sniper_top_owner_col:'Topeigenaar',
sniper_age_col:'Leeftijd',
sniper_join_btn:'Deelnemen',
sniper_full:'Vol',
sniper_join_failed:'Doelkamer vol',
sniper_scanning_rooms:'Andere kamers zoeken…',
sniper_scan_off:'Automatische jacht uit',
sniper_scan_next:'Volgende scan in',
sniper_scan_idle:'Inactief — wachtend om te scannen',
sniper_auto_place:'Auto-plaatsen op basis',
sniper_place_desc:'(plaatst gestolen huisdier op jouw basisslot)',
sniper_auto_drop:'Niet-overeenkomende huisdieren automatisch loslaten in Golven',
sniper_drop_desc:'(laat wilde huisdieren los die niet overeenkomen met het filter om de spawnpool te vernieuwen)',
sniper_auto_hunt:'Auto-jacht',
sniper_hunt_desc:'(verkent andere kamers, springt naar de beste match)',
sniper_auto_sell:'Auto-verkoop bij Stelen',
sniper_sell_desc:'(slechtste verkopen als basis vol)',
sniper_lockdown:'Vergrendeling ≤',
sniper_lockdown_hint:'Steel doelen in bases met ≤ deze resterende tijd. 0 = alleen ontgrendeld.',
sniper_join_grace:'Sluit je aan bij genade',
sniper_start:'Scherpschutter starten',
sniper_stop:'Scherpschutter stoppen',
sniper_idle:'Inactief',
sniper_no_filter:'Geen filter ingesteld',
sniper_waiting:'Wachten op wedstrijd...',
sniper_hold_pause:'Houdt huisdier vast — gepauzeerd',
sniper_stolen_pause:'heeft ons huisdier — gepauzeerd',
sniper_cooldown:'Afkoeling',
sniper_hopping:'Server wisselen...',
sniper_na:'Scherpschutter N/B in lobby — neem eerst deel aan een wedstrijd',
sniper_wait_lock:'Wachten op vergrendelingsdata...',
sniper_locked:'Basis vergrendeld — overslaan...',
sniper_full_eggs:'Basis vol — alleen eieren, kan niet verkopen',
sniper_stealing:'Stelen',
sniper_dropped:'Losgelaten',
sniper_holding:'Vasthoudend',
sniper_place:'! Plaats in basis.',
sniper_steal_mode:'[Stelen]',
sniper_theft_nohop:'Huisdier wordt gestolen door',
sniper_nohop_suffix:'— geen hop',
sniper_sniping:'Snipen:',
sniper_options:'Opties',
sniper_drop_fail_status:'Loslaten mislukt!',
sniper_hotkey_label:'Sneltoets:',
sniper_panel_label:'Paneel:',
sniper_grab_fail:'Grijpen mislukt. Opnieuw proberen...',
sniper_our_pet_stolen:'Ons huisdier gestolen — 8s afkoeling',
sniper_hopping_short:'Hoppen...',
sniper_base_full:'Basis vol',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleporteren',
pet_pickup_title:'Ophalen',
owner_yours:'De jouwe',
owner_wild:'Wild',
footer_gf:'Vette vork',
copy_ok:'Gekopieerd',
copy_failed:'Kopiëren mislukt',
s_invis_on_fly:'Onzichtbaar bij vliegen',
snipe_walk_home:'Naar huis lopen na stelen',
snipe_walk_home_desc:'Loop terug naar je basis',
sniper_afk_sell:'AFK verkoop niet-overeenkomende huisdieren',
sniper_afk_sell_desc:'(bij inactiviteit 5s, verkoop huisdieren die niet overeenkomen met filter op waarde — alleen golven)',
hb_fly:'VLI',
hb_lck:'SLT',
hb_inv:'ONZ',
hb_cud:'KNU',
hb_pet:'DIE',
hb_snp:'SNI',
hb_cfg:'INS',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ACC',
ban_title:'Verbinding geblokkeerd',
ban_sub:'Je IP-adres is beperkt door Meeland',
ban_body:'Geen zorgen — dit is makkelijk op te lossen! Een gratis VPN geeft je een nieuw IP-adres zodat je weer kunt spelen.',
ban_pick:'Snelle oplossing — kies er een:',
ban_warp:'gratis, onbeperkt, één-klik installatie',
ban_warp_store:'ook in de App Store & Play Store als "1.1.1.1"',
ban_proton:'geen datalimiet, 5 landen',
ban_steps:'Installeer → verbind → ververs deze pagina. Dat is alles!',
ban_ok:'Begrepen',
warn_title:'Gebruik altijd een VPN',
warn_body:'Speel altijd met een <b>VPN</b> aan.',
warn_ok:'Begrepen',
loading:'Laden',
tcl_loading:'Volledige torenlus wordt uitgevoerd. Druk op {key} om te stoppen.',
hop_search:'Zoeken naar wedstrijd',
hop_match:'{name} gevonden — toetreden',
hop_flee:'Vluchten voor indringer',
hop_reconnect:'Opnieuw verbinden',
hop_reload:'Opnieuw laden',
hop_fall:'Herstellen van een val',
hop_join:'Kamer wordt betreden',
lock_off:'UIT',
lock_unlocked:'ONTGRENDELD',
desc_intro:'MES biedt je wallhack, autolandbouw, het verzamelen van zeldzame huisdieren, snelheidsboost, vluchten, onzichtbaarheid en meer in Meeland',
desc_free:'100% gratis, altijd. Feedback? Laat een positieve ⭐ review achter — dat houdt de updates gaande.',
desc_h_movement:'Beweging',
desc_h_combat:'Gevecht',
desc_h_tuning:'Afstelling',
desc_h_pets:'Huisdieren & Stelen',
desc_h_economy:'Economie',
desc_h_custom:'Aanpassing',
desc_h_extras:'Extraʼs',
desc_fly:'Vliegen',
desc_fly_d:'Space om te stijgen, F om te dalen. Snelheid instelbaar.',
desc_speed:'Knipperen',
desc_speed_d:'Shift om direct te teleporteren.',
desc_noclip:'Door muren lopen',
desc_noclip_d:'Loop door muren.',
desc_walls:'Tegen Muren Lopen',
desc_walls_d:'Beklim elk oppervlak.',
desc_waypts:'Routepunten',
desc_waypts_d:'10 posities opslaan. Teleport met één toets. <kbd>Z</kbd> om terug te schakelen.',
desc_invis:'Onzichtbaar',
desc_invis_d:'Druk op CapsLock om volledig te verdwijnen.',
desc_fpv:'Eerste persoonsweergave',
desc_fpv_d:'Druk op <kbd>.</kbd> om te schakelen naar first-person camera.',
desc_anti_invis:'Anti-onzichtbaarheid',
desc_anti_invis_d:'Zie onzichtbare spelers als geesten.',
desc_xray:'Röntgenvisie',
desc_xray_d:'Zie spelers door muren in Moordmysterie. Rood = moordenaar, groen = burger.',
desc_nodeathh:'Onkwetsbaar',
desc_nodeath_d:'Immuun voor alle schade.',
desc_antikb:'Anti-terugslag',
desc_antikb_d:'Je kunt niet geduwd worden.',
desc_attack:'Directe aanval',
desc_attack_d:'<kbd>G</kbd> teleporteert naar dichtstbijzijnde speler en slaat.',
desc_jumpgrav:'Springen & Zwaartekracht',
desc_jumpgrav_d:'Instelbare vermenigvuldigers in Instellingen.',
desc_fov:'FOV Regeling',
desc_fov_d:'FOV-schuifregelaars voor eerste en derde persoon.',
desc_autoinvis:'Auto-Onzichtbaar bij Vliegen',
desc_autoinvis_d:'Word automatisch onzichtbaar tijdens het vliegen.',
desc_sniper:'Huisdier-scherpschutter',
desc_sniper_d:'Automatisch stelen van gefilterde huisdieren. Beide modi.',
desc_prv:'Privékamer',
desc_prv_d:'<kbd>PgDn</kbd> maakt een privékamer aan in de huidige modus en treedt automatisch toe.',
desc_petbrow:'Huisdierverkenner',
desc_petbrow_d:'<kbd>K</kbd> toont alle huisdieren. Sorteer, filter, pak.',
desc_cuddle:'Knuffelpaneel',
desc_cuddle_d:'<kbd>J</kbd> lijst spelers op afstand. Klik om te volgen.',
desc_return:'Auto Terugkeer',
desc_return_d:'Teleporteert naar huis na diefstal.',
desc_autolock:'Auto-vergrendeling',
desc_autolock_d:'Basis altijd vergrendeld.',
desc_fountain:'Auto-fontein',
desc_fountain_d:'Permanent 1.5× winst. Vernieuwt automatisch.',
desc_money:'Gratis geld + Sterren + Diamanten',
desc_money_d:'Geen advertenties nodig.',
desc_collect:'Auto-Ophalen',
desc_collect_d:'Huisdierinkomsten elke 30s.',
desc_music:'Draagmuziek',
desc_music_d:'Muziek tijdens stelen. 15 genres.',
desc_chatfade:'Chat-vervaging',
desc_chatfade_d:'Beheer berichtzichtbaarheid. 5–120s.',
desc_emotes:'Vlieg-emotes',
desc_emotes_d:'Willekeurige emotes tijdens vliegen.',
desc_displays:'Scherm Overlays',
desc_displays_d:'Coördinaten, FPS-teller en doelinfo.',
desc_config:'Instellingen',
desc_config_d:'<kbd>M</kbd> voor functies, toetsen en snelheden.',
desc_langs:'60 Talen',
desc_langs_d:'Volledige UI-vertaling.',
desc_tower:'Toren voltooien',
desc_tower_d:'<kbd>Y</kbd> voor instant Obby Tower winst.',
desc_cats:'Kat laadschermen',
desc_cats_d:'Schattige katten vervangen het laden.',
desc_h_install:'Installatie',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installeer <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> of <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klik hierboven op Installeren',
desc_inst_open:'Open een Meeland-spel — het werkt gewoon',
desc_mobile:'Mobiel (Android)',
desc_mob_ff:'Installeer <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox voor Android</a> vanuit de Play Store',
desc_mob_addon:'Open Firefox → Menu → Add-ons → installeer <strong>Tampermonkey</strong>',
desc_mob_visit:'Bezoek deze pagina in Firefox en tik op Installeren',
desc_mob_play:'Speel Meeland — touch HUD-knoppen verschijnen automatisch',
desc_ios:'iOS: Apple blokkeert browserextensies op alle iOS-browsers (inclusief Firefox). Gebruik een desktop- of Android-browser.',
desc_h_privacy:'Privacy',
desc_privacy:'Alleen client-side — geen data verlaat je browser'
});
_mk('pl','Polski',{
close:'✕',
refresh:'↻',
go:'Idź',
set:'Ustaw',
auto:'Automatyczny',
empty:'pusto',
help_title:'Pomoc',
players_title:'Gracze',
players_empty:'Nie znaleziono innych graczy',
settings_title:'Ustawienia',
settings_reset:'Resetuj',
tab_gameplay:'Rozgrywka',
tab_economy:'Ekonomia',
tab_audio:'Audio',
tab_advanced:'Zaawansowane',
tab_hud:'HUD',
tab_keys:'Klawisze',
tab_accounts:'Konta',
acct_current:'Bieżące',
acct_new:'Nowe',
acct_import:'Importuj',
acct_switch:'Przełącz',
acct_reload:'Przeładuj',
acct_delete:'Usuń',
acct_cancel:'Anuluj',
acct_empty:'Puste',
acct_token_ph:'Token',
acct_copy:'Kopiuj',
acct_export:'Eksportuj',
acct_rename:'Zmień nazwę',
acct_save:'Zapisz',
acct_name_len:'Nazwa musi mieć 4-12 znaków',
acct_name_fail:'Zmiana nazwy nie powiodła się',
acct_invalid:'Nieprawidłowy',
acct_ready:'Konto gotowe. Zamknij Meeland, zmień IP, potem przeładuj.',
acct_ip_note:'Zawsze używaj VPN i zmieniaj IP przy zmianie konta.',
acct_howto:'1. Kliknij Kopiuj, aby skopiować link tego konta.\n2. W innej przeglądarce lub na innym urządzeniu — lub u znajomego — otwórz MES.\n3. Kliknij Importuj i wklej link.',
sh_movement:'Ruch',
sh_defense:'Obrona',
sh_camera:'Kamera',
sh_overlays:'Nakładki',
sh_behaviour:'Zachowanie',
sh_buttons:'Przyciski',
sh_language:'Język',
sh_chat:'Pogawędzić',
sh_waves:'Waves',
sh_steal_a_pet:'Ukradnij zwierzaka',
sh_tower:'Tower',
sh_misc_multi:'Różne (wiele trybów)',
s_noclip:'Przechodzenie przez ściany',
s_fly:'Latać',
s_fly_emotes:'Emotki lotu',
s_base_speed:'Prędkość bazowa',
s_jump_mult:'Wysokość skoku',
s_grav_mult:'Powaga',
s_walk_up_walls:'Spacer po ścianach',
s_carry_normalize:'Prędkość przenoszenia + skok',
s_invincibility:'Niezniszczalność',
s_anti_kb:'Anty-odrzut',
s_invisible:'Niewidzialny',
s_xray_infection:'Rentgen (Tajemnica Morderstwa)',
s_ghost_mode:'Tryb ducha',
s_flee_intruder:'Uciekaj przy intruzie',
s_first_person:'Widok z pierwszej osoby',
s_fov_first_person:'FOV (Pierwsza osoba)',
s_fov_third_person:'FOV (3 os.)',
s_fov_vertical_mult:'Mnożnik pionowy FOV',
s_auto_lock:'Auto-blokada bazy',
s_auto_fountain:'Auto-fontanna (1.5×)',
s_daily_coins:'Dzienne monety',
s_stars:'Gwiazdki',
s_diamonds_tower:'Diamenty (Wieża)',
s_tower_loop:'Pętla wieży',
s_auto_roll_x25:'Auto roll x25 szczęścia',
s_auto_craft:'Automatyczne craftowanie',
s_auto_vip_sword:'Automatyczny zakup VIP',
s_auto_vip_waves:'Automatyczny zakup VIP (Fale)',
s_direct_kill:'Bezpośredni spam zabójstw',
s_direct_kill_rate:'Szybkość zabijania',
s_auto_buy_upgrades:'Automatyczne kupowanie aktualizacji',
s_boost_coins:'Automatyczna aktualizacja: monety',
s_boost_diamonds:'Automatyczna aktualizacja: Diamenty',
s_boost_luck:'Automatyczna aktualizacja: szczęście',
s_auto_unlock_areas:'Obszary automatycznego odblokowania',
s_auto_rebirth:'Automatyczne odrodzenie',
s_auto_join_tp:'Teleportuj się do najwyższego obszaru',
s_hide_kill_rewards:'Ukryj nagrody za zabicie',
s_hide_roll_anim:'Ukryj animację rolki',
rng_title:'Kody do Zwierzęta RNG',
rng_sec_rolling:'Walcowanie',
rng_sec_crafting:'Rzemiosło',
rng_sec_combat:'Walka',
rng_sec_upgrades:'Uaktualnienia',
rng_sec_areas:'Obszary',
rng_actions:'Działania',
log_craft:'Rzemiosło',
log_success:'SUKCES',
log_fail:'PONIEŚĆ PORAŻKĘ',
log_unlocking_area:'Obszar odblokowania',
log_area_unlocked:'Obszar odblokowany',
log_equipped:'Wyposażony',
log_bought_upgrade:'Kupiłem aktualizację',
log_teleported_to:'Teleportowany do',
log_rebirthing:'Ponowne narodziny',
h_rng:'rng',
h_accts:'Konta',
s_auto_collect:'Auto-zbieranie zarobków',
s_collect_interval:'Interwał zbierania',
s_chat_fade:'Czas zanikania czatu',
s_name_colors:'Kolory nazw użytkowników',
s_chat_enhance:'Ulepszenia czatu',
mes_hint:'Wskazówka: dodaj "mes" do swojej nazwy użytkownika, aby uzyskać animowany efekt tęczy!',
s_carry_tune:'Melodia przenoszenia (Kradzież)',
s_pet_pickup_radius:'Promień Kradzieży Zwierzaka',
s_carry_vol:'Głośność przenoszenia',
carry_tune_default:'Domyślny',
carry_tune_silent:'Cichy',
carry_tune_ambient:'Otoczenia',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasyczna',
carry_tune_electronic:'Elektroniczna',
carry_tune_epic:'Epicka',
carry_tune_folk:'Ludowy',
carry_tune_funk:'Boj',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metal',
carry_tune_pop:'Muzyka pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Głaz',
s_cont_cuddle:'Ciągłe przytulanie',
s_protips:'Porady Pro',
s_hideprotips:'Ukryj moje Porady Pro',
s_show_exp_modes:'Pokaż tryby eksperymentalne',
s_showcoords:'Pokaż współrzędne',
s_showfps:'Pokaż FPS-y',
s_showtargetinfo:'Pokaż informacje o celu',
s_showobj:'Pokaż liczbę elementów/siatek',
s_copy_dbg:'Kopiuj logi debugowania',
s_copy_json:'Kopiuj JSON',
s_clear_dbg:'Wyczyść',
h_fly:'Latanie',
h_speed:'Hack prędkości',
h_waypoints:'Punkty trasy',
h_autolock:'Auto-blokada',
h_invisible:'Niewidzialny',
h_cuddle:'Przytulanie',
h_pets:'Zwierzaki',
h_snipe:'Snajper',
h_help:'Pomoc',
h_settings:'Ustawienia',
h_prv:'Prywatny Pokój',
h_tc:'Ukończ wieżę',
h_tcl:'Pętla wieży',
kb_fly:'Latanie (przełącz/w górę)',
kb_fly_down:'Lot w dół',
kb_set_home:'Ustaw dom',
kb_home:'Dom',
kb_back:'Wstecz',
kb_cuddle:'Panel przytulania',
kb_settings:'Ustawienia',
kb_pets:'Eksplorator zwierząt',
kb_slots:'Sloty punktów trasy',
kb_snipe:'Panel snajpera',
kb_snipe_toggle:'Snajper Wł/Wył',
kb_attack:'Atak',
kb_help:'Pomoc / Opis',
kb_tower:'Ukończ wieżę',
kb_tower_loop:'Pętla wieży',
kb_invisible:'Niewidzialny',
kb_first_person:'Pierwsza osoba',
kb_autolock:'Podstawa z automatyczną blokadą',
kb_prv:'Prywatny Pokój',
kb_rng:'RNG',
kb_accts:'Konta',
pets_title:'Zwierzaki',
pets_search_placeholder:'np. dziki kotek, złoty LUB diament, (złoty LUB szmaragdowy) dziki',
pets_hint:'Słowa łączą się z I. Użyj OR dla alternatyw, nawiasy do grupowania. * lub % jako symbol wieloznaczny. Postaw - przed słowem, aby je wykluczyć.',
pets_empty:'Nie znaleziono zwierząt w tym pokoju',
pt_name:'Nazwa',
pt_mut:'Mutacja',
pt_rar:'Rzadkość',
pt_owner:'Właściciel',
pt_worth:'Wartość',
pt_income:'Dochód/s',
pt_dist:'Odl',
slots_title:'Sloty punktów trasy',
sniper_title:'Snajper zwierząt',
sniper_tbl_pet:'Zwierzak domowy',
sniper_tbl_owner:'Właściciel',
sniper_tbl_lock:'Zamek',
sniper_placeholder:'np. halo, złoty OR diament, szmaragdowy smok',
sniper_hint:'Słowa łączą się z I. Użyj OR dla alternatyw, nawiasy do grupowania. * lub % jako symbol wieloznaczny. Postaw - przed słowem, aby je wykluczyć.',
sniper_room_col:'Pokój',
sniper_scans_col:'Skany',
sniper_top_pet_col:'Najlepsze zwierzę domowe',
sniper_top_worth_col:'Najwyższa wartość',
sniper_top_owner_col:'Najlepszy właściciel',
sniper_age_col:'Wiek',
sniper_join_btn:'Dołącz',
sniper_full:'Pełny',
sniper_join_failed:'Pokój docelowy pełny',
sniper_scanning_rooms:'Szukam innych pokoi…',
sniper_scan_off:'Automatyczne polowanie wyłączone',
sniper_scan_next:'Następne skanowanie',
sniper_scan_idle:'Bezczynny — oczekiwanie na skanowanie',
sniper_auto_place:'Auto-umieszczanie na bazie',
sniper_place_desc:'(umieszcza skradzione zwierzę w slocie bazy)',
sniper_auto_drop:'Automatycznie upuszczaj niepasujące zwierzęta w Falach',
sniper_drop_desc:'(upuszcza dzikie zwierzęta niepasujące do filtra, aby odświeżyć pulę spawnów)',
sniper_auto_hunt:'Auto-polowanie',
sniper_hunt_desc:'(przeszukuje inne pokoje, przeskakuje do najlepszego dopasowania)',
sniper_auto_sell:'Auto-sprzedaż w Kradzieży',
sniper_sell_desc:'(sprzedaj najgorsze gdy baza pełna)',
sniper_lockdown:'Blokada ≤',
sniper_lockdown_hint:'Kradnij cele w bazach z ≤ tym pozostałym czasem. 0 = tylko odblokowane.',
sniper_join_grace:'Dołącz do łaski',
sniper_start:'Uruchom snajpera',
sniper_stop:'Zatrzymaj snajpera',
sniper_idle:'Bezczynny',
sniper_no_filter:'Nie ustawiono filtra',
sniper_waiting:'Oczekiwanie na mecz...',
sniper_hold_pause:'Trzyma zwierzę — wstrzymano',
sniper_stolen_pause:'ma nasze zwierzę — wstrzymano',
sniper_cooldown:'Odnowienie',
sniper_hopping:'Zmiana serwera...',
sniper_na:'Snajper niedostępny w lobby — najpierw dołącz do meczu',
sniper_wait_lock:'Oczekiwanie na dane blokady...',
sniper_locked:'Baza zablokowana — pomijanie...',
sniper_full_eggs:'Baza pełna — tylko jajka, nie można sprzedać',
sniper_stealing:'Kradzież',
sniper_dropped:'Upuszczono',
sniper_holding:'Trzyma',
sniper_place:'! Umieść w bazie.',
sniper_steal_mode:'[Kradzież]',
sniper_theft_nohop:'Zwierzę kradzione przez',
sniper_nohop_suffix:'— bez skoku',
sniper_sniping:'Polowanie:',
sniper_options:'Opcje',
sniper_drop_fail_status:'Upuszczenie nieudane!',
sniper_hotkey_label:'Skrót:',
sniper_panel_label:'Płyta:',
sniper_grab_fail:'Chwytanie nieudane. Ponowna próba...',
sniper_our_pet_stolen:'Nasze zwierzę skradzione — 8s odnowienia',
sniper_hopping_short:'Skok...',
sniper_base_full:'Baza pełna',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleportować',
pet_pickup_title:'Ulec poprawie',
owner_yours:'Twój',
owner_wild:'Dziki',
footer_gf:'Tłusty widelec',
copy_ok:'Skopiowano',
copy_failed:'Kopiowanie nie powiodło się',
s_invis_on_fly:'Niewidoczność podczas latania',
snipe_walk_home:'Idź do domu po kradzieży',
snipe_walk_home_desc:'Wróć pieszo do bazy',
sniper_afk_sell:'AFK sprzedawaj niepasujące zwierzaki',
sniper_afk_sell_desc:'(gdy bezczynny 5s, sprzedaj zwierzaki niepasujące do filtra według wartości — tylko fale)',
hb_fly:'LAT',
hb_lck:'BLK',
hb_inv:'NIE',
hb_cud:'PRZ',
hb_pet:'ZWI',
hb_snp:'SNA',
hb_cfg:'UST',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KNT',
ban_title:'Połączenie zablokowane',
ban_sub:'Twój adres IP został ograniczony przez Meeland',
ban_body:'Nie martw się — to łatwe do naprawienia! Darmowy VPN da ci nowy adres IP, abyś mógł znów grać.',
ban_pick:'Szybka naprawa — wybierz jedno:',
ban_warp:'darmowy, nieograniczony, konfiguracja jednym kliknięciem',
ban_warp_store:'dostępny również w App Store i Play Store jako "1.1.1.1"',
ban_proton:'bez limitu danych, 5 krajów',
ban_steps:'Zainstaluj → połącz → odśwież tę stronę. To wszystko!',
ban_ok:'Rozumiem',
warn_title:'Zawsze używaj VPN',
warn_body:'Zawsze graj z włączonym <b>VPN</b>.',
warn_ok:'Rozumiem',
loading:'Ładowanie',
tcl_loading:'Trwa pełna pętla wieży. Naciśnij {key}, aby zatrzymać.',
hop_search:'Szukanie meczu',
hop_match:'Znaleziono {name} — dołączanie',
hop_flee:'Ucieczka przed intruzem',
hop_reconnect:'Ponowne łączenie',
hop_reload:'Przeładowywanie',
hop_fall:'Powrót po upadku',
hop_join:'Dołączanie do pokoju',
lock_off:'WYŁ',
lock_unlocked:'ODBLOKOWANY',
desc_intro:'MES zapewnia hackowanie ścian, automatyczne hodowanie, zbieranie rzadkich zwierząt, zwiększenie prędkości, lot, niewidzialność i wiele więcej w Meeland',
desc_free:'100% za darmo, zawsze. Masz opinię? Zostaw pozytywną ⭐ recenzję — to utrzymuje aktualizacje.',
desc_h_movement:'Ruch',
desc_h_combat:'Walka',
desc_h_tuning:'Strojenie',
desc_h_pets:'Zwierzęta i Kradzież',
desc_h_economy:'Ekonomia',
desc_h_custom:'Personalizacja',
desc_h_extras:'Dodatki',
desc_fly:'Latanie',
desc_fly_d:'Space w górę, F w dół. Regulowana prędkość.',
desc_speed:'Migać',
desc_speed_d:'Shift, by teleportować się natychmiast.',
desc_noclip:'Przechodzenie przez ściany',
desc_noclip_d:'Przechodź przez ściany.',
desc_walls:'Chodzenie po Ścianach',
desc_walls_d:'Wspinaj się po każdej powierzchni.',
desc_waypts:'Punkty trasy',
desc_waypts_d:'Zapisz 10 pozycji. Teleport jednym klawiszem. <kbd>Z</kbd> do przełączania.',
desc_invis:'Niewidzialny',
desc_invis_d:'Naciśnij CapsLock, aby całkowicie zniknąć.',
desc_fpv:'Widok z pierwszej osoby',
desc_fpv_d:'Naciśnij <kbd>.</kbd> aby przełączyć kamerę pierwszoosobową.',
desc_anti_invis:'Anty-niewidzialność',
desc_anti_invis_d:'Widzisz niewidzialnych graczy jako duchy.',
desc_xray:'Widzenie Rentgenowskie',
desc_xray_d:'Zobacz graczy przez ściany w Tajemnicy Morderstwa. Czerwony = morderca, zielony = cywil.',
desc_nodeathh:'Nieśmiertelny',
desc_nodeath_d:'Odporny na wszelkie obrażenia.',
desc_antikb:'Anty-odrzut',
desc_antikb_d:'Nie można cię pchnać.',
desc_attack:'Natychmiastowy atak',
desc_attack_d:'<kbd>G</kbd> teleportuje do najbliższego gracza i uderza.',
desc_jumpgrav:'Skok i Grawitacja',
desc_jumpgrav_d:'Regulowane mnożniki w Ustawieniach.',
desc_fov:'Kontrola FOV',
desc_fov_d:'Suwaki FOV dla pierwszej i trzeciej osoby.',
desc_autoinvis:'Auto-Niewidka przy Locie',
desc_autoinvis_d:'Stań się niewidzialny automatycznie podczas latania.',
desc_sniper:'Snajper zwierząt',
desc_sniper_d:'Automatyczna kradzież przefiltrowanych zwierząt. Oba tryby.',
desc_prv:'Prywatny Pokój',
desc_prv_d:'<kbd>PgDn</kbd> tworzy prywatny pokój w bieżącym trybie i dołącza automatycznie.',
desc_petbrow:'Eksplorator zwierząt',
desc_petbrow_d:'<kbd>K</kbd> pokazuje wszystkie zwierzęta. Sortuj, filtruj, chwyć.',
desc_cuddle:'Panel przytulania',
desc_cuddle_d:'<kbd>J</kbd> lista graczy wg odległości. Kliknij by śledzić.',
desc_return:'Auto Powrót',
desc_return_d:'Teleportuje do domu po kradzieży.',
desc_autolock:'Auto-blokada',
desc_autolock_d:'Baza zawsze zablokowana.',
desc_fountain:'Auto-fontanna',
desc_fountain_d:'Stały zysk 1.5×. Automatyczne odnawianie.',
desc_money:'Darmowe pieniądze + Gwiazdki + Diamenty',
desc_money_d:'Bez reklam.',
desc_collect:'Auto-Zbieranie',
desc_collect_d:'Dochód ze zwierząt co 30s.',
desc_music:'Muzyka transportu',
desc_music_d:'Muzyka podczas kradzieży. 15 gatunków.',
desc_chatfade:'Zanikanie czatu',
desc_chatfade_d:'Kontroluj widoczność wiadomości. 5–120s.',
desc_emotes:'Emotki lotu',
desc_emotes_d:'Losowe emotki podczas latania.',
desc_displays:'Nakładki Ekranu',
desc_displays_d:'Współrzędne, licznik FPS i info o celu.',
desc_config:'Ustawienia',
desc_config_d:'<kbd>M</kbd> do przełączania funkcji, klawiszy, prędkości.',
desc_langs:'60 Języków',
desc_langs_d:'Pełne tłumaczenie interfejsu.',
desc_tower:'Ukończ wieżę',
desc_tower_d:'<kbd>Y</kbd> by natychmiast ukończyć Obby Tower.',
desc_cats:'Ekrany ładowania z kotami',
desc_cats_d:'Słodkie koty zastępują ładowanie.',
desc_h_install:'Instalacja',
desc_desktop:'Komputer stacjonarny (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Zainstaluj <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> lub <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Kliknij Zainstaluj powyżej',
desc_inst_open:'Otwórz dowolną grę Meeland — po prostu działa',
desc_mobile:'Mobilne (Android)',
desc_mob_ff:'Zainstaluj <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox na Androida</a> z Play Store',
desc_mob_addon:'Otwórz Firefox → Menu → Dodatki → zainstaluj <strong>Tampermonkey</strong>',
desc_mob_visit:'Odwiedź tę stronę w Firefox i dotknij Zainstaluj',
desc_mob_play:'Graj w Meeland — dotykowe przyciski HUD pojawiają się automatycznie',
desc_ios:'iOS: Apple blokuje rozszerzenia przeglądarki na wszystkich przeglądarkach iOS (w tym Firefox). Użyj przeglądarki desktopowej lub Android.',
desc_h_privacy:'Prywatność',
desc_privacy:'Tylko po stronie klienta — żadne dane nie opuszczają twojej przeglądarki'
});
_mk('vi','Tiếng Việt',{
close:'✕',
refresh:'↻',
go:'Đi',
set:'Đặt',
auto:'Tự động',
empty:'trống',
help_title:'Trợ giúp',
players_title:'Người chơi',
players_empty:'Không tìm thấy người chơi khác',
settings_title:'Cài đặt',
settings_reset:'Đặt lại',
tab_gameplay:'Trò chơi',
tab_economy:'Kinh tế',
tab_audio:'Âm thanh',
tab_advanced:'Nâng cao',
tab_hud:'HUD',
tab_keys:'Phím',
tab_accounts:'Tài khoản',
acct_current:'Hiện tại',
acct_new:'Mới',
acct_import:'Nhập',
acct_switch:'Chuyển',
acct_reload:'Tải lại',
acct_delete:'Xóa',
acct_cancel:'Hủy',
acct_empty:'Trống',
acct_token_ph:'Mã',
acct_copy:'Sao chép',
acct_export:'Xuất',
acct_rename:'Đổi tên',
acct_save:'Lưu',
acct_name_len:'Tên phải có 4-12 ký tự',
acct_name_fail:'Đổi tên thất bại',
acct_invalid:'Không hợp lệ',
acct_ready:'Tài khoản sẵn sàng. Đóng Meeland, đổi IP rồi tải lại.',
acct_ip_note:'Luôn dùng VPN và đổi IP khi chuyển tài khoản.',
acct_howto:'1. Nhấp vào Sao chép để sao chép liên kết của tài khoản này.\n2. Trên trình duyệt hoặc thiết bị khác — hoặc với bạn bè — mở MES.\n3. Nhấp vào Nhập và dán liên kết.',
sh_movement:'Di chuyển',
sh_defense:'Phòng thủ',
sh_camera:'Máy ảnh',
sh_overlays:'Lớp phủ',
sh_behaviour:'Hành vi',
sh_buttons:'Nút',
sh_language:'Ngôn ngữ',
sh_chat:'Trò chuyện',
sh_waves:'Waves',
sh_steal_a_pet:'Trộm thú cưng',
sh_tower:'Tower',
sh_misc_multi:'Khác (đa chế độ)',
s_noclip:'Xuyên tường',
s_fly:'Bay',
s_fly_emotes:'Emote bay',
s_base_speed:'Tốc độ cơ bản',
s_jump_mult:'Nhảy cao',
s_grav_mult:'Trọng lực',
s_walk_up_walls:'Đi lên tường',
s_carry_normalize:'Tốc độ mang theo + Nhảy',
s_invincibility:'Bất tử',
s_anti_kb:'Chống đẩy lùi',
s_invisible:'Tàng hình',
s_xray_infection:'Tia X (Bí Ẩn Giết Người)',
s_ghost_mode:'Chế độ ma',
s_flee_intruder:'Bỏ chạy khi có kẻ xâm nhập',
s_first_person:'Góc nhìn thứ nhất',
s_fov_first_person:'FOV (Góc thứ nhất)',
s_fov_third_person:'FOV (thứ 3)',
s_fov_vertical_mult:'Hệ số dọc FOV',
s_auto_lock:'Tự động khóa căn cứ',
s_auto_fountain:'Tự động đài phun (1.5×)',
s_daily_coins:'Xu hàng ngày',
s_stars:'Sao',
s_diamonds_tower:'Kim cương (Tháp)',
s_tower_loop:'Vòng lặp tháp',
s_auto_roll_x25:'Tự cuộn x25 may mắn',
s_auto_craft:'Tự động chế tạo',
s_auto_vip_sword:'Tự mua VIP',
s_auto_vip_waves:'Tự mua VIP (Sóng)',
s_direct_kill:'Gửi tiêu diệt trực tiếp',
s_direct_kill_rate:'Tốc độ tiêu diệt',
s_auto_buy_upgrades:'Tự động mua nâng cấp',
s_boost_coins:'Tự động nâng cấp: Tiền xu',
s_boost_diamonds:'Tự động nâng cấp: Kim cương',
s_boost_luck:'Tự động nâng cấp: May mắn',
s_auto_unlock_areas:'Tự động mở khóa khu vực',
s_auto_rebirth:'Tự động tái sinh',
s_auto_join_tp:'Dịch chuyển đến khu vực cao nhất',
s_hide_kill_rewards:'Ẩn phần thưởng tiêu diệt',
s_hide_roll_anim:'Ẩn hoạt ảnh cuộn',
rng_title:'Thú cưng RNG cheat',
rng_sec_rolling:'Lăn',
rng_sec_crafting:'Chế tạo',
rng_sec_combat:'chiến đấu',
rng_sec_upgrades:'Nâng cấp',
rng_sec_areas:'Khu vực',
rng_actions:'hành động',
log_craft:'thủ công',
log_success:'THÀNH CÔNG',
log_fail:'THẤT BẠI',
log_unlocking_area:'Khu vực mở khóa',
log_area_unlocked:'Đã mở khóa khu vực',
log_equipped:'Được trang bị',
log_bought_upgrade:'Đã mua nâng cấp',
log_teleported_to:'Dịch chuyển đến',
log_rebirthing:'tái sinh',
h_rng:'chuông',
h_accts:'Tài khoản',
s_auto_collect:'Tự động thu hoạch',
s_collect_interval:'Khoảng cách thu thập',
s_chat_fade:'Thời gian làm mờ chat',
s_name_colors:'Màu tên người dùng',
s_chat_enhance:'Cải tiến trò chuyện',
mes_hint:'Mẹo: thêm "mes" vào tên người dùng của bạn để có hiệu ứng cầu vồng chuyển động!',
s_carry_tune:'Nhạc khi mang đồ (Trộm)',
s_pet_pickup_radius:'Bán Kính Trộm Thú Cưng',
s_carry_vol:'Âm lượng mang đồ',
carry_tune_default:'Mặc định',
carry_tune_silent:'Im lặng',
carry_tune_ambient:'Nhạc nền',
carry_tune_blues:'nhạc blues',
carry_tune_chiptune:'chiptune',
carry_tune_classical:'Cổ điển',
carry_tune_electronic:'Điện tử',
carry_tune_epic:'Hùng tráng',
carry_tune_folk:'Dân ca',
carry_tune_funk:'Funk',
carry_tune_jazz:'nhạc jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Kim loại',
carry_tune_pop:'Nhạc pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Đá',
s_cont_cuddle:'Ôm liên tục',
s_protips:'Mẹo Pro',
s_hideprotips:'Ẩn mẹo Pro của tôi',
s_show_exp_modes:'Hiện chế độ thử nghiệm',
s_showcoords:'Hiển thị tọa độ',
s_showfps:'Hiển thị FPS',
s_showtargetinfo:'Hiển thị thông tin mục tiêu',
s_showobj:'Hiển thị số lượng thực thể/lưới',
s_copy_dbg:'Sao chép nhật ký debug',
s_copy_json:'Sao chép JSON',
s_clear_dbg:'Xóa',
h_fly:'Bay',
h_speed:'Hack tốc độ',
h_waypoints:'Điểm đánh dấu',
h_autolock:'Tự động khóa',
h_invisible:'Tàng hình',
h_cuddle:'Ôm',
h_pets:'Thú cưng',
h_snipe:'Bắn tỉa',
h_help:'Trợ giúp',
h_settings:'Cài đặt',
h_prv:'Phòng Riêng',
h_tc:'Hoàn thành tháp',
h_tcl:'Vòng lặp tháp',
kb_fly:'Bay (bật/lên)',
kb_fly_down:'Bay xuống',
kb_set_home:'Đặt nhà',
kb_home:'Nhà',
kb_back:'Quay lại',
kb_cuddle:'Bảng ôm',
kb_settings:'Cài đặt',
kb_pets:'Trình khám phá thú cưng',
kb_slots:'Ô điểm đánh dấu',
kb_snipe:'Bảng bắn tỉa',
kb_snipe_toggle:'Bắn tỉa Bật/Tắt',
kb_attack:'Tấn công',
kb_help:'Trợ giúp / Mô tả',
kb_tower:'Hoàn thành tháp',
kb_tower_loop:'Vòng lặp tháp',
kb_invisible:'Tàng hình',
kb_first_person:'Góc thứ nhất',
kb_autolock:'Đế khóa tự động',
kb_prv:'Phòng Riêng',
kb_rng:'RNG',
kb_accts:'Tài khoản',
pets_title:'Thú cưng',
pets_search_placeholder:'ví dụ. mèo hoang, vàng HOẶC kim cương, (vàng HOẶC ngọc lục bảo) hoang dã',
pets_hint:'Các từ kết hợp bằng VÀ. Dùng OR cho lựa chọn thay thế, ngoặc để nhóm. * hoặc % làm ký tự đại diện. Đặt - trước một từ để loại trừ nó.',
pets_empty:'Không tìm thấy thú cưng trong phòng này',
pt_name:'Tên',
pt_mut:'Đột biến',
pt_rar:'Độ hiếm',
pt_owner:'Chủ',
pt_worth:'Giá trị',
pt_income:'Thu nhập/s',
pt_dist:'K.cách',
slots_title:'Ô điểm đánh dấu',
sniper_title:'Bắn tỉa thú cưng',
sniper_tbl_pet:'Thú cưng',
sniper_tbl_owner:'Người sở hữu',
sniper_tbl_lock:'Khóa',
sniper_placeholder:'vd. halo, vàng OR kim cương, rồng ngọc lục',
sniper_hint:'Các từ kết hợp bằng VÀ. Dùng OR cho lựa chọn thay thế, ngoặc để nhóm. * hoặc % làm ký tự đại diện. Đặt - trước một từ để loại trừ nó.',
sniper_room_col:'Phòng',
sniper_scans_col:'Quét',
sniper_top_pet_col:'Thú cưng hàng đầu',
sniper_top_worth_col:'Giá trị hàng đầu',
sniper_top_owner_col:'Chủ sở hữu hàng đầu',
sniper_age_col:'Tuổi',
sniper_join_btn:'Tham gia',
sniper_full:'Đầy',
sniper_join_failed:'Phòng mục tiêu đã đầy',
sniper_scanning_rooms:'Đang tìm phòng khác…',
sniper_scan_off:'Tự động săn lùng',
sniper_scan_next:'Lần quét tiếp theo',
sniper_scan_idle:'Nhàn rỗi - đang chờ quét',
sniper_auto_place:'Tự động đặt vào căn cứ',
sniper_place_desc:'(đặt thú đã trộm vào ô của bạn)',
sniper_auto_drop:'Tự động thả thú không khớp trong Sóng',
sniper_drop_desc:'(thả thú hoang không khớp bộ lọc để làm mới hồ sinh)',
sniper_auto_hunt:'Săn tự động',
sniper_hunt_desc:'(dò các phòng khác, nhảy đến trận khớp tốt nhất)',
sniper_auto_sell:'Tự động bán khi Trộm',
sniper_sell_desc:'(bán con tệ nhất khi căn cứ đầy)',
sniper_lockdown:'Khóa ≤',
sniper_lockdown_hint:'Trộm mục tiêu trong căn cứ có ≤ thời gian còn lại này. 0 = chỉ mở khóa.',
sniper_join_grace:'Tham gia ân sủng',
sniper_start:'Bắt đầu bắn tỉa',
sniper_stop:'Dừng bắn tỉa',
sniper_idle:'Rảnh',
sniper_no_filter:'Chưa đặt bộ lọc',
sniper_waiting:'Đang chờ trận...',
sniper_hold_pause:'Đang giữ thú cưng — tạm dừng',
sniper_stolen_pause:'đang giữ thú cưng của ta — tạm dừng',
sniper_cooldown:'Hồi chiêu',
sniper_hopping:'Đang đổi máy chủ...',
sniper_na:'Bắn tỉa không khả dụng ở sảnh — hãy vào trận trước',
sniper_wait_lock:'Đang chờ dữ liệu khóa...',
sniper_locked:'Căn cứ bị khóa — bỏ qua...',
sniper_full_eggs:'Căn cứ đầy — chỉ có trứng, không bán được',
sniper_stealing:'Đang trộm',
sniper_dropped:'Đã thả',
sniper_holding:'Đang giữ',
sniper_place:'! Đặt vào căn cứ.',
sniper_steal_mode:'[Trộm]',
sniper_theft_nohop:'Thú cưng đang bị trộm bởi',
sniper_nohop_suffix:'— không nhảy',
sniper_sniping:'Đang bắn tỉa:',
sniper_options:'Tùy chọn',
sniper_drop_fail_status:'Thả thất bại!',
sniper_hotkey_label:'Phím tắt:',
sniper_panel_label:'Bảng:',
sniper_grab_fail:'Bắt thất bại. Đang thử lại...',
sniper_our_pet_stolen:'Thú cưng bị trộm — hồi chiêu 8s',
sniper_hopping_short:'Đang nhảy...',
sniper_base_full:'Cơ sở đầy đủ',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'CHẠY NHANH',
pet_teleport_title:'Dịch chuyển tức thời',
pet_pickup_title:'Nhặt lên',
owner_yours:'của bạn',
owner_wild:'Hoang dã',
footer_gf:'Cái nĩa dính dầu mỡ',
copy_ok:'Đã sao chép',
copy_failed:'Sao chép không thành công',
s_invis_on_fly:'Tàng hình khi bay',
snipe_walk_home:'Đi bộ về nhà sau khi trộm',
snipe_walk_home_desc:'Đi bộ về căn cứ',
sniper_afk_sell:'AFK bán thú không khớp',
sniper_afk_sell_desc:'(khi không hoạt động 5s, bán thú không khớp bộ lọc theo giá trị — chỉ chế độ sóng)',
hb_fly:'BAY',
hb_lck:'KHÓ',
hb_inv:'ẨN',
hb_cud:'ÔM',
hb_pet:'THÚ',
hb_snp:'BẮN',
hb_cfg:'CĐ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'TK',
ban_title:'Kết nối bị chặn',
ban_sub:'Địa chỉ IP của bạn đã bị Meeland hạn chế',
ban_body:'Đừng lo — việc này rất dễ khắc phục! VPN miễn phí sẽ cho bạn IP mới để chơi lại.',
ban_pick:'Khắc phục nhanh — chọn một:',
ban_warp:'miễn phí, không giới hạn, cài đặt một lần nhấp',
ban_warp_store:'cũng có trên App Store & Play Store với tên "1.1.1.1"',
ban_proton:'không giới hạn dữ liệu, 5 quốc gia',
ban_steps:'Cài đặt → kết nối → tải lại trang này. Vậy là xong!',
ban_ok:'Đã hiểu',
warn_title:'Luôn sử dụng VPN',
warn_body:'Luôn bật <b>VPN</b> khi chơi.',
warn_ok:'Đã hiểu',
loading:'Đang tải',
tcl_loading:'Đang chạy vòng lặp tháp hoàn chỉnh. Nhấn {key} để dừng.',
hop_search:'Đang tìm trận',
hop_match:'Tìm thấy {name} — đang vào',
hop_flee:'Đang chạy trốn kẻ xâm nhập',
hop_reconnect:'Đang kết nối lại',
hop_reload:'Đang tải lại',
hop_fall:'Đang hồi phục sau cú ngã',
hop_join:'Đang vào phòng',
lock_off:'TẮT',
lock_unlocked:'ĐÃ MỞ KHÓA',
desc_intro:'MES mang đến cho bạn khả năng hack tường, tự động canh tác, thu thập thú cưng quý hiếm, tăng tốc độ, bay, tàng hình và hơn thế nữa ở Meeland',
desc_free:'Miễn phí 100%, mãi mãi. Có góp ý? Để lại đánh giá ⭐ tích cực — đó là động lực cập nhật.',
desc_h_movement:'Di chuyển',
desc_h_combat:'Chiến đấu',
desc_h_tuning:'Tinh Chỉnh',
desc_h_pets:'Thú cưng & Trộm',
desc_h_economy:'Kinh tế',
desc_h_custom:'Tùy chỉnh',
desc_h_extras:'Khác',
desc_fly:'Bay',
desc_fly_d:'Space để lên, F để xuống. Tốc độ tùy chỉnh.',
desc_speed:'chớp mắt',
desc_speed_d:'Shift để dịch chuyển tức thì.',
desc_noclip:'Xuyên tường',
desc_noclip_d:'Đi xuyên tường.',
desc_walls:'Đi Trên Tường',
desc_walls_d:'Trèo mọi bề mặt.',
desc_waypts:'Điểm đánh dấu',
desc_waypts_d:'Lưu 10 vị trí. Teleport một phím. <kbd>Z</kbd> để quay lại.',
desc_invis:'Tàng hình',
desc_invis_d:'Nhấn CapsLock để biến mất hoàn toàn.',
desc_fpv:'Góc nhìn thứ nhất',
desc_fpv_d:'Nhấn <kbd>.</kbd> để chuyển sang góc nhìn thứ nhất.',
desc_anti_invis:'Chống tàng hình',
desc_anti_invis_d:'Thấy người chơi tàng hình như bóng ma.',
desc_xray:'Tầm Nhìn Tia X',
desc_xray_d:'Nhìn xuyên tường thấy người chơi trong Bí Ẩn Giết Người. Đỏ = kẻ giết người, xanh lá = dân thường.',
desc_nodeathh:'Bất tử',
desc_nodeath_d:'Miễn nhiễm mọi sát thương.',
desc_antikb:'Chống đẩy lùi',
desc_antikb_d:'Không thể bị đẩy.',
desc_attack:'Tấn công tức thì',
desc_attack_d:'<kbd>G</kbd> dịch chuyển đến người chơi gần nhất và đánh.',
desc_jumpgrav:'Nhảy và Trọng Lực',
desc_jumpgrav_d:'Hệ số điều chỉnh trong Cài Đặt.',
desc_fov:'Điều Khiển FOV',
desc_fov_d:'Thanh trượt FOV góc nhìn thứ nhất và thứ ba.',
desc_autoinvis:'Tự Động Tàng Hình Khi Bay',
desc_autoinvis_d:'Tự động tàng hình khi đang bay.',
desc_sniper:'Bắn tỉa thú cưng',
desc_sniper_d:'Tự động trộm thú cưng đã lọc. Cả hai chế độ.',
desc_prv:'Phòng Riêng',
desc_prv_d:'<kbd>PgDn</kbd> tạo phòng riêng trong chế độ hiện tại và tự động tham gia.',
desc_petbrow:'Trình khám phá thú cưng',
desc_petbrow_d:'<kbd>K</kbd> hiện tất cả thú cưng. Sắp xếp, lọc, bắt.',
desc_cuddle:'Bảng ôm',
desc_cuddle_d:'<kbd>J</kbd> liệt kê người chơi theo khoảng cách. Nhấp để theo dõi.',
desc_return:'Tự Động Về',
desc_return_d:'Dịch chuyển về nhà sau khi trộm.',
desc_autolock:'Tự động khóa',
desc_autolock_d:'Căn cứ luôn khóa.',
desc_fountain:'Tự động đài phun',
desc_fountain_d:'Lợi nhuận vĩnh viễn 1.5×. Tự động gia hạn.',
desc_money:'Tiền + Sao + Kim cương miễn phí',
desc_money_d:'Không cần quảng cáo.',
desc_collect:'Tự Động Thu',
desc_collect_d:'Thu nhập thú cưng mỗi 30 giây.',
desc_music:'Nhạc vận chuyển',
desc_music_d:'Nhạc khi trộm. 15 thể loại.',
desc_chatfade:'Chat mờ dần',
desc_chatfade_d:'Kiểm soát thời gian hiển thị tin nhắn. 5–120s.',
desc_emotes:'Emote bay',
desc_emotes_d:'Emote ngẫu nhiên khi bay.',
desc_displays:'Lớp Phủ Hiển Thị',
desc_displays_d:'Tọa độ, bộ đếm FPS và thông tin mục tiêu.',
desc_config:'Cài đặt',
desc_config_d:'<kbd>M</kbd> bật tắt tính năng, gán phím, chỉnh tốc độ.',
desc_langs:'60 Ngôn ngữ',
desc_langs_d:'Dịch giao diện đầy đủ.',
desc_tower:'Hoàn thành tháp',
desc_tower_d:'<kbd>Y</kbd> hoàn thành Obby Tower ngay.',
desc_cats:'Màn hình tải mèo',
desc_cats_d:'Mèo dễ thương thay thế tải.',
desc_h_install:'Cài đặt',
desc_desktop:'Máy tính (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Cài <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> hoặc <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Nhấp Cài đặt ở trên',
desc_inst_open:'Mở bất kỳ trò chơi Meeland nào — tự hoạt động',
desc_mobile:'Di động (Android)',
desc_mob_ff:'Cài <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox cho Android</a> từ Play Store',
desc_mob_addon:'Mở Firefox → Menu → Tiện ích → cài <strong>Tampermonkey</strong>',
desc_mob_visit:'Truy cập trang này trên Firefox và chạm Cài đặt',
desc_mob_play:'Chơi Meeland — nút HUD cảm ứng tự động xuất hiện',
desc_ios:'iOS: Apple chặn tiện ích mở rộng trên tất cả trình duyệt iOS (kể cả Firefox). Dùng trình duyệt máy tính hoặc Android.',
desc_h_privacy:'Quyền riêng tư',
desc_privacy:'Chỉ phía máy khách — không dữ liệu nào rời trình duyệt'
});
_mk('th','ไทย',{
close:'✕',
refresh:'↻',
go:'ไป',
set:'ตั้ง',
auto:'อัตโนมัติ',
empty:'ว่าง',
help_title:'ช่วยเหลือ',
players_title:'ผู้เล่น',
players_empty:'ไม่พบผู้เล่นอื่น',
settings_title:'ตั้งค่า',
settings_reset:'รีเซ็ต',
tab_gameplay:'การเล่น',
tab_economy:'เศรษฐกิจ',
tab_audio:'เสียง',
tab_advanced:'ขั้นสูง',
tab_hud:'ฮัด',
tab_keys:'ปุ่ม',
tab_accounts:'บัญชี',
acct_current:'ปัจจุบัน',
acct_new:'ใหม่',
acct_import:'นำเข้า',
acct_switch:'สลับ',
acct_reload:'โหลดใหม่',
acct_delete:'ลบ',
acct_cancel:'ยกเลิก',
acct_empty:'ว่าง',
acct_token_ph:'โทเคน',
acct_copy:'คัดลอก',
acct_export:'ส่งออก',
acct_rename:'เปลี่ยนชื่อ',
acct_save:'บันทึก',
acct_name_len:'ชื่อต้องมี 4-12 ตัวอักษร',
acct_name_fail:'เปลี่ยนชื่อล้มเหลว',
acct_invalid:'ไม่ถูกต้อง',
acct_ready:'บัญชีพร้อม ปิด Meeland แล้วเปลี่ยน IP แล้วโหลดใหม่',
acct_ip_note:'ใช้ VPN เสมอและเปลี่ยน IP เมื่อสลับบัญชี',
acct_howto:'1. คลิกคัดลอกเพื่อคัดลอกลิงก์ของบัญชีนี้\n2. บนเบราว์เซอร์หรืออุปกรณ์อื่น — หรือกับเพื่อน — เปิด MES\n3. คลิกนำเข้าและวางลิงก์',
sh_movement:'การเคลื่อนไหว',
sh_defense:'ป้องกัน',
sh_camera:'กล้อง',
sh_overlays:'โอเวอร์เลย์',
sh_behaviour:'พฤติกรรม',
sh_buttons:'ปุ่ม',
sh_language:'ภาษา',
sh_chat:'แชท',
sh_waves:'Waves',
sh_steal_a_pet:'ขโมยสัตว์เลี้ยง',
sh_tower:'Tower',
sh_misc_multi:'เบ็ดเตล็ด (หลายโหมด)',
s_noclip:'ทะลุกำแพง',
s_fly:'บิน',
s_fly_emotes:'อีโมทบิน',
s_base_speed:'ความเร็วพื้นฐาน',
s_jump_mult:'กระโดดสูง',
s_grav_mult:'แรงโน้มถ่วง',
s_walk_up_walls:'เดินขึ้นกำแพง',
s_carry_normalize:'พกพาความเร็ว + กระโดด',
s_invincibility:'อมตะ',
s_anti_kb:'ต้านการกระเด็น',
s_invisible:'ล่องหน',
s_xray_infection:'เอ็กซ์เรย์ (ปริศนาฆาตกรรม)',
s_ghost_mode:'โหมดผี',
s_flee_intruder:'หนีเมื่อมีผู้บุกรุก',
s_first_person:'มุมมองบุคคลที่หนึ่ง',
s_fov_first_person:'FOV (บุคคลที่หนึ่ง)',
s_fov_third_person:'FOV (บุคคลที่สาม)',
s_fov_vertical_mult:'ตัวคูณแนวตั้ง FOV',
s_auto_lock:'ล็อกฐานอัตโนมัติ',
s_auto_fountain:'น้ำพุอัตโนมัติ (1.5×)',
s_daily_coins:'เหรียญรายวัน',
s_stars:'ดาว',
s_diamonds_tower:'เพชร (หอคอย)',
s_tower_loop:'ลูปทาวเวอร์',
s_auto_roll_x25:'หมุนอัตโนมัติ x25 โชค',
s_auto_craft:'คราฟต์อัตโนมัติ',
s_auto_vip_sword:'ซื้อ VIP อัตโนมัติ',
s_auto_vip_waves:'ซื้อ VIP อัตโนมัติ (คลื่น)',
s_direct_kill:'ส่งการฆ่าโดยตรง',
s_direct_kill_rate:'อัตราการฆ่า',
s_auto_buy_upgrades:'การอัพเกรดการซื้ออัตโนมัติ',
s_boost_coins:'อัปเกรดอัตโนมัติ: เหรียญ',
s_boost_diamonds:'อัปเกรดอัตโนมัติ: เพชร',
s_boost_luck:'อัปเกรดอัตโนมัติ: โชค',
s_auto_unlock_areas:'พื้นที่ปลดล็อคอัตโนมัติ',
s_auto_rebirth:'เกิดใหม่อัตโนมัติ',
s_auto_join_tp:'เทเลพอร์ตไปยังพื้นที่สูงสุด',
s_hide_kill_rewards:'ซ่อนรางวัลการฆ่า',
s_hide_roll_anim:'ซ่อนภาพเคลื่อนไหวแบบม้วน',
rng_title:'เกมส์สัตว์เลี้ยง RNG',
rng_sec_rolling:'กลิ้ง',
rng_sec_crafting:'งานหัตถกรรม',
rng_sec_combat:'การต่อสู้',
rng_sec_upgrades:'การอัพเกรด',
rng_sec_areas:'พื้นที่',
rng_actions:'การดำเนินการ',
log_craft:'งานฝีมือ',
log_success:'ความสำเร็จ',
log_fail:'ล้มเหลว',
log_unlocking_area:'พื้นที่ปลดล็อค',
log_area_unlocked:'ปลดล็อคพื้นที่แล้ว',
log_equipped:'พร้อมอุปกรณ์',
log_bought_upgrade:'ซื้ออัพเกรดแล้ว',
log_teleported_to:'เทเลพอร์ตไปที่',
log_rebirthing:'การเกิดใหม่',
h_rng:'ร.ง',
h_accts:'บัญชี',
s_auto_collect:'เก็บรายได้อัตโนมัติ',
s_collect_interval:'ช่วงเวลาเก็บ',
s_chat_fade:'เวลาหายไปของแชท',
s_name_colors:'สีชื่อผู้ใช้',
s_chat_enhance:'การปรับปรุงแชท',
mes_hint:'เคล็ดลับ: เพิ่ม "mes" ในชื่อผู้ใช้ของคุณเพื่อเอฟเฟกต์สายรุ้งแบบเคลื่อนไหว!',
s_carry_tune:'เพลงพกพา (ขโมย)',
s_pet_pickup_radius:'รัศมีขโมยสัตว์เลี้ยง',
s_carry_vol:'ระดับเสียงพกพา',
carry_tune_default:'ค่าเริ่มต้น',
carry_tune_silent:'เงียบ',
carry_tune_ambient:'แอมเบียนต์',
carry_tune_blues:'บลูส์',
carry_tune_chiptune:'ชิปทูน',
carry_tune_classical:'คลาสสิก',
carry_tune_electronic:'อิเล็กทรอนิก',
carry_tune_epic:'มหากาพย์',
carry_tune_folk:'โฟล์ก',
carry_tune_funk:'ฟังก์',
carry_tune_jazz:'แจ๊ส',
carry_tune_lofi:'โล-ไฟ',
carry_tune_metal:'เมทัล',
carry_tune_pop:'ป็อป',
carry_tune_punk:'พังก์',
carry_tune_reggae:'เร็กเก้',
carry_tune_rock:'ร็อก',
s_cont_cuddle:'กอดต่อเนื่อง',
s_protips:'เคล็ดลับโปร',
s_hideprotips:'ซ่อนเคล็ดลับโปรของฉัน',
s_show_exp_modes:'แสดงโหมดทดลอง',
s_showcoords:'แสดงพิกัด',
s_showfps:'แสดง FPS',
s_showtargetinfo:'แสดงข้อมูลเป้าหมาย',
s_showobj:'แสดงเอนทิตี / จำนวนตาข่าย',
s_copy_dbg:'คัดลอกบันทึก Debug',
s_copy_json:'คัดลอก JSON',
s_clear_dbg:'ล้าง',
h_fly:'บิน',
h_speed:'แฮ็กความเร็ว',
h_waypoints:'จุดเดินทาง',
h_autolock:'ล็อกอัตโนมัติ',
h_invisible:'ล่องหน',
h_cuddle:'กอด',
h_pets:'สัตว์เลี้ยง',
h_snipe:'สไนเปอร์',
h_help:'ช่วยเหลือ',
h_settings:'ตั้งค่า',
h_prv:'ห้องส่วนตัว',
h_tc:'จบหอคอย',
h_tcl:'ลูปทาวเวอร์',
kb_fly:'บิน (สลับ/ขึ้น)',
kb_fly_down:'บินลง',
kb_set_home:'ตั้งบ้าน',
kb_home:'บ้าน',
kb_back:'ย้อนกลับ',
kb_cuddle:'แผงกอด',
kb_settings:'ตั้งค่า',
kb_pets:'สำรวจสัตว์เลี้ยง',
kb_slots:'ช่องจุดเดินทาง',
kb_snipe:'แผงสไนเปอร์',
kb_snipe_toggle:'สไนเปอร์ เปิด/ปิด',
kb_attack:'โจมตี',
kb_help:'ช่วยเหลือ / คำอธิบาย',
kb_tower:'จบหอคอย',
kb_tower_loop:'ลูปทาวเวอร์',
kb_invisible:'ล่องหน',
kb_first_person:'บุคคลที่หนึ่ง',
kb_autolock:'ฐานล็อคอัตโนมัติ',
kb_prv:'ห้องส่วนตัว',
kb_rng:'RNG',
kb_accts:'บัญชี',
pets_title:'สัตว์เลี้ยง',
pets_search_placeholder:'เช่น ลูกแมวป่า สีทองหรือเพชร (สีทองหรือมรกต) ดุร้าย',
pets_hint:'คำรวมกันด้วย AND ใช้ OR สำหรับทางเลือก วงเล็บเพื่อจัดกลุ่ม * หรือ % เป็นตัวแทน ใส่ - หน้าคำเพื่อยกเว้นคำนั้น',
pets_empty:'ไม่พบสัตว์เลี้ยงในห้องนี้',
pt_name:'ชื่อ',
pt_mut:'กลายพันธุ์',
pt_rar:'ความหายาก',
pt_owner:'เจ้าของ',
pt_worth:'มูลค่า',
pt_income:'รายได้/วิ',
pt_dist:'ระยะ',
slots_title:'ช่องจุดเดินทาง',
sniper_title:'สไนเปอร์สัตว์เลี้ยง',
sniper_tbl_pet:'สัตว์เลี้ยง',
sniper_tbl_owner:'เจ้าของ',
sniper_tbl_lock:'ล็อค',
sniper_placeholder:'เช่น halo, ทอง OR เพชร, มังกรมรกต',
sniper_hint:'คำรวมกันด้วย AND ใช้ OR สำหรับทางเลือก วงเล็บเพื่อจัดกลุ่ม * หรือ % เป็นตัวแทน ใส่ - หน้าคำเพื่อยกเว้นคำนั้น',
sniper_room_col:'ห้อง',
sniper_scans_col:'สแกน',
sniper_top_pet_col:'สัตว์เลี้ยงยอดนิยม',
sniper_top_worth_col:'มูลค่าสูงสุด',
sniper_top_owner_col:'เจ้าของอันดับต้นๆ',
sniper_age_col:'อายุ',
sniper_join_btn:'เข้าร่วม',
sniper_full:'เต็ม',
sniper_join_failed:'ห้องเป้าหมายเต็มแล้ว',
sniper_scanning_rooms:'กำลังค้นหาห้องอื่น…',
sniper_scan_off:'ปิดการล่าสัตว์อัตโนมัติ',
sniper_scan_next:'สแกนเข้าครั้งต่อไป',
sniper_scan_idle:'ไม่ได้ใช้งาน — กำลังรอการสแกน',
sniper_auto_place:'วางอัตโนมัติที่ฐาน',
sniper_place_desc:'(นำสัตว์เลี้ยงที่ขโมยมาวางในช่องฐานของคุณ)',
sniper_auto_drop:'ปล่อยสัตว์เลี้ยงที่ไม่ตรงอัตโนมัติในคลื่น',
sniper_drop_desc:'(ปล่อยสัตว์ป่าที่ไม่ตรงตัวกรองเพื่อรีเฟรชพูลเกิด)',
sniper_auto_hunt:'ล่าอัตโนมัติ',
sniper_hunt_desc:'(สแกนห้องอื่น กระโดดไปที่การจับคู่ที่ดีที่สุด)',
sniper_auto_sell:'ขายอัตโนมัติเมื่อขโมย',
sniper_sell_desc:'(ขายตัวแย่สุดเมื่อฐานเต็ม)',
sniper_lockdown:'ล็อกดาวน์ ≤',
sniper_lockdown_hint:'ขโมยเป้าหมายในฐานที่มี ≤ เวลาที่เหลือนี้ 0 = ปลดล็อกเท่านั้น',
sniper_join_grace:'ร่วมไว้อาลัย',
sniper_start:'เริ่มสไนเปอร์',
sniper_stop:'หยุดสไนเปอร์',
sniper_idle:'ว่าง',
sniper_no_filter:'ไม่ได้ตั้งตัวกรอง',
sniper_waiting:'กำลังรอแมตช์...',
sniper_hold_pause:'กำลังถือสัตว์เลี้ยง — หยุดชั่วคราว',
sniper_stolen_pause:'มีสัตว์เลี้ยงของเรา — หยุดชั่วคราว',
sniper_cooldown:'คูลดาวน์',
sniper_hopping:'กำลังเปลี่ยนเซิร์ฟเวอร์...',
sniper_na:'สไนเปอร์ไม่พร้อมในล็อบบี้ — เข้าแมตช์ก่อน',
sniper_wait_lock:'กำลังรอข้อมูลล็อก...',
sniper_locked:'ฐานถูกล็อก — ข้าม...',
sniper_full_eggs:'ฐานเต็ม — มีแต่ไข่ ขายไม่ได้',
sniper_stealing:'กำลังขโมย',
sniper_dropped:'ปล่อยแล้ว',
sniper_holding:'กำลังถือ',
sniper_place:'! วางในฐาน',
sniper_steal_mode:'[ขโมย]',
sniper_theft_nohop:'สัตว์เลี้ยงถูกขโมยโดย',
sniper_nohop_suffix:'— ไม่กระโดด',
sniper_sniping:'กำลังสไนป์:',
sniper_options:'ตัวเลือก',
sniper_drop_fail_status:'ปล่อยล้มเหลว!',
sniper_hotkey_label:'ปุ่มลัด:',
sniper_panel_label:'แผง:',
sniper_grab_fail:'คว้าล้มเหลว กำลังลองใหม่...',
sniper_our_pet_stolen:'สัตว์เลี้ยงถูกขโมย — คูลดาวน์ 8 วิ',
sniper_hopping_short:'กำลังกระโดด...',
sniper_base_full:'ฐานเต็ม',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'วิ่งเร็ว',
pet_teleport_title:'เทเลพอร์ต',
pet_pickup_title:'หยิบ',
owner_yours:'ของคุณ',
owner_wild:'ป่า',
footer_gf:'ส้อมมันเยิ้ม',
copy_ok:'คัดลอกแล้ว',
copy_failed:'การคัดลอกล้มเหลว',
s_invis_on_fly:'ล่องหนเมื่อบิน',
snipe_walk_home:'เดินกลับบ้านหลังจากขโมย',
snipe_walk_home_desc:'เดินกลับไปที่ฐานของคุณ',
sniper_afk_sell:'AFK ขายสัตว์เลี้ยงที่ไม่ตรง',
sniper_afk_sell_desc:'(เมื่อว่าง 5 วินาที ขายสัตว์เลี้ยงที่ไม่ตรงตัวกรองตามมูลค่า — เฉพาะโหมดคลื่น)',
hb_fly:'บิน',
hb_lck:'ล็อก',
hb_inv:'ซ่อน',
hb_cud:'กอด',
hb_pet:'สัตว์',
hb_snp:'ยิง',
hb_cfg:'ตั้ง',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'บัญชี',
ban_title:'การเชื่อมต่อถูกบล็อก',
ban_sub:'ที่อยู่ IP ของคุณถูกจำกัดโดย Meeland',
ban_body:'ไม่ต้องกังวล — แก้ไขได้ง่าย! VPN ฟรีจะให้ IP ใหม่เพื่อให้คุณเล่นได้อีกครั้ง',
ban_pick:'แก้ไขด่วน — เลือกอันหนึ่ง:',
ban_warp:'ฟรี, ไม่จำกัด, ตั้งค่าคลิกเดียว',
ban_warp_store:'มีใน App Store และ Play Store ในชื่อ "1.1.1.1" ด้วย',
ban_proton:'ไม่จำกัดข้อมูล, 5 ประเทศ',
ban_steps:'ติดตั้ง → เชื่อมต่อ → รีเฟรชหน้านี้ แค่นั้นเอง!',
ban_ok:'เข้าใจแล้ว',
warn_title:'ใช้ VPN เสมอ',
warn_body:'เล่นโดยเปิด <b>VPN</b> เสมอ',
warn_ok:'เข้าใจแล้ว',
loading:'กำลังโหลด',
tcl_loading:'กำลังรันลูปหอคอยเต็มรูปแบบ กด {key} เพื่อหยุด',
hop_search:'กำลังค้นหาแมตช์',
hop_match:'พบ {name} — กำลังเข้าร่วม',
hop_flee:'หนีจากผู้บุกรุก',
hop_reconnect:'กำลังเชื่อมต่อใหม่',
hop_reload:'กำลังโหลดใหม่',
hop_fall:'กำลังฟื้นตัวจากการตก',
hop_join:'กำลังเข้าร่วมห้อง',
lock_off:'ปิด',
lock_unlocked:'ปลดล็อค',
desc_intro:'MES ให้คุณวอลแฮ็ค การทำฟาร์มอัตโนมัติ สะสมสัตว์เลี้ยงหายาก เพิ่มความเร็ว บิน ล่องหน และอื่นๆ อีกมากมายใน Meeland',
desc_free:'ฟรี 100% ตลอดไป มีความเห็น? ให้รีวิว ⭐ เชิงบวก — นั่นคือสิ่งที่ทำให้อัปเดตต่อไป',
desc_h_movement:'การเคลื่อนที่',
desc_h_combat:'การต่อสู้',
desc_h_tuning:'ปรับแต่ง',
desc_h_pets:'สัตว์เลี้ยง & ขโมย',
desc_h_economy:'เศรษฐกิจ',
desc_h_custom:'ปรับแต่ง',
desc_h_extras:'อื่นๆ',
desc_fly:'บิน',
desc_fly_d:'Space ขึ้น, F ลง ปรับความเร็วได้',
desc_speed:'กะพริบ',
desc_speed_d:'Shift เพื่อเทเลพอร์ตทันที',
desc_noclip:'ทะลุกำแพง',
desc_noclip_d:'เดินทะลุกำแพง',
desc_walls:'เดินบนกำแพง',
desc_walls_d:'ปีนทุกพื้นผิว',
desc_waypts:'จุดเดินทาง',
desc_waypts_d:'บันทึก 10 ตำแหน่ง เทเลพอร์ตกดเดียว <kbd>Z</kbd> สลับกลับ',
desc_invis:'ล่องหน',
desc_invis_d:'กด CapsLock เพื่อหายตัว',
desc_fpv:'FPV',
desc_fpv_d:'กด <kbd>.</kbd> เพื่อสลับกล้องมุมมองบุคคลที่หนึ่ง',
desc_anti_invis:'ต้านล่องหน',
desc_anti_invis_d:'เห็นผู้เล่นล่องหนเป็นวิญญาณ',
desc_xray:'มุมมองเอ็กซ์เรย์',
desc_xray_d:'ดูผู้เล่นผ่านกำแพงในปริศนาฆาตกรรม สีแดง = ฆาตกร สีเขียว = พลเรือน',
desc_nodeathh:'อมตะ',
desc_nodeath_d:'ไม่โดนความเสียหายทุกอย่าง',
desc_antikb:'ต้านกระเด็น',
desc_antikb_d:'ไม่ถูกผลัก',
desc_attack:'โจมตีทันที',
desc_attack_d:'<kbd>G</kbd> เทเลพอร์ตไปหาผู้เล่นใกล้สุดแล้วตี',
desc_jumpgrav:'กระโดดและแรงโน้มถ่วง',
desc_jumpgrav_d:'ตัวคูณปรับได้ในการตั้งค่า',
desc_fov:'ปรับมุมมอง FOV',
desc_fov_d:'แถบปรับ FOV มุมมองบุคคลที่หนึ่งและสาม',
desc_autoinvis:'ล่องหนอัตโนมัติเมื่อบิน',
desc_autoinvis_d:'ล่องหนอัตโนมัติเมื่อบิน',
desc_sniper:'สไนเปอร์สัตว์เลี้ยง',
desc_sniper_d:'ขโมยสัตว์เลี้ยงที่กรองแล้วอัตโนมัติ ทั้งสองโหมด',
desc_prv:'ห้องส่วนตัว',
desc_prv_d:'<kbd>PgDn</kbd> สร้างห้องส่วนตัวในโหมดปัจจุบัน และเข้าร่วมอัตโนมัติ',
desc_petbrow:'สำรวจสัตว์เลี้ยง',
desc_petbrow_d:'<kbd>K</kbd> แสดงสัตว์เลี้ยงทั้งหมด จัดเรียง กรอง คว้า',
desc_cuddle:'แผงกอด',
desc_cuddle_d:'<kbd>J</kbd> แสดงผู้เล่นตามระยะ คลิกเพื่อตาม',
desc_return:'กลับอัตโนมัติ',
desc_return_d:'เทเลพอร์ตกลับบ้านหลังขโมย',
desc_autolock:'ล็อกอัตโนมัติ',
desc_autolock_d:'ฐานล็อคตลอด',
desc_fountain:'น้ำพุอัตโนมัติ',
desc_fountain_d:'กำไรถาวร 1.5× ต่ออายุอัตโนมัติ',
desc_money:'เงินฟรี + ดาว + เพชร',
desc_money_d:'ไม่ต้องดูโฆษณา',
desc_collect:'เก็บอัตโนมัติ',
desc_collect_d:'รายได้สัตว์เลี้ยงทุก 30 วินาที',
desc_music:'เพลงขนส่ง',
desc_music_d:'เพลงระหว่างขโมย 15 แนวเพลง',
desc_chatfade:'แชทจางหาย',
desc_chatfade_d:'ควบคุมเวลาแสดงข้อความ 5–120วินาที',
desc_emotes:'อีโมทบิน',
desc_emotes_d:'อีโมทสุ่มขณะบิน',
desc_displays:'ข้อความซ้อนทับ',
desc_displays_d:'พิกัด, ตัวนับ FPS และข้อมูลเป้าหมาย',
desc_config:'ตั้งค่า',
desc_config_d:'<kbd>M</kbd> สลับฟีเจอร์ ปรับปุ่ม ปรับความเร็ว',
desc_langs:'60 ภาษา',
desc_langs_d:'แปล UI ครบถ้วน',
desc_tower:'จบหอคอย',
desc_tower_d:'<kbd>Y</kbd> ผ่าน Obby Tower ทันที',
desc_cats:'หน้าจอโหลดแมว',
desc_cats_d:'แมวน่ารักแทนที่การโหลด',
desc_h_install:'การติดตั้ง',
desc_desktop:'เดสก์ท็อป (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'ติดตั้ง <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> หรือ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'คลิกติดตั้งด้านบน',
desc_inst_open:'เปิดเกม Meeland ใดก็ได้ — ใช้ได้เลย',
desc_mobile:'มือถือ (Android)',
desc_mob_ff:'ติดตั้ง <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox สำหรับ Android</a> จาก Play Store',
desc_mob_addon:'เปิด Firefox → เมนู → ส่วนเสริม → ติดตั้ง <strong>Tampermonkey</strong>',
desc_mob_visit:'เข้าหน้านี้ใน Firefox แล้วแตะติดตั้ง',
desc_mob_play:'เล่น Meeland — ปุ่ม HUD แบบสัมผัสจะปรากฏอัตโนมัติ',
desc_ios:'iOS: Apple บล็อกส่วนขยายเบราว์เซอร์บนเบราว์เซอร์ iOS ทั้งหมด (รวมถึง Firefox) ใช้เบราว์เซอร์เดสก์ท็อปหรือ Android',
desc_h_privacy:'ความเป็นส่วนตัว',
desc_privacy:'ฝั่งไคลเอนต์เท่านั้น — ไม่มีข้อมูลออกจากเบราว์เซอร์ของคุณ'
});
_mk('id','Bahasa Indonesia',{
close:'✕',
refresh:'↻',
go:'Pergi',
set:'Atur',
auto:'Otomatis',
empty:'kosong',
help_title:'Bantuan',
players_title:'Pemain',
players_empty:'Tidak ditemukan pemain lain',
settings_title:'Pengaturan',
settings_reset:'Mengatur ulang',
tab_gameplay:'Gameplay',
tab_economy:'Ekonomi',
tab_audio:'Audio',
tab_advanced:'Lanjutan',
tab_hud:'HUD',
tab_keys:'Tombol',
tab_accounts:'Akun',
acct_current:'Saat ini',
acct_new:'Baru',
acct_import:'Impor',
acct_switch:'Ganti',
acct_reload:'Muat ulang',
acct_delete:'Hapus',
acct_cancel:'Batal',
acct_empty:'Kosong',
acct_token_ph:'Token',
acct_copy:'Salin',
acct_export:'Ekspor',
acct_rename:'Ganti nama',
acct_save:'Simpan',
acct_name_len:'Nama harus 4-12 karakter',
acct_name_fail:'Ganti nama gagal',
acct_invalid:'Tidak valid',
acct_ready:'Akun siap. Tutup Meeland, ganti IP, lalu muat ulang.',
acct_ip_note:'Selalu gunakan VPN dan ganti IP saat berganti akun.',
acct_howto:'1. Klik Salin untuk menyalin tautan akun ini.\n2. Di browser atau perangkat lain — atau bersama teman — buka MES.\n3. Klik Impor dan tempel tautannya.',
sh_movement:'Gerakan',
sh_defense:'Pertahanan',
sh_camera:'Kamera',
sh_overlays:'Overlay',
sh_behaviour:'Perilaku',
sh_buttons:'Tombol',
sh_language:'Bahasa',
sh_chat:'Mengobrol',
sh_waves:'Waves',
sh_steal_a_pet:'Curi hewan peliharaan',
sh_tower:'Tower',
sh_misc_multi:'Lain-lain (multi-mode)',
s_noclip:'Tembus dinding',
s_fly:'Terbang',
s_fly_emotes:'Emote terbang',
s_base_speed:'Kecepatan dasar',
s_jump_mult:'Lompat Tinggi',
s_grav_mult:'Gaya berat',
s_walk_up_walls:'Berjalan Menaiki Tembok',
s_carry_normalize:'Kecepatan Bawa + Lompat',
s_invincibility:'Kebal',
s_anti_kb:'Anti-mundur',
s_invisible:'Tidak terlihat',
s_xray_infection:'X-Ray (Misteri Pembunuhan)',
s_ghost_mode:'Mode hantu',
s_flee_intruder:'Kabur jika ada penyusup',
s_first_person:'Tampilan orang pertama',
s_fov_first_person:'FOV (Orang pertama)',
s_fov_third_person:'FOV (Orang ketiga)',
s_fov_vertical_mult:'Pengganda Vertikal FOV',
s_auto_lock:'Kunci markas otomatis',
s_auto_fountain:'Air mancur otomatis (1.5×)',
s_daily_coins:'Koin harian',
s_stars:'Bintang',
s_diamonds_tower:'Berlian (Menara)',
s_tower_loop:'Loop menara',
s_auto_roll_x25:'Roll otomatis x25 keberuntungan',
s_auto_craft:'Craft otomatis',
s_auto_vip_sword:'Beli VIP otomatis',
s_auto_vip_waves:'Beli VIP otomatis (Gelombang)',
s_direct_kill:'Spam kill langsung',
s_direct_kill_rate:'Kecepatan kill',
s_auto_buy_upgrades:'Peningkatan Pembelian Otomatis',
s_boost_coins:'Peningkatan Otomatis: Koin',
s_boost_diamonds:'Peningkatan Otomatis: Berlian',
s_boost_luck:'Peningkatan Otomatis: Keberuntungan',
s_auto_unlock_areas:'Area Buka Kunci Otomatis',
s_auto_rebirth:'Kelahiran Kembali Otomatis',
s_auto_join_tp:'Teleportasi ke Area Tertinggi',
s_hide_kill_rewards:'Sembunyikan Hadiah Pembunuhan',
s_hide_roll_anim:'Sembunyikan Animasi Gulungan',
rng_title:'Cheat RNG Hewan Peliharaan',
rng_sec_rolling:'Bergulir',
rng_sec_crafting:'kerajinan',
rng_sec_combat:'Tempur',
rng_sec_upgrades:'Peningkatan',
rng_sec_areas:'Daerah',
rng_actions:'Tindakan',
log_craft:'Keahlian',
log_success:'KESUKSESAN',
log_fail:'GAGAL',
log_unlocking_area:'Area membuka kunci',
log_area_unlocked:'Area tidak terkunci',
log_equipped:'Lengkap',
log_bought_upgrade:'Membeli peningkatan',
log_teleported_to:'Diteleportasi ke',
log_rebirthing:'Kelahiran kembali',
h_rng:'rng',
h_accts:'Akun',
s_auto_collect:'Kumpulkan penghasilan otomatis',
s_collect_interval:'Interval pengumpulan',
s_chat_fade:'Waktu Memudar Chat',
s_name_colors:'Warna nama pengguna',
s_chat_enhance:'Peningkatan obrolan',
mes_hint:'Tips: tambahkan "mes" di nama penggunamu untuk efek pelangi beranimasi!',
s_carry_tune:'Melodi Bawa (Mencuri)',
s_pet_pickup_radius:'Radius Mencuri Hewan',
s_carry_vol:'Volume Bawaan',
carry_tune_default:'Bawaan',
carry_tune_silent:'Sunyi',
carry_tune_ambient:'Ambien',
carry_tune_blues:'biru',
carry_tune_chiptune:'Chiptun',
carry_tune_classical:'Klasik',
carry_tune_electronic:'Elektronik',
carry_tune_epic:'Epik',
carry_tune_folk:'Rakyat',
carry_tune_funk:'aneh',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Logam',
carry_tune_pop:'Pop',
carry_tune_punk:'punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Batu',
s_cont_cuddle:'Pelukan terus-menerus',
s_protips:'Tips Pro',
s_hideprotips:'Sembunyikan Tips Pro saya',
s_show_exp_modes:'Tampilkan Mode Eksperimental',
s_showcoords:'Tampilkan koordinat',
s_showfps:'Tampilkan FPS',
s_showtargetinfo:'Tampilkan info target',
s_showobj:'Tampilkan Jumlah Entitas / Mesh',
s_copy_dbg:'Salin log debug',
s_copy_json:'Salin JSON',
s_clear_dbg:'Bersihkan',
h_fly:'Terbang',
h_speed:'Hack kecepatan',
h_waypoints:'Titik jalan',
h_autolock:'Kunci otomatis',
h_invisible:'Tidak terlihat',
h_cuddle:'Pelukan',
h_pets:'Hewan peliharaan',
h_snipe:'Penembak jitu',
h_help:'Bantuan',
h_settings:'Pengaturan',
h_prv:'Ruang Privat',
h_tc:'Selesaikan menara',
h_tcl:'Loop menara',
kb_fly:'Terbang (alihkan/naik)',
kb_fly_down:'Terbang turun',
kb_set_home:'Atur rumah',
kb_home:'Rumah',
kb_back:'Kembali',
kb_cuddle:'Panel pelukan',
kb_settings:'Pengaturan',
kb_pets:'Penjelajah hewan',
kb_slots:'Slot titik jalan',
kb_snipe:'Panel penembak jitu',
kb_snipe_toggle:'Penembak jitu Hidup/Mati',
kb_attack:'Serang',
kb_help:'Bantuan / Deskripsi',
kb_tower:'Selesaikan menara',
kb_tower_loop:'Loop menara',
kb_invisible:'Tidak terlihat',
kb_first_person:'Orang pertama',
kb_autolock:'Basis Kunci Otomatis',
kb_prv:'Ruang Privat',
kb_rng:'RNG',
kb_accts:'Akun',
pets_title:'Hewan peliharaan',
pets_search_placeholder:'misalnya kucing liar, emas ATAU berlian, (emas ATAU zamrud) liar',
pets_hint:'Kata digabung dengan DAN. Gunakan OR untuk alternatif, tanda kurung untuk kelompok. * atau % sebagai wildcard. Tambahkan - di depan kata untuk mengecualikannya.',
pets_empty:'Tidak ditemukan hewan peliharaan di ruangan ini',
pt_name:'Nama',
pt_mut:'Mutasi',
pt_rar:'Kelangkaan',
pt_owner:'Pemilik',
pt_worth:'Nilai',
pt_income:'Pendapatan/d',
pt_dist:'Jarak',
slots_title:'Slot titik jalan',
sniper_title:'Penembak jitu hewan',
sniper_tbl_pet:'Peliharaan',
sniper_tbl_owner:'Pemilik',
sniper_tbl_lock:'Kunci',
sniper_placeholder:'cth. halo, emas OR berlian, naga zamrud',
sniper_hint:'Kata digabung dengan DAN. Gunakan OR untuk alternatif, tanda kurung untuk kelompok. * atau % sebagai wildcard. Tambahkan - di depan kata untuk mengecualikannya.',
sniper_room_col:'Ruang',
sniper_scans_col:'Pemindaian',
sniper_top_pet_col:'Hewan Peliharaan Teratas',
sniper_top_worth_col:'Nilai Tertinggi',
sniper_top_owner_col:'Pemilik Teratas',
sniper_age_col:'Umur',
sniper_join_btn:'Gabung',
sniper_full:'Penuh',
sniper_join_failed:'Ruangan sasaran penuh',
sniper_scanning_rooms:'Mencari ruang lain…',
sniper_scan_off:'Perburuan otomatis',
sniper_scan_next:'Pemindaian berikutnya masuk',
sniper_scan_idle:'Idle — menunggu untuk memindai',
sniper_auto_place:'Taruh Otomatis ke Basis',
sniper_place_desc:'(menaruh hewan yang dicuri di slot basis kamu)',
sniper_auto_drop:'Jatuhkan otomatis hewan yang tidak cocok di Gelombang',
sniper_drop_desc:'(menjatuhkan hewan liar yang tidak cocok dengan filter untuk menyegarkan kolam spawn)',
sniper_auto_hunt:'Berburu otomatis',
sniper_hunt_desc:'(memindai ruangan lain, lompat ke yang paling cocok)',
sniper_auto_sell:'Jual otomatis saat Mencuri',
sniper_sell_desc:'(jual yang terburuk saat markas penuh)',
sniper_lockdown:'Penguncian ≤',
sniper_lockdown_hint:'Curi target di markas dengan ≤ waktu tersisa ini. 0 = hanya yang tidak terkunci.',
sniper_join_grace:'Bergabunglah dengan kasih karunia',
sniper_start:'Mulai penembak jitu',
sniper_stop:'Hentikan penembak jitu',
sniper_idle:'Menganggur',
sniper_no_filter:'Tidak ada filter yang diatur',
sniper_waiting:'Menunggu pertandingan...',
sniper_hold_pause:'Memegang hewan — dijeda',
sniper_stolen_pause:'memegang hewan kita — dijeda',
sniper_cooldown:'Pendinginan',
sniper_hopping:'Berpindah server...',
sniper_na:'Penembak jitu T/T di lobi — masuk pertandingan dulu',
sniper_wait_lock:'Menunggu data penguncian...',
sniper_locked:'Markas terkunci — melewati...',
sniper_full_eggs:'Markas penuh — hanya telur, tidak bisa dijual',
sniper_stealing:'Mencuri',
sniper_dropped:'Dijatuhkan',
sniper_holding:'Memegang',
sniper_place:'! Taruh di markas.',
sniper_steal_mode:'[Curi]',
sniper_theft_nohop:'Hewan dicuri oleh',
sniper_nohop_suffix:'— tidak lompat',
sniper_sniping:'Menembak:',
sniper_options:'Opsi',
sniper_drop_fail_status:'Jatuhkan gagal!',
sniper_hotkey_label:'Tombol pintas:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Ambil gagal. Mencoba lagi...',
sniper_our_pet_stolen:'Hewan kita dicuri — cooldown 8d',
sniper_hopping_short:'Melompat...',
sniper_base_full:'Basis penuh',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'LARI',
pet_teleport_title:'Teleportasi',
pet_pickup_title:'Menjemput',
owner_yours:'Milikmu',
owner_wild:'Liar',
footer_gf:'Garpu Berminyak',
copy_ok:'Disalin',
copy_failed:'Penyalinan Gagal',
s_invis_on_fly:'Tak terlihat saat terbang',
snipe_walk_home:'Jalan pulang setelah mencuri',
snipe_walk_home_desc:'Jalan kembali ke markas',
sniper_afk_sell:'AFK jual hewan yang tidak cocok',
sniper_afk_sell_desc:'(saat idle 5d, jual hewan yang tidak cocok filter berdasarkan nilai — hanya gelombang)',
hb_fly:'TBG',
hb_lck:'KCI',
hb_inv:'SMR',
hb_cud:'PLK',
hb_pet:'HWN',
hb_snp:'TJT',
hb_cfg:'STG',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'AKN',
ban_title:'Koneksi diblokir',
ban_sub:'Alamat IP Anda telah dibatasi oleh Meeland',
ban_body:'Jangan khawatir — ini mudah diperbaiki! VPN gratis akan memberi Anda IP baru agar bisa bermain lagi.',
ban_pick:'Perbaikan cepat — pilih salah satu:',
ban_warp:'gratis, tanpa batas, pengaturan satu klik',
ban_warp_store:'juga tersedia di App Store & Play Store sebagai "1.1.1.1"',
ban_proton:'tanpa batas data, 5 negara',
ban_steps:'Instal → sambungkan → muat ulang halaman ini. Itu saja!',
ban_ok:'Mengerti',
warn_title:'Selalu gunakan VPN',
warn_body:'Selalu main dengan <b>VPN</b> aktif.',
warn_ok:'Mengerti',
loading:'Memuat',
tcl_loading:'Menjalankan loop menara lengkap. Tekan {key} untuk berhenti.',
hop_search:'Mencari pertandingan',
hop_match:'Ditemukan {name} — bergabung',
hop_flee:'Kabur dari penyusup',
hop_reconnect:'Menghubungkan kembali',
hop_reload:'Memuat ulang',
hop_fall:'Pulih dari jatuh',
hop_join:'Bergabung ke ruangan',
lock_off:'MATI',
lock_unlocked:'TERBUKA',
desc_intro:'MES memberi Anda wallhack, auto-farming, koleksi hewan peliharaan langka, peningkatan kecepatan, penerbangan, tembus pandang, dan banyak lagi di Meeland',
desc_free:'100% gratis, selamanya. Ada masukan? Tinggalkan ulasan ⭐ positif — itulah yang menjaga pembaruan tetap berjalan.',
desc_h_movement:'Gerakan',
desc_h_combat:'Pertarungan',
desc_h_tuning:'Penyetelan',
desc_h_pets:'Hewan & Pencurian',
desc_h_economy:'Ekonomi',
desc_h_custom:'Kustomisasi',
desc_h_extras:'Tambahan',
desc_fly:'Terbang',
desc_fly_d:'Space untuk naik, F untuk turun. Kecepatan dapat diatur.',
desc_speed:'Berkedip',
desc_speed_d:'Shift untuk teleportasi instan.',
desc_noclip:'Tembus dinding',
desc_noclip_d:'Tembus dinding.',
desc_walls:'Berjalan di Dinding',
desc_walls_d:'Panjat permukaan apa pun.',
desc_waypts:'Titik jalan',
desc_waypts_d:'Simpan 10 posisi. Teleport satu tombol. <kbd>Z</kbd> untuk beralih.',
desc_invis:'Tak terlihat',
desc_invis_d:'Tekan CapsLock untuk menghilang sepenuhnya.',
desc_fpv:'FPV',
desc_fpv_d:'Tekan <kbd>.</kbd> untuk beralih ke kamera orang pertama.',
desc_anti_invis:'Anti-tidak terlihat',
desc_anti_invis_d:'Lihat pemain tak terlihat sebagai hantu.',
desc_xray:'Penglihatan Sinar-X',
desc_xray_d:'Lihat pemain menembus dinding di Misteri Pembunuhan. Merah = pembunuh, hijau = warga sipil.',
desc_nodeathh:'Kebal',
desc_nodeath_d:'Kebal terhadap semua kerusakan.',
desc_antikb:'Anti-mundur',
desc_antikb_d:'Tidak bisa didorong.',
desc_attack:'Serangan instan',
desc_attack_d:'<kbd>G</kbd> teleport ke pemain terdekat dan serang.',
desc_jumpgrav:'Lompat & Gravitasi',
desc_jumpgrav_d:'Pengali yang dapat disesuaikan di Pengaturan.',
desc_fov:'Kontrol FOV',
desc_fov_d:'Slider FOV orang pertama dan ketiga.',
desc_autoinvis:'Auto-Tak Terlihat saat Terbang',
desc_autoinvis_d:'Otomatis tak terlihat saat terbang.',
desc_sniper:'Penembak jitu hewan',
desc_sniper_d:'Pencurian otomatis hewan yang difilter. Kedua mode.',
desc_prv:'Ruang Privat',
desc_prv_d:'<kbd>PgDn</kbd> membuat ruang privat di mode saat ini dan bergabung otomatis.',
desc_petbrow:'Penjelajah hewan',
desc_petbrow_d:'<kbd>K</kbd> tampilkan semua hewan. Urutkan, filter, ambil.',
desc_cuddle:'Panel pelukan',
desc_cuddle_d:'<kbd>J</kbd> daftar pemain berdasar jarak. Klik untuk mengikuti.',
desc_return:'Kembali Otomatis',
desc_return_d:'Teleport ke rumah setelah mencuri.',
desc_autolock:'Kunci otomatis',
desc_autolock_d:'Markas selalu terkunci.',
desc_fountain:'Air mancur otomatis',
desc_fountain_d:'Keuntungan permanen 1.5×. Otomatis perpanjang.',
desc_money:'Uang gratis + Bintang + Berlian',
desc_money_d:'Tanpa iklan.',
desc_collect:'Kumpul Otomatis',
desc_collect_d:'Pendapatan hewan setiap 30 detik.',
desc_music:'Musik angkut',
desc_music_d:'Musik saat mencuri. 15 genre.',
desc_chatfade:'Chat memudar',
desc_chatfade_d:'Atur visibilitas pesan. 5–120d.',
desc_emotes:'Emote terbang',
desc_emotes_d:'Emote acak saat terbang.',
desc_displays:'Hamparan Tampilan',
desc_displays_d:'Koordinat, penghitung FPS, dan info target.',
desc_config:'Pengaturan',
desc_config_d:'<kbd>M</kbd> untuk fitur, tombol, kecepatan.',
desc_langs:'60 Bahasa',
desc_langs_d:'Terjemahan UI lengkap.',
desc_tower:'Selesaikan menara',
desc_tower_d:'<kbd>Y</kbd> untuk menang Obby Tower instan.',
desc_cats:'Layar muat kucing',
desc_cats_d:'Kucing lucu mengganti pemuatan.',
desc_h_install:'Instalasi',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Berani)',
desc_inst_ext:'Pasang <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> atau <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klik Pasang di atas',
desc_inst_open:'Buka permainan Meeland mana saja — langsung bekerja',
desc_mobile:'Seluler (Android)',
desc_mob_ff:'Pasang <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox untuk Android</a> dari Play Store',
desc_mob_addon:'Buka Firefox → Menu → Add-on → pasang <strong>Tampermonkey</strong>',
desc_mob_visit:'Kunjungi halaman ini di Firefox dan ketuk Pasang',
desc_mob_play:'Mainkan Meeland — tombol HUD sentuh muncul otomatis',
desc_ios:'iOS: Apple memblokir ekstensi browser di semua browser iOS (termasuk Firefox). Gunakan browser desktop atau Android.',
desc_h_privacy:'Privasi',
desc_privacy:'Hanya sisi klien — tidak ada data yang keluar dari browsermu'
});
_mk('uk','Українська',{
close:'✕',
refresh:'↻',
go:'Перейти',
set:'Встановити',
auto:'Авто',
empty:'порожньо',
help_title:'Довідка',
players_title:'Гравці',
players_empty:'Інших гравців не знайдено',
settings_title:'Налаштування',
settings_reset:'Скинути',
tab_gameplay:'Гра',
tab_economy:'Економіка',
tab_audio:'Аудіо',
tab_advanced:'Додатково',
tab_hud:'HUD',
tab_keys:'Клавіші',
tab_accounts:'Акаунти',
acct_current:'Поточний',
acct_new:'Новий',
acct_import:'Імпорт',
acct_switch:'Перемкнути',
acct_reload:'Перезавантажити',
acct_delete:'Видалити',
acct_cancel:'Скасувати',
acct_empty:'Порожньо',
acct_token_ph:'Токен',
acct_copy:'Копіювати',
acct_export:'Експорт',
acct_rename:'Перейменувати',
acct_save:'Зберегти',
acct_name_len:'Ім\'я має містити 4-12 символів',
acct_name_fail:'Не вдалося перейменувати',
acct_invalid:'Некоректний',
acct_ready:'Акаунт готовий. Закрийте Meeland, змініть IP, потім перезавантажте.',
acct_ip_note:'Завжди використовуйте VPN і змінюйте IP при зміні акаунта.',
acct_howto:'1. Натисніть Копіювати, щоб скопіювати посилання цього акаунта.\n2. В іншому браузері або на іншому пристрої — або з другом — відкрийте MES.\n3. Натисніть Імпорт і вставте посилання.',
sh_movement:'Рух',
sh_defense:'Захист',
sh_camera:'Камера',
sh_overlays:'Накладання',
sh_behaviour:'Поведінка',
sh_buttons:'Кнопки',
sh_language:'Мова',
sh_chat:'Чат',
sh_waves:'Waves',
sh_steal_a_pet:'Вкрасти улюбленця',
sh_tower:'Tower',
sh_misc_multi:'Різне (мультирежим)',
s_noclip:'Проходити крізь стіни',
s_fly:'Літати',
s_fly_emotes:'Емоції польоту',
s_base_speed:'Базова швидкість',
s_jump_mult:'Висота стрибка',
s_grav_mult:'Сила тяжіння',
s_walk_up_walls:'Підйом по стінах',
s_carry_normalize:'Швидкість перенесення + стрибок',
s_invincibility:'Невразливість',
s_anti_kb:'Анти-відкидання',
s_invisible:'Невидимий',
s_xray_infection:'Рентген (Таємниця Вбивства)',
s_ghost_mode:'Режим привида',
s_flee_intruder:'Тікати при порушнику',
s_first_person:'Вигляд від першої особи',
s_fov_first_person:'FOV (1-ша)',
s_fov_third_person:'FOV (3-тя)',
s_fov_vertical_mult:'Вертикальний множник поля зору',
s_auto_lock:'Авто-блокування бази',
s_auto_fountain:'Авто-фонтан (1.5×)',
s_daily_coins:'Щоденні монети',
s_stars:'Зірки',
s_diamonds_tower:'Діаманти (Вежа)',
s_tower_loop:'Цикл вежі',
s_auto_roll_x25:'Авто-рол x25 удачі',
s_auto_craft:'Авто-крафт',
s_auto_vip_sword:'Авто купівля VIP',
s_auto_vip_waves:'Авто купівля VIP (Хвилі)',
s_direct_kill:'Прямий спам вбивств',
s_direct_kill_rate:'Швидкість вбивств',
s_auto_buy_upgrades:'Автоматична покупка оновлень',
s_boost_coins:'Автоматичне оновлення: монети',
s_boost_diamonds:'Автоматичне оновлення: діаманти',
s_boost_luck:'Автоматичне оновлення: удача',
s_auto_unlock_areas:'Автоматичне розблокування зон',
s_auto_rebirth:'Автопереродження',
s_auto_join_tp:'Телепорт до найвищої області',
s_hide_kill_rewards:'Приховати нагороди за вбивство',
s_hide_roll_anim:'Приховати анімацію рулону',
rng_title:'Pets RNG Коди',
rng_sec_rolling:'Прокатка',
rng_sec_crafting:'Крафт',
rng_sec_combat:'Бойовий',
rng_sec_upgrades:'Оновлення',
rng_sec_areas:'Області',
rng_actions:'Дії',
log_craft:'Ремесло',
log_success:'УСПІХ',
log_fail:'НЕВДАЧА',
log_unlocking_area:'Зона розблокування',
log_area_unlocked:'Область розблокована',
log_equipped:'Обладнаний',
log_bought_upgrade:'Купив апгрейд',
log_teleported_to:'Телепортований до',
log_rebirthing:'Переродження',
h_rng:'rng',
h_accts:'Акаунти',
s_auto_collect:'Авто-збір прибутку',
s_collect_interval:'Інтервал збору',
s_chat_fade:'Час зникнення чату',
s_name_colors:'Кольори імен користувачів',
s_chat_enhance:'Покращення чату',
mes_hint:'Порада: додайте "mes" у своє ім\'я користувача, щоб отримати анімований ефект веселки!',
s_carry_tune:'Мелодія перенесення (Крадіжка)',
s_pet_pickup_radius:'Радіус Крадіжки Тварини',
s_carry_vol:'Гучність перенесення',
carry_tune_default:'Стандарт',
carry_tune_silent:'Тихий',
carry_tune_ambient:'Амбієнт',
carry_tune_blues:'Блюз',
carry_tune_chiptune:'Чіптюн',
carry_tune_classical:'Класична',
carry_tune_electronic:'Електронна',
carry_tune_epic:'Епічна',
carry_tune_folk:'Фолк',
carry_tune_funk:'Фанк',
carry_tune_jazz:'Джаз',
carry_tune_lofi:'Ло-Фай',
carry_tune_metal:'Метал',
carry_tune_pop:'Поп',
carry_tune_punk:'Панк',
carry_tune_reggae:'Реґі',
carry_tune_rock:'Рок',
s_cont_cuddle:'Безперервні обійми',
s_protips:'Про поради',
s_hideprotips:'Приховати мої Про поради',
s_show_exp_modes:'Показати експериментальні режими',
s_showcoords:'Показати координати',
s_showfps:'Показати FPS',
s_showtargetinfo:'Показати інформацію про ціль',
s_showobj:'Показати кількість сутностей/сіток',
s_copy_dbg:'Скопіювати журнали налагодження',
s_copy_json:'Копіювати JSON',
s_clear_dbg:'Очистити',
h_fly:'Літати',
h_speed:'Поморгайте',
h_waypoints:'Шляхові точки',
h_autolock:'Автоблокування',
h_invisible:'Невидимий',
h_cuddle:'обніматися',
h_pets:'Домашні тварини',
h_snipe:'Снайп',
h_help:'Довідка',
h_settings:'Налаштування',
h_prv:'Приватна кімната',
h_tc:'Вежа завершена',
h_tcl:'Цикл вежі',
kb_fly:'Політ (перемикання/вгору)',
kb_fly_down:'летіти вниз',
kb_set_home:'Встановіть Home',
kb_home:'Дім',
kb_back:'Назад',
kb_cuddle:'Панель обіймів',
kb_settings:'Налаштування',
kb_pets:'браузер домашніх тварин',
kb_slots:'Слоти маршрутних точок',
kb_snipe:'Снайперська панель',
kb_snipe_toggle:'Снайпер Увімк./Вимк',
kb_attack:'Атака',
kb_help:'Довідка / Опис',
kb_tower:'Вежа завершена',
kb_tower_loop:'Цикл вежі',
kb_invisible:'Невидимий',
kb_first_person:'Перша особа',
kb_autolock:'База з автоматичним блокуванням',
kb_prv:'Приватна кімната',
kb_rng:'RNG',
kb_accts:'Акаунти',
pets_title:'Домашні тварини',
pets_search_placeholder:'напр. дикий кошеня, золотий АБО діамант, (золотий АБО смарагдовий) дикий',
pets_hint:'Слова поєднуються І. Використовуйте OR для альтернатив, дужки для групування. * або % як символ підстановки. Поставте - перед словом, щоб виключити його.',
pets_empty:'У цьому номері немає домашніх тварин',
pt_name:'Ім\'я',
pt_mut:'Мутація',
pt_rar:'Рідкість',
pt_owner:'Власник',
pt_worth:'варто',
pt_income:'Дохід/с',
pt_dist:'відст',
slots_title:'Слоти маршрутних точок',
sniper_title:'домашній снайпер',
sniper_tbl_pet:'Домашня тварина',
sniper_tbl_owner:'Власник',
sniper_tbl_lock:'Замок',
sniper_placeholder:'напр. німб, золотий АБО діамант, смарагдовий дракон',
sniper_hint:'Слова ставляться І. Використовуйте OR для альтернатив, дужки для групування. * або % як символ підстановки. Поставте - перед словом, щоб виключити його.',
sniper_room_col:'Кімната',
sniper_scans_col:'скани',
sniper_top_pet_col:'верхня тварина',
sniper_top_worth_col:'Верхня вартість',
sniper_top_owner_col:'Топ Власник',
sniper_age_col:'Вік',
sniper_join_btn:'Приєднатися',
sniper_full:'Повно',
sniper_join_failed:'Цільова кімната заповнена',
sniper_scanning_rooms:'Пошук інших кімнат…',
sniper_scan_off:'Автоматичне полювання вимкнено',
sniper_scan_next:'Наступне сканування в',
sniper_scan_idle:'Неактивний — очікує сканування',
sniper_auto_place:'Авто-розміщення на базі',
sniper_place_desc:'(розміщує вкрадену тваринку у слоті бази)',
sniper_auto_drop:'Автоматичне скидання невідповідних тварин у Waves',
sniper_drop_desc:'(скидає диких тварин, які не відповідають фільтру, щоб оновити пул спавну)',
sniper_auto_hunt:'Автополювання',
sniper_hunt_desc:'(сканує інші кімнати, стрибає до найкращого збігу)',
sniper_auto_sell:'Автопродаж у Steal',
sniper_sell_desc:'(продавати найнижче, коли база заповнена)',
sniper_lockdown:'Блокування ≤',
sniper_lockdown_hint:'Крадіть цілі на базах, у яких залишилося ≤ цього часу. 0 = лише розблоковано.',
sniper_join_grace:'Приєднуйтесь до благодаті',
sniper_start:'Почніть снайперську роботу',
sniper_stop:'Припиніть снайперську діяльність',
sniper_idle:'Бездіяльність',
sniper_no_filter:'Не встановлено фільтр',
sniper_waiting:'В очікуванні гри...',
sniper_hold_pause:'Тримати домашнього улюбленця — пауза',
sniper_stolen_pause:'має нашого вихованця — пауза',
sniper_cooldown:'Кулдаун',
sniper_hopping:'Перехід на сервер...',
sniper_na:'Снайпер Н/Д у лобі — приєднайтеся до гри першим',
sniper_wait_lock:'Очікування даних блокування...',
sniper_locked:'Базу заблоковано — пропуск...',
sniper_full_eggs:'База повна — тільки яйця, не можна продавати',
sniper_stealing:'крадіжки',
sniper_dropped:'Випав',
sniper_holding:'Холдинг',
sniper_place:'! Розмістити на базі.',
sniper_steal_mode:'[Вкрасти]',
sniper_theft_nohop:'Домашню тварину викрали',
sniper_nohop_suffix:'— без стрибка',
sniper_sniping:'Снайперська діяльність:',
sniper_options:'Опції',
sniper_drop_fail_status:'Викинути не вдалося!',
sniper_hotkey_label:'Перемкнути гарячу клавішу:',
sniper_panel_label:'панель:',
sniper_grab_fail:'Захопити не вдалося. Повторна спроба...',
sniper_our_pet_stolen:'Нашого вихованця вкрали — час відновлення 8 с',
sniper_hopping_short:'Стрибки...',
sniper_base_full:'База повна',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'БЛИМАЙТЕ',
pet_teleport_title:'Телепорт',
pet_pickup_title:'Підніміть',
owner_yours:'Ваша',
owner_wild:'Дикий',
footer_gf:'Жирна вилка',
copy_ok:'Скопійовано',
copy_failed:'Не вдалося копіювати',
s_invis_on_fly:'Невидимість при польоті',
snipe_walk_home:'Йти додому після крадіжки',
snipe_walk_home_desc:'Повернутися пішки на базу',
sniper_afk_sell:'AFK продавати невідповідних тварин',
sniper_afk_sell_desc:'(коли бездіяльний 5с, продавати тварин, що не відповідають фільтру за значенням — лише хвилі)',
hb_fly:'ЛІТ',
hb_lck:'БЛОК',
hb_inv:'НЕВ',
hb_cud:'ОБН',
hb_pet:'ТВРН',
hb_snp:'СНПР',
hb_cfg:'НЛШТ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'АК',
ban_title:'Підключення заблоковано',
ban_sub:'Ваша IP-адреса була обмежена Meeland',
ban_body:'Не хвилюйтеся — це легко виправити! Безкоштовний VPN надасть вам новий IP, щоб ви могли грати знову.',
ban_pick:'Швидке вирішення — виберіть будь-який:',
ban_warp:'безкоштовне, необмежене налаштування в один клік',
ban_warp_store:'також в App Store і Play Store як "1.1.1.1"',
ban_proton:'без обмеження даних, 5 країн',
ban_steps:'Встановити → підключитися → оновити сторінку. Це все!',
ban_ok:'зрозумів',
warn_title:'Завжди використовуйте VPN',
warn_body:'Завжди грайте з увімкненим <b>VPN</b>.',
warn_ok:'Зрозумів, я розумію',
loading:'Завантаження',
tcl_loading:'Виконується повний цикл вежі. Натисніть {key}, щоб зупинити.',
hop_search:'Пошук матчу',
hop_match:'Знайдено {name} — приєднання',
hop_flee:'Втеча від порушника',
hop_reconnect:'Повторне підключення',
hop_reload:'Перезавантаження',
hop_fall:'Відновлення після падіння',
hop_join:'Приєднання до кімнати',
lock_off:'ВИМКНЕНО',
lock_unlocked:'РОЗБЛОКУВАНО',
desc_intro:'MES дає вам Wallhack, автофермерство, колекцію рідкісних домашніх тварин, підвищення швидкості, політ, невидимість і багато іншого в Meeland',
desc_free:'Безкоштовний і відкритий назавжди.',
desc_h_movement:'Переміщення',
desc_h_combat:'Бій',
desc_h_tuning:'Налаштування',
desc_h_pets:'Тварини та Крадіжка',
desc_h_economy:'Економіка',
desc_h_custom:'Налаштування',
desc_h_extras:'Додатково',
desc_fly:'Політ',
desc_fly_d:'Пробіл вгору, F вниз. Регульована швидкість.',
desc_speed:'Блінк',
desc_speed_d:'Shift для миттєвої телепортації.',
desc_noclip:'Проходження крізь стіни',
desc_noclip_d:'Проходити крізь стіни та підлогу.',
desc_walls:'Ходьба по Стінах',
desc_walls_d:'Лазь по будь-якій поверхні.',
desc_waypts:'Точки подорожі',
desc_waypts_d:'Зберігайте та телепортуйтесь між 8 точками.',
desc_invis:'Невидимість',
desc_invis_d:'Натисніть CapsLock, щоб повністю зникнути.',
desc_fpv:'FPV',
desc_fpv_d:'Натисніть <kbd>.</kbd> щоб перемкнути камеру від першої особи.',
desc_anti_invis:'Анти-невидимість',
desc_anti_invis_d:'Бачити невидимих гравців як привидів.',
desc_xray:'Рентгенівський Зір',
desc_xray_d:'Дивіться гравців крізь стіни в Таємниці Вбивства. Червоний = вбивця, зелений = цивільний.',
desc_nodeathh:'Невразливість',
desc_nodeath_d:'HP зафіксовані на максимумі. Без шкоди.',
desc_antikb:'Анти-відкидання',
desc_antikb_d:'Вас неможливо штовхнути.',
desc_attack:'Авто-атака',
desc_attack_d:'<kbd>G</kbd> телепортує до найближчого гравця і бʼє.',
desc_jumpgrav:'Стрибок і Гравітація',
desc_jumpgrav_d:'Регульовані множники в Налаштуваннях.',
desc_fov:'Керування FOV',
desc_fov_d:'Повзунки FOV від першої та третьої особи.',
desc_autoinvis:'Авто-Невидимість при Польоті',
desc_autoinvis_d:'Ставайте невидимим автоматично під час польоту.',
desc_sniper:'Снайпер тварин',
desc_sniper_d:'Фільтруйте, крадіть або скидайте тварин автоматично.',
desc_prv:'Приватна кімната',
desc_prv_d:'<kbd>PgDn</kbd> створює приватну кімнату в поточному режимі та автоматично приєднується.',
desc_petbrow:'Браузер тварин',
desc_petbrow_d:'<kbd>P</kbd> відкриває сортовану таблицю з фільтром.',
desc_cuddle:'Безперервні обійми',
desc_cuddle_d:'<kbd>J</kbd> показує гравців за відстанню. Клік для слідування.',
desc_return:'Авто-повернення',
desc_return_d:'Автоматично повертає вкрадених тварин.',
desc_autolock:'Авто-замок',
desc_autolock_d:'База завжди залишається заблокованою.',
desc_fountain:'Авто-фонтан',
desc_fountain_d:'Постійний бонус 1.5×. Оновлюється автоматично.',
desc_money:'Щоденні монети',
desc_money_d:'Збирає щоденні монети автоматично.',
desc_collect:'Авто-збір',
desc_collect_d:'Дохід від тварин кожні 30с.',
desc_music:'Своя музика',
desc_music_d:'Замініть ігрову музику на свою.',
desc_chatfade:'Зникнення чату',
desc_chatfade_d:'Контролюйте видимість повідомлень. 5–120с.',
desc_emotes:'Емоції в польоті',
desc_emotes_d:'Випадкові емоції під час польоту.',
desc_displays:'Накладки Дисплея',
desc_displays_d:'Координати, лічильник FPS та інформація про ціль.',
desc_config:'Налаштування',
desc_config_d:'<kbd>M</kbd> для функцій, перепризначення клавіш, налаштування швидкостей.',
desc_langs:'60 мов',
desc_langs_d:'Інтерфейс перекладається автоматично.',
desc_tower:'Авто-вежа',
desc_tower_d:'Завершіть вежу одним кліком.',
desc_cats:'Екрани завантаження з котами',
desc_cats_d:'Милі коти замінюють завантаження.',
desc_h_install:'Встановлення',
desc_desktop:'ПК (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Встановіть Tampermonkey або Violentmonkey',
desc_inst_click:'Натисніть Встановити',
desc_inst_open:'Відкрийте будь-яку гру Meeland — працює',
desc_mobile:'Мобільний',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Встановіть розширення Tampermonkey',
desc_mob_visit:'Відвідайте цю сторінку та встановіть',
desc_mob_play:'Грайте в Meeland у Firefox',
desc_ios:'iOS: Використовуйте Userscripts (Safari) + цей скрипт',
desc_h_privacy:'Конфіденційність',
desc_privacy:'Дані не збираються. Все залишається локально.'
});
_mk('cs','Čeština',{
close:'✕',
refresh:'↻',
go:'Jít',
set:'Nastavit',
auto:'Automaticky',
empty:'prázdné',
help_title:'Nápověda',
players_title:'Hráči',
players_empty:'Žádní další hráči nenalezeni',
settings_title:'Nastavení',
settings_reset:'Obnovit',
tab_gameplay:'Hra',
tab_economy:'Ekonomika',
tab_audio:'Audio',
tab_advanced:'Pokročilé',
tab_hud:'HUD',
tab_keys:'Klávesy',
tab_accounts:'Účty',
acct_current:'Aktuální',
acct_new:'Nové',
acct_import:'Importovat',
acct_switch:'Přepnout',
acct_reload:'Obnovit',
acct_delete:'Smazat',
acct_cancel:'Zrušit',
acct_empty:'Prázdné',
acct_token_ph:'Token',
acct_copy:'Kopírovat',
acct_export:'Exportovat',
acct_rename:'Přejmenovat',
acct_save:'Uložit',
acct_name_len:'Název musí mít 4-12 znaků',
acct_name_fail:'Přejmenování selhalo',
acct_invalid:'Neplatný',
acct_ready:'Účet připraven. Zavři Meeland, změň IP, pak obnov.',
acct_ip_note:'Vždy používej VPN a při změně účtu změň IP.',
acct_howto:'1. Klikněte na Kopírovat a zkopírujte odkaz tohoto účtu.\n2. V jiném prohlížeči nebo zařízení — nebo s přítelem — otevřete MES.\n3. Klikněte na Importovat a vložte odkaz.',
sh_movement:'Pohyb',
sh_defense:'Obrana',
sh_camera:'Fotoaparát',
sh_overlays:'Překryvy',
sh_behaviour:'Chování',
sh_buttons:'Tlačítka',
sh_language:'Jazyk',
sh_chat:'Povídání',
sh_waves:'Waves',
sh_steal_a_pet:'Ukrást mazlíčka',
sh_tower:'Tower',
sh_misc_multi:'Různé (více režimů)',
s_noclip:'Průchod zdmi',
s_fly:'Létat',
s_fly_emotes:'Létací emotky',
s_base_speed:'Základní rychlost',
s_jump_mult:'Výška skoku',
s_grav_mult:'Gravitace',
s_walk_up_walls:'Procházka po stěnách',
s_carry_normalize:'Rychlost přenosu + skok',
s_invincibility:'Nezranitelnost',
s_anti_kb:'Anti-odhození',
s_invisible:'Neviditelný',
s_xray_infection:'Rentgen (Záhada Vraždy)',
s_ghost_mode:'Režim ducha',
s_flee_intruder:'Uteč při vetřelci',
s_first_person:'Pohled první osoby',
s_fov_first_person:'FOV (1. os.)',
s_fov_third_person:'FOV (3. os.)',
s_fov_vertical_mult:'FOV Vertikální multiplikátor',
s_auto_lock:'Auto-zamčení základny',
s_auto_fountain:'Auto-fontána (1.5×)',
s_daily_coins:'Denní mince',
s_stars:'Hvězdy',
s_diamonds_tower:'Diamanty (Věž)',
s_tower_loop:'Smyčka věže',
s_auto_roll_x25:'Auto roll x25 štěstí',
s_auto_craft:'Automatické craftění',
s_auto_vip_sword:'Automatický nákup VIP',
s_auto_vip_waves:'Automatický nákup VIP (Vlny)',
s_direct_kill:'Přímý spam zabíjení',
s_direct_kill_rate:'Rychlost zabíjení',
s_auto_buy_upgrades:'Aktualizace automatického nákupu',
s_boost_coins:'Automatická aktualizace: mince',
s_boost_diamonds:'Automatická aktualizace: diamanty',
s_boost_luck:'Automatická aktualizace: štěstí',
s_auto_unlock_areas:'Automatické odemykání oblastí',
s_auto_rebirth:'Automatické znovuzrození',
s_auto_join_tp:'Teleportujte se do nejvyšší oblasti',
s_hide_kill_rewards:'Skryjte odměny za zabití',
s_hide_roll_anim:'skrýt animaci role',
rng_title:'Cheaty na domácí mazlíčky RNG',
rng_sec_rolling:'Válcování',
rng_sec_crafting:'Řemeslnictví',
rng_sec_combat:'Boj',
rng_sec_upgrades:'Upgrady',
rng_sec_areas:'Oblasti',
rng_actions:'Akce',
log_craft:'Řemeslo',
log_success:'ÚSPĚCH',
log_fail:'SELHAT',
log_unlocking_area:'Oblast odemykání',
log_area_unlocked:'Oblast odemčena',
log_equipped:'Vybavený',
log_bought_upgrade:'Zakoupený upgrade',
log_teleported_to:'Teleportováno na',
log_rebirthing:'Znovuzrození',
h_rng:'rng',
h_accts:'Účty',
s_auto_collect:'Auto-sběr výdělků',
s_collect_interval:'Interval sběru',
s_chat_fade:'Čas mizení chatu',
s_name_colors:'Barvy uživatelských jmen',
s_chat_enhance:'Vylepšení chatu',
mes_hint:'Tip: přidejte do svého uživatelského jména "mes" pro animovaný duhový efekt!',
s_carry_tune:'Melodie přenášení (Krádež)',
s_pet_pickup_radius:'Poloměr Krádeže Mazlíčka',
s_carry_vol:'Hlasitost přenášení',
carry_tune_default:'Výchozí',
carry_tune_silent:'Tiché',
carry_tune_ambient:'Okolní',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasická',
carry_tune_electronic:'Elektronická',
carry_tune_epic:'Epická',
carry_tune_folk:'Lidová',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Kov',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Nepřetržité mazlení',
s_protips:'Pro tipy',
s_hideprotips:'Skrýt mé Pro tipy',
s_show_exp_modes:'Zobrazit experimentální režimy',
s_showcoords:'Zobrazit souřadnice',
s_showfps:'Zobrazit FPS',
s_showtargetinfo:'Zobrazit info o cíli',
s_showobj:'Zobrazit počet entit / sítě',
s_copy_dbg:'Kopírovat protokoly ladění',
s_copy_json:'Kopírovat JSON',
s_clear_dbg:'Vymazat',
h_fly:'Létat',
h_speed:'Hack rychlosti',
h_waypoints:'Trasové body',
h_autolock:'Auto-zamčení',
h_invisible:'Neviditelný',
h_cuddle:'Mazlení',
h_pets:'Mazlíčci',
h_snipe:'Odstřelovač',
h_help:'Nápověda',
h_settings:'Nastavení',
h_prv:'Soukromá místnost',
h_tc:'Dokončit věž',
h_tcl:'Smyčka věže',
kb_fly:'Létat (přepnout/nahoru)',
kb_fly_down:'Létat dolů',
kb_set_home:'Nastavit domov',
kb_home:'Domů',
kb_back:'Zpět',
kb_cuddle:'Panel mazlení',
kb_settings:'Nastavení',
kb_pets:'Prohlížeč mazlíčků',
kb_slots:'Sloty trasových bodů',
kb_snipe:'Panel odstřelovače',
kb_snipe_toggle:'Odstřelovač Zap/Vyp',
kb_attack:'Útočit',
kb_help:'Nápověda / Popis',
kb_tower:'Dokončit věž',
kb_tower_loop:'Smyčka věže',
kb_invisible:'Neviditelný',
kb_first_person:'První osoba',
kb_autolock:'základna s automatickým zámkem',
kb_prv:'Soukromá místnost',
kb_rng:'RNG',
kb_accts:'Účty',
pets_title:'Mazlíčci',
pets_search_placeholder:'např. divoká kočička, zlatá NEBO diamantová, (zlatá NEBO smaragdová) divoká',
pets_hint:'Slova se kombinují s A. Použijte OR pro alternativy, závorky pro seskupení. * nebo % jako zástupný znak. Před slovo dejte - pro jeho vyloučení.',
pets_empty:'V této místnosti nebyli nalezeni žádní mazlíčci',
pt_name:'Název',
pt_mut:'Mutace',
pt_rar:'Vzácnost',
pt_owner:'Vlastník',
pt_worth:'Hodnota',
pt_income:'Příjem/s',
pt_dist:'Vzdál',
slots_title:'Sloty trasových bodů',
sniper_title:'Odstřelovač mazlíčků',
sniper_tbl_pet:'Domácí mazlíček',
sniper_tbl_owner:'Majitel',
sniper_tbl_lock:'Zámek',
sniper_placeholder:'např. svatozář, zlatý OR diamantový, smaragdový drak',
sniper_hint:'Slova se kombinují s A. Použijte OR pro alternativy, závorky pro seskupení. * nebo % jako zástupný znak. Před slovo dejte - pro jeho vyloučení.',
sniper_room_col:'Místnost',
sniper_scans_col:'Skenuje',
sniper_top_pet_col:'špičkový mazlíček',
sniper_top_worth_col:'Nejlepší hodnota',
sniper_top_owner_col:'Hlavní vlastník',
sniper_age_col:'Stáří',
sniper_join_btn:'Připojit',
sniper_full:'Plný',
sniper_join_failed:'Cílová místnost je plná',
sniper_scanning_rooms:'Hledám jiné místnosti…',
sniper_scan_off:'Vypnutí automatického lovu',
sniper_scan_next:'Další skenování',
sniper_scan_idle:'Nečinný – čeká na skenování',
sniper_auto_place:'Auto-umístění na základnu',
sniper_place_desc:'(umístí ukradené zvířátko do slotu základny)',
sniper_auto_drop:'Automaticky upustit neodpovídající mazlíčky ve Vlnách',
sniper_drop_desc:'(upustí divoké mazlíčky, které neodpovídají filtru, aby se obnovil spawn pool)',
sniper_auto_hunt:'Auto-lov',
sniper_hunt_desc:'(prohledává jiné místnosti, skočí k nejlepší shodě)',
sniper_auto_sell:'Auto-prodej v Kradení',
sniper_sell_desc:'(prodat nejhoršího, když je základna plná)',
sniper_lockdown:'Zamčení ≤',
sniper_lockdown_hint:'Krást cíle ze základen s ≤ tímto časem. 0 = pouze odemčené.',
sniper_join_grace:'Připojte se k milosti',
sniper_start:'Spustit odstřelovače',
sniper_stop:'Zastavit odstřelovače',
sniper_idle:'Nečinný',
sniper_no_filter:'Filtr nenastaven',
sniper_waiting:'Čekání na hru...',
sniper_hold_pause:'Držíme mazlíčka — pauza',
sniper_stolen_pause:'má našeho mazlíčka — pauza',
sniper_cooldown:'Přebíjení',
sniper_hopping:'Změna serveru...',
sniper_na:'Odstřelovač nedostupný v lobby — nejdřív se připojte ke hře',
sniper_wait_lock:'Čekání na data zamčení...',
sniper_locked:'Základna zamčena — přeskakuji...',
sniper_full_eggs:'Základna plná — pouze vejce, nelze prodat',
sniper_stealing:'Krademe',
sniper_dropped:'Puštěno',
sniper_holding:'Držíme',
sniper_place:'! Umísti na základnu.',
sniper_steal_mode:'[Kradení]',
sniper_theft_nohop:'Mazlíčka krade',
sniper_nohop_suffix:'— bez přeskoku',
sniper_sniping:'Lovíme:',
sniper_options:'Možnosti',
sniper_drop_fail_status:'Puštění selhalo!',
sniper_hotkey_label:'Klávesová zkratka:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Uchopení selhalo. Opakuji...',
sniper_our_pet_stolen:'Náš mazlíček ukraden — 8s přebíjení',
sniper_hopping_short:'Přeskakuji...',
sniper_base_full:'Základna plná',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleportovat se',
pet_pickup_title:'vyzvednout',
owner_yours:'Váš',
owner_wild:'Divoký',
footer_gf:'Mastná vidlička',
copy_ok:'Zkopírováno',
copy_failed:'Kopírování se nezdařilo',
s_invis_on_fly:'Neviditelnost při letu',
snipe_walk_home:'Jít domů po krádeži',
snipe_walk_home_desc:'Vrátit se pěšky na základnu',
sniper_afk_sell:'AFK prodej neodpovídajících mazlíčků',
sniper_afk_sell_desc:'(při nečinnosti 5s, prodej zvířátka neodpovídající filtru podle hodnoty — pouze vlny)',
hb_fly:'LÉT',
hb_lck:'ZÁM',
hb_inv:'NEV',
hb_cud:'OBJ',
hb_pet:'ZVÍ',
hb_snp:'SNI',
hb_cfg:'NAS',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ÚČT',
ban_title:'Připojení zablokováno',
ban_sub:'Vaše IP adresa byla omezena službou Meeland',
ban_body:'Nemějte obavy — to se snadno vyřeší! Bezplatná VPN vám dá novou IP adresu, abyste mohli znovu hrát.',
ban_pick:'Rychlá oprava — vyberte si jednu:',
ban_warp:'zdarma, neomezená, nastavení jedním kliknutím',
ban_warp_store:'k dispozici také v App Store a Play Store jako "1.1.1.1"',
ban_proton:'bez datového limitu, 5 zemí',
ban_steps:'Nainstalujte → připojte se → obnovte tuto stránku. To je vše!',
ban_ok:'Rozumím',
warn_title:'Vždy používejte VPN',
warn_body:'Vždy hrajte se zapnutým <b>VPN</b>.',
warn_ok:'Rozumím',
loading:'Načítání',
tcl_loading:'Probíhá plná smyčka věže. Stiskněte {key} pro zastavení.',
hop_search:'Hledám zápas',
hop_match:'Nalezen {name} — připojování',
hop_flee:'Útěk před vetřelcem',
hop_reconnect:'Opětovné připojování',
hop_reload:'Znovu načítávání',
hop_fall:'Zotavení po pádu',
hop_join:'Připojování do místnosti',
lock_off:'VYP',
lock_unlocked:'ODEMČENO',
desc_intro:'MES vám nabízí wallhack, autofarming, sbírku vzácných mazlíčků, zvýšení rychlosti, let, neviditelnost a další v Meelandu',
desc_free:'100% zdarma, navždy. Máte zpětnou vazbu? Zanechte ⭐ pozitivní recenzi — to je to, co udržuje aktualizace.',
desc_h_movement:'Pohyb',
desc_h_combat:'Boj',
desc_h_tuning:'Ladění',
desc_h_pets:'Mazlíčci & Krádež',
desc_h_economy:'Ekonomika',
desc_h_custom:'Přizpůsobení',
desc_h_extras:'Doplňky',
desc_fly:'Létání',
desc_fly_d:'Space nahoru, F dolů. Rychlost nastavitelná.',
desc_speed:'Blikat',
desc_speed_d:'Shift pro okamžitý teleport.',
desc_noclip:'Průchod zdmi',
desc_noclip_d:'Procházejte zdmi.',
desc_walls:'Chůze po Zdech',
desc_walls_d:'Šplhej po jakémkoli povrchu.',
desc_waypts:'Trasové body',
desc_waypts_d:'Uložte 10 pozic. Teleport jednou klávesou. <kbd>Z</kbd> pro přepnutí.',
desc_invis:'Neviditelný',
desc_invis_d:'Stiskni CapsLock pro úplné zmizení.',
desc_fpv:'FPV',
desc_fpv_d:'Stiskni <kbd>.</kbd> pro přepnutí kamery první osoby.',
desc_anti_invis:'Anti-neviditelnost',
desc_anti_invis_d:'Vidíte neviditelné hráče jako duchy.',
desc_xray:'Rentgenové Vidění',
desc_xray_d:'Vidět hráče skrz zdi v Záhadě Vraždy. Červená = vrah, zelená = civilista.',
desc_nodeathh:'Nesmrtelný',
desc_nodeath_d:'Imunita vůči veškerému poškození.',
desc_antikb:'Anti-odhození',
desc_antikb_d:'Nemůžeš být strčen.',
desc_attack:'Okamžitý útok',
desc_attack_d:'<kbd>G</kbd> teleportuje k nejbližšímu hráči a udeří.',
desc_jumpgrav:'Skok a Gravitace',
desc_jumpgrav_d:'Nastavitelné násobiče v Nastavení.',
desc_fov:'Ovládání FOV',
desc_fov_d:'Posuvníky FOV pro první a třetí osobu.',
desc_autoinvis:'Auto-Neviditelnost při Letu',
desc_autoinvis_d:'Při letu se automaticky staneš neviditelným.',
desc_sniper:'Odstřelovač mazlíčků',
desc_sniper_d:'Automatická krádež filtrovaných mazlíčků. Oba režimy.',
desc_prv:'Soukromá místnost',
desc_prv_d:'<kbd>PgDn</kbd> vytvoří soukromou místnost v aktuálním režimu a automaticky se připojí.',
desc_petbrow:'Prohlížeč mazlíčků',
desc_petbrow_d:'<kbd>K</kbd> zobrazí všechny mazlíčky. Řadit, filtrovat, chytit.',
desc_cuddle:'Panel mazlení',
desc_cuddle_d:'<kbd>J</kbd> seznam hráčů podle vzdálenosti. Klikněte pro sledování.',
desc_return:'Automatický Návrat',
desc_return_d:'Teleportuje domů po krádeži.',
desc_autolock:'Auto-zamčení',
desc_autolock_d:'Základna vždy zamčená.',
desc_fountain:'Auto-fontána',
desc_fountain_d:'Trvalý zisk 1.5×. Automatické obnovení.',
desc_money:'Peníze zdarma + Hvězdy + Diamanty',
desc_money_d:'Bez reklam.',
desc_collect:'Automatický Sběr',
desc_collect_d:'Příjem z mazlíčků každých 30s.',
desc_music:'Hudba při přenosu',
desc_music_d:'Hudba během krádeže. 15 žánrů.',
desc_chatfade:'Zmizení chatu',
desc_chatfade_d:'Ovládej viditelnost zpráv. 5–120s.',
desc_emotes:'Letové emoty',
desc_emotes_d:'Náhodné emoty při létání.',
desc_displays:'Překryvy Obrazovky',
desc_displays_d:'Souřadnice, počítadlo FPS a info o cíli.',
desc_config:'Nastavení',
desc_config_d:'<kbd>M</kbd> pro přepínání funkcí, kláves, rychlostí.',
desc_langs:'60 Jazyků',
desc_langs_d:'Úplný překlad rozhraní.',
desc_tower:'Dokončit věž',
desc_tower_d:'<kbd>Y</kbd> pro okamžité dokončení Obby Tower.',
desc_cats:'Načítací obrazovky s kočkami',
desc_cats_d:'Roztomilé kočky nahrazují načítání.',
desc_h_install:'Instalace',
desc_desktop:'PC (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Nainstalujte <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> nebo <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klikněte na Instalovat výše',
desc_inst_open:'Otevřete jakoukoli hru Meeland — prostě funguje',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Nainstalujte <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox pro Android</a> z Play Store',
desc_mob_addon:'Otevřete Firefox → Nabídka → Doplňky → nainstalujte <strong>Tampermonkey</strong>',
desc_mob_visit:'Navštivte tuto stránku ve Firefoxu a klepněte na Instalovat',
desc_mob_play:'Hrajte Meeland — dotyková HUD tlačítka se zobrazí automaticky',
desc_ios:'iOS: Apple blokuje rozšíření prohlížeče ve všech iOS prohlížečích (včetně Firefoxu). Použijte desktopový prohlížeč nebo Android.',
desc_h_privacy:'Soukromí',
desc_privacy:'Pouze na straně klienta — žádná data neopustí váš prohlížeč'
});
_mk('ro','Română',{
close:'✕',
refresh:'↻',
go:'Du-te',
set:'Setează',
auto:'Auto',
empty:'gol',
help_title:'Ajutor',
players_title:'Jucători',
players_empty:'Nu au fost găsiți alți jucători',
settings_title:'Setări',
settings_reset:'Resetează',
tab_gameplay:'Joc',
tab_economy:'Economie',
tab_audio:'Audio',
tab_advanced:'Avansat',
tab_hud:'HUD',
tab_keys:'Taste',
tab_accounts:'Conturi',
acct_current:'Curent',
acct_new:'Nou',
acct_import:'Import',
acct_switch:'Comută',
acct_reload:'Reîncarcă',
acct_delete:'Șterge',
acct_cancel:'Anulează',
acct_empty:'Gol',
acct_token_ph:'Token',
acct_copy:'Copiază',
acct_export:'Export',
acct_rename:'Redenumește',
acct_save:'Salvează',
acct_name_len:'Numele trebuie să aibă 4-12 caractere',
acct_name_fail:'Redenumirea a eșuat',
acct_invalid:'Invalid',
acct_ready:'Cont pregătit. Închide Meeland, schimbă IP-ul, apoi reîncarcă.',
acct_ip_note:'Folosește mereu o VPN și schimbă IP-ul când schimbi contul.',
acct_howto:'1. Apasă Copiere pentru a copia linkul acestui cont.\n2. Într-un alt browser sau dispozitiv — sau cu un prieten — deschide MES.\n3. Apasă Import și lipește linkul.',
sh_movement:'Mișcare',
sh_defense:'Apărare',
sh_camera:'Cameră',
sh_overlays:'Suprapuneri',
sh_behaviour:'Comportament',
sh_buttons:'Butoane',
sh_language:'Limbă',
sh_chat:'Chat',
sh_waves:'Waves',
sh_steal_a_pet:'Fură un animal de companie',
sh_tower:'Tower',
sh_misc_multi:'Diverse (multi-mod)',
s_noclip:'Trece prin pereți',
s_fly:'Zbura',
s_fly_emotes:'Emote-uri de zbor',
s_base_speed:'Viteză de bază',
s_jump_mult:'Înălțimea săriturii',
s_grav_mult:'Gravitaţie',
s_walk_up_walls:'Merge sus pe ziduri',
s_carry_normalize:'Viteză de transport + Salt',
s_invincibility:'Invincibilitate',
s_anti_kb:'Anti-respingere',
s_invisible:'Invizibil',
s_xray_infection:'Raze X (Misterul Crimei)',
s_ghost_mode:'Mod fantomă',
s_flee_intruder:'Fugi dacă e un intrus',
s_first_person:'Vedere la persoana întâi',
s_fov_first_person:'FOV (1-a)',
s_fov_third_person:'FOV (3-a)',
s_fov_vertical_mult:'Multiplicator vertical FOV',
s_auto_lock:'Auto-blocare bază',
s_auto_fountain:'Auto-fântână (1.5×)',
s_daily_coins:'Monede zilnice',
s_stars:'Stele',
s_diamonds_tower:'Diamante (Turn)',
s_tower_loop:'Buclă de turn',
s_auto_roll_x25:'Roll auto x25 noroc',
s_auto_craft:'Craft automat',
s_auto_vip_sword:'Cumpără VIP automat',
s_auto_vip_waves:'Cumpără VIP automat (Valuri)',
s_direct_kill:'Spam ucideri direct',
s_direct_kill_rate:'Ritm de ucidere',
s_auto_buy_upgrades:'Upgrade-uri pentru Cumpărare automată',
s_boost_coins:'Upgrade automat: monede',
s_boost_diamonds:'Upgrade automat: diamante',
s_boost_luck:'Upgrade automat: noroc',
s_auto_unlock_areas:'Zone de deblocare automată',
s_auto_rebirth:'Renaștere automată',
s_auto_join_tp:'Teleportați în zona cea mai înaltă',
s_hide_kill_rewards:'Ascunde recompensele uciderii',
s_hide_roll_anim:'Ascunde animația rolului',
rng_title:'Trucuri RNG pentru animale de companie',
rng_sec_rolling:'Rulare',
rng_sec_crafting:'Meșteșuguri',
rng_sec_combat:'Luptă',
rng_sec_upgrades:'Upgrade-uri',
rng_sec_areas:'Zone',
rng_actions:'Acțiuni',
log_craft:'Meșteșuguri',
log_success:'SUCCES',
log_fail:'eșuează',
log_unlocking_area:'Zona de deblocare',
log_area_unlocked:'Zona deblocată',
log_equipped:'Echipat',
log_bought_upgrade:'Upgrade cumpărat',
log_teleported_to:'Teleportat la',
log_rebirthing:'Renaștere',
h_rng:'rng',
h_accts:'Conturi',
s_auto_collect:'Auto-colectare câștiguri',
s_collect_interval:'Interval de colectare',
s_chat_fade:'Timp de estompare chat',
s_name_colors:'Culorile numelor de utilizator',
s_chat_enhance:'Îmbunătățiri chat',
mes_hint:'Sfat: includeți "mes" în numele de utilizator pentru un efect animat de curcubeu!',
s_carry_tune:'Melodie de transport (Furt)',
s_pet_pickup_radius:'Raza de Furt Animal',
s_carry_vol:'Volum de transport',
carry_tune_default:'Implicit',
carry_tune_silent:'Liniștit',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Clasică',
carry_tune_electronic:'Electronică',
carry_tune_epic:'Epică',
carry_tune_folk:'Folk',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metal',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'stâncă',
s_cont_cuddle:'Îmbrățișare continuă',
s_protips:'Sfaturi Pro',
s_hideprotips:'Ascunde sfaturile mele Pro',
s_show_exp_modes:'Afișează modurile experimentale',
s_showcoords:'Afișează coordonate',
s_showfps:'Arată FPS',
s_showtargetinfo:'Afișare informații țintă',
s_showobj:'Afișează Entitatea/Numărul de rețele',
s_copy_dbg:'Copiați jurnalele de depanare',
s_copy_json:'Copiați JSON',
s_clear_dbg:'Golește',
h_fly:'Zbor',
h_speed:'Hack de viteză',
h_waypoints:'Puncte de reper',
h_autolock:'Auto-blocare',
h_invisible:'Invizibil',
h_cuddle:'Îmbrățișare',
h_pets:'Animale',
h_snipe:'Lunetist',
h_help:'Ajutor',
h_settings:'Setări',
h_prv:'Cameră Privată',
h_tc:'Completează turnul',
h_tcl:'Buclă de turn',
kb_fly:'Zbor (comutare/sus)',
kb_fly_down:'Zbor în jos',
kb_set_home:'Setează acasă',
kb_home:'Acasă',
kb_back:'Înapoi',
kb_cuddle:'Panou de îmbrățișare',
kb_settings:'Setări',
kb_pets:'Explorator animale',
kb_slots:'Sloturi puncte de reper',
kb_snipe:'Panou lunetist',
kb_snipe_toggle:'Lunetist Pornit/Oprit',
kb_attack:'Atacă',
kb_help:'Ajutor / Descriere',
kb_tower:'Completează turnul',
kb_tower_loop:'Buclă de turn',
kb_invisible:'Invizibil',
kb_first_person:'Persoana întâi',
kb_autolock:'Bază de blocare automată',
kb_prv:'Cameră Privată',
kb_rng:'RNG',
kb_accts:'Conturi',
pets_title:'Animale',
pets_search_placeholder:'de ex. pisicuta salbatica, auriu SAU diamant, (aur SAU smarald) salbatica',
pets_hint:'Cuvintele se combină cu ȘI. Folosește OR pentru alternative, paranteze pentru grupare. * sau % ca wildcard. Pune - înaintea unui cuvânt pentru a-l exclude.',
pets_empty:'Nu au fost găsite animale în această cameră',
pt_name:'Nume',
pt_mut:'Mutație',
pt_rar:'Raritate',
pt_owner:'Proprietar',
pt_worth:'Valoare',
pt_income:'Venit/s',
pt_dist:'Dist',
slots_title:'Sloturi puncte de reper',
sniper_title:'Lunetist de animale',
sniper_tbl_pet:'Animal de companie',
sniper_tbl_owner:'Proprietar',
sniper_tbl_lock:'Blocare',
sniper_placeholder:'ex. halo, auriu OR diamant, dragon smarald',
sniper_hint:'Cuvintele se combină cu ȘI. Folosește OR pentru alternative, paranteze pentru grupare. * sau % ca wildcard. Pune - înaintea unui cuvânt pentru a-l exclude.',
sniper_room_col:'Cameră',
sniper_scans_col:'Scanări',
sniper_top_pet_col:'animal de companie de top',
sniper_top_worth_col:'valoare maximă',
sniper_top_owner_col:'Proprietar de top',
sniper_age_col:'Vârstă',
sniper_join_btn:'Alătură-te',
sniper_full:'Plin',
sniper_join_failed:'Camera țintă plină',
sniper_scanning_rooms:'Caut alte camere…',
sniper_scan_off:'Dezactivare automată',
sniper_scan_next:'Următoarea scanare',
sniper_scan_idle:'Inactiv — în așteptarea scanării',
sniper_auto_place:'Plasare automată pe bază',
sniper_place_desc:'(plasează animalul furat în slotul tău de bază)',
sniper_auto_drop:'Eliberează automat animalele nepotrivite în Valuri',
sniper_drop_desc:'(eliberează animalele sălbatice care nu se potrivesc filtrului pentru a reîmprospăta pool-ul de spawn)',
sniper_auto_hunt:'Vânătoare automată',
sniper_hunt_desc:'(scanează alte camere, sare la cea mai bună potrivire)',
sniper_auto_sell:'Auto-vânzare în Furt',
sniper_sell_desc:'(vinde cel mai slab când baza e plină)',
sniper_lockdown:'Blocare ≤',
sniper_lockdown_hint:'Fură ținte din baze cu ≤ acest timp rămas. 0 = doar deblocate.',
sniper_join_grace:'Alătură-te grației',
sniper_start:'Pornește lunetistul',
sniper_stop:'Oprește lunetistul',
sniper_idle:'Inactiv',
sniper_no_filter:'Niciun filtru setat',
sniper_waiting:'Se așteaptă jocul...',
sniper_hold_pause:'Ținem un animal — pauză',
sniper_stolen_pause:'are animalul nostru — pauză',
sniper_cooldown:'Reîncărcare',
sniper_hopping:'Schimbare server...',
sniper_na:'Lunetist indisponibil în lobby — intră mai întâi într-un joc',
sniper_wait_lock:'Se așteaptă datele de blocare...',
sniper_locked:'Bază blocată — se sare...',
sniper_full_eggs:'Bază plină — doar ouă, nu se poate vinde',
sniper_stealing:'Se fură',
sniper_dropped:'Eliberat',
sniper_holding:'Ținem',
sniper_place:'! Plasează în bază.',
sniper_steal_mode:'[Furt]',
sniper_theft_nohop:'Animalul e furat de',
sniper_nohop_suffix:'— fără salt',
sniper_sniping:'Vânăm:',
sniper_options:'Opțiuni',
sniper_drop_fail_status:'Eliberare eșuată!',
sniper_hotkey_label:'Tastă rapidă:',
sniper_panel_label:'Panou:',
sniper_grab_fail:'Prindere eșuată. Se reîncearcă...',
sniper_our_pet_stolen:'Animalul nostru furat — 8s reîncărcare',
sniper_hopping_short:'Se sare...',
sniper_base_full:'Baza plină',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleportați',
pet_pickup_title:'Ridica',
owner_yours:'A ta',
owner_wild:'Sălbatic',
footer_gf:'Furculiță grasă',
copy_ok:'Copiat',
copy_failed:'Copiere eșuată',
s_invis_on_fly:'Invizibil la zbor',
snipe_walk_home:'Mers acasă după furt',
snipe_walk_home_desc:'Întoarce-te pe jos la bază',
sniper_afk_sell:'AFK vinde animalele nepotrivite',
sniper_afk_sell_desc:'(când inactiv 5s, vinde animalele care nu se potrivesc filtrului după valoare — doar valuri)',
hb_fly:'ZBR',
hb_lck:'BLC',
hb_inv:'INV',
hb_cud:'ÎMB',
hb_pet:'ANI',
hb_snp:'LUN',
hb_cfg:'SET',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'CTR',
ban_title:'Conexiune blocată',
ban_sub:'Adresa ta IP a fost restricționată de Meeland',
ban_body:'Nu-ți face griji — e ușor de rezolvat! Un VPN gratuit îți va oferi un IP nou ca să poți juca din nou.',
ban_pick:'Rezolvare rapidă — alege unul:',
ban_warp:'gratuit, nelimitat, configurare cu un singur clic',
ban_warp_store:'disponibil și în App Store și Play Store ca "1.1.1.1"',
ban_proton:'fără limită de date, 5 țări',
ban_steps:'Instalează → conectează-te → reîncarcă pagina. Asta e tot!',
ban_ok:'Am înțeles',
warn_title:'Folosește mereu un VPN',
warn_body:'Joacă mereu cu <b>VPN</b> activat.',
warn_ok:'Am înțeles',
loading:'Se încarcă',
tcl_loading:'Se execută bucla completă a turnului. Apăsați {key} pentru a opri.',
hop_search:'Se caută o partidă',
hop_match:'Găsit {name} — se alătură',
hop_flee:'Fugă de un intrus',
hop_reconnect:'Reconectare',
hop_reload:'Reîncărcare',
hop_fall:'Recuperare după cădere',
hop_join:'Se intră în cameră',
lock_off:'OPRIT',
lock_unlocked:'DEBLOCAT',
desc_intro:'MES vă oferă wallhack, fermă automată, colecție de animale rare, creșterea vitezei, zbor, invizibilitate și multe altele în Meeland',
desc_free:'100% gratuit, mereu. Ai feedback? Lasă o ⭐ recenzie pozitivă — asta menține actualizările.',
desc_h_movement:'Mișcare',
desc_h_combat:'Luptă',
desc_h_tuning:'Reglare Fină',
desc_h_pets:'Animale & Furt',
desc_h_economy:'Economie',
desc_h_custom:'Personalizare',
desc_h_extras:'Extra',
desc_fly:'Zbor',
desc_fly_d:'Space pentru urcare, F pentru coborâre. Viteză ajustabilă.',
desc_speed:'Clipi',
desc_speed_d:'Shift pentru teleportare instantanee.',
desc_noclip:'Trece prin pereți',
desc_noclip_d:'Treci prin pereți.',
desc_walls:'Mers pe Pereți',
desc_walls_d:'Urcă pe orice suprafață.',
desc_waypts:'Puncte de reper',
desc_waypts_d:'Salvează 10 poziții. Teleportare cu o tastă. <kbd>Z</kbd> pentru comutare.',
desc_invis:'Invizibil',
desc_invis_d:'Apasă CapsLock pentru a dispărea complet.',
desc_fpv:'FPV',
desc_fpv_d:'Apasă <kbd>.</kbd> pentru a comuta camera la persoana întâi.',
desc_anti_invis:'Anti-invizibilitate',
desc_anti_invis_d:'Vezi jucătorii invizibili ca fantome.',
desc_xray:'Vedere cu Raze X',
desc_xray_d:'Vedeți jucătorii prin pereți în Misterul Crimei. Roșu = criminal, verde = civil.',
desc_nodeathh:'Invincibil',
desc_nodeath_d:'Imun la toate daunele.',
desc_antikb:'Anti-respingere',
desc_antikb_d:'Nu poți fi împins.',
desc_attack:'Atac instantaneu',
desc_attack_d:'<kbd>G</kbd> teleportează la cel mai apropiat jucător și lovește.',
desc_jumpgrav:'Săritură și Gravitație',
desc_jumpgrav_d:'Multiplicatori ajustabili în Setări.',
desc_fov:'Control FOV',
desc_fov_d:'Glisoare FOV persoana întâi și a treia.',
desc_autoinvis:'Auto-Invizibil la Zbor',
desc_autoinvis_d:'Devino invizibil automat când zbori.',
desc_sniper:'Lunetist de animale',
desc_sniper_d:'Furt automat de animale filtrate. Ambele moduri.',
desc_prv:'Cameră Privată',
desc_prv_d:'<kbd>PgDn</kbd> creează o cameră privată în modul curent și se alătură automat.',
desc_petbrow:'Explorator animale',
desc_petbrow_d:'<kbd>K</kbd> arată toate animalele. Sortează, filtrează, ia.',
desc_cuddle:'Panou de îmbrățișare',
desc_cuddle_d:'<kbd>J</kbd> listează jucătorii după distanță. Click pentru urmărire.',
desc_return:'Revenire Automată',
desc_return_d:'Teleportare acasă după furt.',
desc_autolock:'Auto-blocare',
desc_autolock_d:'Baza mereu blocată.',
desc_fountain:'Auto-fântână',
desc_fountain_d:'Profit permanent 1.5×. Reînnoire automată.',
desc_money:'Bani gratis + Stele + Diamante',
desc_money_d:'Fără reclame.',
desc_collect:'Colectare Automată',
desc_collect_d:'Venit animale la fiecare 30s.',
desc_music:'Muzică de transport',
desc_music_d:'Muzică în timpul furtului. 15 genuri.',
desc_chatfade:'Disp. chat',
desc_chatfade_d:'Controlează vizibilitatea mesajelor. 5–120s.',
desc_emotes:'Emote de zbor',
desc_emotes_d:'Emote aleatorii în timpul zborului.',
desc_displays:'Suprapuneri Afișaj',
desc_displays_d:'Coordonate, contor FPS și info țintă.',
desc_config:'Setări',
desc_config_d:'<kbd>M</kbd> pentru funcții, taste, viteze.',
desc_langs:'60 Limbi',
desc_langs_d:'Traducere completă a interfeței.',
desc_tower:'Completează turnul',
desc_tower_d:'<kbd>Y</kbd> pentru victorie instantanee la Obby Tower.',
desc_cats:'Ecrane de încărcare cu pisici',
desc_cats_d:'Pisici drăguțe înlocuiesc încărcarea.',
desc_h_install:'Instalare',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Instalează <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> sau <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Click pe Instalare mai sus',
desc_inst_open:'Deschide orice joc Meeland — pur și simplu funcționează',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Instalează <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox pentru Android</a> din Play Store',
desc_mob_addon:'Deschide Firefox → Meniu → Suplimente → instalează <strong>Tampermonkey</strong>',
desc_mob_visit:'Vizitează această pagină în Firefox și atinge Instalare',
desc_mob_play:'Joacă Meeland — butoanele HUD tactile apar automat',
desc_ios:'iOS: Apple blochează extensiile de browser în toate browserele iOS (inclusiv Firefox). Folosește un browser desktop sau Android.',
desc_h_privacy:'Confidențialitate',
desc_privacy:'Doar pe partea clientului — niciun fel de date nu părăsește browserul tău'
});
_mk('bg','Български',{
close:'✕',
refresh:'↻',
go:'Отиди',
set:'Задай',
auto:'Авто',
empty:'празно',
help_title:'Помощ',
players_title:'Играчи',
players_empty:'Не са намерени други играчи',
settings_title:'Настройки',
settings_reset:'Нулиране',
tab_gameplay:'Геймплей',
tab_economy:'Икономика',
tab_audio:'Аудио',
tab_advanced:'Разширени',
tab_hud:'HUD',
tab_keys:'Клавиши',
tab_accounts:'Акаунти',
acct_current:'Текущ',
acct_new:'Нов',
acct_import:'Импорт',
acct_switch:'Превключи',
acct_reload:'Презареди',
acct_delete:'Изтрий',
acct_cancel:'Отмени',
acct_empty:'Празно',
acct_token_ph:'Токен',
acct_copy:'Копирай',
acct_export:'Експорт',
acct_rename:'Преименувай',
acct_save:'Запази',
acct_name_len:'Името трябва да е 4-12 знака',
acct_name_fail:'Преименуването не успя',
acct_invalid:'Невалиден',
acct_ready:'Акаунтът е готов. Затвори Meeland, смени IP, после презареди.',
acct_ip_note:'Винаги използвай VPN и сменяй IP при смяна на акаунт.',
acct_howto:'1. Натиснете Копиране, за да копирате линка на този акаунт.\n2. В друг браузър или устройство — или с приятел — отворете MES.\n3. Натиснете Импортиране и поставете линка.',
sh_movement:'Движение',
sh_defense:'Защита',
sh_camera:'Камера',
sh_overlays:'Наслагвания',
sh_behaviour:'Поведение',
sh_buttons:'Бутони',
sh_language:'Език',
sh_chat:'Чат',
sh_waves:'Waves',
sh_steal_a_pet:'Открадни домашен любимец',
sh_tower:'Tower',
sh_misc_multi:'Разни (мултирежим)',
s_noclip:'Без сблъсък',
s_fly:'лети',
s_fly_emotes:'Емоции при летене',
s_base_speed:'Базова скорост',
s_jump_mult:'Височина на скок',
s_grav_mult:'Гравитация',
s_walk_up_walls:'Разходете се по стените',
s_carry_normalize:'Скорост на носене + скок',
s_invincibility:'Неуязвимост',
s_anti_kb:'Анти-отблъскване',
s_invisible:'Невидим',
s_xray_infection:'Рентген (Мистерия на Убийството)',
s_ghost_mode:'Режим призрак',
s_flee_intruder:'Бягай при натрапник',
s_first_person:'Изглед от първо лице',
s_fov_first_person:'FOV (1-во л.)',
s_fov_third_person:'FOV (3-то л.)',
s_fov_vertical_mult:'FOV вертикален множител',
s_auto_lock:'Авто-заключване на база',
s_auto_fountain:'Авто-фонтан (1.5×)',
s_daily_coins:'Дневни монети',
s_stars:'Звезди',
s_diamonds_tower:'Диаманти (Кула)',
s_tower_loop:'Цикъл на кулата',
s_auto_roll_x25:'Авто рол x25 късмет',
s_auto_craft:'Авто-крафт',
s_auto_vip_sword:'Автоматично VIP',
s_auto_vip_waves:'Автоматично VIP (Вълни)',
s_direct_kill:'Директен спам убийства',
s_direct_kill_rate:'Скорост на убиване',
s_auto_buy_upgrades:'Автоматично купуване на надстройки',
s_boost_coins:'Автоматично надграждане: монети',
s_boost_diamonds:'Автоматично надграждане: Диаманти',
s_boost_luck:'Автоматично надграждане: късмет',
s_auto_unlock_areas:'Автоматично отключване на зони',
s_auto_rebirth:'Автоматично прераждане',
s_auto_join_tp:'Телепортирайте се до най-високата зона',
s_hide_kill_rewards:'Скриване на наградите за убийство',
s_hide_roll_anim:'Скриване на анимацията на въртене',
rng_title:'Домашни любимци RNG кодове',
rng_sec_rolling:'Търкаляне',
rng_sec_crafting:'Занаятчийство',
rng_sec_combat:'Борба',
rng_sec_upgrades:'Надстройки',
rng_sec_areas:'Области',
rng_actions:'Действия',
log_craft:'Занаят',
log_success:'УСПЕХ',
log_fail:'НЕУСПЕХ',
log_unlocking_area:'Зона за отключване',
log_area_unlocked:'Зоната е отключена',
log_equipped:'Оборудвана',
log_bought_upgrade:'Купен ъпгрейд',
log_teleported_to:'Телепортиран до',
log_rebirthing:'Прераждане',
h_rng:'rng',
h_accts:'Акаунти',
s_auto_collect:'Авто-събиране на печалби',
s_collect_interval:'Интервал на събиране',
s_chat_fade:'Време на изчезване на чата',
s_name_colors:'Цветове на потребителските имена',
s_chat_enhance:'Подобрения на чата',
mes_hint:'Съвет: добавете "mes" в потребителското си име за анимиран ефект на дъгата!',
s_carry_tune:'Мелодия при пренасяне (Кражба)',
s_pet_pickup_radius:'Радиус на Кражба на Животно',
s_carry_vol:'Сила на звука при пренасяне',
carry_tune_default:'По подразбиране',
carry_tune_silent:'Тихо',
carry_tune_ambient:'Амбиент',
carry_tune_blues:'Блус',
carry_tune_chiptune:'Чиптюн',
carry_tune_classical:'Класическа',
carry_tune_electronic:'Електронна',
carry_tune_epic:'Епична',
carry_tune_folk:'Фолк',
carry_tune_funk:'Фанк',
carry_tune_jazz:'Джаз',
carry_tune_lofi:'Ло-Фай',
carry_tune_metal:'Метал',
carry_tune_pop:'Поп',
carry_tune_punk:'Пънк',
carry_tune_reggae:'Реги',
carry_tune_rock:'Рок',
s_cont_cuddle:'Непрекъснато гушкане',
s_protips:'Про съвети',
s_hideprotips:'Скрий моите Про съвети',
s_show_exp_modes:'Покажи експерименталните режими',
s_showcoords:'Покажи координати',
s_showfps:'Показване на FPS',
s_showtargetinfo:'Показване на информация за целта',
s_showobj:'Показване на обект / Брой мрежи',
s_copy_dbg:'Копирай Debug логове',
s_copy_json:'Копирай JSON',
s_clear_dbg:'Изчисти',
h_fly:'Летене',
h_speed:'Хак на скоростта',
h_waypoints:'Маршрутни точки',
h_autolock:'Авто-заключване',
h_invisible:'Невидим',
h_cuddle:'Гушкане',
h_pets:'Любимци',
h_snipe:'Снайпер',
h_help:'Помощ',
h_settings:'Настройки',
h_prv:'Частна стая',
h_tc:'Завърши кулата',
h_tcl:'Цикъл на кулата',
kb_fly:'Летене (превключване)',
kb_fly_down:'Летене надолу',
kb_set_home:'Задай дом',
kb_home:'Дом',
kb_back:'Назад',
kb_cuddle:'Панел за гушкане',
kb_settings:'Настройки',
kb_pets:'Браузър за любимци',
kb_slots:'Слотове за маршрутни точки',
kb_snipe:'Панел на снайпера',
kb_snipe_toggle:'Снайпер Вкл/Изкл',
kb_attack:'Атакувай най-близкия',
kb_help:'Помощ',
kb_tower:'Завърши кулата',
kb_tower_loop:'Цикъл на кулата',
kb_invisible:'Невидим',
kb_first_person:'Първо лице',
kb_autolock:'Основа с автоматично заключване',
kb_prv:'Частна стая',
kb_rng:'RNG',
kb_accts:'Акаунти',
pets_title:'Любимци',
pets_search_placeholder:'напр. диво коте, златно ИЛИ диамант, (златисто ИЛИ изумрудено) диво',
pets_hint:'Думите се комбинират с И. Използвай OR за алтернативи, скоби за групиране. * или % като заместител. Поставете - пред дума, за да я изключите.',
pets_empty:'Не са намерени любимци',
pt_name:'Име',
pt_mut:'Мутация',
pt_rar:'Рядкост',
pt_owner:'Собственик',
pt_worth:'Стойност',
pt_income:'Доход/с',
pt_dist:'Разст',
slots_title:'Слотове за маршрутни точки',
sniper_title:'Снайпер за любимци',
sniper_tbl_pet:'домашен любимец',
sniper_tbl_owner:'Собственик',
sniper_tbl_lock:'Заключване',
sniper_placeholder:'напр. halo, golden OR diamond, emerald dragon',
sniper_hint:'Думите се комбинират с И. Използвай OR за алтернативи, скоби за групиране. * или % като заместител. Поставете - пред дума, за да я изключите.',
sniper_room_col:'Стая',
sniper_scans_col:'Сканира',
sniper_top_pet_col:'Топ домашен любимец',
sniper_top_worth_col:'Топ Уърт',
sniper_top_owner_col:'Топ собственик',
sniper_age_col:'Възраст',
sniper_join_btn:'Присъедини се',
sniper_full:'Пълен',
sniper_join_failed:'Целевата стая е пълна',
sniper_scanning_rooms:'Търся други стаи…',
sniper_scan_off:'Автоматичното преследване е изключено',
sniper_scan_next:'Следващото сканиране в',
sniper_scan_idle:'Неактивен — чака сканиране',
sniper_auto_place:'Авто-поставяне на базата',
sniper_place_desc:'(поставя откраднатото животно в слота на базата)',
sniper_auto_drop:'Автоматично пускане на несъвпадащи любимци във Вълните',
sniper_drop_desc:'(пуска диви любимци, които не съвпадат с филтъра, за да обнови спаун пула)',
sniper_auto_hunt:'Автоматичен лов',
sniper_hunt_desc:'(сканира други стаи, скача към най-доброто съвпадение)',
sniper_auto_sell:'Авто-продажба при Кражба',
sniper_sell_desc:'(продава най-слабия когато базата е пълна)',
sniper_lockdown:'Заключване ≤',
sniper_lockdown_hint:'Краде цели от бази с ≤ това оставащо време. 0 = само отключени.',
sniper_join_grace:'Присъединете се към благодатта',
sniper_start:'Старт',
sniper_stop:'Стоп',
sniper_idle:'Неактивен',
sniper_no_filter:'Няма филтър',
sniper_waiting:'Изчакване на игра...',
sniper_hold_pause:'Държи любимец — на пауза',
sniper_stolen_pause:'има нашия любимец — на пауза',
sniper_cooldown:'Охлаждане',
sniper_hopping:'Смяна на сървър...',
sniper_na:'Снайперът не е наличен в лобито',
sniper_wait_lock:'Изчакване за данни за заключване...',
sniper_locked:'Базата е заключена — пропускане...',
sniper_full_eggs:'Базата е пълна — само яйца, не може да се продаде',
sniper_stealing:'Крадене',
sniper_dropped:'Пуснат',
sniper_holding:'Държи',
sniper_place:'Постави в базата!',
sniper_steal_mode:'[Кражба]',
sniper_theft_nohop:'Любимец се краде от',
sniper_nohop_suffix:'— без прескачане',
sniper_sniping:'Снайпиране:',
sniper_options:'Опции',
sniper_drop_fail_status:'Пускането се провали!',
sniper_hotkey_label:'Бърз клавиш:',
sniper_panel_label:'Панел:',
sniper_grab_fail:'Хващането се провали. Повторен опит...',
sniper_our_pet_stolen:'Нашият любимец е откраднат — 8с охлаждане',
sniper_hopping_short:'Прескачане...',
sniper_base_full:'Базата е пълна',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'БЯГ',
pet_teleport_title:'Телепортиране',
pet_pickup_title:'Вземете',
owner_yours:'Вашите',
owner_wild:'Диво',
footer_gf:'Мазна вилица',
copy_ok:'Копирано',
copy_failed:'Неуспешно копиране',
s_invis_on_fly:'Невидим при летене',
snipe_walk_home:'Върви вкъщи след кражба',
snipe_walk_home_desc:'Върни се пеша до базата',
sniper_afk_sell:'AFK продавай несъвпадащи животни',
sniper_afk_sell_desc:'(когато неактивен 5с, продавай животни несъвпадащи с филтъра по стойност — само вълни)',
hb_fly:'ЛЕТ',
hb_lck:'ЗАКЛ',
hb_inv:'НЕВ',
hb_cud:'ПРГ',
hb_pet:'ДОМ',
hb_snp:'СНПР',
hb_cfg:'НСТР',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'АК',
ban_title:'Връзката е блокирана',
ban_sub:'Вашият IP адрес е ограничен от Meeland',
ban_body:'Не се притеснявайте — това лесно се оправя! Безплатен VPN ще ви даде нов IP, за да играете отново.',
ban_pick:'Бързо решение — изберете едно:',
ban_warp:'безплатен, неограничен, настройка с един клик',
ban_warp_store:'наличен и в App Store и Play Store като "1.1.1.1"',
ban_proton:'без лимит на данни, 5 държави',
ban_steps:'Инсталирайте → свържете се → презаредете страницата. Това е!',
ban_ok:'Разбрах',
warn_title:'Винаги използвайте VPN',
warn_body:'Винаги играйте с включен <b>VPN</b>.',
warn_ok:'Разбрах',
loading:'Зареждане',
tcl_loading:'Изпълнява се пълният цикъл на кулата. Натиснете {key}, за да спрете.',
hop_search:'Търсене на мач',
hop_match:'Намерен {name} — присъединяване',
hop_flee:'Бягство от натрапник',
hop_reconnect:'Повторно свързване',
hop_reload:'Презареждане',
hop_fall:'Възстановяване след падане',
hop_join:'Влизане в стаята',
lock_off:'ИЗКЛ',
lock_unlocked:'ОТКЛЮЧЕНО',
desc_intro:'MES ви дава wallhack, автоматично отглеждане, събиране на редки домашни любимци, повишаване на скоростта, полет, невидимост и много други в Meeland',
desc_free:'100% безплатно, завинаги. Имаш отзив? Остави ⭐ положителна рецензия — това поддържа обновленията.',
desc_h_movement:'Движение',
desc_h_combat:'Битка',
desc_h_tuning:'Настройка',
desc_h_pets:'Любимци & Кражба',
desc_h_economy:'Икономика',
desc_h_custom:'Персонализация',
desc_h_extras:'Допълнителни',
desc_fly:'Летене',
desc_fly_d:'Space нагоре, F надолу. Настройваема скорост.',
desc_speed:'Блинк',
desc_speed_d:'Shift за мигновен телепорт.',
desc_noclip:'Без сблъсък',
desc_noclip_d:'Минавай през стени.',
desc_walls:'Ходене по Стени',
desc_walls_d:'Катери всяка повърхност.',
desc_waypts:'Маршрутни точки',
desc_waypts_d:'Запази 10 позиции. Телепорт с един клавиш. <kbd>Z</kbd> за превключване.',
desc_invis:'Невидим',
desc_invis_d:'Натисни CapsLock за пълно изчезване.',
desc_fpv:'FPV',
desc_fpv_d:'Натисни <kbd>.</kbd> за превключване на камера от първо лице.',
desc_anti_invis:'Анти-невидимост',
desc_anti_invis_d:'Виж невидимите играчи като призраци.',
desc_xray:'Рентгеново Зрение',
desc_xray_d:'Вижте играчите през стените в Мистерия на Убийството. Червено = убиец, зелено = цивилен.',
desc_nodeathh:'Безсмъртен',
desc_nodeath_d:'Имунитет срещу всички щети.',
desc_antikb:'Анти-отблъскване',
desc_antikb_d:'Не можеш да бъдеш бутнат.',
desc_attack:'Мигновена атака',
desc_attack_d:'<kbd>G</kbd> телепортира до най-близкия играч и удря.',
desc_jumpgrav:'Скок и Гравитация',
desc_jumpgrav_d:'Регулируеми множители в Настройки.',
desc_fov:'Контрол на FOV',
desc_fov_d:'Плъзгачи за FOV от първо и трето лице.',
desc_autoinvis:'Авто-Невидим при Летене',
desc_autoinvis_d:'Ставаш невидим автоматично при летене.',
desc_sniper:'Снайпер за любимци',
desc_sniper_d:'Автоматична кражба на филтрирани любимци. И двата режима.',
desc_prv:'Частна стая',
desc_prv_d:'<kbd>PgDn</kbd> създава частна стая в текущия режим и се присъединява автоматично.',
desc_petbrow:'Браузър за любимци',
desc_petbrow_d:'<kbd>K</kbd> показва всички любимци. Сортирай, филтрирай, хвани.',
desc_cuddle:'Панел за гушкане',
desc_cuddle_d:'<kbd>J</kbd> списък на играчи по разстояние. Кликни за следване.',
desc_return:'Авто Връщане',
desc_return_d:'Телепортира вкъщи след кражба.',
desc_autolock:'Авто-заключване',
desc_autolock_d:'Базата винаги заключена.',
desc_fountain:'Авто-фонтан',
desc_fountain_d:'Постоянна печалба 1.5×. Автоматично подновяване.',
desc_money:'Безплатни пари + Звезди + Диаманти',
desc_money_d:'Без реклами.',
desc_collect:'Авто-Събиране',
desc_collect_d:'Приходи от любимци на всеки 30с.',
desc_music:'Музика при носене',
desc_music_d:'Музика докато крадеш. 15 жанра.',
desc_chatfade:'Изчезване на чат',
desc_chatfade_d:'Контролирай видимостта на съобщенията. 5–120с.',
desc_emotes:'Емоти при летене',
desc_emotes_d:'Случайни емоти при летене.',
desc_displays:'Екранни Наслагвания',
desc_displays_d:'Координати, брояч FPS и информация за целта.',
desc_config:'Настройки',
desc_config_d:'<kbd>M</kbd> за функции, клавиши, скорости.',
desc_langs:'60 Езика',
desc_langs_d:'Пълен превод на интерфейса.',
desc_tower:'Завършване на кулата',
desc_tower_d:'<kbd>Y</kbd> за мигновена победа в Obby Tower.',
desc_cats:'Екрани за зареждане с котки',
desc_cats_d:'Сладки котки заместват зареждането.',
desc_h_install:'Инсталиране',
desc_desktop:'Десктоп (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Инсталирай <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> или <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Кликни Инсталиране по-горе',
desc_inst_open:'Отвори която и да е игра на Meeland — просто работи',
desc_mobile:'Мобилен (Android)',
desc_mob_ff:'Инсталирай <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox за Android</a> от Play Store',
desc_mob_addon:'Отвори Firefox → Меню → Добавки → инсталирай <strong>Tampermonkey</strong>',
desc_mob_visit:'Посети тази страница във Firefox и натисни Инсталиране',
desc_mob_play:'Играй Meeland — сензорните HUD бутони се появяват автоматично',
desc_ios:'iOS: Apple блокира разширенията на браузъра във всички iOS браузъри (включително Firefox). Използвай десктоп или Android браузър.',
desc_h_privacy:'Поверителност',
desc_privacy:'Само от страна на клиента — никакви данни не напускат браузъра ти'
});
_mk('da','Dansk',{
close:'✕',
refresh:'↻',
go:'Gå',
set:'Sæt',
auto:'Auto',
empty:'tom',
help_title:'Hjælp',
players_title:'Spillere',
players_empty:'Ingen andre spillere fundet',
settings_title:'Indstillinger',
settings_reset:'Nulstil',
tab_gameplay:'Gameplay',
tab_economy:'Økonomi',
tab_audio:'Lyd',
tab_advanced:'Avanceret',
tab_hud:'HUD',
tab_keys:'Taster',
tab_accounts:'Konti',
acct_current:'Nuværende',
acct_new:'Ny',
acct_import:'Importer',
acct_switch:'Skift',
acct_reload:'Genindlæs',
acct_delete:'Slet',
acct_cancel:'Annuller',
acct_empty:'Tom',
acct_token_ph:'Token',
acct_copy:'Kopiér',
acct_export:'Eksportér',
acct_rename:'Omdøb',
acct_save:'Gem',
acct_name_len:'Navn skal være 4-12 tegn',
acct_name_fail:'Omdøbning mislykkedes',
acct_invalid:'Ugyldig',
acct_ready:'Konto klar. Luk Meeland, skift IP, derefter genindlæs.',
acct_ip_note:'Brug altid VPN og skift IP ved kontoskift.',
acct_howto:'1. Klik på Kopier for at kopiere denne kontoes link.\n2. Åbn MES i en anden browser eller enhed — eller hos en ven.\n3. Klik på Importer og indsæt linket.',
sh_movement:'Bevægelse',
sh_defense:'Forsvar',
sh_camera:'Kamera',
sh_overlays:'Overlays',
sh_behaviour:'Adfærd',
sh_buttons:'Knapper',
sh_language:'Sprog',
sh_chat:'Snak',
sh_waves:'Waves',
sh_steal_a_pet:'Stjæl et kæledyr',
sh_tower:'Tower',
sh_misc_multi:'Diverse (flere tilstande)',
s_noclip:'Gå gennem vægge',
s_fly:'Flyve',
s_fly_emotes:'Fly-emotes',
s_base_speed:'Basishastighed',
s_jump_mult:'Springhøjde',
s_grav_mult:'Alvor',
s_walk_up_walls:'Gå op ad vægge',
s_carry_normalize:'Bærehastighed + hop',
s_invincibility:'Udødelighed',
s_anti_kb:'Anti-knockback',
s_invisible:'Usynlig',
s_xray_infection:'Røntgen (Mordgåde)',
s_ghost_mode:'Spøgelsestilstand',
s_flee_intruder:'Flygt ved ubuden gæst',
s_first_person:'Førstepersonsvisning',
s_fov_first_person:'FOV (1. pers.)',
s_fov_third_person:'FOV (3. pers.)',
s_fov_vertical_mult:'FOV vertikal multiplikator',
s_auto_lock:'Auto-lås base',
s_auto_fountain:'Auto-fontæne (1.5×)',
s_daily_coins:'Daglige mønter',
s_stars:'Stjerner',
s_diamonds_tower:'Diamanter (Tårn)',
s_tower_loop:'Tårnløkke',
s_auto_roll_x25:'Auto-roll x25 held',
s_auto_craft:'Automatisk fremstilling',
s_auto_vip_sword:'Køb VIP automatisk',
s_auto_vip_waves:'Køb VIP automatisk (Bølger)',
s_direct_kill:'Direkte kill-spam',
s_direct_kill_rate:'Kill-rate',
s_auto_buy_upgrades:'Autokøb opgraderinger',
s_boost_coins:'Automatisk opgradering: Mønter',
s_boost_diamonds:'Automatisk opgradering: Diamanter',
s_boost_luck:'Automatisk opgradering: held',
s_auto_unlock_areas:'Automatisk oplåsning af områder',
s_auto_rebirth:'Auto genfødsel',
s_auto_join_tp:'Teleporter til højeste område',
s_hide_kill_rewards:'Skjul Kill-belønninger',
s_hide_roll_anim:'Skjul rulle-animation',
rng_title:'kæledyr rng snydekoder',
rng_sec_rolling:'Rullende',
rng_sec_crafting:'Håndværk',
rng_sec_combat:'Bekæmpe',
rng_sec_upgrades:'Opgraderinger',
rng_sec_areas:'Områder',
rng_actions:'Handlinger',
log_craft:'Håndværk',
log_success:'SUCCES',
log_fail:'SVIGTE',
log_unlocking_area:'Oplåsningsområde',
log_area_unlocked:'Område ulåst',
log_equipped:'Udstyret',
log_bought_upgrade:'Købt opgradering',
log_teleported_to:'Teleporteret til',
log_rebirthing:'Genfødsel',
h_rng:'rng',
h_accts:'Konti',
s_auto_collect:'Auto-indsaml indtjening',
s_collect_interval:'Indsamlingsinterval',
s_chat_fade:'Chat-fadetid',
s_name_colors:'Brugernavnsfarver',
s_chat_enhance:'Chatforbedringer',
mes_hint:'Tip: inkluder "mes" i dit brugernavn for en animeret regnbueeffekt!',
s_carry_tune:'Bæremelodie (Stjæling)',
s_pet_pickup_radius:'Kæledyr Stjæle Radius',
s_carry_vol:'Bærevolumen',
carry_tune_default:'Standard',
carry_tune_silent:'Stille',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassisk',
carry_tune_electronic:'Elektronisk',
carry_tune_epic:'Episk',
carry_tune_folk:'Folk',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metal',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Klippe',
s_cont_cuddle:'Kontinuerlig nusse',
s_protips:'Pro-tips',
s_hideprotips:'Skjul mine Pro-tips',
s_show_exp_modes:'Vis eksperimentelle moduser',
s_showcoords:'Vis koordinater',
s_showfps:'Vis FPS',
s_showtargetinfo:'Vis målinfo',
s_showobj:'Vis entitet / maskeantal',
s_copy_dbg:'Kopiér debug-logge',
s_copy_json:'Kopiér JSON',
s_clear_dbg:'Ryd',
h_fly:'Flyv',
h_speed:'Hastighedshack',
h_waypoints:'Rutepunkter',
h_autolock:'Auto-lås',
h_invisible:'Usynlig',
h_cuddle:'Nusse',
h_pets:'Kæledyr',
h_snipe:'Sniper',
h_help:'Hjælp',
h_settings:'Indstillinger',
h_prv:'Privat Rum',
h_tc:'Fuldfør tårn',
h_tcl:'Tårnløkke',
kb_fly:'Flyv (skift)',
kb_fly_down:'Flyv ned',
kb_set_home:'Sæt hjem',
kb_home:'Hjem',
kb_back:'Tilbage',
kb_cuddle:'Nussepanel',
kb_settings:'Indstillinger',
kb_pets:'Kæledyrsbrowser',
kb_slots:'Rutepunktsslots',
kb_snipe:'Sniperpanel',
kb_snipe_toggle:'Sniper til/fra',
kb_attack:'Angrib nærmeste',
kb_help:'Hjælp',
kb_tower:'Fuldfør tårn',
kb_tower_loop:'Tårnløkke',
kb_invisible:'Usynlig',
kb_first_person:'Førsteperson',
kb_autolock:'auto-lås base',
kb_prv:'Privat Rum',
kb_rng:'RNG',
kb_accts:'Konti',
pets_title:'Kæledyr',
pets_search_placeholder:'f.eks. vild killing, gylden ELLER diamant, (gylden ELLER smaragd) vild',
pets_hint:'Ord kombineres med OG. Brug OR for alternativer, parenteser til gruppering. * eller % som jokertegn. Sæt - foran et ord for at udelukke det.',
pets_empty:'Ingen kæledyr fundet',
pt_name:'Navn',
pt_mut:'Mutation',
pt_rar:'Sjældenhed',
pt_owner:'Ejer',
pt_worth:'Værdi',
pt_income:'Indkomst/s',
pt_dist:'Afst',
slots_title:'Rutepunktsslots',
sniper_title:'Kæledyrssniper',
sniper_tbl_pet:'Kæledyr',
sniper_tbl_owner:'Ejer',
sniper_tbl_lock:'Låse',
sniper_placeholder:'f.eks. halo, golden OR diamond, emerald dragon',
sniper_hint:'Ord kombineres med OG. Brug OR for alternativer, parenteser til gruppering. * eller % som jokertegn. Sæt - foran et ord for at udelukke det.',
sniper_room_col:'Rum',
sniper_scans_col:'Scanninger',
sniper_top_pet_col:'top kæledyr',
sniper_top_worth_col:'Top værd',
sniper_top_owner_col:'Topejer',
sniper_age_col:'Alder',
sniper_join_btn:'Deltag',
sniper_full:'Fuld',
sniper_join_failed:'Målrum fyldt',
sniper_scanning_rooms:'Søger andre rum…',
sniper_scan_off:'Automatisk jagt',
sniper_scan_next:'Næste scan ind',
sniper_scan_idle:'Inaktiv — venter på at scanne',
sniper_auto_place:'Auto-placér på base',
sniper_place_desc:'(placerer det stjålne kæledyr i din baseplads)',
sniper_auto_drop:'Auto-slip ikke-matchende kæledyr i Bølger',
sniper_drop_desc:'(slipper vilde kæledyr, der ikke matcher filteret, for at opdatere spawn-puljen)',
sniper_auto_hunt:'Auto-jagt',
sniper_hunt_desc:'(undersøger andre rum, hopper til det bedste match)',
sniper_auto_sell:'Auto-sælg ved Stjæl',
sniper_sell_desc:'(sælger laveste når basen er fuld)',
sniper_lockdown:'lockdown ≤',
sniper_lockdown_hint:'Stjæl mål på baser med ≤ denne resterende tid. 0 = kun ulåste.',
sniper_join_grace:'Slut dig til nåde',
sniper_start:'Start',
sniper_stop:'Stop',
sniper_idle:'Inaktiv',
sniper_no_filter:'Intet filter',
sniper_waiting:'Venter på spil...',
sniper_hold_pause:'Holder kæledyr — sat på pause',
sniper_stolen_pause:'har vores kæledyr — sat på pause',
sniper_cooldown:'Afkøling',
sniper_hopping:'Skifter server...',
sniper_na:'Sniper ikke tilgængelig i lobbyen',
sniper_wait_lock:'Venter på låsedata...',
sniper_locked:'Base låst — springer over...',
sniper_full_eggs:'Base fuld — kun æg, kan ikke sælge',
sniper_stealing:'Stjæler',
sniper_dropped:'Droppet',
sniper_holding:'Holder',
sniper_place:'Placér på basen!',
sniper_steal_mode:'[Stjæl]',
sniper_theft_nohop:'Kæledyr bliver stjålet af',
sniper_nohop_suffix:'— intet hop',
sniper_sniping:'Sniper:',
sniper_options:'Indstillinger',
sniper_drop_fail_status:'Drop fejlede!',
sniper_hotkey_label:'Genvejstast:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Grib fejlede. Prøver igen...',
sniper_our_pet_stolen:'Vores kæledyr stjålet — 8s afkøling',
sniper_hopping_short:'Hopper...',
sniper_base_full:'Basen fuld',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'LØB',
pet_teleport_title:'Teleportere',
pet_pickup_title:'Saml op',
owner_yours:'Dine',
owner_wild:'Vild',
footer_gf:'Fedtet gaffel',
copy_ok:'Kopieret',
copy_failed:'Kopiering mislykkedes',
s_invis_on_fly:'Usynlig ved flyvning',
snipe_walk_home:'Gå hjem efter tyveri',
snipe_walk_home_desc:'Gå tilbage til din base',
sniper_afk_sell:'AFK sælg ikke-matchende kæledyr',
sniper_afk_sell_desc:'(når inaktiv 5s, sælg kæledyr der ikke matcher filter efter værdi — kun bølger)',
hb_fly:'FLY',
hb_lck:'LÅS',
hb_inv:'USY',
hb_cud:'KRA',
hb_pet:'DYR',
hb_snp:'SNI',
hb_cfg:'IND',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KNT',
ban_title:'Forbindelse blokeret',
ban_sub:'Din IP-adresse er blevet begrænset af Meeland',
ban_body:'Bare rolig — det er nemt at løse! En gratis VPN giver dig en ny IP, så du kan spille igen.',
ban_pick:'Hurtig løsning — vælg en:',
ban_warp:'gratis, ubegrænset, opsætning med ét klik',
ban_warp_store:'også i App Store & Play Store som "1.1.1.1"',
ban_proton:'ingen datagrænse, 5 lande',
ban_steps:'Installér → opret forbindelse → genindlæs denne side. Det er det hele!',
ban_ok:'Forstået',
warn_title:'Brug altid en VPN',
warn_body:'Spil altid med <b>VPN</b> tændt.',
warn_ok:'Forstået',
loading:'Indlæser',
tcl_loading:'Fuldt tårnløkke kører. Tryk på {key} for at stoppe.',
hop_search:'Finder kamp',
hop_match:'Fandt {name} — tilslutter',
hop_flee:'Flygter fra ubuden gæst',
hop_reconnect:'Genopretter forbindelse',
hop_reload:'Genindlæser',
hop_fall:'Gendannelse efter fald',
hop_join:'Tilslutter rummet',
lock_off:'FRA',
lock_unlocked:'ULÅST',
desc_intro:'MES giver dig wallhack, auto-farming, sjældne kæledyrsindsamling, speed boost, flyvning, usynlighed og mere i Meeland',
desc_free:'100% gratis, altid. Har du feedback? Giv en ⭐ positiv anmeldelse — det er det der holder opdateringer i gang.',
desc_h_movement:'Bevægelse',
desc_h_combat:'Kamp',
desc_h_tuning:'Finjustering',
desc_h_pets:'Kæledyr & Tyveri',
desc_h_economy:'Økonomi',
desc_h_custom:'Tilpasning',
desc_h_extras:'Ekstra',
desc_fly:'Flyv',
desc_fly_d:'Space op, F ned. Justerbar hastighed.',
desc_speed:'Blinke',
desc_speed_d:'Shift for øjeblikkelig teleportering.',
desc_noclip:'Gå gennem vægge',
desc_noclip_d:'Gå gennem vægge.',
desc_walls:'Gå på Vægge',
desc_walls_d:'Klatre på enhver overflade.',
desc_waypts:'Rutepunkter',
desc_waypts_d:'Gem 10 positioner. Teleport med én tast. <kbd>Z</kbd> for at skifte.',
desc_invis:'Usynlig',
desc_invis_d:'Tryk på CapsLock for at forsvinde helt.',
desc_fpv:'FPV',
desc_fpv_d:'Tryk <kbd>.</kbd> for at skifte til første persons kamera.',
desc_anti_invis:'Anti-usynlighed',
desc_anti_invis_d:'Se usynlige spillere som spøgelser.',
desc_xray:'Røntgensyn',
desc_xray_d:'Se spillere gennem vægge i Mordgåde. Rød = morder, grøn = civil.',
desc_nodeathh:'Udødelig',
desc_nodeath_d:'Immun mod al skade.',
desc_antikb:'Anti-knockback',
desc_antikb_d:'Kan ikke skubbes.',
desc_attack:'Øjeblikkeligt angreb',
desc_attack_d:'<kbd>G</kbd> teleporterer til nærmeste spiller og slår.',
desc_jumpgrav:'Hop og Tyngdekraft',
desc_jumpgrav_d:'Justerbare multiplikatorer i Indstillinger.',
desc_fov:'FOV Kontrol',
desc_fov_d:'FOV-skydere til første og tredje person.',
desc_autoinvis:'Auto-Usynlig ved Flyvning',
desc_autoinvis_d:'Bliv usynlig automatisk når du flyver.',
desc_sniper:'Kæledyrssniper',
desc_sniper_d:'Automatisk tyveri af filtrerede kæledyr. Begge modes.',
desc_prv:'Privat Rum',
desc_prv_d:'<kbd>PgDn</kbd> opretter et privat rum i den aktuelle tilstand og deltager automatisk.',
desc_petbrow:'Kæledyrsbrowser',
desc_petbrow_d:'<kbd>K</kbd> viser alle kæledyr. Sortér, filtrér, grib.',
desc_cuddle:'Nussepanel',
desc_cuddle_d:'<kbd>J</kbd> lister spillere efter afstand. Klik for at følge.',
desc_return:'Auto Retur',
desc_return_d:'Teleporterer hjem efter tyveri.',
desc_autolock:'Auto-lås',
desc_autolock_d:'Basen altid låst.',
desc_fountain:'Auto-fontæne',
desc_fountain_d:'Permanent 1.5× profit. Auto-fornyelse.',
desc_money:'Gratis penge + Stjerner + Diamanter',
desc_money_d:'Ingen reklamer nødvendige.',
desc_collect:'Auto-Indsamling',
desc_collect_d:'Kæledyrsindkomst hvert 30. sekund.',
desc_music:'Bæremusik',
desc_music_d:'Musik mens du stjæler. 15 genrer.',
desc_chatfade:'Chat-forsvinding',
desc_chatfade_d:'Styr beskedsynlighed. 5–120s.',
desc_emotes:'Flyve-emotes',
desc_emotes_d:'Tilfældige emotes under flyvning.',
desc_displays:'Skærmoverlejringer',
desc_displays_d:'Koordinater, FPS-tæller og mål-info.',
desc_config:'Indstillinger',
desc_config_d:'<kbd>M</kbd> for funktioner, taster, hastigheder.',
desc_langs:'60 Sprog',
desc_langs_d:'Fuld UI-oversættelse.',
desc_tower:'Fuldfør tårn',
desc_tower_d:'<kbd>Y</kbd> for øjeblikkelig Obby Tower sejr.',
desc_cats:'Katteindlæsningsskærme',
desc_cats_d:'Søde katte erstatter indlæsning.',
desc_h_install:'Installér',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installér <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> eller <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klik på Installér ovenfor',
desc_inst_open:'Åbn ethvert Meeland-spil — det virker bare',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Installér <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox til Android</a> fra Play Store',
desc_mob_addon:'Åbn Firefox → Menu → Tilføjelser → installér <strong>Tampermonkey</strong>',
desc_mob_visit:'Besøg denne side i Firefox og tryk Installér',
desc_mob_play:'Spil Meeland — touch HUD-knapper vises automatisk',
desc_ios:'iOS: Apple blokerer browserudvidelser i alle iOS-browsere (inklusiv Firefox). Brug en desktop- eller Android-browser.',
desc_h_privacy:'Privatliv',
desc_privacy:'Kun klientsiden — ingen data forlader din browser'
});
_mk('el','Ελληνικά',{
close:'✕',
refresh:'↻',
go:'Πήγαινε',
set:'Ορισμός',
auto:'Αυτόματο',
empty:'κενό',
help_title:'Βοήθεια',
players_title:'Παίκτες',
players_empty:'Δεν βρέθηκαν άλλοι παίκτες',
settings_title:'Ρυθμίσεις',
settings_reset:'Επαναφορά',
tab_gameplay:'Παιχνίδι',
tab_economy:'Οικονομία',
tab_audio:'Ήχος',
tab_advanced:'Για προχωρημένους',
tab_hud:'HUD',
tab_keys:'Πλήκτρα',
tab_accounts:'Λογαριασμοί',
acct_current:'Τρέχων',
acct_new:'Νέος',
acct_import:'Εισαγωγή',
acct_switch:'Αλλαγή',
acct_reload:'Επαναφόρτωση',
acct_delete:'Διαγραφή',
acct_cancel:'Ακύρωση',
acct_empty:'Κενό',
acct_token_ph:'Κωδικός',
acct_copy:'Αντιγραφή',
acct_export:'Εξαγωγή',
acct_rename:'Μετονομασία',
acct_save:'Αποθήκευση',
acct_name_len:'Το όνομα πρέπει να έχει 4-12 χαρακτήρες',
acct_name_fail:'Αποτυχία μετονομασίας',
acct_invalid:'Άκυρο',
acct_ready:'Ο λογαριασμός είναι έτοιμος. Κλείσε το Meeland, άλλαξε IP, μετά επαναφόρτωσε.',
acct_ip_note:'Χρησιμοποιείτε πάντα VPN και αλλάζετε IP κατά την αλλαγή λογαριασμού.',
acct_howto:'1. Κάντε κλικ στην Αντιγραφή για να αντιγράψετε τον σύνδεσμο αυτού του λογαριασμού.\n2. Σε άλλο πρόγραμμα περιήγησης ή συσκευή — ή με φίλο — ανοίξτε το MES.\n3. Κάντε κλικ στην Εισαγωγή και επικολλήστε τον σύνδεσμο.',
sh_movement:'Κίνηση',
sh_defense:'Άμυνα',
sh_camera:'Κάμερα',
sh_overlays:'Επικαλύψεις',
sh_behaviour:'Συμπεριφορά',
sh_buttons:'Κουμπιά',
sh_language:'Γλώσσα',
sh_chat:'Κουβέντα',
sh_waves:'Waves',
sh_steal_a_pet:'Κλέψε κατοικίδιο',
sh_tower:'Tower',
sh_misc_multi:'Διάφορα (πολλαπλών λειτουργιών)',
s_noclip:'Χωρίς σύγκρουση',
s_fly:'Μύγα',
s_fly_emotes:'Emotes πτήσης',
s_base_speed:'Βασική ταχύτητα',
s_jump_mult:'Ύψος άλματος',
s_grav_mult:'Βαρύτητα',
s_walk_up_walls:'ανεβείτε τοίχους',
s_carry_normalize:'Ταχύτητα μεταφοράς + Άλμα',
s_invincibility:'Αθανασία',
s_anti_kb:'Αντι-απώθηση',
s_invisible:'Αόρατος',
s_xray_infection:'Ακτινογραφία (Murder Mystery)',
s_ghost_mode:'Λειτουργία φαντάσματος',
s_flee_intruder:'Φυγή όταν υπάρχει εισβολέας',
s_first_person:'Προβολή πρώτου προσώπου',
s_fov_first_person:'FOV (1ο)',
s_fov_third_person:'FOV (3ο)',
s_fov_vertical_mult:'Κατακόρυφος πολλαπλασιαστής FOV',
s_auto_lock:'Αυτο-κλείδωμα βάσης',
s_auto_fountain:'Αυτο-σιντριβάνι (1.5×)',
s_daily_coins:'Ημερήσια νομίσματα',
s_stars:'Αστέρια',
s_diamonds_tower:'Διαμάντια (Πύργος)',
s_tower_loop:'Βρόχος πύργου',
s_auto_roll_x25:'Αυτόματο ρολ x25 τύχης',
s_auto_craft:'Αυτόματη κατασκευή',
s_auto_vip_sword:'Αυτόματη αγορά VIP',
s_auto_vip_waves:'Αυτόματη αγορά VIP (Κύματα)',
s_direct_kill:'Άμεσο σπαμ σκοτωμάτων',
s_direct_kill_rate:'Ρυθμός σκοτωμάτων',
s_auto_buy_upgrades:'Αναβαθμίσεις αυτόματης αγοράς',
s_boost_coins:'Αυτόματη αναβάθμιση: Νομίσματα',
s_boost_diamonds:'Αυτόματη αναβάθμιση: Διαμάντια',
s_boost_luck:'Αυτόματη αναβάθμιση: τύχη',
s_auto_unlock_areas:'Περιοχές αυτόματου ξεκλειδώματος',
s_auto_rebirth:'αυτόματη αναγέννηση',
s_auto_join_tp:'Τηλεμεταφορά στην υψηλότερη περιοχή',
s_hide_kill_rewards:'Απόκρυψη ανταμοιβών Kill',
s_hide_roll_anim:'Απόκρυψη Roll Animation',
rng_title:'Κατοικίδια RNG απατεώνες',
rng_sec_rolling:'Κυλιομένος',
rng_sec_crafting:'Χειροτεχνία',
rng_sec_combat:'Μάχη',
rng_sec_upgrades:'Αναβαθμίσεις',
rng_sec_areas:'Περιοχές',
rng_actions:'Δράσεις',
log_craft:'Σκάφος',
log_success:'ΕΠΙΤΥΧΙΑ',
log_fail:'ΑΠΟΤΥΓΧΑΝΩ',
log_unlocking_area:'Περιοχή ξεκλειδώματος',
log_area_unlocked:'Περιοχή ξεκλείδωτη',
log_equipped:'Εξοπλισμένο',
log_bought_upgrade:'Αγόρασε αναβάθμιση',
log_teleported_to:'Τηλεμεταφορά σε',
log_rebirthing:'Αναγέννηση',
h_rng:'rng',
h_accts:'Λογαριασμοί',
s_auto_collect:'Αυτο-συλλογή κερδών',
s_collect_interval:'Διάστημα συλλογής',
s_chat_fade:'Χρόνος εξαφάνισης συνομιλίας',
s_name_colors:'Χρώματα ονομάτων χρήστη',
s_chat_enhance:'Βελτιώσεις συνομιλίας',
mes_hint:'Συμβουλή: προσθέστε "mes" στο όνομα χρήστη για ένα κινούμενο εφέ ουράνιου τόξου!',
s_carry_tune:'Μελωδία μεταφοράς (Κλοπή)',
s_pet_pickup_radius:'Ακτίνα Κλοπής Ζώου',
s_carry_vol:'Ένταση μεταφοράς',
carry_tune_default:'Προεπιλογή',
carry_tune_silent:'Σιωπηλό',
carry_tune_ambient:'Ατμοσφαιρικό',
carry_tune_blues:'Μπλουζ',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Κλασική',
carry_tune_electronic:'Ηλεκτρονική',
carry_tune_epic:'Επικό',
carry_tune_folk:'Λαϊκό',
carry_tune_funk:'Φανκ',
carry_tune_jazz:'Τζαζ',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Μέταλ',
carry_tune_pop:'Ποπ',
carry_tune_punk:'Πανκ',
carry_tune_reggae:'Ρέγκε',
carry_tune_rock:'Ροκ',
s_cont_cuddle:'Συνεχές αγκάλιασμα',
s_protips:'Επαγγελματικές συμβουλές',
s_hideprotips:'Απόκρυψη των Pro συμβουλών μου',
s_show_exp_modes:'Εμφάνιση πειραματικών λειτουργιών',
s_showcoords:'Εμφάνιση συντεταγμένων',
s_showfps:'Εμφάνιση FPS',
s_showtargetinfo:'Εμφάνιση πληροφοριών στόχου',
s_showobj:'Εμφάνιση Οντότητας / Πλήθος Πλέγματος',
s_copy_dbg:'Αντιγραφή αρχείων debug',
s_copy_json:'Αντιγραφή JSON',
s_clear_dbg:'Καθαρισμός',
h_fly:'Πτήση',
h_speed:'Hack ταχύτητας',
h_waypoints:'Σημεία διαδρομής',
h_autolock:'Αυτο-κλείδωμα',
h_invisible:'Αόρατος',
h_cuddle:'Αγκαλιά',
h_pets:'Κατοικίδια',
h_snipe:'Sniper',
h_help:'Βοήθεια',
h_settings:'Ρυθμίσεις',
h_prv:'Ιδιωτικό Δωμάτιο',
h_tc:'Ολοκλήρωση πύργου',
h_tcl:'Βρόχος πύργου',
kb_fly:'Πτήση (εναλλαγή)',
kb_fly_down:'Πτήση κάτω',
kb_set_home:'Ορισμός σπιτιού',
kb_home:'Βάση',
kb_back:'Πίσω',
kb_cuddle:'Πάνελ αγκαλιάς',
kb_settings:'Ρυθμίσεις',
kb_pets:'Περιηγητής κατοικιδίων',
kb_slots:'Θέσεις σημείων διαδρομής',
kb_snipe:'Πάνελ sniper',
kb_snipe_toggle:'Sniper Ενεργ/Απενεργ',
kb_attack:'Επίθεση στον πλησιέστερο',
kb_help:'Βοήθεια',
kb_tower:'Ολοκλήρωση πύργου',
kb_tower_loop:'Βρόχος πύργου',
kb_invisible:'Αόρατος',
kb_first_person:'Πρώτο πρόσωπο',
kb_autolock:'Βάση αυτόματου κλειδώματος',
kb_prv:'Ιδιωτικό Δωμάτιο',
kb_rng:'RNG',
kb_accts:'Λογαριασμοί',
pets_title:'Κατοικίδια',
pets_search_placeholder:'π.χ. wild kitty, golden OR diamond, (golden OR emerald) wild',
pets_hint:'Οι λέξεις συνδυάζονται με ΚΑΙ. Χρησιμοποίησε OR για εναλλακτικές, παρενθέσεις για ομαδοποίηση. * ή % ως μπαλαντέρ. Βάλε - πριν από μια λέξη για να την εξαιρέσεις.',
pets_empty:'Δεν βρέθηκαν κατοικίδια',
pt_name:'Όνομα',
pt_mut:'Μετάλλαξη',
pt_rar:'Σπανιότητα',
pt_owner:'Ιδιοκτήτης',
pt_worth:'Αξία',
pt_income:'Εισόδημα/δ',
pt_dist:'Απόσ',
slots_title:'Θέσεις σημείων διαδρομής',
sniper_title:'Sniper κατοικιδίων',
sniper_tbl_pet:'Κατοικίδιο ζώο',
sniper_tbl_owner:'Ιδιοκτήτης',
sniper_tbl_lock:'Κλειδαριά',
sniper_placeholder:'π.χ. halo, golden OR diamond, emerald dragon',
sniper_hint:'Οι λέξεις συνδυάζονται με ΚΑΙ. Χρησιμοποίησε OR για εναλλακτικές, παρενθέσεις για ομαδοποίηση. * ή % ως μπαλαντέρ. Βάλε - πριν από μια λέξη για να την εξαιρέσεις.',
sniper_room_col:'Δωμάτιο',
sniper_scans_col:'Σαρώσεις',
sniper_top_pet_col:'κορυφαίο κατοικίδιο',
sniper_top_worth_col:'Κορυφαία αξία',
sniper_top_owner_col:'Κορυφαίος ιδιοκτήτης',
sniper_age_col:'Ηλικία',
sniper_join_btn:'Συμμετοχή',
sniper_full:'Γεμάτο',
sniper_join_failed:'Το δωμάτιο στόχος γεμάτο',
sniper_scanning_rooms:'Αναζήτηση άλλων δωματίων…',
sniper_scan_off:'Αυτόματο κυνήγι',
sniper_scan_next:'Επόμενη σάρωση',
sniper_scan_idle:'Σε αδράνεια — αναμονή για σάρωση',
sniper_auto_place:'Αυτόματη τοποθέτηση στη βάση',
sniper_place_desc:'(τοποθετεί το κλεμμένο ζώο στη θέση της βάσης σου)',
sniper_auto_drop:'Αυτόματη απόρριψη μη ταιριαστών κατοικίδιων σε Κύματα',
sniper_drop_desc:'(απορρίπτει άγρια κατοικίδια που δεν ταιριάζουν με το φίλτρο για να ανανεώσει την πισίνα εμφάνισης)',
sniper_auto_hunt:'Αυτόματο κυνήγι',
sniper_hunt_desc:'(σκανάρει άλλα δωμάτια, μεταπηδά στην καλύτερη αντιστοιχία)',
sniper_auto_sell:'Αυτο-πώληση σε Κλοπή',
sniper_sell_desc:'(πουλάει το χαμηλότερο όταν η βάση είναι γεμάτη)',
sniper_lockdown:'Κλείδωμα ≤',
sniper_lockdown_hint:'Κλέβει στόχους σε βάσεις με ≤ αυτό το υπόλοιπο χρόνο. 0 = μόνο ξεκλείδωτες.',
sniper_join_grace:'Ενώστε τη χάρη',
sniper_start:'Έναρξη',
sniper_stop:'Διακοπή',
sniper_idle:'Αδρανής',
sniper_no_filter:'Χωρίς φίλτρο',
sniper_waiting:'Αναμονή για παιχνίδι...',
sniper_hold_pause:'Κρατάει κατοικίδιο — σε παύση',
sniper_stolen_pause:'έχει το κατοικίδιό μας — σε παύση',
sniper_cooldown:'Αναμονή',
sniper_hopping:'Αλλαγή server...',
sniper_na:'Sniper μη διαθέσιμο στο lobby',
sniper_wait_lock:'Αναμονή για δεδομένα κλειδώματος...',
sniper_locked:'Βάση κλειδωμένη — παράλειψη...',
sniper_full_eggs:'Βάση γεμάτη — μόνο αυγά, δεν μπορεί να πουληθεί',
sniper_stealing:'Κλέβει',
sniper_dropped:'Πετάχτηκε',
sniper_holding:'Κρατάει',
sniper_place:'Τοποθέτησε στη βάση!',
sniper_steal_mode:'[Κλοπή]',
sniper_theft_nohop:'Κατοικίδιο κλέβεται από',
sniper_nohop_suffix:'— χωρίς αλλαγή',
sniper_sniping:'Snipe:',
sniper_options:'Επιλογές',
sniper_drop_fail_status:'Το πέταγμα απέτυχε!',
sniper_hotkey_label:'Πλήκτρο συντόμευσης:',
sniper_panel_label:'Πάνελ:',
sniper_grab_fail:'Αποτυχία αρπαγής. Νέα προσπάθεια...',
sniper_our_pet_stolen:'Το κατοικίδιό μας κλάπηκε — 8δ αναμονή',
sniper_hopping_short:'Αλλαγή...',
sniper_base_full:'Η βάση γεμάτη',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ΤΡΕΞΕ',
pet_teleport_title:'Μεταφορά',
pet_pickup_title:'Σηκώνω',
owner_yours:'Δικό σου',
owner_wild:'Αγριος',
footer_gf:'Λιπαρό πιρούνι',
copy_ok:'Αντιγράφηκε',
copy_failed:'Η αντιγραφή απέτυχε',
s_invis_on_fly:'Αόρατος κατά την πτήση',
snipe_walk_home:'Περπάτα σπίτι μετά την κλοπή',
snipe_walk_home_desc:'Περπάτα πίσω στη βάση σου',
sniper_afk_sell:'Πώληση AFK μη-ταιριαστών κατοικιδίων',
sniper_afk_sell_desc:'(όταν αδρανής 5δ, πουλά κατοικίδια που δεν ταιριάζουν με το φίλτρο — μόνο σε Κύματα)',
hb_fly:'ΠΕΤ',
hb_lck:'ΚΛΕ',
hb_inv:'ΑΟΡ',
hb_cud:'ΑΓΚ',
hb_pet:'ΖΩΑ',
hb_snp:'ΕΛΕ',
hb_cfg:'ΡΥΘ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ΛΟΓ',
ban_title:'Σύνδεση αποκλεισμένη',
ban_sub:'Η διεύθυνση IP σας περιορίστηκε από το Meeland',
ban_body:'Μην ανησυχείτε — αυτό διορθώνεται εύκολα! Ένα δωρεάν VPN θα σας δώσει νέα IP για να παίξετε ξανά.',
ban_pick:'Γρήγορη λύση — διαλέξτε ένα:',
ban_warp:'δωρεάν, απεριόριστο, ρύθμιση με ένα κλικ',
ban_warp_store:'διαθέσιμο και σε App Store & Play Store ως "1.1.1.1"',
ban_proton:'χωρίς όριο δεδομένων, 5 χώρες',
ban_steps:'Εγκαταστήστε → συνδεθείτε → ανανεώστε αυτή τη σελίδα. Αυτό ήταν!',
ban_ok:'Κατάλαβα',
warn_title:'Χρησιμοποίησε πάντα VPN',
warn_body:'Παίζε πάντα με ενεργοποιημένο <b>VPN</b>.',
warn_ok:'Κατάλαβα',
loading:'Φόρτωση',
tcl_loading:'Εκτελείται ο πλήρης βρόχος πύργου. Πατήστε {key} για διακοπή.',
hop_search:'Αναζήτηση αγώνα',
hop_match:'Βρέθηκε {name} — σύνδεση',
hop_flee:'Φυγή από εισβολέα',
hop_reconnect:'Επανασύνδεση',
hop_reload:'Επαναφόρτωση',
hop_fall:'Ανάκαμψη από πτώση',
hop_join:'Σύνδεση στην αίθουσα',
lock_off:'ΚΛΕΙΣΤΟ',
lock_unlocked:'ΞΕΚΛΕΙΔΩΜΕΝΟ',
desc_intro:'Το MES σάς προσφέρει wallhack, αυτόματη εκτροφή, συλλογή σπάνιων κατοικίδιων, ώθηση ταχύτητας, πτήση, αόρατο και πολλά άλλα στο Meeland',
desc_free:'100% δωρεάν, πάντα. Έχεις σχόλια; Άφησε μια ⭐ θετική κριτική — αυτό κρατάει τις ενημερώσεις.',
desc_h_movement:'Κίνηση',
desc_h_combat:'Μάχη',
desc_h_tuning:'Ρύθμιση',
desc_h_pets:'Κατοικίδια & Κλοπή',
desc_h_economy:'Οικονομία',
desc_h_custom:'Προσαρμογή',
desc_h_extras:'Επιπλέον',
desc_fly:'Πτήση',
desc_fly_d:'Space πάνω, F κάτω. Ρυθμιζόμενη ταχύτητα.',
desc_speed:'Αναβοσβήνω',
desc_speed_d:'Shift για άμεση τηλεμεταφορά.',
desc_noclip:'Χωρίς σύγκρουση',
desc_noclip_d:'Περπάτα μέσα από τοίχους.',
desc_walls:'Περπάτημα σε Τοίχους',
desc_walls_d:'Σκαρφάλωσε σε οποιαδήποτε επιφάνεια.',
desc_waypts:'Σημεία διαδρομής',
desc_waypts_d:'Αποθήκευση 10 θέσεων. Τηλεμεταφορά με ένα πλήκτρο. <kbd>Z</kbd> εναλλαγή.',
desc_invis:'Αόρατος',
desc_invis_d:'Πάτα CapsLock για πλήρη εξαφάνιση.',
desc_fpv:'FPV',
desc_fpv_d:'Πάτησε <kbd>.</kbd> για εναλλαγή κάμερας πρώτου προσώπου.',
desc_anti_invis:'Αντι-αορατότητα',
desc_anti_invis_d:'Δες αόρατους παίκτες ως φαντάσματα.',
desc_xray:'Όραση Ακτίνων Χ',
desc_xray_d:'Δείτε τους παίκτες μέσα από τοίχους στο Murder Mystery. Κόκκινο = δολοφόνος, πράσινο = πολίτης.',
desc_nodeathh:'Αθάνατος',
desc_nodeath_d:'Άτρωτος σε όλες τις ζημιές.',
desc_antikb:'Αντι-απώθηση',
desc_antikb_d:'Δεν μπορείς να σπρωχτείς.',
desc_attack:'Άμεση επίθεση',
desc_attack_d:'<kbd>G</kbd> τηλεμεταφέρει στον πλησιέστερο παίκτη και χτυπά.',
desc_jumpgrav:'Άλμα και Βαρύτητα',
desc_jumpgrav_d:'Ρυθμιζόμενοι πολλαπλασιαστές στις Ρυθμίσεις.',
desc_fov:'Έλεγχος FOV',
desc_fov_d:'Ρυθμιστικά FOV πρώτου και τρίτου προσώπου.',
desc_autoinvis:'Αυτόματη Αορατότητα στην Πτήση',
desc_autoinvis_d:'Γίνε αόρατος αυτόματα όταν πετάς.',
desc_sniper:'Sniper κατοικιδίων',
desc_sniper_d:'Αυτόματη κλοπή φιλτραρισμένων κατοικίδιων. Και οι δύο λειτουργίες.',
desc_prv:'Ιδιωτικό Δωμάτιο',
desc_prv_d:'<kbd>PgDn</kbd> δημιουργεί ιδιωτικό δωμάτιο στην τρέχουσα λειτουργία και συνδέεται αυτόματα.',
desc_petbrow:'Περιηγητής κατοικιδίων',
desc_petbrow_d:'<kbd>K</kbd> δείχνει όλα τα κατοικίδια. Ταξινόμηση, φίλτρο, άρπαξε.',
desc_cuddle:'Πάνελ αγκαλιάς',
desc_cuddle_d:'<kbd>J</kbd> λίστα παικτών κατά απόσταση. Κλικ για ακολούθηση.',
desc_return:'Αυτόματη Επιστροφή',
desc_return_d:'Τηλεμεταφορά σπίτι μετά την κλοπή.',
desc_autolock:'Αυτο-κλείδωμα',
desc_autolock_d:'Η βάση πάντα κλειδωμένη.',
desc_fountain:'Αυτο-σιντριβάνι',
desc_fountain_d:'Μόνιμο κέρδος 1.5×. Αυτόματη ανανέωση.',
desc_money:'Δωρεάν χρήματα + Αστέρια + Διαμάντια',
desc_money_d:'Χωρίς διαφημίσεις.',
desc_collect:'Αυτόματη Συλλογή',
desc_collect_d:'Έσοδα κατοικίδιων κάθε 30δ.',
desc_music:'Μουσική μεταφοράς',
desc_music_d:'Μουσική κατά την κλοπή. 15 είδη.',
desc_chatfade:'Εξαφάνιση συνομιλίας',
desc_chatfade_d:'Έλεγχος ορατότητας μηνυμάτων. 5–120δ.',
desc_emotes:'Emotes πτήσης',
desc_emotes_d:'Τυχαία emotes κατά την πτήση.',
desc_displays:'Επικαλύψεις Οθόνης',
desc_displays_d:'Συντεταγμένες, μετρητής FPS και πληροφορίες στόχου.',
desc_config:'Ρυθμίσεις',
desc_config_d:'<kbd>M</kbd> για λειτουργίες, πλήκτρα, ταχύτητες.',
desc_langs:'60 Γλώσσες',
desc_langs_d:'Πλήρης μετάφραση UI.',
desc_tower:'Ολοκλήρωση πύργου',
desc_tower_d:'<kbd>Y</kbd> για άμεση νίκη στο Obby Tower.',
desc_cats:'Οθόνες φόρτωσης γάτας',
desc_cats_d:'Χαριτωμένες γάτες αντικαθιστούν τη φόρτωση.',
desc_h_install:'Εγκατάσταση',
desc_desktop:'Υπολογιστής (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Εγκατέστησε <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ή <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Κάνε κλικ στο Εγκατάσταση παραπάνω',
desc_inst_open:'Άνοιξε οποιοδήποτε παιχνίδι Meeland — απλά λειτουργεί',
desc_mobile:'Κινητό (Android)',
desc_mob_ff:'Εγκατέστησε <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox για Android</a> από το Play Store',
desc_mob_addon:'Άνοιξε Firefox → Μενού → Πρόσθετα → εγκατέστησε <strong>Tampermonkey</strong>',
desc_mob_visit:'Επισκέψου αυτή τη σελίδα στο Firefox και πάτα Εγκατάσταση',
desc_mob_play:'Παίξε Meeland — τα κουμπιά αφής HUD εμφανίζονται αυτόματα',
desc_ios:'iOS: Η Apple μπλοκάρει τις επεκτάσεις browser σε όλους τους iOS browsers (συμπεριλαμβανομένου του Firefox). Χρησιμοποίησε browser υπολογιστή ή Android.',
desc_h_privacy:'Απόρρητο',
desc_privacy:'Μόνο στην πλευρά του πελάτη — κανένα δεδομένο δεν φεύγει από τον browser σου'
});
_mk('et','Eesti',{
close:'✕',
refresh:'↻',
go:'Mine',
set:'Seadista',
auto:'Automaatne',
empty:'tühi',
help_title:'Abi',
players_title:'Mängijad',
players_empty:'Teisi mängijaid ei leitud',
settings_title:'Seaded',
settings_reset:'Lähtesta',
tab_gameplay:'Mäng',
tab_economy:'Majandus',
tab_audio:'Heli',
tab_advanced:'Täpsem',
tab_hud:'HUD',
tab_keys:'Klahvid',
tab_accounts:'Kontod',
acct_current:'Praegune',
acct_new:'Uus',
acct_import:'Impordi',
acct_switch:'Vaheta',
acct_reload:'Laadi uuesti',
acct_delete:'Kustuta',
acct_cancel:'Tühista',
acct_empty:'Tühi',
acct_token_ph:'Token',
acct_copy:'Kopeeri',
acct_export:'Ekspordi',
acct_rename:'Nimeta ümber',
acct_save:'Salvesta',
acct_name_len:'Nimi peab olema 4-12 tähemärki',
acct_name_fail:'Ümbernimetamine ebaõnnestus',
acct_invalid:'Kehtetu',
acct_ready:'Konto valmis. Sulge Meeland, vaheta IP, siis laadi uuesti.',
acct_ip_note:'Kasuta alati VPN-i ja vaheta IP kontot vahetades.',
acct_howto:'1. Klõpsa Kopeeri, et kopeerida selle konto link.\n2. Avage MES teises brauseris või seadmes — või sõbra juures.\n3. Klõpsa Impordi ja kleebi link.',
sh_movement:'Liikumine',
sh_defense:'Kaitse',
sh_camera:'Kaamera',
sh_overlays:'Ülekatted',
sh_behaviour:'Käitumine',
sh_buttons:'Nupud',
sh_language:'Keel',
sh_chat:'Vestlus',
sh_waves:'Waves',
sh_steal_a_pet:'Varasta lemmikloom',
sh_tower:'Tower',
sh_misc_multi:'Muud (mitme režiimiga)',
s_noclip:'Läbi seinte',
s_fly:'Lennata',
s_fly_emotes:'Lennuemotsioonid',
s_base_speed:'Baaskiirus',
s_jump_mult:'Hüppe kõrgus',
s_grav_mult:'Gravitatsioon',
s_walk_up_walls:'kõndida mööda seinu',
s_carry_normalize:'Kandekiirus + hüpe',
s_invincibility:'Puutumatus',
s_anti_kb:'Anti-tagasilöök',
s_invisible:'Nähtamatu',
s_xray_infection:'Röntgen (Mõrvamüsteerium)',
s_ghost_mode:'Kummitusrežiim',
s_flee_intruder:'Põgene sissetungija korral',
s_first_person:'Esimese isiku vaade',
s_fov_first_person:'FOV (1. isik)',
s_fov_third_person:'FOV (3. isik)',
s_fov_vertical_mult:'FOV vertikaalne kordaja',
s_auto_lock:'Automaatlukustus baasile',
s_auto_fountain:'Autofontään (1.5×)',
s_daily_coins:'Igapäevased mündid',
s_stars:'Tähed',
s_diamonds_tower:'Teemandid (Torn)',
s_tower_loop:'Torni silmus',
s_auto_roll_x25:'Auto-roll x25 õnn',
s_auto_craft:'Automaatne meisterdamine',
s_auto_vip_sword:'Osta VIP automaatselt',
s_auto_vip_waves:'Osta VIP automaatselt (Lained)',
s_direct_kill:'Otsene kill-spamm',
s_direct_kill_rate:'Tapmise kiirus',
s_auto_buy_upgrades:'Auto Osta uuendused',
s_boost_coins:'Automaatne uuendamine: mündid',
s_boost_diamonds:'Automaatne uuendamine: teemandid',
s_boost_luck:'Automaatne uuendamine: õnn',
s_auto_unlock_areas:'Alade automaatne avamine',
s_auto_rebirth:'Automaatne taassünd',
s_auto_join_tp:'Teleportige kõrgeimasse piirkonda',
s_hide_kill_rewards:'Peida Kill Rewards',
s_hide_roll_anim:'Peida rullanimatsioon',
rng_title:'Lemmikloomad RNG Pettused',
rng_sec_rolling:'Veeremine',
rng_sec_crafting:'Meisterdamine',
rng_sec_combat:'Võitlus',
rng_sec_upgrades:'Uuendused',
rng_sec_areas:'Piirkonnad',
rng_actions:'Tegevused',
log_craft:'Käsitöö',
log_success:'EDU',
log_fail:'EBAÕNNESTUS',
log_unlocking_area:'Avamisala',
log_area_unlocked:'Ala lukustamata',
log_equipped:'Varustatud',
log_bought_upgrade:'Ostetud uuendus',
log_teleported_to:'Teleporteeritud aadressile',
log_rebirthing:'Taassünd',
h_rng:'rng',
h_accts:'Kontod',
s_auto_collect:'Automaatkogumine',
s_collect_interval:'Kogumisintervall',
s_chat_fade:'Vestluse hääbumisaeg',
s_name_colors:'Kasutajanime värvid',
s_chat_enhance:'Vestluse täiustused',
mes_hint:'Näpunäide: lisage oma kasutajanimele "mes", et saada animeeritud vikerkaareefekt!',
s_carry_tune:'Kandemelodia (Vargus)',
s_pet_pickup_radius:'Lemmiku Varastamise Raadius',
s_carry_vol:'Kandehelitugevus',
carry_tune_default:'Vaikimisi',
carry_tune_silent:'Vaikus',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassikaline',
carry_tune_electronic:'Elektrooniline',
carry_tune_epic:'Eepiline',
carry_tune_folk:'Rahvamuusika',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metallist',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Pidev kallistamine',
s_protips:'Pro nõuanded',
s_hideprotips:'Peida minu Pro nõuanded',
s_show_exp_modes:'Näita eksperimentaalseid režiime',
s_showcoords:'Näita koordinaate',
s_showfps:'Näita FPS-i',
s_showtargetinfo:'Kuva sihtinfo',
s_showobj:'Näita olemit/silmade arvu',
s_copy_dbg:'Kopeeri debug-logid',
s_copy_json:'Kopeeri JSON',
s_clear_dbg:'Tühjenda',
h_fly:'Lenda',
h_speed:'Kiiruse häkk',
h_waypoints:'Teepunktid',
h_autolock:'Automaatlukk',
h_invisible:'Nähtamatu',
h_cuddle:'Kallistamine',
h_pets:'Lemmikloomad',
h_snipe:'Sniper',
h_help:'Abi',
h_settings:'Seaded',
h_prv:'Privaatne tuba',
h_tc:'Lõpeta torn',
h_tcl:'Torni silmus',
kb_fly:'Lenda (lülita)',
kb_fly_down:'Lenda alla',
kb_set_home:'Seadista kodu',
kb_home:'Kodu',
kb_back:'Tagasi',
kb_cuddle:'Kallistamispaneel',
kb_settings:'Seaded',
kb_pets:'Lemmikloomade brauser',
kb_slots:'Teepunktide pesad',
kb_snipe:'Sniperi paneel',
kb_snipe_toggle:'Sniper sees/väljas',
kb_attack:'Ründa lähimat',
kb_help:'Abi',
kb_tower:'Lõpeta torn',
kb_tower_loop:'Torni silmus',
kb_invisible:'Nähtamatu',
kb_first_person:'Esimese isiku',
kb_autolock:'Automaatselt lukustatav alus',
kb_prv:'Privaatne tuba',
kb_rng:'RNG',
kb_accts:'Kontod',
pets_title:'Lemmikloomad',
pets_search_placeholder:'nt. metsik kiisu, kuldne VÕI teemant, (kuldne VÕI smaragd) metsik',
pets_hint:'Sõnad kombineeritakse JA-ga. Kasuta OR alternatiivideks, sulge rühmitamiseks. * või % metamärgina. Pane sõna ette -, et see välja jätta.',
pets_empty:'Lemmikloomi ei leitud',
pt_name:'Nimi',
pt_mut:'Mutatsioon',
pt_rar:'Haruldus',
pt_owner:'Omanik',
pt_worth:'Väärtus',
pt_income:'Tulu/s',
pt_dist:'Kaug',
slots_title:'Teepunktide pesad',
sniper_title:'Lemmikloomade sniper',
sniper_tbl_pet:'Lemmikloom',
sniper_tbl_owner:'Omanik',
sniper_tbl_lock:'Lukk',
sniper_placeholder:'nt. halo, golden OR diamond, emerald dragon',
sniper_hint:'Sõnad kombineeritakse JA-ga. Kasuta OR alternatiivideks, sulge rühmitamiseks. * või % metamärgina. Pane sõna ette -, et see välja jätta.',
sniper_room_col:'Ruum',
sniper_scans_col:'Skaneerib',
sniper_top_pet_col:'Top Lemmikloom',
sniper_top_worth_col:'Top väärt',
sniper_top_owner_col:'Ülemine omanik',
sniper_age_col:'Vanus',
sniper_join_btn:'Liitu',
sniper_full:'Täis',
sniper_join_failed:'Sihtruum täis',
sniper_scanning_rooms:'Otsin teisi ruume…',
sniper_scan_off:'Automaatne jaht',
sniper_scan_next:'Järgmine skannimine',
sniper_scan_idle:'Idle – ootab skannimist',
sniper_auto_place:'Automaatne paigutus baasi',
sniper_place_desc:'(paneb varastatud looma su baasipilusse)',
sniper_auto_drop:'Kukuta automaatselt mittevastavaid lemmikloomi Lainetes',
sniper_drop_desc:'(kukutab metsikud lemmikloomad, mis ei sobi filtriga, et uuendada spawn-koosseisu)',
sniper_auto_hunt:'Auto-jaht',
sniper_hunt_desc:'(skannib teisi ruume, hüppab parima vaste juurde)',
sniper_auto_sell:'Automaatne müük Varguses',
sniper_sell_desc:'(müüb madalama kui baas on täis)',
sniper_lockdown:'Lukustus ≤',
sniper_lockdown_hint:'Varasta sihtmärke baasidelt, kus on ≤ see järelejäänud aeg. 0 = ainult lukustamata.',
sniper_join_grace:'Liituge armuga',
sniper_start:'Start',
sniper_stop:'Stopp',
sniper_idle:'Ootel',
sniper_no_filter:'Filtrit pole',
sniper_waiting:'Ootan mängu...',
sniper_hold_pause:'Hoian lemmiklooma — peatatud',
sniper_stolen_pause:'omab meie lemmiklooma — peatatud',
sniper_cooldown:'Jahtumisaeg',
sniper_hopping:'Serveri vahetus...',
sniper_na:'Sniper pole fuajees saadaval',
sniper_wait_lock:'Ootan lukustusandmeid...',
sniper_locked:'Baas lukustatud — vahelejätmine...',
sniper_full_eggs:'Baas täis — ainult munad, ei saa müüa',
sniper_stealing:'Varastamine',
sniper_dropped:'Kukutatud',
sniper_holding:'Hoiab',
sniper_place:'Aseta baasile!',
sniper_steal_mode:'[Vargus]',
sniper_theft_nohop:'Lemmiklooma varastab',
sniper_nohop_suffix:'— hüpet pole',
sniper_sniping:'Snaiperitulemus:',
sniper_options:'Valikud',
sniper_drop_fail_status:'Kukutamine ebaõnnestus!',
sniper_hotkey_label:'Kiirklahv:',
sniper_panel_label:'Paneel:',
sniper_grab_fail:'Haaramine ebaõnnestus. Uuesti proovimine...',
sniper_our_pet_stolen:'Meie lemmikloom varastati — 8s jahtumisaeg',
sniper_hopping_short:'Hüppamine...',
sniper_base_full:'Põhi täis',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'JOOKSE',
pet_teleport_title:'Teleport',
pet_pickup_title:'Korja üles',
owner_yours:'Sinu oma',
owner_wild:'Metsik',
footer_gf:'Rasvane kahvel',
copy_ok:'Kopeeritud',
copy_failed:'Kopeerimine ebaõnnestus',
s_invis_on_fly:'Nähtamatu lennates',
snipe_walk_home:'Kõnni koju pärast varastamist',
snipe_walk_home_desc:'Kõnni tagasi oma baasi',
sniper_afk_sell:'AFK müü mittesobivad loomad',
sniper_afk_sell_desc:'(kui passiivne 5s, müü filtriga mittesobivad loomad väärtuse järgi — ainult lained)',
hb_fly:'LEN',
hb_lck:'LKK',
hb_inv:'NÄH',
hb_cud:'KAL',
hb_pet:'LOO',
hb_snp:'SNI',
hb_cfg:'SÄT',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KNT',
ban_title:'Ühendus blokeeritud',
ban_sub:'Meeland on teie IP-aadressi piiranud',
ban_body:'Ärge muretsege – seda on lihtne parandada! Tasuta VPN annab teile uue IP, et saaksite uuesti mängida.',
ban_pick:'Kiirparandus – valige ükskõik milline:',
ban_warp:'tasuta, piiramatu, ühe klõpsuga seadistamine',
ban_warp_store:'ka App Store\'is ja Play Store\'is kui "1.1.1.1"',
ban_proton:'andmete ülempiir puudub, 5 riiki',
ban_steps:'Installi → ühenda → värskenda seda lehte. See on kõik!',
ban_ok:'Sain aru',
warn_title:'Kasutage alati VPN-i',
warn_body:'Mängi alati <b>VPN</b> sisselülitatuna.',
warn_ok:'Sain aru, ma saan aru',
loading:'Laadimine',
tcl_loading:'Täielik tornisilm on käimas. Vajutage {key} peatamiseks.',
hop_search:'Otsin mängu',
hop_match:'Leitud {name} — liitumine',
hop_flee:'Põgenemine sissetungija eest',
hop_reconnect:'Taasühendamine',
hop_reload:'Laaditakse uuesti',
hop_fall:'Taastumine kukkumisest',
hop_join:'Ruumiga liitumine',
lock_off:'VÄLJAS',
lock_unlocked:'AVATUD',
desc_intro:'MES pakub teile Meelandis wallhacki, autofarmi, haruldaste lemmikloomade kogumist, kiiruse suurendamist, lendu, nähtamatust ja palju muud',
desc_free:'100% tasuta, alati. Tagasisidet? Jäta ⭐ positiivne arvustus — see hoiab uuendusi käimas.',
desc_h_movement:'Liikumine',
desc_h_combat:'Võitlus',
desc_h_tuning:'Häälestus',
desc_h_pets:'Lemmikloomad & Vargus',
desc_h_economy:'Majandus',
desc_h_custom:'Kohandamine',
desc_h_extras:'Lisa',
desc_fly:'Lendamine',
desc_fly_d:'Space üles, F alla. Reguleeritav kiirus.',
desc_speed:'Pilgutama',
desc_speed_d:'Shift koheseks teleportimiseks.',
desc_noclip:'Läbi seinte',
desc_noclip_d:'Kõnni läbi seinte.',
desc_walls:'Seintel Kõndimine',
desc_walls_d:'Roni igal pinnal.',
desc_waypts:'Teepunktid',
desc_waypts_d:'Salvesta 10 positsiooni. Teleport ühe klahviga. <kbd>Z</kbd> lülitamiseks.',
desc_invis:'Nähtamatu',
desc_invis_d:'Vajuta CapsLock täielikuks kadumiseks.',
desc_fpv:'FPV',
desc_fpv_d:'Vajuta <kbd>.</kbd> esimese isiku kaamera lülitamiseks.',
desc_anti_invis:'Anti-nähtamatus',
desc_anti_invis_d:'Näe nähtamatuid mängijaid kummitustena.',
desc_xray:'Röntgeni Nägemine',
desc_xray_d:'Näe mängijaid läbi seinte Mõrvamüsteeriumis. Punane = mõrvar, roheline = tsiviilisik.',
desc_nodeathh:'Surematu',
desc_nodeath_d:'Immuunne kõigile kahjustustele.',
desc_antikb:'Anti-tagasilöök',
desc_antikb_d:'Sind ei saa lükata.',
desc_attack:'Kohene rünnak',
desc_attack_d:'<kbd>G</kbd> teleportib lähima mängija juurde ja lööb.',
desc_jumpgrav:'Hüpe ja Gravitatsioon',
desc_jumpgrav_d:'Reguleeritavad kordajad Seadetes.',
desc_fov:'FOV Juhtimine',
desc_fov_d:'FOV-liugurid esimese ja kolmanda isiku vaates.',
desc_autoinvis:'Auto-Nähtamatu Lennates',
desc_autoinvis_d:'Muutu lennates automaatselt nähtamatuks.',
desc_sniper:'Lemmikloomade sniper',
desc_sniper_d:'Filtreeritud lemmikloomade automaatne vargus. Mõlemad režiimid.',
desc_prv:'Privaatne tuba',
desc_prv_d:'<kbd>PgDn</kbd> loob praeguses režiimis privaatse toa ja liitub automaatselt.',
desc_petbrow:'Lemmikloomade brauser',
desc_petbrow_d:'<kbd>K</kbd> näitab kõiki lemmikloomi. Sordi, filtreeri, haara.',
desc_cuddle:'Kallistamispaneel',
desc_cuddle_d:'<kbd>J</kbd> loetleb mängijad kauguse järgi. Klõpsa jälgimiseks.',
desc_return:'Automaatne Tagasitulek',
desc_return_d:'Teleportib koju pärast vargust.',
desc_autolock:'Automaatlukk',
desc_autolock_d:'Baas alati lukus.',
desc_fountain:'Autofontään',
desc_fountain_d:'Püsiv 1.5× kasum. Automaatne uuendamine.',
desc_money:'Tasuta raha + Tähed + Teemandid',
desc_money_d:'Reklaame pole vaja.',
desc_collect:'Automaatne Kogumine',
desc_collect_d:'Lemmikloomade tulu iga 30s.',
desc_music:'Kandmismuusika',
desc_music_d:'Muusika varastamise ajal. 15 žanri.',
desc_chatfade:'Vestluse kadumine',
desc_chatfade_d:'Jälgi sõnumite nähtavust. 5–120s.',
desc_emotes:'Lennu emotid',
desc_emotes_d:'Juhuslikud emotid lennates.',
desc_displays:'Ekraani Ülekatted',
desc_displays_d:'Koordinaadid, FPS-loendur ja sihtmärgi info.',
desc_config:'Seaded',
desc_config_d:'<kbd>M</kbd> funktsioonide, klahvide, kiiruste jaoks.',
desc_langs:'60 Keelt',
desc_langs_d:'Täielik UI tõlge.',
desc_tower:'Torni lõpetamine',
desc_tower_d:'<kbd>Y</kbd> Obby Toweri koheseks võiduks.',
desc_cats:'Kassi laadimisekraanid',
desc_cats_d:'Armsad kassid asendavad laadimist.',
desc_h_install:'Paigaldamine',
desc_desktop:'Töölaud (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Paigalda <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> või <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Kliki ülal Paigalda',
desc_inst_open:'Ava ükskõik milline Meelandi mäng — see lihtsalt töötab',
desc_mobile:'Mobiil (Android)',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Paigaldage Tampermonkey laiendus',
desc_mob_visit:'Külastage seda lehte ja paigaldage',
desc_mob_play:'Mängige Meelandi Firefoxis',
desc_ios:'iOS: Kasutage Userscripts (Safari) + see skript',
desc_h_privacy:'Privaatsus',
desc_privacy:'Andmeid ei koguta. Kõik jääb kohapeale.'
});
_mk('fi','Suomi',{
close:'✕',
refresh:'↻',
go:'Mene',
set:'Aseta',
auto:'Auto',
empty:'tyhjä',
help_title:'Ohje',
players_title:'Pelaajat',
players_empty:'Muita pelaajia ei löytynyt',
settings_title:'Asetukset',
settings_reset:'Nollaa',
tab_gameplay:'Peli',
tab_economy:'Talous',
tab_audio:'Ääni',
tab_advanced:'Lisäasetukset',
tab_hud:'HUD',
tab_keys:'Näppäimet',
tab_accounts:'Tilit',
acct_current:'Nykyinen',
acct_new:'Uusi',
acct_import:'Tuo',
acct_switch:'Vaihda',
acct_reload:'Lataa uudelleen',
acct_delete:'Poista',
acct_cancel:'Peruuta',
acct_empty:'Tyhjä',
acct_token_ph:'Tunnus',
acct_copy:'Kopioi',
acct_export:'Vie',
acct_rename:'Nimeä uudelleen',
acct_save:'Tallenna',
acct_name_len:'Nimen on oltava 4-12 merkkiä',
acct_name_fail:'Uudelleennimeäminen epäonnistui',
acct_invalid:'Virheellinen',
acct_ready:'Tili valmis. Sulje Meeland, vaihda IP, sitten lataa uudelleen.',
acct_ip_note:'Käytä aina VPN:ää ja vaihda IP:tä tiliä vaihtaessasi.',
acct_howto:'1. Napsauta Kopioi kopioidaksesi tämän tilin linkin.\n2. Avaa MES toisessa selaimessa tai laitteessa — tai kaverin kanssa.\n3. Napsauta Tuo ja liitä linkki.',
sh_movement:'Liikkuminen',
sh_defense:'Puolustus',
sh_camera:'Kamera',
sh_overlays:'Peittokuvat',
sh_behaviour:'Käyttäytyminen',
sh_buttons:'Painikkeet',
sh_language:'Kieli',
sh_chat:'Chat',
sh_waves:'Waves',
sh_steal_a_pet:'Varasta lemmikki',
sh_tower:'Tower',
sh_misc_multi:'Muut (monitila)',
s_noclip:'Seinien läpi',
s_fly:'Lentää',
s_fly_emotes:'Lentoemotit',
s_base_speed:'Perusnopeus',
s_jump_mult:'Hyppykorkeus',
s_grav_mult:'Painovoima',
s_walk_up_walls:'kävellä seiniä ylös',
s_carry_normalize:'Kuljetusnopeus + hyppy',
s_invincibility:'Kuolemattomuus',
s_anti_kb:'Anti-takaisinpotku',
s_invisible:'Näkymätön',
s_xray_infection:'Röntgen (Murhamysteeri)',
s_ghost_mode:'Aavetila',
s_flee_intruder:'Pakene tunkeilijan tullen',
s_first_person:'Ensimmäisen persoonan näkymä',
s_fov_first_person:'FOV (1. pers.)',
s_fov_third_person:'FOV (3. pers.)',
s_fov_vertical_mult:'FOV pystysuora kerroin',
s_auto_lock:'Automaattilukitus tukikohtaan',
s_auto_fountain:'Automaattisuihkulähde (1.5×)',
s_daily_coins:'Päivittäiset kolikot',
s_stars:'Tähdet',
s_diamonds_tower:'Timantit (Torni)',
s_tower_loop:'Tornisilmukka',
s_auto_roll_x25:'Automaattirulla x25 onnea',
s_auto_craft:'Automaattinen käsityö',
s_auto_vip_sword:'Osta VIP automaattisesti',
s_auto_vip_waves:'Osta VIP automaattisesti (Aallot)',
s_direct_kill:'Suora tappospämmi',
s_direct_kill_rate:'Tapponopeus',
s_auto_buy_upgrades:'Auto Osta päivitykset',
s_boost_coins:'Automaattinen päivitys: kolikot',
s_boost_diamonds:'Automaattinen päivitys: Timantit',
s_boost_luck:'Automaattinen päivitys: onnea',
s_auto_unlock_areas:'Automaattinen lukituksen avaaminen',
s_auto_rebirth:'Automaattinen uudestisyntyminen',
s_auto_join_tp:'Teleportoi korkeimmalle alueelle',
s_hide_kill_rewards:'Piilota Kill Rewards',
s_hide_roll_anim:'Piilota rullaanimaatio',
rng_title:'Lemmikkieläimet RNG-huijaukset',
rng_sec_rolling:'Rullaa',
rng_sec_crafting:'Askartelu',
rng_sec_combat:'Taistele',
rng_sec_upgrades:'Päivitykset',
rng_sec_areas:'Alueet',
rng_actions:'Toiminnot',
log_craft:'Käsityö',
log_success:'MENESTYS',
log_fail:'epäonnistua',
log_unlocking_area:'Avausalue',
log_area_unlocked:'Alue lukitsematon',
log_equipped:'Varustettu',
log_bought_upgrade:'Ostettu päivitys',
log_teleported_to:'Teleportoitu kohteeseen',
log_rebirthing:'Uudelleensyntyminen',
h_rng:'rng',
h_accts:'Tilit',
s_auto_collect:'Automaattikeräys ansioista',
s_collect_interval:'Keräysväli',
s_chat_fade:'Chatin häivytysaika',
s_name_colors:'Käyttäjänimien värit',
s_chat_enhance:'Keskustelun parannukset',
mes_hint:'Vihje: lisää "mes" käyttäjänimeesi saadaksesi animoidun sateenkaariefektin!',
s_carry_tune:'Kantomelodia (Varastaminen)',
s_pet_pickup_radius:'Lemmikin Varastamissäde',
s_carry_vol:'Kantamisen äänenvoimakkuus',
carry_tune_default:'Oletus',
carry_tune_silent:'Hiljainen',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassinen',
carry_tune_electronic:'Elektroninen',
carry_tune_epic:'Eeppinen',
carry_tune_folk:'Kansanmusiikki',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metalli',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Jatkuva halaus',
s_protips:'Pro-vinkit',
s_hideprotips:'Piilota Pro-vinkkini',
s_show_exp_modes:'Näytä kokeelliset tilat',
s_showcoords:'Näytä koordinaatit',
s_showfps:'Näytä FPS',
s_showtargetinfo:'Näytä kohteen tiedot',
s_showobj:'Näytä kokonaisuus / mesh Count',
s_copy_dbg:'Kopioi debug-lokit',
s_copy_json:'Kopioi JSON',
s_clear_dbg:'Tyhjennä',
h_fly:'Lennä',
h_speed:'Nopeushäkki',
h_waypoints:'Reittipiseet',
h_autolock:'Automaattilukitus',
h_invisible:'Näkymätön',
h_cuddle:'Halaus',
h_pets:'Lemmikit',
h_snipe:'Sniper',
h_help:'Ohje',
h_settings:'Asetukset',
h_prv:'Yksityinen huone',
h_tc:'Suorita torni',
h_tcl:'Tornisilmukka',
kb_fly:'Lennä (vaihto)',
kb_fly_down:'Lennä alas',
kb_set_home:'Aseta koti',
kb_home:'Koti',
kb_back:'Takaisin',
kb_cuddle:'Halauspaneeli',
kb_settings:'Asetukset',
kb_pets:'Lemmikkiselain',
kb_slots:'Reittipistevarastot',
kb_snipe:'Sniper-paneeli',
kb_snipe_toggle:'Sniper päälle/pois',
kb_attack:'Hyökkää lähimpään',
kb_help:'Ohje',
kb_tower:'Suorita torni',
kb_tower_loop:'Tornisilmukka',
kb_invisible:'Näkymätön',
kb_first_person:'Ensimmäinen persoona',
kb_autolock:'automaattisesti lukittava pohja',
kb_prv:'Yksityinen huone',
kb_rng:'RNG',
kb_accts:'Tilit',
pets_title:'Lemmikit',
pets_search_placeholder:'esim. villi kissa, kultainen TAI timantti, (kultainen TAI smaragdi) villi',
pets_hint:'Sanat yhdistetään JA-sanalla. Käytä OR vaihtoehdoille, sulkeita ryhmittelyyn. * tai % jokerimerkkeinä. Laita - sanan eteen sulkeaksesi sen pois.',
pets_empty:'Lemmikkejä ei löytynyt',
pt_name:'Nimi',
pt_mut:'Mutaatio',
pt_rar:'Harvinaisuus',
pt_owner:'Omistaja',
pt_worth:'Arvo',
pt_income:'Tulo/s',
pt_dist:'Etäis',
slots_title:'Reittipistevarastot',
sniper_title:'Lemmikkisniper',
sniper_tbl_pet:'Lemmikki',
sniper_tbl_owner:'Omistaja',
sniper_tbl_lock:'Lukko',
sniper_placeholder:'esim. halo, golden OR diamond, emerald dragon',
sniper_hint:'Sanat yhdistetään JA-sanalla. Käytä OR vaihtoehdoille, sulkeita ryhmittelyyn. * tai % jokerimerkkeinä. Laita - sanan eteen sulkeaksesi sen pois.',
sniper_room_col:'Huone',
sniper_scans_col:'Skannaukset',
sniper_top_pet_col:'Huippu lemmikki',
sniper_top_worth_col:'Huippu arvoinen',
sniper_top_owner_col:'Huippuomistaja',
sniper_age_col:'Ikä',
sniper_join_btn:'Liity',
sniper_full:'Täynnä',
sniper_join_failed:'Kohdehuone täynnä',
sniper_scanning_rooms:'Etsitään muita huoneita…',
sniper_scan_off:'Automaattinen metsästys',
sniper_scan_next:'Seuraava skannaus sisään',
sniper_scan_idle:'Idle – odottaa skannausta',
sniper_auto_place:'Automaattisijoitus tukikohtaan',
sniper_place_desc:'(laittaa varastetun lemmikin tukikohdan paikkaan)',
sniper_auto_drop:'Pudota automaattisesti ei-vastaavat lemmikit Aalloissa',
sniper_drop_desc:'(pudottaa villit lemmikit, jotka eivät vastaa suodatinta, päivittääkseen spawn-varannon)',
sniper_auto_hunt:'Automaattimetsästys',
sniper_hunt_desc:'(skannaa muita huoneita, hyppää parhaaseen osumaan)',
sniper_auto_sell:'Automaattimyynti Varkaudessa',
sniper_sell_desc:'(myy halvimman kun tukikohta on täynnä)',
sniper_lockdown:'Lukitus ≤',
sniper_lockdown_hint:'Varasta kohteita tukikohdista, joissa ≤ tämä jäljellä oleva aika. 0 = vain lukitsemattomat.',
sniper_join_grace:'Liity armoon',
sniper_start:'Aloita',
sniper_stop:'Pysäytä',
sniper_idle:'Odottaa',
sniper_no_filter:'Ei suodatinta',
sniper_waiting:'Odotetaan peliä...',
sniper_hold_pause:'Pitää lemmikkiä — tauolla',
sniper_stolen_pause:'pitää meidän lemmikkiä — tauolla',
sniper_cooldown:'Jäähtymisaika',
sniper_hopping:'Vaihdetaan palvelinta...',
sniper_na:'Sniper ei saatavilla aulassa',
sniper_wait_lock:'Odotetaan lukitustietoja...',
sniper_locked:'Tukikohta lukittu — ohitetaan...',
sniper_full_eggs:'Tukikohta täynnä — vain munia, ei voi myydä',
sniper_stealing:'Varastetaan',
sniper_dropped:'Pudotettu',
sniper_holding:'Pitää',
sniper_place:'Aseta tukikohtaan!',
sniper_steal_mode:'[Varkaus]',
sniper_theft_nohop:'Lemmikkiä varastaa',
sniper_nohop_suffix:'— ei hyppyä',
sniper_sniping:'Snipaus:',
sniper_options:'Valinnat',
sniper_drop_fail_status:'Pudotus epäonnistui!',
sniper_hotkey_label:'Pikanäppäin:',
sniper_panel_label:'Paneeli:',
sniper_grab_fail:'Kaappaus epäonnistui. Yritetään uudelleen...',
sniper_our_pet_stolen:'Meidän lemmikki varastettu — 8s jäähtymisaika',
sniper_hopping_short:'Hypätään...',
sniper_base_full:'Pohja täynnä',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'JUOKSE',
pet_teleport_title:'Teleportoi',
pet_pickup_title:'Poimia',
owner_yours:'Sinun',
owner_wild:'Villi',
footer_gf:'Rasvainen haarukka',
copy_ok:'Kopioitu',
copy_failed:'Kopiointi epäonnistui',
s_invis_on_fly:'Näkymätön lentäessä',
snipe_walk_home:'Kävele kotiin varastamisen jälkeen',
snipe_walk_home_desc:'Kävele takaisin tukikohtaasi',
sniper_afk_sell:'AFK myy ei-vastaavat lemmikit',
sniper_afk_sell_desc:'(kun toimettomana 5s, myy suodatinta vastaamattomat lemmikit arvon mukaan — vain aallot)',
hb_fly:'LEN',
hb_lck:'LKO',
hb_inv:'NÄK',
hb_cud:'HAL',
hb_pet:'ELÄ',
hb_snp:'TAR',
hb_cfg:'ASE',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'TILI',
ban_title:'Yhteys estetty',
ban_sub:'IP-osoitteesi on rajoitettu Meelandin toimesta',
ban_body:'Ei hätää — tämä on helppo korjata! Ilmainen VPN antaa sinulle uuden IP-osoitteen, jotta voit pelata taas.',
ban_pick:'Nopea ratkaisu — valitse yksi:',
ban_warp:'ilmainen, rajoittamaton, yhden klikkauksen asennus',
ban_warp_store:'saatavilla myös App Storessa ja Play Storessa nimellä "1.1.1.1"',
ban_proton:'ei datarajaa, 5 maata',
ban_steps:'Asenna → yhdistä → päivitä tämä sivu. Siinä kaikki!',
ban_ok:'Selvä',
warn_title:'Käytä aina VPN:ää',
warn_body:'Pelaa aina <b>VPN</b> päällä.',
warn_ok:'Selvä',
loading:'Ladataan',
tcl_loading:'Täysi tornisilmukka käynnissä. Paina {key} pysäyttääksesi.',
hop_search:'Etsitään ottelua',
hop_match:'Löytyi {name} — liitytään',
hop_flee:'Pako tunkeilijalta',
hop_reconnect:'Yhdistetään uudelleen',
hop_reload:'Ladataan uudelleen',
hop_fall:'Toipuminen putoamisesta',
hop_join:'Liitytään huoneeseen',
lock_off:'POIS',
lock_unlocked:'AVATTU',
desc_intro:'MES tarjoaa sinulle Wallhackin, automaattisen viljelyn, harvinaisten lemmikkieläinten kokoelman, nopeuden lisäämisen, lennon, näkymättömyyden ja paljon muuta Meelandissa',
desc_free:'100% ilmainen, aina. Palautetta? Jätä ⭐ positiivinen arvostelu — se pitää päivitykset käynnissä.',
desc_h_movement:'Liikkuminen',
desc_h_combat:'Taistelu',
desc_h_tuning:'Hienosäätö',
desc_h_pets:'Lemmikit & Varkaus',
desc_h_economy:'Talous',
desc_h_custom:'Mukauttaminen',
desc_h_extras:'Lisät',
desc_fly:'Lentäminen',
desc_fly_d:'Space ylös, F alas. Säädettävä nopeus.',
desc_speed:'Vilkkua',
desc_speed_d:'Shift teleporttaa välittömästi.',
desc_noclip:'Seinien läpi',
desc_noclip_d:'Kävele seinien läpi.',
desc_walls:'Seinillä Kävely',
desc_walls_d:'Kiipeä millä tahansa pinnalla.',
desc_waypts:'Reittipisteet',
desc_waypts_d:'Tallenna 10 sijaintia. Teleportti yhdellä näppäimellä. <kbd>Z</kbd> vaihtamiseen.',
desc_invis:'Näkymätön',
desc_invis_d:'Paina CapsLock kadotaksesi kokonaan.',
desc_fpv:'FPV',
desc_fpv_d:'Paina <kbd>.</kbd> vaihtaaksesi ensimmäisen persoonan kameraan.',
desc_anti_invis:'Anti-näkymättömyys',
desc_anti_invis_d:'Näe näkymättömät pelaajat haamuina.',
desc_xray:'Röntgennäkö',
desc_xray_d:'Näe pelaajat seinien läpi Murhamysteerissä. Punainen = murhaaja, vihreä = siviili.',
desc_nodeathh:'Kuolematon',
desc_nodeath_d:'Immuuni kaikelle vahingolle.',
desc_antikb:'Ei takaiskua',
desc_antikb_d:'Sinua ei voi työntää.',
desc_attack:'Välitön hyökkäys',
desc_attack_d:'<kbd>G</kbd> teleporttaa lähimmän pelaajan luo ja lyö.',
desc_jumpgrav:'Hyppy ja Painovoima',
desc_jumpgrav_d:'Säädettävät kertoimet Asetuksissa.',
desc_fov:'FOV Hallinta',
desc_fov_d:'FOV-liukusäätimet ensimmäisen ja kolmannen persoonan kuvakulmaan.',
desc_autoinvis:'Auto-Näkymätön Lennossa',
desc_autoinvis_d:'Muutu automaattisesti näkymättömäksi lentäessä.',
desc_sniper:'Lemmikkisniper',
desc_sniper_d:'Suodatettujen lemmikkien automaattinen varastaminen. Molemmat tilat.',
desc_prv:'Yksityinen huone',
desc_prv_d:'<kbd>PgDn</kbd> luo yksityisen huoneen nykyisessä tilassa ja liittyy automaattisesti.',
desc_petbrow:'Lemmikkiselain',
desc_petbrow_d:'<kbd>K</kbd> näyttää kaikki lemmikit. Lajittele, suodata, nappaa.',
desc_cuddle:'Halauspaneeli',
desc_cuddle_d:'<kbd>J</kbd> listaa pelaajat etäisyyden mukaan. Klikkaa seurataksesi.',
desc_return:'Automaattinen Paluu',
desc_return_d:'Teleporttaa kotiin varkauden jälkeen.',
desc_autolock:'Automaattilukitus',
desc_autolock_d:'Tukikohta aina lukittuna.',
desc_fountain:'Automaattisuihkulähde',
desc_fountain_d:'Pysyvä 1.5× tuotto. Automaattinen uusinta.',
desc_money:'Ilmainen raha + Tähdet + Timantit',
desc_money_d:'Ei mainoksia tarvita.',
desc_collect:'Automaattinen Keruu',
desc_collect_d:'Lemmikkitulot joka 30s.',
desc_music:'Kuljetusmusiikki',
desc_music_d:'Musiikkia varastaessa. 15 lajia.',
desc_chatfade:'Chatin häipyminen',
desc_chatfade_d:'Hallitse viestien näkyvyyttä. 5–120s.',
desc_emotes:'Lento-emotet',
desc_emotes_d:'Satunnaiset emotet lennon aikana.',
desc_displays:'Näytön Peittokuvat',
desc_displays_d:'Koordinaatit, FPS-laskuri ja kohdetiedot.',
desc_config:'Asetukset',
desc_config_d:'<kbd>M</kbd> toimintoihin, näppäimiin, nopeuksiin.',
desc_langs:'60 Kieltä',
desc_langs_d:'Täydellinen käyttöliittymäkäännös.',
desc_tower:'Suorita torni',
desc_tower_d:'<kbd>Y</kbd> Obby Towerin välittömään voittoon.',
desc_cats:'Kissalatausnäytöt',
desc_cats_d:'Söpöt kissat korvaavat latauksen.',
desc_h_install:'Asennus',
desc_desktop:'Työpöytä (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Asenna <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> tai <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klikkaa Asenna yllä',
desc_inst_open:'Avaa mikä tahansa Meeland-peli — se vain toimii',
desc_mobile:'Mobiili (Android)',
desc_mob_ff:'Asenna <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Androidille</a> Play Storesta',
desc_mob_addon:'Avaa Firefox → Valikko → Lisäosat → asenna <strong>Tampermonkey</strong>',
desc_mob_visit:'Käy tällä sivulla Firefoxissa ja napauta Asenna',
desc_mob_play:'Pelaa Meelandia — kosketettavat HUD-painikkeet ilmestyvät automaattisesti',
desc_ios:'iOS: Apple estää selainlaajennukset kaikissa iOS-selaimissa (mukaan lukien Firefox). Käytä työpöytä- tai Android-selainta.',
desc_h_privacy:'Yksityisyys',
desc_privacy:'Vain asiakaspuolella — mikään data ei poistu selaimestasi'
});
_mk('hr','Hrvatski',{
close:'✕',
refresh:'↻',
go:'Idi',
set:'Postavi',
auto:'Auto',
empty:'prazno',
help_title:'Pomoć',
players_title:'Igrači',
players_empty:'Nisu pronađeni drugi igrači',
settings_title:'Postavke',
settings_reset:'Resetiraj',
tab_gameplay:'Igra',
tab_economy:'Ekonomija',
tab_audio:'Zvuk',
tab_advanced:'Napredno',
tab_hud:'HUD',
tab_keys:'Tipke',
tab_accounts:'Računi',
acct_current:'Trenutni',
acct_new:'Novi',
acct_import:'Uvezi',
acct_switch:'Promijeni',
acct_reload:'Ponovno učitaj',
acct_delete:'Obriši',
acct_cancel:'Odustani',
acct_empty:'Prazno',
acct_token_ph:'Token',
acct_copy:'Kopiraj',
acct_export:'Izvezi',
acct_rename:'Preimenuj',
acct_save:'Spremi',
acct_name_len:'Ime mora imati 4-12 znakova',
acct_name_fail:'Preimenovanje nije uspjelo',
acct_invalid:'Nevažeći',
acct_ready:'Račun spreman. Zatvori Meeland, promijeni IP, zatim ponovno učitaj.',
acct_ip_note:'Uvijek koristi VPN i promijeni IP pri promjeni računa.',
acct_howto:'1. Kliknite Kopiraj za kopiranje poveznice ovog računa.\n2. U drugom pregledniku ili uređaju — ili s prijateljem — otvorite MES.\n3. Kliknite Uvezi i zalijepite poveznicu.',
sh_movement:'Kretanje',
sh_defense:'Obrana',
sh_camera:'Kamera',
sh_overlays:'Prekrivači',
sh_behaviour:'Ponašanje',
sh_buttons:'Gumbi',
sh_language:'Jezik',
sh_chat:'Razgovor',
sh_waves:'Waves',
sh_steal_a_pet:'Ukradi ljubimca',
sh_tower:'Tower',
sh_misc_multi:'Razno (više načina)',
s_noclip:'Bez sudara',
s_fly:'Letjeti',
s_fly_emotes:'Emotikoni leta',
s_base_speed:'Osnovna brzina',
s_jump_mult:'Visina skoka',
s_grav_mult:'Gravitacija',
s_walk_up_walls:'hodati po zidovima',
s_carry_normalize:'Brzina nošenja + skok',
s_invincibility:'Neranjivost',
s_anti_kb:'Anti-odbacivanje',
s_invisible:'Nevidljiv',
s_xray_infection:'Rendgen (Misterij Ubojstva)',
s_ghost_mode:'Duh mod',
s_flee_intruder:'Bježi pri uljezu',
s_first_person:'Prikaz iz prve osobe',
s_fov_first_person:'FOV (1. os.)',
s_fov_third_person:'FOV (3. os.)',
s_fov_vertical_mult:'FOV vertikalni multiplikator',
s_auto_lock:'Auto-zaključaj bazu',
s_auto_fountain:'Auto-fontana (1.5×)',
s_daily_coins:'Dnevni novčići',
s_stars:'Zvijezde',
s_diamonds_tower:'Dijamanti (Toranj)',
s_tower_loop:'Petlja tornja',
s_auto_roll_x25:'Auto roll x25 sreće',
s_auto_craft:'Automatsko izrađivanje',
s_auto_vip_sword:'Automatska kupnja VIP',
s_auto_vip_waves:'Automatska kupnja VIP (Valovi)',
s_direct_kill:'Izravni spam ubijanja',
s_direct_kill_rate:'Brzina ubijanja',
s_auto_buy_upgrades:'Automatska kupnja nadogradnji',
s_boost_coins:'Automatska nadogradnja: novčići',
s_boost_diamonds:'Automatska nadogradnja: dijamanti',
s_boost_luck:'Automatska nadogradnja: Sreća',
s_auto_unlock_areas:'Automatsko otključavanje područja',
s_auto_rebirth:'Automatsko ponovno rođenje',
s_auto_join_tp:'Teleportirajte se u najviše područje',
s_hide_kill_rewards:'Sakrij nagrade za ubojstvo',
s_hide_roll_anim:'Sakrij Roll Animation',
rng_title:'Pets RNG šifre',
rng_sec_rolling:'Kotrljanje',
rng_sec_crafting:'Izrada zanata',
rng_sec_combat:'Borba',
rng_sec_upgrades:'Nadogradnje',
rng_sec_areas:'Područja',
rng_actions:'Radnje',
log_craft:'Zanat',
log_success:'USPJEH',
log_fail:'NEUSPJEH',
log_unlocking_area:'Područje otključavanja',
log_area_unlocked:'Područje otključano',
log_equipped:'Opremljen',
log_bought_upgrade:'Kupljena nadogradnja',
log_teleported_to:'Teleportiran u',
log_rebirthing:'Ponovno rođenje',
h_rng:'rng',
h_accts:'Računi',
s_auto_collect:'Auto-sakupljaj zaradu',
s_collect_interval:'Interval sakupljanja',
s_chat_fade:'Vrijeme brisanja chata',
s_name_colors:'Boje korisničkih imena',
s_chat_enhance:'Poboljšanja chata',
mes_hint:'Savjet: uključite "mes" u svoje korisničko ime za animirani efekt duge!',
s_carry_tune:'Melodija nošenja (Krađa)',
s_pet_pickup_radius:'Radijus Krađe Ljubimca',
s_carry_vol:'Glasnoća nošenja',
carry_tune_default:'Zadano',
carry_tune_silent:'Tiho',
carry_tune_ambient:'Ambijentalni',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasična',
carry_tune_electronic:'Elektronička',
carry_tune_epic:'Epska',
carry_tune_folk:'Narodna',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metal',
carry_tune_pop:'Pop',
carry_tune_punk:'punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Neprekidno maženje',
s_protips:'Pro savjeti',
s_hideprotips:'Sakrij moje Pro savjete',
s_show_exp_modes:'Prikaži eksperimentalne načine',
s_showcoords:'Prikaži koordinate',
s_showfps:'Prikaži FPS',
s_showtargetinfo:'Prikaži info o meti',
s_showobj:'Prikaži entitet / broj mreža',
s_copy_dbg:'Kopiraj debug zapise',
s_copy_json:'Kopiraj JSON',
s_clear_dbg:'Očisti',
h_fly:'Letenje',
h_speed:'Hack brzine',
h_waypoints:'Putne točke',
h_autolock:'Auto-zaključavanje',
h_invisible:'Nevidljiv',
h_cuddle:'Maženje',
h_pets:'Ljubimci',
h_snipe:'Snajper',
h_help:'Pomoć',
h_settings:'Postavke',
h_prv:'Privatna soba',
h_tc:'Završi toranj',
h_tcl:'Petlja tornja',
kb_fly:'Letenje (prebaci)',
kb_fly_down:'Leti dolje',
kb_set_home:'Postavi dom',
kb_home:'Dom',
kb_back:'Natrag',
kb_cuddle:'Panel za maženje',
kb_settings:'Postavke',
kb_pets:'Preglednik ljubimaca',
kb_slots:'Utori putnih točaka',
kb_snipe:'Panel snajpera',
kb_snipe_toggle:'Snajper uklj/isklj',
kb_attack:'Napadni najbližeg',
kb_help:'Pomoć',
kb_tower:'Završi toranj',
kb_tower_loop:'Petlja tornja',
kb_invisible:'Nevidljiv',
kb_first_person:'Prva osoba',
kb_autolock:'Baza s automatskim zaključavanjem',
kb_prv:'Privatna soba',
kb_rng:'RNG',
kb_accts:'Računi',
pets_title:'Ljubimci',
pets_search_placeholder:'npr. divlja maca, zlatna ILI dijamant, (zlatna ILI smaragdna) divlja',
pets_hint:'Riječi se kombiniraju s I. Koristi OR za alternative, zagrade za grupiranje. * ili % kao zamjenski znak. Stavite - ispred riječi da biste je isključili.',
pets_empty:'Ljubimci nisu pronađeni',
pt_name:'Ime',
pt_mut:'Mutacija',
pt_rar:'Rijetkost',
pt_owner:'Vlasnik',
pt_worth:'Vrijednost',
pt_income:'Prihod/s',
pt_dist:'Udal',
slots_title:'Utori putnih točaka',
sniper_title:'Snajper ljubimaca',
sniper_tbl_pet:'Ljubimac',
sniper_tbl_owner:'Vlasnik',
sniper_tbl_lock:'brava',
sniper_placeholder:'npr. halo, golden OR diamond, emerald dragon',
sniper_hint:'Riječi se kombiniraju s I. Koristi OR za alternative, zagrade za grupiranje. * ili % kao zamjenski znak. Stavite - ispred riječi da biste je isključili.',
sniper_room_col:'Soba',
sniper_scans_col:'Skenira',
sniper_top_pet_col:'Vrhunski ljubimac',
sniper_top_worth_col:'Vrhunska vrijednost',
sniper_top_owner_col:'Vrhunski vlasnik',
sniper_age_col:'Starost',
sniper_join_btn:'Pridruži se',
sniper_full:'Pun',
sniper_join_failed:'Ciljana soba puna',
sniper_scanning_rooms:'Tražim druge sobe…',
sniper_scan_off:'Automatski lov isključen',
sniper_scan_next:'Sljedeće skeniranje u',
sniper_scan_idle:'Mirovanje — čekanje na skeniranje',
sniper_auto_place:'Auto-postavi na bazu',
sniper_place_desc:'(stavlja ukradenu životinju u slot baze)',
sniper_auto_drop:'Automatski ispusti nepodudarne ljubimce u Valovima',
sniper_drop_desc:'(ispušta divlje ljubimce koji ne odgovaraju filtru kako bi obnovio pool pojavljivanja)',
sniper_auto_hunt:'Auto-lov',
sniper_hunt_desc:'(skenira druge sobe, skače na najbolji pogodak)',
sniper_auto_sell:'Auto-prodaj pri Krađi',
sniper_sell_desc:'(prodaje najslabijeg kad je baza puna)',
sniper_lockdown:'Zaključavanje ≤',
sniper_lockdown_hint:'Kradi mete na bazama s ≤ ovog preostalog vremena. 0 = samo otključane.',
sniper_join_grace:'Pridružite se milosti',
sniper_start:'Pokreni',
sniper_stop:'Zaustavi',
sniper_idle:'Neaktivan',
sniper_no_filter:'Nema filtra',
sniper_waiting:'Čekanje igre...',
sniper_hold_pause:'Drži ljubimca — pauzirano',
sniper_stolen_pause:'drži našeg ljubimca — pauzirano',
sniper_cooldown:'Hlađenje',
sniper_hopping:'Mijenjam server...',
sniper_na:'Snajper nije dostupan u predvorju',
sniper_wait_lock:'Čekanje podataka o zaključavanju...',
sniper_locked:'Baza zaključana — preskačem...',
sniper_full_eggs:'Baza puna — samo jaja, ne može se prodati',
sniper_stealing:'Kradem',
sniper_dropped:'Ispušteno',
sniper_holding:'Drži',
sniper_place:'Postavi na bazu!',
sniper_steal_mode:'[Krađa]',
sniper_theft_nohop:'Ljubimca krade',
sniper_nohop_suffix:'— bez skoka',
sniper_sniping:'Snajpiranje:',
sniper_options:'Opcije',
sniper_drop_fail_status:'Ispuštanje nije uspjelo!',
sniper_hotkey_label:'Prečac:',
sniper_panel_label:'Ploča:',
sniper_grab_fail:'Hvatanje nije uspjelo. Pokušavam ponovo...',
sniper_our_pet_stolen:'Naš ljubimac ukraden — 8s hlađenja',
sniper_hopping_short:'Skačem...',
sniper_base_full:'Baza puna',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'TRČI',
pet_teleport_title:'Teleportirati',
pet_pickup_title:'Pokupiti',
owner_yours:'Vaš',
owner_wild:'Divlji',
footer_gf:'Masna vilica',
copy_ok:'Kopirano',
copy_failed:'Kopiranje nije uspjelo',
s_invis_on_fly:'Nevidljiv pri letenju',
snipe_walk_home:'Hodaj kući nakon krađe',
snipe_walk_home_desc:'Hodaj natrag do svoje baze',
sniper_afk_sell:'AFK prodaj životinje koje ne odgovaraju',
sniper_afk_sell_desc:'(kad neaktivan 5s, prodaj životinje koje ne odgovaraju filteru po vrijednosti — samo valovi)',
hb_fly:'LET',
hb_lck:'ZKL',
hb_inv:'NEV',
hb_cud:'GRL',
hb_pet:'LJB',
hb_snp:'SNJ',
hb_cfg:'PST',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'RAČ',
ban_title:'Veza blokirana',
ban_sub:'Meeland je ograničio vašu IP adresu',
ban_body:'Ne brinite — to je lako popraviti! Besplatni VPN će vam dati novu IP adresu da opet možete igrati.',
ban_pick:'Brzo rješenje — odaberite jedno:',
ban_warp:'besplatno, neograničeno, postavljanje jednim klikom',
ban_warp_store:'dostupno i u App Store i Play Store kao "1.1.1.1"',
ban_proton:'bez ograničenja podataka, 5 zemalja',
ban_steps:'Instalirajte → povežite se → osvježite ovu stranicu. To je to!',
ban_ok:'Razumijem',
warn_title:'Uvijek koristi VPN',
warn_body:'Uvijek igraj s uključenim <b>VPN</b>-om.',
warn_ok:'Razumijem',
loading:'Učitavanje',
tcl_loading:'Izvršava se puni krug tornja. Pritisnite {key} za zaustavljanje.',
hop_search:'Traženje utakmice',
hop_match:'Pronađen {name} — pridruživanje',
hop_flee:'Bijeg od uljeza',
hop_reconnect:'Ponovno povezivanje',
hop_reload:'Ponovno učitavanje',
hop_fall:'Oporavak od pada',
hop_join:'Pridruživanje sobi',
lock_off:'ISKLJ',
lock_unlocked:'OTKLJUČANO',
desc_intro:'MES vam daje wallhack, auto-farmiranje, kolekciju rijetkih kućnih ljubimaca, povećanje brzine, let, nevidljivost i još mnogo toga u Meelandu',
desc_free:'100% besplatno, zauvijek. Imaš povratne informacije? Ostavi ⭐ pozitivnu recenziju — to održava ažuriranja.',
desc_h_movement:'Kretanje',
desc_h_combat:'Borba',
desc_h_tuning:'Ugađanje',
desc_h_pets:'Ljubimci & Krađa',
desc_h_economy:'Ekonomija',
desc_h_custom:'Prilagodba',
desc_h_extras:'Dodatno',
desc_fly:'Letenje',
desc_fly_d:'Space gore, F dolje. Podesiva brzina.',
desc_speed:'Treptati',
desc_speed_d:'Shift za trenutačnu teleportaciju.',
desc_noclip:'Bez sudara',
desc_noclip_d:'Prolazi kroz zidove.',
desc_walls:'Hodanje po Zidovima',
desc_walls_d:'Penji se po bilo kojoj površini.',
desc_waypts:'Putne točke',
desc_waypts_d:'Spremi 10 pozicija. Teleport jednom tipkom. <kbd>Z</kbd> za prebacivanje.',
desc_invis:'Nevidljiv',
desc_invis_d:'Pritisni CapsLock za potpuni nestanak.',
desc_fpv:'FPV',
desc_fpv_d:'Pritisni <kbd>.</kbd> za prebacivanje kamere u prvo lice.',
desc_anti_invis:'Anti-nevidljivost',
desc_anti_invis_d:'Vidi nevidljive igrače kao duhove.',
desc_xray:'Rentgenski Vid',
desc_xray_d:'Vidite igrače kroz zidove u Misteriju Ubojstva. Crveno = ubojica, zeleno = civil.',
desc_nodeathh:'Besmrtan',
desc_nodeath_d:'Imun na svu štetu.',
desc_antikb:'Anti-odbacivanje',
desc_antikb_d:'Ne možeš biti gurnut.',
desc_attack:'Trenutni napad',
desc_attack_d:'<kbd>G</kbd> teleportira do najbližeg igrača i udara.',
desc_jumpgrav:'Skok i Gravitacija',
desc_jumpgrav_d:'Podesivi množitelji u Postavkama.',
desc_fov:'Kontrola FOV-a',
desc_fov_d:'Klizači FOV-a za prvo i treće lice.',
desc_autoinvis:'Auto-Nevidljiv pri Letu',
desc_autoinvis_d:'Postani nevidljiv automatski dok letiš.',
desc_sniper:'Snajper ljubimaca',
desc_sniper_d:'Automatska krađa filtriranih ljubimaca. Oba načina.',
desc_prv:'Privatna soba',
desc_prv_d:'<kbd>PgDn</kbd> stvara privatnu sobu u trenutnom načinu i automatski se pridružuje.',
desc_petbrow:'Preglednik ljubimaca',
desc_petbrow_d:'<kbd>K</kbd> prikazuje sve ljubimce. Sortiraj, filtriraj, zgrabi.',
desc_cuddle:'Panel za maženje',
desc_cuddle_d:'<kbd>J</kbd> popis igrača po udaljenosti. Klikni za praćenje.',
desc_return:'Automatski Povratak',
desc_return_d:'Teleportira kući nakon krađe.',
desc_autolock:'Auto-zaključavanje',
desc_autolock_d:'Baza uvijek zaključana.',
desc_fountain:'Auto-fontana',
desc_fountain_d:'Trajni profit 1.5×. Automatsko obnavljanje.',
desc_money:'Besplatan novac + Zvijezde + Dijamanti',
desc_money_d:'Bez reklama.',
desc_collect:'Automatsko Skupljanje',
desc_collect_d:'Prihod od ljubimaca svakih 30s.',
desc_music:'Glazba prijenosa',
desc_music_d:'Glazba dok kradeš. 15 žanrova.',
desc_chatfade:'Nestajanje chata',
desc_chatfade_d:'Kontroliraj vidljivost poruka. 5–120s.',
desc_emotes:'Emote letenja',
desc_emotes_d:'Nasumični emote tijekom leta.',
desc_displays:'Prekrivači Zaslona',
desc_displays_d:'Koordinate, brojač FPS-a i info o meti.',
desc_config:'Postavke',
desc_config_d:'<kbd>M</kbd> za funkcije, tipke, brzine.',
desc_langs:'60 Jezika',
desc_langs_d:'Potpuni prijevod sučelja.',
desc_tower:'Završi toranj',
desc_tower_d:'<kbd>Y</kbd> za trenutačnu pobjedu u Obby Toweru.',
desc_cats:'Zasloni učitavanja s mačkama',
desc_cats_d:'Slatke mačke zamjenjuju učitavanje.',
desc_h_install:'Instalacija',
desc_desktop:'Radna površina (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Instaliraj <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ili <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klikni Instaliraj iznad',
desc_inst_open:'Otvori bilo koju Meeland igru — jednostavno radi',
desc_mobile:'Mobitel (Android)',
desc_mob_ff:'Instaliraj <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox za Android</a> iz Play Storea',
desc_mob_addon:'Otvori Firefox → Izbornik → Dodaci → instaliraj <strong>Tampermonkey</strong>',
desc_mob_visit:'Posjeti ovu stranicu u Firefoxu i dodirni Instaliraj',
desc_mob_play:'Igraj Meeland — dodirni HUD gumbi se pojavljuju automatski',
desc_ios:'iOS: Apple blokira proširenja preglednika u svim iOS preglednicima (uključujući Firefox). Koristi desktop ili Android preglednik.',
desc_h_privacy:'Privatnost',
desc_privacy:'Samo na strani klijenta — nikakvi podaci ne napuštaju tvoj preglednik'
});
_mk('hu','Magyar',{
close:'✕',
refresh:'↻',
go:'Menj',
set:'Beállítás',
auto:'Auto',
empty:'üres',
help_title:'Súgó',
players_title:'Játékosok',
players_empty:'Nem található más játékos',
settings_title:'Beállítások',
settings_reset:'Visszaállítás',
tab_gameplay:'Játék',
tab_economy:'Gazdaság',
tab_audio:'Hang',
tab_advanced:'Speciális',
tab_hud:'HUD',
tab_keys:'Billentyűk',
tab_accounts:'Fiókok',
acct_current:'Aktuális',
acct_new:'Új',
acct_import:'Importálás',
acct_switch:'Váltás',
acct_reload:'Újratöltés',
acct_delete:'Törlés',
acct_cancel:'Mégse',
acct_empty:'Üres',
acct_token_ph:'Token',
acct_copy:'Másolás',
acct_export:'Exportálás',
acct_rename:'Átnevezés',
acct_save:'Mentés',
acct_name_len:'A névnek 4-12 karakterből kell állnia',
acct_name_fail:'Átnevezés sikertelen',
acct_invalid:'Érvénytelen',
acct_ready:'Fiók kész. Zárd be a Meelandot, válts IP-t, majd töltsd újra.',
acct_ip_note:'Fiókváltáskor mindig használj VPN-t és válts IP-t.',
acct_howto:'1. Kattints a Másolásra a fiók linkjének másolásához.\n2. Másik böngészőben vagy eszközön — vagy egy baráttal — nyisd meg a MES-t.\n3. Kattints az Importálásra és illeszd be a linket.',
sh_movement:'Mozgás',
sh_defense:'Védelem',
sh_camera:'Kamera',
sh_overlays:'Ráfedések',
sh_behaviour:'Viselkedés',
sh_buttons:'Gombok',
sh_language:'Nyelv',
sh_chat:'Csevegés',
sh_waves:'Waves',
sh_steal_a_pet:'Kedvenc lopása',
sh_tower:'Tower',
sh_misc_multi:'Egyéb (több mód)',
s_noclip:'Falakon át',
s_fly:'Repül',
s_fly_emotes:'Repülés emoték',
s_base_speed:'Alapsebesség',
s_jump_mult:'Ugrás magassága',
s_grav_mult:'Gravitáció',
s_walk_up_walls:'felmenni a falakra',
s_carry_normalize:'Carry Speed + Jump',
s_invincibility:'Sebezhetétlenség',
s_anti_kb:'Anti-visszalökés',
s_invisible:'Láthatatlan',
s_xray_infection:'Röntgen (Gyilkossági Rejtély)',
s_ghost_mode:'Szellem mód',
s_flee_intruder:'Menekülés betolakodónál',
s_first_person:'Első személyű nézet',
s_fov_first_person:'FOV (1. sz.)',
s_fov_third_person:'FOV (3. sz.)',
s_fov_vertical_mult:'FOV függőleges szorzó',
s_auto_lock:'Auto-zárolás bázis',
s_auto_fountain:'Auto-szökőkút (1.5×)',
s_daily_coins:'Napi érmék',
s_stars:'Csillagok',
s_diamonds_tower:'Gyémántok (Torony)',
s_tower_loop:'Torony ciklus',
s_auto_roll_x25:'Auto roll x25 szerencse',
s_auto_craft:'Automatikus készítés',
s_auto_vip_sword:'VIP automatikus vásárlása',
s_auto_vip_waves:'VIP automatikus vásárlása (Hullámok)',
s_direct_kill:'Közvetlen kill-spam',
s_direct_kill_rate:'Ölési sebesség',
s_auto_buy_upgrades:'Automatikus vásárlás frissítések',
s_boost_coins:'Automatikus frissítés: érmék',
s_boost_diamonds:'Automatikus frissítés: gyémántok',
s_boost_luck:'Automatikus frissítés: Szerencse',
s_auto_unlock_areas:'Területek automatikus feloldása',
s_auto_rebirth:'automatikus újjászületés',
s_auto_join_tp:'Teleportálj a legmagasabb területre',
s_hide_kill_rewards:'elrejteni kill jutalmakat',
s_hide_roll_anim:'Roll animáció elrejtése',
rng_title:'Háziállatok RNG csal',
rng_sec_rolling:'Gördülő',
rng_sec_crafting:'Kézműves',
rng_sec_combat:'Harc',
rng_sec_upgrades:'Frissítések',
rng_sec_areas:'Területek',
rng_actions:'Akciók',
log_craft:'Hajó',
log_success:'SIKER',
log_fail:'nem sikerül',
log_unlocking_area:'Feloldási terület',
log_area_unlocked:'Terület feloldva',
log_equipped:'Felszerelt',
log_bought_upgrade:'Vásárolt frissítés',
log_teleported_to:'Teleportálva ide',
log_rebirthing:'Újjászületés',
h_rng:'rng',
h_accts:'Fiókok',
s_auto_collect:'Auto-bevétel beszedés',
s_collect_interval:'Beszedési időköz',
s_chat_fade:'Csevegés halványítási ideje',
s_name_colors:'Felhasználónév színek',
s_chat_enhance:'Chat fejlesztések',
mes_hint:'Tipp: adjon "mes" a felhasználónevéhez az animált szivárványhatásért!',
s_carry_tune:'Hordozás dallama (Lopás)',
s_pet_pickup_radius:'Kisállat Lopás Sugara',
s_carry_vol:'Hordozás hangereje',
carry_tune_default:'Alapértelmezett',
carry_tune_silent:'Csendes',
carry_tune_ambient:'Környező',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasszikus',
carry_tune_electronic:'Elektronikus',
carry_tune_epic:'Epikus',
carry_tune_folk:'Népi',
carry_tune_funk:'Funk',
carry_tune_jazz:'Dzsessz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Fém',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Szikla',
s_cont_cuddle:'Folyamatos ölelés',
s_protips:'Profi tippek',
s_hideprotips:'Saját profi tippjeim elrejtése',
s_show_exp_modes:'Kísérleti módok megjelenítése',
s_showcoords:'Koordináták mutatása',
s_showfps:'FPS megjelenítése',
s_showtargetinfo:'Cél info megjelenítése',
s_showobj:'Entitás/hálószám megjelenítése',
s_copy_dbg:'Debug naplók másolása',
s_copy_json:'JSON másolása',
s_clear_dbg:'Törlés',
h_fly:'Repülés',
h_speed:'Sebesség hack',
h_waypoints:'Útvonalpontok',
h_autolock:'Auto-zárolás',
h_invisible:'Láthatatlan',
h_cuddle:'Ölelés',
h_pets:'Háziállatok',
h_snipe:'Mesterlövész',
h_help:'Súgó',
h_settings:'Beállítások',
h_prv:'Privát szoba',
h_tc:'Torony befejezése',
h_tcl:'Torony ciklus',
kb_fly:'Repülés (váltás)',
kb_fly_down:'Repülés lefelé',
kb_set_home:'Otthon beállítása',
kb_home:'Otthon',
kb_back:'Vissza',
kb_cuddle:'Ölelés panel',
kb_settings:'Beállítások',
kb_pets:'Háziállat böngésző',
kb_slots:'Útvonalpont helyek',
kb_snipe:'Mesterlövész panel',
kb_snipe_toggle:'Mesterlövész be/ki',
kb_attack:'Legközelebbi támadása',
kb_help:'Súgó',
kb_tower:'Torony befejezése',
kb_tower_loop:'Torony ciklus',
kb_invisible:'Láthatatlan',
kb_first_person:'Első személy',
kb_autolock:'automatikusan záródó alap',
kb_prv:'Privát szoba',
kb_rng:'RNG',
kb_accts:'Fiókok',
pets_title:'Háziállatok',
pets_search_placeholder:'például vad cica, arany VAGY gyémánt, (arany VAGY smaragd) vad',
pets_hint:'A szavak ÉS-sel kombinálódnak. Használj OR-t alternatívákhoz, zárójeleket csoportosításhoz. * vagy % helyettesítő karakterként. Tegyél - egy szó elé, hogy kizárd.',
pets_empty:'Nem található háziállat',
pt_name:'Név',
pt_mut:'Mutáció',
pt_rar:'Ritkaság',
pt_owner:'Tulajdonos',
pt_worth:'Érték',
pt_income:'Bevétel/s',
pt_dist:'Táv',
slots_title:'Útvonalpont helyek',
sniper_title:'Háziállat mesterlövész',
sniper_tbl_pet:'Kedvenc',
sniper_tbl_owner:'Tulajdonos',
sniper_tbl_lock:'Zár',
sniper_placeholder:'pl. halo, golden OR diamond, emerald dragon',
sniper_hint:'A szavak ÉS-sel kombinálódnak. Használj OR-t alternatívákhoz, zárójeleket csoportosításhoz. * vagy % helyettesítő karakterként. Tegyél - egy szó elé, hogy kizárd.',
sniper_room_col:'Szoba',
sniper_scans_col:'Szkennel',
sniper_top_pet_col:'top kisállat',
sniper_top_worth_col:'felső értékű',
sniper_top_owner_col:'Legfelső tulajdonos',
sniper_age_col:'Kor',
sniper_join_btn:'Csatlakozás',
sniper_full:'Tele',
sniper_join_failed:'A célszoba megtelt',
sniper_scanning_rooms:'Más szobák keresése…',
sniper_scan_off:'Automatikus vadászat',
sniper_scan_next:'Következő beolvasás',
sniper_scan_idle:'Idle – várakozás a beolvasásra',
sniper_auto_place:'Autom. elhelyezés a bázison',
sniper_place_desc:'(az ellopott kisállatot a bázis-slotba helyezi)',
sniper_auto_drop:'Nem egyező állatok automatikus ledobása a Hullámokban',
sniper_drop_desc:'(ledobja a szűrőnek nem megfelelő vadállatokat, hogy felfrissítse a spawn-készletet)',
sniper_auto_hunt:'Auto-vadászat',
sniper_hunt_desc:'(más szobákat pásztáz, a legjobb találathoz ugrik)',
sniper_auto_sell:'Auto-eladás Lopásnál',
sniper_sell_desc:'(eladja a leggyengébbet, ha a bázis tele van)',
sniper_lockdown:'Zárolás ≤',
sniper_lockdown_hint:'Lopási célpontok ≤ ennyi hátralévő idővel. 0 = csak nyitott.',
sniper_join_grace:'Csatlakozz a kegyelemhez',
sniper_start:'Indítás',
sniper_stop:'Leállítás',
sniper_idle:'Inaktív',
sniper_no_filter:'Nincs szűrő',
sniper_waiting:'Várakozás a játékra...',
sniper_hold_pause:'Háziállatot tart — szünetelve',
sniper_stolen_pause:'tartja a háziállatunkat — szünetelve',
sniper_cooldown:'Lehűlés',
sniper_hopping:'Szerver váltás...',
sniper_na:'A mesterlövész nem elérhető az előszobában',
sniper_wait_lock:'Várakozás zárolási adatokra...',
sniper_locked:'Bázis zárolva — kihagyás...',
sniper_full_eggs:'Bázis tele — csak tojások, nem eladható',
sniper_stealing:'Lopás',
sniper_dropped:'Ledobva',
sniper_holding:'Tartja',
sniper_place:'Helyezd a bázisra!',
sniper_steal_mode:'[Lopás]',
sniper_theft_nohop:'Háziállatot lopja',
sniper_nohop_suffix:'— nincs ugrás',
sniper_sniping:'Mesterlövészet:',
sniper_options:'Beállítások',
sniper_drop_fail_status:'Ledobás sikertelen!',
sniper_hotkey_label:'Gyorsbillentyű:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Megragadás sikertelen. Újrapróbálás...',
sniper_our_pet_stolen:'Háziállatunkat ellopták — 8mp lehűlés',
sniper_hopping_short:'Ugrás...',
sniper_base_full:'Tele az alap',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleportál',
pet_pickup_title:'Vedd fel',
owner_yours:'A tiéd',
owner_wild:'Vad',
footer_gf:'Zsíros villa',
copy_ok:'Másolva',
copy_failed:'Másolás sikertelen',
s_invis_on_fly:'Láthatatlan repülés közben',
snipe_walk_home:'Sétálj haza lopás után',
snipe_walk_home_desc:'Sétálj vissza a bázisodra',
sniper_afk_sell:'AFK nem illő kisállatok eladása',
sniper_afk_sell_desc:'(ha 5mp tétlen, add el a szűrőnek nem megfelelő kisállatokat érték szerint — csak hullámok)',
hb_fly:'REP',
hb_lck:'ZÁR',
hb_inv:'LÁT',
hb_cud:'ÖLE',
hb_pet:'ÁLL',
hb_snp:'LÖV',
hb_cfg:'BEÁ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'FIÓK',
ban_title:'Kapcsolat letiltva',
ban_sub:'Az IP-címedet a Meeland korlátozta',
ban_body:'Ne aggódj — ezt könnyű megoldani! Egy ingyenes VPN új IP-címet ad, hogy újra játszhass.',
ban_pick:'Gyors megoldás — válassz egyet:',
ban_warp:'ingyenes, korlátlan, egykattintásos beállítás',
ban_warp_store:'elérhető az App Store-ban és Play Store-ban is "1.1.1.1" néven',
ban_proton:'nincs adatkorlát, 5 ország',
ban_steps:'Telepítsd → csatlakozz → frissítsd ezt az oldalt. Ennyi az egész!',
ban_ok:'Értem',
warn_title:'Mindig használj VPN-t',
warn_body:'Játssz mindig bekapcsolt <b>VPN</b>-nel.',
warn_ok:'Értem',
loading:'Betöltés',
tcl_loading:'A teljes toronyciklus fut. Nyomja meg a {key} gombot a leállításhoz.',
hop_search:'Meccs keresése',
hop_match:'Megtalálva: {name} — csatlakozás',
hop_flee:'Menekülés a betolakodó elől',
hop_reconnect:'Újracsatlakozás',
hop_reload:'Újratöltés',
hop_fall:'Helyreállítás esés után',
hop_join:'Csatlakozás a szobához',
lock_off:'KI',
lock_unlocked:'FELOLDVA',
desc_intro:'A MES falhackot, automatikus gazdálkodást, ritka kisállat-gyűjtést, sebességnövelést, repülést, láthatatlanságot és még sok mást kínál Meelandben',
desc_free:'100%-ban ingyenes, örökre. Van visszajelzésed? Hagyj egy ⭐ pozitív értékelést — ez tartja fenn a frissítéseket.',
desc_h_movement:'Mozgás',
desc_h_combat:'Harc',
desc_h_tuning:'Hangolás',
desc_h_pets:'Háziállatok & Lopás',
desc_h_economy:'Gazdaság',
desc_h_custom:'Testreszabás',
desc_h_extras:'Extrák',
desc_fly:'Repülés',
desc_fly_d:'Space felfelé, F lefelé. Állítható sebesség.',
desc_speed:'Pislogás',
desc_speed_d:'Shift az azonnali teleportáláshoz.',
desc_noclip:'Falakon át',
desc_noclip_d:'Sétálj át a falakon.',
desc_walls:'Falakon Járás',
desc_walls_d:'Mássz meg bármilyen felületet.',
desc_waypts:'Útvonalpontok',
desc_waypts_d:'Ments 10 pozíciót. Teleport egy gombbal. <kbd>Z</kbd> váltáshoz.',
desc_invis:'Láthatatlan',
desc_invis_d:'Nyomd meg a CapsLock-ot a teljes eltűnéshez.',
desc_fpv:'FPV',
desc_fpv_d:'Nyomd meg a <kbd>.</kbd> billentyűt az első személyű kamerához.',
desc_anti_invis:'Anti-láthatatlanság',
desc_anti_invis_d:'Lásd a láthatatlan játékosokat szellemként.',
desc_xray:'Röntgen Látás',
desc_xray_d:'Lásd a játékosokat a falakon át a Gyilkossági Rejtélyben. Piros = gyilkos, zöld = civil.',
desc_nodeathh:'Halhatatlan',
desc_nodeath_d:'Immunítás az összes sebzéssel szemben.',
desc_antikb:'Anti-visszalökés',
desc_antikb_d:'Nem tudsz ellökni.',
desc_attack:'Azonnali támadás',
desc_attack_d:'<kbd>G</kbd> teleportál a legközelebbi játékoshoz és üt.',
desc_jumpgrav:'Ugrás és Gravitáció',
desc_jumpgrav_d:'Állítható szorzók a Beállításokban.',
desc_fov:'FOV Szabályozás',
desc_fov_d:'FOV csúszkák első és harmadik személyű nézethez.',
desc_autoinvis:'Auto-Láthatatlan Repülésnél',
desc_autoinvis_d:'Legyél automatikusan láthatatlan repülés közben.',
desc_sniper:'Háziállat mesterlövész',
desc_sniper_d:'Szűrt állatok automatikus lopása. Mindkét mód.',
desc_prv:'Privát szoba',
desc_prv_d:'<kbd>PgDn</kbd> privát szobát hoz létre az aktuális módban és automatikusan csatlakozik.',
desc_petbrow:'Háziállat böngésző',
desc_petbrow_d:'<kbd>K</kbd> megmutatja az összes állatot. Rendezd, szűrd, kapd el.',
desc_cuddle:'Ölelés panel',
desc_cuddle_d:'<kbd>J</kbd> játékosok távolság szerint. Kattints a követéshez.',
desc_return:'Automatikus Visszatérés',
desc_return_d:'Teleportál haza lopás után.',
desc_autolock:'Auto-zárolás',
desc_autolock_d:'Bázis mindig zárva.',
desc_fountain:'Auto-szökőkút',
desc_fountain_d:'Állandó 1.5× profit. Automatikus megújítás.',
desc_money:'Ingyenes pénz + Csillagok + Gyémántok',
desc_money_d:'Hirdetések nélkül.',
desc_collect:'Automatikus Gyűjtés',
desc_collect_d:'Állatjövedelem 30 másodpercenként.',
desc_music:'Szállítási zene',
desc_music_d:'Zene lopás közben. 15 műfaj.',
desc_chatfade:'Chat eltűnése',
desc_chatfade_d:'Üzenet láthatóság szabályozása. 5–120mp.',
desc_emotes:'Repülő emotek',
desc_emotes_d:'Véletlenszerű emotek repülés közben.',
desc_displays:'Kijelző Ráfedések',
desc_displays_d:'Koordináták, FPS-számláló és célpont info.',
desc_config:'Beállítások',
desc_config_d:'<kbd>M</kbd> funkciókhoz, gombokhoz, sebességekhez.',
desc_langs:'60 Nyelv',
desc_langs_d:'Teljes felület-fordítás.',
desc_tower:'Torony befejezése',
desc_tower_d:'<kbd>Y</kbd> az Obby Tower azonnali megnyeréséhez.',
desc_cats:'Macskás betöltőképernyők',
desc_cats_d:'Aranyos macskák helyettesítik a betöltést.',
desc_h_install:'Telepítés',
desc_desktop:'Asztal (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Telepítsd a <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a>-t vagy a <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>-t',
desc_inst_click:'Kattints a fenti Telepítés gombra',
desc_inst_open:'Nyiss meg bármely Meeland játékot — egyszerűen működik',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Telepítsd a <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Androidra</a> alkalmazást a Play Áruházból',
desc_mob_addon:'Nyisd meg a Firefox → Menü → Kiegészítők → telepítsd a <strong>Tampermonkey</strong>-t',
desc_mob_visit:'Látogasd meg ezt az oldalt Firefoxban és koppints a Telepítés gombra',
desc_mob_play:'Játssz Meelandet — az érintős HUD gombok automatikusan megjelennek',
desc_ios:'iOS: Az Apple blokkolja a böngészőbővítményeket minden iOS böngészőben (beleértve a Firefoxot). Használj asztali vagy Android böngészőt.',
desc_h_privacy:'Adatvédelem',
desc_privacy:'Csak kliens oldali — semmilyen adat nem hagyja el a böngésződet'
});
_mk('lt','Lietuvių',{
close:'✕',
refresh:'↻',
go:'Eiti',
set:'Nustatyti',
auto:'Automatinis',
empty:'tuščia',
help_title:'Pagalba',
players_title:'Žaidėjai',
players_empty:'Kitų žaidėjų nerasta',
settings_title:'Nustatymai',
settings_reset:'Atstatyti',
tab_gameplay:'Žaidimas',
tab_economy:'Ekonomika',
tab_audio:'Garsas',
tab_advanced:'Išplėstiniai',
tab_hud:'HUD',
tab_keys:'Klavišai',
tab_accounts:'Paskyros',
acct_current:'Dabartinė',
acct_new:'Nauja',
acct_import:'Importuoti',
acct_switch:'Perjungti',
acct_reload:'Perkrauti',
acct_delete:'Ištrinti',
acct_cancel:'Atšaukti',
acct_empty:'Tuščia',
acct_token_ph:'Žetonas',
acct_copy:'Kopijuoti',
acct_export:'Eksportuoti',
acct_rename:'Pervadinti',
acct_save:'Išsaugoti',
acct_name_len:'Vardas turi būti 4-12 simbolių',
acct_name_fail:'Pervadinimas nepavyko',
acct_invalid:'Neteisingas',
acct_ready:'Paskyra paruošta. Uždaryk Meeland, pakeisk IP, tada perkrauk.',
acct_ip_note:'Visada naudok VPN ir keisk IP keisdamas paskyrą.',
acct_howto:'1. Spustelėkite Kopijuoti, kad nukopijuotumėte šios paskyros nuorodą.\n2. Kitame naršyklėje ar įrenginyje — arba su draugu — atidarykite MES.\n3. Spustelėkite Importuoti ir įklijuokite nuorodą.',
sh_movement:'Judėjimas',
sh_defense:'Gynyba',
sh_camera:'Kamera',
sh_overlays:'Perdangos',
sh_behaviour:'Elgsena',
sh_buttons:'Mygtukai',
sh_language:'Kalba',
sh_chat:'Pokalbis',
sh_waves:'Waves',
sh_steal_a_pet:'Pavogti augintinį',
sh_tower:'Tower',
sh_misc_multi:'Įvairūs (keli režimai)',
s_noclip:'Be kliūčių',
s_fly:'Skristi',
s_fly_emotes:'Skrydžio emotai',
s_base_speed:'Bazinis greitis',
s_jump_mult:'Šuolio aukštis',
s_grav_mult:'Gravitacija',
s_walk_up_walls:'vaikščioti sienomis',
s_carry_normalize:'Carry Speed + Jump',
s_invincibility:'Nenugalimumas',
s_anti_kb:'Anti-atstūmimas',
s_invisible:'Nematomas',
s_xray_infection:'Rentgenas (Žudymo Paslaptis)',
s_ghost_mode:'Vaidu režimas',
s_flee_intruder:'Bėk įsibrovėliui',
s_first_person:'Pirmojo asmens vaizdas',
s_fov_first_person:'FOV (1-as)',
s_fov_third_person:'FOV (3-ias)',
s_fov_vertical_mult:'FOV vertikalusis daugiklis',
s_auto_lock:'Auto-užrakinti bazę',
s_auto_fountain:'Auto-fontanas (1.5×)',
s_daily_coins:'Dienos monetos',
s_stars:'Žvaigždės',
s_diamonds_tower:'Deimantai (Bokštas)',
s_tower_loop:'Bokšto ciklas',
s_auto_roll_x25:'Auto roll x25 sėkmės',
s_auto_craft:'Automatinis kūrimas',
s_auto_vip_sword:'Automatinis VIP pirkimas',
s_auto_vip_waves:'Automatinis VIP pirkimas (Bangos)',
s_direct_kill:'Tiesioginis žudymo šlamštas',
s_direct_kill_rate:'Žudymo greitis',
s_auto_buy_upgrades:'Auto Buy Atnaujinimai',
s_boost_coins:'Automatinis atnaujinimas: monetos',
s_boost_diamonds:'Automatinis atnaujinimas: deimantai',
s_boost_luck:'Automatinis atnaujinimas: Sėkmė',
s_auto_unlock_areas:'Automatiškai atrakinti sritis',
s_auto_rebirth:'Automatinis atgimimas',
s_auto_join_tp:'Teleportuokite į aukščiausią zoną',
s_hide_kill_rewards:'Slėpti nužudymo apdovanojimus',
s_hide_roll_anim:'Slėpti ritinio animaciją',
rng_title:'pets rng cheats',
rng_sec_rolling:'Riedėjimas',
rng_sec_crafting:'Meistravimas',
rng_sec_combat:'Kovoti',
rng_sec_upgrades:'Atnaujinimai',
rng_sec_areas:'Sritys',
rng_actions:'Veiksmai',
log_craft:'Amatas',
log_success:'SĖKMĖS',
log_fail:'FIL',
log_unlocking_area:'Atrakinimo zona',
log_area_unlocked:'Sritis atrakinta',
log_equipped:'Įrengtas',
log_bought_upgrade:'Nupirktas atnaujinimas',
log_teleported_to:'Teleportuotas į',
log_rebirthing:'Atgimimas',
h_rng:'rng',
h_accts:'Paskyros',
s_auto_collect:'Auto-pajamų surinkimas',
s_collect_interval:'Surinkimo intervalas',
s_chat_fade:'Pokalbių išnykimo laikas',
s_name_colors:'Vartotojų vardų spalvos',
s_chat_enhance:'Pokalbio patobulinimai',
mes_hint:'Patarimas: įtraukite "mes" į savo vartotojo vardą, kad gautumėte animuotą vaivorykštės efektą!',
s_carry_tune:'Nešimo melodija (Vagystė)',
s_pet_pickup_radius:'Augintinio Vagystės Spindulys',
s_carry_vol:'Nešimo garsumas',
carry_tune_default:'Numatytasis',
carry_tune_silent:'Tylus',
carry_tune_ambient:'Aplinka',
carry_tune_blues:'Bliuzas',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasikinė',
carry_tune_electronic:'Elektroninė',
carry_tune_epic:'Epiška',
carry_tune_folk:'Liaudies',
carry_tune_funk:'Funk',
carry_tune_jazz:'Džiazas',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metalas',
carry_tune_pop:'Pop',
carry_tune_punk:'Pankas',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rokas',
s_cont_cuddle:'Nuolatinis glostymasis',
s_protips:'Pro patarimai',
s_hideprotips:'Slėpti mano Pro patarimus',
s_show_exp_modes:'Eksperimentinių režimų rodymas',
s_showcoords:'Rodyti koordinates',
s_showfps:'Rodyti FPS',
s_showtargetinfo:'Rodyti taikinio informaciją',
s_showobj:'Rodyti objektą / akių skaičių',
s_copy_dbg:'Kopijuoti debug žurnalus',
s_copy_json:'Kopijuoti JSON',
s_clear_dbg:'Išvalyti',
h_fly:'Skrydis',
h_speed:'Greičio hakas',
h_waypoints:'Maršruto taškai',
h_autolock:'Auto-užraktas',
h_invisible:'Nematomas',
h_cuddle:'Glostymasis',
h_pets:'Augintiniai',
h_snipe:'Snaiperis',
h_help:'Pagalba',
h_settings:'Nustatymai',
h_prv:'Privatus kambarys',
h_tc:'Baigti bokštą',
h_tcl:'Bokšto ciklas',
kb_fly:'Skrydis (perjungti)',
kb_fly_down:'Skristi žemyn',
kb_set_home:'Nustatyti namus',
kb_home:'Namai',
kb_back:'Atgal',
kb_cuddle:'Glostymosi panelis',
kb_settings:'Nustatymai',
kb_pets:'Augintinių naršyklė',
kb_slots:'Maršruto taškų vietos',
kb_snipe:'Snaiperio panelis',
kb_snipe_toggle:'Snaiperis įj/išj',
kb_attack:'Atakuoti artimiausią',
kb_help:'Pagalba',
kb_tower:'Baigti bokštą',
kb_tower_loop:'Bokšto ciklas',
kb_invisible:'Nematomas',
kb_first_person:'Pirmasis asmuo',
kb_autolock:'Automatinio užrakinimo bazė',
kb_prv:'Privatus kambarys',
kb_rng:'RNG',
kb_accts:'Paskyros',
pets_title:'Augintiniai',
pets_search_placeholder:'pvz. laukinis kačiukas, auksinis ARBA deimantas, (auksinis ARBA smaragdas) laukinis',
pets_hint:'Žodžiai jungiami su IR. Naudok OR alternatyvoms, skliaustus grupavimui. * arba % kaip pakaitalas. Prieš žodį padėkite -, kad jį neįtrauktumėte.',
pets_empty:'Augintinių nerasta',
pt_name:'Vardas',
pt_mut:'Mutacija',
pt_rar:'Retumas',
pt_owner:'Savininkas',
pt_worth:'Vertė',
pt_income:'Pajamos/s',
pt_dist:'Atst',
slots_title:'Maršruto taškų vietos',
sniper_title:'Augintinių snaiperis',
sniper_tbl_pet:'Gyvūnas',
sniper_tbl_owner:'Savininkas',
sniper_tbl_lock:'Užraktas',
sniper_placeholder:'pvz. halo, golden OR diamond, emerald dragon',
sniper_hint:'Žodžiai jungiami su IR. Naudok OR alternatyvoms, skliaustus grupavimui. * arba % kaip pakaitalas. Prieš žodį padėkite -, kad jį neįtrauktumėte.',
sniper_room_col:'Kambarys',
sniper_scans_col:'Nuskaito',
sniper_top_pet_col:'geriausias augintinis',
sniper_top_worth_col:'Verta',
sniper_top_owner_col:'Aukščiausias savininkas',
sniper_age_col:'Amžius',
sniper_join_btn:'Prisijungti',
sniper_full:'Pilnas',
sniper_join_failed:'Tikslinis kambarys pilnas',
sniper_scanning_rooms:'Ieškoma kitų kambarių…',
sniper_scan_off:'Automatinė medžioklė',
sniper_scan_next:'Kitas nuskaitymas',
sniper_scan_idle:'Neveikiantis – laukiama nuskaitymo',
sniper_auto_place:'Automatinis patalpinimas į bazę',
sniper_place_desc:'(padeda vogtą gyvūną į tavo bazės vietą)',
sniper_auto_drop:'Automatiškai numesti neatitinkančius augintinius Bangose',
sniper_drop_desc:'(numeta laukinius augintinius, kurie neatitinka filtro, kad atnaujintų spawn baseiną)',
sniper_auto_hunt:'Automatinė medžioklė',
sniper_hunt_desc:'(nuskaito kitus kambarius, šoka prie geriausio atitikimo)',
sniper_auto_sell:'Auto-pardavimas Vagystėje',
sniper_sell_desc:'(parduoda silpniausią kai bazė pilna)',
sniper_lockdown:'Užraktas ≤',
sniper_lockdown_hint:'Vagia taikinius iš bazių su ≤ tiek likusio laiko. 0 = tik atrakintos.',
sniper_join_grace:'Prisijunkite prie malonės',
sniper_start:'Pradėti',
sniper_stop:'Sustabdyti',
sniper_idle:'Neaktyvus',
sniper_no_filter:'Nėra filtro',
sniper_waiting:'Laukiama žaidimo...',
sniper_hold_pause:'Laiko augintinį — pristabdyta',
sniper_stolen_pause:'laiko mūsų augintinį — pristabdyta',
sniper_cooldown:'Atvėsimas',
sniper_hopping:'Keičiamas serveris...',
sniper_na:'Snaiperis neprieinamas fojė',
sniper_wait_lock:'Laukiama užrakto duomenų...',
sniper_locked:'Bazė užrakinta — praleidžiama...',
sniper_full_eggs:'Bazė pilna — tik kiaušiniai, negalima parduoti',
sniper_stealing:'Vagiama',
sniper_dropped:'Numesta',
sniper_holding:'Laiko',
sniper_place:'Padėk į bazę!',
sniper_steal_mode:'[Vagystė]',
sniper_theft_nohop:'Augintinį vagia',
sniper_nohop_suffix:'— be šuolio',
sniper_sniping:'Snaipavimas:',
sniper_options:'Parinktys',
sniper_drop_fail_status:'Numesti nepavyko!',
sniper_hotkey_label:'Spartusis klavišas:',
sniper_panel_label:'Panelis:',
sniper_grab_fail:'Pagriebti nepavyko. Bandoma iš naujo...',
sniper_our_pet_stolen:'Mūsų augintinis pavogtas — 8s atvėsimas',
sniper_hopping_short:'Šuoliuojama...',
sniper_base_full:'Bazė pilna',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINTAS',
pet_teleport_title:'Teleportuotis',
pet_pickup_title:'Pasiimti',
owner_yours:'Jūsų',
owner_wild:'Laukinis',
footer_gf:'Riebi šakutė',
copy_ok:'Nukopijuota',
copy_failed:'Kopijuoti nepavyko',
s_invis_on_fly:'Nematomas skrendant',
snipe_walk_home:'Eik namo po vagystės',
snipe_walk_home_desc:'Eik atgal į savo bazę',
sniper_afk_sell:'AFK parduok nesutampančius gyvūnus',
sniper_afk_sell_desc:'(kai neaktyvus 5s, parduok su filtru nesutampančius gyvūnus pagal vertę — tik bangos)',
hb_fly:'SKR',
hb_lck:'UŽR',
hb_inv:'NEM',
hb_cud:'GLB',
hb_pet:'GYV',
hb_snp:'SNI',
hb_cfg:'NUO',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'PSK',
ban_title:'Ryšys užblokuotas',
ban_sub:'Jūsų IP adresą apribojo Meeland',
ban_body:'Nesijaudinkite – tai lengva ištaisyti! Nemokamas VPN suteiks jums naują IP, kad galėtumėte vėl žaisti.',
ban_pick:'Greitas pataisymas – pasirinkite bet kurį:',
ban_warp:'nemokama, neribota sąranka vienu paspaudimu',
ban_warp_store:'taip pat „App Store“ ir „Play Store“ kaip „1.1.1.1“',
ban_proton:'nėra duomenų ribos, 5 šalys',
ban_steps:'Įdiegti → prisijungti → atnaujinti šį puslapį. tai viskas!',
ban_ok:'Supratau',
warn_title:'Visada naudokite VPN',
warn_body:'Visada žaiskite su įjungtu <b>VPN</b>.',
warn_ok:'Supratau, suprantu',
loading:'Įkeliama',
tcl_loading:'Vykdoma pilna bokšto kilpa. Norėdami sustabdyti, spauskite {key}.',
hop_search:'Ieškoma rungtynių',
hop_match:'Rasta {name} — prisijungiama',
hop_flee:'Bėgimas nuo įsibrovėlio',
hop_reconnect:'Vėl jungiamasi',
hop_reload:'Įkeliama iš naujo',
hop_fall:'Atsigavimas po kritimo',
hop_join:'Prisijungiama prie kambario',
lock_off:'IŠJUNGTA',
lock_unlocked:'ATRAKINTA',
desc_intro:'MES suteikia jums „walhack“, automatinį ūkininkavimą, retų naminių gyvūnėlių rinkimą, greičio padidinimą, skrydį, nematomumą ir dar daugiau Meelande',
desc_free:'Nemokamas ir atviro kodo amžinai.',
desc_h_movement:'Judėjimas',
desc_h_combat:'Kova',
desc_h_tuning:'Derinimas',
desc_h_pets:'Gyvūnai ir Vagystė',
desc_h_economy:'Ekonomika',
desc_h_custom:'Pritaikymas',
desc_h_extras:'Papildomi',
desc_fly:'Skrydis',
desc_fly_d:'Tarpas aukštyn, F žemyn. Reguliuojamas greitis.',
desc_speed:'Mirksėti',
desc_speed_d:'Shift teleportacijai akimirksniu.',
desc_noclip:'Pro sienas',
desc_noclip_d:'Eiti pro sienas ir grindis.',
desc_walls:'Ėjimas Sienomis',
desc_walls_d:'Lipk bet kokiu paviršiumi.',
desc_waypts:'Kelionės taškai',
desc_waypts_d:'Išsaugokite ir teleportuokitės tarp 8 vietų.',
desc_invis:'Nematomumas',
desc_invis_d:'Paspausk CapsLock, kad visiškai dingtum.',
desc_fpv:'FPV',
desc_fpv_d:'Paspausk <kbd>.</kbd> norėdami perjungti pirmojo asmens kamerą.',
desc_anti_invis:'Anti-nematomumas',
desc_anti_invis_d:'Matykite nematomus žaidėjus kaip vaiduoklius.',
desc_xray:'Rentgeno Matymas',
desc_xray_d:'Matykite žaidėjus per sienas Žudymo Paslaptyje. Raudona = žudikas, žalia = civilis.',
desc_nodeathh:'Nepažeidžiamumas',
desc_nodeath_d:'HP užfiksuoti maksimume. Jokios žalos.',
desc_antikb:'Anti-atstūmimas',
desc_antikb_d:'Jūsų neįmanoma pastumti.',
desc_attack:'Auto-ataka',
desc_attack_d:'<kbd>G</kbd> teleportuoja prie artimiausio žaidėjo ir smogia.',
desc_jumpgrav:'Šuolis ir Gravitacija',
desc_jumpgrav_d:'Reguliuojami daugikliai Nustatymuose.',
desc_fov:'FOV Valdymas',
desc_fov_d:'FOV slankikliai pirmam ir trečiam asmeniui.',
desc_autoinvis:'Auto-Nematomumas Skrendant',
desc_autoinvis_d:'Tapk nematomu automatiškai skrendant.',
desc_sniper:'Gyvūnų snaiperis',
desc_sniper_d:'Filtruokite, vogite ar paleiskite gyvūnus automatiškai.',
desc_prv:'Privatus kambarys',
desc_prv_d:'<kbd>PgDn</kbd> sukuria privatų kambarį dabartiniame režime ir automatiškai prisijungia.',
desc_petbrow:'Gyvūnų naršyklė',
desc_petbrow_d:'<kbd>P</kbd> atidaro rūšiuojamą lentelę su filtru.',
desc_cuddle:'Nuolatinis glėbesčiavimas',
desc_cuddle_d:'<kbd>J</kbd> rodo žaidėjus pagal atstumą. Spustelėkite sekti.',
desc_return:'Auto-grąžinimas',
desc_return_d:'Automatiškai grąžina pavogtus gyvūnus.',
desc_autolock:'Auto-užraktas',
desc_autolock_d:'Bazė visada lieka užrakinta.',
desc_fountain:'Auto-fontanas',
desc_fountain_d:'Nuolatinis 1.5× pelnas. Atnaujinamas automatiškai.',
desc_money:'Dienos monetos',
desc_money_d:'Automatiškai renka dienos monetas.',
desc_collect:'Auto-rinkimas',
desc_collect_d:'Gyvūnų pajamos kas 30s.',
desc_music:'Sava muzika',
desc_music_d:'Pakeiskite žaidimo muziką sava.',
desc_chatfade:'Pokalbių blukimas',
desc_chatfade_d:'Valdykite žinučių matomumą. 5–120s.',
desc_emotes:'Skrydžio emocijos',
desc_emotes_d:'Atsitiktinės emocijos skrendant.',
desc_displays:'Ekrano Perdangos',
desc_displays_d:'Koordinatės, FPS skaitiklis ir taikinio info.',
desc_config:'Nustatymai',
desc_config_d:'<kbd>M</kbd> funkcijoms, klavišų priskyrimui, greičio reguliavimui.',
desc_langs:'60 kalbų',
desc_langs_d:'Sąsaja verčiama automatiškai.',
desc_tower:'Auto-bokštas',
desc_tower_d:'Užbaikite bokštą vienu paspaudimu.',
desc_cats:'Kačių įkėlimo ekranai',
desc_cats_d:'Mielos katės pakeičia įkėlimą.',
desc_h_install:'Diegimas',
desc_desktop:'Kompiuteris (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Įdiekite Tampermonkey arba Violentmonkey',
desc_inst_click:'Spustelėkite Įdiegti',
desc_inst_open:'Atidarykite bet kurį Meeland žaidimą — tiesiog veikia',
desc_mobile:'Mobilusis',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Įdiekite Tampermonkey plėtinį',
desc_mob_visit:'Aplankykite šį puslapį ir įdiekite',
desc_mob_play:'Žaiskite Meeland Firefox naršyklėje',
desc_ios:'iOS: Naudokite Userscripts (Safari) + šį skriptą',
desc_h_privacy:'Privatumas',
desc_privacy:'Jokie duomenys nerenkami. Viskas lieka vietoje.'
});
_mk('lv','Latviešu',{
close:'✕',
refresh:'↻',
go:'Iet',
set:'Iestatīt',
auto:'Auto',
empty:'tukšs',
help_title:'Palīdzība',
players_title:'Spēlētāji',
players_empty:'Citi spēlētāji nav atrasti',
settings_title:'Iestatījumi',
settings_reset:'Atiestatīt',
tab_gameplay:'Spēle',
tab_economy:'Ekonomika',
tab_audio:'Audio',
tab_advanced:'Papildu',
tab_hud:'HUD',
tab_keys:'Taustiņi',
tab_accounts:'Konti',
acct_current:'Pašreizējais',
acct_new:'Jauns',
acct_import:'Importēt',
acct_switch:'Pārslēgt',
acct_reload:'Pārlādēt',
acct_delete:'Dzēst',
acct_cancel:'Atcelt',
acct_empty:'Tukšs',
acct_token_ph:'Token',
acct_copy:'Kopēt',
acct_export:'Eksportēt',
acct_rename:'Pārdēvēt',
acct_save:'Saglabāt',
acct_name_len:'Nosaukumam jābūt 4-12 rakstzīmēm',
acct_name_fail:'Pārdēvēšana neizdevās',
acct_invalid:'Nederīgs',
acct_ready:'Konts gatavs. Aizver Meeland, nomaini IP, tad pārlādē.',
acct_ip_note:'Vienmēr izmanto VPN un nomaini IP, mainot kontu.',
acct_howto:'1. Noklikšķiniet uz Kopēt, lai kopētu šī konta saiti.\n2. Citā pārlūkā vai ierīcē — vai kopā ar draugu — atveriet MES.\n3. Noklikšķiniet uz Importēt un ielīmējiet saiti.',
sh_movement:'Kustība',
sh_defense:'Aizsardzība',
sh_camera:'Kamera',
sh_overlays:'Pārklājumi',
sh_behaviour:'Uzvedība',
sh_buttons:'Pogas',
sh_language:'Valoda',
sh_chat:'Tērzēšana',
sh_waves:'Waves',
sh_steal_a_pet:'Nozagt mājdzīvnieku',
sh_tower:'Tower',
sh_misc_multi:'Citi (vairāku režīmu)',
s_noclip:'Bez šķēršļiem',
s_fly:'Lidot',
s_fly_emotes:'Lidojuma emocijas',
s_base_speed:'Bāzes ātrums',
s_jump_mult:'Lēciena augstums',
s_grav_mult:'Gravitācija',
s_walk_up_walls:'staigāt pa sienām',
s_carry_normalize:'Pārnēsāšanas ātrums + lēciens',
s_invincibility:'Neievainojamība',
s_anti_kb:'Anti-atsitiešana',
s_invisible:'Neredzams',
s_xray_infection:'Rentgens (Slepkavības Noslēpums)',
s_ghost_mode:'Spoku režīms',
s_flee_intruder:'Bēdz, ja ir iebrucējs',
s_first_person:'Pirmās personas skats',
s_fov_first_person:'FOV (1. pers.)',
s_fov_third_person:'FOV (3. pers.)',
s_fov_vertical_mult:'FOV vertikālais reizinātājs',
s_auto_lock:'Auto-slēgt bāzi',
s_auto_fountain:'Auto-strūklaka (1.5×)',
s_daily_coins:'Dienas monētas',
s_stars:'Zvaigznes',
s_diamonds_tower:'Dimanti (Tornis)',
s_tower_loop:'Torņa cilpa',
s_auto_roll_x25:'Auto roll x25 veiksme',
s_auto_craft:'Automātiskā izgatavošana',
s_auto_vip_sword:'Automātiski pirkt VIP',
s_auto_vip_waves:'Automātiski pirkt VIP (Viļņi)',
s_direct_kill:'Tiešais nogalināšanas sūtījums',
s_direct_kill_rate:'Nogalināšanas ātrums',
s_auto_buy_upgrades:'auto iegādes jauninājumi',
s_boost_coins:'Automātiskā jaunināšana: monētas',
s_boost_diamonds:'Automātiskā jaunināšana: dimanti',
s_boost_luck:'Automātiskā jaunināšana: veiksme',
s_auto_unlock_areas:'Automātiski atbloķētas zonas',
s_auto_rebirth:'Automātiskā atdzimšana',
s_auto_join_tp:'Teleportējieties uz augstāko zonu',
s_hide_kill_rewards:'Slēpt Kill Rewards',
s_hide_roll_anim:'Paslēpt ruļļa animāciju',
rng_title:'Mājdzīvnieki RNG Mīklas',
rng_sec_rolling:'Ripošana',
rng_sec_crafting:'Amatniecība',
rng_sec_combat:'Cīņa',
rng_sec_upgrades:'Jauninājumi',
rng_sec_areas:'Jomas',
rng_actions:'Darbības',
log_craft:'Amatniecība',
log_success:'VEIKSMES',
log_fail:'neizdoties',
log_unlocking_area:'Atbloķēšanas zona',
log_area_unlocked:'Apgabals ir atbloķēts',
log_equipped:'Aprīkots',
log_bought_upgrade:'Iegādāts jauninājums',
log_teleported_to:'Teleportēts uz',
log_rebirthing:'Atdzimšana',
h_rng:'rng',
h_accts:'Konti',
s_auto_collect:'Auto-ienākumu ievākšana',
s_collect_interval:'Ievākšanas intervāls',
s_chat_fade:'Čata izbalēšanas laiks',
s_name_colors:'Lietotājvārdu krāsas',
s_chat_enhance:'Tērzēšanas uzlabojumi',
mes_hint:'Padoms: iekļaujiet "mes" savā lietotājvārdā, lai iegūtu animētu varavīksnes efektu!',
s_carry_tune:'Nešanas melodija (Zādzība)',
s_pet_pickup_radius:'Mājdzīvnieka Zādzības Rādiuss',
s_carry_vol:'Nešanas skaļums',
carry_tune_default:'Noklusējums',
carry_tune_silent:'Kluss',
carry_tune_ambient:'Apkārtējā',
carry_tune_blues:'Blūzs',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasika',
carry_tune_electronic:'Elektroniskā',
carry_tune_epic:'Episka',
carry_tune_folk:'Tautas',
carry_tune_funk:'Funks',
carry_tune_jazz:'Džezs',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metāls',
carry_tune_pop:'Pop',
carry_tune_punk:'Panks',
carry_tune_reggae:'Regejs',
carry_tune_rock:'Roks',
s_cont_cuddle:'Nepārtraukta glāstīšana',
s_protips:'Pro padomi',
s_hideprotips:'Slēpt manus Pro padomus',
s_show_exp_modes:'Rādīt eksperimentālos režīmus',
s_showcoords:'Parādīt koordinātas',
s_showfps:'Rādīt FPS',
s_showtargetinfo:'Rādīt mērķa info',
s_showobj:'Rādīt entītiju/acu skaitu',
s_copy_dbg:'Kopēt debug žurnālus',
s_copy_json:'Kopēt JSON',
s_clear_dbg:'Notīrīt',
h_fly:'Lidošana',
h_speed:'Ātruma haks',
h_waypoints:'Maršruta punkti',
h_autolock:'Auto-slēgšana',
h_invisible:'Neredzams',
h_cuddle:'Glāstīšana',
h_pets:'Mājdzīvnieki',
h_snipe:'Snaiperis',
h_help:'Palīdzība',
h_settings:'Iestatījumi',
h_prv:'Privāta istaba',
h_tc:'Pabeigt torni',
h_tcl:'Torņa cilpa',
kb_fly:'Lidošana (pārslēgt)',
kb_fly_down:'Lidot lejup',
kb_set_home:'Iestatīt mājas',
kb_home:'Mājas',
kb_back:'Atpakaļ',
kb_cuddle:'Glāstīšanas panelis',
kb_settings:'Iestatījumi',
kb_pets:'Mājdzīvnieku pārlūks',
kb_slots:'Maršruta punktu vietas',
kb_snipe:'Snaipera panelis',
kb_snipe_toggle:'Snaiperis iesl/izsl',
kb_attack:'Uzbrukt tuvākajam',
kb_help:'Palīdzība',
kb_tower:'Pabeigt torni',
kb_tower_loop:'Torņa cilpa',
kb_invisible:'Neredzams',
kb_first_person:'Pirmā persona',
kb_autolock:'Automātiski bloķēta bāze',
kb_prv:'Privāta istaba',
kb_rng:'RNG',
kb_accts:'Konti',
pets_title:'Mājdzīvnieki',
pets_search_placeholder:'piem. savvaļas kaķēns, zelta VAI dimants, (zelta VAI smaragds) savvaļas',
pets_hint:'Vārdi tiek apvienoti ar UN. Lieto OR alternatīvām, iekavas grupēšanai. * vai % kā aizstājējs. Liec - pirms vārda, lai to izslēgtu.',
pets_empty:'Mājdzīvnieki nav atrasti',
pt_name:'Vārds',
pt_mut:'Mutācija',
pt_rar:'Retums',
pt_owner:'Īpašnieks',
pt_worth:'Vērtība',
pt_income:'Ienākums/s',
pt_dist:'Attāl',
slots_title:'Maršruta punktu vietas',
sniper_title:'Mājdzīvnieku snaiperis',
sniper_tbl_pet:'Mājdzīvnieks',
sniper_tbl_owner:'Īpašnieks',
sniper_tbl_lock:'Slēdzene',
sniper_placeholder:'piem. halo, golden OR diamond, emerald dragon',
sniper_hint:'Vārdi tiek apvienoti ar UN. Lieto OR alternatīvām, iekavas grupēšanai. * vai % kā aizstājējs. Liec - pirms vārda, lai to izslēgtu.',
sniper_room_col:'Istaba',
sniper_scans_col:'Skenē',
sniper_top_pet_col:'top mājdzīvnieks',
sniper_top_worth_col:'Top Vērts',
sniper_top_owner_col:'Augstākais īpašnieks',
sniper_age_col:'Vecums',
sniper_join_btn:'Pievienoties',
sniper_full:'Pilns',
sniper_join_failed:'Mērķa telpa ir pilna',
sniper_scanning_rooms:'Meklē citas istabas…',
sniper_scan_off:'Auto medības off',
sniper_scan_next:'Nākamā skenēšana',
sniper_scan_idle:'Dīkstāvē — gaida skenēšanu',
sniper_auto_place:'Automātiska novietošana bāzē',
sniper_place_desc:'(novieto nozagto mājdzīvnieku bāzes slotā)',
sniper_auto_drop:'Automātiski nomest neatbilstošus mājdzīvniekus Viļņos',
sniper_drop_desc:'(nomet savvaļas mājdzīvniekus, kas neatbilst filtram, lai atjaunotu spawn kopu)',
sniper_auto_hunt:'Auto-medības',
sniper_hunt_desc:'(skenē citas telpas, lec pie labākās atbilstības)',
sniper_auto_sell:'Auto-pārdošana Zādzībā',
sniper_sell_desc:'(pārdod vājāko kad bāze pilna)',
sniper_lockdown:'Slēgšana ≤',
sniper_lockdown_hint:'Zog mērķus no bāzēm ar ≤ tik atlikušā laika. 0 = tikai atslēgtas.',
sniper_join_grace:'Pievienojies žēlastībai',
sniper_start:'Sākt',
sniper_stop:'Apturēt',
sniper_idle:'Neaktīvs',
sniper_no_filter:'Nav filtra',
sniper_waiting:'Gaida spēli...',
sniper_hold_pause:'Tur mājdzīvnieku — pauzēts',
sniper_stolen_pause:'tur mūsu mājdzīvnieku — pauzēts',
sniper_cooldown:'Atdzišana',
sniper_hopping:'Servera maiņa...',
sniper_na:'Snaiperis nav pieejams vestibilā',
sniper_wait_lock:'Gaida slēgšanas datus...',
sniper_locked:'Bāze slēgta — izlaižam...',
sniper_full_eggs:'Bāze pilna — tikai olas, nevar pārdot',
sniper_stealing:'Zogam',
sniper_dropped:'Nomests',
sniper_holding:'Tur',
sniper_place:'Novieto bāzē!',
sniper_steal_mode:'[Zādzība]',
sniper_theft_nohop:'Mājdzīvnieku zog',
sniper_nohop_suffix:'— bez lēciena',
sniper_sniping:'Snaipošana:',
sniper_options:'Opcijas',
sniper_drop_fail_status:'Nomešana neizdevās!',
sniper_hotkey_label:'Īsceļš:',
sniper_panel_label:'Panelis:',
sniper_grab_fail:'Saķeršana neizdevās. Mēģina vēlreiz...',
sniper_our_pet_stolen:'Mūsu mājdzīvnieks nozagts — 8s atdzišana',
sniper_hopping_short:'Lēcam...',
sniper_base_full:'Pilna bāze',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINTS',
pet_teleport_title:'Teleportēties',
pet_pickup_title:'Paņemt',
owner_yours:'Jūsu',
owner_wild:'Savvaļas',
footer_gf:'Taukaina dakša',
copy_ok:'Kopēts',
copy_failed:'Kopēšana neizdevās',
s_invis_on_fly:'Neredzams lidojot',
snipe_walk_home:'Ej mājās pēc zādzības',
snipe_walk_home_desc:'Ej atpakaļ uz savu bāzi',
sniper_afk_sell:'AFK pārdot nesakrītošus mājdzīvniekus',
sniper_afk_sell_desc:'(kad neaktīvs 5s, pārdod mājdzīvniekus, kas neatbilst filtram pēc vērtības — tikai viļņi)',
hb_fly:'LID',
hb_lck:'SLĒ',
hb_inv:'NER',
hb_cud:'APK',
hb_pet:'DZĪ',
hb_snp:'SNI',
hb_cfg:'IES',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KNT',
ban_title:'Savienojums bloķēts',
ban_sub:'Jūsu IP adrese ir ierobežota Meeland',
ban_body:'Neuztraucieties — to ir viegli novērst! Bezmaksas VPN dos jums jaunu IP adresi, lai jūs varētu atkal spēlēt.',
ban_pick:'Ātrs risinājums — izvēlieties vienu:',
ban_warp:'bezmaksas, neierobežots, viena klikšķa iestatīšana',
ban_warp_store:'pieejams arī App Store un Play Store kā "1.1.1.1"',
ban_proton:'bez datu ierobežojuma, 5 valstis',
ban_steps:'Instalējiet → izveidojiet savienojumu → pārlādējiet šo lapu. Tas ir viss!',
ban_ok:'Sapratu',
warn_title:'Vienmēr izmantojiet VPN',
warn_body:'Vienmēr spēlējiet ar ieslēgtu <b>VPN</b>.',
warn_ok:'Sapratu',
loading:'Ielādē',
tcl_loading:'Tiek izpildīta pilnā torņa cilpa. Lai apturētu, nospiediet {key}.',
hop_search:'Meklēju spēli',
hop_match:'Atrasts {name} — pievienojas',
hop_flee:'Bēgšana no iebrucēja',
hop_reconnect:'Atkārtota savienošana',
hop_reload:'Pārlāde',
hop_fall:'Atveseļošanās pēc kritiena',
hop_join:'Pievienojas telpai',
lock_off:'IZSL',
lock_unlocked:'ATSLĒGTS',
desc_intro:'MES sniedz jums Wallhack, automātisko audzēšanu, retu mājdzīvnieku kolekciju, ātruma palielināšanu, lidojumu, neredzamību un daudz ko citu Mīlenā',
desc_free:'100% bezmaksas, mūžīgi. Ir atsauksme? Atstāj ⭐ pozitīvu atsauksmi — tas uztur atjaunojumus.',
desc_h_movement:'Kustība',
desc_h_combat:'Cīņa',
desc_h_tuning:'Noregulēšana',
desc_h_pets:'Mājdzīvnieki & Zagšana',
desc_h_economy:'Ekonomika',
desc_h_custom:'Pielāgošana',
desc_h_extras:'Papildus',
desc_fly:'Lidošana',
desc_fly_d:'Space augšup, F lejup. Regulējams ātrums.',
desc_speed:'Mirkšķiniet',
desc_speed_d:'Shift tūlītējai teleportācijai.',
desc_noclip:'Bez šķēršļiem',
desc_noclip_d:'Ej cauri sienām.',
desc_walls:'Iešana pa Sienām',
desc_walls_d:'Kāp pa jebkuru virsmu.',
desc_waypts:'Maršruta punkti',
desc_waypts_d:'Saglabā 10 pozīcijas. Teleports ar vienu taustiņu. <kbd>Z</kbd> pārslēgšanai.',
desc_invis:'Neredzams',
desc_invis_d:'Spied CapsLock, lai pilnībā pazustu.',
desc_fpv:'FPV',
desc_fpv_d:'Nospied <kbd>.</kbd> lai pārslēgtu pirmās personas kameru.',
desc_anti_invis:'Anti-neredzamība',
desc_anti_invis_d:'Redzi neredzamos spēlētājus kā spokus.',
desc_xray:'Rentgena Redze',
desc_xray_d:'Redziet spēlētājus caur sienām Slepkavības Noslēpumā. Sarkans = slepkava, zaļš = civilpersona.',
desc_nodeathh:'Nemirstīgs',
desc_nodeath_d:'Imūns pret visiem bojājumiem.',
desc_antikb:'Anti-atsitiens',
desc_antikb_d:'Tevi nevar stumt.',
desc_attack:'Tūlītējs uzbrukums',
desc_attack_d:'<kbd>G</kbd> teleportē pie tuvākā spēlētāja un sit.',
desc_jumpgrav:'Lēciens un Gravitācija',
desc_jumpgrav_d:'Regulējami reizinātāji Iestatījumos.',
desc_fov:'FOV Vadība',
desc_fov_d:'FOV slīdņi pirmās un trešās personas skatam.',
desc_autoinvis:'Auto-Neredzams Lidojot',
desc_autoinvis_d:'Kļūsti neredzams automātiski lidojot.',
desc_sniper:'Mājdzīvnieku snaiperis',
desc_sniper_d:'Automātiska filtrētu mīluļu zagšana. Abi režīmi.',
desc_prv:'Privāta istaba',
desc_prv_d:'<kbd>PgDn</kbd> izveido privātu istabu pašreizējā režīmā un automātiski pievienojas.',
desc_petbrow:'Mājdzīvnieku pārlūks',
desc_petbrow_d:'<kbd>K</kbd> rāda visus mīluļus. Kārtot, filtrēt, satvert.',
desc_cuddle:'Glāstīšanas panelis',
desc_cuddle_d:'<kbd>J</kbd> spēlētāju saraksts pēc attāluma. Klikšķini lai sekotu.',
desc_return:'Automātiska Atgriešanās',
desc_return_d:'Teleportē mājās pēc zagšanas.',
desc_autolock:'Auto-slēgšana',
desc_autolock_d:'Bāze vienmēr aizslēgta.',
desc_fountain:'Auto-strūklaka',
desc_fountain_d:'Pastāvīga 1.5× peļņa. Automātiska atjaunošana.',
desc_money:'Bezmaksas nauda + Zvaigznes + Dimanti',
desc_money_d:'Bez reklāmām.',
desc_collect:'Automātiska Savākšana',
desc_collect_d:'Mīluļu ienākumi ik 30s.',
desc_music:'Pārvadāšanas mūzika',
desc_music_d:'Mūzika zogšanas laikā. 15 žanri.',
desc_chatfade:'Čata izzušana',
desc_chatfade_d:'Kontrolē ziņojumu redzamību. 5–120s.',
desc_emotes:'Lidojuma emocijas',
desc_emotes_d:'Nejauša emocijas lidojuma laikā.',
desc_displays:'Ekrāna Pārklājumi',
desc_displays_d:'Koordinātas, FPS skaitītājs un mērķa info.',
desc_config:'Iestatījumi',
desc_config_d:'<kbd>M</kbd> funkcijām, taustiņiem, ātrumiem.',
desc_langs:'60 Valodas',
desc_langs_d:'Pilnīgs UI tulkojums.',
desc_tower:'Pabeigt torni',
desc_tower_d:'<kbd>Y</kbd> tūlītējai Obby Tower uzvarai.',
desc_cats:'Kaķu ielādes ekrāni',
desc_cats_d:'Jauki kaķi aizstāj ielādi.',
desc_h_install:'Instalēšana',
desc_desktop:'Darbvirsma (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Instalē <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> vai <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Noklikšķini Instalēt augstāk',
desc_inst_open:'Atver jebkuru Meeland spēli — vienkārši darbojas',
desc_mobile:'Mobilais (Android)',
desc_mob_ff:'Instalē <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android</a> no Play Store',
desc_mob_addon:'Atver Firefox → Izvēlne → Papildinājumi → instalē <strong>Tampermonkey</strong>',
desc_mob_visit:'Apmeklē šo lapu Firefox un nospied Instalēt',
desc_mob_play:'Spēlē Meeland — skāriena HUD pogas parādās automātiski',
desc_ios:'iOS: Apple bloķē pārlūka paplašinājumus visos iOS pārlūkos (ieskaitot Firefox). Lieto darbvirsmas vai Android pārlūku.',
desc_h_privacy:'Privātums',
desc_privacy:'Tikai klienta pusē — nekādi dati neatstāj tavu pārlūku'
});
_mk('nn','Norsk',{
close:'✕',
refresh:'↻',
go:'Gå',
set:'Sett',
auto:'Auto',
empty:'tom',
help_title:'Hjelp',
players_title:'Spillere',
players_empty:'Ingen andre spillere funnet',
settings_title:'Innstillinger',
settings_reset:'Tilbakestill',
tab_gameplay:'Spill',
tab_economy:'Økonomi',
tab_audio:'Lyd',
tab_advanced:'Avansert',
tab_hud:'HUD',
tab_keys:'Taster',
tab_accounts:'Kontoar',
acct_current:'Aktuell',
acct_new:'Ny',
acct_import:'Importer',
acct_switch:'Bytt',
acct_reload:'Last på nytt',
acct_delete:'Slett',
acct_cancel:'Avbryt',
acct_empty:'Tom',
acct_token_ph:'Token',
acct_copy:'Kopier',
acct_export:'Eksporter',
acct_rename:'Gi nytt namn',
acct_save:'Lagre',
acct_name_len:'Namn må vere 4-12 teikn',
acct_name_fail:'Omdøyping mislukkast',
acct_invalid:'Ugyldig',
acct_ready:'Konto klar. Lukk Meeland, bytt IP, last deretter på nytt.',
acct_ip_note:'Bruk alltid VPN og bytt IP når du bytter konto.',
acct_howto:'1. Klikk på Kopier for å kopiere lenkja til denne kontoen.\n2. Opne MES i ein annan nettlesar eller på eit anna eining — eller hjå ein ven.\n3. Klikk på Importer og lim inn lenkja.',
sh_movement:'Bevegelse',
sh_defense:'Forsvar',
sh_camera:'Kamera',
sh_overlays:'Overlegg',
sh_behaviour:'Åtferd',
sh_buttons:'Knappar',
sh_language:'Språk',
sh_chat:'Chat',
sh_waves:'Waves',
sh_steal_a_pet:'Stjel eit kjæledyr',
sh_tower:'Tower',
sh_misc_multi:'Ymse (multi-modus)',
s_noclip:'Gå gjennom vegger',
s_fly:'Fly',
s_fly_emotes:'Flyemotes',
s_base_speed:'Grunnhastighet',
s_jump_mult:'Hopphøyde',
s_grav_mult:'Tyngdekraften',
s_walk_up_walls:'Gå opp vegger',
s_carry_normalize:'Bærehastighet + hopp',
s_invincibility:'Uovervinnelighet',
s_anti_kb:'Anti-tilbakeskyving',
s_invisible:'Usynlig',
s_xray_infection:'Røntgen (Mordmysterium)',
s_ghost_mode:'Spøkjelsesmodus',
s_flee_intruder:'Flykt ved inntrengjar',
s_first_person:'Førstepersonsvisning',
s_fov_first_person:'FOV (1. pers.)',
s_fov_third_person:'FOV (3. pers.)',
s_fov_vertical_mult:'FOV vertikal multiplikator',
s_auto_lock:'Auto-lås base',
s_auto_fountain:'Auto-fontene (1.5×)',
s_daily_coins:'Daglige mynter',
s_stars:'Stjerner',
s_diamonds_tower:'Diamanter (Tårn)',
s_tower_loop:'Tårnløkke',
s_auto_roll_x25:'Auto-roll x25 hell',
s_auto_craft:'Automatisk crafting',
s_auto_vip_sword:'Kjøp VIP automatisk',
s_auto_vip_waves:'Kjøp VIP automatisk (Bølgjer)',
s_direct_kill:'Direkte kill-spam',
s_direct_kill_rate:'Kill-rate',
s_auto_buy_upgrades:'Auto Buy oppgraderinger',
s_boost_coins:'Automatisk oppgradering: Mynter',
s_boost_diamonds:'Automatisk oppgradering: Diamanter',
s_boost_luck:'Automatisk oppgradering: flaks',
s_auto_unlock_areas:'Autoopplåsingsområder',
s_auto_rebirth:'Auto gjenfødelse',
s_auto_join_tp:'Teleporter til høyeste område',
s_hide_kill_rewards:'Skjul Kill-belønninger',
s_hide_roll_anim:'Skjul rulle-animasjon',
rng_title:'Kjæledyr RNG Juksekoder',
rng_sec_rolling:'Rullende',
rng_sec_crafting:'Håndverk',
rng_sec_combat:'Kamp',
rng_sec_upgrades:'Oppgraderinger',
rng_sec_areas:'Områder',
rng_actions:'Handlinger',
log_craft:'Håndverk',
log_success:'SUKSESS',
log_fail:'mislykkes',
log_unlocking_area:'Opplåsingsområde',
log_area_unlocked:'Område ulåst',
log_equipped:'Utstyrt',
log_bought_upgrade:'Kjøpte oppgradering',
log_teleported_to:'Teleportert til',
log_rebirthing:'Gjenfødsel',
h_rng:'rng',
h_accts:'Kontoar',
s_auto_collect:'Auto-innsamling av inntekt',
s_collect_interval:'Innsamlingsintervall',
s_chat_fade:'Chat-utslukningstid',
s_name_colors:'Brukarnamn fargar',
s_chat_enhance:'Chat-forbetringar',
mes_hint:'Tips: legg "mes" inn i brukarnamna di for ein animert regnbogeeffekt!',
s_carry_tune:'Bæremelodie (Stjeling)',
s_pet_pickup_radius:'Kjæledyr Stjele Radius',
s_carry_vol:'Bærevolum',
carry_tune_default:'Standard',
carry_tune_silent:'Stille',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassisk',
carry_tune_electronic:'Elektronisk',
carry_tune_epic:'Episk',
carry_tune_folk:'Folkemusikk',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metall',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Stein',
s_cont_cuddle:'Kontinuerlig kos',
s_protips:'Pro-tips',
s_hideprotips:'Gøym mine Pro-tips',
s_show_exp_modes:'Vis eksperimentelle moduser',
s_showcoords:'Vis koordinatar',
s_showfps:'Vis FPS',
s_showtargetinfo:'Vis målinfo',
s_showobj:'Vis antall enheter/masker',
s_copy_dbg:'Kopier debug-loggar',
s_copy_json:'Kopier JSON',
s_clear_dbg:'Tøm',
h_fly:'Flyving',
h_speed:'Hastighetshack',
h_waypoints:'Veipunkter',
h_autolock:'Auto-lås',
h_invisible:'Usynlig',
h_cuddle:'Kos',
h_pets:'Kjæledyr',
h_snipe:'Snikskytter',
h_help:'Hjelp',
h_settings:'Innstillinger',
h_prv:'Privat rom',
h_tc:'Fullfør tårn',
h_tcl:'Tårnløkke',
kb_fly:'Flyving (veksle)',
kb_fly_down:'Fly ned',
kb_set_home:'Sett hjem',
kb_home:'Heim',
kb_back:'Tilbake',
kb_cuddle:'Kosepanel',
kb_settings:'Innstillinger',
kb_pets:'Kjæledyrleser',
kb_slots:'Veipunktplasser',
kb_snipe:'Snikskytterpanel',
kb_snipe_toggle:'Snikskytter på/av',
kb_attack:'Angrip nærmeste',
kb_help:'Hjelp',
kb_tower:'Fullfør tårn',
kb_tower_loop:'Tårnløkke',
kb_invisible:'Usynlig',
kb_first_person:'Førsteperson',
kb_autolock:'autolås base',
kb_prv:'Privat rom',
kb_rng:'RNG',
kb_accts:'Kontoar',
pets_title:'Kjæledyr',
pets_search_placeholder:'f.eks. vill pus, gylden ELLER diamant, (gylden ELLER smaragd) vill',
pets_hint:'Ord kombineres med OG. Bruk OR for alternativer, parenteser for gruppering. * eller % som jokertegn. Set - foran eit ord for å utelukke det.',
pets_empty:'Ingen kjæledyr funnet',
pt_name:'Navn',
pt_mut:'Mutasjon',
pt_rar:'Sjeldenhet',
pt_owner:'Eier',
pt_worth:'Verdi',
pt_income:'Inntekt/s',
pt_dist:'Avst',
slots_title:'Veipunktplasser',
sniper_title:'Kjæledyrsnikskytter',
sniper_tbl_pet:'Kjæledyr',
sniper_tbl_owner:'Eier',
sniper_tbl_lock:'Låse',
sniper_placeholder:'f.eks. halo, golden OR diamond, emerald dragon',
sniper_hint:'Ord kombineres med OG. Bruk OR for alternativer, parenteser for gruppering. * eller % som jokertegn. Set - foran eit ord for å utelukke det.',
sniper_room_col:'Rom',
sniper_scans_col:'Skanner',
sniper_top_pet_col:'Topp kjæledyr',
sniper_top_worth_col:'Topp verdt',
sniper_top_owner_col:'Toppeier',
sniper_age_col:'Alder',
sniper_join_btn:'Bli med',
sniper_full:'Full',
sniper_join_failed:'Målrom fullt',
sniper_scanning_rooms:'Søkjer andre rom…',
sniper_scan_off:'Autojakt av',
sniper_scan_next:'Neste skann inn',
sniper_scan_idle:'Inaktiv – venter på å skanne',
sniper_auto_place:'Auto-plasser på base',
sniper_place_desc:'(plasserer det stolne kjæledyret i baseplassen din)',
sniper_auto_drop:'Slipp automatisk ikkje-matchende kjæledyr i Bølger',
sniper_drop_desc:'(slipper ville kjæledyr som ikkje matcher filteret for å oppdatere spawn-poolen)',
sniper_auto_hunt:'Auto-jakt',
sniper_hunt_desc:'(skannar andre rom, hoppar til beste treff)',
sniper_auto_sell:'Auto-salg ved Tyveri',
sniper_sell_desc:'(selger svakeste når basen er full)',
sniper_lockdown:'Låsing ≤',
sniper_lockdown_hint:'Stjel fra baser med ≤ denne gjenværende tiden. 0 = kun ulåste.',
sniper_join_grace:'Bli med nåde',
sniper_start:'Start',
sniper_stop:'Stopp',
sniper_idle:'Inaktiv',
sniper_no_filter:'Ingen filter',
sniper_waiting:'Venter på spill...',
sniper_hold_pause:'Holder kjæledyr — pauset',
sniper_stolen_pause:'holder vårt kjæledyr — pauset',
sniper_cooldown:'Nedkjøling',
sniper_hopping:'Bytter server...',
sniper_na:'Snikskytteren er ikke tilgjengelig i lobbyen',
sniper_wait_lock:'Venter på låsedata...',
sniper_locked:'Base låst — hopper over...',
sniper_full_eggs:'Base full — kun egg, kan ikke selge',
sniper_stealing:'Stjeler',
sniper_dropped:'Sluppet',
sniper_holding:'Holder',
sniper_place:'Plasser på basen!',
sniper_steal_mode:'[Tyveri]',
sniper_theft_nohop:'Kjæledyr stjeles av',
sniper_nohop_suffix:'— ingen hopp',
sniper_sniping:'Sniping:',
sniper_options:'Alternativer',
sniper_drop_fail_status:'Slipp mislyktes!',
sniper_hotkey_label:'Hurtigtast:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Gripping mislyktes. Prøver igjen...',
sniper_our_pet_stolen:'Vårt kjæledyr ble stjålet — 8s nedkjøling',
sniper_hopping_short:'Hopper...',
sniper_base_full:'Basen full',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleporter',
pet_pickup_title:'Plukk opp',
owner_yours:'Ditt',
owner_wild:'Vill',
footer_gf:'fet gaffel',
copy_ok:'Kopiert',
copy_failed:'Kopiering mislyktes',
s_invis_on_fly:'Usynleg ved flyging',
snipe_walk_home:'Gå heim etter stjeling',
snipe_walk_home_desc:'Gå tilbake til basen din',
sniper_afk_sell:'AFK selg ikkje-matchende kjæledyr',
sniper_afk_sell_desc:'(når inaktiv 5s, selg kjæledyr som ikkje matcher filter etter verdi — berre bølgjer)',
hb_fly:'FLY',
hb_lck:'LÅS',
hb_inv:'USY',
hb_cud:'KLEM',
hb_pet:'DYR',
hb_snp:'SNI',
hb_cfg:'INN',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KTO',
ban_title:'Tilkoplinga blokkert',
ban_sub:'IP-adressa di er avgrensa av Meeland',
ban_body:'Ikkje bekymra deg — dette er enkelt å fiksa! Ein gratis VPN gjev deg ei ny IP-adresse så du kan spela igjen.',
ban_pick:'Rask løysing — vel ein:',
ban_warp:'gratis, ubegrensa, oppsett med eitt klikk',
ban_warp_store:'også i App Store og Play Store som "1.1.1.1"',
ban_proton:'ingen datagrense, 5 land',
ban_steps:'Installer → kopla til → last denne sida på nytt. Det er det!',
ban_ok:'Skjønar',
warn_title:'Bruk alltid ein VPN',
warn_body:'Spel alltid med <b>VPN</b> på.',
warn_ok:'Skjønar',
loading:'Lastar',
tcl_loading:'Fullt tårnløkke køyrer. Trykk {key} for å stoppe.',
hop_search:'Søkjer etter kamp',
hop_match:'Fann {name} — går inn',
hop_flee:'Flykt frå inntrengjar',
hop_reconnect:'Koplar på nytt',
hop_reload:'Lastar på nytt',
hop_fall:'Kjem seg etter fall',
hop_join:'Går inn i rommet',
lock_off:'AV',
lock_unlocked:'ULÅST',
desc_intro:'MES gir deg wallhack, autofarming, samling av sjeldne kjæledyr, fartsøkning, flytur, usynlighet og mer i Meeland',
desc_free:'100% gratis, for alltid. Har du tilbakemelding? Legg igjen en ⭐ positiv anmeldelse — det holder oppdateringene i gang.',
desc_h_movement:'Rørsle',
desc_h_combat:'Kamp',
desc_h_tuning:'Fininnstilling',
desc_h_pets:'Kjæledyr & Tjuveri',
desc_h_economy:'Økonomi',
desc_h_custom:'Tilpassing',
desc_h_extras:'Ekstra',
desc_fly:'Flyving',
desc_fly_d:'Space opp, F ned. Justerbar hastigheit.',
desc_speed:'Blinke',
desc_speed_d:'Shift for umiddelbar teleportering.',
desc_noclip:'Gå gjennom vegger',
desc_noclip_d:'Gå gjennom veggar.',
desc_walls:'Gå på Vegger',
desc_walls_d:'Klatr på alle overflater.',
desc_waypts:'Veipunkter',
desc_waypts_d:'Lagre 10 posisjonar. Teleport med éin tast. <kbd>Z</kbd> for å bytte.',
desc_invis:'Usynleg',
desc_invis_d:'Trykk CapsLock for å forsvinne heilt.',
desc_fpv:'FPV',
desc_fpv_d:'Trykk <kbd>.</kbd> for å bytte til førstepersonskamera.',
desc_anti_invis:'Anti-usynlighet',
desc_anti_invis_d:'Sjå usynlege spelarar som spøkelse.',
desc_xray:'Røntgensyn',
desc_xray_d:'Sjå spelarar gjennom veggar i Mordmysterium. Raud = mordar, grøn = sivil.',
desc_nodeathh:'Udødeleg',
desc_nodeath_d:'Immun mot all skade.',
desc_antikb:'Anti-knockback',
desc_antikb_d:'Kan ikkje dytta deg.',
desc_attack:'Øyeblikkelig angrep',
desc_attack_d:'<kbd>G</kbd> teleporterer til næraste spelar og slår.',
desc_jumpgrav:'Hopp og Tyngdekraft',
desc_jumpgrav_d:'Justerbare multiplikatorar i Innstillingar.',
desc_fov:'FOV Kontroll',
desc_fov_d:'FOV-glidebrytarar for første- og tredjeperson.',
desc_autoinvis:'Auto-Usynleg ved Flyging',
desc_autoinvis_d:'Bli usynleg automatisk når du flyg.',
desc_sniper:'Kjæledyrsnikskytter',
desc_sniper_d:'Automatisk tjuveri av filtrerte kjæledyr. Begge modusar.',
desc_prv:'Privat rom',
desc_prv_d:'<kbd>PgDn</kbd> opprettar eit privat rom i gjeldande modus og vert automatisk med.',
desc_petbrow:'Kjæledyrleser',
desc_petbrow_d:'<kbd>K</kbd> viser alle kjæledyr. Sorter, filtrer, grip.',
desc_cuddle:'Kosepanel',
desc_cuddle_d:'<kbd>J</kbd> listar spelarar etter avstand. Klikk for å følgje.',
desc_return:'Auto Retur',
desc_return_d:'Teleporterer heim etter tjuveri.',
desc_autolock:'Auto-lås',
desc_autolock_d:'Basen alltid låst.',
desc_fountain:'Auto-fontene',
desc_fountain_d:'Permanent 1.5× forteneste. Auto-fornyelse.',
desc_money:'Gratis penger + Stjerner + Diamanter',
desc_money_d:'Inga reklame nødvendig.',
desc_collect:'Auto-Innsamling',
desc_collect_d:'Kjæledyrinntekt kvar 30. sekund.',
desc_music:'Bæremusikk',
desc_music_d:'Musikk medan du stjål. 15 sjangrar.',
desc_chatfade:'Chat-forsvinning',
desc_chatfade_d:'Styr meldingssynlegheit. 5–120s.',
desc_emotes:'Flyge-emotes',
desc_emotes_d:'Tilfeldige emotes under flyging.',
desc_displays:'Skjermoverlegg',
desc_displays_d:'Koordinatar, FPS-teljar og målinfo.',
desc_config:'Innstillingar',
desc_config_d:'<kbd>M</kbd> for funksjonar, tastar, hastigheiter.',
desc_langs:'60 Språk',
desc_langs_d:'Full UI-omsetjing.',
desc_tower:'Fullfør tårn',
desc_tower_d:'<kbd>Y</kbd> for umiddelbar Obby Tower siger.',
desc_cats:'Kattelasteskjermar',
desc_cats_d:'Søte kattar erstattar lasting.',
desc_h_install:'Installasjon',
desc_desktop:'Skrivebord (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installer <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> eller <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klikk Installer ovenfor',
desc_inst_open:'Åpne et hvilket som helst Meeland-spill — det bare fungerer',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Installer <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox for Android</a> fra Play Store',
desc_mob_addon:'Åpne Firefox → Meny → Tillegg → installer <strong>Tampermonkey</strong>',
desc_mob_visit:'Besøk denne siden i Firefox og trykk Installer',
desc_mob_play:'Spill Meeland — berørings-HUD-knappene vises automatisk',
desc_ios:'iOS: Apple blokkerer nettleserutvidelser i alle iOS-nettlesere (inkludert Firefox). Bruk en skrivebords- eller Android-nettleser.',
desc_h_privacy:'Personvern',
desc_privacy:'Kun klientside — ingen data forlater nettleseren din'
});
_mk('sk','Slovenčina',{
close:'✕',
refresh:'↻',
go:'Choď',
set:'Nastaviť',
auto:'Automaticky',
empty:'prázdne',
help_title:'Pomoc',
players_title:'Hráči',
players_empty:'Žiadni ďalší hráči neboli nájdení',
settings_title:'Nastavenia',
settings_reset:'Resetovať',
tab_gameplay:'Hra',
tab_economy:'Ekonomika',
tab_audio:'Audio',
tab_advanced:'Pokročilé',
tab_hud:'HUD',
tab_keys:'Klávesy',
tab_accounts:'Účty',
acct_current:'Aktuálny',
acct_new:'Nový',
acct_import:'Importovať',
acct_switch:'Prepnúť',
acct_reload:'Obnoviť',
acct_delete:'Vymazať',
acct_cancel:'Zrušiť',
acct_empty:'Prázdne',
acct_token_ph:'Token',
acct_copy:'Kopírovať',
acct_export:'Exportovať',
acct_rename:'Premenovať',
acct_save:'Uložiť',
acct_name_len:'Názov musí mať 4-12 znakov',
acct_name_fail:'Premenovanie zlyhalo',
acct_invalid:'Neplatný',
acct_ready:'Účet pripravený. Zavri Meeland, zmeň IP, potom obnov.',
acct_ip_note:'Vždy používaj VPN a pri zmene účtu zmeň IP.',
acct_howto:'1. Kliknite na Kopírovať, aby ste skopírovali odkaz tohto účtu.\n2. V inom prehliadači alebo zariadení — alebo s priateľom — otvorte MES.\n3. Kliknite na Importovať a vložte odkaz.',
sh_movement:'Pohyb',
sh_defense:'Obrana',
sh_camera:'Kamera',
sh_overlays:'Prekrytia',
sh_behaviour:'Správanie',
sh_buttons:'Tlačidlá',
sh_language:'Jazyk',
sh_chat:'Chat',
sh_waves:'Waves',
sh_steal_a_pet:'Ukradnúť domáceho miláčika',
sh_tower:'Tower',
sh_misc_multi:'Rôzne (viac režimov)',
s_noclip:'Bez kolízie',
s_fly:'Lietať',
s_fly_emotes:'Letové emotikony',
s_base_speed:'Základná rýchlosť',
s_jump_mult:'Výška skoku',
s_grav_mult:'Gravitácia',
s_walk_up_walls:'chodiť po stenách',
s_carry_normalize:'Rýchlosť prenosu + skok',
s_invincibility:'Nezraniteľnosť',
s_anti_kb:'Anti-odhodenie',
s_invisible:'Neviditeľný',
s_xray_infection:'Röntgen (Záhada Vraždy)',
s_ghost_mode:'Režim ducha',
s_flee_intruder:'Uteč pri votrelcovi',
s_first_person:'Pohľad prvej osoby',
s_fov_first_person:'FOV (1. os.)',
s_fov_third_person:'FOV (3. os.)',
s_fov_vertical_mult:'FOV Vertikálny multiplikátor',
s_auto_lock:'Auto-zamknúť základňu',
s_auto_fountain:'Auto-fontána (1.5×)',
s_daily_coins:'Denné mince',
s_stars:'Hviezdy',
s_diamonds_tower:'Diamanty (Veža)',
s_tower_loop:'Slučka veže',
s_auto_roll_x25:'Auto roll x25 šťastia',
s_auto_craft:'Automatické craftovanie',
s_auto_vip_sword:'Automatický nákup VIP',
s_auto_vip_waves:'Automatický nákup VIP (Vlny)',
s_direct_kill:'Priamy spam zabíjania',
s_direct_kill_rate:'Rýchlosť zabíjania',
s_auto_buy_upgrades:'Aktualizácie automatického nákupu',
s_boost_coins:'Automatická aktualizácia: mince',
s_boost_diamonds:'Automatická aktualizácia: Diamanty',
s_boost_luck:'Automatická aktualizácia: Šťastie',
s_auto_unlock_areas:'Automatické odomknutie oblastí',
s_auto_rebirth:'Automatické znovuzrodenie',
s_auto_join_tp:'Teleportujte sa do najvyššej oblasti',
s_hide_kill_rewards:'Skryť odmeny za zabitie',
s_hide_roll_anim:'skryť animáciu rolovania',
rng_title:'Cheaty na domáce zvieratá RNG',
rng_sec_rolling:'Rolovanie',
rng_sec_crafting:'crafting',
rng_sec_combat:'Bojovať',
rng_sec_upgrades:'Upgrady',
rng_sec_areas:'Oblasti',
rng_actions:'Akcie',
log_craft:'remeslo',
log_success:'ÚSPECH',
log_fail:'zlyhať',
log_unlocking_area:'Oblasť odomknutia',
log_area_unlocked:'Oblasť odomknutá',
log_equipped:'Vybavený',
log_bought_upgrade:'Zakúpený upgrade',
log_teleported_to:'Teleportované na',
log_rebirthing:'Znovuzrodenie',
h_rng:'rng',
h_accts:'Účty',
s_auto_collect:'Auto-zber príjmov',
s_collect_interval:'Interval zberu',
s_chat_fade:'Čas miznúceho chatu',
s_name_colors:'Farby používateľských mien',
s_chat_enhance:'Vylepšenia chatu',
mes_hint:'Tip: vložte "mes" do svojho používateľského mena pre animovaný dúhový efekt!',
s_carry_tune:'Melódia prenosu (Krádež)',
s_pet_pickup_radius:'Polomer Krádeže Zvieratka',
s_carry_vol:'Hlasitosť prenosu',
carry_tune_default:'Predvolené',
carry_tune_silent:'Tiché',
carry_tune_ambient:'Okolité',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasická',
carry_tune_electronic:'Elektronická',
carry_tune_epic:'Epická',
carry_tune_folk:'Ľudová',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Kovové',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Nepretržité maznanie',
s_protips:'Pro tipy',
s_hideprotips:'Skryť moje Pro tipy',
s_show_exp_modes:'Zobraziť experimentálne režimy',
s_showcoords:'Zobraziť súradnice',
s_showfps:'Zobraziť FPS',
s_showtargetinfo:'Zobraziť info o cieli',
s_showobj:'Zobraziť počet entít / siete',
s_copy_dbg:'Kopírovať debug protokoly',
s_copy_json:'Kopírovať JSON',
s_clear_dbg:'Vymazať',
h_fly:'Lietanie',
h_speed:'Hack rýchlosti',
h_waypoints:'Trasové body',
h_autolock:'Auto-zamknutie',
h_invisible:'Neviditeľný',
h_cuddle:'Maznanie',
h_pets:'Domáce zvieratá',
h_snipe:'Ostreľovač',
h_help:'Pomoc',
h_settings:'Nastavenia',
h_prv:'Súkromná miestnosť',
h_tc:'Dokončiť vežu',
h_tcl:'Slučka veže',
kb_fly:'Lietanie (prepnúť)',
kb_fly_down:'Lietať dolu',
kb_set_home:'Nastaviť domov',
kb_home:'Domov',
kb_back:'Späť',
kb_cuddle:'Panel maznania',
kb_settings:'Nastavenia',
kb_pets:'Prehliadač zvierat',
kb_slots:'Sloty trasových bodov',
kb_snipe:'Panel ostreľovača',
kb_snipe_toggle:'Ostreľovač zap/vyp',
kb_attack:'Zaútočiť na najbližšieho',
kb_help:'Pomoc',
kb_tower:'Dokončiť vežu',
kb_tower_loop:'Slučka veže',
kb_invisible:'Neviditeľný',
kb_first_person:'Prvá osoba',
kb_autolock:'Základňa automatického uzamknutia',
kb_prv:'Súkromná miestnosť',
kb_rng:'RNG',
kb_accts:'Účty',
pets_title:'Domáce zvieratá',
pets_search_placeholder:'napr. divoké mačiatko, zlaté ALEBO diamantové, (zlaté ALEBO smaragdové) divoké',
pets_hint:'Slová sa kombinujú s A. Použi OR pre alternatívy, zátvorky na zoskupenie. * alebo % ako zástupný znak. Pred slovo dajte -, aby ste ho vylúčili.',
pets_empty:'Žiadne zvieratá sa nenašli',
pt_name:'Meno',
pt_mut:'Mutácia',
pt_rar:'Vzácnosť',
pt_owner:'Vlastník',
pt_worth:'Hodnota',
pt_income:'Príjem/s',
pt_dist:'Vzd',
slots_title:'Sloty trasových bodov',
sniper_title:'Ostreľovač zvierat',
sniper_tbl_pet:'Zviera',
sniper_tbl_owner:'Vlastník',
sniper_tbl_lock:'Zamknúť',
sniper_placeholder:'napr. halo, golden OR diamond, emerald dragon',
sniper_hint:'Slová sa kombinujú s A. Použi OR pre alternatívy, zátvorky na zoskupenie. * alebo % ako zástupný znak. Pred slovo dajte -, aby ste ho vylúčili.',
sniper_room_col:'Miestnosť',
sniper_scans_col:'Skenuje',
sniper_top_pet_col:'top maznáčik',
sniper_top_worth_col:'najvyššia hodnota',
sniper_top_owner_col:'Hlavný vlastník',
sniper_age_col:'Vek',
sniper_join_btn:'Pripojiť sa',
sniper_full:'Plný',
sniper_join_failed:'Cieľová miestnosť je plná',
sniper_scanning_rooms:'Hľadám iné miestnosti…',
sniper_scan_off:'Vypnutý automatický lov',
sniper_scan_next:'Ďalšie skenovanie',
sniper_scan_idle:'Nečinný — čaká na skenovanie',
sniper_auto_place:'Auto-umiestnenie na základňu',
sniper_place_desc:'(umiestni ukradnuté zviera do slotu základne)',
sniper_auto_drop:'Automaticky pustiť nezodpovedajúce zvieratá vo Vlnách',
sniper_drop_desc:'(pustí divoké zvieratá, ktoré nezodpovedajú filtru, aby obnovil spawn pool)',
sniper_auto_hunt:'Auto-lov',
sniper_hunt_desc:'(prehľadáva iné miestnosti, skočí k najlepšej zhode)',
sniper_auto_sell:'Auto-predaj pri Krádeži',
sniper_sell_desc:'(predá najslabšie keď je základňa plná)',
sniper_lockdown:'Zamknutie ≤',
sniper_lockdown_hint:'Kradne ciele zo základní s ≤ toľko zostávajúceho času. 0 = len odomknuté.',
sniper_join_grace:'Pridajte sa k milosti',
sniper_start:'Štart',
sniper_stop:'Stop',
sniper_idle:'Neaktívny',
sniper_no_filter:'Žiadny filter',
sniper_waiting:'Čakanie na hru...',
sniper_hold_pause:'Drží zviera — pozastavené',
sniper_stolen_pause:'drží naše zviera — pozastavené',
sniper_cooldown:'Ochladenie',
sniper_hopping:'Mením server...',
sniper_na:'Ostreľovač nie je dostupný v lobby',
sniper_wait_lock:'Čakanie na údaje o zamknutí...',
sniper_locked:'Základňa zamknutá — preskakujem...',
sniper_full_eggs:'Základňa plná — len vajcia, nedá sa predať',
sniper_stealing:'Kradnem',
sniper_dropped:'Pustené',
sniper_holding:'Drží',
sniper_place:'Umiestni na základňu!',
sniper_steal_mode:'[Krádež]',
sniper_theft_nohop:'Zviera kradne',
sniper_nohop_suffix:'— žiadny skok',
sniper_sniping:'Ostreľovanie:',
sniper_options:'Možnosti',
sniper_drop_fail_status:'Pustenie zlyhalo!',
sniper_hotkey_label:'Klávesová skratka:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Uchopenie zlyhalo. Skúšam znova...',
sniper_our_pet_stolen:'Naše zviera bolo ukradnuté — 8s ochladenie',
sniper_hopping_short:'Skáčem...',
sniper_base_full:'Základňa plná',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ŠPRINT',
pet_teleport_title:'Teleportovať sa',
pet_pickup_title:'vyzdvihnúť',
owner_yours:'Váš',
owner_wild:'Divoký',
footer_gf:'Mastná vidlica',
copy_ok:'Skopírované',
copy_failed:'Kopírovanie zlyhalo',
s_invis_on_fly:'Neviditeľný pri lete',
snipe_walk_home:'Choď domov po krádeži',
snipe_walk_home_desc:'Choď späť na svoju základňu',
sniper_afk_sell:'AFK predaj nezhodujúcich sa zvierat',
sniper_afk_sell_desc:'(keď nečinný 5s, predaj zvieratá nezodpovedajúce filtru podľa hodnoty — iba vlny)',
hb_fly:'LET',
hb_lck:'ZMK',
hb_inv:'NEV',
hb_cud:'OBJ',
hb_pet:'ZVI',
hb_snp:'SNI',
hb_cfg:'NAS',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ÚčT',
ban_title:'Pripojenie zablokované',
ban_sub:'Vaša IP adresa bola obmedzená službou Meeland',
ban_body:'Nemajte obavy — toto sa ľahko vyrieši! Bezplatná VPN vám dá novú IP adresu, aby ste mohli znova hrať.',
ban_pick:'Rýchla oprava — vyberte si jednu:',
ban_warp:'zadarmo, neobmedzene, nastavenie jedným kliknutím',
ban_warp_store:'k dispozícii aj v App Store a Play Store ako "1.1.1.1"',
ban_proton:'bez dátového limitu, 5 krajín',
ban_steps:'Nainštalujte → pripojte sa → obnovte túto stránku. To je všetko!',
ban_ok:'Rozumiem',
warn_title:'Vždy používajte VPN',
warn_body:'Vždy hrajte so zapnutým <b>VPN</b>.',
warn_ok:'Rozumiem',
loading:'Načítava sa',
tcl_loading:'Prebieha plná slučka veže. Stlačením {key} zastavíte.',
hop_search:'Hľadám zápas',
hop_match:'Nájdený {name} — pripájanie',
hop_flee:'Útek pred votrelcom',
hop_reconnect:'Opätovné pripájanie',
hop_reload:'Znova načítava sa',
hop_fall:'Zotavenie po páde',
hop_join:'Pripájanie do miestnosti',
lock_off:'VYP',
lock_unlocked:'ODOMKNUTÉ',
desc_intro:'MES vám ponúka wallhack, autofarmárstvo, zbierku vzácnych domácich zvierat, zvýšenie rýchlosti, let, neviditeľnosť a ďalšie v Meelande',
desc_free:'100% zadarmo, navždy. Máš spätnú väzbu? Nechaj ⭐ pozitívnu recenziu — to udržiava aktualizácie.',
desc_h_movement:'Pohyb',
desc_h_combat:'Boj',
desc_h_tuning:'Ladenie',
desc_h_pets:'Zvieracia & Krádež',
desc_h_economy:'Ekonomika',
desc_h_custom:'Prispôsobenie',
desc_h_extras:'Doplnky',
desc_fly:'Lietanie',
desc_fly_d:'Space nahor, F nadol. Nastaviteľná rýchlosť.',
desc_speed:'Žmurkanie',
desc_speed_d:'Shift pre okamžitý teleport.',
desc_noclip:'Bez kolízie',
desc_noclip_d:'Prejdite cez steny.',
desc_walls:'Chôdza po Stenách',
desc_walls_d:'Šplhaj po akomkoľvek povrchu.',
desc_waypts:'Trasové body',
desc_waypts_d:'Uložte 10 pozícií. Teleport jednou klávesou. <kbd>Z</kbd> na prepnutie.',
desc_invis:'Neviditeľný',
desc_invis_d:'Stlač CapsLock na úplné zmiznutie.',
desc_fpv:'FPV',
desc_fpv_d:'Stlač <kbd>.</kbd> pre prepnutie kamery prvej osoby.',
desc_anti_invis:'Anti-neviditeľnosť',
desc_anti_invis_d:'Vidíte neviditeľných hráčov ako duchov.',
desc_xray:'Röntgenové Videnie',
desc_xray_d:'Vidieť hráčov cez steny v Záhade Vraždy. Červená = vrah, zelená = civil.',
desc_nodeathh:'Nesmrteľný',
desc_nodeath_d:'Imúnny voči všetkým poškodeniam.',
desc_antikb:'Anti-odhodenie',
desc_antikb_d:'Nemôžu ťa strčiť.',
desc_attack:'Okamžitý útok',
desc_attack_d:'<kbd>G</kbd> teleportuje k najbližšiemu hráčovi a udrie.',
desc_jumpgrav:'Skok a Gravitácia',
desc_jumpgrav_d:'Nastaviteľné násobiče v Nastaveniach.',
desc_fov:'Ovládanie FOV',
desc_fov_d:'Posuvníky FOV pre prvú a tretiu osobu.',
desc_autoinvis:'Auto-Neviditeľnosť pri Liete',
desc_autoinvis_d:'Staň sa neviditeľným automaticky pri lietaní.',
desc_sniper:'Ostreľovač zvierat',
desc_sniper_d:'Automatická krádež filtrovaných domácich zvierat. Oba režimy.',
desc_prv:'Súkromná miestnosť',
desc_prv_d:'<kbd>PgDn</kbd> vytvorí súkromnú miestnosť v aktuálnom režime a automaticky sa pripojí.',
desc_petbrow:'Prehliadač zvierat',
desc_petbrow_d:'<kbd>K</kbd> zobrazí všetky zvieratá. Zoradiť, filtrovať, chytiť.',
desc_cuddle:'Panel maznania',
desc_cuddle_d:'<kbd>J</kbd> zoznam hráčov podľa vzdialenosti. Kliknite pre sledovanie.',
desc_return:'Automatický Návrat',
desc_return_d:'Teleportuje domov po krádeži.',
desc_autolock:'Auto-zamknutie',
desc_autolock_d:'Základňa vždy zamknutá.',
desc_fountain:'Auto-fontána',
desc_fountain_d:'Trvalý zisk 1.5×. Automatické obnovenie.',
desc_money:'Bezplatné peniaze + Hviezdy + Diamanty',
desc_money_d:'Bez reklám.',
desc_collect:'Automatický Zber',
desc_collect_d:'Príjem zo zvierat každých 30s.',
desc_music:'Hudba pri prenose',
desc_music_d:'Hudba počas krádeže. 15 žánrov.',
desc_chatfade:'Zmiznutie chatu',
desc_chatfade_d:'Ovládaj viditeľnosť správ. 5–120s.',
desc_emotes:'Letové emoty',
desc_emotes_d:'Náhodné emoty pri létaní.',
desc_displays:'Prekrytia Obrazovky',
desc_displays_d:'Súradnice, počítadlo FPS a info o cieli.',
desc_config:'Nastavenia',
desc_config_d:'<kbd>M</kbd> pre funkcie, klávesy, rýchlosti.',
desc_langs:'60 Jazykov',
desc_langs_d:'Úplný preklad rozhrania.',
desc_tower:'Dokončiť vežu',
desc_tower_d:'<kbd>Y</kbd> pre okamžité dokončenie Obby Tower.',
desc_cats:'Obrazovky načítania s mačkami',
desc_cats_d:'Roztomilé mačky nahrádzajú načítanie.',
desc_h_install:'Inštalácia',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Nainštaluj <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> alebo <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klikni na Inštalovať hore',
desc_inst_open:'Otvor akúkoľvek hru Meeland — jednoducho to funguje',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Nainštaluj <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox pre Android</a> z Play Store',
desc_mob_addon:'Otvor Firefox → Menu → Doplnky → nainštaluj <strong>Tampermonkey</strong>',
desc_mob_visit:'Navštív túto stránku vo Firefoxe a klepni na Inštalovať',
desc_mob_play:'Hraj Meeland — dotykové HUD tlačidlá sa zobrazia automaticky',
desc_ios:'iOS: Apple blokuje rozšírenia prehliadača vo všetkých iOS prehliadačoch (vrátane Firefoxu). Použi desktopový alebo Android prehliadač.',
desc_h_privacy:'Súkromie',
desc_privacy:'Len na strane klienta — žiadne údaje neopúšťajú tvoj prehliadač'
});
_mk('sr','Српски',{
close:'✕',
refresh:'↻',
go:'Иди',
set:'Постави',
auto:'Аутоматски',
empty:'празно',
help_title:'Помоћ',
players_title:'Играчи',
players_empty:'Нису пронађени други играчи',
settings_title:'Подешавања',
settings_reset:'Ресетуј',
tab_gameplay:'Игра',
tab_economy:'Економија',
tab_audio:'Аудио',
tab_advanced:'Напредно',
tab_hud:'ХУД',
tab_keys:'Тастери',
tab_accounts:'Налози',
acct_current:'Тренутни',
acct_new:'Нови',
acct_import:'Увези',
acct_switch:'Промени',
acct_reload:'Поново учитај',
acct_delete:'Обриши',
acct_cancel:'Откажи',
acct_empty:'Празно',
acct_token_ph:'Токен',
acct_copy:'Копирај',
acct_export:'Извези',
acct_rename:'Преименуј',
acct_save:'Сачувај',
acct_name_len:'Име мора имати 4-12 знакова',
acct_name_fail:'Преименовање није успело',
acct_invalid:'Неважећи',
acct_ready:'Налог спреман. Затвори Meeland, промени IP, па поново учитај.',
acct_ip_note:'Увек користи VPN и промени IP при промени налога.',
acct_howto:'1. Кликните на Копирај да копирате линк овог налога.\n2. У другом прегледачу или уређају — или са пријатељем — отворите MES.\n3. Кликните на Увези и налепите линк.',
sh_movement:'Кретање',
sh_defense:'Одбрана',
sh_camera:'Камера',
sh_overlays:'Preklapanja',
sh_behaviour:'Ponašanje',
sh_buttons:'Dugmad',
sh_language:'Језик',
sh_chat:'Ћаскање',
sh_waves:'Waves',
sh_steal_a_pet:'Укради љубимца',
sh_tower:'Tower',
sh_misc_multi:'Разно (више режима)',
s_noclip:'Ноцлип',
s_fly:'Летите',
s_fly_emotes:'Емотикони лета',
s_base_speed:'Основна брзина',
s_jump_mult:'Висина скока',
s_grav_mult:'Гравитација',
s_walk_up_walls:'Валк Уп Валлс',
s_carry_normalize:'Брзина ношења + скок',
s_invincibility:'Нерањивост',
s_anti_kb:'Анти-одбацивање',
s_invisible:'Невидљив',
s_xray_infection:'Рендген (Мистерија Убиства)',
s_ghost_mode:'Режим духа',
s_flee_intruder:'Бежи при уљезу',
s_first_person:'Приказ из првог лица',
s_fov_first_person:'FOV (1. l.)',
s_fov_third_person:'FOV (3. l.)',
s_fov_vertical_mult:'Вертикални множилац ФОВ',
s_auto_lock:'Ауто-закључај базу',
s_auto_fountain:'Ауто-фонтана (1.5×)',
s_daily_coins:'Дневни новчићи',
s_stars:'Звезде',
s_diamonds_tower:'Дијаманти (Торањ)',
s_tower_loop:'Петља куле',
s_auto_roll_x25:'Ауто рол x25 среће',
s_auto_craft:'Ауто-крафт',
s_auto_vip_sword:'Аутоматска куповина VIP',
s_auto_vip_waves:'Аутоматска куповина VIP (Таласи)',
s_direct_kill:'Директан спам убијања',
s_direct_kill_rate:'Брзина убијања',
s_auto_buy_upgrades:'Ауто Буи Упградес',
s_boost_coins:'Аутоматска надоградња: новчићи',
s_boost_diamonds:'Аутоматска надоградња: дијаманти',
s_boost_luck:'Аутоматска надоградња: срећа',
s_auto_unlock_areas:'Области за аутоматско откључавање',
s_auto_rebirth:'Ауто Ребиртх',
s_auto_join_tp:'Телепортујте у највишу област',
s_hide_kill_rewards:'Сакриј награде за убиство',
s_hide_roll_anim:'Сакриј анимацију котрљања',
rng_title:'Петс РНГ варалице',
rng_sec_rolling:'Роллинг',
rng_sec_crafting:'Црафтинг',
rng_sec_combat:'Борба',
rng_sec_upgrades:'Надоградње',
rng_sec_areas:'Подручја',
rng_actions:'Акције',
log_craft:'Црафт',
log_success:'УСПЕХА',
log_fail:'ФАИЛ',
log_unlocking_area:'Област за откључавање',
log_area_unlocked:'Област је откључана',
log_equipped:'Опремљен',
log_bought_upgrade:'Купио надоградњу',
log_teleported_to:'Телепортован у',
log_rebirthing:'Ребиртхинг',
h_rng:'РНГ',
h_accts:'Налози',
s_auto_collect:'Ауто-сакупљање зараде',
s_collect_interval:'Интервал сакупљања',
s_chat_fade:'Време нестајања чета',
s_name_colors:'Боје корисничких имена',
s_chat_enhance:'Побољшања ћаскања',
mes_hint:'Савет: додајте "mes" у своје корисничко име за анимирани ефекат дуге!',
s_carry_tune:'Мелодија ношења (Крађа)',
s_pet_pickup_radius:'Радиус Крађе Животиње',
s_carry_vol:'Јачина звука при ношењу',
carry_tune_default:'Подразумевано',
carry_tune_silent:'Тихо',
carry_tune_ambient:'Амбијент',
carry_tune_blues:'Блуз',
carry_tune_chiptune:'Чиптун',
carry_tune_classical:'Класична',
carry_tune_electronic:'Електронска',
carry_tune_epic:'Епска',
carry_tune_folk:'Народна',
carry_tune_funk:'Фанк',
carry_tune_jazz:'Џез',
carry_tune_lofi:'Ло-Фај',
carry_tune_metal:'Метал',
carry_tune_pop:'Поп',
carry_tune_punk:'Панк',
carry_tune_reggae:'Реге',
carry_tune_rock:'Рок',
s_cont_cuddle:'Непрекидно мажење',
s_protips:'Про савети',
s_hideprotips:'Сакриј моје Про савете',
s_show_exp_modes:'Прикажи експерименталне режиме',
s_showcoords:'Прикажи координате',
s_showfps:'Прикажи ФПС',
s_showtargetinfo:'Прикажи информације о циљу',
s_showobj:'Прикажи број ентитета/месх',
s_copy_dbg:'Копирај debug логове',
s_copy_json:'Копирај JSON',
s_clear_dbg:'Очисти',
h_fly:'Летење',
h_speed:'Хак брзине',
h_waypoints:'Путне тачке',
h_autolock:'Ауто-закључавање',
h_invisible:'Невидљив',
h_cuddle:'Мажење',
h_pets:'Љубимци',
h_snipe:'Снајпер',
h_help:'Помоћ',
h_settings:'Подешавања',
h_prv:'Приватна соба',
h_tc:'Заврши торањ',
h_tcl:'Петља куле',
kb_fly:'Летење (пребаци)',
kb_fly_down:'Лети доле',
kb_set_home:'Постави дом',
kb_home:'Дом',
kb_back:'Назад',
kb_cuddle:'Панел за мажење',
kb_settings:'Подешавања',
kb_pets:'Прегледач љубимаца',
kb_slots:'Слотови путних тачака',
kb_snipe:'Панел снајпера',
kb_snipe_toggle:'Снајпер укљ/искљ',
kb_attack:'Нападни најближег',
kb_help:'Помоћ',
kb_tower:'Заврши торањ',
kb_tower_loop:'Петља куле',
kb_invisible:'Невидљив',
kb_first_person:'Прво лице',
kb_autolock:'Ауто-Лоцк Басе',
kb_prv:'Приватна соба',
kb_rng:'RNG',
kb_accts:'Налози',
pets_title:'Љубимци',
pets_search_placeholder:'нпр. дивља маца, златни ИЛИ дијамант, (златни ИЛИ смарагд) дивљи',
pets_hint:'Речи се комбинују са И. Користи OR за алтернативе, заграде за груписање. * или % као џокер. Ставите - испред речи да бисте је искључили.',
pets_empty:'Нису пронађени љубимци',
pt_name:'Име',
pt_mut:'Мутација',
pt_rar:'Реткост',
pt_owner:'Власник',
pt_worth:'Вредност',
pt_income:'Приход/с',
pt_dist:'Удаљ',
slots_title:'Слотови путних тачака',
sniper_title:'Снајпер љубимаца',
sniper_tbl_pet:'Пет',
sniper_tbl_owner:'Власник',
sniper_tbl_lock:'Закључај',
sniper_placeholder:'нпр. halo, golden OR diamond, emerald dragon',
sniper_hint:'Речи се комбинују са И. Користи OR за алтернативе, заграде за груписање. * или % као џокер. Ставите - испред речи да бисте је искључили.',
sniper_room_col:'Соба',
sniper_scans_col:'Скенирања',
sniper_top_pet_col:'Топ Пет',
sniper_top_worth_col:'Топ Вортх',
sniper_top_owner_col:'Врхунски власник',
sniper_age_col:'Старост',
sniper_join_btn:'Придружи се',
sniper_full:'Пун',
sniper_join_failed:'Циљна соба пуна',
sniper_scanning_rooms:'Тражим друге собе…',
sniper_scan_off:'Ауто хант офф',
sniper_scan_next:'Следеће скенирање',
sniper_scan_idle:'Неактиван – чека се скенирање',
sniper_auto_place:'Аутоматско постављање на базу',
sniper_place_desc:'(поставља украдену животињу у слот базе)',
sniper_auto_drop:'Аутоматски испусти неодговарајуће љубимце у Таласима',
sniper_drop_desc:'(испушта дивље љубимце који не одговарају филтеру да би обновио спавн базен)',
sniper_auto_hunt:'Ауто-лов',
sniper_hunt_desc:'(скенира друге собе, скаче на најбољи погодак)',
sniper_auto_sell:'Ауто-продаја при Крађи',
sniper_sell_desc:'(продаје најслабијег кад је база пуна)',
sniper_lockdown:'Закључавање ≤',
sniper_lockdown_hint:'Краде мете са база са ≤ овог преосталог времена. 0 = само откључане.',
sniper_join_grace:'Придружите се милости',
sniper_start:'Покрени',
sniper_stop:'Заустави',
sniper_idle:'Неактиван',
sniper_no_filter:'Нема филтера',
sniper_waiting:'Чекање игре...',
sniper_hold_pause:'Држи љубимца — паузирано',
sniper_stolen_pause:'држи нашег љубимца — паузирано',
sniper_cooldown:'Хлађење',
sniper_hopping:'Мењам сервер...',
sniper_na:'Снајпер није доступан у лобију',
sniper_wait_lock:'Чекање података о закључавању...',
sniper_locked:'База закључана — прескачем...',
sniper_full_eggs:'База пуна — само јаја, не може се продати',
sniper_stealing:'Крадем',
sniper_dropped:'Испуштено',
sniper_holding:'Држи',
sniper_place:'Постави на базу!',
sniper_steal_mode:'[Крађа]',
sniper_theft_nohop:'Љубимца краде',
sniper_nohop_suffix:'— без скока',
sniper_sniping:'Снајпирање:',
sniper_options:'Опције',
sniper_drop_fail_status:'Испуштање није успело!',
sniper_hotkey_label:'Пречица:',
sniper_panel_label:'Панел:',
sniper_grab_fail:'Хватање није успело. Покушавам поново...',
sniper_our_pet_stolen:'Наш љубимац украден — 8с хлађења',
sniper_hopping_short:'Скачем...',
sniper_base_full:'База пуна',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ТРЧИ',
pet_teleport_title:'Телепорт',
pet_pickup_title:'Покупи се',
owner_yours:'Твоја',
owner_wild:'Вилд',
footer_gf:'Масна виљушка',
copy_ok:'Копирано',
copy_failed:'Копирање није успело',
s_invis_on_fly:'Невидљив при летењу',
snipe_walk_home:'Ходај кући после крађе',
snipe_walk_home_desc:'Ходај назад до своје базе',
sniper_afk_sell:'AFK продај животиње које не одговарају',
sniper_afk_sell_desc:'(када неактиван 5с, продај животиње које не одговарају филтеру по вредности — само таласи)',
hb_fly:'ЛЕТ',
hb_lck:'ЗКЉ',
hb_inv:'НЕВ',
hb_cud:'ГРЉ',
hb_pet:'ЉМ',
hb_snp:'СНЈ',
hb_cfg:'ПСТ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'НАЛ',
ban_title:'Веза је блокирана',
ban_sub:'Вашу IP адресу је ограничио Meeland',
ban_body:'Не брините — ово је лако решити! Бесплатан VPN ће вам дати нову IP адресу да поново играте.',
ban_pick:'Брзо решење — изаберите једно:',
ban_warp:'бесплатно, неограничено, подешавање једним кликом',
ban_warp_store:'доступно и у App Store и Play Store као "1.1.1.1"',
ban_proton:'без ограничења података, 5 земаља',
ban_steps:'Инсталирајте → повежите се → освежите ову страницу. То је то!',
ban_ok:'Разумем',
warn_title:'Увек користите VPN',
warn_body:'Увек играјте са укљученим <b>VPN</b>-ом.',
warn_ok:'Разумем',
loading:'Учитавање',
tcl_loading:'Извршава се пуна петља куле. Притисните {key} да бисте зауставили.',
hop_search:'Тражење меча',
hop_match:'Пронађен {name} — придруживање',
hop_flee:'Бекство од уљеза',
hop_reconnect:'Поновно повезивање',
hop_reload:'Поновно учитавање',
hop_fall:'Опоравак од пада',
hop_join:'Придруживање соби',
lock_off:'ИСКЉ',
lock_unlocked:'ОТКЉУЧАНО',
desc_intro:'МЕС вам даје валлхацк, ауто-фарминг, колекцију ретких кућних љубимаца, повећање брзине, лет, невидљивост и још много тога у Мееланду',
desc_free:'100% бесплатно, заувек. Имаш повратне информације? Остави ⭐ позитивну рецензију — то одржава ажурирања.',
desc_h_movement:'Кретање',
desc_h_combat:'Борба',
desc_h_tuning:'Подешавање',
desc_h_pets:'Љубимци & Крађа',
desc_h_economy:'Економија',
desc_h_custom:'Прилагођавање',
desc_h_extras:'Додатно',
desc_fly:'Летење',
desc_fly_d:'Space горе, F доле. Подесива брзина.',
desc_speed:'Блинк',
desc_speed_d:'Shift за тренутну телепортацију.',
desc_noclip:'Ноцлип',
desc_noclip_d:'Пролази кроз зидове.',
desc_walls:'Ходање по Зидовима',
desc_walls_d:'Пењи се по било којој површини.',
desc_waypts:'Путне тачке',
desc_waypts_d:'Сачувај 10 позиција. Телепорт једним тастером. <kbd>Z</kbd> за пребацивање.',
desc_invis:'Невидљив',
desc_invis_d:'Притисни CapsLock за потпуни нестанак.',
desc_fpv:'FPV',
desc_fpv_d:'Притисни <kbd>.</kbd> за пребацивање камере у прво лице.',
desc_anti_invis:'Анти-невидљивост',
desc_anti_invis_d:'Види невидљиве играче као духове.',
desc_xray:'Рендгенски Вид',
desc_xray_d:'Видите играче кроз зидове у Мистерији Убиства. Црвено = убица, зелено = цивил.',
desc_nodeathh:'Бесмртан',
desc_nodeath_d:'Имун на сву штету.',
desc_antikb:'Анти-одбацивање',
desc_antikb_d:'Не можеш бити гурнут.',
desc_attack:'Тренутни напад',
desc_attack_d:'<kbd>G</kbd> телепортује до најближег играча и удара.',
desc_jumpgrav:'Скок и Гравитација',
desc_jumpgrav_d:'Подесиви множитељи у Подешавањима.',
desc_fov:'Контрола FOV',
desc_fov_d:'Клизачи FOV за прво и треће лице.',
desc_autoinvis:'Ауто-Невидљив при Лету',
desc_autoinvis_d:'Постани невидљив аутоматски док летиш.',
desc_sniper:'Снајпер љубимаца',
desc_sniper_d:'Аутоматска крађа филтрираних љубимаца. Оба режима.',
desc_prv:'Приватна соба',
desc_prv_d:'<kbd>PgDn</kbd> прави приватну собу у тренутном режиму и аутоматски се придружује.',
desc_petbrow:'Прегледач љубимаца',
desc_petbrow_d:'<kbd>K</kbd> приказује све љубимце. Сортирај, филтрирај, зграби.',
desc_cuddle:'Панел за мажење',
desc_cuddle_d:'<kbd>J</kbd> списак играча по удаљености. Кликни за праћење.',
desc_return:'Ауто Повратак',
desc_return_d:'Телепортује кући после крађе.',
desc_autolock:'Ауто-закључавање',
desc_autolock_d:'База увек закључана.',
desc_fountain:'Ауто-фонтана',
desc_fountain_d:'Трајни профит 1.5×. Аутоматско обнављање.',
desc_money:'Бесплатан новац + Звезде + Дијаманти',
desc_money_d:'Без реклама.',
desc_collect:'Ауто-Прикупљање',
desc_collect_d:'Приход од љубимаца сваких 30с.',
desc_music:'Музика при преносу',
desc_music_d:'Музика док крадеш. 15 жанрова.',
desc_chatfade:'Нестајање чета',
desc_chatfade_d:'Контролиши видљивост порука. 5–120с.',
desc_emotes:'Емоти летења',
desc_emotes_d:'Насумични емоти током лета.',
desc_displays:'Преклапања Екрана',
desc_displays_d:'Координате, бројач FPS и информације о мети.',
desc_config:'Подешавања',
desc_config_d:'<kbd>M</kbd> за функције, тастере, брзине.',
desc_langs:'60 Језика',
desc_langs_d:'Потпун превод интерфејса.',
desc_tower:'Заврши торањ',
desc_tower_d:'<kbd>Y</kbd> за тренутну победу у Obby Tower.',
desc_cats:'Екрани учитавања са мачкама',
desc_cats_d:'Слатке мачке замењују учитавање.',
desc_h_install:'Инсталација',
desc_desktop:'Десктоп (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Инсталирај <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> или <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Кликни Инсталирај изнад',
desc_inst_open:'Отвори било коју Meeland игру — једноставно ради',
desc_mobile:'Мобилни (Android)',
desc_mob_ff:'Инсталирај <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox за Android</a> из Play Store-а',
desc_mob_addon:'Отвори Firefox → Мени → Додаци → инсталирај <strong>Tampermonkey</strong>',
desc_mob_visit:'Посети ову страницу у Firefox-у и додирни Инсталирај',
desc_mob_play:'Играј Meeland — додирни HUD дугмићи се појављују аутоматски',
desc_ios:'iOS: Apple блокира проширења прегледача у свим iOS прегледачима (укључујући Firefox). Користи десктоп или Android прегледач.',
desc_h_privacy:'Приватност',
desc_privacy:'Само на страни клијента — никакви подаци не напуштају твој прегледач'
});
_mk('sv','Svenska',{
close:'✕',
refresh:'↻',
go:'Gå',
set:'Ställ in',
auto:'Auto',
empty:'tom',
help_title:'Hjälp',
players_title:'Spelare',
players_empty:'Inga andra spelare hittades',
settings_title:'Inställningar',
settings_reset:'Återställ',
tab_gameplay:'Spel',
tab_economy:'Ekonomi',
tab_audio:'Ljud',
tab_advanced:'Avancerat',
tab_hud:'HUD',
tab_keys:'Tangenter',
tab_accounts:'Konton',
acct_current:'Aktuell',
acct_new:'Ny',
acct_import:'Importera',
acct_switch:'Byt',
acct_reload:'Ladda om',
acct_delete:'Ta bort',
acct_cancel:'Avbryt',
acct_empty:'Tom',
acct_token_ph:'Token',
acct_copy:'Kopiera',
acct_export:'Exportera',
acct_rename:'Byt namn',
acct_save:'Spara',
acct_name_len:'Namn måste vara 4-12 tecken',
acct_name_fail:'Byt namn misslyckades',
acct_invalid:'Ogiltig',
acct_ready:'Konto klart. Stäng Meeland, byt IP, ladda sedan om.',
acct_ip_note:'Använd alltid VPN och byt IP vid kontobyte.',
acct_howto:'1. Klicka på Kopiera för att kopiera det här kontots länk.\n2. Öppna MES i en annan webbläsare eller enhet — eller hos en vän.\n3. Klicka på Importera och klistra in länken.',
sh_movement:'Rörelse',
sh_defense:'Försvar',
sh_camera:'Kamera',
sh_overlays:'Överlägg',
sh_behaviour:'Beteende',
sh_buttons:'Knappar',
sh_language:'Språk',
sh_chat:'Chatta',
sh_waves:'Waves',
sh_steal_a_pet:'Stjäl ett husdjur',
sh_tower:'Tower',
sh_misc_multi:'Övrigt (multi-läge)',
s_noclip:'Gå genom väggar',
s_fly:'Flyga',
s_fly_emotes:'Flyg-emotes',
s_base_speed:'Bashastighet',
s_jump_mult:'Hopphöjd',
s_grav_mult:'Allvar',
s_walk_up_walls:'gå uppför väggar',
s_carry_normalize:'Bärhastighet + hopp',
s_invincibility:'Osårbarhet',
s_anti_kb:'Anti-knockback',
s_invisible:'Osynlig',
s_xray_infection:'Röntgen (Mordmysterium)',
s_ghost_mode:'Spökläge',
s_flee_intruder:'Fly vid inkräktare',
s_first_person:'Förstapersonsvy',
s_fov_first_person:'FOV (1:a)',
s_fov_third_person:'FOV (3:e)',
s_fov_vertical_mult:'FOV vertikal multiplikator',
s_auto_lock:'Auto-lås bas',
s_auto_fountain:'Auto-fontän (1.5×)',
s_daily_coins:'Dagliga mynt',
s_stars:'Stjärnor',
s_diamonds_tower:'Diamanter (Torn)',
s_tower_loop:'Tornloop',
s_auto_roll_x25:'Auto-roll x25 tur',
s_auto_craft:'Automatisk crafting',
s_auto_vip_sword:'Köp VIP automatiskt',
s_auto_vip_waves:'Köp VIP automatiskt (Vågor)',
s_direct_kill:'Direkt kill-spam',
s_direct_kill_rate:'Kill-takt',
s_auto_buy_upgrades:'Autoköp uppgraderingar',
s_boost_coins:'Automatisk uppgradering: mynt',
s_boost_diamonds:'Automatisk uppgradering: Diamanter',
s_boost_luck:'Automatisk uppgradering: tur',
s_auto_unlock_areas:'Autoupplåsningsområden',
s_auto_rebirth:'Auto pånyttfödelse',
s_auto_join_tp:'Teleportera till det högsta området',
s_hide_kill_rewards:'Göm Kill-belöningar',
s_hide_roll_anim:'göm rulle animation',
rng_title:'Pets RNG Fusk',
rng_sec_rolling:'Rullande',
rng_sec_crafting:'Hantverk',
rng_sec_combat:'Bekämpa',
rng_sec_upgrades:'Uppgraderingar',
rng_sec_areas:'Områden',
rng_actions:'Åtgärder',
log_craft:'Hantverk',
log_success:'FRAMGÅNG',
log_fail:'MISSLYCKAS',
log_unlocking_area:'Upplåsningsområde',
log_area_unlocked:'Området är upplåst',
log_equipped:'Utrustad',
log_bought_upgrade:'Köpte uppgradering',
log_teleported_to:'Teleporterade till',
log_rebirthing:'Återfödelse',
h_rng:'rng',
h_accts:'Konton',
s_auto_collect:'Auto-insamling av inkomst',
s_collect_interval:'Insamlingsintervall',
s_chat_fade:'Chattövertoningsstid',
s_name_colors:'Användarnamnsfärger',
s_chat_enhance:'Chattförbättringar',
mes_hint:'Tips: inkludera "mes" i ditt användarnamn för en animerad regnbågseffekt!',
s_carry_tune:'Bärmelodin (Stjäla)',
s_pet_pickup_radius:'Husdjurs Stöldradie',
s_carry_vol:'Bärvolym',
carry_tune_default:'Standard',
carry_tune_silent:'Tyst',
carry_tune_ambient:'Omgivande',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassisk',
carry_tune_electronic:'Elektronisk',
carry_tune_epic:'Episk',
carry_tune_folk:'Folkmusik',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metall',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Sten',
s_cont_cuddle:'Kontinuerlig gos',
s_protips:'Pro-tips',
s_hideprotips:'Dölj mina Pro-tips',
s_show_exp_modes:'Visa experimentella lägen',
s_showcoords:'Visa koordinater',
s_showfps:'Visa FPS',
s_showtargetinfo:'Visa målinfo',
s_showobj:'Visa enhet/maskantal',
s_copy_dbg:'Kopiera debug-loggar',
s_copy_json:'Kopiera JSON',
s_clear_dbg:'Rensa',
h_fly:'Flygning',
h_speed:'Hastighetshack',
h_waypoints:'Punkter',
h_autolock:'Auto-lås',
h_invisible:'Osynlig',
h_cuddle:'Gos',
h_pets:'Husdjur',
h_snipe:'Prickskytt',
h_help:'Hjälp',
h_settings:'Inställningar',
h_prv:'Privat rum',
h_tc:'Slutför torn',
h_tcl:'Tornloop',
kb_fly:'Flygning (växla)',
kb_fly_down:'Flyg ner',
kb_set_home:'Sätt hem',
kb_home:'Hem',
kb_back:'Tillbaka',
kb_cuddle:'Gospanel',
kb_settings:'Inställningar',
kb_pets:'Husdjursbläddrare',
kb_slots:'Waypointplatser',
kb_snipe:'Prickskyttepanel',
kb_snipe_toggle:'Prickskytt på/av',
kb_attack:'Attackera närmaste',
kb_help:'Hjälp',
kb_tower:'Slutför torn',
kb_tower_loop:'Tornloop',
kb_invisible:'Osynlig',
kb_first_person:'Förstapersons',
kb_autolock:'autolås bas',
kb_prv:'Privat rum',
kb_rng:'RNG',
kb_accts:'Konton',
pets_title:'Husdjur',
pets_search_placeholder:'till exempel vild kattunge, gyllene ELLER diamant, (gyllene ELLER smaragd) vilda',
pets_hint:'Ord kombineras med OCH. Använd OR för alternativ, parenteser för gruppering. * eller % som jokertecken. Sätt - före ett ord för att utesluta det.',
pets_empty:'Inga husdjur hittades',
pt_name:'Namn',
pt_mut:'Mutation',
pt_rar:'Sällsynthet',
pt_owner:'Ägare',
pt_worth:'Värde',
pt_income:'Inkomst/s',
pt_dist:'Avst',
slots_title:'Waypointplatser',
sniper_title:'Husdjursprickskytt',
sniper_tbl_pet:'Sällskapsdjur',
sniper_tbl_owner:'Ägare',
sniper_tbl_lock:'Låsa',
sniper_placeholder:'t.ex. halo, golden OR diamond, emerald dragon',
sniper_hint:'Ord kombineras med OCH. Använd OR för alternativ, parenteser för gruppering. * eller % som jokertecken. Sätt - före ett ord för att utesluta det.',
sniper_room_col:'Rum',
sniper_scans_col:'Skanningar',
sniper_top_pet_col:'topp husdjur',
sniper_top_worth_col:'Topp värt',
sniper_top_owner_col:'Toppägare',
sniper_age_col:'Ålder',
sniper_join_btn:'Gå med',
sniper_full:'Full',
sniper_join_failed:'Målrummet är fullt',
sniper_scanning_rooms:'Söker andra rum…',
sniper_scan_off:'Autojakt',
sniper_scan_next:'Nästa skanna in',
sniper_scan_idle:'Inaktiv — väntar på att skanna',
sniper_auto_place:'Automatisk placering på bas',
sniper_place_desc:'(placerar det stulna husdjuret i din basplats)',
sniper_auto_drop:'Släpp automatiskt icke-matchande husdjur i Vågor',
sniper_drop_desc:'(släpper vilda husdjur som inte matchar filtret för att uppdatera spawn-poolen)',
sniper_auto_hunt:'Auto-jakt',
sniper_hunt_desc:'(skannar andra rum, hoppar till bästa träff)',
sniper_auto_sell:'Auto-sälj vid Stöld',
sniper_sell_desc:'(säljer svagaste när basen är full)',
sniper_lockdown:'Låsning ≤',
sniper_lockdown_hint:'Stjäl mål från baser med ≤ denna återstående tid. 0 = bara olåsta.',
sniper_join_grace:'Gå med nåd',
sniper_start:'Starta',
sniper_stop:'Stoppa',
sniper_idle:'Inaktiv',
sniper_no_filter:'Inget filter',
sniper_waiting:'Väntar på spel...',
sniper_hold_pause:'Håller husdjur — pausad',
sniper_stolen_pause:'håller vårt husdjur — pausad',
sniper_cooldown:'Avkylning',
sniper_hopping:'Byter server...',
sniper_na:'Prickskytten är inte tillgänglig i lobbyn',
sniper_wait_lock:'Väntar på låsdata...',
sniper_locked:'Bas låst — hoppar över...',
sniper_full_eggs:'Bas full — bara ägg, kan inte sälja',
sniper_stealing:'Stjäl',
sniper_dropped:'Släppt',
sniper_holding:'Håller',
sniper_place:'Placera på basen!',
sniper_steal_mode:'[Stöld]',
sniper_theft_nohop:'Husdjur stjäls av',
sniper_nohop_suffix:'— inget hopp',
sniper_sniping:'Prickskytte:',
sniper_options:'Alternativ',
sniper_drop_fail_status:'Släpp misslyckades!',
sniper_hotkey_label:'Snabbtangent:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Grepp misslyckades. Försöker igen...',
sniper_our_pet_stolen:'Vårt husdjur stals — 8s avkylning',
sniper_hopping_short:'Hoppar...',
sniper_base_full:'Basen full',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SPRINT',
pet_teleport_title:'Teleportera',
pet_pickup_title:'Plocka upp',
owner_yours:'Din',
owner_wild:'Vild',
footer_gf:'fet gaffel',
copy_ok:'Kopierade',
copy_failed:'Kopiering misslyckades',
s_invis_on_fly:'Osynlig vid flygning',
snipe_walk_home:'Gå hem efter stöld',
snipe_walk_home_desc:'Gå tillbaka till din bas',
sniper_afk_sell:'AFK sälj icke-matchande husdjur',
sniper_afk_sell_desc:'(när inaktiv 5s, sälj husdjur som inte matchar filter efter värde — endast vågor)',
hb_fly:'FLY',
hb_lck:'LÅS',
hb_inv:'OSY',
hb_cud:'KRM',
hb_pet:'DJR',
hb_snp:'PRI',
hb_cfg:'INS',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'KNT',
ban_title:'Anslutning blockerad',
ban_sub:'Din IP-adress har begränsats av Meeland',
ban_body:'Oroa dig inte — det är lätt att fixa! En gratis VPN ger dig en ny IP så att du kan spela igen.',
ban_pick:'Snabb lösning — välj en:',
ban_warp:'gratis, obegränsad, installation med ett klick',
ban_warp_store:'finns även i App Store & Play Store som "1.1.1.1"',
ban_proton:'ingen datagräns, 5 länder',
ban_steps:'Installera → anslut → ladda om denna sida. Det var allt!',
ban_ok:'Uppfattat',
warn_title:'Använd alltid en VPN',
warn_body:'Spela alltid med <b>VPN</b> påslaget.',
warn_ok:'Uppfattat',
loading:'Laddar',
tcl_loading:'Full tornloop körs. Tryck på {key} för att stoppa.',
hop_search:'Söker match',
hop_match:'Hittade {name} — ansluter',
hop_flee:'Flyr från inkräktare',
hop_reconnect:'Återansluter',
hop_reload:'Laddar om',
hop_fall:'Återhämtar sig från fall',
hop_join:'Ansluter till rummet',
lock_off:'AV',
lock_unlocked:'OLÅST',
desc_intro:'MES ger dig wallhack, autoodling, samling av sällsynta husdjur, fartökning, flygning, osynlighet och mer i Meeland',
desc_free:'100% gratis, för alltid. Har du feedback? Lämna en ⭐ positiv recension — det håller uppdateringarna igång.',
desc_h_movement:'Rörelse',
desc_h_combat:'Strid',
desc_h_tuning:'Finjustering',
desc_h_pets:'Husdjur & Stöld',
desc_h_economy:'Ekonomi',
desc_h_custom:'Anpassning',
desc_h_extras:'Extra',
desc_fly:'Flygning',
desc_fly_d:'Space upp, F ner. Justerbar hastighet.',
desc_speed:'Blinka',
desc_speed_d:'Shift för omedelbar teleportering.',
desc_noclip:'Gå genom väggar',
desc_noclip_d:'Gå genom väggar.',
desc_walls:'Gå på Väggar',
desc_walls_d:'Klättra på alla ytor.',
desc_waypts:'Punkter',
desc_waypts_d:'Spara 10 positioner. Teleport med en knapp. <kbd>Z</kbd> för att växla.',
desc_invis:'Osynlig',
desc_invis_d:'Tryck på CapsLock för att försvinna helt.',
desc_fpv:'FPV',
desc_fpv_d:'Tryck <kbd>.</kbd> för att växla till förstapersonskamera.',
desc_anti_invis:'Anti-osynlighet',
desc_anti_invis_d:'Se osynliga spelare som spöken.',
desc_xray:'Röntgensyn',
desc_xray_d:'Se spelare genom väggar i Mordmysterium. Röd = mördare, grön = civil.',
desc_nodeathh:'Odödlig',
desc_nodeath_d:'Immun mot all skada.',
desc_antikb:'Anti-knockback',
desc_antikb_d:'Kan inte knuffas.',
desc_attack:'Omedelbar attack',
desc_attack_d:'<kbd>G</kbd> teleporterar till närmaste spelare och slår.',
desc_jumpgrav:'Hopp och Gravitation',
desc_jumpgrav_d:'Justerbara multiplikatorer i Inställningar.',
desc_fov:'FOV Kontroll',
desc_fov_d:'FOV-reglage för första- och tredjeperson.',
desc_autoinvis:'Auto-Osynlig vid Flygning',
desc_autoinvis_d:'Bli osynlig automatiskt när du flyger.',
desc_sniper:'Husdjursprickskytt',
desc_sniper_d:'Automatisk stöld av filtrerade husdjur. Båda lägena.',
desc_prv:'Privat rum',
desc_prv_d:'<kbd>PgDn</kbd> skapar ett privat rum i aktuellt läge och går med automatiskt.',
desc_petbrow:'Husdjursbläddrare',
desc_petbrow_d:'<kbd>K</kbd> visar alla husdjur. Sortera, filtrera, fånga.',
desc_cuddle:'Gospanel',
desc_cuddle_d:'<kbd>J</kbd> listar spelare efter avstånd. Klicka för att följa.',
desc_return:'Auto Retur',
desc_return_d:'Teleporterar hem efter stöld.',
desc_autolock:'Auto-lås',
desc_autolock_d:'Basen alltid låst.',
desc_fountain:'Auto-fontän',
desc_fountain_d:'Permanent 1.5× vinst. Auto-förnyelse.',
desc_money:'Gratis pengar + Stjärnor + Diamanter',
desc_money_d:'Inga annonser behövs.',
desc_collect:'Auto-Insamling',
desc_collect_d:'Husdjursinkomst var 30:e sekund.',
desc_music:'Bärmusik',
desc_music_d:'Musik under stöld. 15 genrer.',
desc_chatfade:'Chattförsvinnande',
desc_chatfade_d:'Kontrollera meddelandesynlighet. 5–120s.',
desc_emotes:'Flygemotes',
desc_emotes_d:'Slumpmässiga emotes under flygning.',
desc_displays:'Skärmöverlagringar',
desc_displays_d:'Koordinator, FPS-räknare och målinfo.',
desc_config:'Inställningar',
desc_config_d:'<kbd>M</kbd> för funktioner, tangenter, hastigheter.',
desc_langs:'60 Språk',
desc_langs_d:'Fullständig UI-översättning.',
desc_tower:'Slutför torn',
desc_tower_d:'<kbd>Y</kbd> för omedelbar Obby Tower vinst.',
desc_cats:'Kattladdningsskärmar',
desc_cats_d:'Söta katter ersätter laddning.',
desc_h_install:'Installation',
desc_desktop:'Skrivbord (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Installera <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> eller <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klicka Installera ovan',
desc_inst_open:'Öppna vilket Meeland-spel som helst — det bara fungerar',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Installera <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox för Android</a> från Play Store',
desc_mob_addon:'Öppna Firefox → Meny → Tillägg → installera <strong>Tampermonkey</strong>',
desc_mob_visit:'Besök denna sida i Firefox och tryck Installera',
desc_mob_play:'Spela Meeland — pek-HUD-knapparna visas automatiskt',
desc_ios:'iOS: Apple blockerar webbläsartillägg i alla iOS-webbläsare (inklusive Firefox). Använd en skrivbords- eller Android-webbläsare.',
desc_h_privacy:'Integritet',
desc_privacy:'Enbart klientsida — ingen data lämnar din webbläsare'
});
_mk('bn','বাংলা',{
close:'✕',
refresh:'↻',
go:'যাও',
set:'সেট',
auto:'অটো',
empty:'খালি',
help_title:'সাহায্য',
players_title:'খেলোয়াড়',
players_empty:'অন্য কোনো খেলোয়াড় পাওয়া যায়নি',
settings_title:'সেটিংস',
settings_reset:'রিসেট',
tab_gameplay:'গেমপ্লে',
tab_economy:'অর্থনীতি',
tab_audio:'অডিও',
tab_advanced:'উন্নত',
tab_hud:'HUD',
tab_keys:'কী',
tab_accounts:'অ্যাকাউন্ট',
acct_current:'বর্তমান',
acct_new:'নতুন',
acct_import:'আমদানি',
acct_switch:'বদলান',
acct_reload:'পুনরায় লোড',
acct_delete:'মুছুন',
acct_cancel:'বাতিল',
acct_empty:'খালি',
acct_token_ph:'টোকেন',
acct_copy:'কপি',
acct_export:'রপ্তানি',
acct_rename:'নাম পরিবর্তন করুন',
acct_save:'সংরক্ষণ করুন',
acct_name_len:'নাম ৪-১২ অক্ষরের হতে হবে',
acct_name_fail:'নাম পরিবর্তন ব্যর্থ',
acct_invalid:'অবৈধ',
acct_ready:'অ্যাকাউন্ট প্রস্তুত। Meeland বন্ধ করুন, IP বদলান, তারপর পুনরায় লোড করুন।',
acct_ip_note:'অ্যাকাউন্ট বদলানোর সময় সর্বদা VPN ব্যবহার করুন এবং IP বদলান।',
acct_howto:'1. এই অ্যাকাউন্টের লিঙ্ক কপি করতে কপি ক্লিক করুন।\n2. অন্য ব্রাউজারে বা ডিভাইসে — বা বন্ধুর সাথে — MES খুলুন।\n3. ইমপোর্ট ক্লিক করে লিঙ্কটি পেস্ট করুন।',
sh_movement:'চলাচল',
sh_defense:'প্রতিরক্ষা',
sh_camera:'ক্যামেরা',
sh_overlays:'ওভারলে',
sh_behaviour:'আচরণ',
sh_buttons:'বোতাম',
sh_language:'ভাষা',
sh_chat:'চ্যাট',
sh_waves:'Waves',
sh_steal_a_pet:'পোষা প্রাণী চুরি করুন',
sh_tower:'Tower',
sh_misc_multi:'বিবিধ (মাল্টি-মোড)',
s_noclip:'দেয়াল ভেদ',
s_fly:'ফ্লাই',
s_fly_emotes:'উড়ন্ত ইমোট',
s_base_speed:'বেস গতি',
s_jump_mult:'জাম্প উচ্চতা',
s_grav_mult:'মহাকর্ষ',
s_walk_up_walls:'ওয়াক আপ ওয়ালস',
s_carry_normalize:'ক্যারি স্পিড + জাম্প',
s_invincibility:'অজেয়তা',
s_anti_kb:'অ্যান্টি-নকব্যাক',
s_invisible:'অদৃশ্য',
s_xray_infection:'এক্স-রে (মার্ডার মিস্ট্রি)',
s_ghost_mode:'ভূত মোড',
s_flee_intruder:'অনুপ্রবেশকারী এলে পালান',
s_first_person:'প্রথম-ব্যক্তি দৃশ্য',
s_fov_first_person:'FOV (১ম)',
s_fov_third_person:'FOV (৩য়)',
s_fov_vertical_mult:'FOV উল্লম্ব গুণক',
s_auto_lock:'অটো-লক বেস',
s_auto_fountain:'অটো-ফাউন্টেন (১.৫×)',
s_daily_coins:'দৈনিক কয়েন',
s_stars:'তারা',
s_diamonds_tower:'হীরা (টাওয়ার)',
s_tower_loop:'টাওয়ার লুপ',
s_auto_roll_x25:'অটো রোল x25 ভাগ্য',
s_auto_craft:'অটো-ক্রাফ্ট',
s_auto_vip_sword:'স্বয়ংক্রিয় VIP কেনা',
s_auto_vip_waves:'স্বয়ংক্রিয় VIP কেনা (তরঙ্গ)',
s_direct_kill:'সরাসরি কিল স্প্যাম',
s_direct_kill_rate:'কিল রেট',
s_auto_buy_upgrades:'অটো বাই আপগ্রেড',
s_boost_coins:'স্বয়ংক্রিয় আপগ্রেড: কয়েন',
s_boost_diamonds:'স্বয়ংক্রিয় আপগ্রেড: হীরা',
s_boost_luck:'অটো আপগ্রেড: ভাগ্য',
s_auto_unlock_areas:'অটো আনলক এলাকা',
s_auto_rebirth:'স্বয়ংক্রিয় পুনর্জন্ম',
s_auto_join_tp:'সর্বোচ্চ এলাকায় টেলিপোর্ট',
s_hide_kill_rewards:'কিল রিওয়ার্ড লুকান',
s_hide_roll_anim:'রোল অ্যানিমেশন লুকান',
rng_title:'পোষা প্রাণী RNG চিটস',
rng_sec_rolling:'ঘূর্ণায়মান',
rng_sec_crafting:'কারুশিল্প',
rng_sec_combat:'যুদ্ধ',
rng_sec_upgrades:'আপগ্রেড',
rng_sec_areas:'এলাকাসমূহ',
rng_actions:'কর্ম',
log_craft:'নৈপুণ্য',
log_success:'সফলতা',
log_fail:'ব্যর্থ',
log_unlocking_area:'আনলকিং এলাকা',
log_area_unlocked:'এলাকা আনলক করা হয়েছে',
log_equipped:'সজ্জিত',
log_bought_upgrade:'আপগ্রেড কিনেছেন',
log_teleported_to:'টেলিপোর্ট করা হয়েছে',
log_rebirthing:'পুনর্জন্ম',
h_rng:'আরএনজি',
h_accts:'অ্যাকাউন্ট',
s_auto_collect:'অটো-সংগ্রহ আয়',
s_collect_interval:'সংগ্রহের ব্যবধান',
s_chat_fade:'চ্যাট ফেড সময়',
s_name_colors:'ব্যবহারকারীর নামের রং',
s_chat_enhance:'চ্যাট উন্নতি',
mes_hint:'টিপ: আপনার ব্যবহারকারীর নামে "mes" যোগ করুন একটি রংধনু অ্যানিমেটেড ইফেক্টের জন্য!',
s_carry_tune:'বহন সুর (চুরি)',
s_pet_pickup_radius:'পোষা চুরির ব্যাসার্ধ',
s_carry_vol:'বহন ভলিউম',
carry_tune_default:'ডিফল্ট',
carry_tune_silent:'নীরব',
carry_tune_ambient:'অ্যাম্বিয়েন্ট',
carry_tune_blues:'ব্লুজ',
carry_tune_chiptune:'চিপটিউন',
carry_tune_classical:'ধ্রুপদী',
carry_tune_electronic:'ইলেকট্রনিক',
carry_tune_epic:'মহাকাব্যিক',
carry_tune_folk:'লোকসংগীত',
carry_tune_funk:'ফাংক',
carry_tune_jazz:'জ্যাজ',
carry_tune_lofi:'লো-ফাই',
carry_tune_metal:'মেটাল',
carry_tune_pop:'পপ',
carry_tune_punk:'পাংক',
carry_tune_reggae:'রেগে',
carry_tune_rock:'রক',
s_cont_cuddle:'অবিরাম কাডল',
s_protips:'প্রো টিপস',
s_hideprotips:'আমার প্রো টিপস লুকান',
s_show_exp_modes:'পরীক্ষামূলক মোড দেখান',
s_showcoords:'স্থানাঙ্ক দেখান',
s_showfps:'FPS দেখান',
s_showtargetinfo:'লক্ষ্য তথ্য দেখান',
s_showobj:'সত্তা / মেশ কাউন্ট দেখান',
s_copy_dbg:'ডিবাগ লগ কপি করুন',
s_copy_json:'JSON কপি করুন',
s_clear_dbg:'মুছুন',
h_fly:'উড়া',
h_speed:'গতি হ্যাক',
h_waypoints:'ওয়েপয়েন্ট',
h_autolock:'অটো-লক',
h_invisible:'অদৃশ্য',
h_cuddle:'জড়িয়ে ধরা',
h_pets:'পোষা',
h_snipe:'স্নাইপ',
h_help:'সাহায্য',
h_settings:'সেটিংস',
h_prv:'ব্যক্তিগত ঘর',
h_tc:'টাওয়ার সম্পূর্ণ',
h_tcl:'টাওয়ার লুপ',
kb_fly:'উড়া (টগল/ওপরে)',
kb_fly_down:'উড়া নিচে',
kb_set_home:'হোম সেট',
kb_home:'বাড়ি',
kb_back:'পিছে',
kb_cuddle:'কাডল প্যানেল',
kb_settings:'সেটিংস',
kb_pets:'পোষা ব্রাউজার',
kb_slots:'ওয়েপয়েন্ট স্লট',
kb_snipe:'স্নাইপার প্যানেল',
kb_snipe_toggle:'স্নাইপার চালু/বন্ধ',
kb_attack:'আক্রমণ',
kb_help:'সাহায্য / বিবরণ',
kb_tower:'টাওয়ার সম্পূর্ণ',
kb_tower_loop:'টাওয়ার লুপ',
kb_invisible:'অদৃশ্য',
kb_first_person:'প্রথম-ব্যক্তি',
kb_autolock:'অটো-লক বেস',
kb_prv:'ব্যক্তিগত ঘর',
kb_rng:'RNG',
kb_accts:'অ্যাকাউন্ট',
pets_title:'পোষা প্রাণী',
pets_search_placeholder:'যেমন বন্য কিটি, সোনালি বা হীরা, (সোনার বা পান্না) বন্য',
pets_hint:'শব্দগুলো AND দিয়ে যুক্ত। বিকল্পের জন্য OR, গ্রুপ করতে বন্ধনী। * বা % ওয়াইল্ডকার্ড। একটি শব্দ বাদ দিতে তার আগে - দিন।',
pets_empty:'এই রুমে কোনো পোষা পাওয়া যায়নি',
pt_name:'নাম',
pt_mut:'মিউটেশন',
pt_rar:'রেয়ারিটি',
pt_owner:'মালিক',
pt_worth:'মূল্য',
pt_income:'আয়/সে',
pt_dist:'দূরত্ব',
slots_title:'ওয়েপয়েন্ট স্লট',
sniper_title:'পেট স্নাইপার',
sniper_tbl_pet:'পোষা প্রাণী',
sniper_tbl_owner:'মালিক',
sniper_tbl_lock:'তালা',
sniper_placeholder:'যেমন halo, golden OR diamond, emerald dragon',
sniper_hint:'শব্দগুলো AND দিয়ে যুক্ত। বিকল্পের জন্য OR, গ্রুপ করতে বন্ধনী। * বা % ওয়াইল্ডকার্ড। একটি শব্দ বাদ দিতে তার আগে - দিন।',
sniper_room_col:'রুম',
sniper_scans_col:'স্ক্যান',
sniper_top_pet_col:'শীর্ষ পোষা প্রাণী',
sniper_top_worth_col:'শীর্ষ মূল্য',
sniper_top_owner_col:'শীর্ষ মালিক',
sniper_age_col:'বয়স',
sniper_join_btn:'যোগ দিন',
sniper_full:'পূর্ণ',
sniper_join_failed:'টার্গেট রুম পূর্ণ',
sniper_scanning_rooms:'অন্য রুম খোঁজা হচ্ছে…',
sniper_scan_off:'অটো হান্ট অফ',
sniper_scan_next:'পরবর্তী স্ক্যান ইন করুন',
sniper_scan_idle:'নিষ্ক্রিয় — স্ক্যান করার জন্য অপেক্ষা করছে',
sniper_auto_place:'বেসে স্বয়ংক্রিয় রাখুন',
sniper_place_desc:'(চুরি করা পোষা প্রাণীকে তোমার বেস স্লটে রাখে)',
sniper_auto_drop:'ওয়েভসে মেলে না এমন পোষা প্রাণী অটো-ড্রপ করুন',
sniper_drop_desc:'(ফিল্টারের সাথে মেলে না এমন বন্য পোষা ড্রপ করে স্পন পুল রিফ্রেশ করে)',
sniper_auto_hunt:'অটো শিকার',
sniper_hunt_desc:'(অন্য কক্ষ স্ক্যান করে সেরা মিলে যায়)',
sniper_auto_sell:'চুরিতে অটো-বিক্রি',
sniper_sell_desc:'(বেস ভরা হলে সবচেয়ে খারাপটা বিক্রি)',
sniper_lockdown:'লকডাউন ≤',
sniper_lockdown_hint:'≤ এই সময় বাকি বেস থেকে চুরি। ০ = শুধু আনলক।',
sniper_join_grace:'করুণা যোগদান',
sniper_start:'শুরু',
sniper_stop:'থামাও',
sniper_idle:'নিষ্ক্রিয়',
sniper_no_filter:'কোনো ফিল্টার নেই',
sniper_waiting:'গেমের জন্য অপেক্ষা...',
sniper_hold_pause:'পেট ধরা আছে — বিরতি',
sniper_stolen_pause:'আমাদের পেট আছে — বিরতি',
sniper_cooldown:'কুলডাউন',
sniper_hopping:'সার্ভার বদল হচ্ছে...',
sniper_na:'লবিতে স্নাইপার নেই — আগে গেমে যোগ দিন',
sniper_wait_lock:'লক ডেটার জন্য অপেক্ষা...',
sniper_locked:'বেস লক — স্কিপ...',
sniper_full_eggs:'বেস ভরা — শুধু ডিম, বিক্রি অসম্ভব',
sniper_stealing:'চুরি হচ্ছে',
sniper_dropped:'ড্রপ',
sniper_holding:'ধরে আছে',
sniper_place:'বেসে রাখুন!',
sniper_steal_mode:'[চুরি]',
sniper_theft_nohop:'পেট চুরি হচ্ছে',
sniper_nohop_suffix:'— হপ নেই',
sniper_sniping:'স্নাইপিং:',
sniper_options:'বিকল্প',
sniper_drop_fail_status:'ড্রপ ব্যর্থ!',
sniper_hotkey_label:'হটকী:',
sniper_panel_label:'প্যানেল:',
sniper_grab_fail:'ধরতে ব্যর্থ। আবার চেষ্টা...',
sniper_our_pet_stolen:'আমাদের পেট চুরি — ৮সে কুলডাউন',
sniper_hopping_short:'হপিং...',
sniper_base_full:'বেস পূর্ণ',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'দৌড়',
pet_teleport_title:'টেলিপোর্ট',
pet_pickup_title:'পিক আপ',
owner_yours:'তোমার',
owner_wild:'বন্য',
footer_gf:'চর্বিযুক্ত কাঁটা',
copy_ok:'কপি করা হয়েছে',
copy_failed:'অনুলিপি ব্যর্থ হয়েছে',
s_invis_on_fly:'উড়ার সময় অদৃশ্য',
snipe_walk_home:'চুরির পর বাড়ি হাঁটো',
snipe_walk_home_desc:'তোমার ঘাঁটিতে হেঁটে ফিরে যাও',
sniper_afk_sell:'AFK অমিল পোষা প্রাণী বিক্রি',
sniper_afk_sell_desc:'(যখন নিষ্ক্রিয় 5সে, ফিল্টারের সাথে মেলে না এমন পোষা প্রাণী মূল্য অনুযায়ী বিক্রি করুন — শুধু তরঙ্গ)',
hb_fly:'উড়',
hb_lck:'লক',
hb_inv:'গোপন',
hb_cud:'জড়ি',
hb_pet:'পোষা',
hb_snp:'নিশা',
hb_cfg:'সেটি',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'অ্যাক',
ban_title:'সংযোগ ব্লক করা হয়েছে',
ban_sub:'আপনার IP ঠিকানা Meeland দ্বারা সীমাবদ্ধ করা হয়েছে',
ban_body:'চিন্তা করবেন না — এটা সহজেই ঠিক করা যায়! একটি বিনামূল্যে VPN আপনাকে একটি নতুন IP দেবে যাতে আপনি আবার খেলতে পারেন।',
ban_pick:'দ্রুত সমাধান — যেকোনো একটি বেছে নিন:',
ban_warp:'বিনামূল্যে, সীমাহীন, এক-ক্লিক সেটআপ',
ban_warp_store:'App Store ও Play Store-এও "1.1.1.1" হিসেবে পাওয়া যায়',
ban_proton:'কোনো ডেটা সীমা নেই, ৫টি দেশ',
ban_steps:'ইনস্টল করুন → সংযুক্ত হন → এই পৃষ্ঠাটি রিফ্রেশ করুন। ব্যস!',
ban_ok:'বুঝেছি',
warn_title:'সর্বদা VPN ব্যবহার করুন',
warn_body:'সবসময় <b>VPN</b> চালু রেখে খেলুন।',
warn_ok:'বুঝেছি',
loading:'লোড হচ্ছে',
tcl_loading:'সম্পূর্ণ টাওয়ার লুপ চলছে। থামাতে {key} চাপুন।',
hop_search:'ম্যাচ খোঁজা হচ্ছে',
hop_match:'{name} পাওয়া গেছে — যোগদান',
hop_flee:'অনুপ্রবেশকারী থেকে পালানো',
hop_reconnect:'আবার সংযোগ হচ্ছে',
hop_reload:'আবার লোড হচ্ছে',
hop_fall:'পতন থেকে সেরে উঠছে',
hop_join:'রুমে যোগদান',
lock_off:'বন্ধ',
lock_unlocked:'আনলক',
desc_intro:'MES আপনাকে মিল্যান্ডে ওয়ালহ্যাক, অটো-ফার্মিং, বিরল পোষা প্রাণী সংগ্রহ, গতি বৃদ্ধি, ফ্লাইট, অদৃশ্যতা এবং আরও অনেক কিছু দেয়',
desc_free:'১০০% বিনামূল্যে, সবসময়। মতামত আছে? একটি ⭐ পজিটিভ রিভিউ দিন — এটাই আপডেট চালু রাখে।',
desc_h_movement:'চলাচল',
desc_h_combat:'যুদ্ধ',
desc_h_tuning:'টিউনিং',
desc_h_pets:'পেট & চুরি',
desc_h_economy:'অর্থনীতি',
desc_h_custom:'কাস্টমাইজ',
desc_h_extras:'অতিরিক্ত',
desc_fly:'উড়া',
desc_fly_d:'Space ধরুন উঠতে, F নামতে। গতি সেট করা যায়।',
desc_speed:'ব্লিংক',
desc_speed_d:'Shift চাপুন তাৎক্ষণিক টেলিপোর্টের জন্য।',
desc_noclip:'দেয়াল ভেদ',
desc_noclip_d:'দেওয়াল ভেদ করুন।',
desc_walls:'দেয়ালে হাঁটা',
desc_walls_d:'যেকোনো পৃষ্ঠে আরোহণ করুন।',
desc_waypts:'ওয়েপয়েন্ট',
desc_waypts_d:'10টি অবস্থান সংরক্ষণ। এক-কী টেলিপোর্ট। <kbd>Z</kbd> টগল।',
desc_invis:'অদৃশ্য',
desc_invis_d:'সম্পূর্ণ অদৃশ্য হতে CapsLock চাপুন।',
desc_fpv:'FPV',
desc_fpv_d:'প্রথম ব্যক্তি ক্যামেরায় স্যুইচ করতে <kbd>.</kbd> টিপুন।',
desc_anti_invis:'অ্যান্টি-অদৃশ্য',
desc_anti_invis_d:'অদৃশ্য খেলোয়াড় ভূত হিসেবে দেখুন।',
desc_xray:'এক্স-রে দৃষ্টি',
desc_xray_d:'মার্ডার মিস্ট্রিতে দেওয়াল দিয়ে খেলোয়াড়দের দেখুন। লাল = খুনি, সবুজ = বেসামরিক।',
desc_nodeathh:'অমর',
desc_nodeath_d:'সব ক্ষতিতে অভেদ্য।',
desc_antikb:'অ্যান্টি-নকব্যাক',
desc_antikb_d:'ধাক্কা দেওয়া যায় না।',
desc_attack:'তাৎক্ষণিক আক্রমণ',
desc_attack_d:'<kbd>G</kbd> নিকটতম খেলোয়াড়ে টেলিপোর্ট করে আঘাত করে।',
desc_jumpgrav:'জাম্প ও মাধ্যাকর্ষণ',
desc_jumpgrav_d:'সেটিংসে সমন্বয়যোগ্য গুণক।',
desc_fov:'FOV নিয়ন্ত্রণ',
desc_fov_d:'প্রথম-ব্যক্তি ও তৃতীয়-ব্যক্তি FOV স্লাইডার।',
desc_autoinvis:'ওড়ার সময় অটো-অদৃশ্য',
desc_autoinvis_d:'ওড়ার সময় স্বয়ংক্রিয়ভাবে অদৃশ্য হন।',
desc_sniper:'পেট স্নাইপার',
desc_sniper_d:'ফিল্টার করা পোষা প্রাণী স্বয়ংক্রিয় চুরি। উভয় মোড।',
desc_prv:'ব্যক্তিগত ঘর',
desc_prv_d:'<kbd>PgDn</kbd> বর্তমান মোডে একটি ব্যক্তিগত ঘর তৈরি করে এবং স্বয়ংক্রিয়ভাবে যোগ দেয়।',
desc_petbrow:'পেট ব্রাউজার',
desc_petbrow_d:'<kbd>K</kbd> সব পোষা দেখায়। সাজান, ফিল্টার, ধরুন।',
desc_cuddle:'কাডল প্যানেল',
desc_cuddle_d:'<kbd>J</kbd> দূরত্ব অনুসারে খেলোয়াড় দেখায়। ফলো করতে ক্লিক।',
desc_return:'অটো ফেরত',
desc_return_d:'চুরির পর বাড়ি টেলিপোর্ট।',
desc_autolock:'অটো-লক',
desc_autolock_d:'বেস সবসময় লক।',
desc_fountain:'অটো-ফাউন্টেন',
desc_fountain_d:'স্থায়ী 1.5× লাভ। অটো-নবায়ন।',
desc_money:'বিনামূল্যে টাকা + তারা + হীরা',
desc_money_d:'বিজ্ঞাপন দরকার নেই।',
desc_collect:'অটো-সংগ্রহ',
desc_collect_d:'পোষা প্রাণীর আয় প্রতি 30 সেকেন্ড।',
desc_music:'ক্যারি টিউন',
desc_music_d:'চুরির সময় সঙ্গীত। 15 ধারা।',
desc_chatfade:'চ্যাট ফেড',
desc_chatfade_d:'বার্তা দৃশ্যমানতা নিয়ন্ত্রণ। 5–120সে.',
desc_emotes:'উড়ান ইমোট',
desc_emotes_d:'উড়তে র্যান্ডম ইমোট।',
desc_displays:'প্রদর্শন ওভারলে',
desc_displays_d:'স্থানাঙ্ক, FPS কাউন্টার ও লক্ষ্য তথ্য।',
desc_config:'সেটিংস',
desc_config_d:'<kbd>M</kbd> ফিচার, কী, স্পিড টগল।',
desc_langs:'60 ভাষা',
desc_langs_d:'সম্পূর্ণ UI অনুবাদ।',
desc_tower:'টাওয়ার সম্পূর্ণ',
desc_tower_d:'<kbd>Y</kbd> Obby Tower তাৎক্ষণিক জয়।',
desc_cats:'বিড়াল লোডিং স্ক্রিন',
desc_cats_d:'সুন্দর বিড়াল লোডিং প্রতিস্থাপন করে।',
desc_h_install:'ইনস্টল',
desc_desktop:'ডেস্কটপ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> বা <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ইনস্টল করুন',
desc_inst_click:'উপরে ইনস্টল ক্লিক করুন',
desc_inst_open:'যেকোনো Meeland গেম খুলুন — এমনিতেই কাজ করে',
desc_mobile:'মোবাইল (Android)',
desc_mob_ff:'Play Store থেকে <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android-এ Firefox</a> ইনস্টল করুন',
desc_mob_addon:'Firefox → মেনু → অ্যাড-অন → <strong>Tampermonkey</strong> ইনস্টল',
desc_mob_visit:'Firefox-এ এই পেজ দেখুন ও ইনস্টল ট্যাপ করুন',
desc_mob_play:'Meeland খেলুন — টাচ HUD বোতাম স্বয়ংক্রিয় দেখাবে',
desc_ios:'iOS: Apple সব iOS ব্রাউজারে (Firefox সহ) এক্সটেনশন ব্লক করে। ডেস্কটপ বা Android ব্যবহার করুন।',
desc_h_privacy:'গোপনীয়তা',
desc_privacy:'শুধু ক্লায়েন্ট-সাইড — কোনো ডেটা ব্রাউজার ছাড়ে না'
});
_mk('fa','فارسی',{
close:'✕',
refresh:'↻',
go:'برو',
set:'تنظیم',
auto:'خودکار',
empty:'خالی',
help_title:'راهنما',
players_title:'بازیکنان',
players_empty:'بازیکن دیگری یافت نشد',
settings_title:'تنظیمات',
settings_reset:'بازنشانی',
tab_gameplay:'گیمپلی',
tab_economy:'اقتصاد',
tab_audio:'صدا',
tab_advanced:'پیشرفته',
tab_hud:'HUD',
tab_keys:'کلیدها',
tab_accounts:'حسابها',
acct_current:'فعلی',
acct_new:'جدید',
acct_import:'وارد کردن',
acct_switch:'تغییر',
acct_reload:'بارگذاری مجدد',
acct_delete:'حذف',
acct_cancel:'لغو',
acct_empty:'خالی',
acct_token_ph:'توکن',
acct_copy:'کپی',
acct_export:'خروجی',
acct_rename:'تغییر نام',
acct_save:'ذخیره',
acct_name_len:'نام باید ۴-۱۲ کاراکتر باشد',
acct_name_fail:'تغییر نام ناموفق بود',
acct_invalid:'نامعتبر',
acct_ready:'حساب آماده است. Meeland را ببندید، سپس IP را تغییر دهید، سپس بارگذاری مجدد کنید.',
acct_ip_note:'همیشه از VPN استفاده کنید و هنگام تغییر حساب، IP را تغییر دهید.',
acct_howto:'1. برای کپی کردن لینک این حساب، روی کپی کلیک کنید.\n2. در مرورگر یا دستگاه دیگر — یا با یک دوست — MES را باز کنید.\n3. روی وارد کردن کلیک کنید و لینک را جایگذاری کنید.',
sh_movement:'حرکت',
sh_defense:'دفاع',
sh_camera:'دوربین',
sh_overlays:'روکشها',
sh_behaviour:'رفتار',
sh_buttons:'دکمهها',
sh_language:'زبان',
sh_chat:'چت کنید',
sh_waves:'Waves',
sh_steal_a_pet:'دزدیدن حیوان خانگی',
sh_tower:'Tower',
sh_misc_multi:'متفرقه (چند حالته)',
s_noclip:'عبور از دیوار',
s_fly:'پرواز کن',
s_fly_emotes:'ایموت پرواز',
s_base_speed:'سرعت پایه',
s_jump_mult:'ارتفاع پرش',
s_grav_mult:'جاذبه',
s_walk_up_walls:'راه رفتن تا دیوارها',
s_carry_normalize:'سرعت حمل + پرش',
s_invincibility:'شکستناپذیری',
s_anti_kb:'ضد پسزدن',
s_invisible:'نامرئی',
s_xray_infection:'اشعه ایکس (معمای قتل)',
s_ghost_mode:'حالت شبح',
s_flee_intruder:'فرار هنگام متجاوز',
s_first_person:'نمای اول شخص',
s_fov_first_person:'FOV (اول)',
s_fov_third_person:'FOV (سوم)',
s_fov_vertical_mult:'ضرب کننده عمودی FOV',
s_auto_lock:'قفل خودکار پایگاه',
s_auto_fountain:'چشمه خودکار (۱.۵×)',
s_daily_coins:'سکههای روزانه',
s_stars:'ستارهها',
s_diamonds_tower:'الماس (برج)',
s_tower_loop:'حلقه برج',
s_auto_roll_x25:'رول خودکار x25 شانس',
s_auto_craft:'کرافت خودکار',
s_auto_vip_sword:'خرید خودکار VIP',
s_auto_vip_waves:'خرید خودکار VIP (امواج)',
s_direct_kill:'اسپم کشتن مستقیم',
s_direct_kill_rate:'نرخ کشتن',
s_auto_buy_upgrades:'خرید خودکار ارتقاء',
s_boost_coins:'ارتقاء خودکار: سکه',
s_boost_diamonds:'ارتقاء خودکار: الماس',
s_boost_luck:'ارتقاء خودکار: شانس',
s_auto_unlock_areas:'باز کردن قفل خودکار مناطق',
s_auto_rebirth:'تولد مجدد خودکار',
s_auto_join_tp:'Teleport به بالاترین منطقه',
s_hide_kill_rewards:'مخفی کردن پاداش کشتن',
s_hide_roll_anim:'پنهان کردن انیمیشن رول',
rng_title:'بازی های RNG حیوانات خانگی',
rng_sec_rolling:'نورد',
rng_sec_crafting:'کاردستی',
rng_sec_combat:'مبارزه با',
rng_sec_upgrades:'ارتقا',
rng_sec_areas:'مناطق',
rng_actions:'اقدامات',
log_craft:'کاردستی',
log_success:'موفقیت',
log_fail:'شکست',
log_unlocking_area:'منطقه باز کردن قفل',
log_area_unlocked:'قفل منطقه باز شد',
log_equipped:'مجهز شده است',
log_bought_upgrade:'خرید ارتقا',
log_teleported_to:'از راه دور به',
log_rebirthing:'تولد دوباره',
h_rng:'rng',
h_accts:'حسابها',
s_auto_collect:'جمعآوری خودکار درآمد',
s_collect_interval:'فاصله جمعآوری',
s_chat_fade:'زمان محو شدن چت',
s_name_colors:'رنگ نام کاربری',
s_chat_enhance:'بهبود چت',
mes_hint:'نکته: برای افکت رنگینکمانی متحرک، «mes» را در نام کاربری خود قرار دهید!',
s_carry_tune:'ملودی حمل (دزدی)',
s_pet_pickup_radius:'شعاع دزدیدن حیوان خانگی',
s_carry_vol:'صدای حمل',
carry_tune_default:'پیشفرض',
carry_tune_silent:'ساکت',
carry_tune_ambient:'محیطی',
carry_tune_blues:'بلوز',
carry_tune_chiptune:'چیپتیون',
carry_tune_classical:'کلاسیک',
carry_tune_electronic:'الکترونیک',
carry_tune_epic:'حماسی',
carry_tune_folk:'محلی',
carry_tune_funk:'فانک',
carry_tune_jazz:'جاز',
carry_tune_lofi:'لو-فای',
carry_tune_metal:'متال',
carry_tune_pop:'پاپ',
carry_tune_punk:'پانک',
carry_tune_reggae:'رگه',
carry_tune_rock:'راک',
s_cont_cuddle:'بغل مداوم',
s_protips:'نکات حرفهای',
s_hideprotips:'پنهان کردن نکات حرفهای من',
s_show_exp_modes:'نمایش حالتهای آزمایشی',
s_showcoords:'نمایش مختصات',
s_showfps:'نمایش FPS',
s_showtargetinfo:'نمایش اطلاعات هدف',
s_showobj:'نمایش موجودیت / تعداد مش',
s_copy_dbg:'کپی گزارشهای debug',
s_copy_json:'کپی JSON',
s_clear_dbg:'پاک کردن',
h_fly:'پرواز',
h_speed:'هک سرعت',
h_waypoints:'نقاط مسیر',
h_autolock:'قفل خودکار',
h_invisible:'نامرئی',
h_cuddle:'بغل',
h_pets:'حیوانات',
h_snipe:'تکتیر',
h_help:'راهنما',
h_settings:'تنظیمات',
h_prv:'اتاق خصوصی',
h_tc:'تکمیل برج',
h_tcl:'حلقه برج',
kb_fly:'پرواز (تغییر/بالا)',
kb_fly_down:'پرواز پایین',
kb_set_home:'تنظیم خانه',
kb_home:'خانه',
kb_back:'برگشت',
kb_cuddle:'پنل بغل',
kb_settings:'تنظیمات',
kb_pets:'مرورگر حیوانات',
kb_slots:'اسلاتهای نقطه مسیر',
kb_snipe:'پنل تکتیرانداز',
kb_snipe_toggle:'تکتیرانداز روشن/خاموش',
kb_attack:'حمله',
kb_help:'راهنما / توضیحات',
kb_tower:'تکمیل برج',
kb_tower_loop:'حلقه برج',
kb_invisible:'نامرئی',
kb_first_person:'اول شخص',
kb_autolock:'پایه قفل خودکار',
kb_prv:'اتاق خصوصی',
kb_rng:'RNG',
kb_accts:'حسابها',
pets_title:'حیوانات خانگی',
pets_search_placeholder:'به عنوان مثال جلف وحشی، طلایی یا الماس، (طلایی یا زمردی) وحشی',
pets_hint:'کلمات با AND ترکیب میشوند. از OR برای جایگزین، پرانتز برای گروهبندی استفاده کنید. * یا % وایلدکارد. برای حذف یک کلمه، قبل از آن - بگذارید.',
pets_empty:'حیوانی در این اتاق یافت نشد',
pt_name:'نام',
pt_mut:'جهش',
pt_rar:'کمیابی',
pt_owner:'مالک',
pt_worth:'ارزش',
pt_income:'درآمد/ث',
pt_dist:'فاصله',
slots_title:'اسلاتهای نقطه مسیر',
sniper_title:'تکتیرانداز حیوانات',
sniper_tbl_pet:'حیوان خانگی',
sniper_tbl_owner:'مالک',
sniper_tbl_lock:'قفل کنید',
sniper_placeholder:'مثلاً halo, golden OR diamond, emerald dragon',
sniper_hint:'کلمات AND هستند. از OR برای جایگزین، پرانتز برای گروهبندی. * یا % وایلدکارد. برای حذف یک کلمه، قبل از آن - بگذارید.',
sniper_room_col:'اتاق',
sniper_scans_col:'اسکن می کند',
sniper_top_pet_col:'حیوان خانگی برتر',
sniper_top_worth_col:'ارزش برتر',
sniper_top_owner_col:'مالک برتر',
sniper_age_col:'سن',
sniper_join_btn:'پیوستن',
sniper_full:'پر',
sniper_join_failed:'اتاق هدف پر است',
sniper_scanning_rooms:'در حال جستجوی اتاقهای دیگر…',
sniper_scan_off:'شکار خودکار',
sniper_scan_next:'اسکن بعدی در',
sniper_scan_idle:'بیکار - در انتظار اسکن',
sniper_auto_place:'قرار دادن خودکار در پایگاه',
sniper_place_desc:'(حیوان دزدیده شده را در اسلات پایگاهت میگذارد)',
sniper_auto_drop:'رها کردن خودکار حیوانات غیرمطابق در امواج',
sniper_drop_desc:'(حیوانات وحشی غیرمطابق با فیلتر را رها میکند تا استخر تولد را تازه کند)',
sniper_auto_hunt:'شکار خودکار',
sniper_hunt_desc:'(اتاقهای دیگر را اسکن کرده و به بهترین تطابق میرود)',
sniper_auto_sell:'فروش خودکار در دزدی',
sniper_sell_desc:'(فروش ضعیفترین وقتی پایگاه پر است)',
sniper_lockdown:'قفل ≤',
sniper_lockdown_hint:'دزدی از پایگاههایی با ≤ این زمان باقیمانده. ۰ = فقط باز.',
sniper_join_grace:'به فیض بپیوندید',
sniper_start:'شروع',
sniper_stop:'توقف',
sniper_idle:'بیکار',
sniper_no_filter:'فیلتری تنظیم نشده',
sniper_waiting:'انتظار بازی...',
sniper_hold_pause:'حیوان در دست — مکث',
sniper_stolen_pause:'حیوان ما را دارد — مکث',
sniper_cooldown:'زمان انتظار',
sniper_hopping:'تغییر سرور...',
sniper_na:'تکتیرانداز در لابی موجود نیست — اول وارد بازی شوید',
sniper_wait_lock:'انتظار دادههای قفل...',
sniper_locked:'پایگاه قفل — رد شدن...',
sniper_full_eggs:'پایگاه پر — فقط تخممرغ، فروش ممکن نیست',
sniper_stealing:'دزدیدن',
sniper_dropped:'رها شد',
sniper_holding:'در دست',
sniper_place:'در پایگاه بگذارید!',
sniper_steal_mode:'[دزدی]',
sniper_theft_nohop:'حیوان در حال دزدیده شدن توسط',
sniper_nohop_suffix:'— بدون جهش',
sniper_sniping:'شکار:',
sniper_options:'گزینهها',
sniper_drop_fail_status:'رها کردن ناموفق!',
sniper_hotkey_label:'کلید میانبر:',
sniper_panel_label:'پنل:',
sniper_grab_fail:'گرفتن ناموفق. تلاش مجدد...',
sniper_our_pet_stolen:'حیوان ما دزدیده شد — ۸ث انتظار',
sniper_hopping_short:'جهش...',
sniper_base_full:'پایه پر است',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'دویدن',
pet_teleport_title:'تله پورت',
pet_pickup_title:'برداشتن',
owner_yours:'مال شما',
owner_wild:'وحشی',
footer_gf:'چنگال چرب',
copy_ok:'کپی شده',
copy_failed:'کپی ناموفق بود',
s_invis_on_fly:'نامرئی هنگام پرواز',
snipe_walk_home:'بعد از دزدی پیاده به خانه برو',
snipe_walk_home_desc:'پیاده به پایگاهت برگرد',
sniper_afk_sell:'AFK فروش حیوانات غیرهمخوان',
sniper_afk_sell_desc:'(هنگام عدم فعالیت ۵ثانیه، حیوانات غیرهمخوان با فیلتر را بر اساس ارزش بفروش — فقط امواج)',
hb_fly:'پرو',
hb_lck:'قفل',
hb_inv:'مخف',
hb_cud:'بغل',
hb_pet:'حیو',
hb_snp:'تکت',
hb_cfg:'تنظ',
hb_help:'؟',
hb_rng:'RNG',
hb_accts:'حساب',
ban_title:'اتصال مسدود شد',
ban_sub:'آدرس IP شما توسط Meeland محدود شده است',
ban_body:'نگران نباشید — رفع این مشکل آسان است! یک VPN رایگان یک IP جدید به شما میدهد تا دوباره بازی کنید.',
ban_pick:'راهحل سریع — یکی را انتخاب کنید:',
ban_warp:'رایگان، نامحدود، راهاندازی با یک کلیک',
ban_warp_store:'همچنین در App Store و Play Store با نام "1.1.1.1" موجود است',
ban_proton:'بدون محدودیت داده، ۵ کشور',
ban_steps:'نصب کنید → متصل شوید → این صفحه را بارگذاری مجدد کنید. همین!',
ban_ok:'متوجه شدم',
warn_title:'همیشه از VPN استفاده کنید',
warn_body:'همیشه با <b>VPN</b> روشن بازی کنید.',
warn_ok:'متوجه شدم',
loading:'در حال بارگذاری',
tcl_loading:'حلقه کامل برج در حال اجراست. برای توقف {key} را فشار دهید.',
hop_search:'در حال یافتن بازی',
hop_match:'{name} پیدا شد — در حال پیوستن',
hop_flee:'فرار از متجاوز',
hop_reconnect:'در حال اتصال مجدد',
hop_reload:'در حال بارگذاری مجدد',
hop_fall:'در حال بهبود پس از سقوط',
hop_join:'در حال پیوستن به اتاق',
lock_off:'خاموش',
lock_unlocked:'باز',
desc_intro:'MES به شما وال هک، کشاورزی خودکار، جمع آوری حیوانات نادر، افزایش سرعت، پرواز، نامرئی و موارد دیگر را در Meeland می دهد.',
desc_free:'۱۰۰% رایگان، همیشه. بازخوردی دارید؟ یک ⭐ نظر مثبت بگذارید — این باعث ادامه بهروزرسانیها میشود.',
desc_h_movement:'حرکت',
desc_h_combat:'نبرد',
desc_h_tuning:'تنظیم',
desc_h_pets:'حیوانات & دزدی',
desc_h_economy:'اقتصاد',
desc_h_custom:'شخصیسازی',
desc_h_extras:'اضافی',
desc_fly:'پرواز',
desc_fly_d:'Space برای بالا، F برای پایین. سرعت قابل تنظیم.',
desc_speed:'بلینک',
desc_speed_d:'Shift برای انتقال آنی.',
desc_noclip:'عبور از دیوار',
desc_noclip_d:'از دیوارها عبور کنید.',
desc_walls:'راه رفتن روی دیوار',
desc_walls_d:'از هر سطحی بالا بروید.',
desc_waypts:'نقاط مسیر',
desc_waypts_d:'10 موقعیت ذخیره. تلپورت با یک کلید. <kbd>Z</kbd> جابجایی.',
desc_invis:'نامرئی',
desc_invis_d:'برای ناپدید شدن کامل CapsLock را فشار دهید.',
desc_fpv:'FPV',
desc_fpv_d:'برای تغییر به دوربین اول شخص <kbd>.</kbd> را فشار دهید.',
desc_anti_invis:'ضد نامرئی',
desc_anti_invis_d:'بازیکنان نامرئی را بهصورت روح ببینید.',
desc_xray:'دید اشعه ایکس',
desc_xray_d:'بازیکنان را از طریق دیوارها در معمای قتل ببینید. قرمز = قاتل، سبز = غیرنظامی.',
desc_nodeathh:'نامیرا',
desc_nodeath_d:'مصون در برابر همه آسیبها.',
desc_antikb:'ضد پسزدن',
desc_antikb_d:'نمیتوانی هل بدهی.',
desc_attack:'حمله فوری',
desc_attack_d:'<kbd>G</kbd> به نزدیکترین بازیکن تلپورت و ضربه.',
desc_jumpgrav:'پرش و جاذبه',
desc_jumpgrav_d:'ضرایب قابل تنظیم در تنظیمات.',
desc_fov:'کنترل FOV',
desc_fov_d:'اسلایدرهای FOV اول شخص و سوم شخص.',
desc_autoinvis:'ناپدید شدن خودکار هنگام پرواز',
desc_autoinvis_d:'هنگام پرواز خودکار نامرئی شوید.',
desc_sniper:'تکتیرانداز حیوانات',
desc_sniper_d:'دزدی خودکار حیوانات فیلتر شده. هر دو حالت.',
desc_prv:'اتاق خصوصی',
desc_prv_d:'<kbd>PgDn</kbd> یک اتاق خصوصی در حالت فعلی ایجاد میکند و بهطور خودکار میپیوندد.',
desc_petbrow:'مرورگر حیوانات',
desc_petbrow_d:'<kbd>K</kbd> همه حیوانات را نشان میدهد. مرتب، فیلتر، بگیر.',
desc_cuddle:'پنل بغل',
desc_cuddle_d:'<kbd>J</kbd> بازیکنان را بر اساس فاصله لیست میکند. برای دنبال کردن کلیک.',
desc_return:'بازگشت خودکار',
desc_return_d:'بعد از دزدی به خانه تلپورت.',
desc_autolock:'قفل خودکار',
desc_autolock_d:'پایگاه همیشه قفل.',
desc_fountain:'چشمه خودکار',
desc_fountain_d:'سود دائمی 1.5×. تمدید خودکار.',
desc_money:'پول رایگان + ستاره + الماس',
desc_money_d:'بدون نیاز به تبلیغات.',
desc_collect:'جمعآوری خودکار',
desc_collect_d:'درآمد حیوانات هر 30 ثانیه.',
desc_music:'موسیقی حمل',
desc_music_d:'موسیقی هنگام دزدی. 15 ژانر.',
desc_chatfade:'محو شدن چت',
desc_chatfade_d:'کنترل نمایش پیامها. 5–120ثانیه.',
desc_emotes:'ایموتهای پرواز',
desc_emotes_d:'ایموت تصادفی هنگام پرواز.',
desc_displays:'پوششهای نمایشی',
desc_displays_d:'مختصات، شمارنده FPS و اطلاعات هدف.',
desc_config:'تنظیمات',
desc_config_d:'<kbd>M</kbd> برای ویژگیها، کلیدها، سرعتها.',
desc_langs:'60 زبان',
desc_langs_d:'ترجمه کامل رابط.',
desc_tower:'تکمیل برج',
desc_tower_d:'<kbd>Y</kbd> برد فوری Obby Tower.',
desc_cats:'صفحات بارگذاری گربه',
desc_cats_d:'گربههای ناز جایگزین بارگذاری میشوند.',
desc_h_install:'نصب',
desc_desktop:'دسکتاپ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> یا <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> نصب کنید',
desc_inst_click:'روی نصب بالا کلیک کنید',
desc_inst_open:'هر بازی Meeland را باز کنید — خودش کار میکند',
desc_mobile:'موبایل (Android)',
desc_mob_ff:'<a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox برای Android</a> را از Play Store نصب کنید',
desc_mob_addon:'Firefox → منو → افزونهها → <strong>Tampermonkey</strong> نصب',
desc_mob_visit:'این صفحه را در Firefox باز کرده و نصب را بزنید',
desc_mob_play:'Meeland بازی کنید — دکمههای HUD لمسی خودکار نمایش داده میشوند',
desc_ios:'iOS: اپل افزونههای مرورگر را در همه مرورگرهای iOS (از جمله Firefox) مسدود میکند. از مرورگر دسکتاپ یا Android استفاده کنید.',
desc_h_privacy:'حریم خصوصی',
desc_privacy:'فقط سمت کاربر — هیچ دادهای از مرورگر شما خارج نمیشود'
});
_mk('gu','ગુજરાતી',{
close:'✕',
refresh:'↻',
go:'જાઓ',
set:'સેટ',
auto:'ઓટો',
empty:'ખાલી',
help_title:'મદદ',
players_title:'ખેલાડીઓ',
players_empty:'કોઈ અન્ય ખેલાડી મળ્યા નથી',
settings_title:'સેટિંગ્સ',
settings_reset:'રીસેટ',
tab_gameplay:'ગેમપ્લે',
tab_economy:'અર્થતંત્ર',
tab_audio:'ઑડિયો',
tab_advanced:'ઉન્નત',
tab_hud:'એચયુડી',
tab_keys:'કીઓ',
tab_accounts:'એકાઉન્ટ',
acct_current:'વર્તમાન',
acct_new:'નવું',
acct_import:'આયાત',
acct_switch:'બદલો',
acct_reload:'ફરી લોડ',
acct_delete:'કાઢી નાખો',
acct_cancel:'રદ કરો',
acct_empty:'ખાલી',
acct_token_ph:'ટોકન',
acct_copy:'કૉપી',
acct_export:'નિકાસ',
acct_rename:'નામ બદલો',
acct_save:'સાચવો',
acct_name_len:'નામ 4-12 અક્ષરોનું હોવું જોઈએ',
acct_name_fail:'નામ બદલવામાં નિષ્ફળ',
acct_invalid:'અમાન્ય',
acct_ready:'એકાઉન્ટ તૈયાર. Meeland બંધ કરો, IP બદલો, પછી ફરી લોડ કરો.',
acct_ip_note:'એકાઉન્ટ બદલતી વખતે હંમેશા VPN વાપરો અને IP બદલો.',
acct_howto:'1. આ એકાઉન્ટની લિંક કૉપી કરવા માટે કૉપી પર ક્લિક કરો.\n2. બીજા બ્રાઉઝર અથવા ડિવાઇસ પર — અથવા મિત્ર સાથે — MES ખોલો.\n3. આયાત પર ક્લિક કરો અને લિંક પેસ્ટ કરો.',
sh_movement:'ગતિવિધિ',
sh_defense:'સંરક્ષણ',
sh_camera:'કેમેરા',
sh_overlays:'ઓવરલે',
sh_behaviour:'વર્તન',
sh_buttons:'બટનો',
sh_language:'ભાષા',
sh_chat:'ચેટ',
sh_waves:'Waves',
sh_steal_a_pet:'પાળતુ પ્રાણી ચોરો',
sh_tower:'Tower',
sh_misc_multi:'વિવિધ (મલ્ટિ-મોડ)',
s_noclip:'દીવાલ ભેદ',
s_fly:'ફ્લાય',
s_fly_emotes:'ઉડ્ડયન ઈમોટ',
s_base_speed:'મૂળ ઝડપ',
s_jump_mult:'જમ્પ ઊંચાઈ',
s_grav_mult:'ગુરુત્વાકર્ષણ',
s_walk_up_walls:'વોક અપ વોલ્સ',
s_carry_normalize:'કેરી સ્પીડ + જમ્પ',
s_invincibility:'અજેયતા',
s_anti_kb:'એન્ટિ-નોકબેક',
s_invisible:'અદૃશ્ય',
s_xray_infection:'એક્સ-રે (મર્ડર મિસ્ટ્રી)',
s_ghost_mode:'ભૂત મોડ',
s_flee_intruder:'ઘુસણખોર આવે તો ભાગો',
s_first_person:'પ્રથમ-વ્યક્તિ દૃશ્ય',
s_fov_first_person:'FOV (1મો)',
s_fov_third_person:'FOV (3જો)',
s_fov_vertical_mult:'FOV વર્ટિકલ ગુણક',
s_auto_lock:'ઓટો-લોક બેસ',
s_auto_fountain:'ઓટો-ફાઉન્ટેન (૧.૫×)',
s_daily_coins:'દૈનિક સિક્કા',
s_stars:'તારા',
s_diamonds_tower:'હીરા (ટાવર)',
s_tower_loop:'ટાવર લૂપ',
s_auto_roll_x25:'ઓટો રોલ x25 નસીબ',
s_auto_craft:'ઓટો-ક્રાફ્ટ',
s_auto_vip_sword:'આપોઆપ VIP ખરીદો',
s_auto_vip_waves:'આપોઆપ VIP ખરીદો (તરંગો)',
s_direct_kill:'ડાયરેક્ટ કિલ સ્પામ',
s_direct_kill_rate:'કિલ રેટ',
s_auto_buy_upgrades:'ઓટો બાય અપગ્રેડ્સ',
s_boost_coins:'ઓટો અપગ્રેડ: સિક્કા',
s_boost_diamonds:'ઓટો અપગ્રેડ: હીરા',
s_boost_luck:'ઓટો અપગ્રેડ: નસીબ',
s_auto_unlock_areas:'ઓટો અનલોક વિસ્તારો',
s_auto_rebirth:'સ્વતઃ પુનર્જન્મ',
s_auto_join_tp:'સૌથી વધુ વિસ્તાર માટે ટેલિપોર્ટ',
s_hide_kill_rewards:'કીલ પુરસ્કારો છુપાવો',
s_hide_roll_anim:'રોલ એનિમેશન છુપાવો',
rng_title:'પાળતુ પ્રાણી RNG ચીટ્સ',
rng_sec_rolling:'રોલિંગ',
rng_sec_crafting:'હસ્તકલા',
rng_sec_combat:'લડાઇ',
rng_sec_upgrades:'અપગ્રેડ',
rng_sec_areas:'વિસ્તારો',
rng_actions:'ક્રિયાઓ',
log_craft:'હસ્તકલા',
log_success:'સફળતા',
log_fail:'નિષ્ફળ',
log_unlocking_area:'અનલોકિંગ વિસ્તાર',
log_area_unlocked:'વિસ્તાર અનલૉક',
log_equipped:'સજ્જ',
log_bought_upgrade:'અપગ્રેડ ખરીદ્યું',
log_teleported_to:'ને ટેલિપોર્ટ કરેલ',
log_rebirthing:'પુનર્જન્મ',
h_rng:'આરએનજી',
h_accts:'એકાઉન્ટ',
s_auto_collect:'ઓટો-સંગ્રહ કમાણી',
s_collect_interval:'સંગ્રહ અંતર',
s_chat_fade:'ચૅટ ફૅડ ટાઇમ',
s_name_colors:'વપરાશકર્તા નામ રંગ',
s_chat_enhance:'ચેટ સુધારણાઓ',
mes_hint:'ટિપ: તમારા વપરાશકર્તા નામમાં "mes" શામેલ કરો, મેઘધનુષ્ય એનિમેટેડ ઇફેક્ટ માટે!',
s_carry_tune:'ચોરી ધૂન',
s_pet_pickup_radius:'પ્રાણી ચોરી ત્રિજ્યા',
s_carry_vol:'કૅરી વૉલ્યૂમ',
carry_tune_default:'ડિફૉલ્ટ',
carry_tune_silent:'શાંત',
carry_tune_ambient:'એમ્બિયન્ટ',
carry_tune_blues:'બ્લૂઝ',
carry_tune_chiptune:'ચિપ્ટ્યૂન',
carry_tune_classical:'ક્લાસિકલ',
carry_tune_electronic:'ઇલેક્ટ્રૉનિક',
carry_tune_epic:'મહાકાવ્ય',
carry_tune_folk:'લોક',
carry_tune_funk:'ફંક',
carry_tune_jazz:'જૅઝ',
carry_tune_lofi:'લો-ફાઈ',
carry_tune_metal:'મેટલ',
carry_tune_pop:'પૉપ',
carry_tune_punk:'પૅંક',
carry_tune_reggae:'રેગે',
carry_tune_rock:'રૉક',
s_cont_cuddle:'સતત કડલ',
s_protips:'પ્રો ટિપ્સ',
s_hideprotips:'મારી પ્રો ટિપ્સ છુપાવો',
s_show_exp_modes:'પ્રાયોગિક મોડ બતાવો',
s_showcoords:'કોઓર્ડિનેટ્સ બતાવો',
s_showfps:'FPS બતાવો',
s_showtargetinfo:'લક્ષ્ય માહિતી બતાવો',
s_showobj:'એન્ટિટી / મેશ કાઉન્ટ બતાવો',
s_copy_dbg:'કૉપિ કરો',
s_copy_json:'JSON કૉપિ કરો',
s_clear_dbg:'સાફ કરો',
h_fly:'ઉડવું',
h_speed:'ઝડપ હેક',
h_waypoints:'વેપોઈન્ટ',
h_autolock:'ઓટો-લોક',
h_invisible:'અદૃશ્ય',
h_cuddle:'કડલ',
h_pets:'પાલતુ',
h_snipe:'સ્નાઈપ',
h_help:'મદદ',
h_settings:'સેટિંગ્સ',
h_prv:'ખાનગી રૂમ',
h_tc:'ટાવર પૂર્ણ',
h_tcl:'ટાવર લૂપ',
kb_fly:'ઉડવું (ટૉગલ/ઉપર)',
kb_fly_down:'ઉડવું નીચે',
kb_set_home:'ઘર સેટ',
kb_home:'ઘર',
kb_back:'પાછળ',
kb_cuddle:'કડલ પેનલ',
kb_settings:'સેટિંગ્સ',
kb_pets:'પાલતુ બ્રાઉઝર',
kb_slots:'વેપોઈન્ટ સ્લોટ',
kb_snipe:'સ્નાઈપર પેનલ',
kb_snipe_toggle:'સ્નાઈપર ચાલુ/બંધ',
kb_attack:'હુમલો',
kb_help:'મદદ / વર્ણન',
kb_tower:'ટાવર પૂર્ણ',
kb_tower_loop:'ટાવર લૂપ',
kb_invisible:'અદૃશ્ય',
kb_first_person:'પ્રથમ-વ્યક્તિ',
kb_autolock:'ઓટો-લોક બેઝ',
kb_prv:'ખાનગી રૂમ',
kb_rng:'RNG',
kb_accts:'એકાઉન્ટ',
pets_title:'પાલતુ પ્રાણીઓ',
pets_search_placeholder:'દા.ત. જંગલી કિટ્ટી, સોનેરી અથવા હીરા, (સોનેરી અથવા નીલમણિ) જંગલી',
pets_hint:'શબ્દો AND સાથે જોડાય છે. વિકલ્પ માટે OR, ગ્રુપ માટે કૌંસ. * અથવા % વાઇલ્ડકાર્ડ. કોઈ શબ્દને બાકાત કરવા તેની આગળ - મૂકો.',
pets_empty:'આ રૂમમાં કોઈ પાલતુ મળ્યા નથી',
pt_name:'નામ',
pt_mut:'મ્યુટેશન',
pt_rar:'દુર્લભતા',
pt_owner:'માલિક',
pt_worth:'કિંમત',
pt_income:'આવક/સે',
pt_dist:'અંતર',
slots_title:'વેપોઈન્ટ સ્લોટ',
sniper_title:'પેટ સ્નાઈપર',
sniper_tbl_pet:'પેટ',
sniper_tbl_owner:'માલિક',
sniper_tbl_lock:'તાળું',
sniper_placeholder:'દા.ત. halo, golden OR diamond, emerald dragon',
sniper_hint:'શબ્દો AND છે. વિકલ્પ માટે OR, ગ્રુપ માટે કૌંસ. * અથવા % વાઇલ્ડકાર્ડ. કોઈ શબ્દને બાકાત કરવા તેની આગળ - મૂકો.',
sniper_room_col:'રૂમ',
sniper_scans_col:'સ્કેન',
sniper_top_pet_col:'ટોચના પેટ',
sniper_top_worth_col:'ટોપ વર્થ',
sniper_top_owner_col:'ટોચના માલિક',
sniper_age_col:'ઉંમર',
sniper_join_btn:'જોડાઓ',
sniper_full:'ભરેલું',
sniper_join_failed:'લક્ષ્ય ખંડ ભરેલો',
sniper_scanning_rooms:'અન્ય રૂમ શોધી રહ્યા છીએ…',
sniper_scan_off:'ઓટો શિકાર બંધ',
sniper_scan_next:'આગળ સ્કેન કરો',
sniper_scan_idle:'નિષ્ક્રિય — સ્કેન કરવા માટે રાહ જોઈ રહ્યું છે',
sniper_auto_place:'બેઝ પર ઓટો-મૂકો',
sniper_place_desc:'(ચોરી કરેલ પ્રાણીને તમારા બેઝ સ્લૉટ પર મૂકે)',
sniper_auto_drop:'વેવ્ઝમાં મેળ ખાતા ન હોય તેવા પાલતુ ઓટો-ડ્રોપ કરો',
sniper_drop_desc:'(ફિલ્ટર સાથે મેળ ન ખાતા જંગલી પાલતુ ડ્રોપ કરીને સ્પૉન પૂલ તાજું કરે છે)',
sniper_auto_hunt:'ઓટો શિકાર',
sniper_hunt_desc:'(અન્ય રૂમ સ્કેન કરી શ્રેષ્ઠ મેચ પર જાઓ)',
sniper_auto_sell:'ચોરીમાં ઓટો-વેચાણ',
sniper_sell_desc:'(બેસ ભરેલું હોય ત્યારે સૌથી ખરાબ વેચો)',
sniper_lockdown:'લોકડાઉન ≤',
sniper_lockdown_hint:'≤ આ સમય બાકી હોય એવા બેસમાંથી ચોરી. ૦ = ફક્ત અનલોક.',
sniper_join_grace:'કૃપામાં જોડાઓ',
sniper_start:'શરૂ',
sniper_stop:'બંધ',
sniper_idle:'નિષ્ક્રિય',
sniper_no_filter:'કોઈ ફિલ્ટર નથી',
sniper_waiting:'ગેમની રાહ...',
sniper_hold_pause:'પાલતુ પકડેલું — વિરામ',
sniper_stolen_pause:'અમારું પાલતુ છે — વિરામ',
sniper_cooldown:'કૂલડાઉન',
sniper_hopping:'સર્વર બદલાઈ રહ્યું...',
sniper_na:'લોબીમાં સ્નાઈપર ઉપલબ્ધ નથી — પહેલા ગેમમાં જોડાઓ',
sniper_wait_lock:'લોક ડેટાની રાહ...',
sniper_locked:'બેસ લોક — છોડી રહ્યા...',
sniper_full_eggs:'બેસ ભરેલું — ફક્ત ઈંડા, વેચી શકાતું નથી',
sniper_stealing:'ચોરી',
sniper_dropped:'ડ્રોપ',
sniper_holding:'પકડેલું',
sniper_place:'બેસ પર મૂકો!',
sniper_steal_mode:'[ચોરી]',
sniper_theft_nohop:'પાલતુ ચોરાઈ રહ્યું',
sniper_nohop_suffix:'— હોપ નહીં',
sniper_sniping:'સ્નાઈપિંગ:',
sniper_options:'વિકલ્પો',
sniper_drop_fail_status:'ડ્રોપ નિષ્ફળ!',
sniper_hotkey_label:'હોટકી:',
sniper_panel_label:'પેનલ:',
sniper_grab_fail:'પકડવામાં નિષ્ફળ. ફરી પ્રયાસ...',
sniper_our_pet_stolen:'અમારું પાલતુ ચોરાયું — ૮સે કૂલડાઉન',
sniper_hopping_short:'હોપિંગ...',
sniper_base_full:'આધાર સંપૂર્ણ',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'દોડો',
pet_teleport_title:'ટેલિપોર્ટ',
pet_pickup_title:'ઉપાડો',
owner_yours:'તમારું',
owner_wild:'જંગલી',
footer_gf:'ચીકણું ફોર્ક',
copy_ok:'નકલ કરી',
copy_failed:'નકલ નિષ્ફળ',
s_invis_on_fly:'ઉડતી વખતે અદૃશ્ય',
snipe_walk_home:'ચોરી પછી ઘરે ચાલો',
snipe_walk_home_desc:'તમારા બેઝ પર પાછા ચાલો',
sniper_afk_sell:'AFK મેળ ન ખાતા પ્રાણીઓ વેચો',
sniper_afk_sell_desc:'(જ્યારે નિષ્ક્રિય 5સે, ફિલ્ટર સાથે મેળ ન ખાતા પ્રાણીઓ મૂલ્ય પ્રમાણે વેચો — માત્ર તરંગો)',
hb_fly:'ઉડ',
hb_lck:'લોક',
hb_inv:'ગાયબ',
hb_cud:'ભેટ',
hb_pet:'પાલ',
hb_snp:'નિશા',
hb_cfg:'સેટિ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'એકાઉ',
ban_title:'કનેક્શન બ્લૉક થયું',
ban_sub:'તમારું IP સરનામું Meeland દ્વારા પ્રતિબંધિત કરવામાં આવ્યું છે',
ban_body:'ચિંતા ન કરો — આ સરળતાથી ઠીક થઈ જશે! મફત VPN તમને નવું IP આપશે જેથી તમે ફરી રમી શકો.',
ban_pick:'ઝડપી ઉકેલ — કોઈ એક પસંદ કરો:',
ban_warp:'મફત, અમર્યાદિત, એક-ક્લિક સેટઅપ',
ban_warp_store:'App Store અને Play Store પર પણ "1.1.1.1" તરીકે ઉપલબ્ધ',
ban_proton:'કોઈ ડેટા મર્યાદા નથી, 5 દેશો',
ban_steps:'ઇન્સ્ટોલ કરો → કનેક્ટ કરો → આ પેજ રિફ્રેશ કરો. બસ એટલું જ!',
ban_ok:'સમજાયું',
warn_title:'હંમેશા VPN વાપરો',
warn_body:'હંમેશા <b>VPN</b> ચાલુ રાખીને રમો.',
warn_ok:'સમજાયું',
loading:'લોડ થઈ રહ્યું છે',
tcl_loading:'સંપૂર્ણ ટાવર લૂપ ચાલી રહ્યું છે. રોકવા {key} દબાવો.',
hop_search:'મેચ શોધી રહ્યું છે',
hop_match:'{name} મળ્યું — જોડાઈ રહ્યું છે',
hop_flee:'ઘુસણખોરથી ભાગી રહ્યું છે',
hop_reconnect:'ફરી કનેક્ટ થઈ રહ્યું છે',
hop_reload:'ફરી લોડ થઈ રહ્યું છે',
hop_fall:'પતનમાંથી સુધારી રહ્યું છે',
hop_join:'રૂમમાં જોડાઈ રહ્યું છે',
lock_off:'બંધ',
lock_unlocked:'અનલૉક',
desc_intro:'MES તમને મીલેન્ડમાં વોલહેક, ઓટો-ફાર્મિંગ, દુર્લભ પાલતુ સંગ્રહ, સ્પીડ બૂસ્ટ, ફ્લાઇટ, અદૃશ્યતા અને વધુ આપે છે',
desc_free:'૧૦૦% મફત, હંમેશા. પ્રતિક્રિયા છે? ⭐ સકારાત્મક રિવ્યુ આપો — એ જ અપડેટ ચાલુ રાખે છે.',
desc_h_movement:'ગતિ',
desc_h_combat:'યુદ્ધ',
desc_h_tuning:'ટ્યુનિંગ',
desc_h_pets:'પાલતુ & ચોરી',
desc_h_economy:'અર્થવ્યવસ્થા',
desc_h_custom:'કસ્ટમાઇઝ',
desc_h_extras:'વધારાના',
desc_fly:'ઉડવું',
desc_fly_d:'Space ઉપર, F નીચે. ઝડપ સેટ થઈ શકે.',
desc_speed:'બ્લિંક',
desc_speed_d:'Shift ટેલિપોર્ટ માટે.',
desc_noclip:'દીવાલ ભેદ',
desc_noclip_d:'દીવાલોમાંથી પસાર થાઓ.',
desc_walls:'દિવાલો પર ચાલો',
desc_walls_d:'કોઈપણ સપાટી પર ચઢો.',
desc_waypts:'વેપોઈન્ટ',
desc_waypts_d:'10 સ્થાન સેવ કરો. એક-કી ટેલિપોર્ટ. <kbd>Z</kbd> ટૉગલ.',
desc_invis:'અદૃશ્ય',
desc_invis_d:'સંપૂર્ણ અદૃશ્ય થવા CapsLock દબાવો.',
desc_fpv:'FPV',
desc_fpv_d:'પ્રથમ વ્યક્તિ કેમેરા પર સ્વિચ કરવા <kbd>.</kbd> દબાવો.',
desc_anti_invis:'એન્ટિ-અદૃશ્ય',
desc_anti_invis_d:'અદૃશ્ય ખેલાડીઓ ભૂત તરીકે દેખાય.',
desc_xray:'એક્સ-રે વિઝન',
desc_xray_d:'મર્ડર મિસ્ટ્રીમાં દીવાલો દ્વારા ખેલાડીઓને જુઓ. લાલ = ખૂની, લીલો = નાગરિક.',
desc_nodeathh:'અમર',
desc_nodeath_d:'બધા નુકસાનથી પ્રતિરક્ષિત.',
desc_antikb:'એન્ટી-નોકબેક',
desc_antikb_d:'ધક્કો ન મારી શકાય.',
desc_attack:'તાત્કાલિક હુમલો',
desc_attack_d:'<kbd>G</kbd> નજીકના ખેલાડી પાસે ટેલિપોર્ટ કરી માર.',
desc_jumpgrav:'કૂદકો અને ગુરુત્વાકર્ષણ',
desc_jumpgrav_d:'સેટિંગ્સમાં સમાયોજ્ય ગુણક.',
desc_fov:'FOV નિયંત્રણ',
desc_fov_d:'પ્રથમ-વ્યક્તિ અને તૃતીય-વ્યક્તિ FOV સ્લાઇડર્સ.',
desc_autoinvis:'ઉડ્ડયનમાં ઓટો-અદૃશ્ય',
desc_autoinvis_d:'ઉડતી વખતે આપોઆપ અદૃશ્ય થાઓ.',
desc_sniper:'પેટ સ્નાઈપર',
desc_sniper_d:'ફિલ્ટર પાલતુ ઓટો-ચોરી. બંને મોડ.',
desc_prv:'ખાનગી રૂમ',
desc_prv_d:'<kbd>PgDn</kbd> વર્તમાન મોડમાં ખાનગી રૂમ બનાવે છે અને આપોઆપ જોડાય છે.',
desc_petbrow:'પાલતુ બ્રાઉઝર',
desc_petbrow_d:'<kbd>K</kbd> બધા પાલતુ બતાવે. ગોઠવો, ફિલ્ટર, પકડો.',
desc_cuddle:'કડલ પેનલ',
desc_cuddle_d:'<kbd>J</kbd> અંતર પ્રમાણે ખેલાડી દેખાડે. ફોલો કરવા ક્લિક.',
desc_return:'ઓટો રિટર્ન',
desc_return_d:'ચોરી પછી ઘરે ટેલિપોર્ટ.',
desc_autolock:'ઓટો-લોક',
desc_autolock_d:'બેઝ હંમેશા લૉક.',
desc_fountain:'ઓટો-ફાઉન્ટેન',
desc_fountain_d:'કાયમી 1.5× નફો. ઓટો-નવીકરણ.',
desc_money:'મફત પૈસા + તારા + હીરા',
desc_money_d:'જાહેરાતની જરૂર નથી.',
desc_collect:'ઓટો-સંગ્રહ',
desc_collect_d:'પાલતુ આવક દર 30 સેકન્ડે.',
desc_music:'કેરી ટ્યૂન',
desc_music_d:'ચોરી વખતે સંગીત. 15 શૈલી.',
desc_chatfade:'ચેટ ફેડ',
desc_chatfade_d:'સંદેશ દૃશ્યતા નિયંત્રિત કરો. 5–120સે.',
desc_emotes:'ઉડાન ઇમોટ્સ',
desc_emotes_d:'ઉડતા સમયે રેન્ડમ ઇમોટ્સ.',
desc_displays:'પ્રદર્શન ઓવરલે',
desc_displays_d:'કોઓર્ડિનેટ્સ, FPS કાઉન્ટર અને લક્ષ્ય માહિતી.',
desc_config:'સેટિંગ્સ',
desc_config_d:'<kbd>M</kbd> ફીચર, કી, સ્પીડ ટૉગલ.',
desc_langs:'60 ભાષા',
desc_langs_d:'સંપૂર્ણ UI અનુવાદ.',
desc_tower:'ટાવર પૂર્ણ',
desc_tower_d:'<kbd>Y</kbd> Obby Tower તાત્કાલિક જીત.',
desc_cats:'બિલાડી લોડિંગ સ્ક્રીન',
desc_cats_d:'ક્યૂટ બિલાડીઓ લોડિંગ બદલે છે.',
desc_h_install:'ઈન્સ્ટોલ',
desc_desktop:'ડેસ્કટોપ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> અથવા <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ઈન્સ્ટોલ કરો',
desc_inst_click:'ઉપર ઈન્સ્ટોલ ક્લિક કરો',
desc_inst_open:'કોઈપણ Meeland ગેમ ખોલો — આપમેળે કામ કરે',
desc_mobile:'મોબાઈલ (Android)',
desc_mob_ff:'Play Store માંથી <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ઈન્સ્ટોલ કરો',
desc_mob_addon:'Firefox → મેનુ → એડ-ઓન → <strong>Tampermonkey</strong> ઈન્સ્ટોલ',
desc_mob_visit:'Firefox માં આ પેજ ખોલો અને ઈન્સ્ટોલ ટેપ કરો',
desc_mob_play:'Meeland રમો — ટચ HUD બટન આપમેળે દેખાશે',
desc_ios:'iOS: Apple બધા iOS બ્રાઉઝર્સ (Firefox સહિત) માં એક્સ્ટેન્શન બ્લોક કરે. ડેસ્કટોપ અથવા Android વાપરો.',
desc_h_privacy:'ગોપનીયતા',
desc_privacy:'ફક્ત ક્લાયન્ટ-સાઈડ — કોઈ ડેટા બ્રાઉઝર છોડતો નથી'
});
_mk('kn','ಕನ್ನಡ',{
close:'✕',
refresh:'↻',
go:'ಹೋಗು',
set:'ಹೊಂದಿಸಿ',
auto:'ಆಟೊ',
empty:'ಖಾಲಿ',
help_title:'ಸಹಾಯ',
players_title:'ಆಟಗಾರರು',
players_empty:'ಬೇರೆ ಆಟಗಾರರು ಕಂಡಿಲ್ಲ',
settings_title:'ಸೆಟ್ಟಿಂಗ್ಸ್',
settings_reset:'ರೀಸೆಟ್',
tab_gameplay:'ಗೇಮ್ಪ್ಲೇ',
tab_economy:'ಆರ್ಥಿಕ',
tab_audio:'ಆಡಿಯೋ',
tab_advanced:'ಸುಧಾರಿತ',
tab_hud:'HUD',
tab_keys:'ಕೀಗಳು',
tab_accounts:'ಖಾತೆಗಳು',
acct_current:'ಪ್ರಸ್ತುತ',
acct_new:'ಹೊಸ',
acct_import:'ಆಮದು',
acct_switch:'ಬದಲಿಸಿ',
acct_reload:'ಮರುಲೋಡ್',
acct_delete:'ಅಳಿಸಿ',
acct_cancel:'ರದ್ದುಮಾಡಿ',
acct_empty:'ಖಾಲಿ',
acct_token_ph:'ಟೋಕನ್',
acct_copy:'ನಕಲಿಸಿ',
acct_export:'ರಫ್ತು',
acct_rename:'ಮರುನಾಮಕರಣ',
acct_save:'ಉಳಿಸಿ',
acct_name_len:'ಹೆಸರು 4-12 ಅಕ್ಷರಗಳಾಗಿರಬೇಕು',
acct_name_fail:'ಮರುನಾಮಕರಣ ವಿಫಲವಾಗಿದೆ',
acct_invalid:'ಅಮಾನ್ಯ',
acct_ready:'ಖಾತೆ ಸಿದ್ಧ. Meeland ಮುಚ್ಚಿ, IP ಬದಲಿಸಿ, ನಂತರ ಮರುಲೋಡ್ ಮಾಡಿ.',
acct_ip_note:'ಖಾತೆ ಬದಲಿಸುವಾಗ ಯಾವಾಗಲೂ VPN ಬಳಸಿ ಮತ್ತು IP ಬದಲಿಸಿ.',
acct_howto:'1. ಈ ಖಾತೆಯ ಲಿಂಕ್ ಅನ್ನು ನಕಲಿಸಲು ನಕಲು ಕ್ಲಿಕ್ ಮಾಡಿ.\n2. ಇನ್ನೊಂದು ಬ್ರೌಸರ್ ಅಥವಾ ಡಿವೈಸ್ನಲ್ಲಿ — ಅಥವಾ ಸ್ನೇಹಿತರೊಂದಿಗೆ — MES ತೆರೆಯಿರಿ.\n3. ಆಮದು ಕ್ಲಿಕ್ ಮಾಡಿ ಲಿಂಕ್ ಅನ್ನು ಅಂಟಿಸಿ.',
sh_movement:'ಚಲನೆ',
sh_defense:'ರಕ್ಷಣೆ',
sh_camera:'ಕ್ಯಾಮೆರಾ',
sh_overlays:'ಓವರ್ಲೇ',
sh_behaviour:'ವರ್ತನೆ',
sh_buttons:'ಬಟನ್',
sh_language:'ಭಾಷೆ',
sh_chat:'ಚಾಟ್ ಮಾಡಿ',
sh_waves:'Waves',
sh_steal_a_pet:'ಸಾಕುಪ್ರಾಣಿ ಕದಿಯಿರಿ',
sh_tower:'Tower',
sh_misc_multi:'ಇತರೆ (ಮಲ್ಟಿ-ಮೋಡ್)',
s_noclip:'ಗೋಡೆ ಭೇದ',
s_fly:'ಫ್ಲೈ',
s_fly_emotes:'ಹಾರಾಟ ಇಮೋಟ್',
s_base_speed:'ಮೂಲ ವೇಗ',
s_jump_mult:'ಜಂಪ್ ಎತ್ತರ',
s_grav_mult:'ಗುರುತ್ವಾಕರ್ಷಣೆ',
s_walk_up_walls:'ವಾಕ್ ಅಪ್ ಗೋಡೆಗಳು',
s_carry_normalize:'ಕ್ಯಾರಿ ಸ್ಪೀಡ್ + ಜಂಪ್',
s_invincibility:'ಅಜೇಯತೆ',
s_anti_kb:'ಆಂಟಿ-ನಾಕ್ಬ್ಯಾಕ್',
s_invisible:'ಅದೃಶ್ಯ',
s_xray_infection:'ಎಕ್ಸ್-ರೇ (ಮರ್ಡರ್ ಮಿಸ್ಟರಿ)',
s_ghost_mode:'ಗೋಸ್ಟ್ ಮೋಡ್',
s_flee_intruder:'ನುಗ್ಗುವವರಿದ್ದರೆ ಓಡಿ',
s_first_person:'ಮೊದಲ-ವ್ಯಕ್ತಿ ನೋಟ',
s_fov_first_person:'FOV (1ನೇ)',
s_fov_third_person:'FOV (3ನೇ)',
s_fov_vertical_mult:'FOV ಲಂಬ ಗುಣಕ',
s_auto_lock:'ಆಟೊ-ಲಾಕ್ ಬೇಸ್',
s_auto_fountain:'ಆಟೊ-ಫೌಂಟೇನ್ (೧.೫×)',
s_daily_coins:'ದೈನಿಕ ನಾಣ್ಯ',
s_stars:'ನಕ್ಷತ್ರ',
s_diamonds_tower:'ವಜ್ರ (ಟವರ್)',
s_tower_loop:'ಟವರ್ ಲೂಪ್',
s_auto_roll_x25:'ಆಟೋ ರೋಲ್ x25 ಅದೃಷ್ಟ',
s_auto_craft:'ಆಟೋ-ಕ್ರಾಫ್ಟ್',
s_auto_vip_sword:'ಸ್ವಯಂ VIP ಖರೀದಿ',
s_auto_vip_waves:'ಸ್ವಯಂ VIP ಖರೀದಿ (ಅಲೆಗಳು)',
s_direct_kill:'ನೇರ ಕಿಲ್ ಸ್ಪ್ಯಾಮ್',
s_direct_kill_rate:'ಕಿಲ್ ದರ',
s_auto_buy_upgrades:'ಸ್ವಯಂ ಖರೀದಿ ನವೀಕರಣಗಳು',
s_boost_coins:'ಸ್ವಯಂ ಅಪ್ಗ್ರೇಡ್: ನಾಣ್ಯಗಳು',
s_boost_diamonds:'ಸ್ವಯಂ ಅಪ್ಗ್ರೇಡ್: ಡೈಮಂಡ್ಸ್',
s_boost_luck:'ಸ್ವಯಂ ನವೀಕರಣ: ಅದೃಷ್ಟ',
s_auto_unlock_areas:'ಸ್ವಯಂ ಅನ್ಲಾಕ್ ಪ್ರದೇಶಗಳು',
s_auto_rebirth:'ಸ್ವಯಂ ಪುನರ್ಜನ್ಮ',
s_auto_join_tp:'ಅತಿ ಎತ್ತರದ ಪ್ರದೇಶಕ್ಕೆ ಟೆಲಿಪೋರ್ಟ್',
s_hide_kill_rewards:'ಕಿಲ್ ಬಹುಮಾನಗಳನ್ನು ಮರೆಮಾಡಿ',
s_hide_roll_anim:'ರೋಲ್ ಅನಿಮೇಷನ್ ಮರೆಮಾಡಿ',
rng_title:'ಸಾಕುಪ್ರಾಣಿಗಳು RNG ಚೀಟ್ಸ್',
rng_sec_rolling:'ರೋಲಿಂಗ್',
rng_sec_crafting:'ಕ್ರಾಫ್ಟಿಂಗ್',
rng_sec_combat:'ಯುದ್ಧ',
rng_sec_upgrades:'ನವೀಕರಣಗಳು',
rng_sec_areas:'ಪ್ರದೇಶಗಳು',
rng_actions:'ಕ್ರಿಯೆಗಳು',
log_craft:'ಕ್ರಾಫ್ಟ್',
log_success:'ಯಶಸ್ಸು',
log_fail:'ವಿಫಲವಾಗಿದೆ',
log_unlocking_area:'ಅನ್ಲಾಕಿಂಗ್ ಪ್ರದೇಶ',
log_area_unlocked:'ಪ್ರದೇಶವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲಾಗಿದೆ',
log_equipped:'ಸಜ್ಜುಗೊಂಡಿದೆ',
log_bought_upgrade:'ನವೀಕರಣವನ್ನು ಖರೀದಿಸಲಾಗಿದೆ',
log_teleported_to:'ಗೆ ಟೆಲಿಪೋರ್ಟ್ ಮಾಡಲಾಗಿದೆ',
log_rebirthing:'ಪುನರ್ಜನ್ಮ',
h_rng:'Rng',
h_accts:'ಖಾತೆಗಳು',
s_auto_collect:'ಆಟೊ-ಸಂಗ್ರಹ ಗಳಿಕೆ',
s_collect_interval:'ಸಂಗ್ರಹ ಅಂತರ',
s_chat_fade:'ಚಾಟ್ ಫೇಡ್ ಸಮಯ',
s_name_colors:'ಬಳಕೆದಾರರ ಹೆಸರು ಬಣ್ಣಗಳು',
s_chat_enhance:'ಚಾಟ್ ಸುಧಾರಣೆಗಳು',
mes_hint:'ಸಲಹೆ: ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರಿನಲ್ಲಿ "mes" ಸೇರಿಸಿ, ಮಳೆಬಿಲ್ಲು ಅನಿಮೇಟೆಡ್ ಪರಿಣಾಮಕ್ಕಾಗಿ!',
s_carry_tune:'ಕ್ಯಾರಿ ಟ್ಯೂನ್ (ಕದಿಯಿರಿ)',
s_pet_pickup_radius:'ಪ್ರಾಣಿ ಕದಿಯುವ ತ್ರಿಜ್ಯ',
s_carry_vol:'ಕ್ಯಾರಿ ವಾಲ್ಯೂಮ್',
carry_tune_default:'ಡಿಫಾಲ್ಟ್',
carry_tune_silent:'ಮೌನ',
carry_tune_ambient:'ಆಂಬಿಯೆಂಟ್',
carry_tune_blues:'ಬ್ಲೂಸ್',
carry_tune_chiptune:'ಚಿಪ್ಟ್ಯೂನ್',
carry_tune_classical:'ಶಾಸ್ತ್ರೀಯ',
carry_tune_electronic:'ಎಲೆಕ್ಟ್ರಾನಿಕ್',
carry_tune_epic:'ಮಹಾಕಾವ್ಯ',
carry_tune_folk:'ಜಾನಪದ',
carry_tune_funk:'ಫಂಕ್',
carry_tune_jazz:'ಜಾಝ್',
carry_tune_lofi:'ಲೋ-ಫೈ',
carry_tune_metal:'ಮೆಟಲ್',
carry_tune_pop:'ಪಾಪ್',
carry_tune_punk:'ಪಂಕ್',
carry_tune_reggae:'ರೆಗ್ಗೆ',
carry_tune_rock:'ರಾಕ್',
s_cont_cuddle:'ನಿರಂತರ ಕಡಲ್',
s_protips:'ಪ್ರೊ ಸಲಹೆಗಳು',
s_hideprotips:'ನನ್ನ ಪ್ರೊ ಸಲಹೆಗಳನ್ನು ಮರೆಮಾಡಿ',
s_show_exp_modes:'ಪ್ರಾಯೋಗಿಕ ವಿಧಾನಗಳನ್ನು ತೋರಿಸಿ',
s_showcoords:'ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ತೋರಿಸಿ',
s_showfps:'FPS ತೋರಿಸಿ',
s_showtargetinfo:'ಗುರಿ ಮಾಹಿತಿ ತೋರಿಸು',
s_showobj:'ಘಟಕ / ಮೆಶ್ ಎಣಿಕೆ ತೋರಿಸಿ',
s_copy_dbg:'ನಕಲಿಸಿ',
s_copy_json:'JSON ನಕಲಿಸಿ',
s_clear_dbg:'ಅಳಿಸಿ',
h_fly:'ಹಾರು',
h_speed:'ವೇಗ ಹ್ಯಾಕ್',
h_waypoints:'ವೇಪಾಯಿಂಟ್',
h_autolock:'ಆಟೊ-ಲಾಕ್',
h_invisible:'ಅದೃಶ್ಯ',
h_cuddle:'ಕಡಲ್',
h_pets:'ಪೆಟ್',
h_snipe:'ಸ್ನೈಪ್',
h_help:'ಸಹಾಯ',
h_settings:'ಸೆಟ್ಟಿಂಗ್ಸ್',
h_prv:'ಖಾಸಗಿ ಕೊಠಡಿ',
h_tc:'ಟವರ್ ಪೂರ್ಣ',
h_tcl:'ಟವರ್ ಲೂಪ್',
kb_fly:'ಹಾರು (ಟಾಗಲ್/ಮೇಲೆ)',
kb_fly_down:'ಹಾರು ಕೆಳಗೆ',
kb_set_home:'ಮನೆ ಸೆಟ್',
kb_home:'ಮನೆ',
kb_back:'ಹಿಂದೆ',
kb_cuddle:'ಕಡಲ್ ಪ್ಯಾನಲ್',
kb_settings:'ಸೆಟ್ಟಿಂಗ್ಸ್',
kb_pets:'ಪೆಟ್ ಬ್ರೌಸರ್',
kb_slots:'ವೇಪಾಯಿಂಟ್ ಸ್ಲಾಟ್',
kb_snipe:'ಸ್ನೈಪರ್ ಪ್ಯಾನಲ್',
kb_snipe_toggle:'ಸ್ನೈಪರ್ ಆನ್/ಆಫ್',
kb_attack:'ದಾಳಿ',
kb_help:'ಸಹಾಯ / ವಿವರಣೆ',
kb_tower:'ಟವರ್ ಪೂರ್ಣ',
kb_tower_loop:'ಟವರ್ ಲೂಪ್',
kb_invisible:'ಅದೃಶ್ಯ',
kb_first_person:'ಮೊದಲ-ವ್ಯಕ್ತಿ',
kb_autolock:'ಸ್ವಯಂ ಲಾಕ್ ಬೇಸ್',
kb_prv:'ಖಾಸಗಿ ಕೊಠಡಿ',
kb_rng:'RNG',
kb_accts:'ಖಾತೆಗಳು',
pets_title:'ಪೆಟ್ಗಳು',
pets_search_placeholder:'ಉದಾ. ಕಾಡು ಕಿಟ್ಟಿ, ಗೋಲ್ಡನ್ ಅಥವಾ ಡೈಮಂಡ್, (ಚಿನ್ನದ ಅಥವಾ ಪಚ್ಚೆ) ಕಾಡು',
pets_hint:'ಪದಗಳು AND ಆಗಿ ಸೇರುತ್ತವೆ. ಪರ್ಯಾಯಕ್ಕೆ OR, ಗುಂಪಿಗೆ ಬ್ರಾಕೆಟ್. * ಅಥವಾ % ವೈಲ್ಡ್ಕಾರ್ಡ್. ಪದವನ್ನು ಹೊರಗಿಡಲು ಅದರ ಮುಂದೆ - ಹಾಕಿ.',
pets_empty:'ಈ ಕೋಣೆಯಲ್ಲಿ ಪೆಟ್ ಕಂಡಿಲ್ಲ',
pt_name:'ಹೆಸರು',
pt_mut:'ಮ್ಯುಟೇಶನ್',
pt_rar:'ಅಪರೂಪ',
pt_owner:'ಮಾಲೀಕ',
pt_worth:'ಮೌಲ್ಯ',
pt_income:'ಆದಾಯ/ಸೆ',
pt_dist:'ದೂರ',
slots_title:'ವೇಪಾಯಿಂಟ್ ಸ್ಲಾಟ್',
sniper_title:'ಪೆಟ್ ಸ್ನೈಪರ್',
sniper_tbl_pet:'ಸಾಕುಪ್ರಾಣಿ',
sniper_tbl_owner:'ಮಾಲೀಕ',
sniper_tbl_lock:'ಲಾಕ್ ಮಾಡಿ',
sniper_placeholder:'ಉದಾ. halo, golden OR diamond, emerald dragon',
sniper_hint:'ಪದಗಳು AND. ಪರ್ಯಾಯಕ್ಕೆ OR, ಗುಂಪಿಗೆ ಬ್ರಾಕೆಟ್. * ಅಥವಾ % ವೈಲ್ಡ್ಕಾರ್ಡ್. ಪದವನ್ನು ಹೊರಗಿಡಲು ಅದರ ಮುಂದೆ - ಹಾಕಿ.',
sniper_room_col:'ಕೊಠಡಿ',
sniper_scans_col:'ಸ್ಕ್ಯಾನ್ಗಳು',
sniper_top_pet_col:'ಟಾಪ್ ಪೆಟ್',
sniper_top_worth_col:'ಅತ್ಯುನ್ನತ ಮೌಲ್ಯ',
sniper_top_owner_col:'ಉನ್ನತ ಮಾಲೀಕರು',
sniper_age_col:'ವಯಸ್ಸು',
sniper_join_btn:'ಸೇರಿ',
sniper_full:'ತುಂಬಿದೆ',
sniper_join_failed:'ಟಾರ್ಗೆಟ್ ರೂಮ್ ತುಂಬಿದೆ',
sniper_scanning_rooms:'ಇತರ ಕೊಠಡಿಗಳನ್ನು ಹುಡುಕುತ್ತಿದೆ…',
sniper_scan_off:'ಸ್ವಯಂ ಬೇಟೆಯಾಡುವುದು',
sniper_scan_next:'ಮುಂದಿನ ಸ್ಕ್ಯಾನ್ ಇನ್',
sniper_scan_idle:'Idle — ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಕಾಯುತ್ತಿದೆ',
sniper_auto_place:'ಬೇಸ್ನಲ್ಲಿ ಸ್ವಯಂ ಇರಿಸಿ',
sniper_place_desc:'(ಕದ್ದ ಪ್ರಾಣಿಯನ್ನು ನಿಮ್ಮ ಬೇಸ್ ಸ್ಲಾಟ್ನಲ್ಲಿ ಇರಿಸುತ್ತದೆ)',
sniper_auto_drop:'ವೇವ್ಸ್ನಲ್ಲಿ ಹೊಂದಿಕೆಯಾಗದ ಪೆಟ್ಗಳನ್ನು ಆಟೋ-ಡ್ರಾಪ್ ಮಾಡಿ',
sniper_drop_desc:'(ಫಿಲ್ಟರ್ಗೆ ಹೊಂದಿಕೆಯಾಗದ ಕಾಡು ಪೆಟ್ಗಳನ್ನು ಡ್ರಾಪ್ ಮಾಡಿ ಸ್ಪಾನ್ ಪೂಲ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡುತ್ತದೆ)',
sniper_auto_hunt:'ಆಟೋ ಬೇಟೆ',
sniper_hunt_desc:'(ಇತರ ಕೊಠಡಿಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ ಉತ್ತಮ ಹೊಂದಾಣಿಕೆಗೆ ಹೋಗಿ)',
sniper_auto_sell:'ಕಳ್ಳತನದಲ್ಲಿ ಆಟೊ-ಮಾರಾಟ',
sniper_sell_desc:'(ಬೇಸ್ ತುಂಬಿದಾಗ ಕೆಟ್ಟದ್ದನ್ನು ಮಾರಿ)',
sniper_lockdown:'ಲಾಕ್ಡೌನ್ ≤',
sniper_lockdown_hint:'≤ ಈ ಸಮಯ ಉಳಿದ ಬೇಸ್ಗಳಿಂದ ಕಳ್ಳತನ. ೦ = ಅನ್ಲಾಕ್ ಮಾತ್ರ.',
sniper_join_grace:'ಕೃಪೆಗೆ ಸೇರಿಕೊಳ್ಳಿ',
sniper_start:'ಶುರು',
sniper_stop:'ನಿಲ್ಲಿಸು',
sniper_idle:'ನಿಷ್ಕ್ರಿಯ',
sniper_no_filter:'ಫಿಲ್ಟರ್ ಇಲ್ಲ',
sniper_waiting:'ಆಟದ ಕಾಯುತ್ತಿದೆ...',
sniper_hold_pause:'ಪೆಟ್ ಹಿಡಿದಿದೆ — ವಿರಾಮ',
sniper_stolen_pause:'ನಮ್ಮ ಪೆಟ್ ಇದೆ — ವಿರಾಮ',
sniper_cooldown:'ಕೂಲ್ಡೌನ್',
sniper_hopping:'ಸರ್ವರ್ ಬದಲಾಗುತ್ತಿದೆ...',
sniper_na:'ಲಾಬಿಯಲ್ಲಿ ಸ್ನೈಪರ್ ಲಭ್ಯವಿಲ್ಲ — ಮೊದಲು ಆಟಕ್ಕೆ ಸೇರಿ',
sniper_wait_lock:'ಲಾಕ್ ಡೇಟಾ ಕಾಯುತ್ತಿದೆ...',
sniper_locked:'ಬೇಸ್ ಲಾಕ್ — ಸ್ಕಿಪ್...',
sniper_full_eggs:'ಬೇಸ್ ತುಂಬಿದೆ — ಮೊಟ್ಟೆ ಮಾತ್ರ, ಮಾರಲಾಗದು',
sniper_stealing:'ಕಳ್ಳತನ',
sniper_dropped:'ಡ್ರಾಪ್',
sniper_holding:'ಹಿಡಿದಿದೆ',
sniper_place:'ಬೇಸ್ನಲ್ಲಿ ಇಡಿ!',
sniper_steal_mode:'[ಕಳ್ಳತನ]',
sniper_theft_nohop:'ಪೆಟ್ ಕಳವಾಗುತ್ತಿದೆ',
sniper_nohop_suffix:'— ಹಾಪ್ ಇಲ್ಲ',
sniper_sniping:'ಸ್ನೈಪಿಂಗ್:',
sniper_options:'ಆಯ್ಕೆಗಳು',
sniper_drop_fail_status:'ಡ್ರಾಪ್ ವಿಫಲ!',
sniper_hotkey_label:'ಹಾಟ್ಕೀ:',
sniper_panel_label:'ಪ್ಯಾನಲ್:',
sniper_grab_fail:'ಹಿಡಿಯಲು ವಿಫಲ. ಮರುಪ್ರಯತ್ನ...',
sniper_our_pet_stolen:'ನಮ್ಮ ಪೆಟ್ ಕಳವಾಯಿತು — ೮ಸೆ ಕೂಲ್ಡೌನ್',
sniper_hopping_short:'ಹಾಪಿಂಗ್...',
sniper_base_full:'ಬೇಸ್ ಫುಲ್',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ಓಡು',
pet_teleport_title:'ಟೆಲಿಪೋರ್ಟ್',
pet_pickup_title:'ಎತ್ತಿಕೊಳ್ಳಿ',
owner_yours:'ನಿಮ್ಮದು',
owner_wild:'ಕಾಡು',
footer_gf:'ಜಿಡ್ಡಿನ ಫೋರ್ಕ್',
copy_ok:'ನಕಲು ಮಾಡಲಾಗಿದೆ',
copy_failed:'ನಕಲು ವಿಫಲವಾಗಿದೆ',
s_invis_on_fly:'ಹಾರುವಾಗ ಅದೃಶ್ಯ',
snipe_walk_home:'ಕದ್ದ ನಂತರ ಮನೆಗೆ ನಡೆ',
snipe_walk_home_desc:'ನಿಮ್ಮ ಬೇಸ್ಗೆ ಹಿಂತಿರುಗಿ ನಡೆ',
sniper_afk_sell:'AFK ಹೊಂದಾಣಿಕೆಯಾಗದ ಪ್ರಾಣಿಗಳನ್ನು ಮಾರಿ',
sniper_afk_sell_desc:'(ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದಾಗ 5ಸೆ, ಫಿಲ್ಟರ್ಗೆ ಹೊಂದಿಕೆಯಾಗದ ಪ್ರಾಣಿಗಳನ್ನು ಮೌಲ್ಯದ ಪ್ರಕಾರ ಮಾರಿ — ಅಲೆಗಳು ಮಾತ್ರ)',
hb_fly:'ಹಾರು',
hb_lck:'ಲಾಕ್',
hb_inv:'ಅಗೋ',
hb_cud:'ಅಪ್ಪು',
hb_pet:'ಪಾಲ',
hb_snp:'ನಿಶಾ',
hb_cfg:'ಸೆಟಿ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ಖಾತೆ',
ban_title:'ಸಂಪರ್ಕ ತಡೆಯಲಾಗಿದೆ',
ban_sub:'ನಿಮ್ಮ IP ವಿಳಾಸವನ್ನು Meeland ನಿರ್ಬಂಧಿಸಿದೆ',
ban_body:'ಚಿಂತಿಸಬೇಡಿ — ಇದನ್ನು ಸರಿಪಡಿಸುವುದು ಸುಲಭ! ಉಚಿತ VPN ನಿಮಗೆ ಹೊಸ IP ನೀಡುತ್ತದೆ ಆದ್ದರಿಂದ ನೀವು ಮತ್ತೆ ಆಡಬಹುದು.',
ban_pick:'ತ್ವರಿತ ಪರಿಹಾರ — ಯಾವುದಾದರೂ ಒಂದನ್ನು ಆರಿಸಿ:',
ban_warp:'ಉಚಿತ, ಅಪರಿಮಿತ, ಒಂದು-ಕ್ಲಿಕ್ ಸೆಟಪ್',
ban_warp_store:'App Store ಮತ್ತು Play Store ನಲ್ಲಿ "1.1.1.1" ಎಂದೂ ಲಭ್ಯ',
ban_proton:'ಡೇಟಾ ಮಿತಿ ಇಲ್ಲ, 5 ದೇಶಗಳು',
ban_steps:'ಸ್ಥಾಪಿಸಿ → ಸಂಪರ್ಕಿಸಿ → ಈ ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ. ಅಷ್ಟೇ!',
ban_ok:'ಅರ್ಥವಾಯಿತು',
warn_title:'ಯಾವಾಗಲೂ VPN ಬಳಸಿ',
warn_body:'ಯಾವಾಗಲೂ <b>VPN</b> ಆನ್ ಮಾಡಿ ಆಡಿ.',
warn_ok:'ಅರ್ಥವಾಯಿತು',
loading:'ಲೋಡ್ ಆಗುತ್ತಿದೆ',
tcl_loading:'ಸಂಪೂರ್ಣ ಟವರ್ ಲೂಪ್ ಚಾಲನೆಯಲ್ಲಿದೆ. ನಿಲ್ಲಿಸಲು {key} ಒತ್ತಿರಿ.',
hop_search:'ಪಂದ್ಯ ಹುಡುಕುತ್ತಿದೆ',
hop_match:'{name} ಕಂಡುಬಂದಿದೆ — ಸೇರುತ್ತಿದೆ',
hop_flee:'ನುಗ್ಗುವವರಿಂದ ಪಲಾಯನ',
hop_reconnect:'ಮರುಸಂಪರ್ಕಿಸುತ್ತಿದೆ',
hop_reload:'ಮರುಲೋಡ್ ಆಗುತ್ತಿದೆ',
hop_fall:'ಬೀಳುವಿಕೆಯಿಂದ ಚೇತರಿಸಿಕೊಳ್ಳುತ್ತಿದೆ',
hop_join:'ಕೋಣೆಗೆ ಸೇರುತ್ತಿದೆ',
lock_off:'ಆಫ್',
lock_unlocked:'ಅನ್ಲಾಕ್',
desc_intro:'MES ನಿಮಗೆ ವಾಲ್ಹ್ಯಾಕ್, ಸ್ವಯಂ ಕೃಷಿ, ಅಪರೂಪದ ಸಾಕುಪ್ರಾಣಿ ಸಂಗ್ರಹಣೆ, ವೇಗ ವರ್ಧಕ, ಹಾರಾಟ, ಅದೃಶ್ಯತೆ ಮತ್ತು ಹೆಚ್ಚಿನದನ್ನು ಮೀಲ್ಯಾಂಡ್ನಲ್ಲಿ ನೀಡುತ್ತದೆ',
desc_free:'೧೦೦% ಉಚಿತ, ಯಾವಾಗಲೂ. ಪ್ರತಿಕ್ರಿಯೆ ಇದೆ? ⭐ ಸಕಾರಾತ್ಮಕ ರಿವ್ಯೂ ಬಿಡಿ — ಅದೇ ಅಪ್ಡೇಟ್ ಮುಂದುವರಿಸುತ್ತದೆ.',
desc_h_movement:'ಚಲನೆ',
desc_h_combat:'ಯುದ್ಧ',
desc_h_tuning:'ಟ್ಯೂನಿಂಗ್',
desc_h_pets:'ಪೆಟ್ & ಕಳ್ಳತನ',
desc_h_economy:'ಆರ್ಥಿಕತೆ',
desc_h_custom:'ಕಸ್ಟಮೈಜ್',
desc_h_extras:'ಹೆಚ್ಚು',
desc_fly:'ಹಾರಾಟ',
desc_fly_d:'Space ಮೇಲೆ, F ಕೆಳಗೆ. ವೇಗ ಹೊಂದಿಸಬಹುದು.',
desc_speed:'ಬ್ಲಿಂಕ್',
desc_speed_d:'Shift ತಕ್ಷಣ ಟೆಲಿಪೋರ್ಟ್.',
desc_noclip:'ಗೋಡೆ ಭೇದ',
desc_noclip_d:'ಗೋಡೆಗಳ ಮೂಲಕ ನಡೆಯಿರಿ.',
desc_walls:'ಗೋಡೆಗಳ ಮೇಲೆ ನಡೆ',
desc_walls_d:'ಯಾವುದೇ ಮೇಲ್ಮೈಯನ್ನು ಹತ್ತಿ.',
desc_waypts:'ವೇಪಾಯಿಂಟ್',
desc_waypts_d:'10 ಸ್ಥಾನ ಉಳಿಸಿ. ಒಂದು-ಕೀ ಟೆಲಿಪೋರ್ಟ್. <kbd>Z</kbd> ಟಾಗಲ್.',
desc_invis:'ಅದೃಶ್ಯ',
desc_invis_d:'ಸಂಪೂರ್ಣ ಅದೃಶ್ಯಕ್ಕಾಗಿ CapsLock ಒತ್ತಿರಿ.',
desc_fpv:'FPV',
desc_fpv_d:'ಮೊದಲ ವ್ಯಕ್ತಿ ಕ್ಯಾಮೆರಾಗೆ ಬದಲಾಯಿಸಲು <kbd>.</kbd> ಒತ್ತಿರಿ.',
desc_anti_invis:'ಆಂಟಿ-ಅದೃಶ್ಯ',
desc_anti_invis_d:'ಅದೃಶ್ಯ ಆಟಗಾರರು ಭೂತಗಳಾಗಿ ಕಾಣಿ.',
desc_xray:'ಎಕ್ಸ್-ರೇ ವಿಷನ್',
desc_xray_d:'ಮರ್ಡರ್ ಮಿಸ್ಟರಿಯಲ್ಲಿ ಗೋಡೆಗಳ ಮೂಲಕ ಆಟಗಾರರನ್ನು ನೋಡಿ. ಕೆಂಪು = ಕೊಲೆಗಾರ, ಹಸಿರು = ನಾಗರಿಕ.',
desc_nodeathh:'ಅಜೇಯ',
desc_nodeath_d:'ಎಲ್ಲಾ ಹಾನಿಗೆ ರಕ್ಷಣೆ.',
desc_antikb:'ಆಂಟಿ-ನಾಕ್ಬ್ಯಾಕ್',
desc_antikb_d:'ತಳ್ಳಲಾಗದು.',
desc_attack:'ತಕ್ಷಣ ದಾಳಿ',
desc_attack_d:'<kbd>G</kbd> ಹತ್ತಿರದ ಆಟಗಾರನಿಗೆ ಟೆಲಿಪೋರ್ಟ್ ಮಾಡಿ ಹೊಡೆ.',
desc_jumpgrav:'ಜಿಗಿತ ಮತ್ತು ಗುರುತ್ವ',
desc_jumpgrav_d:'ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಹೊಂದಿಸಬಹುದಾದ ಗುಣಕಗಳು.',
desc_fov:'FOV ನಿಯಂತ್ರಣ',
desc_fov_d:'ಪ್ರಥಮ-ವ್ಯಕ್ತಿ ಮತ್ತು ತೃತೀಯ-ವ್ಯಕ್ತಿ FOV ಸ್ಲೈಡರ್ಗಳು.',
desc_autoinvis:'ಹಾರಾಟದಲ್ಲಿ ಸ್ವಯಂ-ಅದೃಶ್ಯ',
desc_autoinvis_d:'ಹಾರಾಡುವಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅದೃಶ್ಯರಾಗಿ.',
desc_sniper:'ಪೆಟ್ ಸ್ನೈಪರ್',
desc_sniper_d:'ಫಿಲ್ಟರ್ ಮಾಡಿದ ಪೆಟ್ ಆಟೋ-ಕಳ್ಳತನ. ಎರಡೂ ಮೋಡ್.',
desc_prv:'ಖಾಸಗಿ ಕೊಠಡಿ',
desc_prv_d:'<kbd>PgDn</kbd> ಪ್ರಸ್ತುತ ಮೋಡ್ನಲ್ಲಿ ಖಾಸಗಿ ಕೊಠಡಿ ರಚಿಸುತ್ತದೆ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರುತ್ತದೆ.',
desc_petbrow:'ಪೆಟ್ ಬ್ರೌಸರ್',
desc_petbrow_d:'<kbd>K</kbd> ಎಲ್ಲ ಪೆಟ್ ತೋರಿಸು. ವಿಂಗಡಿಸು, ಫಿಲ್ಟರ್, ಹಿಡಿ.',
desc_cuddle:'ಕಡಲ್ ಪ್ಯಾನಲ್',
desc_cuddle_d:'<kbd>J</kbd> ದೂರದ ಪ್ರಕಾರ ಆಟಗಾರರು. ಅನುಸರಿಸಲು ಕ್ಲಿಕ್.',
desc_return:'ಆಟೋ ಹಿಂತಿರುಗಿ',
desc_return_d:'ಕಳ್ಳತನದ ನಂತರ ಮನೆಗೆ ಟೆಲಿಪೋರ್ಟ್.',
desc_autolock:'ಆಟೊ-ಲಾಕ್',
desc_autolock_d:'ಬೇಸ್ ಯಾವಾಗಲೂ ಲಾಕ್.',
desc_fountain:'ಆಟೊ-ಫೌಂಟೇನ್',
desc_fountain_d:'ಶಾಶ್ವತ 1.5× ಲಾಭ. ಆಟೋ-ನವೀಕರಣ.',
desc_money:'ಉಚಿತ ಹಣ + ನಕ್ಷತ್ರ + ವಜ್ರ',
desc_money_d:'ಜಾಹೀರಾತು ಅಗತ್ಯವಿಲ್ಲ.',
desc_collect:'ಆಟೋ-ಸಂಗ್ರಹ',
desc_collect_d:'ಪೆಟ್ ಆದಾಯ ಪ್ರತಿ 30 ಸೆಕೆಂಡ್.',
desc_music:'ಕ್ಯಾರಿ ಟ್ಯೂನ್',
desc_music_d:'ಕಳ್ಳತನದ ಸಮಯದಲ್ಲಿ ಸಂಗೀತ. 15 ಶೈಲಿ.',
desc_chatfade:'ಚಾಟ್ ಫೇಡ್',
desc_chatfade_d:'ಸಂದೇಶ ಗೋಚರತೆ ನಿಯಂತ್ರಿಸಿ. 5–120ಸೆ.',
desc_emotes:'ಹಾರುವ ಎಮೋಟ್ಗಳು',
desc_emotes_d:'ಹಾರುವಾಗ ಯಾದೃಚ್ಛಿಕ ಎಮೋಟ್ಗಳು.',
desc_displays:'ಪ್ರದರ್ಶನ ಓವರ್ಲೇಗಳು',
desc_displays_d:'ನಿರ್ದೇಶಾಂಕಗಳು, FPS ಕೌಂಟರ್ ಮತ್ತು ಗುರಿ ಮಾಹಿತಿ.',
desc_config:'ಸೆಟ್ಟಿಂಗ್ಗಳು',
desc_config_d:'<kbd>M</kbd> ವೈಶಿಷ್ಟ್ಯ, ಕೀ, ವೇಗ ಟಾಗಲ್.',
desc_langs:'60 ಭಾಷೆ',
desc_langs_d:'ಸಂಪೂರ್ಣ UI ಅನುವಾದ.',
desc_tower:'ಟವರ್ ಪೂರ್ಣ',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ತಕ್ಷಣ ಗೆಲುವು.',
desc_cats:'ಬೆಕ್ಕು ಲೋಡಿಂಗ್ ಸ್ಕ್ರೀನ್',
desc_cats_d:'ಮುದ್ದಾದ ಬೆಕ್ಕುಗಳು ಲೋಡಿಂಗ್ ಬದಲಾಯಿಸುತ್ತವೆ.',
desc_h_install:'ಇನ್ಸ್ಟಾಲ್',
desc_desktop:'ಡೆಸ್ಕ್ಟಾಪ್ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ಅಥವಾ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ',
desc_inst_click:'ಮೇಲೆ ಇನ್ಸ್ಟಾಲ್ ಕ್ಲಿಕ್ ಮಾಡಿ',
desc_inst_open:'ಯಾವುದೇ Meeland ಗೇಮ್ ತೆರೆಯಿರಿ — ತಾನೇ ಕೆಲಸ ಮಾಡುತ್ತದೆ',
desc_mobile:'ಮೊಬೈಲ್ (Android)',
desc_mob_ff:'Play Store ನಿಂದ <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ',
desc_mob_addon:'Firefox → ಮೆನು → ಆಡ್-ಆನ್ → <strong>Tampermonkey</strong> ಇನ್ಸ್ಟಾಲ್',
desc_mob_visit:'Firefox ನಲ್ಲಿ ಈ ಪುಟ ನೋಡಿ ಮತ್ತು ಇನ್ಸ್ಟಾಲ್ ಟ್ಯಾಪ್ ಮಾಡಿ',
desc_mob_play:'Meeland ಆಡಿ — ಟಚ್ HUD ಬಟನ್ಗಳು ತಾನೇ ಕಾಣಿಸುತ್ತವೆ',
desc_ios:'iOS: Apple ಎಲ್ಲ iOS ಬ್ರೌಸರ್ಗಳಲ್ಲಿ (Firefox ಸೇರಿ) ಎಕ್ಸ್ಟೆನ್ಶನ್ ಬ್ಲಾಕ್ ಮಾಡುತ್ತದೆ. ಡೆಸ್ಕ್ಟಾಪ್ ಅಥವಾ Android ಬಳಸಿ.',
desc_h_privacy:'ಗೌಪ್ಯತೆ',
desc_privacy:'ಕೇವಲ ಕ್ಲೈಂಟ್-ಸೈಡ್ — ಯಾವುದೇ ಡೇಟಾ ಬ್ರೌಸರ್ ಬಿಡುವುದಿಲ್ಲ'
});
_mk('ml','മലയാളം',{
close:'✕',
refresh:'↻',
go:'പോകൂ',
set:'സെറ്റ്',
auto:'ഓട്ടോ',
empty:'ശൂന്യം',
help_title:'സഹായം',
players_title:'കളിക്കാർ',
players_empty:'മറ്റ് കളിക്കാരെ കണ്ടില്ല',
settings_title:'ക്രമീകരണങ്ങൾ',
settings_reset:'റീസെറ്റ്',
tab_gameplay:'ഗെയിംപ്ലേ',
tab_economy:'സമ്പദ്വ്യവസ്ഥ',
tab_audio:'ഓഡിയോ',
tab_advanced:'വിപുലമായ',
tab_hud:'HUD',
tab_keys:'കീകൾ',
tab_accounts:'അക്കൗണ്ടുകൾ',
acct_current:'നിലവിലെ',
acct_new:'പുതിയ',
acct_import:'ഇറക്കുമതി',
acct_switch:'മാറ്റുക',
acct_reload:'വീണ്ടും ലോഡ് ചെയ്യുക',
acct_delete:'നീക്കം ചെയ്യുക',
acct_cancel:'റദ്ദാക്കുക',
acct_empty:'ശൂന്യം',
acct_token_ph:'ടോക്കൺ',
acct_copy:'പകർത്തുക',
acct_export:'കയറ്റുമതി',
acct_rename:'പുനർനാമകരണം',
acct_save:'സംരക്ഷിക്കുക',
acct_name_len:'പേര് 4-12 അക്ഷരങ്ങൾ ആയിരിക്കണം',
acct_name_fail:'പുനർനാമകരണം പരാജയപ്പെട്ടു',
acct_invalid:'അസാധുവാണ്',
acct_ready:'അക്കൗണ്ട് തയ്യാറാണ്. Meeland അടയ്ക്കുക, IP മാറ്റുക, തുടർന്ന് വീണ്ടും ലോഡ് ചെയ്യുക.',
acct_ip_note:'അക്കൗണ്ട് മാറ്റുമ്പോൾ എപ്പോഴും VPN ഉപയോഗിക്കുകയും IP മാറ്റുകയും ചെയ്യുക.',
acct_howto:'1. ഈ അക്കൗണ്ടിന്റെ ലിങ്ക് കോപ്പി ചെയ്യാൻ കോപ്പി ക്ലിക്ക് ചെയ്യുക.\n2. മറ്റൊരു ബ്രൗസറിലോ ഉപകരണത്തിലോ — അല്ലെങ്കിൽ സുഹൃത്തിനൊപ്പമോ — MES തുറക്കുക.\n3. ഇറക്കുമതി ക്ലിക്ക് ചെയ്ത് ലിങ്ക് ഒട്ടിക്കുക.',
sh_movement:'ചലനം',
sh_defense:'പ്രതിരോധം',
sh_camera:'ക്യാമറ',
sh_overlays:'ഓവർലേ',
sh_behaviour:'പെരുമാറ്റം',
sh_buttons:'ബട്ടണുകൾ',
sh_language:'ഭാഷ',
sh_chat:'ചാറ്റ്',
sh_waves:'Waves',
sh_steal_a_pet:'വളർത്തുമൃഗത്തെ മോഷ്ടിക്കുക',
sh_tower:'Tower',
sh_misc_multi:'മറ്റുള്ളവ (മൾട്ടി-മോഡ്)',
s_noclip:'മതിൽ തുളച്ചുകടക്കൽ',
s_fly:'പറക്കുക',
s_fly_emotes:'പറക്കൽ ഇമോട്ടുകൾ',
s_base_speed:'അടിസ്ഥാന വേഗത',
s_jump_mult:'ഉയരം കുതിക്കുക',
s_grav_mult:'ഗുരുത്വാകർഷണം',
s_walk_up_walls:'ചുവരുകൾ മുകളിലേക്ക് നടക്കുക',
s_carry_normalize:'കാരി സ്പീഡ് + ജമ്പ്',
s_invincibility:'അജയ്യത',
s_anti_kb:'ആന്റി-നോക്ക്ബാക്ക്',
s_invisible:'അദൃശ്യം',
s_xray_infection:'എക്സ്-റേ (മർഡർ മിസ്റ്ററി)',
s_ghost_mode:'ഗോസ്റ്റ് മോഡ്',
s_flee_intruder:'അതിക്രമിച്ചാൽ ഓടുക',
s_first_person:'ഒന്നാം വ്യക്തി ദൃശ്യം',
s_fov_first_person:'FOV (1-ാം)',
s_fov_third_person:'FOV (3-ാം)',
s_fov_vertical_mult:'FOV ലംബ മൾട്ടിപ്ലയർ',
s_auto_lock:'ഓട്ടോ-ലോക്ക് ബേസ്',
s_auto_fountain:'ഓട്ടോ-ഫൗണ്ടൻ (1.5×)',
s_daily_coins:'ദൈനംദിന നാണയങ്ങൾ',
s_stars:'നക്ഷത്രങ്ങൾ',
s_diamonds_tower:'വജ്രങ്ങൾ (ടവർ)',
s_tower_loop:'ടവർ ലൂപ്പ്',
s_auto_roll_x25:'ഓട്ടോ റോൾ x25 ഭാഗ്യം',
s_auto_craft:'ഓട്ടോ-ക്രാഫ്റ്റ്',
s_auto_vip_sword:'ഓട്ടോ VIP വാങ്ങൽ',
s_auto_vip_waves:'ഓട്ടോ VIP വാങ്ങൽ (തിരമാലകൾ)',
s_direct_kill:'നേരിട്ടുള്ള കിൽ സ്പാം',
s_direct_kill_rate:'കിൽ നിരക്ക്',
s_auto_buy_upgrades:'ഓട്ടോ ബൈ അപ്ഗ്രേഡുകൾ',
s_boost_coins:'യാന്ത്രിക നവീകരണം: നാണയങ്ങൾ',
s_boost_diamonds:'യാന്ത്രിക നവീകരണം: ഡയമണ്ട്സ്',
s_boost_luck:'യാന്ത്രിക നവീകരണം: ഭാഗ്യം',
s_auto_unlock_areas:'യാന്ത്രിക അൺലോക്ക് ഏരിയകൾ',
s_auto_rebirth:'യാന്ത്രിക പുനർജന്മം',
s_auto_join_tp:'ഏറ്റവും ഉയർന്ന പ്രദേശത്തേക്ക് ടെലിപോർട്ട് ചെയ്യുക',
s_hide_kill_rewards:'കിൽ റിവാർഡുകൾ മറയ്ക്കുക',
s_hide_roll_anim:'റോൾ ആനിമേഷൻ മറയ്ക്കുക',
rng_title:'വളർത്തുമൃഗങ്ങൾ RNG ചതികൾ',
rng_sec_rolling:'ഉരുളുന്നു',
rng_sec_crafting:'ക്രാഫ്റ്റിംഗ്',
rng_sec_combat:'യുദ്ധം',
rng_sec_upgrades:'നവീകരിക്കുന്നു',
rng_sec_areas:'പ്രദേശങ്ങൾ',
rng_actions:'പ്രവർത്തനങ്ങൾ',
log_craft:'ക്രാഫ്റ്റ്',
log_success:'വിജയം',
log_fail:'പരാജയപ്പെടുക',
log_unlocking_area:'അൺലോക്ക് ഏരിയ',
log_area_unlocked:'ഏരിയ അൺലോക്ക് ചെയ്തു',
log_equipped:'സജ്ജീകരിച്ചിരിക്കുന്നു',
log_bought_upgrade:'അപ്ഗ്രേഡ് വാങ്ങി',
log_teleported_to:'ലേക്ക് ടെലിപോർട്ട് ചെയ്തു',
log_rebirthing:'പുനർജന്മം',
h_rng:'Rng',
h_accts:'അക്കൗണ്ടുകൾ',
s_auto_collect:'ഓട്ടോ-ശേഖരണം വരുമാനം',
s_collect_interval:'ശേഖരണ ഇടവേള',
s_chat_fade:'ചാറ്റ് ഫേഡ് സമയം',
s_name_colors:'ഉപയോക്തൃനാമ നിറങ്ങൾ',
s_chat_enhance:'ചാറ്റ് മെച്ചപ്പെടുത്തലുകൾ',
mes_hint:'നുറുങ്ങ്: നിങ്ങളുടെ ഉപയോക്തൃനാമത്തിൽ "mes" ഉൾപ്പെടുത്തുക, മഴവില്ല് അനിമേറ്റഡ് ഇഫക്റ്റിനായി!',
s_carry_tune:'കാരി ട്യൂൺ (മോഷ്ടിക്കൽ)',
s_pet_pickup_radius:'മൃഗം മോഷ്ടിക്കൽ ദൂരം',
s_carry_vol:'കാരി വോള്യം',
carry_tune_default:'ഡിഫോൾട്ട്',
carry_tune_silent:'നിശ്ശബ്ദം',
carry_tune_ambient:'ആംബിയന്റ്',
carry_tune_blues:'ബ്ലൂസ്',
carry_tune_chiptune:'ചിപ്ടൂൺ',
carry_tune_classical:'ക്ലാസ്സിക്കൽ',
carry_tune_electronic:'ഇലക്ട്രോണിക്',
carry_tune_epic:'ഇതിഹാസ',
carry_tune_folk:'നാടൻ',
carry_tune_funk:'ഫങ്ക്',
carry_tune_jazz:'ജാസ്',
carry_tune_lofi:'ലോ-ഫൈ',
carry_tune_metal:'മെറ്റൽ',
carry_tune_pop:'പോപ്പ്',
carry_tune_punk:'പങ്ക്',
carry_tune_reggae:'റെഗ്ഗേ',
carry_tune_rock:'റോക്ക്',
s_cont_cuddle:'തുടർച്ചയായ കുഡിൽ',
s_protips:'പ്രോ ടിപ്സ്',
s_hideprotips:'എന്റെ പ്രോ ടിപ്സ് മറക്കുക',
s_show_exp_modes:'പരീക്ഷണ മോഡുകൾ കാണിക്കുക',
s_showcoords:'കോർഡിനേറ്റുകൾ കാണിക്കുക',
s_showfps:'FPS കാണിക്കുക',
s_showtargetinfo:'ലക്ഷ്യ വിവരം കാണിക്കുക',
s_showobj:'എന്റിറ്റി / മെഷ് എണ്ണം കാണിക്കുക',
s_copy_dbg:'പകർത്തുക',
s_copy_json:'JSON പകർത്തുക',
s_clear_dbg:'മായ്ക്കുക',
h_fly:'പറക്കൽ',
h_speed:'സ്പീഡ് ഹാക്ക്',
h_waypoints:'വേപോയിന്റ്',
h_autolock:'ഓട്ടോ-ലോക്ക്',
h_invisible:'അദൃശ്യം',
h_cuddle:'കുഡിൽ',
h_pets:'പെറ്റുകൾ',
h_snipe:'സ്നൈപ്പ്',
h_help:'സഹായം',
h_settings:'ക്രമീകരണങ്ങൾ',
h_prv:'സ്വകാര്യ മുറി',
h_tc:'ടവർ പൂർത്തി',
h_tcl:'ടവർ ലൂപ്പ്',
kb_fly:'പറക്കൽ (ടോഗിൾ/മുകളിലേക്ക്)',
kb_fly_down:'പറക്കൽ താഴേക്ക്',
kb_set_home:'ഹോം സെറ്റ്',
kb_home:'വീട്',
kb_back:'തിരിച്ച്',
kb_cuddle:'കുഡിൽ പാനൽ',
kb_settings:'ക്രമീകരണങ്ങൾ',
kb_pets:'പെറ്റ് ബ്രൗസർ',
kb_slots:'വേപോയിന്റ് സ്ലോട്ട്',
kb_snipe:'സ്നൈപ്പർ പാനൽ',
kb_snipe_toggle:'സ്നൈപ്പർ ഓൺ/ഓഫ്',
kb_attack:'ആക്രമണം',
kb_help:'സഹായം / വിവരണം',
kb_tower:'ടവർ പൂർത്തി',
kb_tower_loop:'ടവർ ലൂപ്പ്',
kb_invisible:'അദൃശ്യം',
kb_first_person:'ഒന്നാം വ്യക്തി',
kb_autolock:'ഓട്ടോ-ലോക്ക് ബേസ്',
kb_prv:'സ്വകാര്യ മുറി',
kb_rng:'RNG',
kb_accts:'അക്കൗണ്ടുകൾ',
pets_title:'പെറ്റുകൾ',
pets_search_placeholder:'ഉദാ. വൈൽഡ് കിറ്റി, ഗോൾഡൻ അല്ലെങ്കിൽ ഡയമണ്ട്, (സ്വർണ്ണ അല്ലെങ്കിൽ മരതകം) കാട്ടുമൃഗം',
pets_hint:'വാക്കുകൾ AND ചേർക്കുന്നു. ഇതരമാർഗ്ഗത്തിന് OR, ഗ്രൂപ്പിംഗിന് ബ്രാക്കറ്റ്. * അല്ലെങ്കിൽ % വൈൽഡ്കാർഡ്. ഒരു വാക്ക് ഒഴിവാക്കാൻ അതിന് മുന്നിൽ - ഇടുക.',
pets_empty:'ഈ മുറിയിൽ പെറ്റുകൾ കണ്ടില്ല',
pt_name:'പേര്',
pt_mut:'മ്യൂട്ടേഷൻ',
pt_rar:'അപൂർവ്വത',
pt_owner:'ഉടമ',
pt_worth:'മൂല്യം',
pt_income:'വരുമാനം/സെ',
pt_dist:'ദൂരം',
slots_title:'വേപോയിന്റ് സ്ലോട്ട്',
sniper_title:'പെറ്റ് സ്നൈപ്പർ',
sniper_tbl_pet:'വളർത്തുമൃഗങ്ങൾ',
sniper_tbl_owner:'ഉടമ',
sniper_tbl_lock:'പൂട്ടുക',
sniper_placeholder:'ഉദാ. halo, golden OR diamond, emerald dragon',
sniper_hint:'വാക്കുകൾ AND. ഇതരമാർഗ്ഗത്തിന് OR, ഗ്രൂപ്പിംഗിന് ബ്രാക്കറ്റ്. * അല്ലെങ്കിൽ % വൈൽഡ്കാർഡ്. ഒരു വാക്ക് ഒഴിവാക്കാൻ അതിന് മുന്നിൽ - ഇടുക.',
sniper_room_col:'മുറി',
sniper_scans_col:'സ്കാൻ ചെയ്യുന്നു',
sniper_top_pet_col:'ടോപ്പ് പെറ്റ്',
sniper_top_worth_col:'ഏറ്റവും മൂല്യമുള്ളത്',
sniper_top_owner_col:'മുൻനിര ഉടമ',
sniper_age_col:'പ്രായം',
sniper_join_btn:'ചേരുക',
sniper_full:'നിറഞ്ഞു',
sniper_join_failed:'ലക്ഷ്യ മുറി നിറഞ്ഞു',
sniper_scanning_rooms:'മറ്റ് മുറികൾ തിരയുന്നു…',
sniper_scan_off:'യാന്ത്രിക വേട്ട',
sniper_scan_next:'അടുത്തത് സ്കാൻ ചെയ്യുക',
sniper_scan_idle:'നിഷ്ക്രിയം - സ്കാൻ ചെയ്യാൻ കാത്തിരിക്കുന്നു',
sniper_auto_place:'ബേസിൽ സ്വയം സ്ഥാപിക്കുക',
sniper_place_desc:'(മോഷ്ടിച്ച മൃഗത്തെ നിങ്ങളുടെ ബേസ് സ്ലോട്ടിൽ വയ്ക്കുന്നു)',
sniper_auto_drop:'വേവ്സിൽ പൊരുത്തമില്ലാത്ത പെറ്റുകൾ ഓട്ടോ-ഡ്രോപ്പ് ചെയ്യുക',
sniper_drop_desc:'(ഫിൽട്ടറുമായി പൊരുത്തപ്പെടാത്ത വന്യ പെറ്റുകളെ ഡ്രോപ്പ് ചെയ്ത് സ്പോൺ പൂൾ പുതുക്കുന്നു)',
sniper_auto_hunt:'ഓട്ടോ വേട്ട',
sniper_hunt_desc:'(മറ്റ് മുറികൾ സ്കാൻ ചെയ്ത് ഏറ്റവും മികച്ച മാച്ചിലേക്ക് പോകുക)',
sniper_auto_sell:'കളവിൽ ഓട്ടോ-വിൽപ്പന',
sniper_sell_desc:'(ബേസ് നിറഞ്ഞാൽ ഏറ്റവും മോശം വിൽക്കുക)',
sniper_lockdown:'ലോക്ക്ഡൗൺ ≤',
sniper_lockdown_hint:'≤ ഈ സമയം ബാക്കിയുള്ള ബേസുകളിൽ നിന്ന് കളവ്. 0 = അൺലോക്ക് മാത്രം.',
sniper_join_grace:'കൃപയിൽ ചേരുക',
sniper_start:'ആരംഭിക്കുക',
sniper_stop:'നിർത്തുക',
sniper_idle:'നിഷ്ക്രിയം',
sniper_no_filter:'ഫിൽട്ടർ ഇല്ല',
sniper_waiting:'ഗെയിം കാത്തിരിക്കുന്നു...',
sniper_hold_pause:'പെറ്റ് പിടിച്ചിരിക്കുന്നു — താൽക്കാലികം',
sniper_stolen_pause:'നമ്മുടെ പെറ്റ് ഉണ്ട് — താൽക്കാലികം',
sniper_cooldown:'കൂൾഡൗൺ',
sniper_hopping:'സെർവർ മാറുന്നു...',
sniper_na:'ലോബിയിൽ സ്നൈപ്പർ ലഭ്യമല്ല — ആദ്യം ഗെയിമിൽ ചേരൂ',
sniper_wait_lock:'ലോക്ക് ഡേറ്റ കാത്തിരിക്കുന്നു...',
sniper_locked:'ബേസ് ലോക്ക് — സ്കിപ്പ്...',
sniper_full_eggs:'ബേസ് നിറഞ്ഞു — മുട്ടകൾ മാത്രം, വിൽക്കാനാവില്ല',
sniper_stealing:'കളവ്',
sniper_dropped:'ഡ്രോപ്പ്',
sniper_holding:'പിടിച്ചിരിക്കുന്നു',
sniper_place:'ബേസിൽ വയ്ക്കുക!',
sniper_steal_mode:'[കളവ്]',
sniper_theft_nohop:'പെറ്റ് മോഷ്ടിക്കപ്പെടുന്നു',
sniper_nohop_suffix:'— ഹോപ്പ് ഇല്ല',
sniper_sniping:'സ്നൈപ്പിംഗ്:',
sniper_options:'ഓപ്ഷനുകൾ',
sniper_drop_fail_status:'ഡ്രോപ്പ് പരാജയം!',
sniper_hotkey_label:'ഹോട്ട്കീ:',
sniper_panel_label:'പാനൽ:',
sniper_grab_fail:'പിടിക്കാനായില്ല. വീണ്ടും ശ്രമിക്കുന്നു...',
sniper_our_pet_stolen:'നമ്മുടെ പെറ്റ് മോഷ്ടിച്ചു — 8സെ കൂൾഡൗൺ',
sniper_hopping_short:'ഹോപ്പിംഗ്...',
sniper_base_full:'അടിസ്ഥാനം നിറഞ്ഞു',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ഓട്ടം',
pet_teleport_title:'ടെലിപോർട്ട്',
pet_pickup_title:'പുരോഗമിക്കുക',
owner_yours:'നിങ്ങളുടെ',
owner_wild:'വന്യമായ',
footer_gf:'കൊഴുപ്പുള്ള ഫോർക്ക്',
copy_ok:'പകർത്തി',
copy_failed:'പകർത്താനായില്ല',
s_invis_on_fly:'പറക്കുമ്പോൾ അദൃശ്യം',
snipe_walk_home:'മോഷ്ടിച്ച ശേഷം വീട്ടിലേക്ക് നടക്കുക',
snipe_walk_home_desc:'നിങ്ങളുടെ ബേസിലേക്ക് തിരികെ നടക്കുക',
sniper_afk_sell:'AFK പൊരുത്തമില്ലാത്ത മൃഗങ്ങളെ വിൽക്കുക',
sniper_afk_sell_desc:'(നിഷ്ക്രിയമായിരിക്കുമ്പോൾ 5സെ, ഫിൽട്ടറുമായി പൊരുത്തമില്ലാത്ത മൃഗങ്ങളെ മൂല്യമനുസരിച്ച് വിൽക്കുക — തരംഗങ്ങൾ മാത്രം)',
hb_fly:'പറ',
hb_lck:'ലോക',
hb_inv:'അദൃ',
hb_cud:'കെട',
hb_pet:'പാല',
hb_snp:'നിശ',
hb_cfg:'സെറ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'അക്കൗ',
ban_title:'കണക്ഷൻ തടഞ്ഞു',
ban_sub:'നിങ്ങളുടെ IP വിലാസം Meeland നിയന്ത്രിച്ചിരിക്കുന്നു',
ban_body:'ആശങ്കപ്പെടേണ്ട — ഇത് എളുപ്പത്തിൽ പരിഹരിക്കാം! ഒരു സൗജന്യ VPN നിങ്ങൾക്ക് പുതിയ IP നൽകും, അതിനാൽ നിങ്ങൾക്ക് വീണ്ടും കളിക്കാം.',
ban_pick:'ദ്രുത പരിഹാരം — ഒന്ന് തിരഞ്ഞെടുക്കുക:',
ban_warp:'സൗജന്യം, അൺലിമിറ്റഡ്, ഒറ്റ-ക്ലിക്ക് സെറ്റപ്പ്',
ban_warp_store:'App Store, Play Store എന്നിവയിലും "1.1.1.1" ആയി ലഭ്യമാണ്',
ban_proton:'ഡാറ്റ പരിധിയില്ല, 5 രാജ്യങ്ങൾ',
ban_steps:'ഇൻസ്റ്റാൾ ചെയ്യുക → കണക്ട് ചെയ്യുക → ഈ പേജ് റിഫ്രഷ് ചെയ്യുക. അത്രമാത്രം!',
ban_ok:'മനസ്സിലായി',
warn_title:'എല്ലായ്പ്പോഴും VPN ഉപയോഗിക്കുക',
warn_body:'എല്ലായ്പ്പോഴും <b>VPN</b> ഓണാക്കി കളിക്കുക.',
warn_ok:'മനസ്സിലായി',
loading:'ലോഡ് ചെയ്യുന്നു',
tcl_loading:'പൂർണ്ണ ടവർ ലൂപ്പ് പ്രവർത്തിക്കുന്നു. നിർത്താൻ {key} അമർത്തുക.',
hop_search:'മത്സരം തേടുന്നു',
hop_match:'{name} കണ്ടെത്തി — ചേരുന്നു',
hop_flee:'അതിക്രമിച്ചയാളിൽ നിന്ന് ഓടുന്നു',
hop_reconnect:'വീണ്ടും ബന്ധിപ്പിക്കുന്നു',
hop_reload:'വീണ്ടും ലോഡ് ചെയ്യുന്നു',
hop_fall:'വീഴ്ചയിൽ നിന്ന് വീണ്ടെടുക്കുന്നു',
hop_join:'മുറിയിൽ ചേരുന്നു',
lock_off:'ഓഫ്',
lock_unlocked:'അൺലോക്ക്',
desc_intro:'MES നിങ്ങൾക്ക് വാൾഹാക്ക്, ഓട്ടോ ഫാമിംഗ്, അപൂർവ വളർത്തുമൃഗങ്ങളുടെ ശേഖരണം, വേഗത വർദ്ധിപ്പിക്കൽ, ഫ്ലൈറ്റ്, അദൃശ്യത എന്നിവയും മറ്റും നൽകുന്നു',
desc_free:'100% സൗജന്യം, എല്ലായ്പ്പോഴും. പ്രതികരണമുണ്ടോ? ⭐ പോസിറ്റീവ് റിവ്യൂ നൽകൂ — അതാണ് അപ്ഡേറ്റുകൾ തുടരുന്നത്.',
desc_h_movement:'ചലനം',
desc_h_combat:'യുദ്ധം',
desc_h_tuning:'ട്യൂണിംഗ്',
desc_h_pets:'പെറ്റുകൾ & മോഷണം',
desc_h_economy:'സമ്പദ്വ്യവസ്ഥ',
desc_h_custom:'ഇഷ്ടാനുസൃതം',
desc_h_extras:'അധിക',
desc_fly:'പറക്കൽ',
desc_fly_d:'Space മുകളിൽ, F താഴേക്ക്. വേഗത ക്രമീകരിക്കാം.',
desc_speed:'ബ്ലിങ്ക്',
desc_speed_d:'Shift ടെലിപോർട്ട് ചെയ്യാൻ.',
desc_noclip:'മതിൽ തുളച്ചുകടക്കൽ',
desc_noclip_d:'ചുവരുകളിലൂടെ നടക്കുക.',
desc_walls:'ഭിത്തിയിൽ നടത്തം',
desc_walls_d:'ഏത് പ്രതലത്തിലും കയറുക.',
desc_waypts:'വേപോയിന്റ്',
desc_waypts_d:'10 സ്ഥാനങ്ങൾ സംരക്ഷിക്കുക. ഒരു-കീ ടെലിപോർട്ട്. <kbd>Z</kbd> ടോഗിൾ.',
desc_invis:'അദൃശ്യം',
desc_invis_d:'പൂർണ്ണമായും അപ്രത്യക്ഷമാകാൻ CapsLock അമർത്തുക.',
desc_fpv:'FPV',
desc_fpv_d:'ഒന്നാം വ്യക്തി ക്യാമറയിലേക്ക് മാറാൻ <kbd>.</kbd> അമർത്തുക.',
desc_anti_invis:'ആന്റി-അദൃശ്യം',
desc_anti_invis_d:'അദൃശ്യ കളിക്കാരെ പ്രേതങ്ങളായി കാണുക.',
desc_xray:'എക്സ്-റേ വിഷൻ',
desc_xray_d:'മർഡർ മിസ്റ്ററിയിൽ മതിലുകൾക്കിടയിൽ കളിക്കാരെ കാണുക. ചുവപ്പ് = കൊലപാതകി, പച്ച = സാധാരണക്കാരൻ.',
desc_nodeathh:'അമർത്യൻ',
desc_nodeath_d:'എല്ലാ നാശനഷ്ടങ്ങളിൽ നിന്നും രക്ഷ.',
desc_antikb:'ആന്റി-നോക്ക്ബാക്ക്',
desc_antikb_d:'തള്ളിമാറ്റാൻ കഴിയില്ല.',
desc_attack:'തൽക്ഷണ ആക്രമണം',
desc_attack_d:'<kbd>G</kbd> അടുത്ത കളിക്കാരനടുത്ത് ടെലിപോർട്ട് ചെയ്ത് അടി.',
desc_jumpgrav:'ജമ്പും ഗുരുത്വാകർഷണവും',
desc_jumpgrav_d:'ക്രമീകരണങ്ങളിൽ ക്രമീകരിക്കാവുന്ന ഗുണിതങ്ങൾ.',
desc_fov:'FOV നിയന്ത്രണം',
desc_fov_d:'ഒന്നാം വ്യക്തി, മൂന്നാം വ്യക്തി FOV സ്ലൈഡറുകൾ.',
desc_autoinvis:'പറക്കലിൽ ഓട്ടോ-അദൃശ്യം',
desc_autoinvis_d:'പറക്കുമ്പോൾ സ്വയം അദൃശ്യമാകൂ.',
desc_sniper:'പെറ്റ് സ്നൈപ്പർ',
desc_sniper_d:'ഫിൽറ്റർ ചെയ്ത പെറ്റ് ഓട്ടോ-മോഷണം. രണ്ട് മോഡുകൾ.',
desc_prv:'സ്വകാര്യ മുറി',
desc_prv_d:'<kbd>PgDn</kbd> നിലവിലെ മോഡിൽ ഒരു സ്വകാര്യ മുറി ഉണ്ടാക്കുന്നു, സ്വയം ചേരുന്നു.',
desc_petbrow:'പെറ്റ് ബ്രൗസർ',
desc_petbrow_d:'<kbd>K</kbd> എല്ലാ പെറ്റ് കാണിക്കുന്നു. അടുക്കുക, ഫിൽറ്റർ, പിടിക്കുക.',
desc_cuddle:'കുഡിൽ പാനൽ',
desc_cuddle_d:'<kbd>J</kbd> ദൂരമനുസരിച്ച് കളിക്കാർ. ഫോളോ ചെയ്യാൻ ക്ലിക്ക്.',
desc_return:'ഓട്ടോ റിട്ടേൺ',
desc_return_d:'മോഷണത്തിന് ശേഷം വീട്ടിലേക്ക് ടെലിപോർട്ട്.',
desc_autolock:'ഓട്ടോ-ലോക്ക്',
desc_autolock_d:'ബേസ് എല്ലായ്പ്പോഴും ലോക്ക്.',
desc_fountain:'ഓട്ടോ-ഫൗണ്ടൻ',
desc_fountain_d:'സ്ഥിരം 1.5× ലാഭം. ഓട്ടോ-പുതുക്കൽ.',
desc_money:'സൗജന്യ പണം + നക്ഷത്രങ്ങൾ + വജ്രങ്ങൾ',
desc_money_d:'പരസ്യങ്ങൾ ആവശ്യമില്ല.',
desc_collect:'ഓട്ടോ-ശേഖരണം',
desc_collect_d:'പെറ്റ് വരുമാനം 30 സെക്കൻഡിൽ.',
desc_music:'കാരി ട്യൂൺ',
desc_music_d:'മോഷ്ടിക്കുമ്പോൾ സംഗീതം. 15 ജോണറുകൾ.',
desc_chatfade:'ചാറ്റ് ഫേഡ്',
desc_chatfade_d:'സന്ദേശ ദൃശ്യത നിയന്ത്രിക്കുക. 5–120s.',
desc_emotes:'ഫ്ലൈ ഇമോട്ട്സ്',
desc_emotes_d:'പറക്കുമ്പോൾ ക്രമരഹിത ഇമോട്ട്സ്.',
desc_displays:'ഡിസ്പ്ലേ ഓവർലേകൾ',
desc_displays_d:'കോഓർഡിനേറ്റുകൾ, FPS കൗണ്ടർ, ലക്ഷ്യ വിവരം.',
desc_config:'ക്രമീകരണം',
desc_config_d:'<kbd>M</kbd> ഫീച്ചർ, കീ, സ്പീഡ് ടോഗിൾ.',
desc_langs:'60 ഭാഷകൾ',
desc_langs_d:'പൂർണ്ണ UI വിവർത്തനം.',
desc_tower:'ടവർ പൂർത്തി',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ഉടൻ വിജയം.',
desc_cats:'പൂച്ച ലോഡിംഗ് സ്ക്രീൻ',
desc_cats_d:'ഓമനത്തമുള്ള പൂച്ചകൾ ലോഡിംഗ് മാറ്റിസ്ഥാപിക്കുന്നു.',
desc_h_install:'ഇൻസ്റ്റാൾ',
desc_desktop:'ഡെസ്ക്ടോപ്പ് (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> അല്ലെങ്കിൽ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ഇൻസ്റ്റാൾ ചെയ്യുക',
desc_inst_click:'മുകളിൽ ഇൻസ്റ്റാൾ ക്ലിക്ക് ചെയ്യുക',
desc_inst_open:'ഏത് Meeland ഗെയിമും തുറക്കുക — അങ്ങനെ തന്നെ പ്രവർത്തിക്കും',
desc_mobile:'മൊബൈൽ (Android)',
desc_mob_ff:'Play Store-ൽ നിന്ന് <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ഇൻസ്റ്റാൾ ചെയ്യുക',
desc_mob_addon:'Firefox → മെനു → ആഡ്-ഓൺ → <strong>Tampermonkey</strong> ഇൻസ്റ്റാൾ',
desc_mob_visit:'Firefox-ൽ ഈ പേജ് സന്ദർശിച്ച് ഇൻസ്റ്റാൾ ടാപ്പ് ചെയ്യുക',
desc_mob_play:'Meeland കളിക്കുക — ടച്ച് HUD ബട്ടണുകൾ സ്വയം കാണിക്കും',
desc_ios:'iOS: Apple എല്ലാ iOS ബ്രൗസറുകളിലും (Firefox ഉൾപ്പെടെ) എക്സ്റ്റൻഷനുകൾ ബ്ലോക്ക് ചെയ്യുന്നു. ഡെസ്ക്ടോപ്പ് അല്ലെങ്കിൽ Android ഉപയോഗിക്കുക.',
desc_h_privacy:'സ്വകാര്യത',
desc_privacy:'ക്ലൈന്റ്-സൈഡ് മാത്രം — ഒരു ഡേറ്റയും ബ്രൗസർ വിടുന്നില്ല'
});
_mk('mr','मराठी',{
close:'✕',
refresh:'↻',
go:'जा',
set:'सेट',
auto:'ऑटो',
empty:'रिकामे',
help_title:'मदत',
players_title:'खेळाडू',
players_empty:'इतर खेळाडू सापडले नाहीत',
settings_title:'सेटिंग्स',
settings_reset:'रीसेट',
tab_gameplay:'गेमप्ले',
tab_economy:'अर्थव्यवस्था',
tab_audio:'ऑडिओ',
tab_advanced:'प्रगत',
tab_hud:'HUD',
tab_keys:'की',
tab_accounts:'खाती',
acct_current:'सध्याचे',
acct_new:'नवीन',
acct_import:'आयात',
acct_switch:'बदला',
acct_reload:'पुन्हा लोड करा',
acct_delete:'हटवा',
acct_cancel:'रद्द करा',
acct_empty:'रिकामे',
acct_token_ph:'टोकन',
acct_copy:'कॉपी',
acct_export:'निर्यात',
acct_rename:'नाव बदला',
acct_save:'सेव्ह करा',
acct_name_len:'नाव ४-१२ अक्षरांचे असावे',
acct_name_fail:'नाव बदलणे अयशस्वी',
acct_invalid:'अवैध',
acct_ready:'खाते तयार. Meeland बंद करा, IP बदला, नंतर पुन्हा लोड करा.',
acct_ip_note:'खाते बदलताना नेहमी VPN वापरा आणि IP बदला.',
acct_howto:'1. या खात्याचा लिंक कॉपी करण्यासाठी कॉपी क्लिक करा.\n2. दुसऱ्या ब्राउझरवर किंवा डिव्हाइसवर — किंवा मित्रासोबत — MES उघडा.\n3. आयात क्लिक करा आणि लिंक पेस्ट करा.',
sh_movement:'हालचाल',
sh_defense:'संरक्षण',
sh_camera:'कॅमेरा',
sh_overlays:'ओव्हरले',
sh_behaviour:'वर्तन',
sh_buttons:'बटणे',
sh_language:'भाषा',
sh_chat:'गप्पा',
sh_waves:'Waves',
sh_steal_a_pet:'पाळीव प्राणी चोरा',
sh_tower:'Tower',
sh_misc_multi:'विविध (मल्टी-मोड)',
s_noclip:'भिंत भेद',
s_fly:'माशी',
s_fly_emotes:'उड्डाण इमोट',
s_base_speed:'मूळ वेग',
s_jump_mult:'उंची उडी',
s_grav_mult:'गुरुत्वाकर्षण',
s_walk_up_walls:'वॉक अप वॉल्स',
s_carry_normalize:'कॅरी स्पीड + जंप',
s_invincibility:'अजेयता',
s_anti_kb:'अँटी-नॉकबॅक',
s_invisible:'अदृश्य',
s_xray_infection:'एक्स-रे (मर्डर मिस्ट्री)',
s_ghost_mode:'भूत मोड',
s_flee_intruder:'घुसपैठियावर पळा',
s_first_person:'प्रथम-व्यक्ती दृश्य',
s_fov_first_person:'FOV (1ले)',
s_fov_third_person:'FOV (3रे)',
s_fov_vertical_mult:'FOV अनुलंब गुणक',
s_auto_lock:'ऑटो-लॉक बेस',
s_auto_fountain:'ऑटो-फाउंटन (१.५×)',
s_daily_coins:'दैनिक नाणी',
s_stars:'तारे',
s_diamonds_tower:'हिरे (टॉवर)',
s_tower_loop:'टॉवर लूप',
s_auto_roll_x25:'ऑटो रोल x25 नशीब',
s_auto_craft:'ऑटो-क्राफ्ट',
s_auto_vip_sword:'आपोआप VIP खरेदी',
s_auto_vip_waves:'आपोआप VIP खरेदी (लाटा)',
s_direct_kill:'डायरेक्ट किल स्पॅम',
s_direct_kill_rate:'किल दर',
s_auto_buy_upgrades:'ऑटो बाय अपग्रेड',
s_boost_coins:'ऑटो अपग्रेड: नाणी',
s_boost_diamonds:'ऑटो अपग्रेड: हिरे',
s_boost_luck:'ऑटो अपग्रेड: नशीब',
s_auto_unlock_areas:'ऑटो अनलॉक क्षेत्रे',
s_auto_rebirth:'स्वयं पुनर्जन्म',
s_auto_join_tp:'टेलीपोर्ट ते सर्वोच्च क्षेत्र',
s_hide_kill_rewards:'किल रिवॉर्ड लपवा',
s_hide_roll_anim:'रोल ॲनिमेशन लपवा',
rng_title:'पाळीव प्राणी RNG फसवणूक',
rng_sec_rolling:'रोलिंग',
rng_sec_crafting:'हस्तकला',
rng_sec_combat:'मुकाबला',
rng_sec_upgrades:'अपग्रेड',
rng_sec_areas:'क्षेत्रे',
rng_actions:'क्रिया',
log_craft:'हस्तकला',
log_success:'यश',
log_fail:'अयशस्वी',
log_unlocking_area:'अनलॉकिंग क्षेत्र',
log_area_unlocked:'क्षेत्र अनलॉक केले',
log_equipped:'सुसज्ज',
log_bought_upgrade:'अपग्रेड विकत घेतले',
log_teleported_to:'यांना टेलिपोर्ट केले',
log_rebirthing:'पुनर्जन्म',
h_rng:'आरएनजी',
h_accts:'खाती',
s_auto_collect:'ऑटो-संकलन कमाई',
s_collect_interval:'संकलन अंतर',
s_chat_fade:'चॅट फेड वेळ',
s_name_colors:'वापरकर्ता नाव रंग',
s_chat_enhance:'चॅट सुधारणा',
mes_hint:'टीप: तुमच्या वापरकर्तानावात "mes" समाविष्ट करा, इंद्रधनुष्य अॅनिमेटेड प्रभावासाठी!',
s_carry_tune:'चोरी सूर',
s_pet_pickup_radius:'प्राणी चोरीची त्रिज्या',
s_carry_vol:'कॅरी व्हॉल्युम',
carry_tune_default:'डीफॉल्ट',
carry_tune_silent:'शांत',
carry_tune_ambient:'एम्बिएंट',
carry_tune_blues:'ब्लूज',
carry_tune_chiptune:'चिपट्यून',
carry_tune_classical:'शास्त्रीय',
carry_tune_electronic:'इलेक्ट्रॉनिक',
carry_tune_epic:'महाकाव्य',
carry_tune_folk:'लोक',
carry_tune_funk:'फंक',
carry_tune_jazz:'जॅझ',
carry_tune_lofi:'लो-फाई',
carry_tune_metal:'मेटल',
carry_tune_pop:'पॉप',
carry_tune_punk:'पंक',
carry_tune_reggae:'रेगे',
carry_tune_rock:'रॉक',
s_cont_cuddle:'सतत कडल',
s_protips:'प्रो टिप्स',
s_hideprotips:'माझ्या प्रो टिप्स लपवा',
s_show_exp_modes:'प्रायोगिक मोड दाखवा',
s_showcoords:'निर्देशांक दाखवा',
s_showfps:'FPS दाखवा',
s_showtargetinfo:'लक्ष्य माहिती दाखवा',
s_showobj:'अस्तित्व / मेष संख्या दर्शवा',
s_copy_dbg:'कॉपी करा',
s_copy_json:'JSON कॉपी करा',
s_clear_dbg:'साफ करा',
h_fly:'उडणे',
h_speed:'वेग हॅक',
h_waypoints:'वेपॉईंट',
h_autolock:'ऑटो-लॉक',
h_invisible:'अदृश्य',
h_cuddle:'कडल',
h_pets:'पाळीव',
h_snipe:'स्नाइप',
h_help:'मदत',
h_settings:'सेटिंग्स',
h_prv:'खाजगी खोली',
h_tc:'टॉवर पूर्ण',
h_tcl:'टॉवर लूप',
kb_fly:'उडणे (टॉगल/वर)',
kb_fly_down:'उडणे खाली',
kb_set_home:'होम सेट',
kb_home:'घर',
kb_back:'मागे',
kb_cuddle:'कडल पॅनेल',
kb_settings:'सेटिंग्स',
kb_pets:'पेट ब्राउझर',
kb_slots:'वेपॉईंट स्लॉट',
kb_snipe:'स्नायपर पॅनेल',
kb_snipe_toggle:'स्नायपर चालू/बंद',
kb_attack:'हल्ला',
kb_help:'मदत / वर्णन',
kb_tower:'टॉवर पूर्ण',
kb_tower_loop:'टॉवर लूप',
kb_invisible:'अदृश्य',
kb_first_person:'प्रथम-व्यक्ती',
kb_autolock:'ऑटो-लॉक बेस',
kb_prv:'खाजगी खोली',
kb_rng:'RNG',
kb_accts:'खाती',
pets_title:'पाळीव प्राणी',
pets_search_placeholder:'उदा. जंगली किटी, सोनेरी किंवा हिरा, (सोनेरी किंवा पन्ना) जंगली',
pets_hint:'शब्द AND ने जोडले जातात. पर्यायासाठी OR, गटासाठी कंस. * किंवा % वाइल्डकार्ड. एखादा शब्द वगळण्यासाठी त्याच्या आधी - ठेवा.',
pets_empty:'या रूममध्ये पाळीव प्राणी सापडले नाहीत',
pt_name:'नाव',
pt_mut:'म्युटेशन',
pt_rar:'दुर्मिळता',
pt_owner:'मालक',
pt_worth:'किंमत',
pt_income:'उत्पन्न/से',
pt_dist:'अंतर',
slots_title:'वेपॉईंट स्लॉट',
sniper_title:'पेट स्नायपर',
sniper_tbl_pet:'पाळीव प्राणी',
sniper_tbl_owner:'मालक',
sniper_tbl_lock:'कुलूप',
sniper_placeholder:'उदा. halo, golden OR diamond, emerald dragon',
sniper_hint:'शब्द AND. पर्यायासाठी OR, गटासाठी कंस. * किंवा % वाइल्डकार्ड. एखादा शब्द वगळण्यासाठी त्याच्या आधी - ठेवा.',
sniper_room_col:'खोली',
sniper_scans_col:'स्कॅन करा',
sniper_top_pet_col:'शीर्ष पाळीव प्राणी',
sniper_top_worth_col:'टॉप वर्थ',
sniper_top_owner_col:'शीर्ष मालक',
sniper_age_col:'वय',
sniper_join_btn:'सामील व्हा',
sniper_full:'भरले',
sniper_join_failed:'लक्ष्य खोली भरली',
sniper_scanning_rooms:'इतर खोल्या शोधत आहे…',
sniper_scan_off:'ऑटो शोधाशोध',
sniper_scan_next:'पुढे स्कॅन करा',
sniper_scan_idle:'निष्क्रिय — स्कॅन करण्याची प्रतीक्षा करत आहे',
sniper_auto_place:'बेसवर स्वयं-ठेव',
sniper_place_desc:'(चोरलेल्या प्राण्याला तुमच्या बेस स्लॉटमध्ये ठेवतो)',
sniper_auto_drop:'वेव्हजमध्ये जुळत नसलेले पाळीव प्राणी ऑटो-ड्रॉप करा',
sniper_drop_desc:'(फिल्टरशी जुळत नसलेले जंगली पाळीव प्राणी ड्रॉप करून स्पॉन पूल रिफ्रेश करते)',
sniper_auto_hunt:'ऑटो शिकार',
sniper_hunt_desc:'(इतर खोल्या स्कॅन करून सर्वोत्तम जुळणीवर जा)',
sniper_auto_sell:'चोरीत ऑटो-विक्री',
sniper_sell_desc:'(बेस भरले असता सर्वात वाईट विका)',
sniper_lockdown:'लॉकडाउन ≤',
sniper_lockdown_hint:'≤ हा वेळ उरलेल्या बेसमधून चोरी. ० = फक्त अनलॉक.',
sniper_join_grace:'कृपेत सामील व्हा',
sniper_start:'सुरू',
sniper_stop:'थांबा',
sniper_idle:'निष्क्रिय',
sniper_no_filter:'फिल्टर नाही',
sniper_waiting:'गेमची वाट...',
sniper_hold_pause:'पेट धरले — विराम',
sniper_stolen_pause:'आमचे पेट आहे — विराम',
sniper_cooldown:'कूलडाउन',
sniper_hopping:'सर्व्हर बदलत आहे...',
sniper_na:'लॉबीत स्नायपर उपलब्ध नाही — आधी गेममध्ये सामील व्हा',
sniper_wait_lock:'लॉक डेटाची वाट...',
sniper_locked:'बेस लॉक — स्कीप...',
sniper_full_eggs:'बेस भरले — फक्त अंडी, विकता येत नाही',
sniper_stealing:'चोरी',
sniper_dropped:'ड्रॉप',
sniper_holding:'धरले',
sniper_place:'बेसवर ठेवा!',
sniper_steal_mode:'[चोरी]',
sniper_theft_nohop:'पेट चोरले जात आहे',
sniper_nohop_suffix:'— हॉप नाही',
sniper_sniping:'स्नाइपिंग:',
sniper_options:'पर्याय',
sniper_drop_fail_status:'ड्रॉप अयशस्वी!',
sniper_hotkey_label:'हॉटकी:',
sniper_panel_label:'पॅनेल:',
sniper_grab_fail:'पकडता आले नाही. पुन्हा प्रयत्न...',
sniper_our_pet_stolen:'आमचे पेट चोरले — ८से कूलडाउन',
sniper_hopping_short:'हॉपिंग...',
sniper_base_full:'बेस भरलेला',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'धावा',
pet_teleport_title:'टेलीपोर्ट',
pet_pickup_title:'उचला',
owner_yours:'तुमचा',
owner_wild:'जंगली',
footer_gf:'स्निग्ध काटा',
copy_ok:'कॉपी केले',
copy_failed:'कॉपी अयशस्वी',
s_invis_on_fly:'उडताना अदृश्य',
snipe_walk_home:'चोरी केल्यानंतर घरी चाला',
snipe_walk_home_desc:'तुमच्या बेसवर परत चाला',
sniper_afk_sell:'AFK न जुळणारे प्राणी विका',
sniper_afk_sell_desc:'(जेव्हा निष्क्रिय 5से, फिल्टरशी जुळत नसलेले प्राणी मूल्यानुसार विका — फक्त लाटा)',
hb_fly:'उड',
hb_lck:'लॉक',
hb_inv:'गायब',
hb_cud:'मिठ',
hb_pet:'पाळ',
hb_snp:'निशा',
hb_cfg:'सेटि',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'खाते',
ban_title:'कनेक्शन ब्लॉक केले',
ban_sub:'तुमचा IP पत्ता Meeland ने प्रतिबंधित केला आहे',
ban_body:'काळजी करू नका — हे सोपे आहे! मोफत VPN तुम्हाला नवीन IP देईल जेणेकरून तुम्ही पुन्हा खेळू शकाल.',
ban_pick:'जलद उपाय — एक निवडा:',
ban_warp:'मोफत, अमर्यादित, एक-क्लिक सेटअप',
ban_warp_store:'App Store आणि Play Store वर "1.1.1.1" म्हणून देखील उपलब्ध',
ban_proton:'डेटा मर्यादा नाही, 5 देश',
ban_steps:'इंस्टॉल करा → कनेक्ट करा → हे पेज रिफ्रेश करा. इतकेच!',
ban_ok:'समजले',
warn_title:'नेहमी VPN वापरा',
warn_body:'नेहमी <b>VPN</b> चालू ठेवून खेळा.',
warn_ok:'समजले',
loading:'लोड होत आहे',
tcl_loading:'टॉवर पूर्ण लूप चालू आहे. थांबवण्यासाठी {key} दाबा.',
hop_search:'सामना शोधत आहे',
hop_match:'{name} सापडले — सामील होत आहे',
hop_flee:'घुसपैठियापासून पळत आहे',
hop_reconnect:'पुन्हा कनेक्ट होत आहे',
hop_reload:'पुन्हा लोड होत आहे',
hop_fall:'पडण्यापासून सावरत आहे',
hop_join:'खोलीत सामील होत आहे',
lock_off:'बंद',
lock_unlocked:'अनलॉक',
desc_intro:'MES तुम्हाला मीलँडमध्ये वॉलहॅक, ऑटो-फार्मिंग, दुर्मिळ पाळीव प्राणी संग्रह, वेग वाढवणे, फ्लाइट, अदृश्यता आणि बरेच काही देते',
desc_free:'१००% मोफत, नेहमी. अभिप्राय आहे? ⭐ सकारात्मक रिव्ह्यू द्या — तेच अपडेट्स चालू ठेवते.',
desc_h_movement:'हालचाल',
desc_h_combat:'युद्ध',
desc_h_tuning:'ट्यूनिंग',
desc_h_pets:'पेट्स & चोरी',
desc_h_economy:'अर्थव्यवस्था',
desc_h_custom:'कस्टमाइझ',
desc_h_extras:'अतिरिक्त',
desc_fly:'उडणे',
desc_fly_d:'Space वर, F खाली. वेग सेट करता येतो.',
desc_speed:'ब्लिंक',
desc_speed_d:'Shift त्वरित टेलिपोर्टसाठी.',
desc_noclip:'भिंत भेद',
desc_noclip_d:'भिंतींमधून चाला.',
desc_walls:'भिंतींवर चाला',
desc_walls_d:'कोणत्याही पृष्ठभागावर चढा.',
desc_waypts:'वेपॉईंट',
desc_waypts_d:'10 स्थाने सेव करा. एक-की टेलिपोर्ट. <kbd>Z</kbd> टॉगल.',
desc_invis:'अदृश्य',
desc_invis_d:'पूर्ण अदृश्य होण्यासाठी CapsLock दाबा.',
desc_fpv:'FPV',
desc_fpv_d:'प्रथम व्यक्ती कॅमेरावर स्विच करण्यासाठी <kbd>.</kbd> दाबा.',
desc_anti_invis:'अँटी-अदृश्य',
desc_anti_invis_d:'अदृश्य खेळाडू भूत म्हणून दिसतात.',
desc_xray:'एक्स-रे दृष्टी',
desc_xray_d:'मर्डर मिस्ट्रीमध्ये भिंतींमधून खेळाडूंना पाहा. लाल = खुनी, हिरवा = नागरी.',
desc_nodeathh:'अमर',
desc_nodeath_d:'सर्व नुकसानीपासून सुरक्षित.',
desc_antikb:'अँटी-नॉकबॅक',
desc_antikb_d:'ढकलता येत नाही.',
desc_attack:'तात्काळ हल्ला',
desc_attack_d:'<kbd>G</kbd> जवळच्या खेळाडूकडे टेलिपोर्ट करून मारतो.',
desc_jumpgrav:'उडी आणि गुरुत्वाकर्षण',
desc_jumpgrav_d:'सेटिंग्जमध्ये समायोज्य गुणक.',
desc_fov:'FOV नियंत्रण',
desc_fov_d:'प्रथम-व्यक्ती आणि तृतीय-व्यक्ती FOV स्लायडर्स.',
desc_autoinvis:'उड्डाणात ऑटो-अदृश्य',
desc_autoinvis_d:'उडताना आपोआप अदृश्य व्हा.',
desc_sniper:'पेट स्नायपर',
desc_sniper_d:'फिल्टर केलेल्या पाळीव प्राण्यांची ऑटो-चोरी. दोन्ही मोड.',
desc_prv:'खाजगी खोली',
desc_prv_d:'<kbd>PgDn</kbd> सध्याच्या मोडमध्ये खाजगी खोली तयार करते आणि आपोआप सामील होते.',
desc_petbrow:'पेट ब्राउझर',
desc_petbrow_d:'<kbd>K</kbd> सर्व पाळीव दाखवतो. क्रमवारी, फिल्टर, पकडा.',
desc_cuddle:'कडल पॅनेल',
desc_cuddle_d:'<kbd>J</kbd> अंतरानुसार खेळाडू. फॉलो करण्यासाठी क्लिक.',
desc_return:'ऑटो परतणे',
desc_return_d:'चोरीनंतर घरी टेलिपोर्ट.',
desc_autolock:'ऑटो-लॉक',
desc_autolock_d:'बेस नेहमी लॉक.',
desc_fountain:'ऑटो-फाउंटन',
desc_fountain_d:'कायम 1.5× नफा. ऑटो-नूतनीकरण.',
desc_money:'मोफत पैसे + तारे + हिरे',
desc_money_d:'जाहिरातींची गरज नाही.',
desc_collect:'ऑटो-संकलन',
desc_collect_d:'पाळीव प्राणी उत्पन्न दर 30 सेकंद.',
desc_music:'कॅरी ट्यून',
desc_music_d:'चोरीच्या वेळी संगीत. 15 शैली.',
desc_chatfade:'चॅट फेड',
desc_chatfade_d:'संदेश दृश्यता नियंत्रित करा. 5–120से.',
desc_emotes:'उडण्याचे इमोट्स',
desc_emotes_d:'उडताना रँडम इमोट्स.',
desc_displays:'प्रदर्शन ओव्हरले',
desc_displays_d:'निर्देशांक, FPS काउंटर आणि लक्ष्य माहिती.',
desc_config:'सेटिंग्ज',
desc_config_d:'<kbd>M</kbd> वैशिष्ट्ये, की, वेग टॉगल.',
desc_langs:'60 भाषा',
desc_langs_d:'संपूर्ण UI भाषांतर.',
desc_tower:'टॉवर पूर्ण',
desc_tower_d:'<kbd>Y</kbd> Obby Tower त्वरित विजय.',
desc_cats:'मांजर लोडिंग स्क्रीन',
desc_cats_d:'गोड मांजरी लोडिंग बदलतात.',
desc_h_install:'इन्स्टॉल',
desc_desktop:'डेस्कटॉप (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> किंवा <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> इन्स्टॉल करा',
desc_inst_click:'वर इन्स्टॉल क्लिक करा',
desc_inst_open:'कोणताही Meeland गेम उघडा — आपोआप काम करतो',
desc_mobile:'मोबाइल (Android)',
desc_mob_ff:'Play Store वरून <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> इन्स्टॉल करा',
desc_mob_addon:'Firefox → मेनू → अॅड-ऑन → <strong>Tampermonkey</strong> इन्स्टॉल',
desc_mob_visit:'Firefox मध्ये हे पेज उघडा आणि इन्स्टॉल टॅप करा',
desc_mob_play:'Meeland खेळा — टच HUD बटणे आपोआप दिसतील',
desc_ios:'iOS: Apple सर्व iOS ब्राउझर्समध्ये (Firefox सह) एक्स्टेन्शन्स ब्लॉक करतो. डेस्कटॉप किंवा Android वापरा.',
desc_h_privacy:'गोपनीयता',
desc_privacy:'फक्त क्लायंट-साइड — कोणताही डेटा ब्राउझर सोडत नाही'
});
_mk('ne','नेपाली',{
close:'✕',
refresh:'↻',
go:'जानुहोस्',
set:'सेट',
auto:'अटो',
empty:'खाली',
help_title:'मद्दत',
players_title:'खेलाडीहरू',
players_empty:'अरू खेलाडी भेटिएन',
settings_title:'सेटिङ्स',
settings_reset:'रिसेट',
tab_gameplay:'गेमप्ले',
tab_economy:'अर्थतन्त्र',
tab_audio:'अडियो',
tab_advanced:'उन्नत',
tab_hud:'HUD',
tab_keys:'कुञ्जीहरू',
tab_accounts:'खाताहरू',
acct_current:'हालको',
acct_new:'नयाँ',
acct_import:'आयात',
acct_switch:'बदल्नुहोस्',
acct_reload:'पुनः लोड गर्नुहोस्',
acct_delete:'हटाउनुहोस्',
acct_cancel:'रद्द गर्नुहोस्',
acct_empty:'खाली',
acct_token_ph:'टोकन',
acct_copy:'कपी',
acct_export:'निर्यात',
acct_rename:'नाम परिवर्तन गर्नुहोस्',
acct_save:'सुरक्षित गर्नुहोस्',
acct_name_len:'नाम 4-12 अक्षरको हुनुपर्छ',
acct_name_fail:'नाम परिवर्तन असफल',
acct_invalid:'अमान्य',
acct_ready:'खाता तयार। Meeland बन्द गर्नुहोस्, IP बदल्नुहोस्, अनि पुनः लोड गर्नुहोस्।',
acct_ip_note:'खाता बदल्दा सधैं VPN प्रयोग गर्नुहोस् र IP बदल्नुहोस्।',
acct_howto:'1. यो खाताको लिंक कपी गर्न कपी क्लिक गर्नुहोस्।\n2. अर्को ब्राउजर वा यन्त्रमा — वा साथीसँग — MES खोल्नुहोस्।\n3. आयात क्लिक गरेर लिंक टाँस्नुहोस्।',
sh_movement:'चलन',
sh_defense:'रक्षा',
sh_camera:'क्यामेरा',
sh_overlays:'ओभरले',
sh_behaviour:'व्यवहार',
sh_buttons:'बटनहरू',
sh_language:'भाषा',
sh_chat:'च्याट',
sh_waves:'Waves',
sh_steal_a_pet:'घरपालुवा जनावर चोर्नुहोस्',
sh_tower:'Tower',
sh_misc_multi:'विविध (मल्टी-मोड)',
s_noclip:'पर्खाल भेदन',
s_fly:'उड्नुहोस्',
s_fly_emotes:'उडान इमोट',
s_base_speed:'आधार गति',
s_jump_mult:'जम्प उचाइ',
s_grav_mult:'गुरुत्वाकर्षण',
s_walk_up_walls:'पर्खाल माथि हिंड्नुहोस्',
s_carry_normalize:'कैरी स्पीड + जम्प',
s_invincibility:'अजेयता',
s_anti_kb:'एन्टी-नकब्याक',
s_invisible:'अदृश्य',
s_xray_infection:'एक्स-रे (मर्डर मिस्ट्री)',
s_ghost_mode:'भूत मोड',
s_flee_intruder:'घुसपैठिएमा भाग्नुहोस्',
s_first_person:'पहिलो-व्यक्ति दृश्य',
s_fov_first_person:'FOV (पहिलो)',
s_fov_third_person:'FOV (तेस्रो)',
s_fov_vertical_mult:'FOV ठाडो गुणक',
s_auto_lock:'अटो-लक बेस',
s_auto_fountain:'अटो-फाउन्टेन (१.५×)',
s_daily_coins:'दैनिक सिक्का',
s_stars:'तारा',
s_diamonds_tower:'हीरा (टावर)',
s_tower_loop:'टावर लूप',
s_auto_roll_x25:'अटो रोल x25 भाग्य',
s_auto_craft:'अटो-क्राफ्ट',
s_auto_vip_sword:'स्वतः VIP किन्नुहोस्',
s_auto_vip_waves:'स्वतः VIP किन्नुहोस् (छालहरू)',
s_direct_kill:'प्रत्यक्ष किल स्प्याम',
s_direct_kill_rate:'किल दर',
s_auto_buy_upgrades:'स्वत: खरीद अपग्रेडहरू',
s_boost_coins:'स्वत: अपग्रेड: सिक्का',
s_boost_diamonds:'स्वत: अपग्रेड: हीरा',
s_boost_luck:'स्वत: अपग्रेड: भाग्य',
s_auto_unlock_areas:'स्वत: अनलक क्षेत्रहरू',
s_auto_rebirth:'स्वत: पुनर्जन्म',
s_auto_join_tp:'उच्चतम क्षेत्रमा टेलिपोर्ट',
s_hide_kill_rewards:'मार्ने पुरस्कारहरू लुकाउनुहोस्',
s_hide_roll_anim:'रोल एनिमेसन लुकाउनुहोस्',
rng_title:'घरपालुवा जनावर RNG धोखाहरू',
rng_sec_rolling:'रोलिङ',
rng_sec_crafting:'क्राफ्टिङ',
rng_sec_combat:'लडाई',
rng_sec_upgrades:'अपग्रेडहरू',
rng_sec_areas:'क्षेत्रहरू',
rng_actions:'कार्यहरू',
log_craft:'शिल्प',
log_success:'सफलता',
log_fail:'असफल',
log_unlocking_area:'अनलक गर्ने क्षेत्र',
log_area_unlocked:'क्षेत्र अनलक',
log_equipped:'सुसज्जित',
log_bought_upgrade:'अपग्रेड खरिद गरियो',
log_teleported_to:'मा टेलिपोर्ट गरियो',
log_rebirthing:'पुनर्जन्म',
h_rng:'RNG।',
h_accts:'खाताहरू',
s_auto_collect:'अटो-सङ्कलन आम्दानी',
s_collect_interval:'सङ्कलन अन्तर',
s_chat_fade:'च्याट फेड समय',
s_name_colors:'प्रयोगकर्ता नाम रंग',
s_chat_enhance:'च्याट सुधार',
mes_hint:'सुझाव: तपाईंको प्रयोगकर्ता नाममा "mes" समावेश गर्नुहोस्, इन्द्रेणी एनिमेटेड प्रभावको लागि!',
s_carry_tune:'क्यारी धुन (चोरी)',
s_pet_pickup_radius:'पालतू चोरीको दूरी',
s_carry_vol:'क्यारी भोलुम',
carry_tune_default:'डिफल्ट',
carry_tune_silent:'मौन',
carry_tune_ambient:'एम्बिएन्ट',
carry_tune_blues:'ब्लुज',
carry_tune_chiptune:'चिपट्युन',
carry_tune_classical:'शास्त्रीय',
carry_tune_electronic:'इलेक्ट्रोनिक',
carry_tune_epic:'महाकाव्य',
carry_tune_folk:'लोक',
carry_tune_funk:'फंक',
carry_tune_jazz:'ज्याज',
carry_tune_lofi:'लो-फाई',
carry_tune_metal:'मेटल',
carry_tune_pop:'पप',
carry_tune_punk:'पंक',
carry_tune_reggae:'रेगे',
carry_tune_rock:'रक',
s_cont_cuddle:'निरन्तर कडल',
s_protips:'प्रो टिप्स',
s_hideprotips:'मेरो प्रो टिप्स लुकाउनुहोस्',
s_show_exp_modes:'प्रयोगात्मक मोडहरू देखाउनुहोस्',
s_showcoords:'निर्देशांक देखाउनुहोस्',
s_showfps:'FPS देखाउनुहोस्',
s_showtargetinfo:'लक्ष्य जानकारी देखाउनुहोस्',
s_showobj:'इकाई देखाउनुहोस् / मेष गणना',
s_copy_dbg:'कपी गर्नुहोस्',
s_copy_json:'JSON कपी गर्नुहोस्',
s_clear_dbg:'खाली गर्नुहोस्',
h_fly:'उड्नुहोस्',
h_speed:'गति ह्याक',
h_waypoints:'वेपोइन्ट',
h_autolock:'अटो-लक',
h_invisible:'अदृश्य',
h_cuddle:'कडल',
h_pets:'पाल्तु',
h_snipe:'स्नाइप',
h_help:'मद्दत',
h_settings:'सेटिङ्स',
h_prv:'निजी कोठा',
h_tc:'टावर पूर्ण',
h_tcl:'टावर लूप',
kb_fly:'उड्नु (टगल/माथि)',
kb_fly_down:'उड्नु तल',
kb_set_home:'होम सेट',
kb_home:'घर',
kb_back:'पछाडि',
kb_cuddle:'कडल प्यानल',
kb_settings:'सेटिङ्स',
kb_pets:'पेट ब्राउजर',
kb_slots:'वेपोइन्ट स्लट',
kb_snipe:'स्नाइपर प्यानल',
kb_snipe_toggle:'स्नाइपर अन/अफ',
kb_attack:'आक्रमण',
kb_help:'मद्दत / विवरण',
kb_tower:'टावर पूर्ण',
kb_tower_loop:'टावर लूप',
kb_invisible:'अदृश्य',
kb_first_person:'पहिलो-व्यक्ति',
kb_autolock:'स्वत: लक आधार',
kb_prv:'निजी कोठा',
kb_rng:'RNG',
kb_accts:'खाताहरू',
pets_title:'पाल्तु जनावर',
pets_search_placeholder:'जस्तै जंगली किट्टी, सुनको वा हीरा, (सुन वा पन्ना) जंगली',
pets_hint:'शब्दहरू AND ले जोडिन्छन्। विकल्पका लागि OR, समूहका लागि कोष्ठक। * वा % वाइल्डकार्ड। कुनै शब्द बहिष्कार गर्न त्यसको अगाडि - राख्नुहोस्।',
pets_empty:'यो कोठामा पाल्तु भेटिएन',
pt_name:'नाम',
pt_mut:'म्युटेसन',
pt_rar:'दुर्लभता',
pt_owner:'मालिक',
pt_worth:'मूल्य',
pt_income:'आम्दानी/से',
pt_dist:'दूरी',
slots_title:'वेपोइन्ट स्लट',
sniper_title:'पेट स्नाइपर',
sniper_tbl_pet:'पाल्तु जनावर',
sniper_tbl_owner:'मालिक',
sniper_tbl_lock:'ताला',
sniper_placeholder:'उदा. halo, golden OR diamond, emerald dragon',
sniper_hint:'शब्दहरू AND। विकल्पका लागि OR, समूहका लागि कोष्ठक। * वा % वाइल्डकार्ड। कुनै शब्द बहिष्कार गर्न त्यसको अगाडि - राख्नुहोस्।',
sniper_room_col:'कोठा',
sniper_scans_col:'स्क्यान',
sniper_top_pet_col:'शीर्ष पाल्तु जनावर',
sniper_top_worth_col:'शीर्ष मूल्य',
sniper_top_owner_col:'शीर्ष मालिक',
sniper_age_col:'उमेर',
sniper_join_btn:'सामेल हुनुहोस्',
sniper_full:'भरिएको',
sniper_join_failed:'लक्ष्य कोठा भरिएको',
sniper_scanning_rooms:'अन्य कोठा खोज्दै…',
sniper_scan_off:'स्वत: शिकार बन्द',
sniper_scan_next:'अर्को स्क्यान भित्र',
sniper_scan_idle:'निष्क्रिय - स्क्यान गर्न पर्खँदै',
sniper_auto_place:'बेसमा स्वत: राख्नुहोस्',
sniper_place_desc:'(चोरिएको पशुलाई तपाईंको बेस स्लटमा राख्छ)',
sniper_auto_drop:'वेभ्समा नमिल्दो घरपालुवा जनावरहरू अटो-ड्रप गर्नुहोस्',
sniper_drop_desc:'(फिल्टरसँग नमिल्ने जङ्गली घरपालुवा ड्रप गरेर स्पन पूल ताजा बनाउँछ)',
sniper_auto_hunt:'अटो शिकार',
sniper_hunt_desc:'(अन्य कोठाहरू स्क्यान गरी उत्तम मिलानमा जानुहोस्)',
sniper_auto_sell:'चोरीमा अटो-बिक्री',
sniper_sell_desc:'(बेस भरिएमा सबैभन्दा खराब बेच)',
sniper_lockdown:'लकडाउन ≤',
sniper_lockdown_hint:'≤ यो समय बाँकी भएका बेसबाट चोरी। ० = अनलक मात्र।',
sniper_join_grace:'अनुग्रहमा सामेल हुनुहोस्',
sniper_start:'सुरु',
sniper_stop:'रोक',
sniper_idle:'निष्क्रिय',
sniper_no_filter:'फिल्टर छैन',
sniper_waiting:'खेलको पर्खाइमा...',
sniper_hold_pause:'पेट समातेको — रोकिएको',
sniper_stolen_pause:'हाम्रो पेट छ — रोकिएको',
sniper_cooldown:'कूलडाउन',
sniper_hopping:'सर्भर बदलिँदैछ...',
sniper_na:'लबीमा स्नाइपर उपलब्ध छैन — पहिले खेलमा सामेल हुनुहोस्',
sniper_wait_lock:'लक डाटाको पर्खाइ...',
sniper_locked:'बेस लक — स्किप...',
sniper_full_eggs:'बेस भरियो — अण्डा मात्र, बेच्न सकिँदैन',
sniper_stealing:'चोरी',
sniper_dropped:'ड्रप',
sniper_holding:'समातेको',
sniper_place:'बेसमा राख्नुहोस्!',
sniper_steal_mode:'[चोरी]',
sniper_theft_nohop:'पेट चोरिँदैछ',
sniper_nohop_suffix:'— हप छैन',
sniper_sniping:'स्नाइपिङ:',
sniper_options:'विकल्पहरू',
sniper_drop_fail_status:'ड्रप असफल!',
sniper_hotkey_label:'हटकी:',
sniper_panel_label:'प्यानल:',
sniper_grab_fail:'समात्न सकिएन। फेरि प्रयास...',
sniper_our_pet_stolen:'हाम्रो पेट चोरियो — ८से कूलडाउन',
sniper_hopping_short:'हपिङ...',
sniper_base_full:'आधार पूर्ण',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'दौड',
pet_teleport_title:'टेलिपोर्ट',
pet_pickup_title:'उठाउनुहोस्',
owner_yours:'तिम्रो',
owner_wild:'जंगली',
footer_gf:'चिल्लो फोर्क',
copy_ok:'प्रतिलिपि गरियो',
copy_failed:'प्रतिलिपि गर्न सकिएन',
s_invis_on_fly:'उड्दा अदृश्य',
snipe_walk_home:'चोरी पछि घर हिंड्नुहोस्',
snipe_walk_home_desc:'आफ्नो बेसमा फर्केर हिंड्नुहोस्',
sniper_afk_sell:'AFK नमिल्ने जनावरहरू बेच्नुहोस्',
sniper_afk_sell_desc:'(जब निष्क्रिय 5से, फिल्टरसँग नमिल्ने जनावरहरू मूल्य अनुसार बेच्नुहोस् — लहर मात्र)',
hb_fly:'उड',
hb_lck:'लक',
hb_inv:'गायब',
hb_cud:'अंग',
hb_pet:'पाल',
hb_snp:'निशा',
hb_cfg:'सेटि',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'खाता',
ban_title:'जडान अवरुद्ध गरियो',
ban_sub:'तपाईंको IP ठेगाना Meeland द्वारा प्रतिबन्धित गरिएको छ',
ban_body:'चिन्ता नगर्नुहोस् — यो सजिलै ठीक हुन्छ! निःशुल्क VPN ले तपाईंलाई नयाँ IP दिनेछ ताकि तपाईं फेरि खेल्न सक्नुहुन्छ।',
ban_pick:'छिटो समाधान — एउटा छान्नुहोस्:',
ban_warp:'निःशुल्क, असीमित, एक-क्लिक सेटअप',
ban_warp_store:'App Store र Play Store मा पनि "1.1.1.1" को रूपमा उपलब्ध',
ban_proton:'कुनै डेटा सीमा छैन, 5 देश',
ban_steps:'इन्स्टल गर्नुहोस् → जडान गर्नुहोस् → यो पृष्ठ रिफ्रेश गर्नुहोस्। त्यति नै हो!',
ban_ok:'बुझें',
warn_title:'सधैं VPN प्रयोग गर्नुहोस्',
warn_body:'सधैं <b>VPN</b> खोलेर खेल्नुहोस्.',
warn_ok:'बुझें',
loading:'लोड हुँदैछ',
tcl_loading:'पूर्ण टावर लूप चलिरहेको छ। रोक्न {key} थिच्नुहोस्।',
hop_search:'म्याच खोज्दै',
hop_match:'{name} भेटियो — जोड्दै',
hop_flee:'घुसपैठिएबाट भाग्दै',
hop_reconnect:'पुनः जोड्दै',
hop_reload:'पुनः लोड हुँदै',
hop_fall:'खसबाट उठ्दै',
hop_join:'कोठामा जोड्दै',
lock_off:'बन्द',
lock_unlocked:'अनलक',
desc_intro:'MES ले तपाईंलाई Meeland मा वालह्याक, स्वत: खेती, दुर्लभ पाल्तु जनावर सङ्कलन, गति वृद्धि, उडान, अदृश्यता, र थप कुराहरू दिन्छ।',
desc_free:'१००% निःशुल्क, सधैँ। प्रतिक्रिया छ? ⭐ सकारात्मक समीक्षा दिनुहोस् — यही अपडेट जारी राख्छ।',
desc_h_movement:'गति',
desc_h_combat:'युद्ध',
desc_h_tuning:'ट्युनिङ',
desc_h_pets:'पेट & चोरी',
desc_h_economy:'अर्थतन्त्र',
desc_h_custom:'कस्टमाइज',
desc_h_extras:'थप',
desc_fly:'उडान',
desc_fly_d:'Space माथि, F तल। गति समायोज्य।',
desc_speed:'ब्लिंक',
desc_speed_d:'Shift तुरुन्त टेलिपोर्ट।',
desc_noclip:'पर्खाल भेदन',
desc_noclip_d:'भित्ताबाट हिंड्नुहोस्।',
desc_walls:'भित्तामा हिँड्नुहोस्',
desc_walls_d:'कुनै पनि सतहमा चढ्नुहोस्।',
desc_waypts:'वेपोइन्ट',
desc_waypts_d:'10 स्थान सेभ। एक-कुञ्जी टेलिपोर्ट। <kbd>Z</kbd> टगल।',
desc_invis:'अदृश्य',
desc_invis_d:'पूर्ण अदृश्य हुन CapsLock थिच्नुहोस्।',
desc_fpv:'FPV',
desc_fpv_d:'पहिलो व्यक्ति क्यामेरामा स्विच गर्न <kbd>.</kbd> थिच्नुहोस्।',
desc_anti_invis:'एन्टी-अदृश्य',
desc_anti_invis_d:'अदृश्य खेलाडीलाई भूतको रूपमा हेर्नुहोस्।',
desc_xray:'एक्स-रे दृष्टि',
desc_xray_d:'मर्डर मिस्ट्रीमा भित्ताहरू मार्फत खेलाडीहरू हेर्नुहोस्। रातो = हत्यारा, हरियो = नागरिक।',
desc_nodeathh:'अमर',
desc_nodeath_d:'सबै क्षतिबाट सुरक्षित।',
desc_antikb:'एन्टी-नकब्याक',
desc_antikb_d:'धक्का दिन सकिन्न।',
desc_attack:'तत्काल आक्रमण',
desc_attack_d:'<kbd>G</kbd> नजिकको खेलाडीमा टेलिपोर्ट गरी हान्छ।',
desc_jumpgrav:'जम्प र गुरुत्वाकर्षण',
desc_jumpgrav_d:'सेटिङमा समायोज्य गुणक।',
desc_fov:'FOV नियन्त्रण',
desc_fov_d:'प्रथम-व्यक्ति र तृतीय-व्यक्ति FOV स्लाइडर।',
desc_autoinvis:'उडानमा स्वतः-अदृश्य',
desc_autoinvis_d:'उड्दा स्वचालित रूपमा अदृश्य हुनुहोस्।',
desc_sniper:'पेट स्नाइपर',
desc_sniper_d:'फिल्टर गरिएका पाल्तु जनावरको ऑटो-चोरी। दुवै मोड।',
desc_prv:'निजी कोठा',
desc_prv_d:'<kbd>PgDn</kbd> हालको मोडमा निजी कोठा सिर्जना गर्छ र स्वतः सामेल हुन्छ।',
desc_petbrow:'पेट ब्राउजर',
desc_petbrow_d:'<kbd>K</kbd> सबै पाल्तु देखाउँछ। क्रमबद्ध, फिल्टर, समात्नुहोस्।',
desc_cuddle:'कडल प्यानल',
desc_cuddle_d:'<kbd>J</kbd> दूरी अनुसार खेलाडी। फलो गर्न क्लिक।',
desc_return:'ऑटो फिर्ता',
desc_return_d:'चोरीपछि घर टेलिपोर्ट।',
desc_autolock:'अटो-लक',
desc_autolock_d:'बेस सधैँ लक।',
desc_fountain:'अटो-फाउन्टेन',
desc_fountain_d:'स्थायी 1.5× नाफा। ऑटो-नवीकरण।',
desc_money:'निःशुल्क पैसा + तारा + हीरा',
desc_money_d:'विज्ञापन आवश्यक छैन।',
desc_collect:'ऑटो-संकलन',
desc_collect_d:'पाल्तु आम्दानी हरेक 30 सेकेन्ड।',
desc_music:'क्यारी ट्यून',
desc_music_d:'चोरीको समयमा संगीत। 15 शैली।',
desc_chatfade:'च्याट फेड',
desc_chatfade_d:'सन्देश दृश्यता नियन्त्रण। 5–120से.',
desc_emotes:'उड़ान इमोट',
desc_emotes_d:'उड़दा र्यान्डम इमोट।',
desc_displays:'प्रदर्शन ओभरले',
desc_displays_d:'निर्देशांक, FPS काउन्टर र लक्ष्य जानकारी।',
desc_config:'सेटिङ्स',
desc_config_d:'<kbd>M</kbd> फीचर, कुञ्जी, गति टगल।',
desc_langs:'60 भाषा',
desc_langs_d:'पूर्ण UI अनुवाद।',
desc_tower:'टावर पूर्ण',
desc_tower_d:'<kbd>Y</kbd> Obby Tower तुरुन्त जित।',
desc_cats:'बिरालो लोडिङ स्क्रिन',
desc_cats_d:'प्यारा बिरालाहरूले लोडिङ प्रतिस्थापन गर्छन्।',
desc_h_install:'स्थापना',
desc_desktop:'डेस्कटप (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> वा <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> स्थापना गर्नुहोस्',
desc_inst_click:'माथि स्थापना क्लिक गर्नुहोस्',
desc_inst_open:'कुनै पनि Meeland खेल खोल्नुहोस् — आफैं काम गर्छ',
desc_mobile:'मोबाइल (Android)',
desc_mob_ff:'Play Store बाट <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> स्थापना गर्नुहोस्',
desc_mob_addon:'Firefox → मेनु → एड-अन → <strong>Tampermonkey</strong> स्थापना',
desc_mob_visit:'Firefox मा यो पृष्ठ हेर्नुहोस् र स्थापना ट्याप गर्नुहोस्',
desc_mob_play:'Meeland खेल्नुहोस् — टच HUD बटन स्वचालित देखिन्छन्',
desc_ios:'iOS: Apple ले सबै iOS ब्राउजरमा (Firefox सहित) एक्स्टेन्सन ब्लक गर्छ। डेस्कटप वा Android ब्राउजर प्रयोग गर्नुहोस्।',
desc_h_privacy:'गोपनीयता',
desc_privacy:'क्लाइन्ट-साइड मात्र — कुनै डाटा ब्राउजर छोड्दैन'
});
_mk('si','සිංහල',{
close:'✕',
refresh:'↻',
go:'යන්න',
set:'සකසන්න',
auto:'ස්වයං',
empty:'හිස්',
help_title:'උපකාරය',
players_title:'ක්රීඩකයෝ',
players_empty:'වෙනත් ක්රීඩකයන් හමු නොවීය',
settings_title:'සැකසුම්',
settings_reset:'නැවත සකසන්න',
tab_gameplay:'ක්රීඩාව',
tab_economy:'ආර්ථිකය',
tab_audio:'ශ්රව්ය',
tab_advanced:'උසස්',
tab_hud:'HUD',
tab_keys:'යතුරු',
tab_accounts:'ගිණුම්',
acct_current:'වත්මන්',
acct_new:'නව',
acct_import:'ආයාත',
acct_switch:'මාරු කරන්න',
acct_reload:'නැවත පූරණය',
acct_delete:'මකන්න',
acct_cancel:'අවලංගු',
acct_empty:'හිස්',
acct_token_ph:'ටෝකන්',
acct_copy:'පිටපත්',
acct_export:'අපනයන',
acct_rename:'නම වෙනස් කරන්න',
acct_save:'සුරකින්න',
acct_name_len:'නම 4-12 අකුරු විය යුතුය',
acct_name_fail:'නම වෙනස් කිරීම අසාර්ථකයි',
acct_invalid:'වලංගු නොවේ',
acct_ready:'ගිණුම සූදානම්. Meeland වසන්න, IP මාරු කර, පසුව නැවත පූරණය කරන්න.',
acct_ip_note:'ගිණුම වෙනස් කිරීමේදී සැමවිටම VPN භාවිතා කර IP මාරු කරන්න.',
acct_howto:'1. මෙම ගිණුමේ සබැඳිය පිටපත් කිරීමට පිටපත් ක්ලික් කරන්න.\n2. වෙනත් බ්රව්සරයක හෝ උපාංගයක — හෝ මිතුරෙකු සමඟ — MES විවෘත කරන්න.\n3. ආයාත ක්ලික් කර සබැඳිය අලවන්න.',
sh_movement:'චලනය',
sh_defense:'ආරක්ෂාව',
sh_camera:'කැමරා',
sh_overlays:'අතිච්ඡාදන',
sh_behaviour:'හැසිරීම',
sh_buttons:'බොත්තම්',
sh_language:'භාෂාව',
sh_chat:'කතාබස් කරන්න',
sh_waves:'Waves',
sh_steal_a_pet:'සුරතල් සතෙකු සොරකම් කරන්න',
sh_tower:'Tower',
sh_misc_multi:'විවිධ (බහු-මාදිලිය)',
s_noclip:'බිත්ති හරහා',
s_fly:'පියාසර කරන්න',
s_fly_emotes:'පියාසැරි ඉමෝට්',
s_base_speed:'මූලික වේගය',
s_jump_mult:'උස පැනීම',
s_grav_mult:'ගුරුත්වාකර්ෂණය',
s_walk_up_walls:'බිත්ති ඉහළට ඇවිදින්න',
s_carry_normalize:'රැගෙන යාමේ වේගය + පැනීම',
s_invincibility:'අනාරක්ෂිතභාවය',
s_anti_kb:'ප්රති-පිරිබලය',
s_invisible:'අදෘශ්ය',
s_xray_infection:'X-Ray (ඝාතන අභියහස)',
s_ghost_mode:'අවතාර මාදිලිය',
s_flee_intruder:'ආක්රමණිකයෙකු සිටින විට පලා යන්න',
s_first_person:'පළමු පුද්ගල දර්ශනය',
s_fov_first_person:'FOV (1වන)',
s_fov_third_person:'FOV (3වන)',
s_fov_vertical_mult:'FOV සිරස් ගුණකය',
s_auto_lock:'ස්වයං-අගුළු පදනම',
s_auto_fountain:'ස්වයං-උල්පත (1.5×)',
s_daily_coins:'දෛනික කාසි',
s_stars:'තරු',
s_diamonds_tower:'දියමන්ති (කුළුණ)',
s_tower_loop:'ටවර් ලූප්',
s_auto_roll_x25:'ස්වයං රෝල් x25 වාසනාව',
s_auto_craft:'ස්වයං-ක්රාෆ්ට්',
s_auto_vip_sword:'ස්වයං VIP මිලදී ගන්න',
s_auto_vip_waves:'ස්වයං VIP මිලදී ගන්න (රළ)',
s_direct_kill:'සෘජු කිල් ස්පෑම්',
s_direct_kill_rate:'කිල් අනුපාතය',
s_auto_buy_upgrades:'ස්වයංක්රීය මිලදී ගැනීම් වැඩිදියුණු කිරීම්',
s_boost_coins:'ස්වයංක්රීය උත්ශ්රේණි කිරීම: කාසි',
s_boost_diamonds:'ස්වයංක්රීය උත්ශ්රේණි කිරීම: දියමන්ති',
s_boost_luck:'ස්වයංක්රීය උත්ශ්රේණි කිරීම: වාසනාව',
s_auto_unlock_areas:'ස්වයංක්රීය අගුළු හැරීමේ ප්රදේශ',
s_auto_rebirth:'ස්වයංක්රීය පුනර්ජීවනය',
s_auto_join_tp:'ඉහළම ප්රදේශයට ටෙලිපෝට්',
s_hide_kill_rewards:'Kill Rewards සඟවන්න',
s_hide_roll_anim:'රෝල් සජීවිකරණය සඟවන්න',
rng_title:'සුරතල් සතුන් RNG වංචා',
rng_sec_rolling:'පෙරළීම',
rng_sec_crafting:'අත්කම් නිර්මාණ',
rng_sec_combat:'සටන් කරන්න',
rng_sec_upgrades:'වැඩිදියුණු කිරීම්',
rng_sec_areas:'ප්රදේශ',
rng_actions:'ක්රියාවන්',
log_craft:'අත්කම්',
log_success:'සාර්ථකයි',
log_fail:'අසාර්ථකයි',
log_unlocking_area:'අගුළු හැරීමේ ප්රදේශය',
log_area_unlocked:'ප්රදේශය අගුලු හරින ලදී',
log_equipped:'සන්නද්ධ',
log_bought_upgrade:'උසස් කිරීම මිලදී ගත්තා',
log_teleported_to:'වෙත ටෙලිපෝට් කරන ලදී',
log_rebirthing:'නැවත ඉපදීම',
h_rng:'ng',
h_accts:'ගිණුම්',
s_auto_collect:'ස්වයං-එකතු ආදායම',
s_collect_interval:'එකතු කිරීමේ පරතරය',
s_chat_fade:'කතාබස් නොපෙනෙන කාලය',
s_name_colors:'පරිශීලක නාම වර්ණ',
s_chat_enhance:'චැට් වැඩිදියුණු කිරීම්',
mes_hint:'ඉඟිය: ඔබේ පරිශීලක නාමයට "mes" ඇතුළත් කරන්න, දේදුනු සජීවී ආචරණය සඳහා!',
s_carry_tune:'රැගෙනයාමේ ගීතය (සොරකම)',
s_pet_pickup_radius:'සුරතල් සොරකම් ද',
s_carry_vol:'රැගෙන යාමේ ශබ්ද',
carry_tune_default:'පෙරනිමිය',
carry_tune_silent:'නිශ්ශබ්ද',
carry_tune_ambient:'ඇම්බියන්ට්',
carry_tune_blues:'බ්ලූස්',
carry_tune_chiptune:'චිප්ටියුන්',
carry_tune_classical:'සම්භාව්ය',
carry_tune_electronic:'ඉලෙක්ට්රොනිකල',
carry_tune_epic:'ශ්රේෂ්ඨ',
carry_tune_folk:'ජන',
carry_tune_funk:'ෆංක්',
carry_tune_jazz:'ජෑස්',
carry_tune_lofi:'ලෝ-ෆෙයි',
carry_tune_metal:'මෙටල්',
carry_tune_pop:'පොප්',
carry_tune_punk:'පංක්',
carry_tune_reggae:'රෙගේ',
carry_tune_rock:'රොක්',
s_cont_cuddle:'අඛණ්ඩ කඩල්',
s_protips:'ප්රෝ ඉඟි',
s_hideprotips:'මගේ ප්රෝ ඉඟි සඟවන්න',
s_show_exp_modes:'පර්යේෂණාත්මක මාතයන් පෙන්වන්න',
s_showcoords:'ඛණ්ඩාංක පෙන්වන්න',
s_showfps:'FPS පෙන්වන්න',
s_showtargetinfo:'ඉලක්ක තොරතුරු පෙන්වන්න',
s_showobj:'ආයතනය / දැල් ගණන පෙන්වන්න',
s_copy_dbg:'පිටපත් කරන්න',
s_copy_json:'JSON පිටපත් කරන්න',
s_clear_dbg:'මකන්න',
h_fly:'පියාසර',
h_speed:'වේග හැක්',
h_waypoints:'වේපොයින්ට්',
h_autolock:'ස්වයං-අගුළු',
h_invisible:'අදෘශ්ය',
h_cuddle:'කඩල්',
h_pets:'සතුන්',
h_snipe:'ස්නයිප්',
h_help:'උපකාරය',
h_settings:'සැකසුම්',
h_prv:'පෞද්ගලික කාමරය',
h_tc:'කුළුණ සම්පූර්ණ',
h_tcl:'ටවර් ලූප්',
kb_fly:'පියාසර (මාරු/ඉහළ)',
kb_fly_down:'පියාසර පහළට',
kb_set_home:'නිවස සකසන්න',
kb_home:'නිවස',
kb_back:'ආපසු',
kb_cuddle:'කඩල් පැනලය',
kb_settings:'සැකසුම්',
kb_pets:'සතුන් බ්රවුසරය',
kb_slots:'වේපොයින්ට් ස්ලොට්',
kb_snipe:'ස්නයිපර් පැනලය',
kb_snipe_toggle:'ස්නයිපර් සක්රිය/අක්රිය',
kb_attack:'ප්රහාරය',
kb_help:'උපකාරය / විස්තරය',
kb_tower:'කුළුණ සම්පූර්ණ',
kb_tower_loop:'ටවර් ලූප්',
kb_invisible:'අදෘශ්ය',
kb_first_person:'පළමු පුද්ගල',
kb_autolock:'ස්වයං-අගුළු පදනම',
kb_prv:'පෞද්ගලික කාමරය',
kb_rng:'RNG',
kb_accts:'ගිණුම්',
pets_title:'සතුන්',
pets_search_placeholder:'උදා. වල් කිටී, රන්වන් හෝ දියමන්ති, (රන් හෝ මරකත) වල්',
pets_hint:'වචන AND වලින් එක්වේ. විකල්ප සඳහා OR, කණ්ඩායම් සඳහා වරහන්. * හෝ % වයිල්ඩ්කාඩ්. වචනයක් බැහැර කිරීමට ඉදිරියෙන් - දමන්න.',
pets_empty:'මෙම කාමරයේ සතුන් හමු නොවීය',
pt_name:'නම',
pt_mut:'විකෘතිය',
pt_rar:'දුර්ලභතාව',
pt_owner:'හිමිකරු',
pt_worth:'වටිනාකම',
pt_income:'ආදායම/තත්',
pt_dist:'දුර',
slots_title:'වේපොයින්ට් ස්ලොට්',
sniper_title:'සතුන් ස්නයිපර්',
sniper_tbl_pet:'සුරතල්',
sniper_tbl_owner:'හිමිකරු',
sniper_tbl_lock:'අගුළු දමන්න',
sniper_placeholder:'උදා. halo, golden OR diamond, emerald dragon',
sniper_hint:'වචන AND. විකල්ප සඳහා OR, කණ්ඩායම් සඳහා වරහන්. * හෝ % වයිල්ඩ්කාඩ්. වචනයක් බැහැර කිරීමට ඉදිරියෙන් - දමන්න.',
sniper_room_col:'කාමරය',
sniper_scans_col:'ස්කෑන්',
sniper_top_pet_col:'ඉහළම සුරතල්',
sniper_top_worth_col:'ඉහලම වටිනවා',
sniper_top_owner_col:'ඉහළම හිමිකරු',
sniper_age_col:'වයස',
sniper_join_btn:'එක්වන්න',
sniper_full:'පිරී ඇත',
sniper_join_failed:'ඉලක්ක කාමරය පිරී ඇත',
sniper_scanning_rooms:'වෙනත් කාමර සොයමින්…',
sniper_scan_off:'ස්වයංක්රීයව දඩයම් කිරීම',
sniper_scan_next:'ඊළඟට ස්කෑන් කරන්න',
sniper_scan_idle:'Idle - ස්කෑන් කිරීමට බලා සිටීම',
sniper_auto_place:'මූලස්ථානයේ ස්වයංක්රීයව තබන්න',
sniper_place_desc:'(සොරකම් කළ සතා ඔබේ මූලස්ථාන ස්ලොට්ටේ තබයි)',
sniper_auto_drop:'වේව්ස්හි නොගැලපෙන සුරතල් සතුන් ස්වයං-ඩ්රොප් කරන්න',
sniper_drop_desc:'(පෙරහනට නොගැලපෙන වන සතුන් ඩ්රොප් කර ස්පෝන් තටාකය නැවුම් කරයි)',
sniper_auto_hunt:'ස්වයං-දඩයම්',
sniper_hunt_desc:'(වෙනත් කාමර ස්කෑන් කර හොඳම ගැළපීමට යන්න)',
sniper_auto_sell:'සොරකමේ ස්වයං-විකුණුම',
sniper_sell_desc:'(පදනම පිරුණු විට අඩුම එක විකුණන්න)',
sniper_lockdown:'අගුළු ≤',
sniper_lockdown_hint:'≤ මෙම කාලය ඉතිරිව ඇති පදනම්වලින් සොරකම. 0 = අගුළු නැති ඒවා පමණි.',
sniper_join_grace:'කරුණාවට එක්වන්න',
sniper_start:'ආරම්භ',
sniper_stop:'නවත්වන්න',
sniper_idle:'නිශ්ක්රිය',
sniper_no_filter:'පෙරහනක් නැත',
sniper_waiting:'ක්රීඩාව බලාපොරොත්තුවෙන්...',
sniper_hold_pause:'සතෙකු අල්ලාගෙන — විරාමය',
sniper_stolen_pause:'අපේ සතා සිටී — විරාමය',
sniper_cooldown:'සිසිල් කාලය',
sniper_hopping:'සර්වර් මාරුවෙමින්...',
sniper_na:'ලොබියේ ස්නයිපර් නැත — පළමුව ක්රීඩාවට එක්වන්න',
sniper_wait_lock:'අගුළු දත්ත බලාපොරොත්තුවෙන්...',
sniper_locked:'පදනම අගුළු — මඟහැරීම...',
sniper_full_eggs:'පදනම පිරී — බිත්තර පමණි, විකුණන්න බැහැ',
sniper_stealing:'සොරකම',
sniper_dropped:'ඩ්රොප්',
sniper_holding:'අල්ලාගෙන',
sniper_place:'පදනමේ තබන්න!',
sniper_steal_mode:'[සොරකම]',
sniper_theft_nohop:'සතා සොරකම් කෙරෙමින්',
sniper_nohop_suffix:'— හොප් නැත',
sniper_sniping:'ස්නයිපිං:',
sniper_options:'විකල්ප',
sniper_drop_fail_status:'ඩ්රොප් අසාර්ථකයි!',
sniper_hotkey_label:'හොට්කී:',
sniper_panel_label:'පැනලය:',
sniper_grab_fail:'අල්ලාගැනීම අසාර්ථකයි. නැවත උත්සාහ...',
sniper_our_pet_stolen:'අපේ සතා සොරකම් විය — 8තත් සිසිල්',
sniper_hopping_short:'හොපිං...',
sniper_base_full:'පදනම පිරී ඇත',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'දිවීම',
pet_teleport_title:'ටෙලිපෝට්',
pet_pickup_title:'අවුලා ගන්න',
owner_yours:'ඔබේ',
owner_wild:'වල්',
footer_gf:'ග්රීස් ෆෝක්',
copy_ok:'පිටපත් කර ඇත',
copy_failed:'පිටපත් කිරීම අසාර්ථක විය',
s_invis_on_fly:'පියාසර කරන විට අදෘශ්ය',
snipe_walk_home:'සොරකම් කිරීමෙන් පසු ගෙදර ඇවිදින්න',
snipe_walk_home_desc:'ඔබේ කඳවුරට ආපසු ඇවිදින්න',
sniper_afk_sell:'AFK නොගැලපෙන සතුන් විකුණන්න',
sniper_afk_sell_desc:'(අක්රිය විට 5තත්, පෙරහනට නොගැලපෙන සතුන් අගය අනුව විකුණන්න — රළ පමණි)',
hb_fly:'පිය',
hb_lck:'ලොක',
hb_inv:'නොප',
hb_cud:'වැළ',
hb_pet:'සතු',
hb_snp:'නිශ',
hb_cfg:'සැක',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ගිණුම',
ban_title:'සම්බන්ධතාවය අවහිර කරන ලදී',
ban_sub:'ඔබේ IP ලිපිනය Meeland විසින් සීමා කර ඇත',
ban_body:'කරදර නොවන්න — මෙය පහසුවෙන් නිවැරදි කළ හැකිය! නොමිලේ VPN එකක් ඔබට නව IP එකක් ලබා දෙනු ඇත, එවිට ඔබට නැවත ක්රීඩා කළ හැකිය.',
ban_pick:'ඉක්මන් විසඳුම — එකක් තෝරන්න:',
ban_warp:'නොමිලේ, අසීමිත, එක-ක්ලික් සැකසුම',
ban_warp_store:'App Store සහ Play Store හි "1.1.1.1" ලෙසද ලබා ගත හැකිය',
ban_proton:'දත්ත සීමාවක් නැත, රටවල් 5ක්',
ban_steps:'ස්ථාපනය කරන්න → සම්බන්ධ වන්න → මෙම පිටුව නැවත පූරණය කරන්න. ඒ තමයි!',
ban_ok:'තේරුණා',
warn_title:'සෑම විටම VPN භාවිතා කරන්න',
warn_body:'සෑම විටම <b>VPN</b> සක්රීය කර සෙල්ලම් කරන්න.',
warn_ok:'තේරුණා',
loading:'පූරණය වෙමින්',
tcl_loading:'සම්පූර්ණ කුළුණු ලූපය ක්රියාත්මක වේ. නැවැත්වීමට {key} ඔබන්න.',
hop_search:'තරගය සොයමින්',
hop_match:'{name} හමු විය — සම්බන්ධ වෙමින්',
hop_flee:'ආක්රමණිකයාගෙන් පලා යමින්',
hop_reconnect:'නැවත සම්බන්ධ වෙමින්',
hop_reload:'නැවත පූරණය වෙමින්',
hop_fall:'වැටීමෙන් යථා තත්ත්වයට පත් වෙමින්',
hop_join:'කාමරයට සම්බන්ධ වෙමින්',
lock_off:'අක්රිය',
lock_unlocked:'අගුළු හරිනලදි',
desc_intro:'MES ඔබට වෝල්හැක්, ස්වයංක්රීය ගොවිතැන් කිරීම, දුර්ලභ සුරතල් සතුන් එකතු කිරීම, වේගය වැඩි කිරීම, පියාසර කිරීම, නොපෙනීම සහ තවත් දේ මීලන්ඩ් හි ලබා දෙයි',
desc_free:'100% නොමිලේ, සැමවිටම. ප්රතිපෝෂණ? ⭐ ධනාත්මක සමාලෝචනයක් තබන්න — එයින් යාවත්කාලීන පවත්වාගෙන යනු ලැබේ.',
desc_h_movement:'චලනය',
desc_h_combat:'සටන',
desc_h_tuning:'සුසර කිරීම',
desc_h_pets:'සතුන් & සොරකම',
desc_h_economy:'ආර්ථිකය',
desc_h_custom:'අභිරුචිකරණය',
desc_h_extras:'අමතර',
desc_fly:'පියාසර',
desc_fly_d:'Space ඉහළට, F පහළට. වේගය සැකසිය හැක.',
desc_speed:'බ්ලින්ක්',
desc_speed_d:'Shift ක්ෂණික ටෙලිපෝට්.',
desc_noclip:'බිත්ති හරහා',
desc_noclip_d:'බිත්ති හරහා යන්න.',
desc_walls:'බිත්ති මත ඇවිදින්න',
desc_walls_d:'ඕනෑම මතුපිටක් නගින්න.',
desc_waypts:'වේපොයින්ට්',
desc_waypts_d:'ස්ථාන 10ක් සුරකින්න. එක්-යතුරු ටෙලිපෝට්. <kbd>Z</kbd> ටොගල.',
desc_invis:'අදෘශ්ය',
desc_invis_d:'සම්පූර්ණයෙන් අතුරුදහන් වීමට CapsLock ඔබන්න.',
desc_fpv:'FPV',
desc_fpv_d:'පළමු පුද්ගල කැමරාවට මාරු වීමට <kbd>.</kbd> ඔබන්න.',
desc_anti_invis:'ප්රති-අදෘශ්ය',
desc_anti_invis_d:'අදෘශ්ය ක්රීඩකයින් අවතාරයන් ලෙස බලන්න.',
desc_xray:'එක්ස් කිරණ දැක්ම',
desc_xray_d:'මිනීමැරුම් අභිරහස තුළ බිත්ති හරහා ක්රීඩකයින් බලන්න. රතු = මිනීමැරුවා, කොළ = සිවිල්.',
desc_nodeathh:'අමරණීය',
desc_nodeath_d:'සියලු හානිවලින් නිදහස්.',
desc_antikb:'ප්රති-නොක්බැක්',
desc_antikb_d:'තල්ලු කළ නොහැක.',
desc_attack:'ක්ෂණික ප්රහාරය',
desc_attack_d:'<kbd>G</kbd> ළඟම ක්රීඩකයා වෙත ටෙලිපෝට් වී පහර දෙයි.',
desc_jumpgrav:'පැනීම සහ ගුරුත්වාකර්ෂණය',
desc_jumpgrav_d:'සැකසුම් තුළ සකස් කළ හැකි ගුණක.',
desc_fov:'FOV පාලනය',
desc_fov_d:'පළමු සහ තෙවන පුද්ගල FOV ස්ලයිඩර.',
desc_autoinvis:'පියාසරයේදී ස්වයං-අදෘශ්ය',
desc_autoinvis_d:'පියාසර කරන විට ස්වයංක්රීයව අදෘශ්ය වන්න.',
desc_sniper:'සතුන් ස්නයිපර්',
desc_sniper_d:'පෙරූ සතුන් ස්වයංක්රීය සොරකම. මාදිලි දෙකම.',
desc_prv:'පෞද්ගලික කාමරය',
desc_prv_d:'<kbd>PgDn</kbd> වත්මන් ක්රමයේ පෞද්ගලික කාමරයක් නිර්මාණය කරයි, ස්වයංක්රීයව සම්බන්ධ වෙයි.',
desc_petbrow:'සතුන් බ්රවුසරය',
desc_petbrow_d:'<kbd>K</kbd> සියලු සතුන් පෙන්වයි. වර්ග, පෙරනය, අල්ලන්න.',
desc_cuddle:'කඩල් පැනලය',
desc_cuddle_d:'<kbd>J</kbd> දුර අනුව ක්රීඩකයින්. අනුගමනයට ක්ලික්.',
desc_return:'ස්වයං ආපසු',
desc_return_d:'සොරකමින් පසු නිවසට ටෙලිපෝට්.',
desc_autolock:'ස්වයං-අගුළු',
desc_autolock_d:'බේස් සැමවිටම අගුලු.',
desc_fountain:'ස්වයං-උල්පත',
desc_fountain_d:'ස්ථිර 1.5× ලාභය. ස්වයං-අලුත්වැඩියාව.',
desc_money:'නොමිලේ මුදල් + තරු + දියමන්ති',
desc_money_d:'දැන්වීම් අවශ්ය නැත.',
desc_collect:'ස්වයං-එකතු',
desc_collect_d:'සතු ආදායම සෑම තත්පර 30කම.',
desc_music:'කැරි ටියුන්',
desc_music_d:'සොරකම් කරන විට සංගීතය. ශෛලි 15ක්.',
desc_chatfade:'චැට් ෆේඩ්',
desc_chatfade_d:'පණිවිඩ දෘශ්යතාව පාලනය. 5–120s.',
desc_emotes:'පියාසර ඉමෝට්',
desc_emotes_d:'පියාසර කරන විට අහඹු ඉමෝට්.',
desc_displays:'තිර උඩින් ආවරණ',
desc_displays_d:'ඛණ්ඩාංක, FPS කවුන්ටරය සහ ඉලක්ක තොරතුරු.',
desc_config:'සැකසුම්',
desc_config_d:'<kbd>M</kbd> විශේෂාංග, යතුරු, වේගය ටොගල.',
desc_langs:'භාෂා 60ක්',
desc_langs_d:'සම්පූර්ණ UI පරිවර්තනය.',
desc_tower:'කුළුණ සම්පූර්ණ',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ක්ෂණික ජයග්රහණය.',
desc_cats:'බළල් පැටවීමේ තිර',
desc_cats_d:'හුරුබුහුටි බළලුන් පැටවීම ප්රතිස්ථාපනය කරයි.',
desc_h_install:'ස්ථාපනය',
desc_desktop:'ඩෙස්ක්ටොප් (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> හෝ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ස්ථාපනය කරන්න',
desc_inst_click:'ඉහළ ස්ථාපනය ක්ලික් කරන්න',
desc_inst_open:'ඕනෑම Meeland ක්රීඩාවක් විවෘත කරන්න — ස්වයංක්රීයව ක්රියාත්මක',
desc_mobile:'ජංගම (Android)',
desc_mob_ff:'Play Store වෙතින් <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ස්ථාපනය',
desc_mob_addon:'Firefox → මෙනු → ඇඩෝන → <strong>Tampermonkey</strong> ස්ථාපනය',
desc_mob_visit:'Firefox තුළ මෙම පිටුව බලා ස්ථාපනය තට්ටු කරන්න',
desc_mob_play:'Meeland ක්රීඩා කරන්න — ස්පර්ශ HUD බොත්තම් ස්වයංක්රීයව පෙනේ',
desc_ios:'iOS: Apple සියලුම iOS බ්රවුසරවල (Firefox ඇතුළු) දිගු අවහිර කරයි. ඩෙස්ක්ටොප් හෝ Android භාවිතා කරන්න.',
desc_h_privacy:'පෞද්ගලිකත්වය',
desc_privacy:'ක්ලයන්ට්-පැත්ත පමණි — කිසිදු දත්තයක් බ්රවුසරයෙන් පිටවන්නේ නැත'
});
_mk('ta','தமிழ்',{
close:'✕',
refresh:'↻',
go:'செல்',
set:'அமை',
auto:'தானியங்கி',
empty:'காலி',
help_title:'உதவி',
players_title:'வீரர்கள்',
players_empty:'பிற வீரர்கள் காணப்படவில்லை',
settings_title:'அமைப்புகள்',
settings_reset:'மீட்டமை',
tab_gameplay:'விளையாட்டு',
tab_economy:'பொருளாதாரம்',
tab_audio:'ஆடியோ',
tab_advanced:'மேம்பட்ட',
tab_hud:'HUD',
tab_keys:'விசைகள்',
tab_accounts:'கணக்குகள்',
acct_current:'தற்போதைய',
acct_new:'புதிய',
acct_import:'இறக்குமதி',
acct_switch:'மாற்று',
acct_reload:'மீண்டும் ஏற்று',
acct_delete:'நீக்கு',
acct_cancel:'ரத்து',
acct_empty:'காலி',
acct_token_ph:'டோக்கன்',
acct_copy:'நகலெடு',
acct_export:'ஏற்றுமதி',
acct_rename:'மறுபெயரிடு',
acct_save:'சேமி',
acct_name_len:'பெயர் 4-12 எழுத்துகள் இருக்க வேண்டும்',
acct_name_fail:'மறுபெயரிடல் தோல்வியடைந்தது',
acct_invalid:'தவறானது',
acct_ready:'கணக்கு தயார். Meeland-ஐ மூடி, IP மாற்றி, பின்னர் மீண்டும் ஏற்றவும்.',
acct_ip_note:'கணக்கை மாற்றும்போது எப்போதும் VPN பயன்படுத்தி IP ஐ மாற்றவும்.',
acct_howto:'1. இந்தக் கணக்கின் இணைப்பை நகலெடுக்க நகல் என்பதைக் கிளிக் செய்யவும்.\n2. வேறொரு உலாவியிலோ சாதனத்திலோ — அல்லது நண்பருடன் — MES-ஐத் திறக்கவும்.\n3. இறக்குமதி என்பதைக் கிளிக் செய்து இணைப்பை ஒட்டவும்.',
sh_movement:'நகர்வு',
sh_defense:'பாதுகாப்பு',
sh_camera:'கேமரா',
sh_overlays:'மேலடுக்குகள்',
sh_behaviour:'நடத்தை',
sh_buttons:'பொத்தான்கள்',
sh_language:'மொழி',
sh_chat:'அரட்டை',
sh_waves:'Waves',
sh_steal_a_pet:'செல்லப்பிராணியை திருடு',
sh_tower:'Tower',
sh_misc_multi:'இதர (பல முறைகள்)',
s_noclip:'சுவர் ஊடுருவல்',
s_fly:'பறக்க',
s_fly_emotes:'பறக்கும் எமோட்',
s_base_speed:'அடிப்படை வேகம்',
s_jump_mult:'தாவி உயரம்',
s_grav_mult:'புவியீர்ப்பு',
s_walk_up_walls:'வாக் அப் சுவர்கள்',
s_carry_normalize:'கேரி ஸ்பீட் + ஜம்ப்',
s_invincibility:'அழியாமை',
s_anti_kb:'எதிர்-நாக்பேக்',
s_invisible:'கண்ணுக்கு தெரியாத',
s_xray_infection:'எக்ஸ்-ரே (கொலை மர்மம்)',
s_ghost_mode:'பேய் முறை',
s_flee_intruder:'ஊடுருவலில் ஓடு',
s_first_person:'முதல் நபர் பார்வை',
s_fov_first_person:'FOV (1வது)',
s_fov_third_person:'FOV (3வது)',
s_fov_vertical_mult:'FOV செங்குத்து பெருக்கி',
s_auto_lock:'தானியங்கி-பூட்டு தளம்',
s_auto_fountain:'தானியங்கி-நீரூற்று (1.5×)',
s_daily_coins:'தினசரி நாணயங்கள்',
s_stars:'நட்சத்திரங்கள்',
s_diamonds_tower:'வைரங்கள் (டவர்)',
s_tower_loop:'டவர் லூப்',
s_auto_roll_x25:'தானியங்கி ரோல் x25 அதிர்ஷ்டம்',
s_auto_craft:'தானியங்கி கிராஃப்ட்',
s_auto_vip_sword:'தானியங்கி VIP வாங்குதல்',
s_auto_vip_waves:'தானியங்கி VIP வாங்குதல் (அலைகள்)',
s_direct_kill:'நேரடி கில் ஸ்பேம்',
s_direct_kill_rate:'கில் விகிதம்',
s_auto_buy_upgrades:'ஆட்டோ வாங்க மேம்படுத்தல்கள்',
s_boost_coins:'தானியங்கு மேம்படுத்தல்: நாணயங்கள்',
s_boost_diamonds:'தானியங்கு மேம்படுத்தல்: வைரங்கள்',
s_boost_luck:'தானியங்கு மேம்படுத்தல்: அதிர்ஷ்டம்',
s_auto_unlock_areas:'தானாக திறத்தல் பகுதிகள்',
s_auto_rebirth:'ஆட்டோ மறுபிறப்பு',
s_auto_join_tp:'மிக உயர்ந்த பகுதிக்கு டெலிபோர்ட்',
s_hide_kill_rewards:'கில் ரிவார்டுகளை மறை',
s_hide_roll_anim:'ரோல் அனிமேஷனை மறை',
rng_title:'செல்லப்பிராணிகள் RNG ஏமாற்றுக்காரர்கள்',
rng_sec_rolling:'உருளும்',
rng_sec_crafting:'கைவினை',
rng_sec_combat:'போர்',
rng_sec_upgrades:'மேம்படுத்துகிறது',
rng_sec_areas:'பகுதிகள்',
rng_actions:'செயல்கள்',
log_craft:'கைவினை',
log_success:'வெற்றி',
log_fail:'தோல்வி',
log_unlocking_area:'திறக்கும் பகுதி',
log_area_unlocked:'பகுதி திறக்கப்பட்டது',
log_equipped:'பொருத்தப்பட்ட',
log_bought_upgrade:'மேம்படுத்தல் வாங்கப்பட்டது',
log_teleported_to:'க்கு டெலிபோர்ட் செய்யப்பட்டது',
log_rebirthing:'மறுபிறப்பு',
h_rng:'ng',
h_accts:'கணக்குகள்',
s_auto_collect:'தானியங்கி-சேகரிப்பு வருமானம்',
s_collect_interval:'சேகரிப்பு இடைவெளி',
s_chat_fade:'அரட்டை மறையும் நேரம்',
s_name_colors:'பயனர் பெயர் நிறங்கள்',
s_chat_enhance:'அரட்டை மேம்பாடுகள்',
mes_hint:'உதவிக்குறிப்பு: வானவில் அனிமேஷன் விளைவுக்கு உங்கள் பயனர் பெயரில் "mes" ஐச் சேர்க்கவும்!',
s_carry_tune:'கேரி ட்யூன் (திருடு)',
s_pet_pickup_radius:'செல்லப்பிராணி திருடும் ஆரம்',
s_carry_vol:'கேரி ஒலியளவு',
carry_tune_default:'இயல்புநிலை',
carry_tune_silent:'அமைதி',
carry_tune_ambient:'ஆம்பியன்ட்',
carry_tune_blues:'புளூஸ்',
carry_tune_chiptune:'சிப்ட்யூன்',
carry_tune_classical:'செவ்வியல்',
carry_tune_electronic:'மின்னணு',
carry_tune_epic:'இதிகாசம்',
carry_tune_folk:'நாட்டுப்புற',
carry_tune_funk:'ஃபங்க்',
carry_tune_jazz:'ஜாஸ்',
carry_tune_lofi:'லோ-ஃபை',
carry_tune_metal:'மெட்டல்',
carry_tune_pop:'பாப்',
carry_tune_punk:'பங்க்',
carry_tune_reggae:'ரெக்கே',
carry_tune_rock:'ராக்',
s_cont_cuddle:'தொடர் கட்டில்',
s_protips:'நிபுணர் குறிப்புகள்',
s_hideprotips:'என் நிபுணர் குறிப்புகளை மறை',
s_show_exp_modes:'சோதனை முறைகளை காட்டு',
s_showcoords:'ஆயங்களை காட்டு',
s_showfps:'FPS ஐக் காட்டு',
s_showtargetinfo:'இலக்கு தகவலைக் காட்டு',
s_showobj:'பொருள் / மெஷ் எண்ணிக்கையைக் காட்டு',
s_copy_dbg:'நகலெடு',
s_copy_json:'JSON நகலெடு',
s_clear_dbg:'அழி',
h_fly:'பறப்பு',
h_speed:'வேக ஹாக்',
h_waypoints:'வழிப்புள்ளிகள்',
h_autolock:'தானியங்கி-பூட்டு',
h_invisible:'கண்ணுக்கு தெரியாத',
h_cuddle:'கட்டில்',
h_pets:'செல்லங்கள்',
h_snipe:'ஸ்னைப்',
h_help:'உதவி',
h_settings:'அமைப்புகள்',
h_prv:'தனியார் அறை',
h_tc:'டவர் முடிப்பு',
h_tcl:'டவர் லூப்',
kb_fly:'பறப்பு (மாற்று/மேலே)',
kb_fly_down:'பறப்பு கீழே',
kb_set_home:'வீடு அமை',
kb_home:'வீடு',
kb_back:'பின்',
kb_cuddle:'கட்டில் பேனல்',
kb_settings:'அமைப்புகள்',
kb_pets:'செல்லம் உலாவி',
kb_slots:'வழிப்புள்ளி ஸ்லாட்',
kb_snipe:'ஸ்னைப்பர் பேனல்',
kb_snipe_toggle:'ஸ்னைப்பர் ஆன்/ஆஃப்',
kb_attack:'தாக்குதல்',
kb_help:'உதவி / விளக்கம்',
kb_tower:'டவர் முடிப்பு',
kb_tower_loop:'டவர் லூப்',
kb_invisible:'கண்ணுக்கு தெரியாத',
kb_first_person:'முதல் நபர்',
kb_autolock:'ஆட்டோ-லாக் பேஸ்',
kb_prv:'தனியார் அறை',
kb_rng:'RNG',
kb_accts:'கணக்குகள்',
pets_title:'செல்லங்கள்',
pets_search_placeholder:'எ.கா. காட்டு கிட்டி, தங்கம் அல்லது வைரம், (தங்கம் அல்லது மரகதம்) காட்டு',
pets_hint:'சொற்கள் AND ஆல் இணைக்கப்படும். மாற்றுக்கு OR, குழுவாக அடைப்புக்குறி. * அல்லது % வைல்ட்கார்டு. ஒரு வார்த்தையை விலக்க அதன் முன் - இடவும்.',
pets_empty:'இந்த அறையில் செல்லங்கள் காணப்படவில்லை',
pt_name:'பெயர்',
pt_mut:'மாற்றம்',
pt_rar:'அரிதான',
pt_owner:'உரிமையாளர்',
pt_worth:'மதிப்பு',
pt_income:'வருமானம்/வி',
pt_dist:'தூரம்',
slots_title:'வழிப்புள்ளி ஸ்லாட்',
sniper_title:'செல்லம் ஸ்னைப்பர்',
sniper_tbl_pet:'செல்லப்பிராணி',
sniper_tbl_owner:'உரிமையாளர்',
sniper_tbl_lock:'பூட்டு',
sniper_placeholder:'எ.கா. halo, golden OR diamond, emerald dragon',
sniper_hint:'சொற்கள் AND. மாற்றுக்கு OR, குழுவாக அடைப்பு. * அல்லது % வைல்ட்கார்டு. ஒரு வார்த்தையை விலக்க அதன் முன் - இடவும்.',
sniper_room_col:'அறை',
sniper_scans_col:'ஸ்கேன் செய்கிறது',
sniper_top_pet_col:'மேல் செல்லப்பிராணி',
sniper_top_worth_col:'உயர் மதிப்பு',
sniper_top_owner_col:'மேல் உரிமையாளர்',
sniper_age_col:'வயது',
sniper_join_btn:'சேர்',
sniper_full:'நிரம்பியது',
sniper_join_failed:'இலக்கு அறை நிரம்பியது',
sniper_scanning_rooms:'மற்ற அறைகளைத் தேடுகிறது…',
sniper_scan_off:'தானாக வேட்டையாடுதல்',
sniper_scan_next:'அடுத்து ஸ்கேன் செய்யவும்',
sniper_scan_idle:'செயலற்றது - ஸ்கேன் செய்ய காத்திருக்கிறது',
sniper_auto_place:'தளத்தில் தானியங்கி வைக்கவும்',
sniper_place_desc:'(திருடிய செல்லப்பிராணியை உங்கள் தள இடத்தில் வைக்கிறது)',
sniper_auto_drop:'வேவ்ஸில் பொருந்தாத செல்லப்பிராணிகளை தானியங்கி-டிராப் செய்யவும்',
sniper_drop_desc:'(வடிகட்டியுடன் பொருந்தாத காட்டு செல்லப்பிராணிகளை டிராப் செய்து ஸ்பான் குளத்தைப் புதுப்பிக்கிறது)',
sniper_auto_hunt:'தானியங்கி வேட்டை',
sniper_hunt_desc:'(மற்ற அறைகளை ஸ்கேன் செய்து சிறந்த பொருத்தத்திற்குச் செல்லவும்)',
sniper_auto_sell:'திருட்டில் தானியங்கி-விற்பனை',
sniper_sell_desc:'(தளம் நிரம்பினால் மோசமானதை விற்கவும்)',
sniper_lockdown:'பூட்டு ≤',
sniper_lockdown_hint:'≤ இந்த நேரம் மீதமுள்ள தளங்களில் திருட்டு. 0 = பூட்டாதவை மட்டும்.',
sniper_join_grace:'அருள் சேருங்கள்',
sniper_start:'தொடங்கு',
sniper_stop:'நிறுத்து',
sniper_idle:'செயலிழப்பு',
sniper_no_filter:'வடிகட்டி இல்லை',
sniper_waiting:'விளையாட்டு காத்திருக்கிறது...',
sniper_hold_pause:'செல்லம் பிடிக்கப்பட்டது — இடைநிறுத்தம்',
sniper_stolen_pause:'நம் செல்லம் உள்ளது — இடைநிறுத்தம்',
sniper_cooldown:'கூல்டவுன்',
sniper_hopping:'சர்வர் மாறுகிறது...',
sniper_na:'லாபியில் ஸ்னைப்பர் இல்லை — முதலில் விளையாட்டில் சேர்',
sniper_wait_lock:'பூட்டு தரவு காத்திருக்கிறது...',
sniper_locked:'தளம் பூட்டு — தவிர்...',
sniper_full_eggs:'தளம் நிரம்பியது — முட்டைகள் மட்டும், விற்க முடியாது',
sniper_stealing:'திருட்டு',
sniper_dropped:'டிராப்',
sniper_holding:'பிடிக்கப்பட்டது',
sniper_place:'தளத்தில் வை!',
sniper_steal_mode:'[திருட்டு]',
sniper_theft_nohop:'செல்லம் திருடப்படுகிறது',
sniper_nohop_suffix:'— ஹாப் இல்லை',
sniper_sniping:'ஸ்னைப்பிங்:',
sniper_options:'விருப்பங்கள்',
sniper_drop_fail_status:'டிராப் தோல்வி!',
sniper_hotkey_label:'ஹாட்கீ:',
sniper_panel_label:'பேனல்:',
sniper_grab_fail:'பிடிக்க தோல்வி. மீண்டும் முயற்சி...',
sniper_our_pet_stolen:'நம் செல்லம் திருடப்பட்டது — 8வி கூல்டவுன்',
sniper_hopping_short:'ஹாப்பிங்...',
sniper_base_full:'அடிப்படை நிரம்பியது',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ஓட்டம்',
pet_teleport_title:'டெலிபோர்ட்',
pet_pickup_title:'எடு',
owner_yours:'உங்களுடையது',
owner_wild:'காட்டு',
footer_gf:'க்ரீஸ் ஃபோர்க்',
copy_ok:'நகலெடுக்கப்பட்டது',
copy_failed:'நகலெடுக்க முடியவில்லை',
s_invis_on_fly:'பறக்கும்போது கண்ணுக்குத் தெரியாத',
snipe_walk_home:'திருடிய பிறகு வீட்டிற்கு நட',
snipe_walk_home_desc:'உங்கள் தளத்திற்கு திரும்பி நடக்கவும்',
sniper_afk_sell:'AFK பொருந்தாத செல்லப்பிராணிகளை விற்க',
sniper_afk_sell_desc:'(செயலற்ற நிலையில் 5வி, வடிகட்டியுடன் பொருந்தாத செல்லப்பிராணிகளை மதிப்பின் படி விற்க — அலைகள் மட்டும்)',
hb_fly:'பற',
hb_lck:'பூட',
hb_inv:'மறை',
hb_cud:'கட',
hb_pet:'செல',
hb_snp:'நிச',
hb_cfg:'செட',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'கணக்கு',
ban_title:'இணைப்பு தடுக்கப்பட்டது',
ban_sub:'உங்கள் IP முகவரி Meeland ஆல் கட்டுப்படுத்தப்பட்டுள்ளது',
ban_body:'கவலைப்படாதீர்கள் — இதை சரிசெய்வது எளிது! இலவச VPN உங்களுக்கு புதிய IP வழங்கும், நீங்கள் மீண்டும் விளையாடலாம்.',
ban_pick:'விரைவான தீர்வு — ஒன்றை தேர்ந்தெடுங்கள்:',
ban_warp:'இலவசம், வரம்பற்றது, ஒரு-கிளிக் நிறுவல்',
ban_warp_store:'App Store மற்றும் Play Store இல் "1.1.1.1" என்றும் கிடைக்கும்',
ban_proton:'தரவு வரம்பு இல்லை, 5 நாடுகள்',
ban_steps:'நிறுவு → இணை → இந்தப் பக்கத்தை புதுப்பி. அவ்வளவுதான்!',
ban_ok:'புரிந்தது',
warn_title:'எப்போதும் VPN பயன்படுத்தவும்',
warn_body:'எப்போதும் <b>VPN</b> இயக்கி விளையாடுங்கள்.',
warn_ok:'புரிந்தது',
loading:'ஏற்றுகிறது',
tcl_loading:'முழு டவர் லூப் இயங்குகிறது. நிறுத்த {key} அழுத்தவும்.',
hop_search:'போட்டி தேடுகிறது',
hop_match:'{name} கண்டறியப்பட்டது — இணைகிறது',
hop_flee:'ஊடுருவலில் இருந்து தப்பிக்கிறது',
hop_reconnect:'மீண்டும் இணைக்கிறது',
hop_reload:'மீண்டும் ஏற்றுகிறது',
hop_fall:'வீழ்ச்சியிலிருந்து மீள்கிறது',
hop_join:'அறையில் இணைகிறது',
lock_off:'ஆஃப்',
lock_unlocked:'திறக்கப்பட்டது',
desc_intro:'MES உங்களுக்கு வால்ஹேக், தானியங்கு விவசாயம், அரிய செல்லப்பிராணிகள் சேகரிப்பு, வேக அதிகரிப்பு, விமானம், கண்ணுக்குத் தெரியாதது மற்றும் பலவற்றை மீலாண்டில் வழங்குகிறது',
desc_free:'100% இலவசம், எப்போதும். கருத்து உள்ளதா? ⭐ நேர்மறை மதிப்பாய்வு இடுங்கள் — அதுவே புதுப்பிப்புகளை தொடர வைக்கும்.',
desc_h_movement:'இயக்கம்',
desc_h_combat:'போர்',
desc_h_tuning:'டியூனிங்',
desc_h_pets:'செல்லங்கள் & திருட்டு',
desc_h_economy:'பொருளாதாரம்',
desc_h_custom:'தனிப்பயன்',
desc_h_extras:'கூடுதல்',
desc_fly:'பறப்பு',
desc_fly_d:'Space மேலே, F கீழே. வேகம் அமைக்கலாம்.',
desc_speed:'ப்ளிங்க்',
desc_speed_d:'Shift உடனடி டெலிபோர்ட்.',
desc_noclip:'சுவர் ஊடுருவல்',
desc_noclip_d:'சுவர்கள் வழியே நடக்கவும்.',
desc_walls:'சுவர்களில் நடக்க',
desc_walls_d:'எந்த மேற்பரப்பிலும் ஏறு.',
desc_waypts:'வழிப்புள்ளிகள்',
desc_waypts_d:'10 நிலைகள் சேமிக்கவும். ஒரு-கீ டெலிபோர்ட். <kbd>Z</kbd> டாகிள்.',
desc_invis:'கண்ணுக்கு தெரியாத',
desc_invis_d:'முழுமையாக மறைய CapsLock ஐ அழுத்தவும்.',
desc_fpv:'FPV',
desc_fpv_d:'முதல் நபர் கேமராவுக்கு மாற <kbd>.</kbd> அழுத்தவும்.',
desc_anti_invis:'எதிர்-கண்ணுக்கு தெரியாமை',
desc_anti_invis_d:'கண்ணுக்கு தெரியாத வீரர்களை ஆவிகளாகப் பாருங்கள்.',
desc_xray:'எக்ஸ்-ரே பார்வை',
desc_xray_d:'கொலை மர்மத்தில் சுவர்கள் வழியாக வீரர்களைப் பார்க்கவும். சிவப்பு = கொலைக்காரன், பச்சை = குடிமகன்.',
desc_nodeathh:'அழிவற்ற',
desc_nodeath_d:'அனைத்து சேதத்திலிருந்தும் தடுப்பு.',
desc_antikb:'ஆன்டி-நாக்பேக்',
desc_antikb_d:'தள்ள முடியாது.',
desc_attack:'உடனடி தாக்குதல்',
desc_attack_d:'<kbd>G</kbd> அருகிலுள்ள வீரரிடம் டெலிபோர்ட் செய்து அடிக்கும்.',
desc_jumpgrav:'தாவல் மற்றும் ஈர்ப்பு',
desc_jumpgrav_d:'அமைப்புகளில் சரிசெய்யக்கூடிய பெருக்கிகள்.',
desc_fov:'FOV கட்டுப்பாடு',
desc_fov_d:'முதல் நபர் மற்றும் மூன்றாம் நபர் FOV ஸ்லைடர்கள்.',
desc_autoinvis:'பறக்கும்போது தானியங்கி மறைவு',
desc_autoinvis_d:'பறக்கும்போது தானாகவே கண்ணுக்கு தெரியாமல் மறையுங்கள்.',
desc_sniper:'செல்லம் ஸ்னைப்பர்',
desc_sniper_d:'வடிகட்டிய செல்லப்பிராணி ஆட்டோ-திருட்டு. இரண்டு மோட்கள்.',
desc_prv:'தனியார் அறை',
desc_prv_d:'<kbd>PgDn</kbd> தற்போதைய பயன்பாட்டில் தனியார் அறையை உருவாக்குகிறது மற்றும் தானாக சேரும்.',
desc_petbrow:'செல்லம் உலாவி',
desc_petbrow_d:'<kbd>K</kbd> எல்லா செல்லப்பிராணிகளையும் காட்டுகிறது. வரிசைப்படுத்து, வடிகட்டு, பிடி.',
desc_cuddle:'கட்டில் பேனல்',
desc_cuddle_d:'<kbd>J</kbd> தூரம் அடிப்படையில் வீரர்கள். பின்தொடர கிளிக்.',
desc_return:'ஆட்டோ திரும்பு',
desc_return_d:'திருட்டுக்குப் பிறகு வீட்டிற்கு டெலிபோர்ட்.',
desc_autolock:'தானியங்கி-பூட்டு',
desc_autolock_d:'பேஸ் எப்போதும் பூட்டு.',
desc_fountain:'தானியங்கி-நீரூற்று',
desc_fountain_d:'நிரந்தர 1.5× லாபம். ஆட்டோ-புதுப்பிப்பு.',
desc_money:'இலவச பணம் + நட்சத்திரங்கள் + வைரங்கள்',
desc_money_d:'விளம்பரங்கள் தேவையில்லை.',
desc_collect:'ஆட்டோ-சேகரிப்பு',
desc_collect_d:'செல்லப்பிராணி வருமானம் ஒவ்வொரு 30 வினாடி.',
desc_music:'கேரி ட்யூன்',
desc_music_d:'திருடும்போது இசை. 15 வகைகள்.',
desc_chatfade:'சாட் ஃபேட்',
desc_chatfade_d:'செய்தி தெரிவுநிலை கட்டுப்படுத்து. 5–120s.',
desc_emotes:'ஃப்ளை எமோட்ஸ்',
desc_emotes_d:'பறக்கும்போது சீரற்ற எமோட்ஸ்.',
desc_displays:'திரை மேலடுக்குகள்',
desc_displays_d:'ஆயத்தொலைகள், FPS கவுண்டர் மற்றும் இலக்கு தகவல்.',
desc_config:'அமைப்புகள்',
desc_config_d:'<kbd>M</kbd> அம்சங்கள், விசைகள், வேகம் மாற்று.',
desc_langs:'60 மொழிகள்',
desc_langs_d:'முழு UI மொழிபெயர்ப்பு.',
desc_tower:'டவர் முடிப்பு',
desc_tower_d:'<kbd>Y</kbd> Obby Tower உடனடி வெற்றி.',
desc_cats:'பூனை ஏற்றுதல் திரைகள்',
desc_cats_d:'அழகான பூனைகள் ஏற்றுதலை மாற்றும்.',
desc_h_install:'நிறுவல்',
desc_desktop:'டெஸ்க்டாப் (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> அல்லது <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> நிறுவுங்கள்',
desc_inst_click:'மேலே நிறுவல் கிளிக் செய்யுங்கள்',
desc_inst_open:'எந்த Meeland விளையாட்டையும் திறக்கவும் — தானாகவே வேலை செய்யும்',
desc_mobile:'மொபைல் (Android)',
desc_mob_ff:'Play Store இலிருந்து <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> நிறுவுங்கள்',
desc_mob_addon:'Firefox → மெனு → நீட்சிகள் → <strong>Tampermonkey</strong> நிறுவல்',
desc_mob_visit:'Firefox இல் இந்த பக்கத்தை பார்த்து நிறுவல் தட்டுங்கள்',
desc_mob_play:'Meeland விளையாடுங்கள் — டச் HUD பொத்தான்கள் தானாக தோன்றும்',
desc_ios:'iOS: Apple எல்லா iOS உலாவிகளிலும் (Firefox உட்பட) நீட்சிகளை தடுக்கிறது. டெஸ்க்டாப் அல்லது Android பயன்படுத்துங்கள்.',
desc_h_privacy:'தனியுரிமை',
desc_privacy:'கிளையன்ட்-சைடு மட்டும் — எந்த தரவும் உலாவியை விட்டு வெளியேறாது'
});
_mk('te','తెలుగు',{
close:'✕',
refresh:'↻',
go:'వెళ్ళు',
set:'సెట్',
auto:'ఆటో',
empty:'ఖాళీ',
help_title:'సహాయం',
players_title:'ఆటగాళ్ళు',
players_empty:'ఇతర ఆటగాళ్ళు కనబడలేదు',
settings_title:'సెట్టింగ్స్',
settings_reset:'రీసెట్',
tab_gameplay:'గేమ్ప్లే',
tab_economy:'ఆర్థిక',
tab_audio:'ఆడియో',
tab_advanced:'అధునాతన',
tab_hud:'HUD',
tab_keys:'కీలు',
tab_accounts:'ఖాతాలు',
acct_current:'ప్రస్తుతం',
acct_new:'కొత్త',
acct_import:'దిగుమతి',
acct_switch:'మార్చు',
acct_reload:'మళ్లీ లోడ్',
acct_delete:'తొలగించు',
acct_cancel:'రద్దు',
acct_empty:'ఖాళీ',
acct_token_ph:'టోకెన్',
acct_copy:'కాపీ',
acct_export:'ఎగుమతి',
acct_rename:'పేరు మార్చండి',
acct_save:'సేవ్ చేయండి',
acct_name_len:'పేరు 4-12 అక్షరాలుగా ఉండాలి',
acct_name_fail:'పేరు మార్చడం విఫలమైంది',
acct_invalid:'చెల్లదు',
acct_ready:'ఖాతా సిద్ధం. Meeland మూసివేసి, IP మార్చి, ఆపై మళ్లీ లోడ్ చేయండి.',
acct_ip_note:'ఖాతా మార్చేటప్పుడు ఎల్లప్పుడూ VPN ఉపయోగించి IP మార్చండి.',
acct_howto:'1. ఈ ఖాతా లింక్ను కాపీ చేయడానికి కాపీ క్లిక్ చేయండి.\n2. మరొక బ్రౌజర్లో లేదా పరికరంలో — లేదా స్నేహితుడితో — MES తెరవండి.\n3. దిగుమతి క్లిక్ చేసి లింక్ను అతికించండి.',
sh_movement:'కదలిక',
sh_defense:'రక్షణ',
sh_camera:'కెమెరా',
sh_overlays:'ఓవర్లేలు',
sh_behaviour:'ప్రవర్తన',
sh_buttons:'బటన్లు',
sh_language:'భాష',
sh_chat:'చాట్ చేయండి',
sh_waves:'Waves',
sh_steal_a_pet:'పెంపుడు జంతువును దొంగిలించు',
sh_tower:'Tower',
sh_misc_multi:'ఇతర (మల్టీ-మోడ్)',
s_noclip:'గోడ భేదం',
s_fly:'ఫ్లై',
s_fly_emotes:'ఎగిరే ఎమోట్',
s_base_speed:'మూల వేగం',
s_jump_mult:'జంప్ ఎత్తు',
s_grav_mult:'గురుత్వాకర్షణ',
s_walk_up_walls:'వాక్ అప్ వాల్స్',
s_carry_normalize:'క్యారీ స్పీడ్ + జంప్',
s_invincibility:'అజేయత్వం',
s_anti_kb:'యాంటీ-నాక్బ్యాక్',
s_invisible:'అగోచరం',
s_xray_infection:'ఎక్స్-రే (మర్డర్ మిస్టరీ)',
s_ghost_mode:'దెయ్యం మోడ్',
s_flee_intruder:'చొరబాటుదారు ఉంటే పారిపో',
s_first_person:'మొదటి వ్యక్తి వీక్షణ',
s_fov_first_person:'FOV (1వ)',
s_fov_third_person:'FOV (3వ)',
s_fov_vertical_mult:'FOV నిలువు గుణకం',
s_auto_lock:'ఆటో-లాక్ బేస్',
s_auto_fountain:'ఆటో-ఫౌంటెన్ (1.5×)',
s_daily_coins:'రోజువారీ నాణేలు',
s_stars:'నక్షత్రాలు',
s_diamonds_tower:'వజ్రాలు (టవర్)',
s_tower_loop:'టవర్ లూప్',
s_auto_roll_x25:'ఆటో రోల్ x25 అదృష్టం',
s_auto_craft:'ఆటో-క్రాఫ్ట్',
s_auto_vip_sword:'ఆటో VIP కొనుగోలు',
s_auto_vip_waves:'ఆటో VIP కొనుగోలు (అలలు)',
s_direct_kill:'డైరెక్ట్ కిల్ స్పామ్',
s_direct_kill_rate:'కిల్ రేట్',
s_auto_buy_upgrades:'ఆటో కొనుగోలు అప్గ్రేడ్లు',
s_boost_coins:'ఆటో అప్గ్రేడ్: నాణేలు',
s_boost_diamonds:'ఆటో అప్గ్రేడ్: డైమండ్స్',
s_boost_luck:'ఆటో అప్గ్రేడ్: అదృష్టం',
s_auto_unlock_areas:'ఆటో అన్లాక్ ప్రాంతాలు',
s_auto_rebirth:'ఆటో పునర్జన్మ',
s_auto_join_tp:'అత్యధిక ప్రాంతానికి టెలిపోర్ట్ చేయండి',
s_hide_kill_rewards:'కిల్ రివార్డ్లను దాచండి',
s_hide_roll_anim:'రోల్ యానిమేషన్ను దాచండి',
rng_title:'పెంపుడు జంతువులు RNG చీట్స్',
rng_sec_rolling:'రోలింగ్',
rng_sec_crafting:'క్రాఫ్టింగ్',
rng_sec_combat:'పోరాటం',
rng_sec_upgrades:'అప్గ్రేడ్లు',
rng_sec_areas:'ప్రాంతాలు',
rng_actions:'చర్యలు',
log_craft:'క్రాఫ్ట్',
log_success:'విజయం',
log_fail:'ఫెయిల్',
log_unlocking_area:'అన్లాకింగ్ ప్రాంతం',
log_area_unlocked:'ప్రాంతం అన్లాక్ చేయబడింది',
log_equipped:'అమర్చారు',
log_bought_upgrade:'అప్గ్రేడ్ని కొనుగోలు చేశారు',
log_teleported_to:'టెలిపోర్ట్ చేయబడింది',
log_rebirthing:'పునర్జన్మ',
h_rng:'ng',
h_accts:'ఖాతాలు',
s_auto_collect:'ఆటో-సేకరణ ఆదాయం',
s_collect_interval:'సేకరణ విరామం',
s_chat_fade:'చాట్ ఫేడ్ సమయం',
s_name_colors:'వినియోగదారు పేరు రంగులు',
s_chat_enhance:'చాట్ మెరుగుదలలు',
mes_hint:'చిట్కా: మీ వినియోగదారు పేరులో "mes" చేర్చండి, ఇంద్రధనుస్సు యానిమేటెడ్ ప్రభావం కోసం!',
s_carry_tune:'క్యారీ ట్యూన్ (దొంగతనం)',
s_pet_pickup_radius:'పెంపుడు జంతువు దొంగిలించే వ్యాసార్థం',
s_carry_vol:'క్యారీ వాల్యూమ్',
carry_tune_default:'డిఫాల్ట్',
carry_tune_silent:'నిశ్శబ్దం',
carry_tune_ambient:'ఆంబియెంట్',
carry_tune_blues:'బ్లూస్',
carry_tune_chiptune:'చిప్ట్యూన్',
carry_tune_classical:'శాస్త్రీయ',
carry_tune_electronic:'ఎలక్ట్రానిక్',
carry_tune_epic:'మహాకావ్యం',
carry_tune_folk:'జానపద',
carry_tune_funk:'ఫంక్',
carry_tune_jazz:'జాజ్',
carry_tune_lofi:'లో-ఫై',
carry_tune_metal:'మెటల్',
carry_tune_pop:'పాప్',
carry_tune_punk:'పంక్',
carry_tune_reggae:'రెగ్గే',
carry_tune_rock:'రాక్',
s_cont_cuddle:'నిరంతర కడల్',
s_protips:'ప్రో చిట్కాలు',
s_hideprotips:'నా ప్రో చిట్కాలు దాచండి',
s_show_exp_modes:'ప్రయోగాత్మక మోడ్లను చూపు',
s_showcoords:'కోఆర్డినేట్లు చూపించు',
s_showfps:'FPSని చూపించు',
s_showtargetinfo:'లక్ష్య సమాచారాన్ని చూపించు',
s_showobj:'ఎంటిటీ / మెష్ కౌంట్ చూపించు',
s_copy_dbg:'కాపీ చేయి',
s_copy_json:'JSON కాపీ చేయి',
s_clear_dbg:'క్లియర్',
h_fly:'ఎగరడం',
h_speed:'వేగ హ్యాక్',
h_waypoints:'వేపాయింట్',
h_autolock:'ఆటో-లాక్',
h_invisible:'అగోచరం',
h_cuddle:'కడల్',
h_pets:'పెట్స్',
h_snipe:'స్నైప్',
h_help:'సహాయం',
h_settings:'సెట్టింగ్స్',
h_prv:'ప్రైవేట్ గది',
h_tc:'టవర్ పూర్తి',
h_tcl:'టవర్ లూప్',
kb_fly:'ఎగరడం (టాగిల్/పైకి)',
kb_fly_down:'ఎగరడం కిందకి',
kb_set_home:'హోమ్ సెట్',
kb_home:'ఇల్లు',
kb_back:'వెనక్కి',
kb_cuddle:'కడల్ ప్యానెల్',
kb_settings:'సెట్టింగ్స్',
kb_pets:'పెట్ బ్రౌజర్',
kb_slots:'వేపాయింట్ స్లాట్',
kb_snipe:'స్నైపర్ ప్యానెల్',
kb_snipe_toggle:'స్నైపర్ ఆన్/ఆఫ్',
kb_attack:'దాడి',
kb_help:'సహాయం / వివరణ',
kb_tower:'టవర్ పూర్తి',
kb_tower_loop:'టవర్ లూప్',
kb_invisible:'అగోచరం',
kb_first_person:'మొదటి వ్యక్తి',
kb_autolock:'ఆటో-లాక్ బేస్',
kb_prv:'ప్రైవేట్ గది',
kb_rng:'RNG',
kb_accts:'ఖాతాలు',
pets_title:'పెట్స్',
pets_search_placeholder:'ఉదా అడవి కిట్టి, బంగారు లేదా వజ్రం, (బంగారు లేదా పచ్చ) అడవి',
pets_hint:'పదాలు AND తో కలుస్తాయి. ప్రత్యామ్నాయానికి OR, సమూహానికి బ్రాకెట్. * లేదా % వైల్డ్కార్డ్. ఒక పదాన్ని మినహాయించడానికి దాని ముందు - పెట్టండి.',
pets_empty:'ఈ గదిలో పెట్స్ కనబడలేదు',
pt_name:'పేరు',
pt_mut:'మ్యుటేషన్',
pt_rar:'అరుదైన',
pt_owner:'యజమాని',
pt_worth:'విలువ',
pt_income:'ఆదాయం/సె',
pt_dist:'దూరం',
slots_title:'వేపాయింట్ స్లాట్',
sniper_title:'పెట్ స్నైపర్',
sniper_tbl_pet:'పెంపుడు జంతువు',
sniper_tbl_owner:'యజమాని',
sniper_tbl_lock:'తాళం వేయండి',
sniper_placeholder:'ఉదా. halo, golden OR diamond, emerald dragon',
sniper_hint:'పదాలు AND. ప్రత్యామ్నాయానికి OR, సమూహానికి బ్రాకెట్. * లేదా % వైల్డ్కార్డ్. ఒక పదాన్ని మినహాయించడానికి దాని ముందు - పెట్టండి.',
sniper_room_col:'గది',
sniper_scans_col:'స్కాన్ చేస్తుంది',
sniper_top_pet_col:'టాప్ పెంపుడు జంతువు',
sniper_top_worth_col:'అత్యంత విలువైనది',
sniper_top_owner_col:'అగ్ర యజమాని',
sniper_age_col:'వయస్సు',
sniper_join_btn:'చేరండి',
sniper_full:'నిండింది',
sniper_join_failed:'టార్గెట్ గది నిండింది',
sniper_scanning_rooms:'ఇతర గదులను వెతుకుతోంది…',
sniper_scan_off:'ఆటో వేట ఆఫ్',
sniper_scan_next:'తదుపరి స్కాన్ చేయండి',
sniper_scan_idle:'నిష్క్రియ — స్కాన్ చేయడానికి వేచి ఉంది',
sniper_auto_place:'బేస్లో స్వయంచాలక ప్లేస్మెంట్',
sniper_place_desc:'(దొంగిలించిన జంతువును మీ బేస్ స్లాట్లో ఉంచుతుంది)',
sniper_auto_drop:'వేవ్స్లో సరిపోలని పెంపుడు జంతువులను ఆటో-డ్రాప్ చేయండి',
sniper_drop_desc:'(ఫిల్టర్తో సరిపోలని అడవి పెంపుడు జంతువులను డ్రాప్ చేసి స్పాన్ పూల్ను రిఫ్రెష్ చేస్తుంది)',
sniper_auto_hunt:'ఆటో వేట',
sniper_hunt_desc:'(ఇతర గదులను స్కాన్ చేసి ఉత్తమ మ్యాచ్కి వెళ్లండి)',
sniper_auto_sell:'దొంగతనంలో ఆటో-అమ్మకం',
sniper_sell_desc:'(బేస్ నిండితే చెత్తది అమ్ము)',
sniper_lockdown:'లాక్డౌన్ ≤',
sniper_lockdown_hint:'≤ ఈ సమయం మిగిలిన బేస్ల నుండి దొంగతనం. 0 = అన్లాక్ మాత్రమే.',
sniper_join_grace:'దయ చేరండి',
sniper_start:'ప్రారంభం',
sniper_stop:'ఆపు',
sniper_idle:'నిష్క్రియ',
sniper_no_filter:'ఫిల్టర్ లేదు',
sniper_waiting:'గేమ్ కోసం వేచి...',
sniper_hold_pause:'పెట్ పట్టుకున్నారు — విరామం',
sniper_stolen_pause:'మన పెట్ ఉంది — విరామం',
sniper_cooldown:'కూల్డౌన్',
sniper_hopping:'సర్వర్ మారుతోంది...',
sniper_na:'లాబీలో స్నైపర్ అందుబాటులో లేదు — ముందు గేమ్లో చేరు',
sniper_wait_lock:'లాక్ డేటా కోసం వేచి...',
sniper_locked:'బేస్ లాక్ — స్కిప్...',
sniper_full_eggs:'బేస్ నిండింది — గుడ్లు మాత్రమే, అమ్మలేం',
sniper_stealing:'దొంగతనం',
sniper_dropped:'డ్రాప్',
sniper_holding:'పట్టుకుంది',
sniper_place:'బేస్లో పెట్టు!',
sniper_steal_mode:'[దొంగతనం]',
sniper_theft_nohop:'పెట్ దొంగతనం అవుతోంది',
sniper_nohop_suffix:'— హాప్ లేదు',
sniper_sniping:'స్నైపింగ్:',
sniper_options:'ఎంపికలు',
sniper_drop_fail_status:'డ్రాప్ విఫలం!',
sniper_hotkey_label:'హాట్కీ:',
sniper_panel_label:'ప్యానెల్:',
sniper_grab_fail:'పట్టుకోవడం విఫలం. మళ్ళీ ప్రయత్నం...',
sniper_our_pet_stolen:'మన పెట్ దొంగిలించబడింది — 8సె కూల్డౌన్',
sniper_hopping_short:'హాపింగ్...',
sniper_base_full:'బేస్ ఫుల్',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'పరుగు',
pet_teleport_title:'టెలిపోర్ట్',
pet_pickup_title:'తీయండి',
owner_yours:'మీది',
owner_wild:'అడవి',
footer_gf:'జిడ్డుగల ఫోర్క్',
copy_ok:'కాపీ చేయబడింది',
copy_failed:'కాపీ విఫలమైంది',
s_invis_on_fly:'ఎగురుతున్నప్పుడు అదృశ్యం',
snipe_walk_home:'దొంగతనం తర్వాత ఇంటికి నడవండి',
snipe_walk_home_desc:'మీ బేస్ కు తిరిగి నడవండి',
sniper_afk_sell:'AFK సరిపోలని పెంపుడు జంతువులను అమ్మండి',
sniper_afk_sell_desc:'(నిష్క్రియంగా ఉన్నప్పుడు 5సె, ఫిల్టర్తో సరిపోలని పెంపుడు జంతువులను విలువ ప్రకారం అమ్మండి — తరంగాలు మాత్రమే)',
hb_fly:'ఎగ',
hb_lck:'లాక',
hb_inv:'అగో',
hb_cud:'కౌగ',
hb_pet:'పాల',
hb_snp:'నిశా',
hb_cfg:'సెటి',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ఖాతా',
ban_title:'కనెక్షన్ బ్లాక్ చేయబడింది',
ban_sub:'మీ IP చిరునామా Meeland ద్వారా నిర్బంధించబడింది',
ban_body:'ఆందోళన చెందకండి — దీన్ని సరిచేయడం సులభం! ఉచిత VPN మీకు కొత్త IP ఇస్తుంది, మీరు మళ్ళీ ఆడవచ్చు.',
ban_pick:'త్వరిత పరిష్కారం — ఒకదాన్ని ఎంచుకోండి:',
ban_warp:'ఉచితం, అపరిమితం, ఒక-క్లిక్ సెటప్',
ban_warp_store:'App Store మరియు Play Store లో "1.1.1.1" గా కూడా అందుబాటులో ఉంది',
ban_proton:'డేటా పరిమితి లేదు, 5 దేశాలు',
ban_steps:'ఇన్స్టాల్ చేయండి → కనెక్ట్ చేయండి → ఈ పేజీని రిఫ్రెష్ చేయండి. అంతే!',
ban_ok:'అర్థమైంది',
warn_title:'ఎల్లప్పుడూ VPN ఉపయోగించండి',
warn_body:'ఎల్లప్పుడూ <b>VPN</b> ఆన్ చేసి ఆడండి.',
warn_ok:'అర్థమైంది',
loading:'లోడ్ అవుతోంది',
tcl_loading:'పూర్తి టవర్ లూప్ నడుస్తోంది. ఆపడానికి {key} నొక్కండి.',
hop_search:'మ్యాచ్ వెతుకుతోంది',
hop_match:'{name} కనుగొనబడింది — చేరుతోంది',
hop_flee:'చొరబాటుదారు నుండి పారిపోతోంది',
hop_reconnect:'మళ్లీ కనెక్ట్ అవుతోంది',
hop_reload:'మళ్లీ లోడ్ అవుతోంది',
hop_fall:'పడిపోవడం నుండి కోలుకుంటోంది',
hop_join:'గదిలో చేరుతోంది',
lock_off:'ఆఫ్',
lock_unlocked:'అన్లాక్',
desc_intro:'MES మీకు మీలాండ్లో వాల్హాక్, ఆటో-ఫార్మింగ్, అరుదైన పెంపుడు జంతువుల సేకరణ, వేగాన్ని పెంచడం, ఫ్లైట్, అదృశ్యత మరియు మరిన్నింటిని అందిస్తుంది',
desc_free:'100% ఉచితం, ఎల్లప్పుడూ. ఫీడ్బ్యాక్ ఉందా? ⭐ సానుకూల రివ్యూ ఇవ్వండి — అదే అప్డేట్లు కొనసాగిస్తుంది.',
desc_h_movement:'చలనం',
desc_h_combat:'పోరాటం',
desc_h_tuning:'ట్యూనింగ్',
desc_h_pets:'పెట్ & దొంగతనం',
desc_h_economy:'ఆర్ధికం',
desc_h_custom:'కస్టమైజ్',
desc_h_extras:'అదనం',
desc_fly:'ఎగరడం',
desc_fly_d:'Space పైకి, F కిందకి. వేగం సెట్ చేయవచ్చు.',
desc_speed:'బ్లింక్',
desc_speed_d:'Shift తక్షణ టెలిపోర్ట్.',
desc_noclip:'గోడ భేదం',
desc_noclip_d:'గోడల గుండా నడవండి.',
desc_walls:'గోడలపై నడవండి',
desc_walls_d:'ఏ ఉపరితలమైనా ఎక్కండి.',
desc_waypts:'వేపాయింట్',
desc_waypts_d:'10 స్థానాలు సేవ్. ఒక-కీ టెలిపోర్ట్. <kbd>Z</kbd> టాగిల్.',
desc_invis:'అదృశ్యం',
desc_invis_d:'పూర్తిగా అదృశ్యం కావడానికి CapsLock నొక్కండి.',
desc_fpv:'FPV',
desc_fpv_d:'మొదటి వ్యక్తి కెమెరాకు మారడానికి <kbd>.</kbd> నొక్కండి.',
desc_anti_invis:'యాంటీ-అగోచరం',
desc_anti_invis_d:'అదృశ్య ఆటగాళ్లను భూతాలుగా చూడండి.',
desc_xray:'ఎక్స్-రే విజన్',
desc_xray_d:'మర్డర్ మిస్టరీలో గోడల ద్వారా ఆటగాళ్లను చూడండి. ఎరుపు = హంతకుడు, ఆకుపచ్చ = పౌరుడు.',
desc_nodeathh:'అజేయుడు',
desc_nodeath_d:'అన్ని హాని నుండి రక్షణ.',
desc_antikb:'ఆంటీ-నాక్బ్యాక్',
desc_antikb_d:'తోయలేరు.',
desc_attack:'తక్షణ దాడి',
desc_attack_d:'<kbd>G</kbd> సమీపంలోని ఆటగాడికి టెలిపోర్ట్ చేసి కొడతాడు.',
desc_jumpgrav:'జంప్ మరియు గురుత్వాకర్షణ',
desc_jumpgrav_d:'సెట్టింగ్లలో సర్దుబాటు చేయగల గుణకాలు.',
desc_fov:'FOV నియంత్రణ',
desc_fov_d:'మొదటి వ్యక్తి మరియు మూడవ వ్యక్తి FOV స్లైడర్లు.',
desc_autoinvis:'ఎగిరేటప్పుడు స్వయం-అదృశ్యం',
desc_autoinvis_d:'ఎగురుతున్నప్పుడు స్వయంచాలకంగా అదృశ్యం అవ్వండి.',
desc_sniper:'పెట్ స్నైపర్',
desc_sniper_d:'ఫిల్టర్ చేసిన పెట్ ఆటో-దొంగతనం. రెండు మోడ్లు.',
desc_prv:'ప్రైవేట్ గది',
desc_prv_d:'<kbd>PgDn</kbd> ప్రస్తుత మోడ్లో ప్రైవేట్ గదిని సృష్టిస్తుంది మరియు స్వయంగా చేరుతుంది.',
desc_petbrow:'పెట్ బ్రౌజర్',
desc_petbrow_d:'<kbd>K</kbd> అన్ని పెట్ చూపిస్తుంది. క్రమం, ఫిల్టర్, పట్టు.',
desc_cuddle:'కడల్ ప్యానెల్',
desc_cuddle_d:'<kbd>J</kbd> దూరం ప్రకారం ఆటగాళ్లు. ఫాలో చేయడానికి క్లిక్.',
desc_return:'ఆటో రిటర్న్',
desc_return_d:'దొంగతనం తర్వాత ఇంటికి టెలిపోర్ట్.',
desc_autolock:'ఆటో-లాక్',
desc_autolock_d:'బేస్ ఎల్లప్పుడూ లాక్.',
desc_fountain:'ఆటో-ఫౌంటెన్',
desc_fountain_d:'శాశ్వత 1.5× లాభం. ఆటో-పునరుద్ధరణ.',
desc_money:'ఉచిత డబ్బు + నక్షత్రాలు + వజ్రాలు',
desc_money_d:'ప్రకటనలు అవసరం లేదు.',
desc_collect:'ఆటో-సేకరణ',
desc_collect_d:'పెట్ ఆదాయం ప్రతి 30 సెకన్లు.',
desc_music:'క్యారీ ట్యూన్',
desc_music_d:'దొంగతనం సమయంలో సంగీతం. 15 శైలి.',
desc_chatfade:'చాట్ ఫేడ్',
desc_chatfade_d:'సందేశ దృశ్యత నియంత్రణ. 5–120సె.',
desc_emotes:'ఎగిరే ఇమోట్లు',
desc_emotes_d:'ఎగిరేటప్పుడు ర్యాండమ్ ఇమోట్లు.',
desc_displays:'ప్రదర్శన ఓవర్లేలు',
desc_displays_d:'అక్షాంశాలు, FPS కౌంటర్ మరియు లక్ష్య సమాచారం.',
desc_config:'సెట్టింగ్లు',
desc_config_d:'<kbd>M</kbd> ఫీచర్లు, కీలు, వేగం టాగిల్.',
desc_langs:'60 భాషలు',
desc_langs_d:'సంపూర్ణ UI అనువాదం.',
desc_tower:'టవర్ పూర్తి',
desc_tower_d:'<kbd>Y</kbd> Obby Tower తక్షణ విజయం.',
desc_cats:'పిల్లి లోడింగ్ స్క్రీన్లు',
desc_cats_d:'అందమైన పిల్లులు లోడింగ్ను భర్తీ చేస్తాయి.',
desc_h_install:'ఇన్స్టాల్',
desc_desktop:'డెస్క్టాప్ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> లేదా <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ఇన్స్టాల్ చేయండి',
desc_inst_click:'పైన ఇన్స్టాల్ క్లిక్ చేయండి',
desc_inst_open:'ఏ Meeland గేమ్ అయినా తెరవండి — అప్పుడే పని చేస్తుంది',
desc_mobile:'మొబైల్ (Android)',
desc_mob_ff:'Play Store నుండి <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ఇన్స్టాల్ చేయండి',
desc_mob_addon:'Firefox → మెను → యాడ్-ఆన్ → <strong>Tampermonkey</strong> ఇన్స్టాల్',
desc_mob_visit:'Firefox లో ఈ పేజీ చూసి ఇన్స్టాల్ ట్యాప్ చేయండి',
desc_mob_play:'Meeland ఆడండి — టచ్ HUD బటన్లు స్వయంచాలకంగా కనిపిస్తాయి',
desc_ios:'iOS: Apple అన్ని iOS బ్రౌజర్లలో (Firefox తో సహా) ఎక్స్టెన్షన్లు బ్లాక్ చేస్తుంది. డెస్క్టాప్ లేదా Android వాడండి.',
desc_h_privacy:'గోప్యత',
desc_privacy:'క్లయింట్-సైడ్ మాత్రమే — ఏ డేటా బ్రౌజర్ వదలదు'
});
_mk('ur','اردو',{
close:'✕',
refresh:'↻',
go:'جاؤ',
set:'سیٹ',
auto:'خودکار',
empty:'خالی',
help_title:'مدد',
players_title:'کھلاڑی',
players_empty:'کوئی اور کھلاڑی نہیں ملا',
settings_title:'ترتیبات',
settings_reset:'ری سیٹ',
tab_gameplay:'گیم پلے',
tab_economy:'معیشت',
tab_audio:'آڈیو',
tab_advanced:'اعلیٰ',
tab_hud:'HUD',
tab_keys:'کیز',
tab_accounts:'اکاؤنٹس',
acct_current:'موجودہ',
acct_new:'نیا',
acct_import:'درآمد',
acct_switch:'تبدیل کریں',
acct_reload:'دوبارہ لوڈ کریں',
acct_delete:'حذف کریں',
acct_cancel:'منسوخ کریں',
acct_empty:'خالی',
acct_token_ph:'ٹوکن',
acct_copy:'کاپی',
acct_export:'برآمد',
acct_rename:'نام تبدیل کریں',
acct_save:'محفوظ کریں',
acct_name_len:'نام 4-12 حروف کا ہونا چاہیے',
acct_name_fail:'نام تبدیل کرنے میں ناکامی',
acct_invalid:'غلط',
acct_ready:'اکاؤنٹ تیار ہے۔ Meeland بند کریں، پھر IP تبدیل کریں، پھر دوبارہ لوڈ کریں۔',
acct_ip_note:'اکاؤنٹ تبدیل کرتے وقت ہمیشہ VPN استعمال کریں اور IP تبدیل کریں۔',
acct_howto:'1. اس اکاؤنٹ کا لنک کاپی کرنے کے لیے کاپی پر کلک کریں۔\n2. دوسرے براؤزر یا ڈیوائس پر — یا کسی دوست کے ساتھ — MES کھولیں۔\n3. درآمد پر کلک کر کے لنک پیسٹ کریں۔',
sh_movement:'حرکت',
sh_defense:'دفاع',
sh_camera:'کیمرہ',
sh_overlays:'اوورلیز',
sh_behaviour:'رویہ',
sh_buttons:'بٹن',
sh_language:'زبان',
sh_chat:'گپ شپ',
sh_waves:'Waves',
sh_steal_a_pet:'پالتو جانور چوری کریں',
sh_tower:'Tower',
sh_misc_multi:'متفرق (ملٹی موڈ)',
s_noclip:'دیوار سے گزرنا',
s_fly:'اڑنا',
s_fly_emotes:'اڑان ایموٹ',
s_base_speed:'بنیادی رفتار',
s_jump_mult:'اونچائی کودنا',
s_grav_mult:'کشش ثقل',
s_walk_up_walls:'واک اپ والز',
s_carry_normalize:'کیری اسپیڈ + جمپ',
s_invincibility:'ناقابل شکست',
s_anti_kb:'اینٹی-نقب',
s_invisible:'پوشیدہ',
s_xray_infection:'ایکس رے (قتل کا اسرار)',
s_ghost_mode:'بھوت موڈ',
s_flee_intruder:'گھسنے والے پر بھاگو',
s_first_person:'پہلا شخصی منظر',
s_fov_first_person:'FOV (پہلا)',
s_fov_third_person:'FOV (تیسرا)',
s_fov_vertical_mult:'FOV عمودی ضرب',
s_auto_lock:'خودکار لاک بیس',
s_auto_fountain:'خودکار فاؤنٹین (1.5×)',
s_daily_coins:'روزانہ سکے',
s_stars:'ستارے',
s_diamonds_tower:'ہیرے (ٹاور)',
s_tower_loop:'ٹاور لوپ',
s_auto_roll_x25:'آٹو رول x25 قسمت',
s_auto_craft:'آٹو-کرافٹ',
s_auto_vip_sword:'خودکار VIP خریدیں',
s_auto_vip_waves:'خودکار VIP خریدیں (لہریں)',
s_direct_kill:'ڈائریکٹ کل سپیم',
s_direct_kill_rate:'کل کی شرح',
s_auto_buy_upgrades:'آٹو خرید اپ گریڈ',
s_boost_coins:'آٹو اپ گریڈ: سکے',
s_boost_diamonds:'آٹو اپ گریڈ: ہیرے',
s_boost_luck:'آٹو اپ گریڈ: قسمت',
s_auto_unlock_areas:'آٹو انلاک ایریاز',
s_auto_rebirth:'خودکار پنر جنم',
s_auto_join_tp:'سب سے زیادہ علاقے میں ٹیلی پورٹ',
s_hide_kill_rewards:'مار انعامات چھپائیں۔',
s_hide_roll_anim:'رول اینیمیشن چھپائیں۔',
rng_title:'پالتو جانور RNG دھوکہ دیتی ہے۔',
rng_sec_rolling:'رولنگ',
rng_sec_crafting:'دستکاری',
rng_sec_combat:'لڑائی',
rng_sec_upgrades:'اپ گریڈ',
rng_sec_areas:'علاقے',
rng_actions:'اعمال',
log_craft:'دستکاری',
log_success:'کامیابی',
log_fail:'فیل',
log_unlocking_area:'غیر مقفل کرنے کا علاقہ',
log_area_unlocked:'علاقہ غیر مقفل ہے۔',
log_equipped:'لیس',
log_bought_upgrade:'اپ گریڈ خریدا۔',
log_teleported_to:'کو ٹیلی پورٹ کیا گیا۔',
log_rebirthing:'دوبارہ جنم لینا',
h_rng:'آر این جی',
h_accts:'اکاؤنٹس',
s_auto_collect:'خودکار جمع آمدنی',
s_collect_interval:'جمع وقفہ',
s_chat_fade:'چیٹ ختم ہونے کا وقت',
s_name_colors:'صارف نام کے رنگ',
s_chat_enhance:'چیٹ بہتری',
mes_hint:'مشورہ: قوس قزح متحرک اثر کے لیے اپنے صارف نام میں «mes» شامل کریں!',
s_carry_tune:'لے جانے کی دھن (چوری)',
s_pet_pickup_radius:'پالتو چرانے کا دائرہ',
s_carry_vol:'لے جانے کی آواز',
carry_tune_default:'ڈیفالٹ',
carry_tune_silent:'خاموش',
carry_tune_ambient:'محیطی',
carry_tune_blues:'بلوز',
carry_tune_chiptune:'چپ ٹیون',
carry_tune_classical:'کلاسیکی',
carry_tune_electronic:'الیکٹرونک',
carry_tune_epic:'رزمیہ',
carry_tune_folk:'لوک',
carry_tune_funk:'فنک',
carry_tune_jazz:'جاز',
carry_tune_lofi:'لو-فائی',
carry_tune_metal:'میٹل',
carry_tune_pop:'پاپ',
carry_tune_punk:'پنک',
carry_tune_reggae:'ریگے',
carry_tune_rock:'راک',
s_cont_cuddle:'مسلسل کڈل',
s_protips:'پرو ٹپس',
s_hideprotips:'میرے پرو ٹپس چھپائیں',
s_show_exp_modes:'تجرباتی موڈ دکھائیں',
s_showcoords:'کوآرڈینیٹس دکھائیں',
s_showfps:'FPS دکھائیں۔',
s_showtargetinfo:'ہدف کی معلومات دکھائیں',
s_showobj:'ہستی / میش کاؤنٹ دکھائیں۔',
s_copy_dbg:'کاپی کریں',
s_copy_json:'JSON کاپی کریں',
s_clear_dbg:'صاف کریں',
h_fly:'اڑنا',
h_speed:'رفتار ہیک',
h_waypoints:'وے پوائنٹ',
h_autolock:'خودکار لاک',
h_invisible:'پوشیدہ',
h_cuddle:'کڈل',
h_pets:'پالتو',
h_snipe:'سنائپ',
h_help:'مدد',
h_settings:'ترتیبات',
h_prv:'نجی کمرہ',
h_tc:'ٹاور مکمل',
h_tcl:'ٹاور لوپ',
kb_fly:'اڑنا (ٹوگل/اوپر)',
kb_fly_down:'اڑنا نیچے',
kb_set_home:'ہوم سیٹ',
kb_home:'گھر',
kb_back:'واپس',
kb_cuddle:'کڈل پینل',
kb_settings:'ترتیبات',
kb_pets:'پیٹ براؤزر',
kb_slots:'وے پوائنٹ سلاٹ',
kb_snipe:'سنائپر پینل',
kb_snipe_toggle:'سنائپر آن/آف',
kb_attack:'حملہ',
kb_help:'مدد / تفصیل',
kb_tower:'ٹاور مکمل',
kb_tower_loop:'ٹاور لوپ',
kb_invisible:'پوشیدہ',
kb_first_person:'پہلا شخص',
kb_autolock:'آٹو لاک بیس',
kb_prv:'نجی کمرہ',
kb_rng:'RNG',
kb_accts:'اکاؤنٹس',
pets_title:'پالتو جانور',
pets_search_placeholder:'جیسے جنگلی کٹی، سنہری یا ہیرا، (سنہری یا زمرد) جنگلی',
pets_hint:'الفاظ AND سے جڑتے ہیں۔ متبادل کے لیے OR، گروپ کے لیے قوسین۔ * یا % وائلڈ کارڈ۔ کسی لفظ کو خارج کرنے کے لیے اس کے آگے - لگائیں۔',
pets_empty:'اس کمرے میں کوئی پالتو نہیں ملا',
pt_name:'نام',
pt_mut:'تبدیلی',
pt_rar:'نایابیت',
pt_owner:'مالک',
pt_worth:'قیمت',
pt_income:'آمدنی/سی',
pt_dist:'فاصلہ',
slots_title:'وے پوائنٹ سلاٹ',
sniper_title:'پیٹ سنائپر',
sniper_tbl_pet:'پالتو جانور',
sniper_tbl_owner:'مالک',
sniper_tbl_lock:'تالا',
sniper_placeholder:'مثلاً halo, golden OR diamond, emerald dragon',
sniper_hint:'الفاظ AND۔ متبادل کے لیے OR، گروپ کے لیے قوسین۔ * یا % وائلڈ کارڈ۔ کسی لفظ کو خارج کرنے کے لیے اس کے آگے - لگائیں۔',
sniper_room_col:'کمرہ',
sniper_scans_col:'اسکینز',
sniper_top_pet_col:'سب سے اوپر پالتو جانور',
sniper_top_worth_col:'سب سے اوپر کے قابل',
sniper_top_owner_col:'سرفہرست مالک',
sniper_age_col:'عمر',
sniper_join_btn:'شامل ہوں',
sniper_full:'بھرا ہوا',
sniper_join_failed:'ٹارگٹ روم بھرا ہوا ہے۔',
sniper_scanning_rooms:'دوسرے کمروں کی تلاش…',
sniper_scan_off:'آٹو شکار',
sniper_scan_next:'اگلا اسکین ان میں کریں۔',
sniper_scan_idle:'بیکار - اسکین کرنے کا انتظار کر رہا ہے۔',
sniper_auto_place:'بیس پر خودکار رکھیں',
sniper_place_desc:'(چرائے گئے جانور کو آپ کے بیس سلاٹ میں رکھتا ہے)',
sniper_auto_drop:'ویوز میں غیر مماثل پالتو جانوروں کو خودکار ڈراپ کریں',
sniper_drop_desc:'(فلٹر سے مماثل نہ ہونے والے جنگلی پالتو جانوروں کو ڈراپ کر کے اسپان پول کو تازہ کرتا ہے)',
sniper_auto_hunt:'خودکار شکار',
sniper_hunt_desc:'(دوسرے کمروں کو اسکین کر کے بہترین مماثلت پر جائیں)',
sniper_auto_sell:'چوری میں خودکار فروخت',
sniper_sell_desc:'(بیس بھر جائے تو سب سے کمتر بیچیں)',
sniper_lockdown:'لاک ≤',
sniper_lockdown_hint:'≤ اتنا وقت بقایا بیسز سے چوری۔ 0 = صرف غیر مقفل۔',
sniper_join_grace:'فضل میں شامل ہوں۔',
sniper_start:'شروع',
sniper_stop:'رکیں',
sniper_idle:'خاموش',
sniper_no_filter:'کوئی فلٹر نہیں',
sniper_waiting:'کھیل کا انتظار...',
sniper_hold_pause:'پالتو پکڑا ہوا — موقوف',
sniper_stolen_pause:'ہمارا پالتو ہے — موقوف',
sniper_cooldown:'وقفہ ٹھنڈا',
sniper_hopping:'سرور تبدیل ہو رہا...',
sniper_na:'لابی میں سنائپر نہیں — پہلے کھیل میں شامل ہوں',
sniper_wait_lock:'لاک ڈیٹا کا انتظار...',
sniper_locked:'بیس مقفل — نظرانداز...',
sniper_full_eggs:'بیس بھری — صرف انڈے، بیچ نہیں سکتے',
sniper_stealing:'چوری',
sniper_dropped:'ڈراپ',
sniper_holding:'پکڑا ہوا',
sniper_place:'بیس پر رکھیں!',
sniper_steal_mode:'[چوری]',
sniper_theft_nohop:'پالتو چرایا جا رہا ہے',
sniper_nohop_suffix:'— ہاپ نہیں',
sniper_sniping:'سنائپنگ:',
sniper_options:'اختیارات',
sniper_drop_fail_status:'ڈراپ ناکام!',
sniper_hotkey_label:'ہاٹ کی:',
sniper_panel_label:'پینل:',
sniper_grab_fail:'پکڑنا ناکام۔ دوبارہ...',
sniper_our_pet_stolen:'ہمارا پالتو چرایا — 8سی وقفہ',
sniper_hopping_short:'ہاپنگ...',
sniper_base_full:'بیس بھرا ہوا',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'دوڑنا',
pet_teleport_title:'ٹیلی پورٹ',
pet_pickup_title:'اٹھاؤ',
owner_yours:'آپ کا',
owner_wild:'جنگلی',
footer_gf:'چکنا کانٹا',
copy_ok:'کاپی',
copy_failed:'کاپی کرنے میں ناکام',
s_invis_on_fly:'اڑتے وقت پوشیدہ',
snipe_walk_home:'چوری کے بعد گھر چلو',
snipe_walk_home_desc:'واپس اپنے بیس پر چلو',
sniper_afk_sell:'AFK غیر مماثل پالتو فروخت کریں',
sniper_afk_sell_desc:'(5s تک غیرفعال ہو تو، فلٹر سے مطابقت نہ رکھنے والے جانوروں کو قیمت کے مطابق بیچیں — صرف لہریں)',
hb_fly:'اڑن',
hb_lck:'لاک',
hb_inv:'غائب',
hb_cud:'گلے',
hb_pet:'پالت',
hb_snp:'نشان',
hb_cfg:'ترتی',
hb_help:'؟',
hb_rng:'RNG',
hb_accts:'اکاؤنٹ',
ban_title:'کنکشن بلاک ہو گیا',
ban_sub:'آپ کا IP ایڈریس Meeland نے محدود کر دیا ہے',
ban_body:'فکر نہ کریں — اسے ٹھیک کرنا آسان ہے! ایک مفت VPN آپ کو نیا IP دے گا تاکہ آپ دوبارہ کھیل سکیں۔',
ban_pick:'فوری حل — ایک منتخب کریں:',
ban_warp:'مفت، لامحدود، ایک کلک سیٹ اپ',
ban_warp_store:'App Store اور Play Store پر "1.1.1.1" کے نام سے بھی دستیاب',
ban_proton:'ڈیٹا کی کوئی حد نہیں، 5 ممالک',
ban_steps:'انسٹال کریں → جڑیں → یہ صفحہ ریفریش کریں۔ بس!',
ban_ok:'سمجھ آ گئی',
warn_title:'ہمیشہ VPN استعمال کریں',
warn_body:'ہمیشہ <b>VPN</b> آن رکھ کر کھیلیں۔',
warn_ok:'سمجھ آ گئی',
loading:'لوڈ ہو رہا ہے',
tcl_loading:'مکمل ٹاور لوپ چل رہا ہے۔ روکنے کے لیے {key} دبائیں۔',
hop_search:'میچ تلاش ہو رہا ہے',
hop_match:'{name} مل گیا — شامل ہو رہا ہے',
hop_flee:'گھسنے والے سے بھاگ رہا ہے',
hop_reconnect:'دوبارہ جڑ رہا ہے',
hop_reload:'دوبارہ لوڈ ہو رہا ہے',
hop_fall:'گرنے سے صحت یاب ہو رہا ہے',
hop_join:'کمرے میں شامل ہو رہا ہے',
lock_off:'بند',
lock_unlocked:'غیر مقفل',
desc_intro:'MES آپ کو Meeland میں وال ہیک، آٹو فارمنگ، نایاب پالتو جانوروں کا مجموعہ، رفتار بڑھانے، پرواز، پوشیدہ ہونا، اور بہت کچھ فراہم کرتا ہے۔',
desc_free:'100% مفت، ہمیشہ۔ رائے ہے؟ ⭐ مثبت جائزہ دیں — یہی اپڈیٹس جاری رکھتا ہے۔',
desc_h_movement:'حرکت',
desc_h_combat:'لڑائی',
desc_h_tuning:'ٹیوننگ',
desc_h_pets:'پالتو & چوری',
desc_h_economy:'معیشت',
desc_h_custom:'ترتیب',
desc_h_extras:'اضافی',
desc_fly:'اڑنا',
desc_fly_d:'Space اوپر، F نیچے۔ رفتار ایڈجسٹ ہو سکتی ہے۔',
desc_speed:'بلنک',
desc_speed_d:'Shift فوری ٹیلی پورٹ۔',
desc_noclip:'دیوار سے گزرنا',
desc_noclip_d:'دیواروں سے گزریں۔',
desc_walls:'دیواروں پر چلنا',
desc_walls_d:'کسی بھی سطح پر چڑھیں۔',
desc_waypts:'وے پوائنٹ',
desc_waypts_d:'10 جگہیں محفوظ کریں۔ ایک-کلید ٹیلی پورٹ۔ <kbd>Z</kbd> ٹوگل۔',
desc_invis:'پوشیدہ',
desc_invis_d:'مکمل طور پر غائب ہونے کے لیے CapsLock دبائیں۔',
desc_fpv:'FPV',
desc_fpv_d:'پہلے شخص کیمرہ پر سوئچ کرنے کے لیے <kbd>.</kbd> دبائیں۔',
desc_anti_invis:'اینٹی-پوشیدگی',
desc_anti_invis_d:'پوشیدہ کھلاڑیوں کو بھوت کے طور پر دیکھیں۔',
desc_xray:'ایکس رے ویژن',
desc_xray_d:'مرڈر اسرار میں دیواروں کے ذریعے کھلاڑیوں کو دیکھیں۔ سرخ = قاتل، سبز = شہری۔',
desc_nodeathh:'لافانی',
desc_nodeath_d:'تمام نقصان سے محفوظ۔',
desc_antikb:'اینٹی-ناکبیک',
desc_antikb_d:'دھکیلا نہیں جا سکتا۔',
desc_attack:'فوری حملہ',
desc_attack_d:'<kbd>G</kbd> قریب ترین کھلاڑی کے پاس ٹیلی پورٹ کرکے مارتا ہے۔',
desc_jumpgrav:'چھلانگ اور کشش ثقل',
desc_jumpgrav_d:'ترتیبات میں سایڈست ضارب۔',
desc_fov:'FOV کنٹرول',
desc_fov_d:'پہلے شخص اور تیسرے شخص کے FOV سلائیڈرز۔',
desc_autoinvis:'پرواز پر خودکار پوشیدگی',
desc_autoinvis_d:'پرواز کے دوران خودکار طور پر پوشیدہ ہو جائیں۔',
desc_sniper:'پیٹ سنائپر',
desc_sniper_d:'فلٹر شدہ پالتو جانوروں کی آٹو-چوری۔ دونوں موڈ۔',
desc_prv:'نجی کمرہ',
desc_prv_d:'<kbd>PgDn</kbd> موجودہ موڈ میں ایک نجی کمرہ بناتا ہے اور خود بخود شامل ہوتا ہے۔',
desc_petbrow:'پیٹ براؤزر',
desc_petbrow_d:'<kbd>K</kbd> سب پالتو جانور دکھاتا ہے۔ ترتیب، فلٹر، پکڑو۔',
desc_cuddle:'کڈل پینل',
desc_cuddle_d:'<kbd>J</kbd> فاصلے کے مطابق کھلاڑی۔ فالو کرنے کے لیے کلک۔',
desc_return:'آٹو واپسی',
desc_return_d:'چوری کے بعد گھر ٹیلی پورٹ۔',
desc_autolock:'خودکار لاک',
desc_autolock_d:'بیس ہمیشہ لاک۔',
desc_fountain:'خودکار فاؤنٹین',
desc_fountain_d:'مستقل 1.5× منافع۔ آٹو تجدید۔',
desc_money:'مفت پیسے + ستارے + ہیرے',
desc_money_d:'اشتہارات کی ضرورت نہیں۔',
desc_collect:'آٹو-جمع',
desc_collect_d:'پالتو جانوروں کی آمدنی ہر 30 سیکنڈ۔',
desc_music:'کیری ٹیون',
desc_music_d:'چوری کے دوران موسیقی۔ 15 اصناف۔',
desc_chatfade:'چیٹ فیڈ',
desc_chatfade_d:'پیغام کی نمائش کو کنٹرول کریں۔ 5–120سیکنڈ۔',
desc_emotes:'اڈان ایموٹس',
desc_emotes_d:'اڈنے کے دوران بےترتیب ایموٹس۔',
desc_displays:'ڈسپلے اوورلے',
desc_displays_d:'متناسقات، FPS کاؤنٹر اور ہدف کی معلومات۔',
desc_config:'ترتیبات',
desc_config_d:'<kbd>M</kbd> فیچرز، کیز، رفتار ٹوگل۔',
desc_langs:'60 زبانیں',
desc_langs_d:'مکمل UI ترجمہ۔',
desc_tower:'ٹاور مکمل',
desc_tower_d:'<kbd>Y</kbd> Obby Tower فوری جیت۔',
desc_cats:'بلی لوڈنگ اسکرین',
desc_cats_d:'پیاری بلیاں لوڈنگ کی جگہ لیتی ہیں۔',
desc_h_install:'انسٹال',
desc_desktop:'ڈیسک ٹاپ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> یا <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> انسٹال کریں',
desc_inst_click:'اوپر انسٹال کلک کریں',
desc_inst_open:'کوئی بھی Meeland گیم کھولیں — خود بخود کام کرے گا',
desc_mobile:'موبائل (Android)',
desc_mob_ff:'Play Store سے <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> انسٹال کریں',
desc_mob_addon:'Firefox → مینو → ایڈ آنز → <strong>Tampermonkey</strong> انسٹال',
desc_mob_visit:'Firefox میں یہ صفحہ دیکھیں اور انسٹال ٹیپ کریں',
desc_mob_play:'Meeland کھیلیں — ٹچ HUD بٹن خودکار دکھائی دیں گے',
desc_ios:'iOS: Apple تمام iOS براؤزرز (Firefox سمیت) میں ایکسٹینشنز بلاک کرتا ہے۔ ڈیسک ٹاپ یا Android استعمال کریں۔',
desc_h_privacy:'رازداری',
desc_privacy:'صرف کلائنٹ سائیڈ — کوئی ڈیٹا براؤزر نہیں چھوڑتا'
});
_mk('ms','Bahasa Melayu',{
close:'✕',
refresh:'↻',
go:'Pergi',
set:'Tetapkan',
auto:'Auto',
empty:'kosong',
help_title:'Bantuan',
players_title:'Pemain',
players_empty:'Tiada pemain lain ditemui',
settings_title:'Tetapan',
settings_reset:'Set semula',
tab_gameplay:'Permainan',
tab_economy:'Ekonomi',
tab_audio:'Audio',
tab_advanced:'Lanjutan',
tab_hud:'HUD',
tab_keys:'Kekunci',
tab_accounts:'Akaun',
acct_current:'Semasa',
acct_new:'Baharu',
acct_import:'Import',
acct_switch:'Tukar',
acct_reload:'Muat semula',
acct_delete:'Padam',
acct_cancel:'Batal',
acct_empty:'Kosong',
acct_token_ph:'Token',
acct_copy:'Salin',
acct_export:'Eksport',
acct_rename:'Namakan semula',
acct_save:'Simpan',
acct_name_len:'Nama mesti 4-12 aksara',
acct_name_fail:'Ganti nama gagal',
acct_invalid:'Tidak sah',
acct_ready:'Akaun sedia. Tutup Meeland, tukar IP, kemudian muat semula.',
acct_ip_note:'Sentiasa gunakan VPN dan tukar IP apabila menukar akaun.',
acct_howto:'1. Klik Salin untuk menyalin pautan akaun ini.\n2. Dalam pelayar atau peranti lain — atau bersama rakan — buka MES.\n3. Klik Import dan tampal pautan itu.',
sh_movement:'Pergerakan',
sh_defense:'Pertahanan',
sh_camera:'Kamera',
sh_overlays:'Overlay',
sh_behaviour:'Tingkah laku',
sh_buttons:'Butang',
sh_language:'Bahasa',
sh_chat:'Sembang',
sh_waves:'Waves',
sh_steal_a_pet:'Curi haiwan peliharaan',
sh_tower:'Tower',
sh_misc_multi:'Lain-lain (berbilang mod)',
s_noclip:'Tembus Dinding',
s_fly:'terbang',
s_fly_emotes:'Emot Terbang',
s_base_speed:'Laju Asas',
s_jump_mult:'Ketinggian Lompat',
s_grav_mult:'Graviti',
s_walk_up_walls:'Berjalan Naik Dinding',
s_carry_normalize:'Bawa Laju + Lompat',
s_invincibility:'Kebal',
s_anti_kb:'Anti-Tolakan',
s_invisible:'Ghaib',
s_xray_infection:'X-Ray (Misteri Pembunuhan)',
s_ghost_mode:'Mod hantu',
s_flee_intruder:'Lari jika penceroboh',
s_first_person:'Pandangan orang pertama',
s_fov_first_person:'FOV (1st)',
s_fov_third_person:'FOV (3rd)',
s_fov_vertical_mult:'Pengganda Menegak FOV',
s_auto_lock:'Auto-Kunci Pangkalan',
s_auto_fountain:'Auto-Pancuran (1.5×)',
s_daily_coins:'Syiling Harian',
s_stars:'Bintang',
s_diamonds_tower:'Berlian (Menara)',
s_tower_loop:'Gelung menara',
s_auto_roll_x25:'Auto roll x25 tuah',
s_auto_craft:'Craft automatik',
s_auto_vip_sword:'Beli VIP automatik',
s_auto_vip_waves:'Beli VIP automatik (Gelombang)',
s_direct_kill:'Spam bunuh terus',
s_direct_kill_rate:'Kadar bunuh',
s_auto_buy_upgrades:'Auto Beli Naik Taraf',
s_boost_coins:'Naik Taraf Auto: Syiling',
s_boost_diamonds:'Naik Taraf Auto: Berlian',
s_boost_luck:'Naik Taraf Auto: Nasib',
s_auto_unlock_areas:'Kawasan Buka Kunci Auto',
s_auto_rebirth:'Kelahiran Semula Auto',
s_auto_join_tp:'Teleport ke Kawasan Tertinggi',
s_hide_kill_rewards:'Sembunyikan Ganjaran Bunuh',
s_hide_roll_anim:'Sembunyikan Animasi Gulung',
rng_title:'haiwan peliharaan rng menipu',
rng_sec_rolling:'bergolek',
rng_sec_crafting:'Mencipta',
rng_sec_combat:'Pertempuran',
rng_sec_upgrades:'Naik taraf',
rng_sec_areas:'Kawasan',
rng_actions:'Tindakan',
log_craft:'Kerajinan',
log_success:'BERJAYA',
log_fail:'GAGAL',
log_unlocking_area:'Kawasan membuka kunci',
log_area_unlocked:'Kawasan tidak berkunci',
log_equipped:'Dilengkapi',
log_bought_upgrade:'Dibeli naik taraf',
log_teleported_to:'Diteleportasikan ke',
log_rebirthing:'Kelahiran semula',
h_rng:'rng',
h_accts:'Akaun',
s_auto_collect:'Auto-Kutip Pendapatan',
s_collect_interval:'Selang Kutipan',
s_chat_fade:'Masa Pudar Chat',
s_name_colors:'Warna nama pengguna',
s_chat_enhance:'Penambahbaikan sembang',
mes_hint:'Petua: sertakan "mes" dalam nama pengguna anda untuk kesan pelangi beranimasi!',
s_carry_tune:'Lagu Bawa (Curi)',
s_pet_pickup_radius:'Jejari Curi Haiwan',
s_carry_vol:'Kelantangan Bawa',
carry_tune_default:'Lalai',
carry_tune_silent:'Senyap',
carry_tune_ambient:'Ambien',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasik',
carry_tune_electronic:'Elektronik',
carry_tune_epic:'Epik',
carry_tune_folk:'Rakyat',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'logam',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Peluk Berterusan',
s_protips:'Tips Pro',
s_hideprotips:'Sembunyikan Tips Pro saya',
s_show_exp_modes:'Tampilkan Mode Eksperimental',
s_showcoords:'Tunjukkan koordinat',
s_showfps:'Tunjukkan FPS',
s_showtargetinfo:'Tunjukkan info sasaran',
s_showobj:'Tunjukkan Kiraan Entiti / Mesh',
s_copy_dbg:'Salin log debug',
s_copy_json:'Salin JSON',
s_clear_dbg:'Kosongkan',
h_fly:'Terbang',
h_speed:'Hack Laju',
h_waypoints:'Titik Laluan',
h_autolock:'Auto-Kunci',
h_invisible:'Ghaib',
h_cuddle:'Peluk',
h_pets:'Haiwan',
h_snipe:'Hendap',
h_help:'Bantuan',
h_settings:'Tetapan',
h_prv:'Bilik Persendirian',
h_tc:'Siap Menara',
h_tcl:'Gelung menara',
kb_fly:'Terbang (togol/naik)',
kb_fly_down:'Terbang turun',
kb_set_home:'Tetap rumah',
kb_home:'Rumah',
kb_back:'Balik',
kb_cuddle:'Panel peluk',
kb_settings:'Tetapan',
kb_pets:'Pelayar haiwan',
kb_slots:'Slot titik laluan',
kb_snipe:'Panel hendap',
kb_snipe_toggle:'Hendap Hidup/Mati',
kb_attack:'Serang',
kb_help:'Bantuan / Penerangan',
kb_tower:'Siap Menara',
kb_tower_loop:'Gelung menara',
kb_invisible:'Ghaib',
kb_first_person:'Orang pertama',
kb_autolock:'Pangkalan Auto-Kunci',
kb_prv:'Bilik Persendirian',
kb_rng:'RNG',
kb_accts:'Akaun',
pets_title:'Haiwan Peliharaan',
pets_search_placeholder:'cth. kucing liar, emas ATAU berlian, (emas ATAU zamrud) liar',
pets_hint:'Perkataan digabung AND. Guna OR untuk alternatif, kurungan untuk kumpul. * atau % kad liar. Letakkan - di hadapan perkataan untuk mengecualikannya.',
pets_empty:'Tiada haiwan di bilik ini',
pt_name:'Nama',
pt_mut:'Mutasi',
pt_rar:'Kejarangan',
pt_owner:'Pemilik',
pt_worth:'Nilai',
pt_income:'Pendapatan/s',
pt_dist:'Jarak',
slots_title:'Slot Titik Laluan',
sniper_title:'Hendap Haiwan',
sniper_tbl_pet:'Haiwan peliharaan',
sniper_tbl_owner:'Pemilik',
sniper_tbl_lock:'Kunci',
sniper_placeholder:'cth. halo, golden OR diamond, emerald dragon',
sniper_hint:'Perkataan AND. Guna OR untuk alternatif, kurungan untuk kumpul. * atau % kad liar. Letakkan - di hadapan perkataan untuk mengecualikannya.',
sniper_room_col:'Bilik',
sniper_scans_col:'Imbasan',
sniper_top_pet_col:'Haiwan Kesayangan Teratas',
sniper_top_worth_col:'Berbaloi',
sniper_top_owner_col:'Pemilik Tertinggi',
sniper_age_col:'Umur',
sniper_join_btn:'Sertai',
sniper_full:'Penuh',
sniper_join_failed:'Bilik sasaran penuh',
sniper_scanning_rooms:'Mencari bilik lain…',
sniper_scan_off:'Auto memburu',
sniper_scan_next:'Imbasan seterusnya masuk',
sniper_scan_idle:'Terbiar — menunggu untuk mengimbas',
sniper_auto_place:'Letak Auto di Pangkalan',
sniper_place_desc:'(meletakkan haiwan yang dicuri di slot pangkalan kamu)',
sniper_auto_drop:'Jatuhkan automatik haiwan yang tidak sepadan dalam Gelombang',
sniper_drop_desc:'(menjatuhkan haiwan liar yang tidak sepadan dengan penapis untuk menyegarkan kolam spawn)',
sniper_auto_hunt:'Memburu automatik',
sniper_hunt_desc:'(imbas bilik lain, lompat ke padanan terbaik)',
sniper_auto_sell:'Auto-Jual di Curi',
sniper_sell_desc:'(jual terburuk bila pangkalan penuh)',
sniper_lockdown:'Kunci ≤',
sniper_lockdown_hint:'Curi sasaran dari pangkalan dengan ≤ masa ini. 0 = hanya tak berkunci.',
sniper_join_grace:'Sertai rahmat',
sniper_start:'Mula',
sniper_stop:'Berhenti',
sniper_idle:'Senggang',
sniper_no_filter:'Tiada penapis',
sniper_waiting:'Menunggu permainan...',
sniper_hold_pause:'Memegang haiwan — jeda',
sniper_stolen_pause:'ada haiwan kita — jeda',
sniper_cooldown:'Penyejukan',
sniper_hopping:'Menukar pelayan...',
sniper_na:'Hendap N/A di lobi — sertai permainan dahulu',
sniper_wait_lock:'Menunggu data kunci...',
sniper_locked:'Pangkalan berkunci — melangkau...',
sniper_full_eggs:'Pangkalan penuh — telur sahaja, tak boleh jual',
sniper_stealing:'Mencuri',
sniper_dropped:'Dilepas',
sniper_holding:'Memegang',
sniper_place:'Letak di pangkalan!',
sniper_steal_mode:'[Curi]',
sniper_theft_nohop:'Haiwan sedang dicuri oleh',
sniper_nohop_suffix:'— tiada lompat',
sniper_sniping:'Menghendap:',
sniper_options:'Pilihan',
sniper_drop_fail_status:'Lepas gagal!',
sniper_hotkey_label:'Kekunci panas:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Gagal tangkap. Cuba lagi...',
sniper_our_pet_stolen:'Haiwan kita dicuri — 8s penyejukan',
sniper_hopping_short:'Melompat...',
sniper_base_full:'Pangkalan penuh',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'LARI',
pet_teleport_title:'Teleport',
pet_pickup_title:'Angkat',
owner_yours:'milik awak',
owner_wild:'Liar',
footer_gf:'Garpu Berminyak',
copy_ok:'disalin',
copy_failed:'Salinan Gagal',
s_invis_on_fly:'Halimunan semasa terbang',
snipe_walk_home:'Jalan pulang selepas mencuri',
snipe_walk_home_desc:'Jalan kembali ke pangkalan anda',
sniper_afk_sell:'AFK jual haiwan yang tidak sepadan',
sniper_afk_sell_desc:'(apabila idle 5s, jual haiwan yang tidak sepadan dengan filter mengikut nilai — gelombang sahaja)',
hb_fly:'TBG',
hb_lck:'KCI',
hb_inv:'GHB',
hb_cud:'PLK',
hb_pet:'HWN',
hb_snp:'PNJ',
hb_cfg:'TTN',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'AKN',
ban_title:'Sambungan disekat',
ban_sub:'Alamat IP anda telah dihadkan oleh Meeland',
ban_body:'Jangan risau — ini mudah diperbaiki! VPN percuma akan memberi anda IP baharu supaya anda boleh bermain semula.',
ban_pick:'Penyelesaian pantas — pilih satu:',
ban_warp:'percuma, tanpa had, persediaan satu klik',
ban_warp_store:'juga di App Store & Play Store sebagai "1.1.1.1"',
ban_proton:'tiada had data, 5 negara',
ban_steps:'Pasang → sambung → muat semula halaman ini. Itu sahaja!',
ban_ok:'Faham',
warn_title:'Sentiasa gunakan VPN',
warn_body:'Sentiasa main dengan <b>VPN</b> dihidupkan.',
warn_ok:'Faham',
loading:'Memuatkan',
tcl_loading:'Gelung menara penuh sedang berjalan. Tekan {key} untuk berhenti.',
hop_search:'Mencari perlawanan',
hop_match:'{name} dijumpai — menyertai',
hop_flee:'Melarikan diri daripada penceroboh',
hop_reconnect:'Menyambung semula',
hop_reload:'Memuat semula',
hop_fall:'Pulih daripada jatuh',
hop_join:'Menyertai bilik',
lock_off:'MATI',
lock_unlocked:'TERBUKA',
desc_intro:'MES memberi anda wallhack, penternakan automatik, koleksi haiwan peliharaan yang jarang berlaku, peningkatan kelajuan, penerbangan, halimunan dan banyak lagi di Meeland',
desc_free:'100% percuma, selalu. Ada maklum balas? Tinggalkan ⭐ ulasan positif — itu yang mengekalkan kemaskini.',
desc_h_movement:'Pergerakan',
desc_h_combat:'Pertempuran',
desc_h_tuning:'Penalaan',
desc_h_pets:'Haiwan & Kecurian',
desc_h_economy:'Ekonomi',
desc_h_custom:'Penyesuaian',
desc_h_extras:'Tambahan',
desc_fly:'Terbang',
desc_fly_d:'Space naik, F turun. Laju boleh laras.',
desc_speed:'Kejap',
desc_speed_d:'Shift untuk teleport serta-merta.',
desc_noclip:'Tembus Dinding',
desc_noclip_d:'Jalan tembus dinding.',
desc_walls:'Berjalan di Dinding',
desc_walls_d:'Panjat mana-mana permukaan.',
desc_waypts:'Titik Laluan',
desc_waypts_d:'Simpan 10 posisi. Teleport satu kunci. <kbd>Z</kbd> untuk togol.',
desc_invis:'Tidak kelihatan',
desc_invis_d:'Tekan CapsLock untuk hilang sepenuhnya.',
desc_fpv:'FPV',
desc_fpv_d:'Tekan <kbd>.</kbd> untuk tukar ke kamera orang pertama.',
desc_anti_invis:'Anti-Ghaib',
desc_anti_invis_d:'Lihat pemain halimunan sebagai hantu.',
desc_xray:'Penglihatan X-Ray',
desc_xray_d:'Lihat pemain melalui dinding dalam Misteri Pembunuhan. Merah = pembunuh, hijau = orang awam.',
desc_nodeathh:'Kebal',
desc_nodeath_d:'Kebal dari semua kerosakan.',
desc_antikb:'Anti-knockback',
desc_antikb_d:'Tak boleh ditolak.',
desc_attack:'Serang Segera',
desc_attack_d:'<kbd>G</kbd> teleport ke pemain terdekat dan pukul.',
desc_jumpgrav:'Lompat & Graviti',
desc_jumpgrav_d:'Pengganda boleh laras dalam Tetapan.',
desc_fov:'Kawalan FOV',
desc_fov_d:'Peluncur FOV orang pertama dan ketiga.',
desc_autoinvis:'Auto-Ghaib Semasa Terbang',
desc_autoinvis_d:'Hilang secara automatik apabila terbang.',
desc_sniper:'Hendap Haiwan',
desc_sniper_d:'Curi haiwan ditapis secara auto. Kedua-dua mod.',
desc_prv:'Bilik Persendirian',
desc_prv_d:'<kbd>PgDn</kbd> mencipta bilik persendirian dalam mod semasa dan menyertai secara automatik.',
desc_petbrow:'Pelayar Haiwan',
desc_petbrow_d:'<kbd>K</kbd> tunjuk semua haiwan. Isih, tapis, tangkap.',
desc_cuddle:'Panel Peluk',
desc_cuddle_d:'<kbd>J</kbd> senarai pemain mengikut jarak. Klik untuk ikut.',
desc_return:'Pulang Auto',
desc_return_d:'Teleport ke rumah selepas curi.',
desc_autolock:'Auto-Kunci',
desc_autolock_d:'Markas sentiasa berkunci.',
desc_fountain:'Auto-Pancuran',
desc_fountain_d:'Keuntungan kekal 1.5×. Auto-pembaharuan.',
desc_money:'Wang Percuma + Bintang + Berlian',
desc_money_d:'Tiada iklan diperlukan.',
desc_collect:'Kutip Auto',
desc_collect_d:'Pendapatan haiwan setiap 30s.',
desc_music:'Muzik bawa',
desc_music_d:'Muzik semasa mencuri. 15 genre.',
desc_chatfade:'Chat pudar',
desc_chatfade_d:'Kawal keterlihatan mesej. 5–120s.',
desc_emotes:'Emote terbang',
desc_emotes_d:'Emote rawak semasa terbang.',
desc_displays:'Lapisan Paparan',
desc_displays_d:'Koordinat, kaunter FPS dan info sasaran.',
desc_config:'Tetapan',
desc_config_d:'<kbd>M</kbd> untuk ciri, kekunci, kelajuan.',
desc_langs:'60 Bahasa',
desc_langs_d:'Terjemahan UI penuh.',
desc_tower:'Siap Menara',
desc_tower_d:'<kbd>Y</kbd> untuk menang Obby Tower serta-merta.',
desc_cats:'Skrin muat kucing',
desc_cats_d:'Kucing comel menggantikan pemuatan.',
desc_h_install:'Pasang',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Pasang <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> atau <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Klik Pasang di atas',
desc_inst_open:'Buka mana-mana permainan Meeland — ia terus berfungsi',
desc_mobile:'Mudah Alih (Android)',
desc_mob_ff:'Pasang <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox untuk Android</a> dari Play Store',
desc_mob_addon:'Buka Firefox → Menu → Tambahan → pasang <strong>Tampermonkey</strong>',
desc_mob_visit:'Lawat halaman ini di Firefox dan tap Pasang',
desc_mob_play:'Main Meeland — butang HUD sentuh muncul secara automatik',
desc_ios:'iOS: Apple menyekat sambungan pelayar dalam semua pelayar iOS (termasuk Firefox). Gunakan pelayar desktop atau Android.',
desc_h_privacy:'Privasi',
desc_privacy:'Sisi pelanggan sahaja — tiada data keluar dari pelayar anda'
});
_mk('tl','Filipino',{
close:'✕',
refresh:'↻',
go:'Pumunta ka',
set:'Itakda',
auto:'Awtomatik',
empty:'walang laman',
help_title:'Tulong',
players_title:'Mga Manlalaro',
players_empty:'Walang ibang manlalaro',
settings_title:'Mga Setting',
settings_reset:'I-reset',
tab_gameplay:'Laro',
tab_economy:'Ekonomiya',
tab_audio:'Tunog',
tab_advanced:'Abante',
tab_hud:'HUD',
tab_keys:'Mga Key',
tab_accounts:'Mga Account',
acct_current:'Kasalukuyan',
acct_new:'Bago',
acct_import:'I-import',
acct_switch:'Lipat',
acct_reload:'I-reload',
acct_delete:'Burahin',
acct_cancel:'Kanselahin',
acct_empty:'Walang laman',
acct_token_ph:'Token',
acct_copy:'Kopyahin',
acct_export:'I-export',
acct_rename:'Palitan ng pangalan',
acct_save:'I-save',
acct_name_len:'Ang pangalan ay dapat 4-12 na character',
acct_name_fail:'Nabigo ang pagpapalit ng pangalan',
acct_invalid:'Hindi wasto',
acct_ready:'Handa na ang account. Isara ang Meeland, palitan ang IP, saka i-reload.',
acct_ip_note:'Laging gumamit ng VPN at palitan ang IP kapag nagpapalit ng account.',
acct_howto:'1. I-click ang Kopyahin upang kopyahin ang link ng account na ito.\n2. Sa ibang browser o device — o kasama ang isang kaibigan — buksan ang MES.\n3. I-click ang I-import at i-paste ang link.',
sh_movement:'Galaw',
sh_defense:'Depensa',
sh_camera:'Kamera',
sh_overlays:'Mga Overlay',
sh_behaviour:'Pag-uugali',
sh_buttons:'Mga Pindutan',
sh_language:'Wika',
sh_chat:'Usapan',
sh_waves:'Waves',
sh_steal_a_pet:'Magnakaw ng alagang hayop',
sh_tower:'Tower',
sh_misc_multi:'Iba pa (multi-mode)',
s_noclip:'Tembus Pader',
s_fly:'Lumipad',
s_fly_emotes:'Mga Emote sa Paglipad',
s_base_speed:'Base na Bilis',
s_jump_mult:'Tumalon Taas',
s_grav_mult:'Grabidad',
s_walk_up_walls:'umakyat sa mga pader',
s_carry_normalize:'Dala ang Bilis + Tumalon',
s_invincibility:'Hindi Matatalo',
s_anti_kb:'Anti-Tulak',
s_invisible:'Hindi Nakikita',
s_xray_infection:'X-Ray (Misteryo ng Pagpatay)',
s_ghost_mode:'Mode multo',
s_flee_intruder:'Tumakas kung may manghihimasok',
s_first_person:'Unang Panauhing Tanaw',
s_fov_first_person:'FOV (Unang Panauhin)',
s_fov_third_person:'FOV (Ikatlong Panauhin)',
s_fov_vertical_mult:'Patayong FOV Multiplier',
s_auto_lock:'Kandado ng Base',
s_auto_fountain:'Awtomatikong Fountain (1.5×)',
s_daily_coins:'Araw-araw na Barya',
s_stars:'Bituin',
s_diamonds_tower:'Diamante (Tore)',
s_tower_loop:'Loop ng tore',
s_auto_roll_x25:'Auto roll x25 swerte',
s_auto_craft:'Awtomatikong craft',
s_auto_vip_sword:'Bumili ng VIP awtomatiko',
s_auto_vip_waves:'Bumili ng VIP awtomatiko (Mga Alon)',
s_direct_kill:'Direktang kill spam',
s_direct_kill_rate:'Bilis ng kill',
s_auto_buy_upgrades:'Mga Pag-upgrade ng Auto Buy',
s_boost_coins:'Auto Upgrade: Mga barya',
s_boost_diamonds:'Auto Upgrade: Mga diamante',
s_boost_luck:'Auto Upgrade: Swerte',
s_auto_unlock_areas:'mga lugar ng auto unlock',
s_auto_rebirth:'auto rebirth',
s_auto_join_tp:'Teleport sa Pinakamataas na Lugar',
s_hide_kill_rewards:'Itago ang Kill Rewards',
s_hide_roll_anim:'Itago ang Roll Animation',
rng_title:'Mga Pet RNG Cheat',
rng_sec_rolling:'Gumugulong',
rng_sec_crafting:'Paggawa',
rng_sec_combat:'Labanan',
rng_sec_upgrades:'Mga upgrade',
rng_sec_areas:'Mga lugar',
rng_actions:'Mga aksyon',
log_craft:'craft',
log_success:'TAGUMPAY',
log_fail:'mabigo',
log_unlocking_area:'Lugar sa pag-unlock',
log_area_unlocked:'Naka-unlock ang lugar',
log_equipped:'Nilagyan',
log_bought_upgrade:'Bumili ng upgrade',
log_teleported_to:'Naka-teleport sa',
log_rebirthing:'Muling pagsilang',
h_rng:'rng',
h_accts:'Mga Account',
s_auto_collect:'Awtomatikong Kolekta ng Kita',
s_collect_interval:'Pagitan ng Koleksyon',
s_chat_fade:'Oras ng Pagkawala ng Chat',
s_name_colors:'Mga kulay ng username',
s_chat_enhance:'Mga pagpapahusay sa chat',
mes_hint:'Tip: isama ang "mes" sa iyong username para sa rainbow animated effect!',
s_carry_tune:'Tugtog sa Pagdala (Magnakaw)',
s_pet_pickup_radius:'Lawak ng Pagnanakaw ng Hayop',
s_carry_vol:'Lakas ng Tugtog sa Pagdala',
carry_tune_default:'Default',
carry_tune_silent:'Tahimik',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Mga asul',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klasikal',
carry_tune_electronic:'Elektroniko',
carry_tune_epic:'Epiko',
carry_tune_folk:'Kabayan',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'metal',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Bato',
s_cont_cuddle:'Tuloy-tuloy na Cuddle',
s_protips:'Mga Pro Tip',
s_hideprotips:'Itago ang aking mga Pro Tip',
s_show_exp_modes:'Ipakita ang mga eksperimental na mode',
s_showcoords:'Ipakita ang mga koordinado',
s_showfps:'Ipakita ang FPS',
s_showtargetinfo:'Ipakita ang impormasyon ng target',
s_showobj:'Ipakita ang Entidad / Bilang ng Malla',
s_copy_dbg:'Kopyahin ang mga debug log',
s_copy_json:'Kopyahin ang JSON',
s_clear_dbg:'I-clear',
h_fly:'Lipad',
h_speed:'Bilis Hack',
h_waypoints:'Mga waypoint',
h_autolock:'Kandado',
h_invisible:'Hindi Nakikita',
h_cuddle:'magkayakap',
h_pets:'Mga alagang hayop',
h_snipe:'lagot',
h_help:'Tulong',
h_settings:'Mga Setting',
h_prv:'Pribadong Silid',
h_tc:'Kumpletuhin ang Tower',
h_tcl:'Loop ng tore',
kb_fly:'Lipad (toggle/pataas)',
kb_fly_down:'Lipad pababa',
kb_set_home:'Itakda ang Tahanan',
kb_home:'Bahay',
kb_back:'Bumalik',
kb_cuddle:'Panel ng yakap',
kb_settings:'Mga Setting',
kb_pets:'Browser ng alaga',
kb_slots:'Mga puwang ng waypoint',
kb_snipe:'Panel ng sniper',
kb_snipe_toggle:'Naka-on/Naka-off ang Sniper',
kb_attack:'Atake',
kb_help:'Tulong / Paglalarawan',
kb_tower:'Kumpletuhin ang Tower',
kb_tower_loop:'Loop ng tore',
kb_invisible:'Hindi Nakikita',
kb_first_person:'Unang panauhan',
kb_autolock:'Auto-lock ng base',
kb_prv:'Pribadong Silid',
kb_rng:'RNG',
kb_accts:'Mga Account',
pets_title:'Mga Pet',
pets_search_placeholder:'hal. wild kitty, golden O brilyante, (golden OR emerald) wild',
pets_hint:'Mga salita ay pinagsama-sama AND. Gamitin OR para sa alternatibo, panaklong para i-grupo. * o % wildcard. Maglagay ng - bago sa isang salita para ibukod ito.',
pets_empty:'Walang nahanap na pet sa silid na ito',
pt_name:'Pangalan',
pt_mut:'Mutation',
pt_rar:'Pambihira',
pt_owner:'May-ari',
pt_worth:'Halaga',
pt_income:'Kita/s',
pt_dist:'Layo',
slots_title:'Mga Puwang ng Waypoint',
sniper_title:'alagang sniper',
sniper_tbl_pet:'Alagang hayop',
sniper_tbl_owner:'May-ari',
sniper_tbl_lock:'Lock',
sniper_placeholder:'hal. halo, golden OR diamond, emerald dragon',
sniper_hint:'Mga salita AND. Gamitin OR para sa alternatibo, panaklong para i-grupo. * o % wildcard. Maglagay ng - bago sa isang salita para ibukod ito.',
sniper_room_col:'Silid',
sniper_scans_col:'Mga scan',
sniper_top_pet_col:'Nangungunang Alagang Hayop',
sniper_top_worth_col:'Nangungunang Worth',
sniper_top_owner_col:'Nangungunang May-ari',
sniper_age_col:'Edad',
sniper_join_btn:'Sumali',
sniper_full:'Puno',
sniper_join_failed:'Puno ang target na kwarto',
sniper_scanning_rooms:'Naghahanap ng ibang silid…',
sniper_scan_off:'auto hunt off',
sniper_scan_next:'Susunod na pag-scan sa',
sniper_scan_idle:'Idle — naghihintay na mag-scan',
sniper_auto_place:'Auto-ilagay sa base',
sniper_place_desc:'(inilalagay ang ninakaw na hayop sa iyong base slot)',
sniper_auto_drop:'Awtomatikong i-drop ang mga hindi tugmang alaga sa Waves',
sniper_drop_desc:'(ibinabagsak ang mga ligaw na alagang hindi tugma sa filter upang i-refresh ang spawn pool)',
sniper_auto_hunt:'Awtomatikong Pangangaso',
sniper_hunt_desc:'(i-scan ang ibang kwarto, lumipat sa pinakamahusay na tugma)',
sniper_auto_sell:'Auto-sell sa Steal',
sniper_sell_desc:'(ibenta pinakamababa kung puno ang base)',
sniper_lockdown:'lockdown ≤',
sniper_lockdown_hint:'Magnakaw sa base na may ≤ ganitong oras. 0 = hindi naka-lock lang.',
sniper_join_grace:'Sumali sa grasya',
sniper_start:'Simulan',
sniper_stop:'Itigil',
sniper_idle:'Walang ginagawa',
sniper_no_filter:'Walang filter',
sniper_waiting:'Hinihintay ang laro...',
sniper_hold_pause:'May hawak na pet — naka-pause',
sniper_stolen_pause:'may pet natin — naka-pause',
sniper_cooldown:'Cooldown',
sniper_hopping:'Lumilipat ng server...',
sniper_na:'Sniper N/A sa lobby — sumali muna sa laro',
sniper_wait_lock:'Hinihintay ang lock data...',
sniper_locked:'Base naka-lock — nilalampasan...',
sniper_full_eggs:'Base puno — itlog lang, di maibenta',
sniper_stealing:'Nagnanakaw',
sniper_dropped:'Na-drop',
sniper_holding:'Hawak',
sniper_place:'Ilagay sa base!',
sniper_steal_mode:'[Magnakaw]',
sniper_theft_nohop:'Pet ninanakaw ng',
sniper_nohop_suffix:'— walang hop',
sniper_sniping:'Pag-sniping:',
sniper_options:'Options',
sniper_drop_fail_status:'Drop nabigo!',
sniper_hotkey_label:'Hotkey:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Hindi nakuha. Uulitin...',
sniper_our_pet_stolen:'Pet natin ninakaw — 8s cooldown',
sniper_hopping_short:'Lumalipat...',
sniper_base_full:'Puno ang base',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'TAKBO',
pet_teleport_title:'Teleport',
pet_pickup_title:'kunin',
owner_yours:'sa iyo',
owner_wild:'Ligaw',
footer_gf:'Mamantika na tinidor',
copy_ok:'Kinopya',
copy_failed:'Nabigo ang Kopya',
s_invis_on_fly:'Hindi nakikita kapag lumilipad',
snipe_walk_home:'Maglakad pauwi pagkatapos magnakaw',
snipe_walk_home_desc:'Maglakad pabalik sa iyong base',
sniper_afk_sell:'AFK ibenta ang hindi tugmang mga alaga',
sniper_afk_sell_desc:'(kapag idle 5s, ibenta ang mga hayop na hindi tugma sa filter ayon sa halaga — alon lang)',
hb_fly:'LPD',
hb_lck:'KND',
hb_inv:'KWL',
hb_cud:'YKP',
hb_pet:'ALE',
hb_snp:'SNP',
hb_cfg:'SET',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ACC',
ban_title:'Koneksyon na-block',
ban_sub:'Ang iyong IP address ay pinaghigpitan ng Meeland',
ban_body:'Huwag mag-alala — madaling ayusin ito! Ang libreng VPN ay magbibigay sa iyo ng bagong IP para makapaglaro ka ulit.',
ban_pick:'Mabilis na solusyon — pumili ng isa:',
ban_warp:'libre, walang limitasyon, one-click setup',
ban_warp_store:'meron din sa App Store at Play Store bilang "1.1.1.1"',
ban_proton:'walang data limit, 5 bansa',
ban_steps:'I-install → kumonekta → i-refresh ang page na ito. Iyon lang!',
ban_ok:'Naintindihan',
warn_title:'Palaging gumamit ng VPN',
warn_body:'Laging maglaro nang naka-on ang <b>VPN</b>.',
warn_ok:'Naintindihan',
loading:'Naglo-load',
tcl_loading:'Tumatakbo ang kumpletong loop ng tore. Pindutin ang {key} para huminto.',
hop_search:'Hinahanap ang laban',
hop_match:'Natagpuan ang {name} — sumasali',
hop_flee:'Tumatakas mula sa manghihimasok',
hop_reconnect:'Kumokonekta muli',
hop_reload:'Nagre-reload',
hop_fall:'Nagpapagaling mula sa pagkahulog',
hop_join:'Sumasali sa kuwarto',
lock_off:'PATAY',
lock_unlocked:'BUKAS',
desc_intro:'Binibigyan ka ng MES ng wallhack, auto-farming, bihirang koleksyon ng alagang hayop, speed boost, flight, invisibility, at higit pa sa Meeland',
desc_free:'100% libre, palagi. May feedback? Mag-iwan ng ⭐ positibong review — iyon ang nagpapanatili ng mga update.',
desc_h_movement:'Kilos',
desc_h_combat:'Labanan',
desc_h_tuning:'Pagtono',
desc_h_pets:'Pet & Pagnanakaw',
desc_h_economy:'Ekonomiya',
desc_h_custom:'Pagpapasadya',
desc_h_extras:'Dagdag',
desc_fly:'Lipad',
desc_fly_d:'Space pataas, F pababa. Adjustable ang bilis.',
desc_speed:'kumurap',
desc_speed_d:'Shift para mag-teleport agad.',
desc_noclip:'Tembus Pader',
desc_noclip_d:'Lakad sa pader.',
desc_walls:'Maglakad sa Pader',
desc_walls_d:'Umakyat sa anumang ibabaw.',
desc_waypts:'Mga waypoint',
desc_waypts_d:'I-save 10 posisyon. Isang-key teleport. <kbd>Z</kbd> para mag-toggle.',
desc_invis:'Di-makita',
desc_invis_d:'Pindutin ang CapsLock para tuluyang mawala.',
desc_fpv:'FPV',
desc_fpv_d:'Pindutin ang <kbd>.</kbd> upang lumipat sa first-person camera.',
desc_anti_invis:'Anti-Invisible',
desc_anti_invis_d:'Makita ang mga invisible na manlalaro bilang multo.',
desc_xray:'Paningin ng X-Ray',
desc_xray_d:'Tingnan ang mga manlalaro sa pamamagitan ng mga pader sa Misteryo ng Pagpatay. Pula = mamamatay-tao, berde = sibilyan.',
desc_nodeathh:'Hindi Mamamatay',
desc_nodeath_d:'Immune sa lahat ng pinsala.',
desc_antikb:'Anti-Tulak',
desc_antikb_d:'Hindi maaaring itulak.',
desc_attack:'Instant na Atake',
desc_attack_d:'<kbd>G</kbd> teleport sa pinakamalapit na manlalaro at palo.',
desc_jumpgrav:'Talon at Grabidad',
desc_jumpgrav_d:'Mga naaayos na multiplier sa Mga Setting.',
desc_fov:'Kontrol ng FOV',
desc_fov_d:'Mga slider ng FOV sa una at pangatlong panauhan.',
desc_autoinvis:'Auto-Invisible sa Paglipad',
desc_autoinvis_d:'Kusang maging invisible kapag lumilipad.',
desc_sniper:'alagang sniper',
desc_sniper_d:'Auto-nakaw ng na-filter na pet. Parehong mode.',
desc_prv:'Pribadong Silid',
desc_prv_d:'<kbd>PgDn</kbd> gumagawa ng pribadong silid sa kasalukuyang mode at sumali nang awtomatiko.',
desc_petbrow:'Browser ng Alagang Hayop',
desc_petbrow_d:'<kbd>K</kbd> ipakita lahat ng pet. Ayusin, i-filter, hulihin.',
desc_cuddle:'cuddle panel',
desc_cuddle_d:'<kbd>J</kbd> listahan ng manlalaro ayon sa layo. I-click para sundan.',
desc_return:'Auto Balik',
desc_return_d:'Teleport pauwi pagkatapos magnakaw.',
desc_autolock:'Kandado',
desc_autolock_d:'Palaging naka-lock ang base.',
desc_fountain:'Awtomatikong Fountain',
desc_fountain_d:'Permanenteng 1.5× kita. Auto-renew.',
desc_money:'Libreng Pera + Bituin + Diamante',
desc_money_d:'Walang ads kailangan.',
desc_collect:'Auto-Kolekta',
desc_collect_d:'Kita sa pet tuwing 30s.',
desc_music:'magdala ng tune',
desc_music_d:'Musika habang nagnanakaw. 15 genre.',
desc_chatfade:'kumupas ang chat',
desc_chatfade_d:'Kontrolin ang visibility ng mensahe. 5–120s.',
desc_emotes:'Mga Fly Emote',
desc_emotes_d:'Random emotes habang lumilipad.',
desc_displays:'Mga Overlay ng Display',
desc_displays_d:'Mga coordinate, FPS counter at target info.',
desc_config:'Mga Setting',
desc_config_d:'<kbd>M</kbd> para sa mga feature, key, bilis.',
desc_langs:'60 Wika',
desc_langs_d:'Buong UI na salin.',
desc_tower:'Kumpletuhin ang Tower',
desc_tower_d:'<kbd>Y</kbd> para instant-panalo sa Obby Tower.',
desc_cats:'Mga screen ng paglo-load na pusa',
desc_cats_d:'Mga cute na pusa ang pumapalit sa pag-load.',
desc_h_install:'I-install',
desc_desktop:'Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'I-install ang <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> o <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'I-click ang Install sa itaas',
desc_inst_open:'Buksan ang kahit anong Meeland game — gumagana na agad',
desc_mobile:'Mobile (Android)',
desc_mob_ff:'I-install ang <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox para sa Android</a> mula sa Play Store',
desc_mob_addon:'Buksan Firefox → Menu → Add-ons → i-install ang <strong>Tampermonkey</strong>',
desc_mob_visit:'Bisitahin ang page na ito sa Firefox at i-tap ang Install',
desc_mob_play:'Maglaro ng Meeland — automatic na lalabas ang touch HUD buttons',
desc_ios:'iOS: Bina-block ng Apple ang browser extensions sa lahat ng iOS browser (kasama Firefox). Gumamit ng desktop o Android browser.',
desc_h_privacy:'Pagkapribado',
desc_privacy:'Client-side lang — walang data na lumalabas sa browser mo'
});
_mk('my','မြန်မာ',{
close:'✕',
refresh:'↻',
go:'သွား',
set:'သတ်မှတ်',
auto:'အော်တို',
empty:'ဗလာ',
help_title:'အကူအညီ',
players_title:'ကစားသမားများ',
players_empty:'အခြားကစားသမား မတွေ့ပါ',
settings_title:'ဆက်တင်များ',
settings_reset:'ပြန်ညှိ',
tab_gameplay:'ဂိမ်းကစားခြင်း',
tab_economy:'စီးပွားရေး',
tab_audio:'အသံ',
tab_advanced:'အဆင့်မြင့်',
tab_hud:'HUD',
tab_keys:'ခလုတ်များ',
tab_accounts:'အကောင့်များ',
acct_current:'လက်ရှိ',
acct_new:'အသစ်',
acct_import:'တင်သွင်း',
acct_switch:'ပြောင်း',
acct_reload:'ပြန်လည်ဖွင့်',
acct_delete:'ဖျက်',
acct_cancel:'ပယ်ဖျက်',
acct_empty:'ဗလာ',
acct_token_ph:'တိုကင်',
acct_copy:'ကူးယူ',
acct_export:'ထုတ်ပိုး',
acct_rename:'အမည်ပြောင်း',
acct_save:'သိမ်းဆည်း',
acct_name_len:'အမည်သည် 4-12 လုံး ဖြစ်ရမည်',
acct_name_fail:'အမည်ပြောင်းရန် မအောင်မြင်',
acct_invalid:'မမှန်ကန်',
acct_ready:'အကောင့် အသင့်ဖြစ်ပြီ။ Meeland ပိတ်ပြီး IP ပြောင်းပြီး ပြန်လည်ဖွင့်ပါ။',
acct_ip_note:'အကောင့်ပြောင်းသည့်အခါ အမြဲ VPN သုံး၍ IP ပြောင်းပါ။',
acct_howto:'1. ဤအကောင့်၏ လင့်ခ်ကို ကူးယူရန် ကူးယူ ကိုနှိပ်ပါ။\n2. အခြားဘရောက်ဆာ သို့မဟုတ် စက်ပစ္စည်းတွင် — သို့မဟုတ် သူငယ်ချင်းနှင့် — MES ကိုဖွင့်ပါ။\n3. တင်သွင်း ကိုနှိပ်ပြီး လင့်ခ်ကို ကပ်ပါ။',
sh_movement:'ရွေ့လျားမှု',
sh_defense:'ခုခံ',
sh_camera:'ကင်မရာ',
sh_overlays:'အပေါ်ယံ',
sh_behaviour:'အပြုအမူ',
sh_buttons:'ခလုတ်များ',
sh_language:'ဘာသာစကား',
sh_chat:'စကားစမြည်',
sh_waves:'Waves',
sh_steal_a_pet:'အိမ်မွေးတိရစ္ဆာန် ခိုးပါ',
sh_tower:'Tower',
sh_misc_multi:'အခြား (မုဒ်မျိုးစုံ)',
s_noclip:'နံရံဖောက်',
s_fly:'ပျံသန်းပါ။',
s_fly_emotes:'ပျံ အီမုတ်',
s_base_speed:'အခြေခံအမြန်နှုန်း',
s_jump_mult:'အမြင့်ခုန်',
s_grav_mult:'ဆွဲငင်အား',
s_walk_up_walls:'ဝေါလ်များကို လှမ်းတက်ပါ။',
s_carry_normalize:'အမြန် + ခုန်ပါ။',
s_invincibility:'မရှုံးနိုင်',
s_anti_kb:'အန်တီ-နောက်တွန်း',
s_invisible:'မမြင်ရ',
s_xray_infection:'ဓာတ်မှန် (လူသတ်မှု ပဟေဋ္ဌိ)',
s_ghost_mode:'သရဲမုဒ်',
s_flee_intruder:'ကျူးကျော်သူရှိလျှင် ထွက်ပြေး',
s_first_person:'ပထမလူမြင်ကွင်း',
s_fov_first_person:'FOV (ပထမလူ)',
s_fov_third_person:'FOV (တတိယလူ)',
s_fov_vertical_mult:'ဒေါင်လိုက် FOV မြှောက်ကိန်း',
s_auto_lock:'အော်တို-လော့ အခြေစိုက်',
s_auto_fountain:'အော်တို-ပန်းဖောင်တိန် (1.5×)',
s_daily_coins:'နေ့စဉ် ဒင်္ဂါး',
s_stars:'ကြယ်များ',
s_diamonds_tower:'စိန်များ (မျှော်စင်)',
s_tower_loop:'တာဝါလမ်းကြောင်း',
s_auto_roll_x25:'အလိုအလျောက် လိပ် x25 ကံ',
s_auto_craft:'အော်တို-ကရက်ဖ်',
s_auto_vip_sword:'VIP အလိုအလျောက် ဝယ်ပါ',
s_auto_vip_waves:'VIP အလိုအလျောက် ဝယ်ပါ (လှိုင်း)',
s_direct_kill:'တိုက်ရိုက် သတ်ခြင်း စပမ်း',
s_direct_kill_rate:'သတ်နှုန်း',
s_auto_buy_upgrades:'အော်တိုဝယ်ယူ အဆင့်မြှင့်တင်မှုများ',
s_boost_coins:'အလိုအလျောက် အဆင့်မြှင့်တင်ခြင်း- ဒင်္ဂါးပြားများ',
s_boost_diamonds:'အလိုအလျောက် အဆင့်မြှင့်ခြင်း- စိန်များ',
s_boost_luck:'အလိုအလျောက် အဆင့်မြှင့်ခြင်း- ကံကောင်းခြင်း',
s_auto_unlock_areas:'အလိုအလျောက်သော့ဖွင့်ဧရိယာများ',
s_auto_rebirth:'အလိုအလျောက်ပြန်လည်မွေးဖွားခြင်း။',
s_auto_join_tp:'အမြင့်ဆုံးဧရိယာသို့ တယ်လီပို့ခြင်း။',
s_hide_kill_rewards:'Kill Rewards ကို ဝှက်ပါ။',
s_hide_roll_anim:'Roll Animation ကို ဖျောက်ပါ။',
rng_title:'အိမ်မွေးတိရစ္ဆာန် RNG လှည့်စားမှုများ',
rng_sec_rolling:'မမြင်အောင်',
rng_sec_crafting:'လက်မှုပညာ',
rng_sec_combat:'တိုက်ခိုက်ရေး',
rng_sec_upgrades:'အဆင့်မြှင့်တင်မှုများ',
rng_sec_areas:'နယ်မြေများ',
rng_actions:'လုပ်ဆောင်ချက်များ',
log_craft:'အကောင်းစား',
log_success:'အောင်မြင်မှု',
log_fail:'FAIL။',
log_unlocking_area:'သော့ဖွင့်ဧရိယာ',
log_area_unlocked:'ဧရိယာ သော့ဖွင့်ထားသည်။',
log_equipped:'တပ်ဆင်ထားသည်။',
log_bought_upgrade:'အဆင့်မြှင့်တင်ဝယ်ယူခဲ့သည်။',
log_teleported_to:'သို့ တယ်လီပို့သည်။',
log_rebirthing:'ပြန်လည်မွေးဖွားခြင်း။',
h_rng:'rng',
h_accts:'အကောင့်များ',
s_auto_collect:'အော်တို-စုဆောင်း ဝင်ငွေ',
s_collect_interval:'စုဆောင်းကြား',
s_chat_fade:'ချတ်ပျောက်ချိန်',
s_name_colors:'အသုံးပြုသူအမည်အရောင်များ',
s_chat_enhance:'ချတ်တိုးတက်မှုများ',
mes_hint:'အကြံပြုချက်: သင့်အသုံးပြုသူအမည်တွင် "mes" ကို ထည့်သွင်းပါ၊ သက်တံ ကာတွန်း အကျိုးသက်ရောက်မှုအတွက်!',
s_carry_tune:'သယ်ဆောင်သည့်သီချင်း (ခိုးယူ)',
s_pet_pickup_radius:'တိရစ္ဆာန် ခိုးမှု အကွာ',
s_carry_vol:'သယ်ယူမှုအသံ',
carry_tune_default:'မူရင်း',
carry_tune_silent:'တိတ်ဆိတ်',
carry_tune_ambient:'ပတ်ဝန်းကျင်',
carry_tune_blues:'ဘလူး',
carry_tune_chiptune:'ချိပ်တျုန်',
carry_tune_classical:'ကလပ်စီ',
carry_tune_electronic:'ဒီဂျစ်တယ်',
carry_tune_epic:'မဟာကာဗျ',
carry_tune_folk:'တိုင်းရင်းသား',
carry_tune_funk:'ဖန်',
carry_tune_jazz:'ဂျက်',
carry_tune_lofi:'လို-ဖိုင်',
carry_tune_metal:'မက်တယ်',
carry_tune_pop:'ပေါ်ပ်',
carry_tune_punk:'ပန်',
carry_tune_reggae:'ရက်ဂေး',
carry_tune_rock:'ရော့',
s_cont_cuddle:'ဆက်တိုက် ဖက်ထား',
s_protips:'အကြံပြုချက်များ',
s_hideprotips:'ကျွန်ုပ်၏ အကြံပြုချက်များ ဝှက်ပါ',
s_show_exp_modes:'စမ်းသပ်မုဒ်များကို ပြပါ',
s_showcoords:'ကိုဩဒီနိတ်များ ပြပါ',
s_showfps:'FPS ပြပါ။',
s_showtargetinfo:'ပစ်မှတ်အချက်အလက်ပြပါ',
s_showobj:'အင်တစ်တီ / မက်ရှ် အရေအတွက် ပြပါ',
s_copy_dbg:'ဒီဘဂ် မှတ်တမ်းများ ကူးယူပါ',
s_copy_json:'JSON ကူးယူပါ',
s_clear_dbg:'ရှင်းပါ',
h_fly:'ပျံ',
h_speed:'အမြန်နှုန်း',
h_waypoints:'လမ်းညွှန်',
h_autolock:'အော်တို-လော့',
h_invisible:'မမြင်ရ',
h_cuddle:'ဖက်ထား',
h_pets:'အိမ်မွေး',
h_snipe:'စနိုက်',
h_help:'အကူအညီ',
h_settings:'ဆက်တင်',
h_prv:'ကိုယ်ရေးကိုယ်တာ အခန်း',
h_tc:'မျှော်စင် ပြီးစီး',
h_tcl:'တာဝါလမ်းကြောင်း',
kb_fly:'ပျံ (ခလုတ်/အပေါ်)',
kb_fly_down:'ပျံ အောက်',
kb_set_home:'အိမ် သတ်မှတ်',
kb_home:'အိမ်',
kb_back:'နောက်သို့',
kb_cuddle:'ဖက်ထား ပန်နယ်',
kb_settings:'ဆက်တင်',
kb_pets:'အိမ်မွေး ဘရောက်ဇာ',
kb_slots:'လမ်းညွှန် အကွက်',
kb_snipe:'စနိုက်ပါ ပန်နယ်',
kb_snipe_toggle:'စနိုက်ပါ ဖွင့်/ပိတ်',
kb_attack:'တိုက်ခိုက်',
kb_help:'အကူအညီ / ဖော်ပြချက်',
kb_tower:'မျှော်စင် ပြီးစီး',
kb_tower_loop:'တာဝါလမ်းကြောင်း',
kb_invisible:'မမြင်ရ',
kb_first_person:'ပထမလူ',
kb_autolock:'အော်တို-လော့ အခြေစိုက်',
kb_prv:'ကိုယ်ရေးကိုယ်တာ အခန်း',
kb_rng:'RNG',
kb_accts:'အကောင့်များ',
pets_title:'အိမ်မွေးတိရစ္ဆာန်များ',
pets_search_placeholder:'ဥပမာ တောကြောင်၊ ရွှေ သို့မဟုတ် စိန်၊ (ရွှေ သို့မဟုတ် မြ) အရိုင်း',
pets_hint:'စကားလုံးများကို AND နဲ့ ပေါင်းတယ်။ OR သုံးပါ အခြားစနစ်အတွက်၊ ကွင်းစကွင်းပိတ် အုပ်စုအတွက်။ * သို့ % wildcard။ စကားလုံးတစ်လုံးကို ဖယ်ထုတ်ရန် ရှေ့တွင် - ထားပါ။',
pets_empty:'ဤအခန်းတွင် အိမ်မွေး မတွေ့ပါ',
pt_name:'အမည်',
pt_mut:'ပြောင်းလဲ',
pt_rar:'ရှားပါး',
pt_owner:'ပိုင်ရှင်',
pt_worth:'တန်ဖိုး',
pt_income:'ဝင်ငွေ/s',
pt_dist:'အကွာ',
slots_title:'လမ်းညွှန် အကွက်',
sniper_title:'အိမ်မွေး စနိုက်ပါ',
sniper_tbl_pet:'အိမ်မွေးတိရစ္ဆာန်',
sniper_tbl_owner:'ပိုင်ရှင်',
sniper_tbl_lock:'သော့ခတ်',
sniper_placeholder:'ဥပမာ halo, golden OR diamond, emerald dragon',
sniper_hint:'စကားလုံးများ AND။ OR သုံးပါ အခြားအတွက်၊ ကွင်းစကွင်းပိတ် အုပ်စုအတွက်။ * သို့ % wildcard။ စကားလုံးတစ်လုံးကို ဖယ်ထုတ်ရန် ရှေ့တွင် - ထားပါ။',
sniper_room_col:'အခန်း',
sniper_scans_col:'သွားတာကို',
sniper_top_pet_col:'ထိပ်တန်း အိမ်မွေးတိရစ္ဆာန်',
sniper_top_worth_col:'ထိပ်တန်းတန်ဖိုး',
sniper_top_owner_col:'ထိပ်တန်းပိုင်ရှင်',
sniper_age_col:'အသက်',
sniper_join_btn:'ပူးပေါင်းပါ',
sniper_full:'ပြည့်',
sniper_join_failed:'ပစ်မှတ်က အခန်းပြည့်',
sniper_scanning_rooms:'အခြားအခန်းများ ရှာဖွေနေသည်…',
sniper_scan_off:'အလိုအလျောက်လိုက်ရှာသည်။',
sniper_scan_next:'နောက်တစ်ခု စကင်ဖတ်ပါ။',
sniper_scan_idle:'မလှုပ်မရှား — စကင်န်ဖတ်ရန် စောင့်နေသည်။',
sniper_auto_place:'အခြေစိုက်ရာတွင် အလိုအလျောက်တင်ခြင်း',
sniper_place_desc:'(ခိုးယူထားသောတိရစ္ဆာန်ကို သင်၏အခြေစိုက်နေရာ slot တွင် ထားသည်)',
sniper_auto_drop:'Waves တွင် မကိုက်ညီသော အိမ်မွေးတိရစ္ဆာန်များကို အလိုအလျောက် ချပါ',
sniper_drop_desc:'(filter နှင့် မကိုက်ညီသော တောရိုင်းအိမ်မွေးတိရစ္ဆာန်များကို ချ၍ spawn pool ကို ပြန်လည်စိမ်းလန်းစေသည်)',
sniper_auto_hunt:'အလိုအလျောက် အမဲလိုက်',
sniper_hunt_desc:'(အခြားအခန်းများကို စကင်ဖတ်ပြီး အကောင်းဆုံး ကိုက်ညီမှုသို့ ခုန်ပါ)',
sniper_auto_sell:'Steal တွင် အော်တို-ရောင်း',
sniper_sell_desc:'(အခြေစိုက် ပြည့်ရင် အဆိုးဆုံး ရောင်း)',
sniper_lockdown:'လော့ခ်ချခြင်း ≤',
sniper_lockdown_hint:'≤ ဤအချိန် ကျန်ရှိသော အခြေစိုက်များမှ ခိုး။ 0 = မလော့ထားသာ။',
sniper_join_grace:'ကျေးဇူးတော်နှင့်ပူးပေါင်းပါ။',
sniper_start:'စတင်',
sniper_stop:'ရပ်',
sniper_idle:'အားလပ်',
sniper_no_filter:'စစ်ထုတ်မှု မရှိ',
sniper_waiting:'ဂိမ်းကို စောင့်နေ...',
sniper_hold_pause:'အိမ်မွေး ကိုင်ထား — ခေတ္တရပ်',
sniper_stolen_pause:'ကျွန်တော်တို့ အိမ်မွေး ရှိနေ — ခေတ္တရပ်',
sniper_cooldown:'အအေး',
sniper_hopping:'ဆာဗာ ပြောင်းနေ...',
sniper_na:'လော်ဘီတွင် စနိုက်ပါ မရနိုင် — အရင် ဂိမ်းဝင်ပါ',
sniper_wait_lock:'လော့ ဒေတာ စောင့်နေ...',
sniper_locked:'အခြေစိုက် လော့ထား — ကျော်...',
sniper_full_eggs:'အခြေစိုက် ပြည့် — ဥ သာရှိ၊ ရောင်းလို့ မရ',
sniper_stealing:'ခိုးနေ',
sniper_dropped:'ချ ပြီး',
sniper_holding:'ကိုင်ထား',
sniper_place:'အခြေစိုက်တွင် ထား!',
sniper_steal_mode:'[ခိုးယူ]',
sniper_theft_nohop:'အိမ်မွေး ခိုးခံရနေ',
sniper_nohop_suffix:'— ကူးမှု မရှိ',
sniper_sniping:'စနိုက်နေ:',
sniper_options:'ရွေးချယ်စရာများ',
sniper_drop_fail_status:'ချ မအောင်!',
sniper_hotkey_label:'ဟော့ကီး:',
sniper_panel_label:'ပန်နယ်:',
sniper_grab_fail:'ဖမ်း မအောင်။ ထပ်ကြိုးစား...',
sniper_our_pet_stolen:'ကျွန်တော်တို့ အိမ်မွေး ခိုးခံရ — 8s အအေး',
sniper_hopping_short:'ကူးနေ...',
sniper_base_full:'အခြေခံအပြည့်',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'အပြေး',
pet_teleport_title:'ရတနာပုံတယ်လီပို့',
pet_pickup_title:'ကောက်ကိုင်လိုက်သည်',
owner_yours:'မင်းအတွက်',
owner_wild:'တောသား',
footer_gf:'ချောမွတ်သောခက်ရင်း',
copy_ok:'ကူးယူသည်။',
copy_failed:'ကော်ပီ မအောင်မြင်ပါ။',
s_invis_on_fly:'ပျံသန်းစဉ် မမြင်နိုင်',
snipe_walk_home:'ခိုးယူပြီးနောက် အိမ်ပြန်လမ်းလျှောက်ပါ',
snipe_walk_home_desc:'သင့်အခြေစိုက်စခန်းသို့ ပြန်လမ်းလျှောက်ပါ',
sniper_afk_sell:'AFK မကိုက်ညီသော အိမ်မွေးတိရစ္ဆာန်များကို ရောင်းပါ',
sniper_afk_sell_desc:'(မလှုပ်ရှားသည်မှာ ၅စက္ကန့်တွင်၊ filter နှင့်မကိုက်ညီသော အိမ်မွေးတိရစ္ဆာန်များကို တန်ဖိုးအလိုက်ရောင်းပါ — လှိုင်းများသာ)',
hb_fly:'ပျံ',
hb_lck:'လော',
hb_inv:'ပျော',
hb_cud:'ဖက',
hb_pet:'တိရ',
hb_snp:'ချက',
hb_cfg:'ချိန',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'အကောင့်',
ban_title:'ချိတ်ဆက်မှု ပိတ်ဆို့ထားသည်',
ban_sub:'သင့် IP လိပ်စာကို Meeland က ကန့်သတ်ထားသည်',
ban_body:'စိတ်မပူပါနဲ့ — ဒါကို ပြင်ဖို့ လွယ်ပါတယ်! အခမဲ့ VPN က သင့်ကို IP အသစ်ပေးမှာဖြစ်ပြီး ပြန်လည်ကစားနိုင်ပါမည်။',
ban_pick:'အမြန်ဖြေရှင်းချက် — တစ်ခုရွေးပါ:',
ban_warp:'အခမဲ့၊ အကန့်အသတ်မရှိ၊ တစ်ချက်နှိပ်ရုံ စနစ်ထည့်သွင်းခြင်း',
ban_warp_store:'App Store နှင့် Play Store တွင်လည်း "1.1.1.1" အဖြစ် ရရှိနိုင်သည်',
ban_proton:'ဒေတာကန့်သတ်ချက်မရှိ၊ နိုင်ငံ ၅ ခု',
ban_steps:'ထည့်သွင်းပါ → ချိတ်ဆက်ပါ → ဤစာမျက်နှာကို ပြန်လည်စတင်ပါ။ ဒါပါပဲ!',
ban_ok:'နားလည်ပြီ',
warn_title:'အမြဲ VPN သုံးပါ',
warn_body:'အမြဲတမ်း <b>VPN</b> ဖွင့်၍ ကစားပါ။',
warn_ok:'နားလည်ပြီ',
loading:'ဖွင့်နေသည်',
tcl_loading:'တာဝါအပြည့်အစုံ လည်ပတ်နေသည်။ ရပ်ရန် {key} ကိုနှိပ်ပါ။',
hop_search:'ပွဲရှာနေသည်',
hop_match:'{name} တွေ့ပြီ — ပူးပေါင်းနေသည်',
hop_flee:'ကျူးကျော်သူထံမှ ထွက်ပြေးနေသည်',
hop_reconnect:'ပြန်လည်ချိတ်ဆက်နေသည်',
hop_reload:'ပြန်လည်ဖွင့်နေသည်',
hop_fall:'ပြုတ်ကျမှုမှ ပြန်ကောင်းနေသည်',
hop_join:'အခန်းထဲ ပူးပေါင်းနေသည်',
lock_off:'ပိတ်',
lock_unlocked:'လော့ဖွင့်ပြီး',
desc_intro:'MES သည် သင့်အား wallhack၊ အလိုအလျောက်မွေးမြူခြင်း၊ ရှားပါးအိမ်မွေးတိရစ္ဆာန်စုဆောင်းခြင်း၊ အရှိန်မြှင့်တင်ခြင်း၊ လေယာဉ်ပျံသန်းခြင်း၊ မမြင်နိုင်ခြင်းနှင့် Meeland တွင် အခြားအရာများကို ပေးသည်',
desc_free:'100% အခမဲ့၊ အမြဲ။ အကြံပေးချက်ရှိပါက ⭐ ကောင်းမွန်သော စစ်ဆေးချက် ချန်ထားပါ — အပ်ဒိတ်များ ဆက်လုပ်ရသည်။',
desc_h_movement:'ရွေ့လျားမှု',
desc_h_combat:'တိုက်ပွဲ',
desc_h_tuning:'ချိန်ညှိခြင်း',
desc_h_pets:'အိမ်မွေး & ခိုးမှု',
desc_h_economy:'စီးပွားရေး',
desc_h_custom:'စိတ်ကြိုက်',
desc_h_extras:'အပို',
desc_fly:'ပျံခြင်း',
desc_fly_d:'Space အပေါ်၊ F အောက်။ အမြန်နှုန်း ချိန်ညှိနိုင်။',
desc_speed:'ဘလင့်',
desc_speed_d:'Shift ချက်ချင်း တယ်လီပို့။',
desc_noclip:'နံရံဖောက်',
desc_noclip_d:'နံရံတွေကို ဖြတ်သွားပါ။',
desc_walls:'နံရံပေါ်လမ်းလျှောက်',
desc_walls_d:'မည်သည့်မျက်နှာပြင်ကိုမဆို တက်ပါ။',
desc_waypts:'လမ်းညွှန်',
desc_waypts_d:'နေရာ 10 သိမ်း။ ခလုတ်တစ်ခုတည်းနဲ့ တယ်လီပို့။ <kbd>Z</kbd> ပြောင်း။',
desc_invis:'မမြင်ရ',
desc_invis_d:'လုံးဝပျောက်ကွယ်ရန် CapsLock နှိပ်ပါ။',
desc_fpv:'FPV',
desc_fpv_d:'ပထမလူမြင်ကွင်းသို့ ပြောင်းရန် <kbd>.</kbd> နှိပ်ပါ။',
desc_anti_invis:'အန်တီ-မမြင်ရ',
desc_anti_invis_d:'မမြင်ရသူများကို သရဲအဖြစ် ကြည့်ပါ။',
desc_xray:'X-Ray အမြင်',
desc_xray_d:'လူသတ်မှု ပဟေဋ္ဌိတွင် နံရံများမှ ကစားသားများကို ကြည့်ရှုပါ။ အနီ = လူသတ်ကျော်၊ အစိမ်း = အရပ်သား။',
desc_nodeathh:'မသေနိုင်',
desc_nodeath_d:'ဒဏ်ရာအားလုံးမှ ကာကွယ်သည်.',
desc_antikb:'အင်တီ-နောက်တွန်း',
desc_antikb_d:'တွန်းလို့မရ.',
desc_attack:'ချက်ခြင်း တိုက်ခိုက်',
desc_attack_d:'<kbd>G</kbd> အနီးဆုံးသူထံ တယ်လီပို့ပြီး ရိုက်သည်။',
desc_jumpgrav:'ခုန်ခြင်းနှင့် ဆွဲငင်အား',
desc_jumpgrav_d:'ဆက်တင်များတွင် ချိန်ညှိနိုင်သော အမြှောက်များ။',
desc_fov:'FOV ထိန်းချုပ်မှု',
desc_fov_d:'ပထမလူမြင်ကွင်း နှင့် တတိယလူမြင်ကွင်း FOV ဆလိုက်ဒါများ။',
desc_autoinvis:'ပျံသန်းရာတွင် အော်တိုမမြင်ရ',
desc_autoinvis_d:'ပျံသန်းနေစဉ် အလိုအလျောက် မမြင်ရအောင်နေပါ။',
desc_sniper:'အိမ်မွေး စနိုက်ပါ',
desc_sniper_d:'စစ်ထုတ်ထားသော အိမ်မွေး ကို အလိုအလျောက် ခိုးယူ။ မုဒ်နှစ်ခုလုံး။',
desc_prv:'ကိုယ်ရေးကိုယ်တာ အခန်း',
desc_prv_d:'<kbd>PgDn</kbd> လက်ရှိ mode တွင် ကိုယ်ရေးကိုယ်တာ အခန်းတစ်ခု ဖန်တီးပြီး အလိုအလျောက် ချိတ်ဆက်သည်။',
desc_petbrow:'အိမ်မွေး ဘရောက်ဇာ',
desc_petbrow_d:'<kbd>K</kbd> အိမ်မွေးအားလုံး ပြ။ စီ, စစ်, ဖမ်း။',
desc_cuddle:'ဖက်ထား ပန်နယ်',
desc_cuddle_d:'<kbd>J</kbd> အကွာအဝေးအလိုက် ကစားသူများ။ လိုက်ရန် နှိပ်ပါ။',
desc_return:'အလိုအလျောက် ပြန်',
desc_return_d:'ခိုးပြီး အိမ်ပြန် တယ်လီပို့။',
desc_autolock:'အော်တို-လော့',
desc_autolock_d:'အခြေ အမြဲ သော့ခတ်။',
desc_fountain:'အော်တို-ပန်းဖောင်တိန်',
desc_fountain_d:'ထာဝရ 1.5× အမြတ်။ အလိုအလျောက် သက်တမ်းတိုး။',
desc_money:'အခမဲ့ ငွေ + ကြယ် + စိန်',
desc_money_d:'ကြော်ငြာ မလိုပါ။',
desc_collect:'အလိုအလျောက် စုဆောင်း',
desc_collect_d:'အိမ်မွေး ဝင်ငွေ 30 စက္ကန့်တိုင်း။',
desc_music:'ကယ်ရီ ကျူး',
desc_music_d:'ခိုးနေစဥ် သီချင်း. အမျိုးအစား ၁၅.',
desc_chatfade:'ချတ် ဖေ့ဒ်',
desc_chatfade_d:'မက်ဆေ့ မြင်နိုင်မှု ထိန်းချုပ်. 5–120s.',
desc_emotes:'ပျံ အီမုတ်',
desc_emotes_d:'ပျံနေစဥ် ကျပန်း အီမုတ်.',
desc_displays:'မျက်နှာပြင်အပေါ်ထပ်',
desc_displays_d:'ကိုဩဒိနိတ်များ၊ FPS ကောင်တာ နှင့် ပစ်မှတ်အချက်အလက်။',
desc_config:'ဆက်တင်များ',
desc_config_d:'<kbd>M</kbd> လုပ်ဆောင်ချက်, ခလုတ်, အမြန်နှုန်း ပြောင်း။',
desc_langs:'ဘာသာစကား ၆၀',
desc_langs_d:'UI ဘာသာပြန် အပြည့်.',
desc_tower:'Tower ပြီးစီး',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ချက်ချင်းအနိုင်။',
desc_cats:'ကြောင် Loading မျက်နှာပြင်',
desc_cats_d:'ချစ်စရာကြောင်များ loading ကိုအစားထိုးသည်။',
desc_h_install:'ထည့်သွင်း',
desc_desktop:'ဒက်စ်တော့ (Chrome၊ Edge၊ Firefox၊ Opera၊ Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> သို့ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ထည့်သွင်းပါ',
desc_inst_click:'အပေါ်မှ Install နှိပ်ပါ',
desc_inst_open:'Meeland ဂိမ်းတစ်ခုခု ဖွင့်ပါ — ချက်ခြင်း အလုပ်လုပ်မည်',
desc_mobile:'မိုဘိုင်း (Android)',
desc_mob_ff:'Play Store မှ <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ထည့်သွင်းပါ',
desc_mob_addon:'Firefox → Menu → Add-ons → <strong>Tampermonkey</strong> ထည့်သွင်း',
desc_mob_visit:'Firefox တွင် ဤစာမျက်နှာ ကြည့်ပြီး Install နှိပ်ပါ',
desc_mob_play:'Meeland ကစားပါ — HUD ခလုတ်များ အလိုအလျောက် ပေါ်မည်',
desc_ios:'iOS: Apple က iOS browser အားလုံးတွင် (Firefox အပါအဝင်) extension များ ပိတ်ထားသည်။ Desktop သို့ Android သုံးပါ။',
desc_h_privacy:'ကိုယ်ရေးလုံခြုံမှု',
desc_privacy:'Client-side သာ — ဘရောက်ဇာမှ ဒေတာ ထွက်မသွားပါ'
});
_mk('km','ភាសាខ្មែរ',{
close:'✕',
refresh:'↻',
go:'ទៅ',
set:'កំណត់',
auto:'ស្វ័យ',
empty:'ទទេ',
help_title:'ជំនួយ',
players_title:'អ្នកលេង',
players_empty:'រកមិនឃើញអ្នកលេងផ្សេង',
settings_title:'ការកំណត់',
settings_reset:'កំណត់ឡើងវិញ',
tab_gameplay:'លេងហ្គេម',
tab_economy:'សេដ្ឋកិច្ច',
tab_audio:'សំឡេង',
tab_advanced:'កម្រិតខ្ពស់',
tab_hud:'HUD',
tab_keys:'គ្រាប់ចុច',
tab_accounts:'គណនី',
acct_current:'បច្ចុប្បន្ន',
acct_new:'ថ្មី',
acct_import:'នាំចូល',
acct_switch:'ប្តូរ',
acct_reload:'ផ្ទុកឡើងវិញ',
acct_delete:'លុប',
acct_cancel:'បោះបង់',
acct_empty:'ទទេ',
acct_token_ph:'ថូខេន',
acct_copy:'ចម្លង',
acct_export:'នាំចេញ',
acct_rename:'ប្តូរឈ្មោះ',
acct_save:'រក្សាទុក',
acct_name_len:'ឈ្មោះត្រូវមាន 4-12 តួអក្សរ',
acct_name_fail:'ប្តូរឈ្មោះបរាជ័យ',
acct_invalid:'មិនត្រឹមត្រូវ',
acct_ready:'គណនីរួចរាល់។ បិទ Meeland រួចប្តូរ IP រួចផ្ទុកឡើងវិញ។',
acct_ip_note:'ពេលប្តូរគណនី តែងតែប្រើ VPN ហើយប្តូរ IP។',
acct_howto:'1. ចុច ចម្លង ដើម្បីចម្លងតំណរបស់គណនីនេះ។\n2. នៅក្នុងកម្មវិធីរុករក ឬឧបករណ៍ផ្សេងទៀត — ឬជាមួយមិត្តភក្តិ — បើក MES។\n3. ចុច នាំចូល ហើយបិទភ្ជាប់តំណ។',
sh_movement:'ចលនា',
sh_defense:'ការពារ',
sh_camera:'កាមេរ៉ា',
sh_overlays:'ស្រទាប់',
sh_behaviour:'ឥរិយាបថ',
sh_buttons:'ប៊ូតុង',
sh_language:'ភាសា',
sh_chat:'ជជែក',
sh_waves:'Waves',
sh_steal_a_pet:'លួចសត្វចិញ្ចឹម',
sh_tower:'Tower',
sh_misc_multi:'ផ្សេងៗ (របៀបច្រើន)',
s_noclip:'ឆ្លងជញ្ជាំង',
s_fly:'ហោះហើរ',
s_fly_emotes:'ហោះ Emote',
s_base_speed:'ល្បឿនមូលដ្ឋាន',
s_jump_mult:'លោតកម្ពស់',
s_grav_mult:'ទំនាញ',
s_walk_up_walls:'ដើរឡើងជញ្ជាំង',
s_carry_normalize:'អនុវត្តល្បឿន + លោត',
s_invincibility:'មិនអាចចាញ់',
s_anti_kb:'អង់ទី-ថយក្រោយ',
s_invisible:'មើលមិនឃើញ',
s_xray_infection:'ការថ្តាX (ការសម្លាប់ឃាស់)',
s_ghost_mode:'របៀបខ្មោច',
s_flee_intruder:'រត់ពេលមានអ្នកឈ្លានពាន',
s_first_person:'ទិដ្ឋភាពមនុស្សទីមួយ',
s_fov_first_person:'FOV (ទី១)',
s_fov_third_person:'FOV (ទី៣)',
s_fov_vertical_mult:'មេគុណបញ្ឈរ FOV',
s_auto_lock:'ស្វ័យចាក់សោមូលដ្ឋាន',
s_auto_fountain:'ស្វ័យទឹកផ្កា (1.5×)',
s_daily_coins:'កាក់ប្រចាំថ្ងៃ',
s_stars:'ផ្កាយ',
s_diamonds_tower:'ពេជ្រ (ប៉ម)',
s_tower_loop:'រង្វិលជុំប៉ម',
s_auto_roll_x25:'រមៀលដោយស្វ័យប្រវត្តិ x25 សំណាង',
s_auto_craft:'ក្រាហ្វស្វ័យប្រវត្តិ',
s_auto_vip_sword:'ទិញ VIP ដោយស្វ័យប្រវត្តិ',
s_auto_vip_waves:'ទិញ VIP ដោយស្វ័យប្រវត្តិ (រលក)',
s_direct_kill:'ផ្ញើការសម្លាប់ដោយផ្ទាល់',
s_direct_kill_rate:'អត្រាសម្លាប់',
s_auto_buy_upgrades:'ការអាប់ដេតការទិញដោយស្វ័យប្រវត្តិ',
s_boost_coins:'ធ្វើឱ្យប្រសើរឡើងដោយស្វ័យប្រវត្តិ: កាក់',
s_boost_diamonds:'ការធ្វើឱ្យប្រសើរដោយស្វ័យប្រវត្តិ៖ ពេជ្រ',
s_boost_luck:'ធ្វើឱ្យប្រសើរឡើងដោយស្វ័យប្រវត្តិ: សំណាង',
s_auto_unlock_areas:'តំបន់ដោះសោដោយស្វ័យប្រវត្តិ',
s_auto_rebirth:'ការកើតឡើងវិញដោយស្វ័យប្រវត្តិ',
s_auto_join_tp:'Teleport ទៅតំបន់ខ្ពស់បំផុត',
s_hide_kill_rewards:'លាក់រង្វាន់សម្លាប់',
s_hide_roll_anim:'លាក់ចលនាវិល',
rng_title:'សត្វចិញ្ចឹម RNG បោក',
rng_sec_rolling:'រមៀល',
rng_sec_crafting:'សិប្បកម្ម',
rng_sec_combat:'ការប្រយុទ្ធ',
rng_sec_upgrades:'ធ្វើឱ្យប្រសើរឡើង',
rng_sec_areas:'តំបន់',
rng_actions:'សកម្មភាព',
log_craft:'សិប្បកម្ម',
log_success:'ជោគជ័យ',
log_fail:'បរាជ័យ',
log_unlocking_area:'តំបន់ដោះសោ',
log_area_unlocked:'តំបន់ត្រូវបានដោះសោ',
log_equipped:'បំពាក់',
log_bought_upgrade:'បានទិញធ្វើឱ្យប្រសើរឡើង',
log_teleported_to:'បានបញ្ជូនទៅកាន់',
log_rebirthing:'ការកើតជាថ្មី',
h_rng:'ង',
h_accts:'គណនី',
s_auto_collect:'ស្វ័យប្រមូលចំណូល',
s_collect_interval:'ចន្លោះប្រមូល',
s_chat_fade:'ពេលវេលាបាត់ការជជែក',
s_name_colors:'ពណ៌ឈ្មោះអ្នកប្រើប្រាស់',
s_chat_enhance:'ការកែលម្អការជជែក',
mes_hint:'គន្លឹះ: បញ្ចូល "mes" ក្នុងឈ្មោះអ្នកប្រើរបស់អ្នក សម្រាប់ឥទ្ធិពលឥន្ទធនូដែលមានចលនា!',
s_carry_tune:'តន្ត្រីដឹក (លួច)',
s_pet_pickup_radius:'ដ្យាម៉ែត្រលួចសត្វ',
s_carry_vol:'កម្រិតសំឡេងដឹក',
carry_tune_default:'លំនាំដើម',
carry_tune_silent:'ស្ងាត់',
carry_tune_ambient:'ចម្រៀងបរិយាកាស',
carry_tune_blues:'ប្លូស',
carry_tune_chiptune:'ចិបទ្យូន',
carry_tune_classical:'ចម្រៀងបុរាណ',
carry_tune_electronic:'អេឡិចត្រូនិក',
carry_tune_epic:'ភ្លេងវីរភាព',
carry_tune_folk:'ចម្រៀងប្រជាប្រិយ',
carry_tune_funk:'ហ្វ័ន',
carry_tune_jazz:'ចាស',
carry_tune_lofi:'ឡូ-ហ្វី',
carry_tune_metal:'មេថល',
carry_tune_pop:'ប៉ុប',
carry_tune_punk:'ប៉ាំង',
carry_tune_reggae:'រីហ្គេ',
carry_tune_rock:'រ៉ក',
s_cont_cuddle:'ឱបជាប់ជានិច្ច',
s_protips:'គន្លឹះ Pro',
s_hideprotips:'លាក់គន្លឹះ Pro របស់ខ្ញុំ',
s_show_exp_modes:'បង្ហាញម៉ូដពិសោធន៍',
s_showcoords:'បង្ហាញទីតាំង',
s_showfps:'បង្ហាញ FPS',
s_showtargetinfo:'បង្ហាញព័ត៌មានគោលដៅ',
s_showobj:'បង្ហាញចំនួនអង្គភាព / Mesh',
s_copy_dbg:'ចម្លង debug logs',
s_copy_json:'ចម្លង JSON',
s_clear_dbg:'សម្អាត',
h_fly:'ហោះ',
h_speed:'ហេក ល្បឿន',
h_waypoints:'ចំណុចផ្លូវ',
h_autolock:'ស្វ័យចាក់សោ',
h_invisible:'មើលមិនឃើញ',
h_cuddle:'ឱប',
h_pets:'សត្វចិញ្ចឹម',
h_snipe:'ស្នាប',
h_help:'ជំនួយ',
h_settings:'ការកំណត់',
h_prv:'បន្ទប់ឯកជន',
h_tc:'បញ្ចប់ Tower',
h_tcl:'រង្វិលជុំប៉ម',
kb_fly:'ហោះ (បេី/បិទ/ឡើង)',
kb_fly_down:'ហោះចុះ',
kb_set_home:'កំណត់ផ្ទះ',
kb_home:'ផ្ទះ',
kb_back:'ថយក្រោយ',
kb_cuddle:'បន្ទះឱប',
kb_settings:'ការកំណត់',
kb_pets:'កម្មវិធីរុករកសត្វ',
kb_slots:'រន្ធចំណុចផ្លូវ',
kb_snipe:'បន្ទះស្នាប',
kb_snipe_toggle:'ស្នាប បើក/បិទ',
kb_attack:'វាយប្រហារ',
kb_help:'ជំនួយ / ពិពណ៌នា',
kb_tower:'បញ្ចប់ Tower',
kb_tower_loop:'រង្វិលជុំប៉ម',
kb_invisible:'មើលមិនឃើញ',
kb_first_person:'មនុស្សទីមួយ',
kb_autolock:'មូលដ្ឋានចាក់សោស្វ័យប្រវត្តិ',
kb_prv:'បន្ទប់ឯកជន',
kb_rng:'RNG',
kb_accts:'គណនី',
pets_title:'សត្វចិញ្ចឹម',
pets_search_placeholder:'ឧ. ឆ្មាព្រៃ មាស ឬពេជ្រ (មាស ឬ ត្បូងមរកត) ព្រៃ',
pets_hint:'ពាក្យបញ្ចូលគ្នាដោយ AND។ ប្រើ OR សម្រាប់ជម្រើស វង់ក្រចកសម្រាប់ក្រុម។ * ឬ % wildcard។ ដាក់ - នៅពីមុខពាក្យដើម្បីដកចេញ។',
pets_empty:'រកមិនឃើញសត្វក្នុងបន្ទប់នេះ',
pt_name:'ឈ្មោះ',
pt_mut:'ផ្លាស់ប្ដូរ',
pt_rar:'កម្រ',
pt_owner:'ម្ចាស់',
pt_worth:'តម្លៃ',
pt_income:'ចំណូល/s',
pt_dist:'ចម្ងាយ',
slots_title:'រន្ធចំណុចផ្លូវ',
sniper_title:'ស្នាបសត្វ',
sniper_tbl_pet:'សត្វចិញ្ចឹម',
sniper_tbl_owner:'ម្ចាស់',
sniper_tbl_lock:'ចាក់សោ',
sniper_placeholder:'ឧ. halo, golden OR diamond, emerald dragon',
sniper_hint:'ពាក្យ AND។ ប្រើ OR សម្រាប់ជម្រើស វង់ក្រចកសម្រាប់ក្រុម។ * ឬ % wildcard។ ដាក់ - នៅពីមុខពាក្យដើម្បីដកចេញ។',
sniper_room_col:'បន្ទប់',
sniper_scans_col:'ស្កេន',
sniper_top_pet_col:'សត្វចិញ្ចឹមកំពូល',
sniper_top_worth_col:'តម្លៃកំពូល',
sniper_top_owner_col:'ម្ចាស់កំពូល',
sniper_age_col:'អាយុ',
sniper_join_btn:'ចូលរួម',
sniper_full:'ពេញ',
sniper_join_failed:'បន្ទប់គោលដៅពេញ',
sniper_scanning_rooms:'កំពុងស្វែងរកបន្ទប់ផ្សេង…',
sniper_scan_off:'ការបរបាញ់ដោយស្វ័យប្រវត្តិ',
sniper_scan_next:'ស្កេនបន្ទាប់',
sniper_scan_idle:'ទំនេរ - រង់ចាំស្កេន',
sniper_auto_place:'ដាក់ស្វ័យប្រវត្តិនៅមូលដ្ឋាន',
sniper_place_desc:'(ដាក់សត្វព្រៃដែលបានលួចទៅក្នុង slot របស់អ្នក)',
sniper_auto_drop:'ទម្លាក់សត្វមិនត្រូវគ្នាដោយស្វ័យប្រវត្តិក្នុង Waves',
sniper_drop_desc:'(ទម្លាក់សត្វព្រៃដែលមិនត្រូវនឹងតម្រង ដើម្បីធ្វើឱ្យអាងដុះឡើងវិញ)',
sniper_auto_hunt:'ការបរបាញ់ដោយស្វ័យប្រវត្តិ',
sniper_hunt_desc:'(ស្កេនបន្ទប់ផ្សេងៗ លោតទៅការផ្គូផ្គងល្អបំផុត)',
sniper_auto_sell:'ស្វ័យលក់ក្នុង Steal',
sniper_sell_desc:'(លក់អាក្រក់បំផុតពេលមូលដ្ឋានពេញ)',
sniper_lockdown:'ចាក់សោ ≤',
sniper_lockdown_hint:'លួចពីមូលដ្ឋានដែល ≤ ពេលនេះ។ 0 = មិនចាក់សោតែប៉ុណ្ណោះ។',
sniper_join_grace:'ចូលរួមដោយព្រះគុណ',
sniper_start:'ចាប់ផ្ដើម',
sniper_stop:'ឈប់',
sniper_idle:'ទំនេរ',
sniper_no_filter:'គ្មានតម្រង',
sniper_waiting:'រង់ចាំហ្គេម...',
sniper_hold_pause:'កាន់សត្វ — ផ្អាក',
sniper_stolen_pause:'មានសត្វយើង — ផ្អាក',
sniper_cooldown:'ត្រជាក់',
sniper_hopping:'ប្ដូរម៉ាស៊ីន...',
sniper_na:'ស្នាបមិនមានក្នុង lobby — ចូលហ្គេមសិន',
sniper_wait_lock:'រង់ចាំទិន្នន័យសោ...',
sniper_locked:'មូលដ្ឋានចាក់សោ — រំលង...',
sniper_full_eggs:'មូលដ្ឋានពេញ — ស៊ុតតែប៉ុណ្ណោះ លក់មិនបាន',
sniper_stealing:'កំពុងលួច',
sniper_dropped:'ទម្លាក់បាន',
sniper_holding:'កាន់',
sniper_place:'ដាក់ក្នុងមូលដ្ឋាន!',
sniper_steal_mode:'[លួច]',
sniper_theft_nohop:'សត្វកំពុងត្រូវលួចដោយ',
sniper_nohop_suffix:'— មិនលោត',
sniper_sniping:'ស្នាប:',
sniper_options:'ជម្រើស',
sniper_drop_fail_status:'ទម្លាក់បរាជ័យ!',
sniper_hotkey_label:'គ្រាប់រហ័ស:',
sniper_panel_label:'បន្ទះ:',
sniper_grab_fail:'ចាប់បរាជ័យ។ ព្យាយាមម្ដងទៀត...',
sniper_our_pet_stolen:'សត្វយើងត្រូវលួច — 8s ត្រជាក់',
sniper_hopping_short:'កំពុងលោត...',
sniper_base_full:'មូលដ្ឋានពេញ',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'រត់',
pet_teleport_title:'តេឡេផត',
pet_pickup_title:'យក',
owner_yours:'របស់អ្នក។',
owner_wild:'ព្រៃ',
footer_gf:'ខាញ់ Fork',
copy_ok:'ចម្លង',
copy_failed:'ការចម្លងបានបរាជ័យ',
s_invis_on_fly:'មើលមិនឃើញពេលហោះ',
snipe_walk_home:'ដើរទៅផ្ទះបន្ទាប់ពីលួច',
snipe_walk_home_desc:'ដើរត្រឡប់ទៅមូលដ្ឋានរបស់អ្នក',
sniper_afk_sell:'AFK លក់សត្វចិញ្ចឹមដែលមិនត្រូវគ្នា',
sniper_afk_sell_desc:'(ពេលទំនេរ 5វិនាទី លក់សត្វចិញ្ចឹមដែលមិនត្រូវនឹងតម្រងតាមតម្លៃ — រលកតែប៉ុណ្ណោះ)',
hb_fly:'ហោះ',
hb_lck:'ចាក',
hb_inv:'បាត់',
hb_cud:'ឱប',
hb_pet:'សត្វ',
hb_snp:'បាញ',
hb_cfg:'កំណ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'គណនី',
ban_title:'ការតភ្ជាប់ត្រូវបានរារាំង',
ban_sub:'អាសយដ្ឋាន IP របស់អ្នកត្រូវបានដាក់កម្រិតដោយ Meeland',
ban_body:'កុំបារម្ភ — ងាយស្រួលជួសជុល! VPN ឥតគិតថ្លៃនឹងផ្តល់ IP ថ្មីឱ្យអ្នក ដើម្បីអ្នកអាចលេងម្តងទៀត។',
ban_pick:'ដំណោះស្រាយរហ័ស — ជ្រើសរើសមួយ:',
ban_warp:'ឥតគិតថ្លៃ គ្មានដែនកំណត់ ដំឡើងមួយចុច',
ban_warp_store:'មានផងដែរនៅ App Store និង Play Store ក្រោមឈ្មោះ "1.1.1.1"',
ban_proton:'គ្មានដែនកំណត់ទិន្នន័យ ៥ ប្រទេស',
ban_steps:'ដំឡើង → តភ្ជាប់ → ផ្ទុកទំព័រនេះឡើងវិញ។ នោះហើយ!',
ban_ok:'យល់ហើយ',
warn_title:'ប្រើ VPN ជានិច្ច',
warn_body:'លេងជាមួយ <b>VPN</b> បើកជានិច្ច។',
warn_ok:'យល់ហើយ',
loading:'កំពុងផ្ទុក',
tcl_loading:'កំពុងដំណើរការរង្វិលជុំប៉មពេញលេញ។ ចុច {key} ដើម្បីបញ្ឈប់។',
hop_search:'កំពុងស្វែងរកការប្រកួត',
hop_match:'រកឃើញ {name} — កំពុងចូលរួម',
hop_flee:'កំពុងរត់ចេញពីអ្នកឈ្លានពាន',
hop_reconnect:'កំពុងភ្ជាប់ឡើងវិញ',
hop_reload:'កំពុងផ្ទុកឡើងវិញ',
hop_fall:'កំពុងជាសះស្បើយពីការធ្លាក់',
hop_join:'កំពុងចូលរួមក្នុងបន្ទប់',
lock_off:'បិទ',
lock_unlocked:'បានដោះសោ',
desc_intro:'MES ផ្តល់ឱ្យអ្នកនូវការ Hack ការធ្វើកសិកម្មដោយស្វ័យប្រវត្តិ ការប្រមូលសត្វចិញ្ចឹមដ៏កម្រ ការបង្កើនល្បឿន ការហោះហើរ ការមើលមិនឃើញ និងអ្វីៗជាច្រើនទៀតនៅក្នុង Meeland',
desc_free:'100% ឥតគិតថ្លៃជានិច្ច។ មានមតិ? ដាក់ ⭐ ពិនិត្យវិជ្ជមាន — នោះរក្សា update។',
desc_h_movement:'ចលនា',
desc_h_combat:'ការប្រយុទ្ធ',
desc_h_tuning:'ការលៃតម្រូវ',
desc_h_pets:'សត្វ & ការលួច',
desc_h_economy:'សេដ្ឋកិច្ច',
desc_h_custom:'ការប្ដូរតាមបំណង',
desc_h_extras:'បន្ថែម',
desc_fly:'ហោះ',
desc_fly_d:'Space ឡើង F ចុះ។ ល្បឿនកែបាន។',
desc_speed:'ប្លីន',
desc_speed_d:'Shift ផ្លាស់ទីភ្លាម។',
desc_noclip:'ឆ្លងជញ្ជាំង',
desc_noclip_d:'ដើរកាត់ជញ្ជាំង។',
desc_walls:'ដើរលើជញ្ជាំង',
desc_walls_d:'ឡើងលើផ្ទៃណាមួយ។',
desc_waypts:'ចំណុចផ្លូវ',
desc_waypts_d:'រក្សាទុក 10 ទីតាំង។ teleport គ្រាប់ចុចមួយ។ <kbd>Z</kbd> ប្ដូរ។',
desc_invis:'មើលមិនឃើញ',
desc_invis_d:'ចុច CapsLock ដើម្បីបាត់ទាំងស្រុង។',
desc_fpv:'FPV',
desc_fpv_d:'ចុច <kbd>.</kbd> ដើម្បីប្តូរទៅកាមេរ៉ាទិដ្ឋភាពទីមួយ។',
desc_anti_invis:'អង់ទី-មើលមិនឃើញ',
desc_anti_invis_d:'មើលអ្នកលេងមើលមិនឃើញជាខ្មោច។',
desc_xray:'ចក្នាន់ការថ្តាX',
desc_xray_d:'មើលកីតការតតាមជាញ់ក្នុងការសម្លាប់ឃាស់。 ក្រេម = ឃាស់, បៃតាង = ស៊ីវិលំំនោះ。',
desc_nodeathh:'មិនស្លាប់',
desc_nodeath_d:'ការពារគ្រប់ការខូចខាត។',
desc_antikb:'ប្រឆាំងរុញ',
desc_antikb_d:'រុញមិនបាន។',
desc_attack:'វាយភ្លាម',
desc_attack_d:'<kbd>G</kbd> teleport ទៅអ្នកលេងជិតបំផុត ហើយវាយ។',
desc_jumpgrav:'លោត និងទំនាញ',
desc_jumpgrav_d:'មេគុណអាចលៃតម្រូវក្នុងការកំណត់។',
desc_fov:'គ្រប់គ្រង FOV',
desc_fov_d:'គ្រាប់រំកិល FOV ទិដ្ឋភាពទីមួយនិងទីបី។',
desc_autoinvis:'មើលមិនឃើញដោយស្វ័យប្រវត្តិពេលហោះ',
desc_autoinvis_d:'ក្លាយជាមើលមិនឃើញដោយស្វ័យប្រវត្តិពេលហោះ។',
desc_sniper:'ស្នាបសត្វ',
desc_sniper_d:'លួចសត្វចិញ្ចឹមដែលបានត្រង ស្វ័យប្រវត្តិ។ ម៉ូដទាំងពីរ។',
desc_prv:'បន្ទប់ឯកជន',
desc_prv_d:'<kbd>PgDn</kbd> បង្កើតបន្ទប់ឯកជននៅក្នុងរបៀបបច្ចុប្បន្ន ចូលរួមដោយស្វ័យប្រវត្តិ។',
desc_petbrow:'កម្មវិធីរុករកសត្វ',
desc_petbrow_d:'<kbd>K</kbd> បង្ហាញសត្វចិញ្ចឹមទាំងអស់។ តម្រៀប ត្រង ចាប់។',
desc_cuddle:'បន្ទះឱប',
desc_cuddle_d:'<kbd>J</kbd> បញ្ជីអ្នកលេងតាមចម្ងាយ។ ចុចដើម្បីតាម។',
desc_return:'ត្រឡប់ស្វ័យប្រវត្តិ',
desc_return_d:'teleport ទៅផ្ទះបន្ទាប់ពីលួច។',
desc_autolock:'ស្វ័យចាក់សោ',
desc_autolock_d:'មូលដ្ឋានចាក់សោរជានិច្ច។',
desc_fountain:'ស្វ័យទឹកផ្កា',
desc_fountain_d:'ប្រាក់ចំណេញអចិន្ត្រៃយ៍ 1.5×។ បន្តដោយស្វ័យប្រវត្តិ។',
desc_money:'ប្រាក់ឥតគិតថ្លៃ + ផ្កាយ + ពេជ្រ',
desc_money_d:'មិនត្រូវការពាណិជ្ជកម្ម។',
desc_collect:'ប្រមូលស្វ័យប្រវត្តិ',
desc_collect_d:'ចំណូលសត្វចិញ្ចឹមរៀងរាល់ 30 វិ។',
desc_music:'បទសែង',
desc_music_d:'តន្ត្រីពេលលួច។ ១៥ប្រភេទ។',
desc_chatfade:'ផ្លាស់ចែត',
desc_chatfade_d:'គ្រប់គ្រងការមើលឃើញសារ។ 5–120s។',
desc_emotes:'អារម្មណ៍ហោះ',
desc_emotes_d:'អារម្មណ៍ចៃដន្យពេលហោះ។',
desc_displays:'ស្រទាប់បង្ហាញ',
desc_displays_d:'កូអរដោនេ រាប់ FPS និងព័ត៌មានគោលដៅ។',
desc_config:'ការកំណត់',
desc_config_d:'<kbd>M</kbd> មុខងារ គ្រាប់ចុច ល្បឿន។',
desc_langs:'៦០ ភាសា',
desc_langs_d:'បកប្រែ UI ពេញ។',
desc_tower:'បញ្ចប់ Tower',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ឈ្នះភ្លាម។',
desc_cats:'អេក្រង់ផ្ទុកឆ្មា',
desc_cats_d:'ឆ្មាគួរឱ្យស្រឡាញ់ជំនួសការផ្ទុក។',
desc_h_install:'ដំឡើង',
desc_desktop:'កុំព្យូទ័រលើតុ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'ដំឡើង <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ឬ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'ចុច Install ខាងលើ',
desc_inst_open:'បើក Meeland game — ដំណើរការភ្លាម',
desc_mobile:'ទូរស័ព្ទ (Android)',
desc_mob_ff:'ដំឡើង <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android</a> ពី Play Store',
desc_mob_addon:'Firefox → Menu → Add-ons → ដំឡើង <strong>Tampermonkey</strong>',
desc_mob_visit:'មកទំព័រនេះក្នុង Firefox ទៅចុច Install',
desc_mob_play:'លេង Meeland — ប៊ូតុង HUD ចេញដោយស្វ័យប្រវត្តិ',
desc_ios:'iOS: Apple រារាំង extension ក្នុងរាល់ iOS browser (រួមទាំង Firefox)។ ប្រើ desktop ឬ Android។',
desc_h_privacy:'ឯកជនភាព',
desc_privacy:'Client-side តែប៉ុណ្ណោះ — គ្មានទិន្នន័យចេញពី browser'
});
_mk('ka','ქართული',{
close:'✕',
refresh:'↻',
go:'წადი',
set:'დააყენე',
auto:'ავტომატური',
empty:'ცარიელი',
help_title:'დახმარება',
players_title:'მოთამაშეები',
players_empty:'სხვა მოთამაშეები არ მოიძებნა',
settings_title:'პარამეტრები',
settings_reset:'გადატვირთვა',
tab_gameplay:'თამაში',
tab_economy:'ეკონომიკა',
tab_audio:'აუდიო',
tab_advanced:'დამატებითი',
tab_hud:'HUD',
tab_keys:'კლავიშები',
tab_accounts:'ანგარიშები',
acct_current:'მიმდინარე',
acct_new:'ახალი',
acct_import:'იმპორტი',
acct_switch:'გადართვა',
acct_reload:'ხელახლა ჩატვირთვა',
acct_delete:'წაშლა',
acct_cancel:'გაუქმება',
acct_empty:'ცარიელი',
acct_token_ph:'ტოკენი',
acct_copy:'კოპირება',
acct_export:'ექსპორტი',
acct_rename:'გადარქმევა',
acct_save:'შენახვა',
acct_name_len:'სახელი უნდა იყოს 4-12 სიმბოლო',
acct_name_fail:'გადარქმევა ვერ მოხერხდა',
acct_invalid:'არასწორი',
acct_ready:'ანგარიში მზადაა. დახურე Meeland, შეცვალე IP, შემდეგ ხელახლა ჩატვირთე.',
acct_ip_note:'ანგარიშის შეცვლისას ყოველთვის გამოიყენე VPN და შეცვალე IP.',
acct_howto:'1. დააჭირეთ კოპირებას ამ ანგარიშის ბმულის კოპირებისთვის.\n2. სხვა ბრაუზერში ან მოწყობილობაში — ან მეგობართან — გახსენით MES.\n3. დააჭირეთ იმპორტს და ჩასვით ბმული.',
sh_movement:'მოძრაობა',
sh_defense:'თავდაცვა',
sh_camera:'კამერა',
sh_overlays:'გადაფარვები',
sh_behaviour:'ქცევა',
sh_buttons:'ღილაკები',
sh_language:'ენა',
sh_chat:'ჩატი',
sh_waves:'Waves',
sh_steal_a_pet:'შინაური ცხოველის მოპარვა',
sh_tower:'Tower',
sh_misc_multi:'სხვადასხვა (მულტი-რეჟიმი)',
s_noclip:'კედლის გავლა',
s_fly:'ფრენა',
s_fly_emotes:'ფრენის ემოტები',
s_base_speed:'საბაზისო სიჩქარე',
s_jump_mult:'ნახტომის სიმაღლე',
s_grav_mult:'გრავიტაცია',
s_walk_up_walls:'კედლებზე ასვლა',
s_carry_normalize:'ტარების სიჩქარე + ნახტომი',
s_invincibility:'უვნებლობა',
s_anti_kb:'ანტი-უკუგდება',
s_invisible:'უხილავი',
s_xray_infection:'რენტგენი (მკვლელობის საიდუმლო)',
s_ghost_mode:'მოჩვენების რეჟიმი',
s_flee_intruder:'შემოჭრილზე გაქცევა',
s_first_person:'პირველი პირის ხედვა',
s_fov_first_person:'FOV (1-ლი)',
s_fov_third_person:'FOV (მე-3)',
s_fov_vertical_mult:'FOV ვერტიკალური მულტიპლიკატორი',
s_auto_lock:'ავტო-ჩაკეტვა ბაზა',
s_auto_fountain:'ავტო-შადრევანი (1.5×)',
s_daily_coins:'ყოველდღიური კოინები',
s_stars:'ვარსკვლავები',
s_diamonds_tower:'ბრილიანტები (კოშკი)',
s_tower_loop:'კოშკის ციკლი',
s_auto_roll_x25:'ავტო როლი x25 იღბალი',
s_auto_craft:'ავტო-კრაფტი',
s_auto_vip_sword:'ავტომატური VIP შეძენა',
s_auto_vip_waves:'ავტომატური VIP შეძენა (ტალღები)',
s_direct_kill:'პირდაპირი მოკვლის სპამი',
s_direct_kill_rate:'მოკვლის სიხშირე',
s_auto_buy_upgrades:'ავტომატური ყიდვის განახლებები',
s_boost_coins:'ავტომატური განახლება: მონეტები',
s_boost_diamonds:'ავტომატური განახლება: ბრილიანტები',
s_boost_luck:'ავტომატური განახლება: იღბალი',
s_auto_unlock_areas:'ავტომატური განბლოკვის ზონები',
s_auto_rebirth:'ავტომატური აღორძინება',
s_auto_join_tp:'ტელეპორტი უმაღლეს ზონაში',
s_hide_kill_rewards:'მკვლელობის ჯილდოების დამალვა',
s_hide_roll_anim:'როლის ანიმაციის დამალვა',
rng_title:'შინაური ცხოველები RNG Cheats',
rng_sec_rolling:'მოძრავი',
rng_sec_crafting:'ხელოსნობა',
rng_sec_combat:'საბრძოლო',
rng_sec_upgrades:'განახლებები',
rng_sec_areas:'ტერიტორიები',
rng_actions:'მოქმედებები',
log_craft:'ხელოსნობა',
log_success:'წარმატება',
log_fail:'მარცხი',
log_unlocking_area:'განბლოკვის ტერიტორია',
log_area_unlocked:'ტერიტორია განბლოკილია',
log_equipped:'აღჭურვილი',
log_bought_upgrade:'იყიდა განახლება',
log_teleported_to:'ტელეპორტირებული',
log_rebirthing:'ხელახლა დაბადება',
h_rng:'rng',
h_accts:'ანგარიშები',
s_auto_collect:'ავტო-შეგროვება შემოსავალი',
s_collect_interval:'შეგროვების ინტერვალი',
s_chat_fade:'ჩატის გაქრობის დრო',
s_name_colors:'მომხმარებლის სახელის ფერები',
s_chat_enhance:'ჩეთის გაუმჯობესებები',
mes_hint:'რჩევა: ჩაამატეთ "mes" თქვენს მომხმარებელთა სახელში ანიმაციური ცისარტყელას ეფექტისთვის!',
s_carry_tune:'ტარება ჰანგი (მოპარვა)',
s_pet_pickup_radius:'ცხოველის ქურდობის რადიუსი',
s_carry_vol:'ტარება ხმამაღლობა',
carry_tune_default:'ნაგულისხმევი',
carry_tune_silent:'ჩუმი',
carry_tune_ambient:'ამბიენტი',
carry_tune_blues:'ბლუზი',
carry_tune_chiptune:'ჩიპტუნი',
carry_tune_classical:'კლასიკური',
carry_tune_electronic:'ელექტრონული',
carry_tune_epic:'ეპიკური',
carry_tune_folk:'ხალხური',
carry_tune_funk:'ფანქი',
carry_tune_jazz:'ჯაზი',
carry_tune_lofi:'ლო-ფაი',
carry_tune_metal:'მეტალი',
carry_tune_pop:'პოპი',
carry_tune_punk:'პანქი',
carry_tune_reggae:'რეგი',
carry_tune_rock:'როკი',
s_cont_cuddle:'უწყვეტი ჩახუტება',
s_protips:'Pro რჩევები',
s_hideprotips:'ჩემი Pro რჩევების დამალვა',
s_show_exp_modes:'ექსპერიმენტული რეჟიმების ჩვენება',
s_showcoords:'კოორდინატების ჩვენება',
s_showfps:'FPS-ის ჩვენება',
s_showtargetinfo:'სამიზნის ინფორმაციის ჩვენება',
s_showobj:'აჩვენე ერთეული / ბადის რაოდენობა',
s_copy_dbg:'Debug ჟურნალების კოპირება',
s_copy_json:'JSON-ის კოპირება',
s_clear_dbg:'გასუფთავება',
h_fly:'ფრენა',
h_speed:'სიჩქარის ჰაკი',
h_waypoints:'მარშრუტის წერტილები',
h_autolock:'ავტო-ჩაკეტვა',
h_invisible:'უხილავი',
h_cuddle:'ჩახუტება',
h_pets:'შინაური ცხოველები',
h_snipe:'სნაიპერი',
h_help:'დახმარება',
h_settings:'პარამეტრები',
h_prv:'კერძო ოთახი',
h_tc:'Tower დასრულება',
h_tcl:'კოშკის ციკლი',
kb_fly:'ფრენა (გადართვა/ზემოთ)',
kb_fly_down:'ფრენა ქვემოთ',
kb_set_home:'სახლის დაყენება',
kb_home:'სახლი',
kb_back:'უკან',
kb_cuddle:'ჩახუტების პანელი',
kb_settings:'პარამეტრები',
kb_pets:'ცხოველების ბრაუზერი',
kb_slots:'მარშრუტის სლოტი',
kb_snipe:'სნაიპერის პანელი',
kb_snipe_toggle:'სნაიპერი ჩართ/გამორთ',
kb_attack:'შეტევა',
kb_help:'დახმარება / აღწერა',
kb_tower:'Tower დასრულება',
kb_tower_loop:'კოშკის ციკლი',
kb_invisible:'უხილავი',
kb_first_person:'პირველი პირი',
kb_autolock:'ავტომატური დაბლოკვის ბაზა',
kb_prv:'კერძო ოთახი',
kb_rng:'RNG',
kb_accts:'ანგარიშები',
pets_title:'შინაური ცხოველები',
pets_search_placeholder:'მაგ. ველური კნუტი, ოქროსფერი ან ბრილიანტი, (ოქროს ან ზურმუხტისფერი) ველური',
pets_hint:'სიტყვები ერთიანდება AND-ით. ალტერნატივისთვის OR, დაჯგუფებისთვის ფრჩხილები. * ან % ვაილდქარდი. სიტყვის გამორიცხვისთვის მის წინ დააყენეთ -.',
pets_empty:'ამ ოთახში ცხოველები ვერ მოიძებნა',
pt_name:'სახელი',
pt_mut:'მუტაცია',
pt_rar:'იშვიათობა',
pt_owner:'მფლობელი',
pt_worth:'ღირებულება',
pt_income:'შემოსავ/წმ',
pt_dist:'მანძილი',
slots_title:'მარშრუტის სლოტები',
sniper_title:'ცხოველის სნაიპერი',
sniper_tbl_pet:'შინაური ცხოველი',
sniper_tbl_owner:'მფლობელი',
sniper_tbl_lock:'ჩაკეტვა',
sniper_placeholder:'მაგ. halo, golden OR diamond, emerald dragon',
sniper_hint:'სიტყვები AND. ალტერნატივისთვის OR, დაჯგუფებისთვის ფრჩხილები. * ან % ვაილდქარდი. სიტყვის გამორიცხვისთვის მის წინ დააყენეთ -.',
sniper_room_col:'ოთახი',
sniper_scans_col:'სკანირება',
sniper_top_pet_col:'ყველაზე შინაური ცხოველი',
sniper_top_worth_col:'ყველაზე ღირსი',
sniper_top_owner_col:'საუკეთესო მფლობელი',
sniper_age_col:'ასაკი',
sniper_join_btn:'შემოუერთდი',
sniper_full:'სავსე',
sniper_join_failed:'სამიზნე ოთახი სავსეა',
sniper_scanning_rooms:'სხვა ოთახების ძებნა…',
sniper_scan_off:'ავტომატური ნადირობა',
sniper_scan_next:'შემდეგი სკანირება',
sniper_scan_idle:'უმოქმედო - ელოდება სკანირებას',
sniper_auto_place:'ავტომატური განთავსება ბაზაზე',
sniper_place_desc:'(მოპარულ ცხოველს თქვენი ბაზის სლოტში ათავსებს)',
sniper_auto_drop:'Waves-ში შეუსაბამო შინაური ცხოველების ავტო-დაგდება',
sniper_drop_desc:'(აგდებს ველურ შინაურ ცხოველებს, რომლებიც არ ემთხვევა ფილტრს, სპავნის აუზის გასაახლებლად)',
sniper_auto_hunt:'ავტო-ნადირობა',
sniper_hunt_desc:'(სკანირებს სხვა ოთახებს, ხტება საუკეთესო შესატყვისთან)',
sniper_auto_sell:'ავტო-გაყიდვა Steal-ში',
sniper_sell_desc:'(ყველაზე ცუდის გაყიდვა თუ ბაზა სავსეა)',
sniper_lockdown:'ჩაკეტვა ≤',
sniper_lockdown_hint:'ქურდობა ≤ ამ დროის ბაზებიდან. 0 = მხოლოდ გახსნილი.',
sniper_join_grace:'შეუერთდი მადლს',
sniper_start:'დაწყება',
sniper_stop:'შეჩერება',
sniper_idle:'უმოქმედო',
sniper_no_filter:'ფილტრი არ არის',
sniper_waiting:'თამაშის მოლოდინი...',
sniper_hold_pause:'ცხოველი ხელშია — პაუზა',
sniper_stolen_pause:'ჩვენი ცხოველი არის — პაუზა',
sniper_cooldown:'გაგრილება',
sniper_hopping:'სერვერის გადართვა...',
sniper_na:'სნაიპერი ვერ ხელმისაწვდომი ლობიში — თამაშში ჩადი ჯერ',
sniper_wait_lock:'ჩაკეტვის მონაცემების მოლოდინი...',
sniper_locked:'ბაზა ჩაკეტილი — გამოტოვება...',
sniper_full_eggs:'ბაზა სავსე — მხოლოდ კვერცხები, ვერ გაიყიდება',
sniper_stealing:'ქურდობა',
sniper_dropped:'დაგდებული',
sniper_holding:'ხელში',
sniper_place:'ბაზაში ჩადე!',
sniper_steal_mode:'[მოპარვა]',
sniper_theft_nohop:'ცხოველი მოიპარეს',
sniper_nohop_suffix:'— გადახტომა არ არის',
sniper_sniping:'სნაიპერობა:',
sniper_options:'პარამეტრები',
sniper_drop_fail_status:'დაგდება ვერ მოხერხდა!',
sniper_hotkey_label:'ჰოთქი:',
sniper_panel_label:'პანელი:',
sniper_grab_fail:'ვერ აიღო. თავიდან...',
sniper_our_pet_stolen:'ჩვენი ცხოველი მოიპარეს — 8წმ გაგრილება',
sniper_hopping_short:'გადახტომა...',
sniper_base_full:'ბაზა სავსეა',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'სირბილი',
pet_teleport_title:'ტელეპორტი',
pet_pickup_title:'აიღე',
owner_yours:'შენი',
owner_wild:'ველური',
footer_gf:'ცხიმიანი ჩანგალი',
copy_ok:'კოპირებულია',
copy_failed:'კოპირება ვერ მოხერხდა',
s_invis_on_fly:'უჩინარი ფრენისას',
snipe_walk_home:'ქურდობის შემდეგ სახლში ფეხით იარე',
snipe_walk_home_desc:'ფეხით დაბრუნდი შენს ბაზაზე',
sniper_afk_sell:'AFK გაყიდე შეუსაბამო ცხოველები',
sniper_afk_sell_desc:'(როცა უმოქმედო 5წმ, გაყიდე ფილტრს შეუსაბამო ცხოველები მნიშვნელობის მიხედვით — მხოლოდ ტალღები)',
hb_fly:'ფრე',
hb_lck:'ჩაკ',
hb_inv:'უხი',
hb_cud:'ჩახ',
hb_pet:'შინ',
hb_snp:'სნაი',
hb_cfg:'პარა',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ანგ',
ban_title:'კავშირი დაბლოკილია',
ban_sub:'თქვენი IP მისამართი შეზღუდულია Meeland-ის მიერ',
ban_body:'არ ინერვიულოთ — ეს ადვილად გამოსწორდება! უფასო VPN მოგცემთ ახალ IP-ს, რომ ისევ ითამაშოთ.',
ban_pick:'სწრაფი გამოსწორება — აირჩიეთ ერთი:',
ban_warp:'უფასო, შეუზღუდავი, ერთი დაწკაპუნებით გამართვა',
ban_warp_store:'ასევე ხელმისაწვდომია App Store-სა და Play Store-ში "1.1.1.1" სახელით',
ban_proton:'მონაცემთა ლიმიტის გარეშე, 5 ქვეყანა',
ban_steps:'დააინსტალირეთ → დაუკავშირდით → განაახლეთ ეს გვერდი. სულ ეს არის!',
ban_ok:'გასაგებია',
warn_title:'ყოველთვის გამოიყენეთ VPN',
warn_body:'ყოველთვის ითამაშეთ ჩართული <b>VPN</b>-ით.',
warn_ok:'გასაგებია',
loading:'იტვირთება',
tcl_loading:'მიმდინარეობს კოშკის სრული ციკლი. გასაჩერებლად დააჭირეთ {key}.',
hop_search:'მატჩის ძებნა',
hop_match:'ნაპოვნია {name} — უერთდება',
hop_flee:'შემოჭრილისგან გაქცევა',
hop_reconnect:'ხელახლა კავშირი',
hop_reload:'ხელახლა ჩატვირთვა',
hop_fall:'დაცემისგან გამოჯანმრთელება',
hop_join:'ოთახში შესვლა',
lock_off:'გამორთული',
lock_unlocked:'განბლოკილი',
desc_intro:'MES გაძლევთ Wallhack-ს, ავტომატურ მეურნეობას, იშვიათი შინაური ცხოველების შეგროვებას, სიჩქარის გაზრდას, ფრენას, უხილავობას და სხვას Meeland-ში',
desc_free:'100% უფასო, ყოველთვის. გაქვს უკუკავშირი? დატოვე ⭐ დადებითი მიმოხილვა — ეს ინარჩუნებს განახლებებს.',
desc_h_movement:'მოძრაობა',
desc_h_combat:'ბრძოლა',
desc_h_tuning:'რეგულირება',
desc_h_pets:'ცხოველები & მოპარვა',
desc_h_economy:'ეკონომიკა',
desc_h_custom:'პერსონალიზაცია',
desc_h_extras:'დამატებითი',
desc_fly:'ფრენა',
desc_fly_d:'Space ზემოთ, F ქვემოთ. სიჩქარე რეგულირებადი.',
desc_speed:'ბლინკი',
desc_speed_d:'Shift მყისიერი ტელეპორტი.',
desc_noclip:'კედლის გავლა',
desc_noclip_d:'გაიარე კედლებში.',
desc_walls:'სიარული კედლებზე',
desc_walls_d:'ახვიდე ნებისმიერ ზედაპირზე.',
desc_waypts:'მარშრუტის წერტილები',
desc_waypts_d:'შეინახე 10 პოზიცია. ერთი ღილაკით ტელეპორტი. <kbd>Z</kbd> გადართვა.',
desc_invis:'უხილავი',
desc_invis_d:'დააჭირე CapsLock-ს სრული გაქრობისთვის.',
desc_fpv:'FPV',
desc_fpv_d:'დააჭირე <kbd>.</kbd> პირველი პირის კამერაზე გადასართავად.',
desc_anti_invis:'ანტი-უხილავი',
desc_anti_invis_d:'უხილავი მოთამაშეები მოჩვენებებად.',
desc_xray:'რენტგენის ხედვა',
desc_xray_d:'დაინახეთ მოთამაშეები კედლების გავლით მკვლელობის საიდუმლოში. წითელი = მკვლელი, მწვანე = სამოქალაქო.',
desc_nodeathh:'უკვდავი',
desc_nodeath_d:'ყოველგვარი ზიანისგან იმუნური.',
desc_antikb:'ანტი-უკუგდება',
desc_antikb_d:'ვერ მიგწევენ.',
desc_attack:'მყისიერი შეტევა',
desc_attack_d:'<kbd>G</kbd> ტელეპორტი უახლოეს მოთამაშესთან და დარტყმა.',
desc_jumpgrav:'ნახტომი და გრავიტაცია',
desc_jumpgrav_d:'რეგულირებადი მულტიპლიკატორები პარამეტრებში.',
desc_fov:'FOV მართვა',
desc_fov_d:'FOV სლაიდერები პირველი და მესამე პირისთვის.',
desc_autoinvis:'ავტო-უხილავი ფრენისას',
desc_autoinvis_d:'გახდი უხილავი ავტომატურად ფრენისას.',
desc_sniper:'ცხოველის სნაიპერი',
desc_sniper_d:'გაფილტრული პეტების ავტომოპარვა. ორივე რეჟიმი.',
desc_prv:'კერძო ოთახი',
desc_prv_d:'<kbd>PgDn</kbd> ქმნის კერძო ოთახს მიმდინარე რეჟიმში და ავტომატურად უერთდება.',
desc_petbrow:'ცხოველების ბრაუზერი',
desc_petbrow_d:'<kbd>K</kbd> აჩვენე ყველა პეტი. დალაგება, ფილტრი, დაჭერა.',
desc_cuddle:'ჩახუტების პანელი',
desc_cuddle_d:'<kbd>J</kbd> მოთამაშეები მანძილით. დააკლიკე გასაყოლად.',
desc_return:'ავტო დაბრუნება',
desc_return_d:'ქურდობის შემდეგ სახლში ტელეპორტი.',
desc_autolock:'ავტო-ჩაკეტვა',
desc_autolock_d:'ბაზა ყოველთვის ჩაკეტილი.',
desc_fountain:'ავტო-შადრევანი',
desc_fountain_d:'მუდმივი 1.5× მოგება. ავტო-განახლება.',
desc_money:'უფასო ფული + ვარსკვლავები + ბრილიანტები',
desc_money_d:'რეკლამა არ არის საჭირო.',
desc_collect:'ავტო-შეგროვება',
desc_collect_d:'პეტის შემოსავალი ყოველ 30წმ.',
desc_music:'ქერი თიუნ',
desc_music_d:'მუსიკა მოპარვისას. 15 ჟანრი.',
desc_chatfade:'ჩატის გაქრობა',
desc_chatfade_d:'შეტყობინებების ხილვადობის კონტროლი. 5–120წ.',
desc_emotes:'ფრენის ემოტები',
desc_emotes_d:'შემთხვევითი ემოტები ფრენისას.',
desc_displays:'ეკრანის ფენები',
desc_displays_d:'კოორდინატები, FPS მრიცხველი და სამიზნის ინფო.',
desc_config:'პარამეტრები',
desc_config_d:'<kbd>M</kbd> ფუნქციები, კლავიშები, სიჩქარეები.',
desc_langs:'60 ენა',
desc_langs_d:'სრული UI თარგმანი.',
desc_tower:'Tower დასრულება',
desc_tower_d:'<kbd>Y</kbd> Obby Tower მყისიერი გამარჯვება.',
desc_cats:'კატის ჩატვირთვის ეკრანები',
desc_cats_d:'საყვარელი კატები ანაცვლებენ ჩატვირთვას.',
desc_h_install:'ინსტალაცია',
desc_desktop:'დესკტოპი (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'დააინსტალირე <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ან <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'დააწკაპუნე Install ზემოთ',
desc_inst_open:'გახსენი ნებისმიერი Meeland თამაში — მაშინვე მუშაობს',
desc_mobile:'მობილური (Android)',
desc_mob_ff:'დააინსტალირე <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android</a> Play Store-დან',
desc_mob_addon:'Firefox → მენიუ → დამატებები → დააინსტალირე <strong>Tampermonkey</strong>',
desc_mob_visit:'Firefox-ში ეწვიე ამ გვერდს და დააჭირე Install',
desc_mob_play:'ითამაშე Meeland — სენსორული HUD ღილაკები ავტომატურად გამოჩნდება',
desc_ios:'iOS: Apple ბლოკავს ბრაუზერის გაფართოებებს ყველა iOS ბრაუზერში (Firefox ჩათვლით). გამოიყენე დესკტოპი ან Android.',
desc_h_privacy:'კონფიდენციალურობა',
desc_privacy:'მხოლოდ კლიენტის მხრიდან — მონაცემები ბრაუზერს არ ტოვებს'
});
_mk('az','Azərbaycan',{
close:'✕',
refresh:'↻',
go:'Get',
set:'Qur',
auto:'Avtomatik',
empty:'boş',
help_title:'Kömək',
players_title:'Oyunçular',
players_empty:'Başqa oyunçu tapılmadı',
settings_title:'Parametrlər',
settings_reset:'Sıfırla',
tab_gameplay:'Oyun',
tab_economy:'İqtisadiyyat',
tab_audio:'Audio',
tab_advanced:'Ətraflı',
tab_hud:'HUD',
tab_keys:'Düymələr',
tab_accounts:'Hesablar',
acct_current:'Hazırkı',
acct_new:'Yeni',
acct_import:'İdxal',
acct_switch:'Dəyiş',
acct_reload:'Yenidən yüklə',
acct_delete:'Sil',
acct_cancel:'Ləğv et',
acct_empty:'Boş',
acct_token_ph:'Token',
acct_copy:'Kopyala',
acct_export:'İxrac',
acct_rename:'Yenidən adlandır',
acct_save:'Yadda saxla',
acct_name_len:'Ad 4-12 simvol olmalıdır',
acct_name_fail:'Yenidən adlandırma uğursuz oldu',
acct_invalid:'Yanlış',
acct_ready:'Hesab hazırdır. Meeland-ı bağlayın, IP dəyişin, sonra yenidən yükləyin.',
acct_ip_note:'Hesab dəyişərkən həmişə VPN istifadə edin və IP dəyişin.',
acct_howto:'1. Bu hesabın linkini kopyalamaq üçün Kopyala düyməsini klikləyin.\n2. Başqa brauzerdə və ya cihazda — və ya dostla — MES-i açın.\n3. İdxal düyməsini klikləyib linki yapışdırın.',
sh_movement:'Hərəkət',
sh_defense:'Müdafiə',
sh_camera:'Kamera',
sh_overlays:'Üst-üstə',
sh_behaviour:'Davranış',
sh_buttons:'Düymələr',
sh_language:'Dil',
sh_chat:'Söhbət',
sh_waves:'Waves',
sh_steal_a_pet:'Ev heyvanı oğurla',
sh_tower:'Tower',
sh_misc_multi:'Digər (çox rejim)',
s_noclip:'Divardan keç',
s_fly:'Uçmaq',
s_fly_emotes:'Uçuş emot',
s_base_speed:'Əsas sürət',
s_jump_mult:'Atlama Hündürlüyü',
s_grav_mult:'Cazibə qüvvəsi',
s_walk_up_walls:'Divarları gəzdirin',
s_carry_normalize:'Daşıma sürəti + tullanma',
s_invincibility:'Yenilməzlik',
s_anti_kb:'Anti-geri itələmə',
s_invisible:'Görünməz',
s_xray_infection:'X-Ray (Qətl Sirri)',
s_ghost_mode:'Xəyal rejimi',
s_flee_intruder:'Müdaxilə edəndə qaç',
s_first_person:'Birinci şəxs görünüşü',
s_fov_first_person:'FOV (1-ci)',
s_fov_third_person:'FOV (3-cü)',
s_fov_vertical_mult:'FOV şaquli çarpan',
s_auto_lock:'Avto-kilit baza',
s_auto_fountain:'Avto-fəvvarə (1.5×)',
s_daily_coins:'Gündəlik sikkələr',
s_stars:'Ulduzlar',
s_diamonds_tower:'Almaz (Qüllə)',
s_tower_loop:'Qala dövrəsi',
s_auto_roll_x25:'Avtomatik rul x25 şans',
s_auto_craft:'Avtomatik craft',
s_auto_vip_sword:'Avtomatik VIP al',
s_auto_vip_waves:'Avtomatik VIP al (Dalğalar)',
s_direct_kill:'Birbaşa öldürmə spamu',
s_direct_kill_rate:'Öldürmə sürəti',
s_auto_buy_upgrades:'Avtomatik Alış Təkmilləşdirmələri',
s_boost_coins:'Avtomatik təkmilləşdirmə: sikkələr',
s_boost_diamonds:'Avtomatik Təkmilləşdirmə: Brilyantlar',
s_boost_luck:'Avtomatik Təkmilləşdirmə: Uğurlar',
s_auto_unlock_areas:'Ərazilərin Avtomatik Kilidini Açın',
s_auto_rebirth:'Avtomatik Yenidən Doğuş',
s_auto_join_tp:'Ən yüksək əraziyə teleport',
s_hide_kill_rewards:'Öldürmə Mükafatlarını gizlədin',
s_hide_roll_anim:'Roll Animasiyasını gizlədin',
rng_title:'Ev heyvanları RNG fırıldaqları',
rng_sec_rolling:'yuvarlanan',
rng_sec_crafting:'Sənətkarlıq',
rng_sec_combat:'Döyüş',
rng_sec_upgrades:'Təkmilləşdirmələr',
rng_sec_areas:'Ərazilər',
rng_actions:'Fəaliyyətlər',
log_craft:'sənətkarlıq',
log_success:'UĞUR',
log_fail:'UĞURSUZ',
log_unlocking_area:'Kilidi açma sahəsi',
log_area_unlocked:'Ərazi kiliddən çıxarıldı',
log_equipped:'təchiz olunub',
log_bought_upgrade:'Təkmilləşdirmə alınıb',
log_teleported_to:'Teleportasiya edildi',
log_rebirthing:'Yenidən doğulma',
h_rng:'rng',
h_accts:'Hesablar',
s_auto_collect:'Avto-toplama gəlir',
s_collect_interval:'Toplama aralığı',
s_chat_fade:'Söhbətin Silinmə Vaxtı',
s_name_colors:'İstifadəçi adı rəngləri',
s_chat_enhance:'Söhbət təkmilləşdirmələri',
mes_hint:'İpucu: animasiya göy qurşağı effekti üçün istifadəçi adınıza "mes" əlavə edin!',
s_carry_tune:'Daşıma Melodiyası (Oğurluq)',
s_pet_pickup_radius:'Heyvan Oğurluğu Radiusu',
s_carry_vol:'Daşıma Səs Seviyyəsi',
carry_tune_default:'Standart',
carry_tune_silent:'Səssiz',
carry_tune_ambient:'Ətraf mühit',
carry_tune_blues:'Blyuz',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassik',
carry_tune_electronic:'Elektron',
carry_tune_epic:'Epik',
carry_tune_folk:'Xalq',
carry_tune_funk:'Funk',
carry_tune_jazz:'Caz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metal',
carry_tune_pop:'Pop',
carry_tune_punk:'pank',
carry_tune_reggae:'Reggi',
carry_tune_rock:'Rok',
s_cont_cuddle:'Davamlı qucaqlama',
s_protips:'Pro Məsləhətlər',
s_hideprotips:'Mənim Pro Məsləhətlərimi Gizlə',
s_show_exp_modes:'Təcrübi rejimləri göstər',
s_showcoords:'Koordinatları göstər',
s_showfps:'FPS göstərin',
s_showtargetinfo:'Hədəf məlumatını göstər',
s_showobj:'Müəssisə / Mesh Sayını göstərin',
s_copy_dbg:'Debug jurnallarını kopyala',
s_copy_json:'JSON kopyala',
s_clear_dbg:'Təmizlə',
h_fly:'Uçuş',
h_speed:'Sürət hak',
h_waypoints:'Yol nöqtələri',
h_autolock:'Avto-kilit',
h_invisible:'Görünməz',
h_cuddle:'Qucaqlama',
h_pets:'Heyvanlar',
h_snipe:'Snayper',
h_help:'Kömək',
h_settings:'Parametrlər',
h_prv:'Şəxsi otaq',
h_tc:'Qüllə bitir',
h_tcl:'Qala dövrəsi',
kb_fly:'Uçuş (dəyiş/yuxarı)',
kb_fly_down:'Uçuş aşağı',
kb_set_home:'Ev qur',
kb_home:'Ev',
kb_back:'Geri',
kb_cuddle:'Qucaqlama paneli',
kb_settings:'Parametrlər',
kb_pets:'Heyvan brauzer',
kb_slots:'Yol nöqtəsi slotu',
kb_snipe:'Snayper paneli',
kb_snipe_toggle:'Snayper Aç/Bağla',
kb_attack:'Hücum',
kb_help:'Kömək / Təsvir',
kb_tower:'Qüllə bitir',
kb_tower_loop:'Qala dövrəsi',
kb_invisible:'Görünməz',
kb_first_person:'Birinci şəxs',
kb_autolock:'Avtomatik kilidləmə bazası',
kb_prv:'Şəxsi otaq',
kb_rng:'RNG',
kb_accts:'Hesablar',
pets_title:'Ev heyvanları',
pets_search_placeholder:'məs. vəhşi pişik, qızıl və ya almaz, (qızıl və ya zümrüd) vəhşi',
pets_hint:'Sözlər AND ilə birləşir. Alternativ üçün OR, qruplaşdırma üçün mötərizə. * və ya % joker. Bir sözü xaric etmək üçün qabağına - qoyun.',
pets_empty:'Bu otaqda heyvan tapılmadı',
pt_name:'Ad',
pt_mut:'Mutasiya',
pt_rar:'Nadirlik',
pt_owner:'Sahib',
pt_worth:'Dəyər',
pt_income:'Gəlir/s',
pt_dist:'Məsafə',
slots_title:'Yol nöqtəsi slotları',
sniper_title:'Heyvan snayperi',
sniper_tbl_pet:'Heyvan',
sniper_tbl_owner:'Sahib',
sniper_tbl_lock:'Kilidləyin',
sniper_placeholder:'məs. halo, golden OR diamond, emerald dragon',
sniper_hint:'Sözlər AND. Alternativ üçün OR, qruplaşdırma üçün mötərizə. * və ya % joker. Bir sözü xaric etmək üçün qabağına - qoyun.',
sniper_room_col:'Otaq',
sniper_scans_col:'Skanlar',
sniper_top_pet_col:'üst ev heyvanı',
sniper_top_worth_col:'Üst dəyər',
sniper_top_owner_col:'Üst Sahib',
sniper_age_col:'Yaş',
sniper_join_btn:'Qoşul',
sniper_full:'Dolu',
sniper_join_failed:'Hədəf otağı dolu',
sniper_scanning_rooms:'Digər otaqlar axtarılır…',
sniper_scan_off:'Avtomatik ovlama',
sniper_scan_next:'Növbəti skan edin',
sniper_scan_idle:'Boş - skan etməyi gözləyir',
sniper_auto_place:'Bazaya avtomatik yerləşdir',
sniper_place_desc:'(oğurlanmış heyvanı bazanın slotuna qoyur)',
sniper_auto_drop:'Dalğalarda uyğun olmayan ev heyvanlarını avtomatik burax',
sniper_drop_desc:'(filtriyə uyğun gəlməyən vəhşi ev heyvanlarını buraxaraq spawn hovuzunu yeniləyir)',
sniper_auto_hunt:'Avtomatik ov',
sniper_hunt_desc:'(digər otaqları skan edir, ən yaxşı uyğunluğa keçir)',
sniper_auto_sell:'Oğurluqda avto-sat',
sniper_sell_desc:'(baza dolursa ən pisini sat)',
sniper_lockdown:'Kilit ≤',
sniper_lockdown_hint:'≤ bu vaxt qalan bazalardan oğurla. 0 = yalnız açıq.',
sniper_join_grace:'Lütfünə qoşulun',
sniper_start:'Başla',
sniper_stop:'Dayan',
sniper_idle:'Boş',
sniper_no_filter:'Filtr yox',
sniper_waiting:'Oyun gözlənilir...',
sniper_hold_pause:'Heyvan tutulub — fasilə',
sniper_stolen_pause:'bizim heyvan var — fasilə',
sniper_cooldown:'Soyuma',
sniper_hopping:'Server dəyişir...',
sniper_na:'Lobbidə snayper yox — əvvəl oyuna gir',
sniper_wait_lock:'Kilit datası gözlənilir...',
sniper_locked:'Baza kilidli — ötürülür...',
sniper_full_eggs:'Baza dolu — yalnız yumurtalar, satmaq olmaz',
sniper_stealing:'Oğurlama',
sniper_dropped:'Atıldı',
sniper_holding:'Tutulur',
sniper_place:'Bazaya qoy!',
sniper_steal_mode:'[Oğurluq]',
sniper_theft_nohop:'Heyvan oğurlanır',
sniper_nohop_suffix:'— atlama yox',
sniper_sniping:'Snayper:',
sniper_options:'Seçimlər',
sniper_drop_fail_status:'Atma uğursuz!',
sniper_hotkey_label:'Qısa düymə:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Tuta bilmədi. Yenidən...',
sniper_our_pet_stolen:'Bizim heyvan oğurlandı — 8s soyuma',
sniper_hopping_short:'Atlanır...',
sniper_base_full:'Baza dolu',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'QAÇIŞ',
pet_teleport_title:'Teleport',
pet_pickup_title:'götür',
owner_yours:'Sənin',
owner_wild:'Vəhşi',
footer_gf:'Yağlı Çəngəl',
copy_ok:'Kopyalandı',
copy_failed:'Kopyalama alınmadı',
s_invis_on_fly:'Uçarkən görünməz',
snipe_walk_home:'Oğurluqdan sonra evə piyada get',
snipe_walk_home_desc:'Piyada öz bazana qayıt',
sniper_afk_sell:'AFK uyğun gəlməyən heyvanları sat',
sniper_afk_sell_desc:'(5sn hərəkətsiz olduqda, filtrə uyğun gəlməyən heyvanları dəyərə görə sat — yalnız dalğalar)',
hb_fly:'UÇ',
hb_lck:'KİL',
hb_inv:'GÖR',
hb_cud:'QUC',
hb_pet:'HEY',
hb_snp:'SNP',
hb_cfg:'AYR',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'HES',
ban_title:'Bağlantı əngəlləndi',
ban_sub:'IP ünvanınız Meeland tərəfindən məhdudlaşdırılıb',
ban_body:'Narahat olmayın — bunu düzəltmək asandır! Pulsuz VPN sizə yeni IP verəcək ki, yenidən oynaya biləsiniz.',
ban_pick:'Tez həll — birini seçin:',
ban_warp:'pulsuz, limitsiz, bir kliklə quraşdırma',
ban_warp_store:'App Store və Play Store-da da "1.1.1.1" olaraq mövcuddur',
ban_proton:'data limiti yoxdur, 5 ölkə',
ban_steps:'Quraşdırın → bağlanın → bu səhifəni yeniləyin. Hamısı budur!',
ban_ok:'Anladım',
warn_title:'Həmişə VPN istifadə edin',
warn_body:'Həmişə <b>VPN</b> açıq oynayın.',
warn_ok:'Anladım',
loading:'Yüklənir',
tcl_loading:'Tam qala dövrəsi işləyir. Dayandırmaq üçün {key} düyməsini basın.',
hop_search:'Oyun axtarılır',
hop_match:'{name} tapıldı — qoşulur',
hop_flee:'Müdaxilə edəndən qaçış',
hop_reconnect:'Yenidən bağlanılır',
hop_reload:'Yenidən yüklənir',
hop_fall:'Yıxılmadan sağalır',
hop_join:'Otağa qoşulur',
lock_off:'SÖNDÜR',
lock_unlocked:'KİLİDSİZ',
desc_intro:'MES Meeland-da sizə wallhack, avto-fermerlik, nadir ev heyvanları kolleksiyası, sürət artırma, uçuş, görünməzlik və s. verir',
desc_free:'100% pulsuz, həmişə. Rəyin var? ⭐ müsbət rəy qoy — yeniləmələri davam etdirən budur.',
desc_h_movement:'Hərəkət',
desc_h_combat:'Döyüş',
desc_h_tuning:'Tənzimləmə',
desc_h_pets:'Heyvanlar & Oğurluq',
desc_h_economy:'İqtisadiyyat',
desc_h_custom:'Fərdiləşdirmə',
desc_h_extras:'Əlavələr',
desc_fly:'Uçuş',
desc_fly_d:'Space yuxarı, F aşağı. Sürət tənzimlənir.',
desc_speed:'Göz qırpmaq',
desc_speed_d:'Shift ani teleportasiya.',
desc_noclip:'Divardan keç',
desc_noclip_d:'Divarlardan keç.',
desc_walls:'Divarlarda Gəzmək',
desc_walls_d:'İstənilən səthə dırman.',
desc_waypts:'Yol nöqtələri',
desc_waypts_d:'10 mövqe saxla. Bir düymə teleport. <kbd>Z</kbd> keçid.',
desc_invis:'Görünməz',
desc_invis_d:'Tamamilə yox olmaq üçün CapsLock düyməsini bas.',
desc_fpv:'FPV',
desc_fpv_d:'Birinci şəxs kamerasına keçmək üçün <kbd>.</kbd> düyməsini basın.',
desc_anti_invis:'Anti-görünməz',
desc_anti_invis_d:'Görünməz oyunçuları xəyal kimi gör.',
desc_xray:'X-Ray Görmə',
desc_xray_d:'Cinayet Sirri\'ndə divarların arxasından oyunçuları görün. Qırmızı = qatil, yaşıl = mülki.',
desc_nodeathh:'Ölümsüz',
desc_nodeath_d:'Bütün zərərlərə davamlı.',
desc_antikb:'Anti-Geri itələmə',
desc_antikb_d:'İtələnə bilməz.',
desc_attack:'Ani hücum',
desc_attack_d:'<kbd>G</kbd> ən yaxın oyunçuya teleport edib vurur.',
desc_jumpgrav:'Tullanma və Cazibə',
desc_jumpgrav_d:'Ayarlarda tənzimlənə bilən çarpanlar.',
desc_fov:'FOV Nəzarəti',
desc_fov_d:'Birinci və üçüncü şəxs FOV slayderləri.',
desc_autoinvis:'Uçuşda Avto-Görünməz',
desc_autoinvis_d:'Uçarkən avtomatik olaraq görünməz ol.',
desc_sniper:'Heyvan snayperi',
desc_sniper_d:'Filtrlənmiş heyvanların avtomatik oğurluğu. Hər iki rejim.',
desc_prv:'Şəxsi otaq',
desc_prv_d:'<kbd>PgDn</kbd> cari rejimdə şəxsi otaq yaradır və avtomatik qoşulur.',
desc_petbrow:'Heyvan brauzeri',
desc_petbrow_d:'<kbd>K</kbd> bütün heyvanları göstər. Sırala, filtrlə, tut.',
desc_cuddle:'Qucaqlama paneli',
desc_cuddle_d:'<kbd>J</kbd> məsafəyə görə oyunçular. İzləmək üçün klik.',
desc_return:'Avto Qayıdış',
desc_return_d:'Oğurluqdan sonra evə teleport.',
desc_autolock:'Avto-kilit',
desc_autolock_d:'Baza həmişə kilidli.',
desc_fountain:'Avto-fəvvarə',
desc_fountain_d:'Daimi 1.5× qazanc. Avtomatik yeniləmə.',
desc_money:'Pulsuz pul + Ulduzlar + Almaz',
desc_money_d:'Reklam lazım deyil.',
desc_collect:'Avto-Toplama',
desc_collect_d:'Heyvan gəliri hər 30s.',
desc_music:'Daşıma melodiyası',
desc_music_d:'Oğurluq zamanı musiqi. 15 janr.',
desc_chatfade:'Söhbət solması',
desc_chatfade_d:'Mesaj görünürlüyünü idarə et. 5–120san.',
desc_emotes:'Uçuş emosiyaları',
desc_emotes_d:'Uçarkən təsadüfi emosiyalar.',
desc_displays:'Ekran Qatları',
desc_displays_d:'Koordinatlar, FPS sayğacı və hədəf məlumatı.',
desc_config:'Parametrlər',
desc_config_d:'<kbd>M</kbd> funksiyalar, düymələr, sürətlər.',
desc_langs:'60 Dil',
desc_langs_d:'Tam UI tərcüməsi.',
desc_tower:'Qüllə bitir',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ani qələbə.',
desc_cats:'Pişik yükləmə ekranları',
desc_cats_d:'Şirin pişiklər yükləməni əvəz edir.',
desc_h_install:'Quraşdır',
desc_desktop:'Masaüstü (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> və ya <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> quraşdır',
desc_inst_click:'Yuxarıda Quraşdır düyməsini bas',
desc_inst_open:'İstənilən Meeland oyununu aç — dərhal işləyir',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Play Store-dan <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> quraşdır',
desc_mob_addon:'Firefox → Menyu → Əlavələr → <strong>Tampermonkey</strong> quraşdır',
desc_mob_visit:'Firefox-da bu səhifəyə gir və Quraşdır bas',
desc_mob_play:'Meeland oyna — toxunma HUD düymələri avtomatik görünəcək',
desc_ios:'iOS: Apple bütün iOS brauzerlərində (Firefox daxil) genişlənmələri bloklayır. Masaüstü və ya Android istifadə et.',
desc_h_privacy:'Məxfilik',
desc_privacy:'Yalnız müştəri tərəfi — heç bir məlumat brauzeri tərk etmir'
});
_mk('kk','Қазақ',{
close:'✕',
refresh:'↻',
go:'Бару',
set:'Орнату',
auto:'Авто',
empty:'бос',
help_title:'Көмек',
players_title:'Ойыншылар',
players_empty:'Басқа ойыншы табылмады',
settings_title:'Параметрлер',
settings_reset:'Қалпына келтіру',
tab_gameplay:'Ойын',
tab_economy:'Экономика',
tab_audio:'Аудио',
tab_advanced:'Қосымша',
tab_hud:'HUD',
tab_keys:'Пернелер',
tab_accounts:'Аккаунттар',
acct_current:'Ағымдағы',
acct_new:'Жаңа',
acct_import:'Импорт',
acct_switch:'Ауыстыру',
acct_reload:'Қайта жүктеу',
acct_delete:'Жою',
acct_cancel:'Болдырмау',
acct_empty:'Бос',
acct_token_ph:'Токен',
acct_copy:'Көшіру',
acct_export:'Экспорт',
acct_rename:'Қайта атау',
acct_save:'Сақтау',
acct_name_len:'Атау 4-12 таңбадан тұруы керек',
acct_name_fail:'Қайта атау сәтсіз аяқталды',
acct_invalid:'Жарамсыз',
acct_ready:'Аккаунт дайын. Meeland-ті жабыңыз, IP ауыстырыңыз, содан кейін қайта жүктеңіз.',
acct_ip_note:'Аккаунт ауыстырғанда әрқашан VPN қолданып, IP ауыстырыңыз.',
acct_howto:'1. Осы тіркелгінің сілтемесін көшіру үшін Көшіру түймесін басыңыз.\n2. Басқа браузерде немесе құрылғыда — немесе доспен — MES-ті ашыңыз.\n3. Импорт түймесін басып, сілтемені қойыңыз.',
sh_movement:'Қозғалыс',
sh_defense:'Қорғаныс',
sh_camera:'Камера',
sh_overlays:'Қабаттасулар',
sh_behaviour:'Мінез-құлық',
sh_buttons:'Түймелер',
sh_language:'Тіл',
sh_chat:'Чат',
sh_waves:'Waves',
sh_steal_a_pet:'Үй жануарын ұрлау',
sh_tower:'Tower',
sh_misc_multi:'Әртүрлі (көп режим)',
s_noclip:'Қабырғадан өту',
s_fly:'Ұшу',
s_fly_emotes:'Ұшу эмот',
s_base_speed:'Негізгі жылдамдық',
s_jump_mult:'Секіру биіктігі',
s_grav_mult:'Гравитация',
s_walk_up_walls:'Қабырғаларды көтеру',
s_carry_normalize:'Тасымалдау жылдамдығы + секіру',
s_invincibility:'Жеңілмейтін',
s_anti_kb:'Анти-серпу',
s_invisible:'Көрінбейтін',
s_xray_infection:'Рентген (Өлтіру Құпиясы)',
s_ghost_mode:'Елес режимі',
s_flee_intruder:'Бөтен кірушіде қашу',
s_first_person:'Бірінші адам көрінісі',
s_fov_first_person:'FOV (1-ші)',
s_fov_third_person:'FOV (3-ші)',
s_fov_vertical_mult:'FOV тік мультипликаторы',
s_auto_lock:'Авто-құлып база',
s_auto_fountain:'Авто-бұрқақ (1.5×)',
s_daily_coins:'Күнделікті тиындар',
s_stars:'Жұлдыздар',
s_diamonds_tower:'Алмаздар (Мұнара)',
s_tower_loop:'Мұнара циклі',
s_auto_roll_x25:'Авто ролл x25 сәттілік',
s_auto_craft:'Авто-крафт',
s_auto_vip_sword:'Авто VIP сатып алу',
s_auto_vip_waves:'Авто VIP сатып алу (Толқындар)',
s_direct_kill:'Тікелей өлтіру спамы',
s_direct_kill_rate:'Өлтіру жылдамдығы',
s_auto_buy_upgrades:'Автоматты сатып алу жаңартулары',
s_boost_coins:'Автоматты жаңарту: монеталар',
s_boost_diamonds:'Автоматты жаңарту: гауһар тастар',
s_boost_luck:'Автоматты жаңарту: сәттілік',
s_auto_unlock_areas:'Аймақтарды автоматты түрде ашу',
s_auto_rebirth:'Автоматты қайта туылу',
s_auto_join_tp:'Ең жоғары аймаққа телепорт',
s_hide_kill_rewards:'Өлтіру сыйақыларын жасыру',
s_hide_roll_anim:'Ролл анимациясын жасыру',
rng_title:'Үй жануарлары RNG Cheats',
rng_sec_rolling:'Домалау',
rng_sec_crafting:'Қолөнер',
rng_sec_combat:'Жауынгерлік',
rng_sec_upgrades:'Жаңартулар',
rng_sec_areas:'Аудандар',
rng_actions:'Әрекеттер',
log_craft:'Қолөнер',
log_success:'ТАБЫС',
log_fail:'СӘТСІЗ',
log_unlocking_area:'Құлыпты ашу аймағы',
log_area_unlocked:'Аймақ құлпы ашылды',
log_equipped:'Жабдықталған',
log_bought_upgrade:'Жаңарту сатып алынды',
log_teleported_to:'Телепорталды',
log_rebirthing:'Қайта туылу',
h_rng:'rng',
h_accts:'Аккаунттар',
s_auto_collect:'Авто-жинау табыс',
s_collect_interval:'Жинау аралығы',
s_chat_fade:'Чат жоғалу уақыты',
s_name_colors:'Пайдаланушы аты түстері',
s_chat_enhance:'Чат жақсартулары',
mes_hint:'Кеңес: анимациялық кемпірқосақ эффектісі үшін пайдаланушы атыңызға "mes" қосыңыз!',
s_carry_tune:'Тасымал әуені (Ұрлық)',
s_pet_pickup_radius:'Жануар ұрлауының радиусы',
s_carry_vol:'Тасымал дыбыс деңгейі',
carry_tune_default:'Әдепкі',
carry_tune_silent:'Үнсіз',
carry_tune_ambient:'Амбиент',
carry_tune_blues:'Блюз',
carry_tune_chiptune:'Чиптюн',
carry_tune_classical:'Классикалық',
carry_tune_electronic:'Электрондық',
carry_tune_epic:'Эпикалық',
carry_tune_folk:'Халық',
carry_tune_funk:'Фанк',
carry_tune_jazz:'Джаз',
carry_tune_lofi:'Ло-Фай',
carry_tune_metal:'Метал',
carry_tune_pop:'Поп',
carry_tune_punk:'Панк',
carry_tune_reggae:'Реггі',
carry_tune_rock:'Рок',
s_cont_cuddle:'Үздіксіз құшақтау',
s_protips:'Про кеңестер',
s_hideprotips:'Менің Про кеңестерімді жасыру',
s_show_exp_modes:'Тәжірибелік режимдерді көрсету',
s_showcoords:'Координаттарды көрсету',
s_showfps:'FPS көрсету',
s_showtargetinfo:'Нысана ақпаратын көрсету',
s_showobj:'Нысан / тор санын көрсету',
s_copy_dbg:'Debug журналдарын көшіру',
s_copy_json:'JSON-ды көшіру',
s_clear_dbg:'Тазалау',
h_fly:'Ұшу',
h_speed:'Жылдамдық хак',
h_waypoints:'Жол нүктелері',
h_autolock:'Авто-құлып',
h_invisible:'Көрінбейтін',
h_cuddle:'Құшақтау',
h_pets:'Жануарлар',
h_snipe:'Снайпер',
h_help:'Көмек',
h_settings:'Параметрлер',
h_prv:'Жеке бөлме',
h_tc:'Мұнара аяқтау',
h_tcl:'Мұнара циклі',
kb_fly:'Ұшу (ауыстыру/жоғары)',
kb_fly_down:'Ұшу төмен',
kb_set_home:'Үй орнату',
kb_home:'Үй',
kb_back:'Артқа',
kb_cuddle:'Құшақтау панелі',
kb_settings:'Параметрлер',
kb_pets:'Жануар браузері',
kb_slots:'Жол нүктесі слоты',
kb_snipe:'Снайпер панелі',
kb_snipe_toggle:'Снайпер Қосу/Өшіру',
kb_attack:'Шабуыл',
kb_help:'Көмек / Сипаттама',
kb_tower:'Мұнара аяқтау',
kb_tower_loop:'Мұнара циклі',
kb_invisible:'Көрінбейтін',
kb_first_person:'Бірінші адам',
kb_autolock:'Автоматты құлыптау негізі',
kb_prv:'Жеке бөлме',
kb_rng:'RNG',
kb_accts:'Аккаунттар',
pets_title:'Үй жануарлары',
pets_search_placeholder:'мысалы жабайы мысық, алтын НЕМЕСЕ гауһар, (алтын НЕМЕСЕ изумруд) жабайы',
pets_hint:'Сөздер AND арқылы біріктіріледі. Балама үшін OR, топтау үшін жақша. * немесе % джокер. Сөзді алып тастау үшін оның алдына - қойыңыз.',
pets_empty:'Бұл бөлмеде жануар табылмады',
pt_name:'Ат',
pt_mut:'Мутация',
pt_rar:'Сирек',
pt_owner:'Иесі',
pt_worth:'Құны',
pt_income:'Табыс/с',
pt_dist:'Қашықтық',
slots_title:'Жол нүктесі слоттары',
sniper_title:'Жануар снайпері',
sniper_tbl_pet:'Үй жануарлары',
sniper_tbl_owner:'Меншік иесі',
sniper_tbl_lock:'Құлыптау',
sniper_placeholder:'мыс. halo, golden OR diamond, emerald dragon',
sniper_hint:'Сөздер AND. Балама үшін OR, топтау үшін жақша. * немесе % джокер. Сөзді алып тастау үшін оның алдына - қойыңыз.',
sniper_room_col:'Бөлме',
sniper_scans_col:'Сканерлеу',
sniper_top_pet_col:'Жоғарғы үй жануарлары',
sniper_top_worth_col:'Жоғары құндылық',
sniper_top_owner_col:'Жоғарғы иесі',
sniper_age_col:'Жасы',
sniper_join_btn:'Қосылу',
sniper_full:'Толы',
sniper_join_failed:'Мақсатты бөлме толы',
sniper_scanning_rooms:'Басқа бөлмелер ізделуде…',
sniper_scan_off:'Автоматты аң аулау',
sniper_scan_next:'Келесі сканерлеу',
sniper_scan_idle:'Күту - сканерлеуді күтуде',
sniper_auto_place:'Базаға автоматты орналастыру',
sniper_place_desc:'(ұрланған жануарды сіздің база ұяшығыңызға қояды)',
sniper_auto_drop:'Толқындарда сәйкес келмейтін үй жануарларын автоматты түрде тастау',
sniper_drop_desc:'(фильтрге сәйкес келмейтін жабайы үй жануарларын тастап, спавн қорын жаңартады)',
sniper_auto_hunt:'Авто-аңшылық',
sniper_hunt_desc:'(басқа бөлмелерді сканерлеп, ең жақсы сәйкестікке секіреді)',
sniper_auto_sell:'Ұрлықта авто-сату',
sniper_sell_desc:'(база толса ең нашарын сат)',
sniper_lockdown:'Құлып ≤',
sniper_lockdown_hint:'≤ осы уақыт қалған базалардан ұрла. 0 = тек ашық.',
sniper_join_grace:'Рақымға қосылыңыз',
sniper_start:'Бастау',
sniper_stop:'Тоқтату',
sniper_idle:'Бос',
sniper_no_filter:'Сүзгі жоқ',
sniper_waiting:'Ойын күтілуде...',
sniper_hold_pause:'Жануар ұсталған — кідіру',
sniper_stolen_pause:'біздің жануар бар — кідіру',
sniper_cooldown:'Салқындау',
sniper_hopping:'Сервер ауысуда...',
sniper_na:'Лоббиде снайпер жоқ — алдымен ойынға кір',
sniper_wait_lock:'Құлып деректері күтілуде...',
sniper_locked:'База құлыпты — өту...',
sniper_full_eggs:'База толы — тек жұмыртқа, сата алмайсың',
sniper_stealing:'Ұрлау',
sniper_dropped:'Тасталды',
sniper_holding:'Ұстап тұр',
sniper_place:'Базаға қой!',
sniper_steal_mode:'[Ұрлық]',
sniper_theft_nohop:'Жануар ұрланып жатыр',
sniper_nohop_suffix:'— секіру жоқ',
sniper_sniping:'Снайперлеу:',
sniper_options:'Параметрлер',
sniper_drop_fail_status:'Тастау сәтсіз!',
sniper_hotkey_label:'Ыстық перне:',
sniper_panel_label:'Панель:',
sniper_grab_fail:'Ұстай алмады. Қайтадан...',
sniper_our_pet_stolen:'Біздің жануар ұрланды — 8с салқындау',
sniper_hopping_short:'Секілуде...',
sniper_base_full:'База толы',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ЖҮГІР',
pet_teleport_title:'Телепорт',
pet_pickup_title:'Ала кету',
owner_yours:'сенікі',
owner_wild:'Жабайы',
footer_gf:'Майлы шанышқы',
copy_ok:'Көшірілген',
copy_failed:'Көшіру сәтсіз аяқталды',
s_invis_on_fly:'Ұшу кезінде көрінбейтін',
snipe_walk_home:'Ұрлықтан кейін үйге жаяу бар',
snipe_walk_home_desc:'Базаңа жаяу қайт',
sniper_afk_sell:'AFK сәйкес келмейтін жануарларды сату',
sniper_afk_sell_desc:'(5с әрекетсіз болғанда, сүзгіге сәйкес келмейтін жануарларды мәні бойынша сату — тек толқындар)',
hb_fly:'ҰШ',
hb_lck:'ЕСК',
hb_inv:'КРН',
hb_cud:'ҚШ',
hb_pet:'МАЛ',
hb_snp:'СНП',
hb_cfg:'ОРН',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'АКК',
ban_title:'Қосылу бұғатталды',
ban_sub:'Сіздің IP мекенжайыңыз Meeland тарапынан шектелді',
ban_body:'Уайымдамаңыз — мұны түзету оңай! Тегін VPN сізге жаңа IP береді, сонда қайта ойнай аласыз.',
ban_pick:'Жылдам шешім — біреуін таңдаңыз:',
ban_warp:'тегін, шексіз, бір басумен орнату',
ban_warp_store:'App Store мен Play Store-да "1.1.1.1" атауымен де қолжетімді',
ban_proton:'деректер шегі жоқ, 5 ел',
ban_steps:'Орнатыңыз → қосылыңыз → осы бетті жаңартыңыз. Барлығы осы!',
ban_ok:'Түсіндім',
warn_title:'Әрқашан VPN пайдаланыңыз',
warn_body:'Әрқашан <b>VPN</b> қосулы ойнаңыз.',
warn_ok:'Түсіндім',
loading:'Жүктелуде',
tcl_loading:'Мұнараның толық циклі жүріп жатыр. Тоқтату үшін {key} басыңыз.',
hop_search:'Матч ізделуде',
hop_match:'{name} табылды — қосылуда',
hop_flee:'Бөтен кірушіден қашу',
hop_reconnect:'Қайта қосылуда',
hop_reload:'Қайта жүктелуде',
hop_fall:'Құлаудан айығуда',
hop_join:'Бөлмеге қосылуда',
lock_off:'ӨШІР',
lock_unlocked:'АШЫЛҒАН',
desc_intro:'MES Meeland-те уолхак, автоферма, сирек кездесетін үй жануарларын жинау, жылдамдықты арттыру, ұшу, көрінбеу және т.б. ұсынады.',
desc_free:'100% тегін, әрқашан. Пікірің бар ма? ⭐ оң пікір қалдыр — жаңартуларды сол жалғастырады.',
desc_h_movement:'Қозғалыс',
desc_h_combat:'Ұрыс',
desc_h_tuning:'Баптау',
desc_h_pets:'Жануарлар & Ұрлық',
desc_h_economy:'Экономика',
desc_h_custom:'Баптау',
desc_h_extras:'Қосымша',
desc_fly:'Ұшу',
desc_fly_d:'Space жоғары, F төмен. Жылдамдық реттеледі.',
desc_speed:'Блинк',
desc_speed_d:'Shift лезде телепорт.',
desc_noclip:'Қабырғадан өту',
desc_noclip_d:'Қабырғалардан өт.',
desc_walls:'Қабырғалармен Жүру',
desc_walls_d:'Кез келген бетке өрмеле.',
desc_waypts:'Жол нүктелері',
desc_waypts_d:'10 орын сақта. Бір пернемен телепорт. <kbd>Z</kbd> ауыстыру.',
desc_invis:'Көрінбейтін',
desc_invis_d:'Толық жоғалу үшін CapsLock басыңыз.',
desc_fpv:'FPV',
desc_fpv_d:'Бірінші адам камерасына ауысу үшін <kbd>.</kbd> басыңыз.',
desc_anti_invis:'Анти-көрінбейтін',
desc_anti_invis_d:'Көрінбейтін ойыншыларды елес ретінде көр.',
desc_xray:'Рентгендік Көру',
desc_xray_d:'Өлтіру Құпиясында қабырғалар арқылы ойыншыларды көріңіз. Қызыл = өлтіруші, жасыл = азамат.',
desc_nodeathh:'Өлмейтін',
desc_nodeath_d:'Барлық зиянға иммунитет.',
desc_antikb:'Анти-серпу',
desc_antikb_d:'Итеру мүмкін емес.',
desc_attack:'Лезде шабуыл',
desc_attack_d:'<kbd>G</kbd> жақын ойыншыға телепорт жасап соғады.',
desc_jumpgrav:'Секіру және Гравитация',
desc_jumpgrav_d:'Параметрлерде реттелетін көбейткіштер.',
desc_fov:'FOV Басқару',
desc_fov_d:'Бірінші және үшінші жақ FOV сырғытпалары.',
desc_autoinvis:'Ұшуда Авто-Көрінбейтін',
desc_autoinvis_d:'Ұшқан кезде автоматты түрде көрінбейтін бол.',
desc_sniper:'Жануар снайпері',
desc_sniper_d:'Сүзілген үй жануарларын автоматты ұрлау. Екі режим.',
desc_prv:'Жеке бөлме',
desc_prv_d:'<kbd>PgDn</kbd> ағымдағы режимде жеке бөлме жасайды және автоматты түрде қосылады.',
desc_petbrow:'Жануар браузері',
desc_petbrow_d:'<kbd>K</kbd> барлық жануарларды көрсет. Сұрыпта, сүз, ұста.',
desc_cuddle:'Құшақтау панелі',
desc_cuddle_d:'<kbd>J</kbd> қашықтық бойынша ойыншылар. Қадағалау үшін басыңыз.',
desc_return:'Авто Қайтару',
desc_return_d:'Ұрлаудан кейін үйге телепорт.',
desc_autolock:'Авто-құлып',
desc_autolock_d:'База әрқашан құлыптаулы.',
desc_fountain:'Авто-бұрқақ',
desc_fountain_d:'Тұрақты 1.5× пайда. Авто-жаңарту.',
desc_money:'Тегін ақша + Жұлдыздар + Алмаздар',
desc_money_d:'Жарнама қажет емес.',
desc_collect:'Авто-Жинау',
desc_collect_d:'Жануар кірісі әр 30с.',
desc_music:'Тасымал әуені',
desc_music_d:'Ұрлау кезінде музыка. 15 жанр.',
desc_chatfade:'Чат сөну',
desc_chatfade_d:'Хабар көрінуін басқар. 5–120с.',
desc_emotes:'Ұшу эмоттары',
desc_emotes_d:'Ұшу кезінде кездейсоқ эмоттар.',
desc_displays:'Дисплей Қабаттары',
desc_displays_d:'Координаттар, FPS есептегіш және нысана ақпараты.',
desc_config:'Параметрлер',
desc_config_d:'<kbd>M</kbd> функциялар, пернелер, жылдамдықтар.',
desc_langs:'60 тіл',
desc_langs_d:'Толық UI аудармасы.',
desc_tower:'Мұнара аяқтау',
desc_tower_d:'<kbd>Y</kbd> Obby Tower лезде жеңіс.',
desc_cats:'Мысық жүктеу экрандары',
desc_cats_d:'Сүйкімді мысықтар жүктеуді ауыстырады.',
desc_h_install:'Орнату',
desc_desktop:'Десктоп (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> немесе <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> орнат',
desc_inst_click:'Жоғарыда Орнату бас',
desc_inst_open:'Кез келген Meeland ойынын аш — бірден жұмыс істейді',
desc_mobile:'Мобильді (Android)',
desc_mob_ff:'Play Store-дан <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> орнат',
desc_mob_addon:'Firefox → Мәзір → Қосымшалар → <strong>Tampermonkey</strong> орнат',
desc_mob_visit:'Firefox-та бұл бетке кіріп Орнату бас',
desc_mob_play:'Meeland ойна — түрту HUD батырмалары автоматты шығады',
desc_ios:'iOS: Apple барлық iOS браузерлерінде (Firefox қоса) кеңейтімдерді бұғаттайды. Десктоп немесе Android қолдан.',
desc_h_privacy:'Құпиялылық',
desc_privacy:'Тек клиент жағында — ешқандай деректер браузерден шықпайды'
});
_mk('uz','Oʻzbekcha',{
close:'✕',
refresh:'↻',
go:'Borish',
set:'Sozlash',
auto:'Avtomatik',
empty:'boʻsh',
help_title:'Yordam',
players_title:'Oʻyinchilar',
players_empty:'Boshqa oʻyinchi topilmadi',
settings_title:'Sozlamalar',
settings_reset:'Qayta sozlash',
tab_gameplay:'O\'yin',
tab_economy:'Iqtisodiyot',
tab_audio:'Audio',
tab_advanced:'Kengaytirilgan',
tab_hud:'HUD',
tab_keys:'Tugmalar',
tab_accounts:'Hisoblar',
acct_current:'Joriy',
acct_new:'Yangi',
acct_import:'Import',
acct_switch:'Almashtirish',
acct_reload:'Qayta yuklash',
acct_delete:'O‘chirish',
acct_cancel:'Bekor qilish',
acct_empty:'Bo‘sh',
acct_token_ph:'Token',
acct_copy:'Nusxalash',
acct_export:'Eksport',
acct_rename:'Qayta nomlash',
acct_save:'Saqlash',
acct_name_len:'Ism 4-12 belgidan iborat boʻlishi kerak',
acct_name_fail:'Qayta nomlash muvaffaqiyatsiz',
acct_invalid:'Noto‘g‘ri',
acct_ready:'Hisob tayyor. Meeland-ni yoping, IPni almashtiring, so‘ng qayta yuklang.',
acct_ip_note:'Hisobni almashtirganda har doim VPN ishlating va IPni almashtiring.',
acct_howto:'1. Ushbu hisob havolasini nusxalash uchun Nusxalash tugmasini bosing.\n2. Boshqa brauzerda yoki qurilmada — yoki do\'st bilan — MES-ni oching.\n3. Import tugmasini bosib havolani joylashtiring.',
sh_movement:'Harakatlanish',
sh_defense:'Himoya',
sh_camera:'Kamera',
sh_overlays:'Qatlamlar',
sh_behaviour:'Xulq',
sh_buttons:'Tugmalar',
sh_language:'Til',
sh_chat:'Chat',
sh_waves:'Waves',
sh_steal_a_pet:'Uy hayvonini o\'g\'irlash',
sh_tower:'Tower',
sh_misc_multi:'Boshqa (ko\'p rejim)',
s_noclip:'Devordan oʻtish',
s_fly:'Uchish',
s_fly_emotes:'Uchish emotlari',
s_base_speed:'Asosiy tezlik',
s_jump_mult:'Sakrash balandligi',
s_grav_mult:'Gravitatsiya',
s_walk_up_walls:'Devorlarga yurish',
s_carry_normalize:'Yuk tashish tezligi + sakrash',
s_invincibility:'Yengilmaslik',
s_anti_kb:'Anti-orqaga turtarilish',
s_invisible:'Koʻrinmas',
s_xray_infection:'Rentgen (Qotillik Siri)',
s_ghost_mode:'Arvoh rejimi',
s_flee_intruder:'Bostiruvchi kelsa qochish',
s_first_person:'Birinchi shaxs ko\'rinishi',
s_fov_first_person:'FOV (1-chi)',
s_fov_third_person:'FOV (3-chi)',
s_fov_vertical_mult:'FOV vertikal multiplikatori',
s_auto_lock:'Avto-qulflash baza',
s_auto_fountain:'Avto-favvora (1.5×)',
s_daily_coins:'Kundalik tangalar',
s_stars:'Yulduzlar',
s_diamonds_tower:'Olmoslar (Minora)',
s_tower_loop:'Minora sikli',
s_auto_roll_x25:'Avtomatik roll x25 omad',
s_auto_craft:'Avtomatik craft',
s_auto_vip_sword:'Avtomatik VIP sotib olish',
s_auto_vip_waves:'Avtomatik VIP sotib olish (To\'lqinlar)',
s_direct_kill:'To\'g\'ridan-to\'g\'ri o\'ldirish spami',
s_direct_kill_rate:'O\'ldirish tezligi',
s_auto_buy_upgrades:'Avtomatik sotib olish yangilanishlari',
s_boost_coins:'Avtomatik yangilash: tangalar',
s_boost_diamonds:'Avtomatik yangilash: olmos',
s_boost_luck:'Avtomatik yangilash: omad',
s_auto_unlock_areas:'Hududlarni avtomatik ochish',
s_auto_rebirth:'Avtomatik qayta tug\'ilish',
s_auto_join_tp:'Eng baland hududga teleport',
s_hide_kill_rewards:'O\'ldirish mukofotlarini yashirish',
s_hide_roll_anim:'Roll animatsiyasini yashirish',
rng_title:'Uy hayvonlari RNG hiylalari',
rng_sec_rolling:'dumalab',
rng_sec_crafting:'Hunarmandchilik',
rng_sec_combat:'Jang',
rng_sec_upgrades:'Yangilanishlar',
rng_sec_areas:'Hududlar',
rng_actions:'Harakatlar',
log_craft:'Hunarmandchilik',
log_success:'MUVAFFAQIYAT',
log_fail:'MUVOFIQ',
log_unlocking_area:'Qulfni ochish maydoni',
log_area_unlocked:'Hudud qulfdan chiqarilgan',
log_equipped:'Jihozlangan',
log_bought_upgrade:'Yangilash sotib olindi',
log_teleported_to:'Teleportatsiya qilingan',
log_rebirthing:'Qayta tug\'ilish',
h_rng:'rng',
h_accts:'Hisoblar',
s_auto_collect:'Avto-yigʻish daromad',
s_collect_interval:'Yigʻish oraligʻi',
s_chat_fade:'Chat yo\'qolish vaqti',
s_name_colors:'Foydalanuvchi nomi ranglari',
s_chat_enhance:'Suhbat yaxshilanishlari',
mes_hint:'Maslahat: animatsiya kamalak effekti uchun foydalanuvchi nomingizga "mes" qo\'shing!',
s_carry_tune:'Olib yurish kuyı (O\'g\'irlik)',
s_pet_pickup_radius:'Hayvon O\'g\'irlik Radiusi',
s_carry_vol:'Olib yurish balandligi',
carry_tune_default:'Standart',
carry_tune_silent:'Jim',
carry_tune_ambient:'Atrof muhit',
carry_tune_blues:'Blyuz',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Klassik',
carry_tune_electronic:'Elektron',
carry_tune_epic:'Epik',
carry_tune_folk:'Xalq',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jaz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Metall',
carry_tune_pop:'Pop',
carry_tune_punk:'Pank',
carry_tune_reggae:'Reggi',
carry_tune_rock:'Rok',
s_cont_cuddle:'Doimiy quchoqlash',
s_protips:'Pro maslahatlar',
s_hideprotips:'Mening Pro maslahatlarimni yashirish',
s_show_exp_modes:'Tajribaviy rejimlarni koʻrsatish',
s_showcoords:'Koordinatalarni ko\'rsatish',
s_showfps:'FPS ko\'rsatish',
s_showtargetinfo:'Maqsad maʼlumotini koʻrsatish',
s_showobj:'Ob\'ekt / tarmoq sonini ko\'rsatish',
s_copy_dbg:'Debug jurnallarini nusxalash',
s_copy_json:'JSON-ni nusxalash',
s_clear_dbg:'Tozalash',
h_fly:'Uchish',
h_speed:'Tezlik hak',
h_waypoints:'Yoʻl nuqtalari',
h_autolock:'Avto-qulflash',
h_invisible:'Koʻrinmas',
h_cuddle:'Quchoqlash',
h_pets:'Hayvonlar',
h_snipe:'Snayper',
h_help:'Yordam',
h_settings:'Sozlamalar',
h_prv:'Shaxsiy xona',
h_tc:'Minora tugatish',
h_tcl:'Minora sikli',
kb_fly:'Uchish (almashtirish/yuqoriga)',
kb_fly_down:'Uchish pastga',
kb_set_home:'Uy sozlash',
kb_home:'Uy',
kb_back:'Orqaga',
kb_cuddle:'Quchoqlash paneli',
kb_settings:'Sozlamalar',
kb_pets:'Hayvon brauzeri',
kb_slots:'Yoʻl nuqtasi sloti',
kb_snipe:'Snayper paneli',
kb_snipe_toggle:'Snayper Yoqish/Oʻchirish',
kb_attack:'Hujum',
kb_help:'Yordam / Tavsif',
kb_tower:'Minora tugatish',
kb_tower_loop:'Minora sikli',
kb_invisible:'Koʻrinmas',
kb_first_person:'Birinchi shaxs',
kb_autolock:'Avtomatik qulflash bazasi',
kb_prv:'Shaxsiy xona',
kb_rng:'RNG',
kb_accts:'Hisoblar',
pets_title:'Uy hayvonlari',
pets_search_placeholder:'masalan yovvoyi mushukcha, oltin YOKI olmos, (oltin YOKI zumrad) yovvoyi',
pets_hint:'Soʻzlar AND bilan birlashadi. Muqobil uchun OR, guruhlash uchun qavs. * yoki % joker. Bir so\'zni chiqarib tashlash uchun oldiga - qo\'ying.',
pets_empty:'Bu xonada hayvon topilmadi',
pt_name:'Nom',
pt_mut:'Mutatsiya',
pt_rar:'Kamyoblik',
pt_owner:'Egasi',
pt_worth:'Qiymati',
pt_income:'Daromad/s',
pt_dist:'Masofa',
slots_title:'Yoʻl nuqtasi slotlari',
sniper_title:'Hayvon snayperi',
sniper_tbl_pet:'Uy hayvonlari',
sniper_tbl_owner:'Egasi',
sniper_tbl_lock:'Qulflash',
sniper_placeholder:'mas. halo, golden OR diamond, emerald dragon',
sniper_hint:'Soʻzlar AND. Muqobil uchun OR, guruhlash uchun qavs. * yoki % joker. Bir so\'zni chiqarib tashlash uchun oldiga - qo\'ying.',
sniper_room_col:'Xona',
sniper_scans_col:'Skanerlar',
sniper_top_pet_col:'Top uy hayvonlari',
sniper_top_worth_col:'Yuqori qiymat',
sniper_top_owner_col:'Yuqori egasi',
sniper_age_col:'Yoshi',
sniper_join_btn:'Qo\'shiling',
sniper_full:'Toʻlgan',
sniper_join_failed:'Maqsadli xona toʻla',
sniper_scanning_rooms:'Boshqa xonalar qidirilmoqda…',
sniper_scan_off:'Avtomatik ov',
sniper_scan_next:'Keyingi skanerlash',
sniper_scan_idle:'Boʻsh – skanerlashni kutmoqda',
sniper_auto_place:'Bazaga avtomatik joylashtirish',
sniper_place_desc:'(o\'g\'irlangan hayvonni sizning baza uyachasiga qo\'yadi)',
sniper_auto_drop:'Toʻlqinlarda mos kelmaydigan uy hayvonlarini avtomatik tashlash',
sniper_drop_desc:'(filtrga mos kelmaydigan yovvoyi uy hayvonlarini tashlab, spawn hovuzini yangilaydi)',
sniper_auto_hunt:'Avto-ov',
sniper_hunt_desc:'(boshqa xonalarni skanerlab, eng yaxshi moslikka o‘tadi)',
sniper_auto_sell:'Oʻgʻirlikda avto-sotish',
sniper_sell_desc:'(baza toʻlsa eng yomonini sot)',
sniper_lockdown:'Qulflash ≤',
sniper_lockdown_hint:'≤ bu vaqt qolgan bazalardan oʻgʻirla. 0 = faqat ochiq.',
sniper_join_grace:'Rahmatga qo\'shiling',
sniper_start:'Boshlash',
sniper_stop:'Toʻxtatish',
sniper_idle:'Boʻsh',
sniper_no_filter:'Filtr yoʻq',
sniper_waiting:'Oʻyin kutilmoqda...',
sniper_hold_pause:'Hayvon ushlanmoqda — pauza',
sniper_stolen_pause:'bizning hayvon bor — pauza',
sniper_cooldown:'Sovutish',
sniper_hopping:'Server almashtirilmoqda...',
sniper_na:'Lobbida snayper yoʻq — avval oʻyinga kiring',
sniper_wait_lock:'Qulflash maʼlumotlari kutilmoqda...',
sniper_locked:'Baza qulflangan — oʻtib ketilmoqda...',
sniper_full_eggs:'Baza toʻla — faqat tuxumlar, sotib boʻlmaydi',
sniper_stealing:'Oʻgʻirlash',
sniper_dropped:'Tashlandi',
sniper_holding:'Ushlab turibdi',
sniper_place:'Bazaga qoʻy!',
sniper_steal_mode:'[Oʻgʻirlik]',
sniper_theft_nohop:'Hayvon oʻgʻirlanmoqda',
sniper_nohop_suffix:'— sakrash yoʻq',
sniper_sniping:'Snayper:',
sniper_options:'Tanlovlar',
sniper_drop_fail_status:'Tashlash muvaffaqiyatsiz!',
sniper_hotkey_label:'Tezkor tugma:',
sniper_panel_label:'Panel:',
sniper_grab_fail:'Ushlab boʻlmadi. Qaytadan...',
sniper_our_pet_stolen:'Bizning hayvon oʻgʻirlandi — 8s sovutish',
sniper_hopping_short:'Sakranmoqda...',
sniper_base_full:'Baza to\'la',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'YUGUR',
pet_teleport_title:'Teleport',
pet_pickup_title:'Olib ketish; ko\'tarish',
owner_yours:'sizniki',
owner_wild:'Yovvoyi',
footer_gf:'Yog\'li vilkalar',
copy_ok:'Ko‘chirildi',
copy_failed:'Nusxalash amalga oshmadi',
s_invis_on_fly:'Uchayotganda ko\'rinmas',
snipe_walk_home:'O\'g\'irlikdan keyin uyga piyoda bor',
snipe_walk_home_desc:'Bazangga piyoda qayt',
sniper_afk_sell:'AFK mos kelmaydigan hayvonlarni sotish',
sniper_afk_sell_desc:'(5s harakatsiz boʻlganda, filtrga mos kelmaydigan hayvonlarni qiymati boʻyicha sotish — faqat toʻlqinlar)',
hb_fly:'UCH',
hb_lck:'QFL',
hb_inv:'KRM',
hb_cud:'QCH',
hb_pet:'HYV',
hb_snp:'SNP',
hb_cfg:'SOZ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'HIS',
ban_title:'Ulanish bloklandi',
ban_sub:'IP manzilingiz Meeland tomonidan cheklangan',
ban_body:'Tashvishlanmang — buni tuzatish oson! Bepul VPN sizga yangi IP beradi, yana oʼyin ishlaydi.',
ban_pick:'VPN tanlang',
ban_warp:'bepul, cheksiz, bir marta bosish bilan sozlash',
ban_warp_store:'shuningdek, App Store va Play Marketda "1.1.1.1" sifatida',
ban_proton:'maʼlumotlar chegarasi yoʻq, 5 ta davlat',
ban_steps:'O‘rnatish → ulanish → ushbu sahifani yangilang. Bo\'ldi shu!',
ban_ok:'Tushundim',
warn_title:'Har doim VPN dan foydalaning',
warn_body:'Har doim <b>VPN</b> yoqilgan holda oʻynang.',
warn_ok:'Tushundim, tushundim',
loading:'Yuklanmoqda',
tcl_loading:'Toʻliq minora sikli ishlamoqda. Toʻxtatish uchun {key} tugmasini bosing.',
hop_search:'Oʻyin qidirilmoqda',
hop_match:'{name} topildi — qoʻshilmoqda',
hop_flee:'Bostiruvchidan qochish',
hop_reconnect:'Qayta ulanmoqda',
hop_reload:'Qayta yuklanmoqda',
hop_fall:'Yiqilishdan tuzalmoqda',
hop_join:'Xonaga qoʻshilmoqda',
lock_off:'O‘CHIRISH',
lock_unlocked:'BULFILDIGAN',
desc_intro:'MES Meeland\'da sizga wallhack, avto-fermerchilik, noyob uy hayvonlari kolleksiyasi, tezlikni oshirish, parvoz, ko\'rinmaslik va boshqalarni taqdim etadi.',
desc_free:'100% bepul, doimo. Fikringiz bormi? ⭐ ijobiy sharh qoldiring — yangilanishlarni davom ettiradigan shu.',
desc_h_movement:'Harakat',
desc_h_combat:'Jang',
desc_h_tuning:'Sozlash',
desc_h_pets:'Hayvonlar & Oʻgʻirlik',
desc_h_economy:'Iqtisodiyot',
desc_h_custom:'Sozlash',
desc_h_extras:'Qoʻshimcha',
desc_fly:'Uchish',
desc_fly_d:'Space yuqoriga, F pastga. Tezlik sozlanadi.',
desc_speed:'Miltillash',
desc_speed_d:'Shift tezkor teleport.',
desc_noclip:'Devordan oʻtish',
desc_noclip_d:'Devorlardan oʻt.',
desc_walls:'Devorlarda Yurish',
desc_walls_d:'Har qanday yuzaga chiq.',
desc_waypts:'Yoʻl nuqtalari',
desc_waypts_d:'10 pozitsiya saqlang. Bitta tugma teleport. <kbd>Z</kbd> almashtirish.',
desc_invis:'Koʻrinmas',
desc_invis_d:'Butunlay yoʻqolish uchun CapsLock tugmasini bosing.',
desc_fpv:'FPV',
desc_fpv_d:'Birinchi shaxs ko\'rinishiga o\'tish uchun <kbd>.</kbd> tugmasini bosing.',
desc_anti_invis:'Anti-koʻrinmaslik',
desc_anti_invis_d:'Koʻrinmas oʻyinchilarni arvoh sifatida koʻr.',
desc_xray:'Rentgen Ko‘rish',
desc_xray_d:'Qotillik Sirida devorlar orqali o\'yinchilarni ko\'ring. Qizil = qotil, yashil = fuqaro.',
desc_nodeathh:'Oʻlmas',
desc_nodeath_d:'Barcha zararlarga chidamli.',
desc_antikb:'Anti-itarish',
desc_antikb_d:'Itarib boʻlmaydi.',
desc_attack:'Tezda hujum',
desc_attack_d:'<kbd>G</kbd> eng yaqin oʻyinchiga teleport qilib uradi.',
desc_jumpgrav:'Sakrash va Gravitatsiya',
desc_jumpgrav_d:'Sozlamalarda sozlanadigan koʻpaytirgichlar.',
desc_fov:'FOV Boshqaruvi',
desc_fov_d:'Birinchi va uchinchi shaxs FOV slayderlari.',
desc_autoinvis:'Uchishda Avto-Koʻrinmas',
desc_autoinvis_d:'Uchayotganda avtomatik ravishda koʻrinmas boʻl.',
desc_sniper:'Hayvon snayperi',
desc_sniper_d:'Filtrlangan hayvonlarni avtomatik oʻgʻirlash. Ikkala rejim.',
desc_prv:'Shaxsiy xona',
desc_prv_d:'<kbd>PgDn</kbd> joriy rejimda shaxsiy xona yaratadi va avtomatik qo\'shiladi.',
desc_petbrow:'Hayvon brauzeri',
desc_petbrow_d:'<kbd>K</kbd> barcha hayvonlarni koʻrsat. Tartiblash, filtrlash, tutish.',
desc_cuddle:'Quchoqlash paneli',
desc_cuddle_d:'<kbd>J</kbd> masofaga koʻra oʻyinchilar. Kuzatish uchun bosing.',
desc_return:'Avto Qaytish',
desc_return_d:'Oʻgʻirlikdan keyin uyga teleport.',
desc_autolock:'Avto-qulflash',
desc_autolock_d:'Baza doimo qulflangan.',
desc_fountain:'Avto-favvora',
desc_fountain_d:'Doimiy 1.5× foyda. Avto-yangilash.',
desc_money:'Bepul pul + Yulduzlar + Olmoslar',
desc_money_d:'Reklama kerak emas.',
desc_collect:'Avto-Yigʻish',
desc_collect_d:'Hayvon daromadi har 30s.',
desc_music:'Tashish ohangi',
desc_music_d:'Oʻgʻirlash paytida musiqa. 15 janr.',
desc_chatfade:'Chat soʻnishi',
desc_chatfade_d:'Xabar koʻrinishini boshqaring. 5–120s.',
desc_emotes:'Uchish emotlari',
desc_emotes_d:'Uchayotganda tasodifiy emotlar.',
desc_displays:'Displey Qatlamlari',
desc_displays_d:'Koordinatalar, FPS hisoblagichi va nishon ma\'lumoti.',
desc_config:'Sozlamalar',
desc_config_d:'<kbd>M</kbd> funksiyalar, tugmalar, tezliklar.',
desc_langs:'60 til',
desc_langs_d:'Toʻliq UI tarjimasi.',
desc_tower:'Minora tugatish',
desc_tower_d:'<kbd>Y</kbd> Obby Tower tezkor gʻalaba.',
desc_cats:'Mushuk yuklash ekranlari',
desc_cats_d:'Yoqimli mushuklar yuklashni almashtiradi.',
desc_h_install:'Oʻrnatish',
desc_desktop:'Ish stoli (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> yoki <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> oʻrnating',
desc_inst_click:'Yuqoridagi Oʻrnatish tugmasini bosing',
desc_inst_open:'Har qanday Meeland oʻyinini oching — darhol ishlaydi',
desc_mobile:'Mobil (Android)',
desc_mob_ff:'Play Store-dan <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> oʻrnating',
desc_mob_addon:'Firefox → Menyu → Qoʻshimchalar → <strong>Tampermonkey</strong> oʻrnating',
desc_mob_visit:'Firefox-da bu sahifaga kiring va Oʻrnatish bosing',
desc_mob_play:'Meeland oʻynang — tegish HUD tugmalari avtomatik paydo boʻladi',
desc_ios:'iOS: Apple barcha iOS brauzerlarida (Firefox ham) kengaytmalarni bloklaydi. Desktop yoki Android ishlating.',
desc_h_privacy:'Maxfiylik',
desc_privacy:'Faqat mijoz tomoni — hech qanday maʼlumot brauzerdan chiqmaydi'
});
_mk('am','አማርኛ',{
close:'✕',
refresh:'↻',
go:'ሂድ',
set:'አዘጋጅ',
auto:'አውቶ',
empty:'ባዶ',
help_title:'እገዛ',
players_title:'ተጫዋቾች',
players_empty:'ሌሎች ተጫዋቾች አልተገኙም',
settings_title:'ቅንብሮች',
settings_reset:'ዳግም አስጀምር',
tab_gameplay:'ጨዋታ',
tab_economy:'ኢኮኖሚ',
tab_audio:'ድምጽ',
tab_advanced:'የላቀ',
tab_hud:'HUD',
tab_keys:'ቁልፎች',
tab_accounts:'መለያዎች',
acct_current:'የአሁኑ',
acct_new:'አዲስ',
acct_import:'አስገባ',
acct_switch:'ቀይር',
acct_reload:'እንደገና ጫን',
acct_delete:'አጥፋ',
acct_cancel:'ሰርዝ',
acct_empty:'ባዶ',
acct_token_ph:'ቶከን',
acct_copy:'ቅዳ',
acct_export:'ላክ',
acct_rename:'እንደገና ስየም',
acct_save:'አስቀምጥ',
acct_name_len:'ስም 4-12 ቁምፊ መሆን አለበት',
acct_name_fail:'እንደገና ስየም አልተሳካም',
acct_invalid:'ልክ ያልሆነ',
acct_ready:'መለያ ዝግጁ ነው። Meeland ዝጋ፣ IP ቀይር፣ ከዚያ እንደገና ጫን።',
acct_ip_note:'መለያ ሲቀይሩ ሁልጊዜ VPN ይጠቀሙ እና IP ይቀይሩ።',
acct_howto:'1. የዚህን መለያ አገናኝ ለመቅዳት ቅዳ የሚለውን ጠቅ ያድርጉ።\n2. በሌላ አሳሽ ወይም መሣሪያ — ወይም ከጓደኛ ጋር — MES ን ይክፈቱ።\n3. አስመጣ የሚለውን ጠቅ አድርገው አገናኙን ይለጥፉ።',
sh_movement:'እንቅስቃሴ',
sh_defense:'መከላከያ',
sh_camera:'ካሜራ',
sh_overlays:'ተደራቢዎች',
sh_behaviour:'ባህሪ',
sh_buttons:'አዝራሮች',
sh_language:'ቋንቋ',
sh_chat:'ተወያይ',
sh_waves:'Waves',
sh_steal_a_pet:'የቤት እንስሳ መስረቅ',
sh_tower:'Tower',
sh_misc_multi:'የተለያዩ (ባለብዙ ሁነታ)',
s_noclip:'ግድግዳ ማለፍ',
s_fly:'መብረር',
s_fly_emotes:'የብረራ ኢሞት',
s_base_speed:'መሰረታዊ ፍጥነት',
s_jump_mult:'ከፍታ ዝለል',
s_grav_mult:'ስበት',
s_walk_up_walls:'ወደ ላይ ግድግዳዎች ይሂዱ',
s_carry_normalize:'ፍጥነትን ያዙሩ + ዝለል',
s_invincibility:'ማይሸነፍ',
s_anti_kb:'ፀረ-ኋላ ግፊት',
s_invisible:'የማይታይ',
s_xray_infection:'ኤክስ-ሬይ (የጥቅለተ ምስጢር)',
s_ghost_mode:'የመናፍስት ሁነታ',
s_flee_intruder:'ሰርጎ ገቢ ሲገባ መሸሽ',
s_first_person:'የመጀመሪያ ሰው እይታ',
s_fov_first_person:'FOV (1ኛ ሰው)',
s_fov_third_person:'FOV (3ኛ ሰው)',
s_fov_vertical_mult:'FOV አቀባዊ ማባዣ',
s_auto_lock:'አውቶ-ቁልፍ ቤዝ',
s_auto_fountain:'አውቶ-ፏፏቴ (1.5×)',
s_daily_coins:'ዕለታዊ ሳንቲሞች',
s_stars:'ኮከቦች',
s_diamonds_tower:'አልማዞች (ግንብ)',
s_tower_loop:'የግንብ ዑደት',
s_auto_roll_x25:'አውቶማቲክ ሮል x25 እድል',
s_auto_craft:'አውቶ-ክራፍት',
s_auto_vip_sword:'ቪአይፒ በራስ-ሰር ይግዙ',
s_auto_vip_waves:'ቪአይፒ በራስ-ሰር ይግዙ (ማዕበል)',
s_direct_kill:'ቀጥታ የመግደል ስፓም',
s_direct_kill_rate:'የመግደል መጠን',
s_auto_buy_upgrades:'ራስ-ግዛ ማሻሻያዎች',
s_boost_coins:'ራስ-አሻሽል: ሳንቲሞች',
s_boost_diamonds:'ራስ-አሻሽል: አልማዞች',
s_boost_luck:'ራስ-አሻሽል: ዕድል',
s_auto_unlock_areas:'ራስ-ሰር ክፈት ቦታዎች',
s_auto_rebirth:'ራስ-ሰር ዳግም መወለድ',
s_auto_join_tp:'ቴሌፖርት ወደ ከፍተኛው አካባቢ',
s_hide_kill_rewards:'የመግደል ሽልማቶችን ደብቅ',
s_hide_roll_anim:'የሮል አኒሜሽን ደብቅ',
rng_title:'የቤት እንስሳት RNG ማጭበርበር',
rng_sec_rolling:'ማንከባለል',
rng_sec_crafting:'የእጅ ሥራ',
rng_sec_combat:'መዋጋት',
rng_sec_upgrades:'ማሻሻያዎች',
rng_sec_areas:'አካባቢዎች',
rng_actions:'ድርጊቶች',
log_craft:'ዕደ-ጥበብ',
log_success:'ስኬት',
log_fail:'አልተሳካም።',
log_unlocking_area:'የመክፈቻ ቦታ',
log_area_unlocked:'አካባቢ ተከፍቷል።',
log_equipped:'የታጠቁ',
log_bought_upgrade:'ማሻሻያ ገዝቷል።',
log_teleported_to:'በቴሌፎን ተላልፏል',
log_rebirthing:'ዳግም መወለድ',
h_rng:'አርኤንጂ',
h_accts:'መለያዎች',
s_auto_collect:'አውቶ-ስብሰባ ገቢ',
s_collect_interval:'የስብሰባ ክፍተት',
s_chat_fade:'ቻት ጠፊ ጊዜ',
s_name_colors:'የተጠቃሚ ስም ቀለሞች',
s_chat_enhance:'የቻት ማሻሻያዎች',
mes_hint:'ጠቃሚ ምክር: ለቀስተ ደመና እንቅስቃሴ ውጤት በተጠቃሚ ስምዎ "mes" ያካትቱ!',
s_carry_tune:'ማሸሽ ዜማ (መስረቅ)',
s_pet_pickup_radius:'እንስሳ መስረቅ ርቀት',
s_carry_vol:'ማሸሽ ድምጽ',
carry_tune_default:'ነባሪ',
carry_tune_silent:'ዝምታ',
carry_tune_ambient:'አምቢያን',
carry_tune_blues:'ብሉዝ',
carry_tune_chiptune:'ቺፕቱን',
carry_tune_classical:'ክላሲካዊ',
carry_tune_electronic:'ኤሌክትሮኒክ',
carry_tune_epic:'ኢፒካዊ',
carry_tune_folk:'ፎልክ',
carry_tune_funk:'ፋንክ',
carry_tune_jazz:'ጃዝ',
carry_tune_lofi:'ሎ-ፋይ',
carry_tune_metal:'ሜታል',
carry_tune_pop:'ፖፕ',
carry_tune_punk:'ፓንክ',
carry_tune_reggae:'ሬጌ',
carry_tune_rock:'ሮክ',
s_cont_cuddle:'ቀጣይ ቅርብ',
s_protips:'ፕሮ ምክሮች',
s_hideprotips:'የእኔ ፕሮ ምክሮችን ደብቅ',
s_show_exp_modes:'የሙከራ ሁነታዎችን አሳይ',
s_showcoords:'ቦታ ምልክቶችን አሳይ',
s_showfps:'FPS አሳይ',
s_showtargetinfo:'ዒላማ መረጃ አሳይ',
s_showobj:'አካል/የተጣራ ብዛት አሳይ',
s_copy_dbg:'Debug ምዝገቦችን ቅዳ',
s_copy_json:'JSON ቅዳ',
s_clear_dbg:'አጽዳ',
h_fly:'መብረር',
h_speed:'ፍጥነት ሃክ',
h_waypoints:'መንገድ ነጥቦች',
h_autolock:'አውቶ-ቁልፍ',
h_invisible:'የማይታይ',
h_cuddle:'ቅርብ',
h_pets:'እንስሳት',
h_snipe:'ስናይፐር',
h_help:'እገዛ',
h_settings:'ቅንብሮች',
h_prv:'የግል ክፍል',
h_tc:'ግንብ ጨርስ',
h_tcl:'የግንብ ዑደት',
kb_fly:'መብረር (ቀያይር/ወደላይ)',
kb_fly_down:'መብረር ወደታች',
kb_set_home:'ቤት አዘጋጅ',
kb_home:'ቤት',
kb_back:'ወደኋላ',
kb_cuddle:'ቅርብ ፓነል',
kb_settings:'ቅንብሮች',
kb_pets:'እንስሳት ድረገፅ',
kb_slots:'መንገድ ነጥብ ስሎት',
kb_snipe:'ስናይፐር ፓነል',
kb_snipe_toggle:'ስናይፐር አብራ/አጥፋ',
kb_attack:'ጥቃት',
kb_help:'እገዛ / ገለፃ',
kb_tower:'ግንብ ጨርስ',
kb_tower_loop:'የግንብ ዑደት',
kb_invisible:'የማይታይ',
kb_first_person:'የመጀመሪያ ሰው',
kb_autolock:'ራስ-መቆለፊያ መሠረት',
kb_prv:'የግል ክፍል',
kb_rng:'RNG',
kb_accts:'መለያዎች',
pets_title:'የቤት እንስሳት',
pets_search_placeholder:'ለምሳሌ. የዱር ኪቲ፣ ወርቃማ ወይም አልማዝ፣ (ወርቃማ ወይም ኤመራልድ) ዱር',
pets_hint:'ቃላት AND ይጣመራሉ። ለተለዋጭ OR፣ ለቡድን ቅንፍ። * ወይም % ወይልድካርድ። አንድ ቃል ለማግለል ከፊቱ - ያስቀምጡ።',
pets_empty:'በዚህ ክፍል ውስጥ እንስሳ አልተገኘም',
pt_name:'ስም',
pt_mut:'ለምጥ',
pt_rar:'ብርቅ',
pt_owner:'ባለቤት',
pt_worth:'ዋጋ',
pt_income:'ገቢ/ሰ',
pt_dist:'ርቀት',
slots_title:'መንገድ ነጥብ ስሎቶች',
sniper_title:'እንስሳ ስናይፐር',
sniper_tbl_pet:'የቤት እንስሳ',
sniper_tbl_owner:'ባለቤት',
sniper_tbl_lock:'ቆልፍ',
sniper_placeholder:'ምሳሌ halo, golden OR diamond, emerald dragon',
sniper_hint:'ቃላት AND። ለተለዋጭ OR፣ ለቡድን ቅንፍ። * ወይም % ወይልድካርድ። አንድ ቃል ለማግለል ከፊቱ - ያስቀምጡ።',
sniper_room_col:'ክፍል',
sniper_scans_col:'ይቃኛል',
sniper_top_pet_col:'ከፍተኛ የቤት እንስሳ',
sniper_top_worth_col:'ከፍተኛ ዋጋ ያለው',
sniper_top_owner_col:'ከፍተኛ ባለቤት',
sniper_age_col:'ዕድሜ',
sniper_join_btn:'ይቀላቀሉ',
sniper_full:'ሞልቷል',
sniper_join_failed:'የዒላማ ክፍል ሞልቷል።',
sniper_scanning_rooms:'ሌሎች ክፍሎችን በመፈለግ ላይ…',
sniper_scan_off:'በአውቶ ማደን',
sniper_scan_next:'ቀጣይ ቅኝት ወደ ውስጥ',
sniper_scan_idle:'ስራ ፈት - ለመቃኘት በመጠባበቅ ላይ',
sniper_auto_place:'በቤዝ ላይ ራስ-ሰር አስቀምጥ',
sniper_place_desc:'(የተሰረቀ እንስሳ በቤዝ ስሎትህ ላይ ያስቀምጣል)',
sniper_auto_drop:'በ Waves ውስጥ የማይመሳሰሉ የቤት እንስሳትን በራስ-ሰር ጣል',
sniper_drop_desc:'(የማይመሳሰሉ የዱር እንስሳትን ጥሎ የመፈልፈያ ገንዳውን ያድሳል)',
sniper_auto_hunt:'ራስ-ሰር አደን',
sniper_hunt_desc:'(ሌሎች ክፍሎችን ቃኝቶ ወደ ምርጥ ተዛማጅ ይዝለል)',
sniper_auto_sell:'በሌብነት አውቶ-ሽጥ',
sniper_sell_desc:'(ቤዝ ከሞላ በጣም መጥፎውን ሽጥ)',
sniper_lockdown:'ቁልፍ ≤',
sniper_lockdown_hint:'≤ ይህ ጊዜ ከቀረ ቤዞች ስረቅ። 0 = ክፍት ብቻ።',
sniper_join_grace:'ጸጋን ተቀላቀሉ',
sniper_start:'ጀምር',
sniper_stop:'አቁም',
sniper_idle:'ነቅቶ',
sniper_no_filter:'ማጣሪያ የለም',
sniper_waiting:'ጨዋታ እየጠበቀ...',
sniper_hold_pause:'እንስሳ ተይዟል — ለአፍታ',
sniper_stolen_pause:'የእኛ እንስሳ አለ — ለአፍታ',
sniper_cooldown:'ማቀዝቀዣ',
sniper_hopping:'ሰርቨር እየቀየረ...',
sniper_na:'ስናይፐር በሎቢ የለም — አስቀድመህ ጨዋታ ግባ',
sniper_wait_lock:'የቁልፍ ዳታ እየጠበቀ...',
sniper_locked:'ቤዝ ተቆልፏል — እየዘለለ...',
sniper_full_eggs:'ቤዝ ሞልቷል — እንቁላል ብቻ፣ መሸጥ አይቻልም',
sniper_stealing:'እየሰረቀ',
sniper_dropped:'ተጣለ',
sniper_holding:'ይዟል',
sniper_place:'በቤዝ ውስጥ አስቀምጥ!',
sniper_steal_mode:'[ስርቆት]',
sniper_theft_nohop:'እንስሳ እየተሰረቀ',
sniper_nohop_suffix:'— ዝላይ የለም',
sniper_sniping:'ስናይፕ:',
sniper_options:'አማራጮች',
sniper_drop_fail_status:'ጣል አልተሳካም!',
sniper_hotkey_label:'ሆትኪ:',
sniper_panel_label:'ፓነል:',
sniper_grab_fail:'መያዝ አልተሳካም። እንደገና...',
sniper_our_pet_stolen:'የእኛ እንስሳ ተሰረቀ — 8ሰ ማቀዝቀዣ',
sniper_hopping_short:'እየዘለለ...',
sniper_base_full:'መሠረት ሞልቷል።',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ሩጥ',
pet_teleport_title:'ቴሌፖርት',
pet_pickup_title:'ማንሳት',
owner_yours:'ያንተ',
owner_wild:'የዱር',
footer_gf:'የሚቀባ ሹካ',
copy_ok:'ተገልብጧል',
copy_failed:'መቅዳት አልተሳካም።',
s_invis_on_fly:'በሚበርበት ጊዜ የማይታይ',
snipe_walk_home:'ከሰረቅህ በኋላ በእግርህ ወደ ቤትህ ሂድ',
snipe_walk_home_desc:'በእግርህ ወደ መሰረትህ ተመለስ',
sniper_afk_sell:'AFK የማይመሳሰሉ እንስሳትን ሽጥ',
sniper_afk_sell_desc:'(ስራ ፈት ሲሆን 5ሰከንድ፣ ከማጣሪያው ጋር የማይመሳሰሉ እንስሳትን በዋጋ መሰረት ሽጥ — ማዕበሎች ብቻ)',
hb_fly:'ብረር',
hb_lck:'ቁልፍ',
hb_inv:'ስውር',
hb_cud:'እቅፍ',
hb_pet:'እንስ',
hb_snp:'ተኳሽ',
hb_cfg:'ቅንብ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'መለያ',
ban_title:'ግንኙነት ታግዷል',
ban_sub:'የእርስዎ IP አድራሻ በ Meeland ተገድቧል',
ban_body:'አይጨነቁ — ይህን ማስተካከል ቀላል ነው! ነጻ VPN አዲስ IP ይሰጥዎታል ስለዚህ በድጋሚ መጫወት ይችላሉ።',
ban_pick:'ፈጣን መፍትሔ — አንዱን ይምረጡ፡',
ban_warp:'ነጻ፣ ያልተገደበ፣ በአንድ ጠቅታ ማዋቀር',
ban_warp_store:'በ App Store እና Play Store ላይ "1.1.1.1" በመባልም ይገኛል',
ban_proton:'የውሂብ ገደብ የለም፣ 5 አገሮች',
ban_steps:'ጫን → አገናኝ → ይህን ገጽ አድስ። ያው ነው!',
ban_ok:'ገባኝ',
warn_title:'ሁልጊዜ VPN ተጠቀም',
warn_body:'ሁልጊዜ ከ<b>VPN</b> ጋር ይጫወቱ።',
warn_ok:'ገባኝ፣ ገባኝ።',
loading:'በመጫን ላይ',
tcl_loading:'ሙሉ የግንብ ዑደት በመስራት ላይ ነው። ለማቆም {key} ይጫኑ።',
hop_search:'ግጥሚያ በመፈለግ ላይ',
hop_match:'{name} ተገኝቷል — በመቀላቀል ላይ',
hop_flee:'ከሰርጎ ገቢ ማምለጥ',
hop_reconnect:'እንደገና በማገናኘት ላይ',
hop_reload:'እንደገና በመጫን ላይ',
hop_fall:'ከመውደቅ በማገገም ላይ',
hop_join:'ወደ ክፍል በመቀላቀል ላይ',
lock_off:'ጠፍቷል',
lock_unlocked:'ተከፍቷል',
desc_intro:'MES በMeland ውስጥ wallhackን፣ ራስ-እርሻን፣ ብርቅዬ የቤት እንስሳት መሰብሰብን፣ የፍጥነት መጨመርን፣ በረራን፣ አለመታየትን እና ሌሎችንም ይሰጥዎታል',
desc_free:'100% ነፃ፣ ሁልጊዜ። አስተያየት አለህ? ⭐ አዎንታዊ ግምገማ ተው — ያ ማዘመኖችን ያቆያል።',
desc_h_movement:'እንቅስቃሴ',
desc_h_combat:'ውጊያ',
desc_h_tuning:'ማስተካከያ',
desc_h_pets:'እንስሳት & ስርቆት',
desc_h_economy:'ኢኮኖሚ',
desc_h_custom:'ማበጀት',
desc_h_extras:'ተጨማሪ',
desc_fly:'መብረር',
desc_fly_d:'Space ወደላይ፣ F ወደታች። ፍጥነት ሊስተካከል ይችላል።',
desc_speed:'ብሊንክ',
desc_speed_d:'Shift ፈጣን ቴሌፖርት።',
desc_noclip:'ግድግዳ ማለፍ',
desc_noclip_d:'ግድግዳዎችን አልፍ።',
desc_walls:'በግድግዳ ላይ መሄድ',
desc_walls_d:'በማንኛውም ገጽ ላይ ውጣ።',
desc_waypts:'መንገድ ነጥቦች',
desc_waypts_d:'10 ቦታዎች አስቀምጥ። አንድ-ቁልፍ ቴሌፖርት። <kbd>Z</kbd> ቀያይር።',
desc_invis:'የማይታይ',
desc_invis_d:'ሙሉ በሙሉ ለመጥፋት CapsLock ይጫኑ።',
desc_fpv:'FPV',
desc_fpv_d:'ወደ መጀመሪያ ሰው ካሜራ ለመቀየር <kbd>.</kbd> ይጫኑ።',
desc_anti_invis:'ፀረ-የማይታይ',
desc_anti_invis_d:'የማይታዩ ተጫዋቾችን እንደ መንፈስ ይመልከቱ።',
desc_xray:'ኤክስ-ሬይ ራይ',
desc_xray_d:'ከጠመታው ምስጢር ውስጥ ጀግሎች አይነ አጫል በጠናውር ተጣዋቆችን ይዩ፰ ቀይ = ጠመታዊ፲ አረንድድ = ሪትዊ፲',
desc_nodeathh:'የማይሞት',
desc_nodeath_d:'ከሁሉም ጉዳት ተጠብቆ።',
desc_antikb:'ፀረ-ግፊት',
desc_antikb_d:'ሊገፉ አይችሉም።',
desc_attack:'ፈጣን ጥቃት',
desc_attack_d:'<kbd>G</kbd> ወደ ቅርቡ ተጫዋች ቴሌፖርት አድርጎ ይመታል።',
desc_jumpgrav:'ዝላይ እና ስበት',
desc_jumpgrav_d:'በቅንብሮች ውስጥ ማስተካከያ አባዢዎች።',
desc_fov:'FOV ቁጥጥር',
desc_fov_d:'የመጀመሪያ ሰው እና የሶስተኛ ሰው FOV ተንሸራታቾች።',
desc_autoinvis:'በራስ-ሰር አይታይም በሚበርበት ጊዜ',
desc_autoinvis_d:'በሚበሩበት ጊዜ በራስ-ሰር የማይታዩ ይሁኑ።',
desc_sniper:'እንስሳ ስናይፐር',
desc_sniper_d:'የተጣሩ ፔቶች ራስ-ስርቆት። ሁለቱም ሁነቶች።',
desc_prv:'የግል ክፍል',
desc_prv_d:'<kbd>PgDn</kbd> በአሁኑ ሁነታ የግል ክፍል ይፈጥራል እና በራስ ሰር ይቀላቀላል።',
desc_petbrow:'እንስሳ ድረገፅ',
desc_petbrow_d:'<kbd>K</kbd> ሁሉንም ፔቶች ያሳያል። አደራጅ፣ አጣራ፣ ያዝ።',
desc_cuddle:'ቅርብ ፓነል',
desc_cuddle_d:'<kbd>J</kbd> በርቀት ተጫዋቾች። ለመከተል ጠቅ ያድርጉ።',
desc_return:'ራስ-መመለስ',
desc_return_d:'ከስርቆት በኋላ ወደ ቤት ቴሌፖርት።',
desc_autolock:'አውቶ-ቁልፍ',
desc_autolock_d:'ቤዝ ሁልጊዜ ቆልፍ።',
desc_fountain:'አውቶ-ፏፏቴ',
desc_fountain_d:'ዘላቂ 1.5× ትርፍ። ራስ-ማደስ።',
desc_money:'ነፃ ገንዘብ + ኮከቦች + አልማዞች',
desc_money_d:'ማስታወቂያ አያስፈልግም።',
desc_collect:'ራስ-ሰብሳቢ',
desc_collect_d:'የፔት ገቢ በየ 30 ሰከንድ።',
desc_music:'የሸክም ዜማ',
desc_music_d:'ስርቆት ላይ ሙዚቃ። 15 ዓይነት።',
desc_chatfade:'ቻት ድብዝዝ',
desc_chatfade_d:'የመልዕክት ዕይታ ቁጥጥር። 5–120ሰ።',
desc_emotes:'በረራ ኢሞት',
desc_emotes_d:'በረራ ላይ ያልተጠበቁ ኢሞቶች።',
desc_displays:'የማሳያ ተደራቢዎች',
desc_displays_d:'መጋጠሚያዎች፣ FPS ቆጣሪ እና የኢላማ መረጃ።',
desc_config:'ቅንብሮች',
desc_config_d:'<kbd>M</kbd> ባህሪያት፣ ቁልፎች፣ ፍጥነቶች።',
desc_langs:'60 ቋንቋዎች',
desc_langs_d:'ሙሉ UI ትርጉም።',
desc_tower:'ግንብ ጨርስ',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ፈጣን ድል።',
desc_cats:'ድመት መጫኛ ማያ ገጾች',
desc_cats_d:'ቆንጆ ድመቶች መጫንን ይተካሉ።',
desc_h_install:'ጫን',
desc_desktop:'ዴስክቶፕ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ወይም <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ጫን',
desc_inst_click:'ከላይ ጫን ጠቅ አድርግ',
desc_inst_open:'ማንኛውንም Meeland ጨዋታ ክፈት — ወዲያው ይሰራል',
desc_mobile:'ሞባይል (Android)',
desc_mob_ff:'ከ Play Store <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Android Firefox</a> ጫን',
desc_mob_addon:'Firefox → ምናሌ → ተጨማሪዎች → <strong>Tampermonkey</strong> ጫን',
desc_mob_visit:'በ Firefox ላይ ይህን ገፅ ጎብኝ ና ጫን ን ንካ',
desc_mob_play:'Meeland ተጫወት — የንክኪ HUD ቁልፎች በራሱ ይታያሉ',
desc_ios:'iOS: Apple በሁሉም iOS ድረገፆች (Firefox ጨምሮ) ቅጥያዎችን ይከለክላል። ዴስክቶፕ ወይም Android ተጠቀም።',
desc_h_privacy:'ግላዊነት',
desc_privacy:'ደንበኛ ወገን ብቻ — ምንም ዳታ ከድረገፁ አይወጣም'
});
_mk('ha','Hausa',{
close:'✕',
refresh:'↻',
go:'Tafi',
set:'Saita',
auto:'Auta',
empty:'komai babu',
help_title:'Taimako',
players_title:'\'Yan wasa',
players_empty:'Babu wasu \'yan wasan da aka samu',
settings_title:'Saituna',
settings_reset:'Sake saiti',
tab_gameplay:'Wasa',
tab_economy:'Tattalin arziki',
tab_audio:'Audio',
tab_advanced:'Na gaba',
tab_hud:'HUD',
tab_keys:'Maɓallai',
tab_accounts:'Asusun',
acct_current:'Na yanzu',
acct_new:'Sabuwa',
acct_import:'Shigo',
acct_switch:'Canza',
acct_reload:'Sake loda',
acct_delete:'Share',
acct_cancel:'Soke',
acct_empty:'Fanko',
acct_token_ph:'Token',
acct_copy:'Kwafi',
acct_export:'Fitarwa',
acct_rename:'Sake suna',
acct_save:'Ajiye',
acct_name_len:'Sunan dole ya kasance haruffa 4-12',
acct_name_fail:'Sake sunan ya kasa',
acct_invalid:'Rashin inganci',
acct_ready:'Asusu a shirye. Rufe Meeland, canza IP, sannan sake loda.',
acct_ip_note:'Kullum yi amfani da VPN kuma canza IP yayin canza asusu.',
acct_howto:'1. Latsa Kwafi don kwafa mahaɗin wannan asusun.\n2. A cikin wani burauzar ko na\'urar — ko tare da aboki — buɗe MES.\n3. Latsa Shigo da sanya mahaɗin.',
sh_movement:'Motsi',
sh_defense:'Tsaro',
sh_camera:'Kyamara',
sh_overlays:'Rufi',
sh_behaviour:'Hali',
sh_buttons:'Maɓallai',
sh_language:'Harshe',
sh_chat:'Taɗi',
sh_waves:'Waves',
sh_steal_a_pet:'Satar dabbar gida',
sh_tower:'Tower',
sh_misc_multi:'Daban-daban (yanaye da yawa)',
s_noclip:'Babu karo',
s_fly:'Tashi',
s_fly_emotes:'Tashi Emotes',
s_base_speed:'Gudun tushe',
s_jump_mult:'tsayi tsayi',
s_grav_mult:'Girman nauyi',
s_walk_up_walls:'Tafiya Up Walls',
s_carry_normalize:'Dauke Gudun + Tsalle',
s_invincibility:'Rashin nasara',
s_anti_kb:'Anti-Tura',
s_invisible:'Ganuwa',
s_xray_infection:'X-Ray (Asirin Kisa)',
s_ghost_mode:'Yanayin fatalwa',
s_flee_intruder:'Guduwa idan mai kutse',
s_first_person:'Duban mutum na farko',
s_fov_first_person:'FOV (1st)',
s_fov_third_person:'FOV (3rd)',
s_fov_vertical_mult:'FOV Tsayayyen Multiplier',
s_auto_lock:'Tushen Kulle Kai tsaye',
s_auto_fountain:'autofountain (1.5×)',
s_daily_coins:'Tsabar kudi na yau da kullun',
s_stars:'Taurari',
s_diamonds_tower:'Diamonds (Hasumiya)',
s_tower_loop:'Zagayen hasumiya',
s_auto_roll_x25:'Mirgine x25 sa\'a',
s_auto_craft:'Ƙirƙira ta atomatik',
s_auto_vip_sword:'Sayi VIP ta atomatik',
s_auto_vip_waves:'Sayi VIP ta atomatik (Raƙuman ruwa)',
s_direct_kill:'Kai kisa kai tsaye',
s_direct_kill_rate:'Adadin kisa',
s_auto_buy_upgrades:'Sabuntawar Sayi ta atomatik',
s_boost_coins:'Haɓakawa ta atomatik: Tsabar kudi',
s_boost_diamonds:'Haɓakawa ta atomatik: Diamonds',
s_boost_luck:'Haɓakawa ta atomatik: Sa\'a',
s_auto_unlock_areas:'Wuraren Buɗewa ta atomatik',
s_auto_rebirth:'Sake Haihuwa ta atomatik',
s_auto_join_tp:'Teleport zuwa Wuri Mafi Girma',
s_hide_kill_rewards:'Boye Ladan Kisa',
s_hide_roll_anim:'Ɓoye raye-rayen Roll',
rng_title:'Dabbobin dabbobi RNG yaudara',
rng_sec_rolling:'Mirgina',
rng_sec_crafting:'Sana\'a',
rng_sec_combat:'Yaki',
rng_sec_upgrades:'Haɓakawa',
rng_sec_areas:'Yankuna',
rng_actions:'Ayyuka',
log_craft:'Sana\'a',
log_success:'NASARA',
log_fail:'GASKIYA',
log_unlocking_area:'Wurin buɗewa',
log_area_unlocked:'An buɗe yanki',
log_equipped:'An shirya',
log_bought_upgrade:'Sayi haɓakawa',
log_teleported_to:'An aika zuwa',
log_rebirthing:'Sake haifuwa',
h_rng:'rng',
h_accts:'Asusun',
s_auto_collect:'Tattara Tattalin Arziki ta atomatik',
s_collect_interval:'Tazarar Tara',
s_chat_fade:'chat fade time',
s_name_colors:'Launaye masu amfani',
s_chat_enhance:'Haɓaka tattaunawa',
mes_hint:'Tip: saka "mes" a sunan mai amfani don samun tasirin bakan gizo mai rai!',
s_carry_tune:'Dauke Tune (Sata)',
s_pet_pickup_radius:'Kewayen Satar Dabba',
s_carry_vol:'Dauke Ƙarar',
carry_tune_default:'Tsohuwar',
carry_tune_silent:'Yayi shiru',
carry_tune_ambient:'Na yanayi',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Na gargajiya',
carry_tune_electronic:'Lantarki',
carry_tune_epic:'Almara',
carry_tune_folk:'Jama\'a',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Karfe',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Rock',
s_cont_cuddle:'Cuddle mai ci gaba',
s_protips:'pro tukwici',
s_hideprotips:'Boye Nasihu Nawa',
s_show_exp_modes:'Nuna hanyoyin gwaji',
s_showcoords:'Nuna Codes',
s_showfps:'Nuna FPS',
s_showtargetinfo:'Nuna bayanin manufa',
s_showobj:'Nuna Ƙididdiga / Ƙarƙashin Ƙira',
s_copy_dbg:'Kwafi rajistan ayyukan gyara kuskure',
s_copy_json:'Kwafi JSON',
s_clear_dbg:'Share',
h_fly:'Tashi',
h_speed:'Kifta ido',
h_waypoints:'Hanyoyi',
h_autolock:'Kulle atomatik',
h_invisible:'Ganuwa',
h_cuddle:'Runguma',
h_pets:'Dabbobi',
h_snipe:'Farauto',
h_help:'Taimako',
h_settings:'Saituna',
h_prv:'Ɗakin sirri',
h_tc:'hasumiya cikakke',
h_tcl:'Zagayen hasumiya',
kb_fly:'Tashi (juyawa / sama)',
kb_fly_down:'Tashi Kasa',
kb_set_home:'Saita Gida',
kb_home:'Gida',
kb_back:'Baya',
kb_cuddle:'Kwamitin Kulle',
kb_settings:'Saituna',
kb_pets:'Mai Binciken Dabbobin Dabbobi',
kb_slots:'Ramin Waypoint',
kb_snipe:'Maharbi Panel',
kb_snipe_toggle:'Kunna/Kashe maharbi',
kb_attack:'Kai hari',
kb_help:'Taimako / Bayani',
kb_tower:'hasumiya cikakke',
kb_tower_loop:'Zagayen hasumiya',
kb_invisible:'Ganuwa',
kb_first_person:'Mutum na farko',
kb_autolock:'Tushen Kulle Kai tsaye',
kb_prv:'Ɗakin sirri',
kb_rng:'RNG',
kb_accts:'Asusun',
pets_title:'Dabbobi',
pets_search_placeholder:'misali dabbar daji, zinari KO lu\'u-lu\'u, (zinari KO Emerald) daji',
pets_hint:'Kalmomi suna AND tare. Yi amfani da OR don madadin, madauri zuwa rukuni. * ko % azaman kati. Sanya - a gaban kalma don cire shi.',
pets_empty:'Ba a sami dabbobin gida a wannan ɗakin ba',
pt_name:'Suna',
pt_mut:'maye gurbi',
pt_rar:'Tsari',
pt_owner:'Mai shi',
pt_worth:'daraja',
pt_income:'Kudin shiga/s',
pt_dist:'Nisa',
slots_title:'Ramin Waypoint',
sniper_title:'dabbar maharbi',
sniper_tbl_pet:'Dabba',
sniper_tbl_owner:'Mai shi',
sniper_tbl_lock:'Kulle',
sniper_placeholder:'misali halo, zinariya KO lu\'u-lu\'u, Emerald dragon',
sniper_hint:'Kalmomi suna AND\'d. Yi amfani da OR don madadin, madauri zuwa rukuni. * ko % azaman kati. Sanya - a gaban kalma don cire shi.',
sniper_room_col:'Daki',
sniper_scans_col:'Ana dubawa',
sniper_top_pet_col:'Babban Pet',
sniper_top_worth_col:'Mafi Girma',
sniper_top_owner_col:'Babban Mai shi',
sniper_age_col:'Shekara',
sniper_join_btn:'Shiga',
sniper_full:'Cike',
sniper_join_failed:'Dakin manufa ya cika',
sniper_scanning_rooms:'Ana neman wasu dakuna…',
sniper_scan_off:'Farauta ta atomatik',
sniper_scan_next:'Na gaba scan in',
sniper_scan_idle:'Rago - jira don dubawa',
sniper_auto_place:'Sanya kai tsaye a sansanin',
sniper_place_desc:'(sanya dabbar da aka sata a slotinku na sansani)',
sniper_auto_drop:'Sauke dabbobi marasa daidaita kai tsaye a cikin Waves',
sniper_drop_desc:'(yana sauke namun daji waɗanda basu dace da tacewa ba don sabunta tafkin spawn)',
sniper_auto_hunt:'Farauta ta atomatik',
sniper_hunt_desc:'(bincika sauran ɗakuna, tsalle zuwa mafi kyawun matches)',
sniper_auto_sell:'Siyar da kai a cikin sata',
sniper_sell_desc:'(sayar da mafi ƙasƙanci idan tushe ya cika)',
sniper_lockdown:'kullewa ≤',
sniper_lockdown_hint:'Satar hari akan tushe tare da ≤ wannan lokacin ya rage. 0 = kawai a buɗe.',
sniper_join_grace:'Shiga alheri',
sniper_start:'Fara Sniping',
sniper_stop:'Dakatar da Sniping',
sniper_idle:'Rago',
sniper_no_filter:'Babu saitin tacewa',
sniper_waiting:'Ana jiran wasa...',
sniper_hold_pause:'Riƙe dabbar dabba - dakatarwa',
sniper_stolen_pause:'yana da mu dabba - dakatar',
sniper_cooldown:'Lokacin jira',
sniper_hopping:'Sabar uwar garke...',
sniper_na:'Maharbi N/A a harabar gida - fara shiga wasa',
sniper_wait_lock:'Ana jiran bayanan kulle...',
sniper_locked:'A kulle tushe - tsallakewa...',
sniper_full_eggs:'Tushen cike - qwai kawai, ba za a iya siyarwa ba',
sniper_stealing:'Sata',
sniper_dropped:'An sauke',
sniper_holding:'Rike',
sniper_place:'! Sanya kan tushe.',
sniper_steal_mode:'[Sata]',
sniper_theft_nohop:'Dabbobin da ake sacewa',
sniper_nohop_suffix:'- babu hop',
sniper_sniping:'Farauto:',
sniper_options:'Zaɓuɓɓuka',
sniper_drop_fail_status:'Saukowa ya kasa!',
sniper_hotkey_label:'Juya hotkey:',
sniper_panel_label:'Kwali:',
sniper_grab_fail:'An kasa kama Ana sake gwadawa...',
sniper_our_pet_stolen:'An sace dabbar mu - 8s cooldown',
sniper_hopping_short:'Hopping....',
sniper_base_full:'Tushen cike',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'KYAUTA',
pet_teleport_title:'Jigawa',
pet_pickup_title:'Dauke',
owner_yours:'Naku',
owner_wild:'Daji',
footer_gf:'Cokali mai yatsa',
copy_ok:'Kwafi',
copy_failed:'An Kasa Kwafi',
s_invis_on_fly:'Ba a gani yayin tashi',
snipe_walk_home:'Yi tafiya gida bayan sata',
snipe_walk_home_desc:'Koma da tafiya zuwa sansaninka',
sniper_afk_sell:'AFK siyar da dabbobin da basu dace ba',
sniper_afk_sell_desc:'(idan ba aiki 5s, siyar da dabbobin da basu dace da tacewa ba bisa daraja — raƙumai kawai)',
hb_fly:'TSH',
hb_lck:'KFL',
hb_inv:'ƁOY',
hb_cud:'RKE',
hb_pet:'DBB',
hb_snp:'HRB',
hb_cfg:'STS',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ASU',
ban_title:'An Katange haɗi',
ban_sub:'Meeland ta iyakance adireshin IP ɗin ku',
ban_body:'Babu damuwa - wannan yana da sauƙin gyara! VPN kyauta zai ba ku sabon IP don ku sake kunnawa.',
ban_pick:'Gyara sauri - zaɓi kowane ɗaya:',
ban_warp:'kyauta, mara iyaka, saitin dannawa ɗaya',
ban_warp_store:'Hakanan akan App Store & Play Store azaman "1.1.1.1"',
ban_proton:'babu data cap, 5 kasashe',
ban_steps:'Shigar → haɗi → sabunta wannan shafin. Shi ke nan!',
ban_ok:'Na samu',
warn_title:'Yi amfani da VPN koyaushe',
warn_body:'Koyaushe wasa da <b>VPN</b> a kunna.',
warn_ok:'Na samu, na fahimta',
loading:'Ana lodawa',
tcl_loading:'Ana gudan da cikakken sake zagayowar hasumiya. Danna {key} don tsayawa.',
hop_search:'Ana neman wasa',
hop_match:'An sami {name} — ana shiga',
hop_flee:'Guduwa daga mai kutse',
hop_reconnect:'Ana sake haɗawa',
hop_reload:'Ana sake lodawa',
hop_fall:'Ana murmurewa daga faɗuwa',
hop_join:'Ana shiga dakin',
lock_off:'KASHE',
lock_unlocked:'BUDE',
desc_intro:'MES tana ba ku bangon bango, noma ta atomatik, tarin dabbobin da ba kasafai ba, haɓaka sauri, jirgin sama, ganuwa, da ƙari a cikin Meeland',
desc_free:'Kyauta kuma buɗaɗɗen tushe har abada.',
desc_h_movement:'Motsi',
desc_h_combat:'Yaƙi',
desc_h_tuning:'Daidaitawa',
desc_h_pets:'Dabbobi da Sata',
desc_h_economy:'Tattalin arziki',
desc_h_custom:'Keɓancewa',
desc_h_extras:'Ƙari',
desc_fly:'Tashi',
desc_fly_d:'Sarari don hawa, F don sauka. Saurin da za a daidaita.',
desc_speed:'Kifta ido',
desc_speed_d:'Shift don wucewa nan take.',
desc_noclip:'Ratsa bango',
desc_noclip_d:'Ratsa bangon gida da ƙasa.',
desc_walls:'Tafiya a Kan Bango',
desc_walls_d:'Hawa kowane saman ƙasa.',
desc_waypts:'Wuraren tafiya',
desc_waypts_d:'Ajiye kuma ku wuce tsakanin wurare 8.',
desc_invis:'Ɓoyuwa',
desc_invis_d:'Danna CapsLock don ɓacewa gaba ɗaya.',
desc_fpv:'FPV',
desc_fpv_d:'Danna <kbd>.</kbd> don canza zuwa kyamarar mutum na farko.',
desc_anti_invis:'Anti-Ɓoyuwa',
desc_anti_invis_d:'Ga masu ɓoyuwa a matsayin fatalwa.',
desc_xray:'Ganin X-Ray',
desc_xray_d:'Duba \'yan wasa ta bango a cikin Asirin Kisa. Ja = mai kisa, kore = farar hula.',
desc_nodeathh:'Rashin raunana',
desc_nodeath_d:'HP a tsaye a matsakaici. Babu lahani.',
desc_antikb:'Anti-tura',
desc_antikb_d:'Ba za su iya tura ka ba.',
desc_attack:'Kai hari kai tsaye',
desc_attack_d:'<kbd>G</kbd> ya kai ka wurin mai wasa mafi kusa ya buga.',
desc_jumpgrav:'Tsalle da Nauyi',
desc_jumpgrav_d:'Ma\'aunai masu daidaitawa a cikin Saituna.',
desc_fov:'Sarrafa FOV',
desc_fov_d:'Slider FOV na mutum na farko da na uku.',
desc_autoinvis:'Auto-Ɓoyuwa a Jirgin Sama',
desc_autoinvis_d:'Ka zama marar gani ta atomatik lokacin tashi.',
desc_sniper:'Mafaraucin dabbobi',
desc_sniper_d:'Tace, sata ko saki dabbobi kai tsaye.',
desc_prv:'Ɗakin sirri',
desc_prv_d:'<kbd>PgDn</kbd> yana ƙirƙirar ɗakin sirri a yanayin yanzu kuma yana shiga kai tsaye.',
desc_petbrow:'Mai lilo dabbobi',
desc_petbrow_d:'<kbd>P</kbd> ya buɗe tebur mai tsari da tace.',
desc_cuddle:'Rungumi na kullum',
desc_cuddle_d:'<kbd>J</kbd> ya nuna masu wasa ta nisa. Danna don bi.',
desc_return:'Dawowa kai tsaye',
desc_return_d:'Ya dawo da dabbobin da aka sata kai tsaye.',
desc_autolock:'Kulle kai tsaye',
desc_autolock_d:'Sansani ya kasance a kulle koyaushe.',
desc_fountain:'Maɓuɓɓugar ruwa kai tsaye',
desc_fountain_d:'Ribar 1.5× na dindindin. Yana sabuntawa kai tsaye.',
desc_money:'Kuɗin yau da kullum',
desc_money_d:'Yana tattara kuɗin yau da kullum kai tsaye.',
desc_collect:'Tattarawa kai tsaye',
desc_collect_d:'Kuɗin dabbobi kowane daƙiƙa 30.',
desc_music:'Kiɗa na musamman',
desc_music_d:'Maye gurbin kiɗan wasa da naka.',
desc_chatfade:'Ɓacewar hira',
desc_chatfade_d:'Sarrafa ganin saƙonni. 5–120s.',
desc_emotes:'Emojin tashi',
desc_emotes_d:'Emojin bazuwar yayin tashi.',
desc_displays:'Rufe-rufe na Nuni',
desc_displays_d:'Matsalai, ma\'aunin FPS, da bayanin manufa.',
desc_config:'Saituna',
desc_config_d:'<kbd>M</kbd> don kunna abubuwa, sake sanya maɓallai, daidaita sauri.',
desc_langs:'Harsuna 60',
desc_langs_d:'Fuskar mai amfani ana fassara kai tsaye.',
desc_tower:'Hasumiyar kai tsaye',
desc_tower_d:'Kammala hasumiya da dannawa ɗaya.',
desc_cats:'Allon shigar kyanwa',
desc_cats_d:'Kyanwowi masu ban sha awa sun maye gurbin shigarwa.',
desc_h_install:'Shigarwa',
desc_desktop:'Kwamfuta (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Shigar da Tampermonkey ko Violentmonkey',
desc_inst_click:'Danna Shigar',
desc_inst_open:'Buɗe kowane wasan Meeland — yana aiki',
desc_mobile:'Wayar hannu',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Shigar da ƙarin Tampermonkey',
desc_mob_visit:'Ziyarci wannan shafin ka shigar',
desc_mob_play:'Wasa Meeland a Firefox',
desc_ios:'iOS: Yi amfani da Userscripts (Safari) + wannan rubutun',
desc_h_privacy:'Sirri',
desc_privacy:'Ba a tattara bayanai ba. Komai ya kasance a gida.'
});
_mk('ig','Igbo',{
close:'✕',
refresh:'↻',
go:'Gaa',
set:'Tọọ',
auto:'Akpaaka',
empty:'efu',
help_title:'Enyemaka',
players_title:'Ndị egwu',
players_empty:'Ahụghị onye egwu ọzọ',
settings_title:'Ntọala',
settings_reset:'Tọghachi',
tab_gameplay:'Egwuregwu',
tab_economy:'Akụnụba',
tab_audio:'Ọdịyo',
tab_advanced:'Nke dị elu',
tab_hud:'HUD',
tab_keys:'Igodo',
tab_accounts:'Akaụntụ',
acct_current:'Ugbu a',
acct_new:'Ọhụrụ',
acct_import:'Ntinye',
acct_switch:'Gbanwee',
acct_reload:'Nweghachi',
acct_delete:'Hichapụ',
acct_cancel:'Kagbuo',
acct_empty:'Ihe efu',
acct_token_ph:'Token',
acct_copy:'Detuo',
acct_export:'Mpụta',
acct_rename:'Gbanwee aha',
acct_save:'Chekwa',
acct_name_len:'Aha ga-abụ mkpụrụedemede 4-12',
acct_name_fail:'Ịgbanwee aha dara',
acct_invalid:'Na-ezighi ezi',
acct_ready:'Akaụntụ dị njikere. Mechie Meeland, gbanwee IP, wee nweghachi.',
acct_ip_note:'Na-eji VPN mgbe niile ma gbanwee IP mgbe ị na-agbanwe akaụntụ.',
acct_howto:'1. Pịa Kpịrị iji detuo njikọ nke akaụntụ a.\n2. Na ihe nchọgharị ma ọ bụ ngwaọrụ ọzọ — ma ọ bụ soro enyi — mepee MES.\n3. Pịa Bubata ma tinye njikọ ahụ.',
sh_movement:'Mmegharị',
sh_defense:'Nchekwa',
sh_camera:'Igwefoto',
sh_overlays:'Ihe ngosipụta',
sh_behaviour:'Omume',
sh_buttons:'Bọtịnụ',
sh_language:'Asụsụ',
sh_chat:'Kpaa nkata',
sh_waves:'Waves',
sh_steal_a_pet:'Zuru anụ ụlọ',
sh_tower:'Tower',
sh_misc_multi:'Ndị ọzọ (ọtụtụ ọnọdụ)',
s_noclip:'Enweghị mgbochi',
s_fly:'Fee',
s_fly_emotes:'ofufe emotes',
s_base_speed:'Ọsọ ọsọ',
s_jump_mult:'Malie elu',
s_grav_mult:'Ike ndọda',
s_walk_up_walls:'Gaa n\'elu mgbidi',
s_carry_normalize:'Buru ọsọ + wulie elu',
s_invincibility:'Enweghị mmeri',
s_anti_kb:'Mgbochi ịkụ azụ',
s_invisible:'A naghị ahụ anya',
s_xray_infection:'X-Ray (Ihe Omimi nke Igbu Ọchị)',
s_ghost_mode:'Ọnọdụ mmụọ',
s_flee_intruder:'Gbaa ọsọ mgbe onye mwakpo bịara',
s_first_person:'Nlele onye mbụ',
s_fov_first_person:'FOV (1st)',
s_fov_third_person:'FOV (3rd)',
s_fov_vertical_mult:'Nkwụ FOV Ọtụtụ',
s_auto_lock:'Ntọala mkpọchi akpaaka',
s_auto_fountain:'Isi iyi akpaaka (1.5×)',
s_daily_coins:'Mkpụrụ ego kwa ụbọchị',
s_stars:'Kpakpando',
s_diamonds_tower:'Ola diamond (Ụlọ elu)',
s_tower_loop:'Loop nke ụlọ elu',
s_auto_roll_x25:'Akpaghari x25 ihu ọma',
s_auto_craft:'Craft akpaghị aka',
s_auto_vip_sword:'Zụta VIP na-akpaghị aka',
s_auto_vip_waves:'Zụta VIP na-akpaghị aka (Ebili mmiri)',
s_direct_kill:'Spam igbu ọchụ',
s_direct_kill_rate:'Ọnụego igbu',
s_auto_buy_upgrades:'Mmelite zụrụ akpaaka',
s_boost_coins:'Mmelite akpaaka: Mkpụrụ ego',
s_boost_diamonds:'Mmelite akpaaka: diamond',
s_boost_luck:'nkwalite akpaaka: chioma',
s_auto_unlock_areas:'Mpaghara Kpọghe na akpaaka',
s_auto_rebirth:'Mmụgharị nke akpaaka',
s_auto_join_tp:'Teleport ruo Mpaghara Kachasị Elu',
s_hide_kill_rewards:'Zoo ụgwọ ọrụ igbu egbu',
s_hide_roll_anim:'Zoo ihe ngosi mpịakọta',
rng_title:'Ndị aghụghọ RNG anụ ụlọ',
rng_sec_rolling:'Na-atụgharị',
rng_sec_crafting:'Ịrụ nka',
rng_sec_combat:'Ọgụ',
rng_sec_upgrades:'Nkwalite',
rng_sec_areas:'Mpaghara',
rng_actions:'Omume',
log_craft:'Nkà',
log_success:'Ọganihu',
log_fail:'EGWU',
log_unlocking_area:'Mpaghara imeghe',
log_area_unlocked:'Mpaghara akpọchiri',
log_equipped:'Kwadebere',
log_bought_upgrade:'Azụtara nkwalite',
log_teleported_to:'E zigara ya na telefon',
log_rebirthing:'Mmụgharị ọzọ',
h_rng:'rng',
h_accts:'Akaụntụ',
s_auto_collect:'Na-anakọta ego na akpaaka',
s_collect_interval:'Na-anakọta nkeji oge',
s_chat_fade:'Oge ịkpa nkata',
s_name_colors:'Agbawo aha onye ọrụ',
s_chat_enhance:'Nkwalite nkparịta ụka',
mes_hint:'Ntụle: tinye "mes" na aha njirimara gị maka mmetụta egwurugwu na-emegharị!',
s_carry_tune:'Carry Tune (ohi)',
s_pet_pickup_radius:'Rediọs Izi Anụmanụ',
s_carry_vol:'Buru olu',
carry_tune_default:'Ọdabara',
carry_tune_silent:'gbachi nkịtị',
carry_tune_ambient:'Ambient',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Oge gboo',
carry_tune_electronic:'Eletrọnịkị',
carry_tune_epic:'Epic',
carry_tune_folk:'Ndị mmadụ',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Ọla',
carry_tune_pop:'Pop',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Nkume',
s_cont_cuddle:'Nchikota na-aga n\'ihu',
s_protips:'Ndụmọdụ Pro',
s_hideprotips:'Zoo Pro Tips m',
s_show_exp_modes:'Gosi ụdị nnwale',
s_showcoords:'Gosi coordinates',
s_showfps:'Gosi FPS',
s_showtargetinfo:'Gosi oziọma ebumnuche',
s_showobj:'Gosi Ngụkọ/Ngwakọta',
s_copy_dbg:'Detuo debug logs',
s_copy_json:'Detuo JSON',
s_clear_dbg:'Hichaa',
h_fly:'Fee',
h_speed:'kpuo ìsì',
h_waypoints:'Ụzọ ụzọ',
h_autolock:'Mkpọchi akpaaka',
h_invisible:'A naghị ahụ anya',
h_cuddle:'Jikọọ',
h_pets:'Anụ ụlọ',
h_snipe:'Gbaa',
h_help:'Enyemaka',
h_settings:'Ntọala',
h_prv:'Ụlọ nzuzo',
h_tc:'Ụlọ elu zuru oke',
h_tcl:'Loop nke ụlọ elu',
kb_fly:'Fee (ịtụgharị/elu)',
kb_fly_down:'Fee ala',
kb_set_home:'Tọọ Ụlọ',
kb_home:'Ụlọ',
kb_back:'Azụ',
kb_cuddle:'Nchikota panel',
kb_settings:'Ntọala',
kb_pets:'Ihe Nchọgharị anụ ụlọ',
kb_slots:'Oghere ụzọ ụzọ',
kb_snipe:'sniper panel',
kb_snipe_toggle:'Gbanyụọ/ gbanyụọ Sniper',
kb_attack:'Mwakpo',
kb_help:'Enyemaka / Nkọwa',
kb_tower:'Ụlọ elu zuru oke',
kb_tower_loop:'Loop nke ụlọ elu',
kb_invisible:'A naghị ahụ anya',
kb_first_person:'Onye mbụ',
kb_autolock:'Ntọala mkpọchi akpaaka',
kb_prv:'Ụlọ nzuzo',
kb_rng:'RNG',
kb_accts:'Akaụntụ',
pets_title:'Anụ ụlọ',
pets_search_placeholder:'eg. anụ ọhịa kitty, ọla edo ma ọ bụ diamond, (ọlaedo ma ọ bụ emerald) ọhịa',
pets_hint:'A na-ejikọta okwu ọnụ. Jiri OR maka uzo ozo, brackets ka otu. * ma ọ bụ % dị ka akara ngosi. Tinye - n\'ihu okwu iji wepụ ya.',
pets_empty:'Achọghị anụ ụlọ n\'ime ụlọ a',
pt_name:'Aha',
pt_mut:'Mgbanwe',
pt_rar:'ụkọ ihe',
pt_owner:'Onye nwe',
pt_worth:'Kwesịrị ekwesị',
pt_income:'Ego/s',
pt_dist:'Anya',
slots_title:'Oghere ụzọ ụzọ',
sniper_title:'anụ anụ sniper',
sniper_tbl_pet:'Anụmanụ',
sniper_tbl_owner:'Onye nwe',
sniper_tbl_lock:'Mkpọchi',
sniper_placeholder:'eg. halo, ọla edo ma ọ bụ diamond, emerald dragon',
sniper_hint:'Okwu bụ AND\'d. Jiri OR maka uzo ozo, brackets ka otu. * ma ọ bụ % dị ka akara ngosi. Tinye - n\'ihu okwu iji wepụ ya.',
sniper_room_col:'Ime ụlọ',
sniper_scans_col:'Nyocha',
sniper_top_pet_col:'anụ ụlọ kacha elu',
sniper_top_worth_col:'Ihe kacha mma',
sniper_top_owner_col:'Onye nwe kacha elu',
sniper_age_col:'Afọ',
sniper_join_btn:'Soro',
sniper_full:'Jupụtara',
sniper_join_failed:'Ime ụlọ ezuru ezu',
sniper_scanning_rooms:'Na-achọ ụlọ ndị ọzọ…',
sniper_scan_off:'Achụpụ akpaaka',
sniper_scan_next:'Nyochaa na-esote',
sniper_scan_idle:'Idle — na-eche ka iṅomi',
sniper_auto_place:'Tụọ n\'akwa n\'aka akwụkwọ',
sniper_place_desc:'(na-etinye anụmanụ izuru n\'oghere ụlọ gị)',
sniper_auto_drop:'Wụpụ anụ ụlọ ndị na-adabaghị na Waves na-akpaghị aka',
sniper_drop_desc:'(na-atụfu anụ ọhịa ndị na-adabaghị na ihe nzacha iji mee ka ọdọ mmiri spawn dị ọhụrụ)',
sniper_auto_hunt:'Ịchụ nta akpaaka',
sniper_hunt_desc:'(nyocha ụlọ ndị ọzọ, wụpụ gaa ebe kacha mma)',
sniper_auto_sell:'Na-ere akpaaka na Steal',
sniper_sell_desc:'(ire kacha nta mgbe ntọala zuru)',
sniper_lockdown:'Mkpọchi ≤',
sniper_lockdown_hint:'Zuo ebumnuche na ntọala na ≤ oge a fọdụrụ. 0 = naanị akpọchiri.',
sniper_join_grace:'Soro amara',
sniper_start:'Malite Sniping',
sniper_stop:'Kwụsị Sniping',
sniper_idle:'Na-abaghị uru',
sniper_no_filter:'Enweghị nhazi nzacha',
sniper_waiting:'Na-eche egwuregwu...',
sniper_hold_pause:'Jide anụ ụlọ - kwụsịtụrụ',
sniper_stolen_pause:'nwere anụ ụlọ anyị - kwụsịtụrụ',
sniper_cooldown:'Wetuo obi',
sniper_hopping:'Ihe nkesa na-agbapụ...',
sniper_na:'Sniper N/A n\'ime ọnụ ụlọ - buru ụzọ sonye egwuregwu',
sniper_wait_lock:'Na-eche data mkpọchi...',
sniper_locked:'Akpọchiri ntọala - ịmafe...',
sniper_full_eggs:'Isi zuru ezu - naanị akwa, enweghị ike ire ere',
sniper_stealing:'Izu ohi',
sniper_dropped:'Etufuru',
sniper_holding:'Jide',
sniper_place:'! Tinye na ntọala.',
sniper_steal_mode:'[zuo ohi]',
sniper_theft_nohop:'A na-ezu ohi anụ ụlọ',
sniper_nohop_suffix:'- enweghị hop',
sniper_sniping:'Na-agba:',
sniper_options:'Nhọrọ',
sniper_drop_fail_status:'Ntube dara!',
sniper_hotkey_label:'Gbanwee igodo ọkụ:',
sniper_panel_label:'Ogwe:',
sniper_grab_fail:'Jideghị. Na-anwale...',
sniper_our_pet_stolen:'Ezuru anụ ụlọ anyị - 8s cooldown',
sniper_hopping_short:'Na-atụ...',
sniper_base_full:'Ebe zuru ezu',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'GBUO',
pet_teleport_title:'Mbugharị',
pet_pickup_title:'Tụtụlite',
owner_yours:'Nke gi',
owner_wild:'Anụ ọhịa',
footer_gf:'ndụdụ mmanụ aṅụ',
copy_ok:'Eṅomiri',
copy_failed:'Detuo agaghị',
s_invis_on_fly:'A na-adịghị ahụ anya mgbe ị na-efe',
snipe_walk_home:'Jee ije laa n\'ụlọ mgbe izu ohi gasịrị',
snipe_walk_home_desc:'Jee ije laghachi na ntọala gị',
sniper_afk_sell:'AFK ree anụmanụ ndị na-adabaghị',
sniper_afk_sell_desc:'(mgbe adịghị arụ ọrụ 5s, ree anụmanụ ndị na-adabaghị na nzacha site na uru — ebili mmi naanị)',
hb_fly:'FEE',
hb_lck:'KPO',
hb_inv:'AHU',
hb_cud:'MKP',
hb_pet:'ANU',
hb_snp:'GBA',
hb_cfg:'NHP',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'AKA',
ban_title:'Akpọchiela njikọ',
ban_sub:'Meeland amachibidoro adreesị IP gị',
ban_body:'Enweghị nchekasị - nke a dị mfe idozi! VPN efu ga-enye gị IP ọhụrụ ka ị nwee ike igwu egwu ọzọ.',
ban_pick:'Ndozi ngwa ngwa - họrọ nke ọ bụla:',
ban_warp:'ntọlite n\'efu, enweghị oke, otu-pịa',
ban_warp_store:'dịkwa na App Store & Play Store dị ka "1.1.1.1"',
ban_proton:'enweghị okpu data, mba 5',
ban_steps:'Wụnye → jikọọ → megharịa ibe a. Ọ bụ ya!',
ban_ok:'Nwetara ya',
warn_title:'Jiri VPN mgbe niile',
warn_body:'Na-egwu egwu mgbe niile na <b>VPN</b> gbanyere.',
warn_ok:'Enwetara m ya, aghọtara m',
loading:'Na-ebugo',
tcl_loading:'A na-agba okirikiri zuru ezu nke ụlọ elu. Pịa {key} iji kwụsị.',
hop_search:'Na-achọ egwuregwu',
hop_match:'Achọtara {name} — na-abanye',
hop_flee:'Na-agba ọsọ site n\'onye mwakpo',
hop_reconnect:'Na-ejikọta ọzọ',
hop_reload:'Na-ebugharị',
hop_fall:'Na-agbake site n\'ọdada',
hop_join:'Na-abanye n\'ime ụlọ',
lock_off:'Gbanyụọ',
lock_unlocked:'kpọchiri akpọchi',
desc_intro:'MES na-enye gị wallhack, ọrụ ugbo akpaaka, nchịkọta anụ ụlọ na-adịghị ahụkebe, nkwalite ọsọ ọsọ, ụgbọ elu, invisibility na ndị ọzọ na Meeland',
desc_free:'N efu na mepere emepe ruo mgbe ebighị ebi.',
desc_h_movement:'Mmegharị',
desc_h_combat:'Agha',
desc_h_tuning:'Ntụgharị',
desc_h_pets:'Anụmanụ na Ohi',
desc_h_economy:'Akụ na ụba',
desc_h_custom:'Nhazi',
desc_h_extras:'Ndị ọzọ',
desc_fly:'Efe',
desc_fly_d:'Space elu, F ala. Ọsọ nke a na-agbanwe.',
desc_speed:'kpuo ìsì',
desc_speed_d:'Shift iji teleport ozugbo.',
desc_noclip:'Gafee mgbidi',
desc_noclip_d:'Gafee mgbidi na ala.',
desc_walls:'Ịga n\'Elu Mgbidi',
desc_walls_d:'Rịgoro n\'elu ọ bụla.',
desc_waypts:'Ebe njem',
desc_waypts_d:'Chekwaa ma teleport n etiti ebe 8.',
desc_invis:'Ike aghụghọ',
desc_invis_d:'Pịa CapsLock iji fụọ n\'ihe kpamkpam.',
desc_fpv:'FPV',
desc_fpv_d:'Pịa <kbd>.</kbd> iji gbanwee na igwefoto onye mbụ.',
desc_anti_invis:'Anti-aghụghọ',
desc_anti_invis_d:'Hụ ndị na-apụnarị dị ka mmụọ.',
desc_xray:'Ọhụ X-Ray',
desc_xray_d:'Lee ndị egwuregwu site na mgbidi n\'Ihe Omimi nke Igbu Ọchị. Uhie = onye gburu ọchị, akwụkwọ ndụ = onye nkịtị.',
desc_nodeathh:'Enweghị ọnwụ',
desc_nodeath_d:'HP kwụsịrị na elu. Enweghị mmebi.',
desc_antikb:'Anti-ịgba',
desc_antikb_d:'Ha apụghị ịgba gị.',
desc_attack:'Ogbugbu akpaaka',
desc_attack_d:'<kbd>G</kbd> na-ebu gị gaa onye egwuregwu nke kacha nso ma tie.',
desc_jumpgrav:'Ịmawụ na Ihe Ndọta',
desc_jumpgrav_d:'Ọtụtụ ihe agbanwere na Ntọala.',
desc_fov:'Njikwa FOV',
desc_fov_d:'Ihe mmịgharị FOV nke onye mbụ na onye nke atọ.',
desc_autoinvis:'Aka-Akaịnọ na Efere',
desc_autoinvis_d:'Bụrụ onye a na-ahụghị anya ozugbo ị na-efe.',
desc_sniper:'Onye egbe anụmanụ',
desc_sniper_d:'Nyochaa, zuo ohi ma ọ bụ hapụ anụmanụ akpaaka.',
desc_prv:'Ụlọ nzuzo',
desc_prv_d:'<kbd>PgDn</kbd> na-emepụta ụlọ nzuzo n\'ụdị ugbu a ma na-abanye ozugbo.',
desc_petbrow:'Ihe nlele anụmanụ',
desc_petbrow_d:'<kbd>P</kbd> meghere tebụl nke a na-edozi na nyocha.',
desc_cuddle:'Mkpakọ na-aga n ihu',
desc_cuddle_d:'<kbd>J</kbd> na-edepụta ndị egwuregwu site na anya. Pịa iji soro.',
desc_return:'Nloghachi akpaaka',
desc_return_d:'Na-eweghachi anụmanụ e zuru ohi akpaaka.',
desc_autolock:'Mkpọchi akpaaka',
desc_autolock_d:'Ụlọ na-anọgide na-akpọchi.',
desc_fountain:'Mmiri akpaaka',
desc_fountain_d:'Uru 1.5× ruo mgbe ebighị ebi. Na-emelite akpaaka.',
desc_money:'Ego ụbọchị',
desc_money_d:'Na-anakọta ego ụbọchị akpaaka.',
desc_collect:'Nchịkọta akpaaka',
desc_collect_d:'Ego anụmanụ kwa sekọnd 30.',
desc_music:'Egwu nke onwe',
desc_music_d:'Gbanwee egwu egwuregwu gị.',
desc_chatfade:'Nkwurịta okwu na-efu',
desc_chatfade_d:'Chịkwaa ike ịhụ ozi. 5–120s.',
desc_emotes:'Emojis efe',
desc_emotes_d:'Emojis na-adịghị ahọpụta mgbe ị na-efe.',
desc_displays:'Ihe Nkuchi Ngosi',
desc_displays_d:'Nhazi ọnọdụ, ọnụọgụ FPS na ozi ebumnuche.',
desc_config:'Ntọala',
desc_config_d:'<kbd>M</kbd> maka atụmatụ, ịgbanwe igodo, idozi ọsọ.',
desc_langs:'Asụsụ 60',
desc_langs_d:'A na-asụgharị ihu akpaaka.',
desc_tower:'Ụlọ elu akpaaka',
desc_tower_d:'Mechaa ụlọ elu na otu pịa.',
desc_cats:'Ihuenyo nbudata nwamba',
desc_cats_d:'Nwamba mara mma na-anọchi nbudata.',
desc_h_install:'Nwụnye',
desc_desktop:'Desktọọpụ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Wụnye Tampermonkey ma ọ bụ Violentmonkey',
desc_inst_click:'Pịa Wụnye',
desc_inst_open:'Meghee egwuregwu Meeland ọ bụla — ọ na-arụ ọrụ',
desc_mobile:'Mkpanaka',
desc_mob_ff:'Firefox + Tampermonkey (Android)',
desc_mob_addon:'Wụnye mgbakwunye Tampermonkey',
desc_mob_visit:'Gaa na peeji a wụnye',
desc_mob_play:'Gwuo Meeland na Firefox',
desc_ios:'iOS: Jiri Userscripts (Safari) + script a',
desc_h_privacy:'Nzuzo',
desc_privacy:'Anaghị anakọta data. Ihe niile na-anọ ebe a.'
});
_mk('sw','Kiswahili',{
close:'✕',
refresh:'↻',
go:'Nenda',
set:'Weka',
auto:'Kiotomatiki',
empty:'tupu',
help_title:'Msaada',
players_title:'Wachezaji',
players_empty:'Hakuna wachezaji wengine',
settings_title:'Mipangilio',
settings_reset:'Weka upya',
tab_gameplay:'Mchezo',
tab_economy:'Uchumi',
tab_audio:'Sauti',
tab_advanced:'Ya juu',
tab_hud:'HUD',
tab_keys:'Vifunguo',
tab_accounts:'Akaunti',
acct_current:'Ya sasa',
acct_new:'Mpya',
acct_import:'Ingiza',
acct_switch:'Badilisha',
acct_reload:'Pakia upya',
acct_delete:'Futa',
acct_cancel:'Ghairi',
acct_empty:'Tupu',
acct_token_ph:'Tokeni',
acct_copy:'Nakili',
acct_export:'Tuma nje',
acct_rename:'Badilisha jina',
acct_save:'Hifadhi',
acct_name_len:'Jina lazima liwe na herufi 4-12',
acct_name_fail:'Kubadilisha jina kumeshindikana',
acct_invalid:'Batili',
acct_ready:'Akaunti iko tayari. Funga Meeland, badilisha IP, kisha pakia upya.',
acct_ip_note:'Daima tumia VPN na ubadilishe IP unapobadilisha akaunti.',
acct_howto:'1. Bofya Nakili kwa kunakili kiunganishi cha akaunti hii.\n2. Katika kivinjari au kifaa kingine — au na rafiki — fungua MES.\n3. Bofya Ingiza na kubandika kiunganishi.',
sh_movement:'Mwendo',
sh_defense:'Ulinzi',
sh_camera:'Kamera',
sh_overlays:'Vifuniko',
sh_behaviour:'Tabia',
sh_buttons:'Vifungo',
sh_language:'Lugha',
sh_chat:'Soga',
sh_waves:'Waves',
sh_steal_a_pet:'Kuiba mnyama kipenzi',
sh_tower:'Tower',
sh_misc_multi:'Mengineyo (njia nyingi)',
s_noclip:'Pita ukuta',
s_fly:'Kuruka',
s_fly_emotes:'Emoti za kuruka',
s_base_speed:'Kasi ya msingi',
s_jump_mult:'Urefu wa Kuruka',
s_grav_mult:'Mvuto',
s_walk_up_walls:'Tembea Juu Kuta',
s_carry_normalize:'Beba Kasi + Rukia',
s_invincibility:'Kutoshindwa',
s_anti_kb:'Anti-sukuma nyuma',
s_invisible:'Kutoonekana',
s_xray_infection:'X-Ray (Siri ya Mauaji)',
s_ghost_mode:'Hali ya mzuka',
s_flee_intruder:'Kukimbia wakati mvamizi',
s_first_person:'Mwonekano wa nafsi ya kwanza',
s_fov_first_person:'FOV (1st)',
s_fov_third_person:'FOV (3rd)',
s_fov_vertical_mult:'Kizidishi Wima cha FOV',
s_auto_lock:'Kiotomatiki-funga ngome',
s_auto_fountain:'Kiotomatiki-chemchemu (1.5×)',
s_daily_coins:'Sarafu za kila siku',
s_stars:'Nyota',
s_diamonds_tower:'Almasi (Mnara)',
s_tower_loop:'Mzunguko wa mnara',
s_auto_roll_x25:'Roll otomatiki x25 bahati',
s_auto_craft:'Craft otomatiki',
s_auto_vip_sword:'Nunua VIP kiotomatiki',
s_auto_vip_waves:'Nunua VIP kiotomatiki (Mawimbi)',
s_direct_kill:'Spam ya mauaji ya moja kwa moja',
s_direct_kill_rate:'Kasi ya mauaji',
s_auto_buy_upgrades:'Uboreshaji wa Kununua Kiotomatiki',
s_boost_coins:'Uboreshaji wa Kiotomatiki: Sarafu',
s_boost_diamonds:'Uboreshaji wa Kiotomatiki: Almasi',
s_boost_luck:'Uboreshaji wa kiotomatiki: Bahati',
s_auto_unlock_areas:'Maeneo ya Kufungua Kiotomatiki',
s_auto_rebirth:'Kuzaliwa upya kiotomatiki',
s_auto_join_tp:'Teleport kwa eneo la juu zaidi',
s_hide_kill_rewards:'Ficha Ua Tuzo',
s_hide_roll_anim:'Ficha Uhuishaji wa Roll',
rng_title:'pets rng cheats',
rng_sec_rolling:'Kuviringika',
rng_sec_crafting:'Ufundi',
rng_sec_combat:'Pambana',
rng_sec_upgrades:'Uboreshaji',
rng_sec_areas:'Maeneo',
rng_actions:'Vitendo',
log_craft:'Ufundi',
log_success:'MAFANIKIO',
log_fail:'KUSHINDWA',
log_unlocking_area:'Eneo la kufungua',
log_area_unlocked:'Eneo limefunguliwa',
log_equipped:'Vifaa',
log_bought_upgrade:'Kununua kuboresha',
log_teleported_to:'Imetumwa kwa simu',
log_rebirthing:'Kuzaliwa upya',
h_rng:'rng',
h_accts:'Akaunti',
s_auto_collect:'Kiotomatiki-kusanya mapato',
s_collect_interval:'Muda wa kukusanya',
s_chat_fade:'Muda wa kutoweka kwa mazungumzo',
s_name_colors:'Rangi za majina ya watumiaji',
s_chat_enhance:'Uboreshaji wa mazungumzo',
mes_hint:'Kidokezo: jumuisha "mes" katika jina lako la mtumiaji kwa athari ya upinde wa mvua inayotembea!',
s_carry_tune:'Wimbo wa kubeba (Kuiba)',
s_pet_pickup_radius:'Eneo la Kuiba Mnyama',
s_carry_vol:'Kiwango cha sauti ya kubeba',
carry_tune_default:'Chaguo-msingi',
carry_tune_silent:'Kimya',
carry_tune_ambient:'Mazingira',
carry_tune_blues:'Bluu',
carry_tune_chiptune:'Chiptuni',
carry_tune_classical:'Klasiki',
carry_tune_electronic:'Kielektroniki',
carry_tune_epic:'Kishujaa',
carry_tune_folk:'Muziki wa asili',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazi',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Chuma',
carry_tune_pop:'Pop',
carry_tune_punk:'Panki',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Mwamba',
s_cont_cuddle:'Kukumbatia kuendelea',
s_protips:'Vidokezo vya Pro',
s_hideprotips:'Ficha Pro Tips zangu',
s_show_exp_modes:'Onyesha njia za majaribio',
s_showcoords:'Onyesha kuratibu',
s_showfps:'Onyesha FPS',
s_showtargetinfo:'Onyesha maelezo ya lengo',
s_showobj:'Onyesha Hesabu ya Huluki / Mesh',
s_copy_dbg:'Nakili debug logs',
s_copy_json:'Nakili JSON',
s_clear_dbg:'Futa',
h_fly:'Kuruka',
h_speed:'Kasi hack',
h_waypoints:'Alama za njia',
h_autolock:'Kiotomatiki-funga',
h_invisible:'Kutoonekana',
h_cuddle:'Kukumbatia',
h_pets:'Wanyama',
h_snipe:'Sniper',
h_help:'Msaada',
h_settings:'Mipangilio',
h_prv:'Chumba cha kibinafsi',
h_tc:'Kamilisha mnara',
h_tcl:'Mzunguko wa mnara',
kb_fly:'Kuruka (geuza/juu)',
kb_fly_down:'Kuruka chini',
kb_set_home:'Weka nyumbani',
kb_home:'Nyumba',
kb_back:'Rudi',
kb_cuddle:'Paneli ya kukumbatia',
kb_settings:'Mipangilio',
kb_pets:'Kivinjari cha wanyama',
kb_slots:'Nafasi ya alama',
kb_snipe:'Paneli ya sniper',
kb_snipe_toggle:'Sniper Washa/Zima',
kb_attack:'Shambulia',
kb_help:'Msaada / Maelezo',
kb_tower:'Kamilisha mnara',
kb_tower_loop:'Mzunguko wa mnara',
kb_invisible:'Kutoonekana',
kb_first_person:'Nafsi ya kwanza',
kb_autolock:'Msingi wa Kufunga Kiotomatiki',
kb_prv:'Chumba cha kibinafsi',
kb_rng:'RNG',
kb_accts:'Akaunti',
pets_title:'Wanyama wa kipenzi',
pets_search_placeholder:'k.m. paka mwitu, dhahabu AU almasi, (dhahabu AU zumaridi) mwitu',
pets_hint:'Maneno yanajumuishwa AND. Tumia OR kwa mbadala, mabano kwa vikundi. * au % wildcard. Weka - mbele ya neno ili kuitenga.',
pets_empty:'Hakuna wanyama katika chumba hiki',
pt_name:'Jina',
pt_mut:'Mabadiliko',
pt_rar:'Uadimu',
pt_owner:'Mmiliki',
pt_worth:'Thamani',
pt_income:'Mapato/s',
pt_dist:'Umbali',
slots_title:'Nafasi za alama za njia',
sniper_title:'Sniper wa wanyama',
sniper_tbl_pet:'Mnyama',
sniper_tbl_owner:'Mmiliki',
sniper_tbl_lock:'Funga',
sniper_placeholder:'mf. halo, golden OR diamond, emerald dragon',
sniper_hint:'Maneno AND. Tumia OR kwa mbadala, mabano kwa vikundi. * au % wildcard. Weka - mbele ya neno ili kuitenga.',
sniper_room_col:'Chumba',
sniper_scans_col:'Uchanganuzi',
sniper_top_pet_col:'Kipenzi cha Juu',
sniper_top_worth_col:'Thamani ya Juu',
sniper_top_owner_col:'Mmiliki Mkuu',
sniper_age_col:'Umri',
sniper_join_btn:'Jiunge',
sniper_full:'Imejaa',
sniper_join_failed:'Chumba kinacholengwa kimejaa',
sniper_scanning_rooms:'Inatafuta vyumba vingine…',
sniper_scan_off:'Kuwinda kiotomatiki',
sniper_scan_next:'Changanua ifuatayo',
sniper_scan_idle:'Haifanyi kitu - inasubiri kuchanganua',
sniper_auto_place:'Weka kiotomatiki kwenye msingi',
sniper_place_desc:'(huiweka mnyama aliyeibwa katika nafasi yako ya msingi)',
sniper_auto_drop:'Tupa kiotomatiki wanyama wasioendana katika Mawimbi',
sniper_drop_desc:'(huangusha wanyama pori wasioendana na kichujio ili kufanya upya bwawa la spawn)',
sniper_auto_hunt:'Uwindaji kiotomatiki',
sniper_hunt_desc:'(chunguza vyumba vingine, ruka hadi ulinganifu bora)',
sniper_auto_sell:'Kiotomatiki-uza katika Wizi',
sniper_sell_desc:'(uza mbaya zaidi ngome ikijaa)',
sniper_lockdown:'Fungua ≤',
sniper_lockdown_hint:'Iba kutoka ngome zenye ≤ muda huu. 0 = zisizofungwa tu.',
sniper_join_grace:'Jiunge na neema',
sniper_start:'Anza',
sniper_stop:'Simama',
sniper_idle:'Kimya',
sniper_no_filter:'Hakuna kichujio',
sniper_waiting:'Inasubiri mchezo...',
sniper_hold_pause:'Anashika mnyama — simama',
sniper_stolen_pause:'mnyama wetu yupo — simama',
sniper_cooldown:'Kupoza',
sniper_hopping:'Inabadilisha seva...',
sniper_na:'Sniper haipo katika sebule — jiunge mchezo kwanza',
sniper_wait_lock:'Inasubiri data ya kufunga...',
sniper_locked:'Ngome imefungwa — inaruka...',
sniper_full_eggs:'Ngome imejaa — mayai tu, haiwezi kuuza',
sniper_stealing:'Inaiba',
sniper_dropped:'Imeachwa',
sniper_holding:'Inashika',
sniper_place:'Weka katika ngome!',
sniper_steal_mode:'[Wizi]',
sniper_theft_nohop:'Mnyama anaibwa na',
sniper_nohop_suffix:'— hakuna kuruka',
sniper_sniping:'Sniper:',
sniper_options:'Chaguzi',
sniper_drop_fail_status:'Kuacha kumeshindwa!',
sniper_hotkey_label:'Kiungo cha haraka:',
sniper_panel_label:'Paneli:',
sniper_grab_fail:'Kushika kumeshindwa. Jaribu tena...',
sniper_our_pet_stolen:'Mnyama wetu ameibwa — 8s kupoza',
sniper_hopping_short:'Inaruka...',
sniper_base_full:'Msingi umejaa',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'KIMBIA',
pet_teleport_title:'Usafiri',
pet_pickup_title:'Chukua',
owner_yours:'Wako',
owner_wild:'Pori',
footer_gf:'Mafuta ya Uma',
copy_ok:'Imenakiliwa',
copy_failed:'Nakala Imeshindwa',
s_invis_on_fly:'Haionekani wakati wa kuruka',
snipe_walk_home:'Tembea kwenda nyumbani baada ya kuiba',
snipe_walk_home_desc:'Tembea kurudi kwenye kituo chako',
sniper_afk_sell:'AFK uza wanyama wasiolingana',
sniper_afk_sell_desc:'(ukiwa waAFK 5s, uza wanyama wasiolingana na kichujio kwa thamani — mawimbi tu)',
hb_fly:'RKA',
hb_lck:'FNG',
hb_inv:'FIC',
hb_cud:'KMB',
hb_pet:'MNY',
hb_snp:'SNP',
hb_cfg:'MPG',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'AKA',
ban_title:'Muunganisho umezuiwa',
ban_sub:'Anwani yako ya IP imezuiliwa na Meeland',
ban_body:'Usijali — hii ni rahisi kurekebisha! VPN ya bure itakupa IP mpya ili uweze kucheza tena.',
ban_pick:'Suluhisho la haraka — chagua moja:',
ban_warp:'bure, bila kikomo, usanidi wa kubofya mara moja',
ban_warp_store:'pia kwenye App Store na Play Store kama "1.1.1.1"',
ban_proton:'hakuna kikomo cha data, nchi 5',
ban_steps:'Sakinisha → unganisha → pakia upya ukurasa huu. Ndivyo tu!',
ban_ok:'Nimeelewa',
warn_title:'Tumia VPN kila wakati',
warn_body:'Cheza kila wakati na <b>VPN</b> imewashwa.',
warn_ok:'Nimeelewa, naelewa',
loading:'Inapakia',
tcl_loading:'Mzunguko kamili wa mnara unaendeshwa. Bonyeza {key} kusimamisha.',
hop_search:'Inatafuta mchezo',
hop_match:'{name} imepatikana — inajiunga',
hop_flee:'Kukimbia mvamizi',
hop_reconnect:'Inaunganisha tena',
hop_reload:'Inapakia upya',
hop_fall:'Inapona baada ya kuanguka',
hop_join:'Inajiunga chumbani',
lock_off:'ZIMA',
lock_unlocked:'IMEFUNGULIWA',
desc_intro:'MES hukupa uboreshaji wa ukuta, ufugaji kiotomatiki, mkusanyiko wa wanyama vipenzi adimu, kuongeza kasi, kukimbia, kutoonekana na mengine mengi huko Meeland.',
desc_free:'100% bure, siku zote. Una maoni? Acha ⭐ tathmini nzuri — ndiyo inayoendeleza masasisho.',
desc_h_movement:'Mwendo',
desc_h_combat:'Mapigano',
desc_h_tuning:'Urekebishaji',
desc_h_pets:'Wanyama & Kuiba',
desc_h_economy:'Uchumi',
desc_h_custom:'Kubadilisha',
desc_h_extras:'Ziada',
desc_fly:'Kuruka',
desc_fly_d:'Space juu, F chini. Kasi inaweza kubadilishwa.',
desc_speed:'Mwelekeo',
desc_speed_d:'Shift kwa usafiri wa papo hapo.',
desc_noclip:'Pita ukuta',
desc_noclip_d:'Pita kupitia kuta.',
desc_walls:'Kutembea Juu ya Kuta',
desc_walls_d:'Panda uso wowote.',
desc_waypts:'Alama za njia',
desc_waypts_d:'Hifadhi nafasi 10. Teleport kwa kitufe kimoja. <kbd>Z</kbd> badilisha.',
desc_invis:'Asiyeonekana',
desc_invis_d:'Bonyeza CapsLock kutoweka kabisa.',
desc_fpv:'FPV',
desc_fpv_d:'Bonyeza <kbd>.</kbd> kubadili hadi kamera ya mtu wa kwanza.',
desc_anti_invis:'Anti-kutoonekana',
desc_anti_invis_d:'Tazama wachezaji wasioonekana kama mizimu.',
desc_xray:'Maono ya X-Ray',
desc_xray_d:'Waone wachezaji kupitia kuta katika Siri ya Mauaji. Nyekundu = muuaji, kijani = raia.',
desc_nodeathh:'Haiwezi kufa',
desc_nodeath_d:'Kinga dhidi ya uharibifu wote.',
desc_antikb:'Anti-Kusukumwa',
desc_antikb_d:'Huwezi kusukumwa.',
desc_attack:'Shambulia papo',
desc_attack_d:'<kbd>G</kbd> husafirisha kwa mchezaji wa karibu na kupiga.',
desc_jumpgrav:'Kuruka na Mvuto',
desc_jumpgrav_d:'Vizidishi vinavyoweza kurekebishwa katika Mipangilio.',
desc_fov:'Udhibiti wa FOV',
desc_fov_d:'Vitelezeshi vya FOV vya mtu wa kwanza na wa tatu.',
desc_autoinvis:'Kuji-Ficha Kiotomatiki Unaporuka',
desc_autoinvis_d:'Kuwa asiyeonekana moja kwa moja unaporuka.',
desc_sniper:'Sniper wa wanyama',
desc_sniper_d:'Kuiba wanyama waliochujwa kiotomatiki. Modi zote mbili.',
desc_prv:'Chumba cha kibinafsi',
desc_prv_d:'<kbd>PgDn</kbd> inaunda chumba cha kibinafsi katika hali ya sasa na inajiunga kiotomatiki.',
desc_petbrow:'Kivinjari cha wanyama',
desc_petbrow_d:'<kbd>K</kbd> inaonyesha wanyama wote. Panga, chuja, kamata.',
desc_cuddle:'Paneli ya kukumbatia',
desc_cuddle_d:'<kbd>J</kbd> wachezaji kwa umbali. Bofya kufuata.',
desc_return:'Rudi Kiotomatiki',
desc_return_d:'Teleport nyumbani baada ya kuiba.',
desc_autolock:'Kiotomatiki-funga',
desc_autolock_d:'Kituo kimefungwa daima.',
desc_fountain:'Kiotomatiki-chemchemu',
desc_fountain_d:'Faida ya kudumu 1.5×. Upyaji otomatiki.',
desc_money:'Pesa bure + Nyota + Almasi',
desc_money_d:'Hakuna matangazo yanayohitajika.',
desc_collect:'Kukusanya Kiotomatiki',
desc_collect_d:'Mapato ya wanyama kila sekunde 30.',
desc_music:'Muziki wa Kubeba',
desc_music_d:'Muziki unapoiba. Aina 15.',
desc_chatfade:'Soga Kufifia',
desc_chatfade_d:'Dhibiti mwonekano wa ujumbe. 5–120s.',
desc_emotes:'Emoji za Kuruka',
desc_emotes_d:'Emoji za nasibu unaporuka.',
desc_displays:'Vifuniko vya Onyesho',
desc_displays_d:'Kuratibu, kihesabu FPS na maelezo ya lengo.',
desc_config:'Mipangilio',
desc_config_d:'<kbd>M</kbd> vipengele, vitufe, kasi.',
desc_langs:'Lugha 60',
desc_langs_d:'Tafsiri kamili ya UI.',
desc_tower:'Kamilisha mnara',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ushindi wa papo hapo.',
desc_cats:'Skrini za kupakia paka',
desc_cats_d:'Paka wazuri wanachukua nafasi ya kupakia.',
desc_h_install:'Sakinisha',
desc_desktop:'Eneo-kazi (Chrome, Edge, Firefox, Opera, Jasiri)',
desc_inst_ext:'Sakinisha <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> au <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Bonyeza Sakinisha hapo juu',
desc_inst_open:'Fungua mchezo wowote wa Meeland — inafanya kazi mara moja',
desc_mobile:'Simu (Android)',
desc_mob_ff:'Sakinisha <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox ya Android</a> kutoka Play Store',
desc_mob_addon:'Firefox → Menyu → Viongezi → sakinisha <strong>Tampermonkey</strong>',
desc_mob_visit:'Tembelea ukurasa huu kwenye Firefox na uguse Sakinisha',
desc_mob_play:'Cheza Meeland — vifunguo vya HUD vya kugusa vinaonekana kiotomatiki',
desc_ios:'iOS: Apple inazuia viongezi vya kivinjari katika vivinjari vyote vya iOS (ikiwa ni pamoja na Firefox). Tumia desktop au Android.',
desc_h_privacy:'Faragha',
desc_privacy:'Upande wa mteja tu — hakuna data inayotoka kwenye kivinjari chako'
});
_mk('yo','Yorùbá',{
close:'✕',
refresh:'↻',
go:'Lọ',
set:'Ṣètò',
auto:'Aṣeálàyé',
empty:'òfo',
help_title:'Ìrànwọ́',
players_title:'Àwọn Aṣeré',
players_empty:'Kò sí aṣeré mìíràn',
settings_title:'Ètò',
settings_reset:'Tún ṣètò',
tab_gameplay:'Eré',
tab_economy:'Ètò ọrọ̀ ajé',
tab_audio:'Ohùn',
tab_advanced:'Ìlọsíwájú',
tab_hud:'HUD',
tab_keys:'Bọ́tìnì',
tab_accounts:'Àwọn Àkọọlẹ',
acct_current:'Lọ́wọ́lọ́wọ́',
acct_new:'Tuntun',
acct_import:'Gbé wọlé',
acct_switch:'Yípadà',
acct_reload:'Tún gbé',
acct_delete:'Parẹ́',
acct_cancel:'Fagilé',
acct_empty:'Sófo',
acct_token_ph:'Token',
acct_copy:'Daakọ',
acct_export:'Gbé jáde',
acct_rename:'Yipada orúkọ',
acct_save:'Fipamọ́',
acct_name_len:'Orúkọ gbọdọ jẹ lẹ́tà 4-12',
acct_name_fail:'Yípadà orúkọ kùnà',
acct_invalid:'Kò tọ́',
acct_ready:'Àkọọlẹ ti ṣetán. Pa Meeland, yí IP padà, lẹ́yìn náà tún gbé.',
acct_ip_note:'Máa lo VPN nígbà gbogbo kí o sì yí IP padà nígbà tí o bá ń yí àkọọlẹ padà.',
acct_howto:'1. Tẹ Daakọ lati daakọ ọna asopọ ti àkọọlẹ yii.\n2. Nínú ẹ̀rọ àkàwé mìíràn tàbí ẹ̀rọ mìíràn — tàbí pẹ̀lú ọ̀rẹ́ — ṣí MES.\n3. Tẹ Gbe wọle ki o fi ọna asopọ naa síbẹ.',
sh_movement:'Gbígbé',
sh_defense:'Ìgbèjà',
sh_camera:'Kamẹ́rà',
sh_overlays:'Àwọn àyè',
sh_behaviour:'Ìwà',
sh_buttons:'Àwọn bọ́tìnì',
sh_language:'Èdè',
sh_chat:'Wiregbe',
sh_waves:'Waves',
sh_steal_a_pet:'Jí ohun ọ̀sìn',
sh_tower:'Tower',
sh_misc_multi:'Àwọn mìíràn (ọ̀pọ̀ ipo)',
s_noclip:'Kọjá odi',
s_fly:'Fo',
s_fly_emotes:'Ìfò emot',
s_base_speed:'Ìyára ìpìlẹ̀',
s_jump_mult:'Lọ Giga',
s_grav_mult:'Walẹ',
s_walk_up_walls:'Rin Up Odi',
s_carry_normalize:'Gbe Iyara + Lọ',
s_invincibility:'Àìṣeégùn',
s_anti_kb:'Anti-ti síẹ̀yìn',
s_invisible:'Aláìhàn',
s_xray_infection:'X-Ray (Ohun Ìjìlé Ìpàniyàn)',
s_ghost_mode:'Ipo ẹ̀mí',
s_flee_intruder:'Sá nígbà tí olùwọlé',
s_first_person:'Ìran ẹni àkọ́kọ́',
s_fov_first_person:'FOV (1st)',
s_fov_third_person:'FOV (3rd)',
s_fov_vertical_mult:'FOV inaro Multiplier',
s_auto_lock:'Aṣeálàyé tì ibùdó',
s_auto_fountain:'Aṣeálàyé orísun (1.5×)',
s_daily_coins:'Owó ojoojúmọ́',
s_stars:'Ìràwọ̀',
s_diamonds_tower:'Diamond (Ilé-eṣọ́)',
s_tower_loop:'Ìyípo ilé gíga',
s_auto_roll_x25:'Yipo laifọwọyi x25 orire',
s_auto_craft:'Craft laifọwọyi',
s_auto_vip_sword:'Ra VIP laifọwọyi',
s_auto_vip_waves:'Ra VIP laifọwọyi (Ìgbì)',
s_direct_kill:'Spam pipa taara',
s_direct_kill_rate:'Ìwọ̀n pípá',
s_auto_buy_upgrades:'Auto Ra awọn iṣagbega',
s_boost_coins:'laifọwọyi Igbesoke: eyo',
s_boost_diamonds:'laifọwọyi Igbesoke: iyebiye',
s_boost_luck:'Igbesoke laifọwọyi: Orire',
s_auto_unlock_areas:'Awọn agbegbe Ṣii silẹ Aifọwọyi',
s_auto_rebirth:'Auto atunbi',
s_auto_join_tp:'Teleport si agbegbe ti o ga julọ',
s_hide_kill_rewards:'Tọju Pa awọn ere',
s_hide_roll_anim:'Ìbòmọlẹ Roll Animation',
rng_title:'Ọsin RNG Iyanjẹ',
rng_sec_rolling:'Yiyi',
rng_sec_crafting:'Iṣẹ-ọnà',
rng_sec_combat:'Ija',
rng_sec_upgrades:'Awọn iṣagbega',
rng_sec_areas:'Awọn agbegbe',
rng_actions:'Awọn iṣe',
log_craft:'Iṣẹ ọwọ',
log_success:'ASEYORI',
log_fail:'KUNA',
log_unlocking_area:'Agbegbe ṣiṣi silẹ',
log_area_unlocked:'Agbegbe ṣiṣi silẹ',
log_equipped:'Ni ipese',
log_bought_upgrade:'Ti ra igbesoke',
log_teleported_to:'Ti firanṣẹ si',
log_rebirthing:'Àtúnbí',
h_rng:'rng',
h_accts:'Àwọn Àkọọlẹ',
s_auto_collect:'Aṣeálàyé kó owó',
s_collect_interval:'Àkókò àkójọ',
s_chat_fade:'Akoko piparẹ ifọrọwanilẹnuwo',
s_name_colors:'Awọn awọ orukọ olumulo',
s_chat_enhance:'Awọn ilọsiwaju ijabọ',
mes_hint:'Imọran: fi "mes" sinu orukọ olumulo rẹ fun ipa ti owo otun ti o ni awọ!',
s_carry_tune:'Orin gbigbe (Jija)',
s_pet_pickup_radius:'Rediosi Jija Ẹran',
s_carry_vol:'Iwọn ariwo gbigbe',
carry_tune_default:'Aiyeye',
carry_tune_silent:'Idakẹjẹ',
carry_tune_ambient:'Oju-ọrun',
carry_tune_blues:'Blues',
carry_tune_chiptune:'Chiptune',
carry_tune_classical:'Ibile',
carry_tune_electronic:'Itanna',
carry_tune_epic:'Akọni',
carry_tune_folk:'Ibilẹ',
carry_tune_funk:'Funk',
carry_tune_jazz:'Jazz',
carry_tune_lofi:'Lo-Fi',
carry_tune_metal:'Irin',
carry_tune_pop:'Agbejade',
carry_tune_punk:'Punk',
carry_tune_reggae:'Reggae',
carry_tune_rock:'Apata',
s_cont_cuddle:'Ìdi gbére',
s_protips:'Pro Italolobo',
s_hideprotips:'Farasin Pro Tips mi',
s_show_exp_modes:'Fi àwọn ọ̀nà ìdánwò hàn',
s_showcoords:'Ṣàfihàn àwọn ìpò',
s_showfps:'Ṣe afihan FPS',
s_showtargetinfo:'Fi alaye ibi-afojusi han',
s_showobj:'Ṣe afihan Nkankan / Iṣiro Apapọ',
s_copy_dbg:'Daakọ debug logs',
s_copy_json:'Daakọ JSON',
s_clear_dbg:'Pa rẹ́',
h_fly:'Fò',
h_speed:'Ìyára hack',
h_waypoints:'Àmì ọ̀nà',
h_autolock:'Aṣeálàyé-tì',
h_invisible:'Aláìhàn',
h_cuddle:'Dí mú',
h_pets:'Ẹranko',
h_snipe:'Sniper',
h_help:'Ìrànwọ́',
h_settings:'Ètò',
h_prv:'Yara Àdáni',
h_tc:'Parí ilé-eṣọ́',
h_tcl:'Ìyípo ilé gíga',
kb_fly:'Fò (yí padà/òkè)',
kb_fly_down:'Fò sísàlẹ̀',
kb_set_home:'Ṣètò ilé',
kb_home:'Ilé',
kb_back:'Padà',
kb_cuddle:'Pánẹ́ẹ̀lì ìdí',
kb_settings:'Ètò',
kb_pets:'Olùṣàwárí ẹranko',
kb_slots:'Àyè àmì ọ̀nà',
kb_snipe:'Pánẹ́ẹ̀lì sniper',
kb_snipe_toggle:'Sniper Sí/Tì',
kb_attack:'Kọlù',
kb_help:'Ìrànwọ́ / Àpèjúwe',
kb_tower:'Parí ilé-eṣọ́',
kb_tower_loop:'Ìyípo ilé gíga',
kb_invisible:'Aláìhàn',
kb_first_person:'Ẹni àkọ́kọ́',
kb_autolock:'Ipilẹ Titiipa Aifọwọyi',
kb_prv:'Yara Àdáni',
kb_rng:'RNG',
kb_accts:'Àwọn Àkọọlẹ',
pets_title:'Ẹranko ọ̀sìn',
pets_search_placeholder:'f.eks. egan kitty, goolu OR diamond, (goolu OR emeradi) egan',
pets_hint:'Àwọn ọ̀rọ̀ dàpọ̀ AND. Lo OR fún àwọn yòókù, àkàmọ́ fún ẹgbẹ́. * tàbí % wildcard. Fi - síwájú ọ̀rọ̀ kan láti yọ ọ́ kúrò.',
pets_empty:'Kò sí ẹranko nínú yàrá yìí',
pt_name:'Orúkọ',
pt_mut:'Ìyípadà',
pt_rar:'Ṣọ̀wọ́n',
pt_owner:'Onígi',
pt_worth:'Iye',
pt_income:'Owó/s',
pt_dist:'Ìjìnnà',
slots_title:'Àyè àmì ọ̀nà',
sniper_title:'Sniper ẹranko',
sniper_tbl_pet:'Ọsin',
sniper_tbl_owner:'Eni',
sniper_tbl_lock:'Titiipa',
sniper_placeholder:'bíi halo, golden OR diamond, emerald dragon',
sniper_hint:'Ọ̀rọ̀ AND. Lo OR fún àwọn yòókù, àkàmọ́ fún ẹgbẹ́. * tàbí % wildcard. Fi - síwájú ọ̀rọ̀ kan láti yọ ọ́ kúrò.',
sniper_room_col:'Yara',
sniper_scans_col:'Awọn ọlọjẹ',
sniper_top_pet_col:'Top ọsin',
sniper_top_worth_col:'oke iye',
sniper_top_owner_col:'Top Eni',
sniper_age_col:'Ọjọ́',
sniper_join_btn:'Dara pọ̀',
sniper_full:'Kún',
sniper_join_failed:'Àkọlé yara kun',
sniper_scanning_rooms:'Nwa awọn yara miiran…',
sniper_scan_off:'Sode aifọwọyi pa',
sniper_scan_next:'Nigbamii ọlọjẹ ni',
sniper_scan_idle:'Laiṣiṣẹ - nduro lati ọlọjẹ',
sniper_auto_place:'Fi sílẹ̀ sí ipilẹ̀ laifọwọyi',
sniper_place_desc:'(fi ẹranko tí a jí sínú ìpinnu rẹ)',
sniper_auto_drop:'Fi ẹran-ọsin ti ko baamu silẹ laifọwọyi ni Ìgbì',
sniper_drop_desc:'(fi ẹran igbó ti ko baamu àlẹmọ silẹ lati tun adagun spawn ṣe)',
sniper_auto_hunt:'Ọdẹ adaṣe',
sniper_hunt_desc:'(ṣayẹwo awọn yara miiran, fo si ibaramu ti o dara julọ)',
sniper_auto_sell:'Aṣeálàyé-tà ní Olè',
sniper_sell_desc:'(tà èyí tó búrú jù tí ibùdó bá kún)',
sniper_lockdown:'Tì ≤',
sniper_lockdown_hint:'Ji ní ibùdó tó ní ≤ àkókò yìí. 0 = tí kò tì nìkan.',
sniper_join_grace:'Darapọ mọ ore-ọfẹ',
sniper_start:'Bẹ̀rẹ̀',
sniper_stop:'Dúró',
sniper_idle:'Simi',
sniper_no_filter:'Kò sí àyọ̀',
sniper_waiting:'Ndúrò fún eré...',
sniper_hold_pause:'Ẹranko wà lọ́wọ́ — dúró',
sniper_stolen_pause:'ẹranko wa wà — dúró',
sniper_cooldown:'Ìtúnù',
sniper_hopping:'Ń yí server padà...',
sniper_na:'Sniper kò sí ní gbàgede — wọ eré kí o tó',
sniper_wait_lock:'Ndúrò fún dátà títì...',
sniper_locked:'Ibùdó ti tì — ń fò kọjá...',
sniper_full_eggs:'Ibùdó ti kún — ẹyin nìkan, kò lè tà',
sniper_stealing:'Ń ji',
sniper_dropped:'Ti jù sílẹ̀',
sniper_holding:'Ń mú',
sniper_place:'Fi sí ibùdó!',
sniper_steal_mode:'[Olè]',
sniper_theft_nohop:'Ẹranko ń jẹ́ olè',
sniper_nohop_suffix:'— kò sí bọ́',
sniper_sniping:'Sniper:',
sniper_options:'Àwọn àṣàyàn',
sniper_drop_fail_status:'Jù sílẹ̀ kùnà!',
sniper_hotkey_label:'Bọ́tìnì iyára:',
sniper_panel_label:'Pánẹ́ẹ̀lì:',
sniper_grab_fail:'Kò lè gba. Gbìyànjú lẹ́ẹ̀kan sí...',
sniper_our_pet_stolen:'Wọ́n ji ẹranko wa — 8s ìtúnù',
sniper_hopping_short:'Ń fò...',
sniper_base_full:'Ipilẹ ni kikun',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'SÁRÉ',
pet_teleport_title:'Gbigbe',
pet_pickup_title:'Gbe soke',
owner_yours:'Tire',
owner_wild:'Egan',
footer_gf:'Ọra orita',
copy_ok:'Ti daakọ',
copy_failed:'Daakọ kuna',
s_invis_on_fly:'A kò ríran nígbà tí ń fò',
snipe_walk_home:'Rìn lọ sí ilé lẹ́yìn jíjà',
snipe_walk_home_desc:'Rìn pa dà sí ibùdó rẹ',
sniper_afk_sell:'AFK ta àwọn ẹranko tí kò bá mu',
sniper_afk_sell_desc:'(nigbati aiṣiṣẹ 5s, ta àwọn ẹranko tí kò bá àlẹmọ mu nipa iye — igbi nikan)',
hb_fly:'FÒ',
hb_lck:'TÌÌ',
hb_inv:'FÀR',
hb_cud:'MRA',
hb_pet:'OHN',
hb_snp:'TÀ',
hb_cfg:'ÌTÒ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ÀKỌ',
ban_title:'Ìsopọ̀ ti dínà',
ban_sub:'Àdírẹ́sì IP rẹ ti ni ìdíwọ́ láti ọwọ́ Meeland',
ban_body:'Má ṣe yọ ara rẹ lẹ́nu — èyí rọrùn láti mú ṣe! VPN ọ̀fẹ́ yóò fún ọ ní IP tuntun kí o lè padà sí eré náà.',
ban_pick:'Ọ̀nà kíákíá — yan ọ̀kan:',
ban_warp:'ọ̀fẹ́, àìlópin, ìṣètò tẹ-kan',
ban_warp_store:'tún wà ní App Store àti Play Store gẹ́gẹ́ bí "1.1.1.1"',
ban_proton:'kò sí ìdíwọ́ dátà, orílẹ̀-èdè 5',
ban_steps:'Fi sí i → so pọ̀ → mú ojú-ìwé yìí ṣe tuntun. Ìyẹn ni!',
ban_ok:'Ó yé mi',
warn_title:'Lo VPN nigbagbogbo',
warn_body:'Má ṣiṣẹ́ nigbagbogbo pẹ̀lú <b>VPN</b> tí ó ṣiṣẹ́.',
warn_ok:'O gba, Mo loye',
loading:'Ń ṣàtúnṣe',
tcl_loading:'Ìyípo ilé gíga kíkún náà ń ṣiṣẹ́. Tẹ {key} láti dáwọ́ dúró.',
hop_search:'Ṣíwá ìdíje',
hop_match:'Rí {name} — ń dara pọ̀',
hop_flee:'Sá kúrò lọ́dọ̀ olùwọlé',
hop_reconnect:'Ń tún ṣopọ̀',
hop_reload:'Ń ṣàtúnṣe',
hop_fall:'Ń bọ́ lọ́wọ́ ìṣubú',
hop_join:'Ń dara pọ̀ sínú yàrá',
lock_off:'ÌPADÀ',
lock_unlocked:'TI ṢÍ',
desc_intro:'MES fun ọ ni wallhack, iṣẹ-ogbin adaṣe, ikojọpọ ọsin toje, igbelaruge iyara, ọkọ ofurufu, airi, ati diẹ sii ni Meeland',
desc_free:'100% ọ̀fẹ́, nígbà gbogbo. Ní ìfẹhinti? Fi ⭐ ìṣàyẹ̀wò rere — ìyẹn ni tó ń pa ìmúdójúìwọ̀n mọ́.',
desc_h_movement:'Ìgbésẹ̀',
desc_h_combat:'Ìjà',
desc_h_tuning:'Àtúnṣe',
desc_h_pets:'Ẹranko & Jíjà',
desc_h_economy:'Ètò owó',
desc_h_custom:'Ìṣàtúnṣe',
desc_h_extras:'Àfikún',
desc_fly:'Ìfò',
desc_fly_d:'Space sókè, F sísàlẹ̀. Ìyára ṣe é tún.',
desc_speed:'Seju',
desc_speed_d:'Shift fún ìgbéra lẹ́sẹ̀kẹsẹ̀.',
desc_noclip:'Kọjá odi',
desc_noclip_d:'Rìn gba odi.',
desc_walls:'Rìn lórí Ògiri',
desc_walls_d:'Gun orí ilẹ̀ èyíkéyìí.',
desc_waypts:'Àmì ọ̀nà',
desc_waypts_d:'Fipamọ́ ipò 10. Ìgbéra àtẹ kan. <kbd>Z</kbd> yípadà.',
desc_invis:'Àìrí',
desc_invis_d:'Tẹ CapsLock láti pàdánù pátápátá.',
desc_fpv:'FPV',
desc_fpv_d:'Tẹ <kbd>.</kbd> lati yipada si kamẹra eniyan akọkọ.',
desc_anti_invis:'Anti-aláìhàn',
desc_anti_invis_d:'Wo àwọn oníṣeré àìrí bíi ẹ̀mí.',
desc_xray:'Ìran X-Ray',
desc_xray_d:'Wo àwọn òṣèré nípasẹ̀ ògiri nínú Ohun Ìjélé Ìpàniyàn. Pupa = apàniyàn, àwọ̀ ewé = araalu.',
desc_nodeathh:'Àìkú',
desc_nodeath_d:'Ààbò lọ́wọ́ gbogbo ìpalára.',
desc_antikb:'Àtakò títì',
desc_antikb_d:'Kò le tì ọ́.',
desc_attack:'Ìkọlù lẹ́sẹ̀kẹsẹ̀',
desc_attack_d:'<kbd>G</kbd> gbé e lọ sí eré tó sún jùlọ kó sì lù.',
desc_jumpgrav:'Fò àti Òòfà',
desc_jumpgrav_d:'Àwọn ìlọ́po tó ṣeé túnṣe nínú Ìtò.',
desc_fov:'Ìṣàkóso FOV',
desc_fov_d:'Àwọn ọ̀pá ìyípadà FOV ẹni àkọ́kọ́ àti ẹni kẹta.',
desc_autoinvis:'Aìrí-Aládàáṣi nígbà Fífò',
desc_autoinvis_d:'Di aláìhàn láìfẹnu sí i nígbà tó bá ń fò.',
desc_sniper:'Sniper ẹranko',
desc_sniper_d:'Olè ẹranko tí a ṣàyẹ̀wò fúnra rẹ̀. Àwọn ìrísí méjèèjì.',
desc_prv:'Yara Àdáni',
desc_prv_d:'<kbd>PgDn</kbd> ṣẹda yara àdáni ní ọnà ìṣísẹ̀ lọwọlọwọ kí ó sì darapọ̀ mọ̀ laifọwọyi.',
desc_petbrow:'Olùṣàwárí ẹranko',
desc_petbrow_d:'<kbd>K</kbd> ṣàfihàn gbogbo ẹranko. Ṣètò, ṣàyẹ̀wò, mú.',
desc_cuddle:'Pánẹ́ẹ̀lì ìdí',
desc_cuddle_d:'<kbd>J</kbd> àwọn oníṣeré gẹ́gẹ́ bí àáyè. Tẹ láti lé.',
desc_return:'Àpadà Fúnra',
desc_return_d:'Gbé padà sílé lẹ́yìn olè.',
desc_autolock:'Aṣeálàyé-tì',
desc_autolock_d:'Ibùdó tí wà ní tìtì.',
desc_fountain:'Aṣeálàyé-orísun',
desc_fountain_d:'Èrè ayérayé 1.5×. Àtúnyẹ̀wò fúnrara.',
desc_money:'Owó ọ̀fẹ́ + Ìràwọ̀ + Diamond',
desc_money_d:'Kò nílò ìpolówó.',
desc_collect:'Àkójọ Fúnra',
desc_collect_d:'Ẹ̀rí ẹranko ní gbogbo iṣẹ́jú 30.',
desc_music:'Orin Gbígbé',
desc_music_d:'Orin nígbà tí o ń jalè. Irú 15.',
desc_chatfade:'Ìfòyemọ̀ Ìfọ̀rọ̀wérọ̀',
desc_chatfade_d:'Ṣàkóso ìfihàn ifiránṣẹ́. 5–120ìṣ.',
desc_emotes:'Ẹ̀rọ Ìṣọ̀kan Ọ̀fẹ́',
desc_emotes_d:'Ẹ̀rọ ìṣọ̀kan àìlétò nígbà tí o ń fò.',
desc_displays:'Àwọn Ìborí Ifihàn',
desc_displays_d:'Àwọn ipò, òǹkà FPS àti ìsọfúnni àfojúsùn.',
desc_config:'Àwọn Ètò',
desc_config_d:'<kbd>M</kbd> àwọn ẹ̀yà, bọ́tìnì, ìyára.',
desc_langs:'Èdè 60',
desc_langs_d:'Ìtúmọ̀ UI kíkún.',
desc_tower:'Parí ilé-eṣọ́',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ìṣẹ́gun lẹ́sẹ̀kẹsẹ̀.',
desc_cats:'Àwọn iboju ologbo',
desc_cats_d:'Ologbo didùn rọ́pò ìforúkọ.',
desc_h_install:'Fi sóri ẹ̀rọ',
desc_desktop:'Ojú-iṣẹ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Fi <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> tàbí <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> sóri ẹ̀rọ',
desc_inst_click:'Tẹ Fi sóri ẹ̀rọ lókè',
desc_inst_open:'Ṣí eré Meeland èyíkéyìí — ó ṣiṣẹ́ lẹ́sẹ̀kẹsẹ̀',
desc_mobile:'Fóònù (Android)',
desc_mob_ff:'Fi <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox fún Android</a> sóri ẹ̀rọ láti Play Store',
desc_mob_addon:'Firefox → Àkojọ → Àfikún → fi <strong>Tampermonkey</strong> sóri ẹ̀rọ',
desc_mob_visit:'Ṣàbẹ̀wò ojú-ìwé yìí ní Firefox kí o tẹ Fi sóri ẹ̀rọ',
desc_mob_play:'Ṣeré Meeland — bọ́tìnì HUD ìfọwọ́kàn yóò hàn fúnra rẹ̀',
desc_ios:'iOS: Apple dènà àfikún aṣàwákiri ní gbogbo aṣàwákiri iOS (tí Firefox wà). Lo desktop tàbí Android.',
desc_h_privacy:'Àṣírí',
desc_privacy:'Ẹgbẹ́ oníbàára nìkan — kò sí dátà tó ń jáde ní aṣàwákiri'
});
_mk('zu','isiZulu',{
close:'✕',
refresh:'↻',
go:'Hamba',
set:'Setha',
auto:'Okuzenzakalelayo',
empty:'akunalutho',
help_title:'Usizo',
players_title:'Abadlali',
players_empty:'Akukho abanye abadlali abatholiwe',
settings_title:'Izilungiselelo',
settings_reset:'Setha kabusha',
tab_gameplay:'Umdlalo',
tab_economy:'Ezomnotho',
tab_audio:'Umsindo',
tab_advanced:'Okuthuthukile',
tab_hud:'I-HUD',
tab_keys:'Okhiye',
tab_accounts:'Ama-akhawunti',
acct_current:'Yamanje',
acct_new:'Elisha',
acct_import:'Ngenisa',
acct_switch:'Shintsha',
acct_reload:'Phinda ulayishe',
acct_delete:'Susa',
acct_cancel:'Khansela',
acct_empty:'Akanalutho',
acct_token_ph:'Ithokheni',
acct_copy:'Kopisha',
acct_export:'Khipha',
acct_rename:'Shintsha igama',
acct_save:'Gcina',
acct_name_len:'Igama kufanele libe nezinhlamvu 4-12',
acct_name_fail:'Ukushintsha igama kwehlulekile',
acct_invalid:'Akuvumelekile',
acct_ready:'I-akhawunti isilungile. Vala i-Meeland, shintsha IP, bese uphinda ulayishe.',
acct_ip_note:'Njalo sebenzisa i-VPN futhi ushintshe IP uma ushintsha i-akhawunti.',
acct_howto:'1. Chofoza Kopisha ukuze ukhuphe isixhumanisi sale akhawunti.\n2. Kusiphequluli noma idivayisi — noma nomngane — vula i-MES.\n3. Chofoza Ngenisa bese unamathisela isixhumanisi.',
sh_movement:'Ukuhamba',
sh_defense:'Ukuvikela',
sh_camera:'Ikhamera',
sh_overlays:'Okubekwe phezulu',
sh_behaviour:'Ukuziphatha',
sh_buttons:'Izinkinobho',
sh_language:'Ulimi',
sh_chat:'Xoxa',
sh_waves:'Waves',
sh_steal_a_pet:'Yeba isilwane sasekhaya',
sh_tower:'Tower',
sh_misc_multi:'Okunye (imodi eziningi)',
s_noclip:'Dlula odongeni',
s_fly:'Ndiza',
s_fly_emotes:'Indiza emote',
s_base_speed:'Isivinini sesisekelo',
s_jump_mult:'Eqa Ukuphakama',
s_grav_mult:'Amandla adonsela phansi',
s_walk_up_walls:'Khuphuka Izindonga',
s_carry_normalize:'Phatha Isivinini + Eqa',
s_invincibility:'Ukunganqotshwa',
s_anti_kb:'Anti-ukufuqwa emuva',
s_invisible:'Ukungabonakali',
s_xray_infection:'I-X-Ray (Imfihlakalo Yokubulala)',
s_ghost_mode:'Imodi yomoya',
s_flee_intruder:'Baleka uma kufika isigelekeqe',
s_first_person:'Ukubuka komuntu wokuqala',
s_fov_first_person:'FOV (1st)',
s_fov_third_person:'FOV (3rd)',
s_fov_vertical_mult:'I-FOV Vertical Multiplier',
s_auto_lock:'Okuzenzakalelayo-khiya insiza',
s_auto_fountain:'Okuzenzakalelayo-umthombo (1.5×)',
s_daily_coins:'Izinhlamvu zansuku zonke',
s_stars:'Izinkanyezi',
s_diamonds_tower:'Amadayimane (Ithawa)',
s_tower_loop:'Umjikelezo wombhoshongo',
s_auto_roll_x25:'I-roll othomathikhi x25 inhlanhla',
s_auto_craft:'Ukucrafta okuzenzakalelayo',
s_auto_vip_sword:'Thenga VIP ngokuzenzakalelayo',
s_auto_vip_waves:'Thenga VIP ngokuzenzakalelayo (Amagagasi)',
s_direct_kill:'I-spam yokubulala eqondile',
s_direct_kill_rate:'Izinga lokubulala',
s_auto_buy_upgrades:'Auto Thenga Ukuthuthukiswa',
s_boost_coins:'Ukuthuthukiswa Okuzenzakalelayo: Izinhlamvu zemali',
s_boost_diamonds:'Ukuthuthukiswa Okuzenzakalelayo: Amadayimane',
s_boost_luck:'Ukuthuthukiswa Okuzenzakalelayo: Inhlanhla',
s_auto_unlock_areas:'I-Auto Unlock Izindawo',
s_auto_rebirth:'Ukuphindukuzalwa Okuzenzakalelayo',
s_auto_join_tp:'I-Teleport eya endaweni ephakeme kakhulu',
s_hide_kill_rewards:'Fihla Bulala Imivuzo',
s_hide_roll_anim:'Fihla I-Roll Animation',
rng_title:'Izilwane ezifuywayo RNG aphambe',
rng_sec_rolling:'Ukuginqika',
rng_sec_crafting:'Ukwakha',
rng_sec_combat:'Ukulwa',
rng_sec_upgrades:'Ukuthuthukiswa',
rng_sec_areas:'Izindawo',
rng_actions:'Izenzo',
log_craft:'Ubuciko',
log_success:'IMPUMELELO',
log_fail:'hluleka',
log_unlocking_area:'Indawo yokuvula',
log_area_unlocked:'Indawo ivuliwe',
log_equipped:'Ihlomile',
log_bought_upgrade:'Kuthengwe ukuthuthukiswa',
log_teleported_to:'Ithunyelwe ngocingo',
log_rebirthing:'Ukuzalwa kabusha',
h_rng:'I-RNG',
h_accts:'Ama-akhawunti',
s_auto_collect:'Okuzenzakalelayo-qoqa imali engenayo',
s_collect_interval:'Isikhathi sokuqoqa',
s_chat_fade:'Isikhathi sokuphela kwengxoxo',
s_name_colors:'Imibala yamagama abasebenzisi',
s_chat_enhance:'Izithuthukisi zengxoxo',
mes_hint:'Iseluleko: faka "mes" egameni lakho lomsebenzisi ukuze uthole umphumela wothingo lwenkosazana oguqukayo!',
s_carry_tune:'Ingoma yokuthwala (Ukweba)',
s_pet_pickup_radius:'Indinganiso Yokueba Isilwane',
s_carry_vol:'Ivolumu yokuthwala',
carry_tune_default:'Okuzenzakalelayo',
carry_tune_silent:'Thule',
carry_tune_ambient:'I-ambient',
carry_tune_blues:'Okuluhlaza okwesibhakabhaka',
carry_tune_chiptune:'I-chiptune',
carry_tune_classical:'Izikhova',
carry_tune_electronic:'Ye-Electronic',
carry_tune_epic:'I-Epic',
carry_tune_folk:'Yabantu',
carry_tune_funk:'Funk',
carry_tune_jazz:'I-Jazz',
carry_tune_lofi:'I-Lo-Fi',
carry_tune_metal:'Insimbi',
carry_tune_pop:'I-Pop',
carry_tune_punk:'I-Punk',
carry_tune_reggae:'I-Reggae',
carry_tune_rock:'Idwala',
s_cont_cuddle:'Ukugona okuqhubekayo',
s_protips:'Izikhombiso Zepro',
s_hideprotips:'Fihla Izikhombiso Zami Zepro',
s_show_exp_modes:'Bonisa izindlela zokuhlola',
s_showcoords:'Bonisa amakoodi',
s_showfps:'Bonisa i-FPS',
s_showtargetinfo:'Khombisa ulwazi lwethagethi',
s_showobj:'Bonisa Ibhizinisi / Isibalo Semeshi',
s_copy_dbg:'Kopisha amalogi we-debug',
s_copy_json:'Kopisha JSON',
s_clear_dbg:'Sula',
h_fly:'Ndiza',
h_speed:'Isivinini hack',
h_waypoints:'Izimpawu zendlela',
h_autolock:'Okuzenzakalelayo-khiya',
h_invisible:'Ukungabonakali',
h_cuddle:'Gona',
h_pets:'Izilwane',
h_snipe:'Isnayipha',
h_help:'Usizo',
h_settings:'Izilungiselelo',
h_prv:'Igumbi Lobuntu',
h_tc:'Qedela ithawa',
h_tcl:'Umjikelezo wombhoshongo',
kb_fly:'Ndiza (shintsha/phezulu)',
kb_fly_down:'Ndiza phansi',
kb_set_home:'Setha ikhaya',
kb_home:'Ikhaya',
kb_back:'Emuva',
kb_cuddle:'Iphaneli yokugona',
kb_settings:'Izilungiselelo',
kb_pets:'Isiphequluli sezilwane',
kb_slots:'Isikhala sezimpawu',
kb_snipe:'Iphaneli yesnayipha',
kb_snipe_toggle:'Isnayipha Vula/Vala',
kb_attack:'Hlasela',
kb_help:'Usizo / Incazelo',
kb_tower:'Qedela ithawa',
kb_tower_loop:'Umjikelezo wombhoshongo',
kb_invisible:'Ukungabonakali',
kb_first_person:'Umuntu wokuqala',
kb_autolock:'Isisekelo sokukhiya ngokuzenzakalelayo',
kb_prv:'Igumbi Lobuntu',
kb_rng:'RNG',
kb_accts:'Ama-akhawunti',
pets_title:'Izilwane zasekhaya',
pets_search_placeholder:'isib. Ikati lasendle, igolide NOMA idayimane, (igolide NOMA isimaragidu) zasendle',
pets_hint:'Amagama ahlanganiswa AND. Sebenzisa OR ngokwenye, izibiyelo zokuqoqa. * noma % wildcard. Beka - phambi kwegama ukuze ulikhiphe.',
pets_empty:'Azikho izilwane kule kamelo',
pt_name:'Igama',
pt_mut:'Ukuguquka',
pt_rar:'Ukungavamile',
pt_owner:'Umnikazi',
pt_worth:'Inani',
pt_income:'Imali/s',
pt_dist:'Ibanga',
slots_title:'Izikhala zezimpawu zendlela',
sniper_title:'Isnayipha yezilwane',
sniper_tbl_pet:'Isilwane esifuywayo',
sniper_tbl_owner:'Umnikazi',
sniper_tbl_lock:'Khiya',
sniper_placeholder:'isib. halo, golden OR diamond, emerald dragon',
sniper_hint:'Amagama AND. Sebenzisa OR ngokwenye, izibiyelo zokuqoqa. * noma % wildcard. Beka - phambi kwegama ukuze ulikhiphe.',
sniper_room_col:'Ikamelo',
sniper_scans_col:'Izikena',
sniper_top_pet_col:'Isilwane Sasekhaya Esiphezulu',
sniper_top_worth_col:'inani eliphezulu',
sniper_top_owner_col:'Umnikazi Omkhulu',
sniper_age_col:'Iminyaka',
sniper_join_btn:'Joyina',
sniper_full:'Ugcwele',
sniper_join_failed:'Igumbi eliqondiwe ligcwele',
sniper_scanning_rooms:'Ifuna amakamelo amanye…',
sniper_scan_off:'Ukuzingela ngokuzenzakalelayo',
sniper_scan_next:'Ukuskena okulandelayo kungene',
sniper_scan_idle:'Ayisebenzi — ilinde ukuskena',
sniper_auto_place:'Beka ngokuzenzakalelayo eBasini',
sniper_place_desc:'(ibeka isilwane esebiwe ekhoneni lakho lesisekelo)',
sniper_auto_drop:'Donsa izilwane ezingafani ngokuzenzakalelayo kumaWaves',
sniper_drop_desc:'(idonsa izilwane zasendle ezingafani nesihlungi ukuze ivuse ichibi lokuzala)',
sniper_auto_hunt:'Ukuzingela okuzenzakalelayo',
sniper_hunt_desc:'(hlola amakamelo amanye, gxumela kokufanayo okungcono kakhulu)',
sniper_auto_sell:'Okuzenzakalelayo-thengisa ku-Ukweba',
sniper_sell_desc:'(thengisa okubi kakhulu uma insiza igcwele)',
sniper_lockdown:'Khiya ≤',
sniper_lockdown_hint:'Yeba kwizinsiza ezinesikhathi ≤ lesi. 0 = ezingakhiyiwe kuphela.',
sniper_join_grace:'Joyina umusa',
sniper_start:'Qala',
sniper_stop:'Misa',
sniper_idle:'Ihlalile',
sniper_no_filter:'Asikho isihluzi',
sniper_waiting:'Ilindela umdlalo...',
sniper_hold_pause:'Ibambe isilwane — phumula',
sniper_stolen_pause:'isilwane sethu sikhona — phumula',
sniper_cooldown:'Ukupholisa',
sniper_hopping:'Ishintsha iseva...',
sniper_na:'Isnayipha ayikho ku-lobby — ngena kumdlalo kuqala',
sniper_wait_lock:'Ilindela idatha yokukhiya...',
sniper_locked:'Insiza ikhiyiwe — iyeqa...',
sniper_full_eggs:'Insiza igcwele — amaqanda kuphela, ayikwazi ukuthengisa',
sniper_stealing:'Iyeba',
sniper_dropped:'Iyehlisiwe',
sniper_holding:'Ibambe',
sniper_place:'Beka ensizeni!',
sniper_steal_mode:'[Ukweba]',
sniper_theft_nohop:'Isilwane siyebiwa',
sniper_nohop_suffix:'— akukho ukugxuma',
sniper_sniping:'Isnayiphu:',
sniper_options:'Izinketho',
sniper_drop_fail_status:'Ukwehlisa akuphumelelanga!',
sniper_hotkey_label:'Ukhiye osheshayo:',
sniper_panel_label:'Iphaneli:',
sniper_grab_fail:'Ukuthatha akuphumelelanga. Zama futhi...',
sniper_our_pet_stolen:'Isilwane sethu sebiwe — 8s ukupholisa',
sniper_hopping_short:'Igxuma...',
sniper_base_full:'Isisekelo sigcwele',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'GIJIMA',
pet_teleport_title:'I-Teleport',
pet_pickup_title:'Phakamisa',
owner_yours:'Eyakho',
owner_wild:'Endle',
footer_gf:'Imfoloko Enamafutha',
copy_ok:'Kukopishiwe',
copy_failed:'Ukukopisha Kwehlulekile',
s_invis_on_fly:'Akabonakali lapho undiza',
snipe_walk_home:'Hamba ngezinyawo uye ekhaya ngemva kokweba',
snipe_walk_home_desc:'Hamba ubuyele esizindeni sakho',
sniper_afk_sell:'AFK thengisa izilwane ezingafani',
sniper_afk_sell_desc:'(uma ungasebenzi 5s, thengisa izilwane ezingafani nesihlungi ngenani — amagagasi kuphela)',
hb_fly:'NDA',
hb_lck:'KYA',
hb_inv:'FHL',
hb_cud:'SNG',
hb_pet:'SLW',
hb_snp:'DUB',
hb_cfg:'IZL',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'AKHA',
ban_title:'Ukuxhumeka kuvinjiwe',
ban_sub:'Ikheli lakho le-IP livinjelwe ngu-Meeland',
ban_body:'Ungakhathazeki — kulula ukukulungisa lokhu! I-VPN yamahhala izokunika i-IP entsha ukuze uphinde udlale.',
ban_pick:'Isixazululo esisheshayo — khetha eyodwa:',
ban_warp:'mahhala, ayinamkhawulo, ukusetha ngokuchofoza okukodwa',
ban_warp_store:'itholakala futhi ku-App Store ne-Play Store ngo-"1.1.1.1"',
ban_proton:'ayinamkhawulo wedatha, amazwe angu-5',
ban_steps:'Faka → xhuma → vuselela leli khasi. Yilokho kuphela!',
ban_ok:'Ngiyezwa',
warn_title:'Sebenzisa njalo i-VPN',
warn_body:'Hlala udlala nge-<b>VPN</b> evuliwe.',
warn_ok:'Ngiyezwa, ngiyaqonda',
loading:'Iyalayisha',
tcl_loading:'Kusebenza umjikelezo ogcwele wombhoshongo. Cindezela {key} ukuze umise.',
hop_search:'Kufuna umdlalo',
hop_match:'Kutholwe u-{name} — kuyangenwa',
hop_flee:'Ukubaleka kusigelekeqe',
hop_reconnect:'Kuxhumana kabusha',
hop_reload:'Ilayisha kabusha',
hop_fall:'Kululama ekuweni',
hop_join:'Kuyangena ekamelweni',
lock_off:'VALIWE',
lock_unlocked:'IVULIWE',
desc_intro:'I-MES ikunikeza i-wallhack, ukulima ngokuzenzakalela, ukuqoqwa kwezilwane ezifuywayo eziyivelakancane, ukukhulisa isivinini, ukundiza, ukungabonakali, nokunye okwengeziwe e-Meeland',
desc_free:'100% mahhala, njalo. Unempendulo? Shiya ⭐ ukubuyekeza okuhle — yilokho okugcina izibuyekezo ziqhubeka.',
desc_h_movement:'Ukunyakaza',
desc_h_combat:'Ukulwa',
desc_h_tuning:'Ukulungisa',
desc_h_pets:'Izilwane & Ukweba',
desc_h_economy:'Umnotho',
desc_h_custom:'Ukwenza ngezifiso',
desc_h_extras:'Okwengeziwe',
desc_fly:'Kundiza',
desc_fly_d:'Space phezulu, F phansi. Isivinini singalungiswa.',
desc_speed:'Ukucwayiza',
desc_speed_d:'Shift ukuthutha ngokushesha.',
desc_noclip:'Dlula odongeni',
desc_noclip_d:'Hamba udabule izindonga.',
desc_walls:'Ukuhamba Ezindongeni',
desc_walls_d:'Khuphuka noma iyiphi indawo.',
desc_waypts:'Izimpawu zendlela',
desc_waypts_d:'Gcina izindawo eziyi-10. Teleport ngokhiye owodwa. <kbd>Z</kbd> shintsha.',
desc_invis:'Engabonakali',
desc_invis_d:'Cindezela i-CapsLock ukuze unyamalale ngokuphelele.',
desc_fpv:'FPV',
desc_fpv_d:'Cindezela <kbd>.</kbd> ukuze uguqulele kukhamera yomuntu wokuqala.',
desc_anti_invis:'Anti-ukungabonakali',
desc_anti_invis_d:'Bona abadlali abangabonakali njengezipoki.',
desc_xray:'Umbono we-X-Ray',
desc_xray_d:'Bona abadlali ngezindonga ku-Imfihlakalo Yokubulala. Okubomvu = umbulali, okuluhlaza = isakhamuzi.',
desc_nodeathh:'Ukungafi',
desc_nodeath_d:'Ukuvikelwa kuwo wonke umonakalo.',
desc_antikb:'Anti-ukufuqwa',
desc_antikb_d:'Awukwazi ukufuqwa.',
desc_attack:'Hlasela masinyane',
desc_attack_d:'<kbd>G</kbd> uthutha kumdlali oseduze bese ushaya.',
desc_jumpgrav:'Gxuma namandla Adonsela Phansi',
desc_jumpgrav_d:'Izimpindiseli ezilungisekayo ku-Settings.',
desc_fov:'Ukulawula i-FOV',
desc_fov_d:'Izilayida ze-FOV zomuntu wokuqala nomuntu wesithathu.',
desc_autoinvis:'Ungabonakali Ngokuzenzakalelayo lapho Undiza',
desc_autoinvis_d:'Ungabonakali ngokuzenzakalelayo lapho undiza.',
desc_sniper:'Isnayiphu yezilwane',
desc_sniper_d:'Ukweba izilwane ezihluziwe ngokuzenzekela. Imodi zombili.',
desc_prv:'Igumbi Lobuntu',
desc_prv_d:'<kbd>PgDn</kbd> idala igumbi lobuntu kumodi wamanje futhi iyazijoyina ngokuzenzakalelayo.',
desc_petbrow:'Isiphequluli sezilwane',
desc_petbrow_d:'<kbd>K</kbd> ibonisa zonke izilwane. Hlela, hluza, bamba.',
desc_cuddle:'Iphaneli yokugona',
desc_cuddle_d:'<kbd>J</kbd> abadlali ngokubude. Chofoza ukulandela.',
desc_return:'Buya Ngokuzenzekelayo',
desc_return_d:'Thutha ekhaya ngemva kokweba.',
desc_autolock:'Okuzenzakalelayo-khiya',
desc_autolock_d:'Isisekelo sihlala sikhiyiwe.',
desc_fountain:'Okuzenzakalelayo-umthombo',
desc_fountain_d:'Inzuzo engaguquki 1.5×. Ukuvuselela okuzenzekela.',
desc_money:'Imali yamahhala + Izinkanyezi + Amadayimane',
desc_money_d:'Akudingeki izikhangiso.',
desc_collect:'Ukuqoqa Okuzenzekela',
desc_collect_d:'Imali yezilwane njalo ngemizuzwana engu-30.',
desc_music:'Ingoma yokuthwala',
desc_music_d:'Umculo ngenkathi uba. Izinhlobo ezingu-15.',
desc_chatfade:'Ukuphelela kwengxoxo',
desc_chatfade_d:'Lawula ukubonakala kwemiyalezo. 5–120s.',
desc_emotes:'Ama-emote okundiza',
desc_emotes_d:'Ama-emote angahleliwe ngenkathi undiza.',
desc_displays:'Izembozo Zesibonisi',
desc_displays_d:'Izixhumanisi, isibali se-FPS kanye nolwazi lomgomo.',
desc_config:'Izilungiselelo',
desc_config_d:'<kbd>M</kbd> izici, okhiye, isivinini.',
desc_langs:'Izilimi ezingu-60',
desc_langs_d:'Ukuhumusha kwe-UI okuphelele.',
desc_tower:'Qedela ithawa',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ukunqoba ngokushesha.',
desc_cats:'Izikrinini zokulayisha zekati',
desc_cats_d:'Amakati amnandi athatha indawo yokulayisha.',
desc_h_install:'Faka',
desc_desktop:'I-Desktop (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'Faka <a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> noma <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a>',
desc_inst_click:'Cindezela Faka ngenhla',
desc_inst_open:'Vula noma yimuphi umdlalo we-Meeland — isebenza masinyane',
desc_mobile:'Iselula (Android)',
desc_mob_ff:'Faka <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox ye-Android</a> ku-Play Store',
desc_mob_addon:'Firefox → Imenyu → Izengezelo → faka <strong>Tampermonkey</strong>',
desc_mob_visit:'Vakashela leli khasi ku-Firefox ucindezele Faka',
desc_mob_play:'Dlala Meeland — izinkinobho ze-HUD zokuthinta zibonakala ngokuzenzakalelayo',
desc_ios:'iOS: I-Apple ivimba izandiso ze-browser kuwo wonke ama-browser e-iOS (kufaka Firefox). Sebenzisa i-desktop noma Android.',
desc_h_privacy:'Ubumfihlo',
desc_privacy:'Uhlangothi lomthengi kuphela — akukho idatha ephuma ku-browser yakho'
});
_mk('pa','ਪੰਜਾਬੀ',{
close:'✕',
refresh:'↻',
go:'ਜਾਓ',
set:'ਸੈੱਟ',
auto:'ਆਟੋ',
empty:'ਖਾਲੀ',
help_title:'ਮਦਦ',
players_title:'ਖਿਡਾਰੀ',
players_empty:'ਕੋਈ ਹੋਰ ਖਿਡਾਰੀ ਨਹੀਂ ਮਿਲਿਆ',
settings_title:'ਸੈਟਿੰਗਾਂ',
settings_reset:'ਰੀਸੈੱਟ',
tab_gameplay:'ਗੇਮਪਲੇ',
tab_economy:'ਆਰਥਿਕਤਾ',
tab_audio:'ਆਡੀਓ',
tab_advanced:'ਉੱਨਤ',
tab_hud:'ਐਚ.ਯੂ.ਡੀ',
tab_keys:'ਕੁੰਜੀਆਂ',
tab_accounts:'ਖਾਤੇ',
acct_current:'ਮੌਜੂਦਾ',
acct_new:'ਨਵਾਂ',
acct_import:'ਇੰਪੋਰਟ',
acct_switch:'ਬਦਲੋ',
acct_reload:'ਦੁਬਾਰਾ ਲੋਡ',
acct_delete:'ਮਿਟਾਓ',
acct_cancel:'ਰੱਦ ਕਰੋ',
acct_empty:'ਖਾਲੀ',
acct_token_ph:'ਟੋਕਨ',
acct_copy:'ਕਾਪੀ',
acct_export:'ਐਕਸਪੋਰਟ',
acct_rename:'ਨਾਮ ਬਦਲੋ',
acct_save:'ਸੇਵ ਕਰੋ',
acct_name_len:'ਨਾਮ 4-12 ਅੱਖਰਾਂ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ',
acct_name_fail:'ਨਾਮ ਬਦਲਣਾ ਅਸਫਲ',
acct_invalid:'ਅਵੈਧ',
acct_ready:'ਖਾਤਾ ਤਿਆਰ ਹੈ। Meeland ਬੰਦ ਕਰੋ, IP ਬਦਲੋ, ਫਿਰ ਦੁਬਾਰਾ ਲੋਡ ਕਰੋ।',
acct_ip_note:'ਖਾਤਾ ਬਦਲਦੇ ਸਮੇਂ ਹਮੇਸ਼ਾ VPN ਵਰਤੋ ਅਤੇ IP ਬਦਲੋ।',
acct_howto:'1. ਇਸ ਖਾਤੇ ਦਾ ਲਿੰਕ ਕਾਪੀ ਕਰਨ ਲਈ ਕਾਪੀ \'ਤੇ ਕਲਿੱਕ ਕਰੋ।\n2. ਕਿਸੇ ਹੋਰ ਬ੍ਰਾਊਜ਼ਰ ਜਾਂ ਡਿਵਾਈਸ \'ਤੇ — ਜਾਂ ਕਿਸੇ ਦੋਸਤ ਨਾਲ — MES ਖੋਲ੍ਹੋ।\n3. ਆਯਾਤ \'ਤੇ ਕਲਿੱਕ ਕਰਕੇ ਲਿੰਕ ਪੇਸਟ ਕਰੋ।',
sh_movement:'ਹਰਕਤ',
sh_defense:'ਰੱਖਿਆ',
sh_camera:'ਕੈਮਰਾ',
sh_overlays:'ਓਵਰਲੇ',
sh_behaviour:'ਵਿਵਹਾਰ',
sh_buttons:'ਬਟਨ',
sh_language:'ਭਾਸ਼ਾ',
sh_chat:'ਚੈਟ',
sh_waves:'Waves',
sh_steal_a_pet:'ਪਾਲਤੂ ਜਾਨਵਰ ਚੋਰੀ ਕਰੋ',
sh_tower:'Tower',
sh_misc_multi:'ਹੋਰ (ਮਲਟੀ-ਮੋਡ)',
s_noclip:'ਕੰਧ ਵਿੱਚੋਂ ਲੰਘੋ',
s_fly:'ਉੱਡਣਾ',
s_fly_emotes:'ਉਡਾਣ ਇਮੋਟ',
s_base_speed:'ਬੇਸ ਸਪੀਡ',
s_jump_mult:'ਛਾਲ ਦੀ ਉਚਾਈ',
s_grav_mult:'ਗੰਭੀਰਤਾ',
s_walk_up_walls:'ਵਾਕ ਅੱਪ ਕੰਧ',
s_carry_normalize:'ਕੈਰੀ ਸਪੀਡ + ਜੰਪ',
s_invincibility:'ਅਜੇਤੂ',
s_anti_kb:'ਐਂਟੀ-ਨੌਕਬੈਕ',
s_invisible:'ਅਦਿੱਖ',
s_xray_infection:'ਐਕਸ-ਰੇ (ਮਰਡਰ ਮਿਸਟਰੀ)',
s_ghost_mode:'ਭੂਤ ਮੋਡ',
s_flee_intruder:'ਘੁਸਪੈਠੀਏ \'ਤੇ ਭੱਜੋ',
s_first_person:'ਪਹਿਲਾ-ਵਿਅਕਤੀ ਦ੍ਰਿਸ਼',
s_fov_first_person:'FOV (ਪਹਿਲਾ)',
s_fov_third_person:'FOV (ਤੀਜਾ)',
s_fov_vertical_mult:'FOV ਵਰਟੀਕਲ ਗੁਣਕ',
s_auto_lock:'ਬੇਸ ਆਟੋ-ਲੌਕ',
s_auto_fountain:'ਆਟੋ-ਫਾਊਂਟੇਨ (1.5×)',
s_daily_coins:'ਰੋਜ਼ਾਨਾ ਸਿੱਕੇ',
s_stars:'ਤਾਰੇ',
s_diamonds_tower:'ਹੀਰੇ (ਟਾਵਰ)',
s_tower_loop:'ਟਾਵਰ ਲੂਪ',
s_auto_roll_x25:'ਆਟੋ ਰੋਲ x25 ਕਿਸਮਤ',
s_auto_craft:'ਆਟੋ-ਕ੍ਰਾਫਟ',
s_auto_vip_sword:'ਆਟੋ VIP ਖਰੀਦੋ',
s_auto_vip_waves:'ਆਟੋ VIP ਖਰੀਦੋ (ਲਹਿਰਾਂ)',
s_direct_kill:'ਸਿੱਧਾ ਕਿੱਲ ਸਪੈਮ',
s_direct_kill_rate:'ਕਿੱਲ ਦਰ',
s_auto_buy_upgrades:'ਆਟੋ ਬਾਇ ਅੱਪਗਰੇਡ',
s_boost_coins:'ਆਟੋ ਅੱਪਗਰੇਡ: ਸਿੱਕੇ',
s_boost_diamonds:'ਆਟੋ ਅੱਪਗਰੇਡ: ਹੀਰੇ',
s_boost_luck:'ਆਟੋ ਅੱਪਗਰੇਡ: ਕਿਸਮਤ',
s_auto_unlock_areas:'ਆਟੋ ਅਨਲੌਕ ਖੇਤਰ',
s_auto_rebirth:'ਆਟੋ ਪੁਨਰ ਜਨਮ',
s_auto_join_tp:'ਸਭ ਤੋਂ ਉੱਚੇ ਖੇਤਰ ਲਈ ਟੈਲੀਪੋਰਟ',
s_hide_kill_rewards:'ਕਿੱਲ ਇਨਾਮਾਂ ਨੂੰ ਲੁਕਾਓ',
s_hide_roll_anim:'ਰੋਲ ਐਨੀਮੇਸ਼ਨ ਲੁਕਾਓ',
rng_title:'ਪਾਲਤੂ ਜਾਨਵਰ RNG ਲੁਟੇਰਾ',
rng_sec_rolling:'ਰੋਲਿੰਗ',
rng_sec_crafting:'ਸ਼ਿਲਪਕਾਰੀ',
rng_sec_combat:'ਲੜਾਈ',
rng_sec_upgrades:'ਅੱਪਗਰੇਡ',
rng_sec_areas:'ਖੇਤਰ',
rng_actions:'ਕਾਰਵਾਈਆਂ',
log_craft:'ਕਰਾਫਟ',
log_success:'ਸਫਲਤਾ',
log_fail:'ਫੇਲ',
log_unlocking_area:'ਅਨਲੌਕਿੰਗ ਖੇਤਰ',
log_area_unlocked:'ਖੇਤਰ ਅਨਲੌਕ ਕੀਤਾ ਗਿਆ',
log_equipped:'ਲੈਸ',
log_bought_upgrade:'ਅੱਪਗਰੇਡ ਖਰੀਦਿਆ',
log_teleported_to:'ਨੂੰ ਟੈਲੀਪੋਰਟ ਕੀਤਾ ਗਿਆ',
log_rebirthing:'ਪੁਨਰ ਜਨਮ',
h_rng:'rng',
h_accts:'ਖਾਤੇ',
s_auto_collect:'ਕਮਾਈ ਆਟੋ-ਇਕੱਠੀ',
s_collect_interval:'ਇਕੱਠਾ ਕਰਨ ਦਾ ਅੰਤਰਾਲ',
s_chat_fade:'ਚੈਟ ਫੇਡ ਟਾਈਮ',
s_name_colors:'ਵਰਤੋਂਕਾਰ ਨਾਮ ਰੰਗ',
s_chat_enhance:'ਚੈਟ ਸੁਧਾਰ',
mes_hint:'ਸੁਝਾਅ: ਆਪਣੇ ਯੂਜ਼ਰਨੇਮ ਵਿੱਚ "mes" ਸ਼ਾਮਲ ਕਰੋ, ਇੱਕ ਸਤਰੰਗੀ ਪੀਂਘ ਐਨੀਮੇਟਿਡ ਪ੍ਰਭਾਵ ਲਈ!',
s_carry_tune:'ਕੈਰੀ ਟਿਊਨ (ਚੋਰੀ)',
s_pet_pickup_radius:'ਜਾਨਵਰ ਚੋਰੀ ਦੂਰੀ',
s_carry_vol:'ਕੈਰੀ ਵੌਲਿਊਮ',
carry_tune_default:'ਮੂਲ',
carry_tune_silent:'ਚੁੱਪ',
carry_tune_ambient:'ਐਂਬੀਐਂਟ',
carry_tune_blues:'ਬਲੂਜ਼',
carry_tune_chiptune:'ਚਿੱਪਟਿਊਨ',
carry_tune_classical:'ਕਲਾਸੀਕਲ',
carry_tune_electronic:'ਇਲੈਕਟ੍ਰੋਨਿਕ',
carry_tune_epic:'ਮਹਾਂਕਾਵਿ',
carry_tune_folk:'ਲੋਕ',
carry_tune_funk:'ਫੰਕ',
carry_tune_jazz:'ਜੈਜ਼',
carry_tune_lofi:'ਲੋ-ਫਾਈ',
carry_tune_metal:'ਮੈਟਲ',
carry_tune_pop:'ਪੌਪ',
carry_tune_punk:'ਪੰਕ',
carry_tune_reggae:'ਰੇਗੇ',
carry_tune_rock:'ਰੌਕ',
s_cont_cuddle:'ਲਗਾਤਾਰ ਗਲਵੱਕੜੀ',
s_protips:'ਪ੍ਰੋ ਸੁਝਾਅ',
s_hideprotips:'ਮੇਰੇ ਪ੍ਰੋ ਸੁਝਾਅ ਛੁਪਾਓ',
s_show_exp_modes:'ਪ੍ਰਯੋਗਾਤਮਕ ਮੋਡ ਦਿਖਾਓ',
s_showcoords:'ਨਿਰਦੇਸ਼ਾਂਕ ਦਿਖਾਓ',
s_showfps:'FPS ਦਿਖਾਓ',
s_showtargetinfo:'ਨਿਸ਼ਾਨਾ ਜਾਣਕਾਰੀ ਦਿਖਾਓ',
s_showobj:'ਹਸਤੀ / ਜਾਲ ਗਿਣਤੀ ਦਿਖਾਓ',
s_copy_dbg:'ਕਾਪੀ ਕਰੋ',
s_copy_json:'JSON ਕਾਪੀ ਕਰੋ',
s_clear_dbg:'ਸਾਫ਼ ਕਰੋ',
h_fly:'ਉਡਾਣ',
h_speed:'ਸਪੀਡ ਹੈਕ',
h_waypoints:'ਵੇਪੁਆਇੰਟ',
h_autolock:'ਆਟੋ-ਲੌਕ',
h_invisible:'ਅਦਿੱਖ',
h_cuddle:'ਗਲਵੱਕੜੀ',
h_pets:'ਪਾਲਤੂ',
h_snipe:'ਸਨਾਈਪਰ',
h_help:'ਮਦਦ',
h_settings:'ਸੈਟਿੰਗਾਂ',
h_prv:'ਨਿੱਜੀ ਕਮਰਾ',
h_tc:'ਟਾਵਰ ਪੂਰਾ ਕਰੋ',
h_tcl:'ਟਾਵਰ ਲੂਪ',
kb_fly:'ਉਡਾਣ (ਟੌਗਲ/ਉੱਪਰ)',
kb_fly_down:'ਉਡਾਣ ਥੱਲੇ',
kb_set_home:'ਘਰ ਸੈੱਟ ਕਰੋ',
kb_home:'ਘਰ',
kb_back:'ਪਿੱਛੇ',
kb_cuddle:'ਗਲਵੱਕੜੀ ਪੈਨਲ',
kb_settings:'ਸੈਟਿੰਗਾਂ',
kb_pets:'ਪਾਲਤੂ ਬ੍ਰਾਊਜ਼ਰ',
kb_slots:'ਵੇਪੁਆਇੰਟ ਸਲੌਟ',
kb_snipe:'ਸਨਾਈਪਰ ਪੈਨਲ',
kb_snipe_toggle:'ਸਨਾਈਪਰ ਚਾਲੂ/ਬੰਦ',
kb_attack:'ਹਮਲਾ',
kb_help:'ਮਦਦ / ਵੇਰਵਾ',
kb_tower:'ਟਾਵਰ ਪੂਰਾ ਕਰੋ',
kb_tower_loop:'ਟਾਵਰ ਲੂਪ',
kb_invisible:'ਅਦਿੱਖ',
kb_first_person:'ਪਹਿਲਾ-ਵਿਅਕਤੀ',
kb_autolock:'ਆਟੋ-ਲਾਕ ਬੇਸ',
kb_prv:'ਨਿੱਜੀ ਕਮਰਾ',
kb_rng:'RNG',
kb_accts:'ਖਾਤੇ',
pets_title:'ਪਾਲਤੂ',
pets_search_placeholder:'ਜਿਵੇਂ ਕਿ ਜੰਗਲੀ ਕਿਟੀ, ਸੁਨਹਿਰੀ ਜਾਂ ਹੀਰਾ, (ਸੁਨਹਿਰੀ ਜਾਂ ਪੰਨਾ) ਜੰਗਲੀ',
pets_hint:'ਸ਼ਬਦ AND ਨਾਲ ਜੁੜਦੇ ਹਨ। ਵਿਕਲਪਾਂ ਲਈ OR, ਗਰੁੱਪ ਕਰਨ ਲਈ ਬਰੈਕਟ। * ਜਾਂ % ਵਾਈਲਡਕਾਰਡ। ਕਿਸੇ ਸ਼ਬਦ ਨੂੰ ਬਾਹਰ ਕੱਢਣ ਲਈ ਉਸ ਤੋਂ ਪਹਿਲਾਂ - ਲਗਾਓ।',
pets_empty:'ਇਸ ਕਮਰੇ ਵਿੱਚ ਕੋਈ ਪਾਲਤੂ ਨਹੀਂ ਮਿਲਿਆ',
pt_name:'ਨਾਮ',
pt_mut:'ਤਬਦੀਲੀ',
pt_rar:'ਦੁਰਲੱਭਤਾ',
pt_owner:'ਮਾਲਕ',
pt_worth:'ਕੀਮਤ',
pt_income:'ਆਮਦਨ/ਸ',
pt_dist:'ਦੂਰੀ',
slots_title:'ਵੇਪੁਆਇੰਟ ਸਲੌਟ',
sniper_title:'ਪਾਲਤੂ ਸਨਾਈਪਰ',
sniper_tbl_pet:'ਪਾਲਤੂ',
sniper_tbl_owner:'ਮਾਲਕ',
sniper_tbl_lock:'ਤਾਲਾ',
sniper_placeholder:'ਉਦਾ: halo, ਸੁਨਹਿਰਾ OR ਹੀਰਾ, ਪੰਨਾ ਡ੍ਰੈਗਨ',
sniper_hint:'ਸ਼ਬਦ AND ਨਾਲ ਜੁੜਦੇ ਹਨ। ਵਿਕਲਪਾਂ ਲਈ OR, ਗਰੁੱਪ ਕਰਨ ਲਈ ਬਰੈਕਟ। * ਜਾਂ % ਵਾਈਲਡਕਾਰਡ। ਕਿਸੇ ਸ਼ਬਦ ਨੂੰ ਬਾਹਰ ਕੱਢਣ ਲਈ ਉਸ ਤੋਂ ਪਹਿਲਾਂ - ਲਗਾਓ।',
sniper_room_col:'ਕਮਰਾ',
sniper_scans_col:'ਸਕੈਨ',
sniper_top_pet_col:'ਚੋਟੀ ਦੇ ਪੇਟ',
sniper_top_worth_col:'ਚੋਟੀ ਦੇ ਮੁੱਲ',
sniper_top_owner_col:'ਚੋਟੀ ਦਾ ਮਾਲਕ',
sniper_age_col:'ਉਮਰ',
sniper_join_btn:'ਸ਼ਾਮਲ ਹੋਵੋ',
sniper_full:'ਭਰਿਆ',
sniper_join_failed:'ਨਿਸ਼ਾਨਾ ਕਮਰਾ ਭਰਿਆ ਹੋਇਆ ਹੈ',
sniper_scanning_rooms:'ਦੂਜੇ ਕਮਰੇ ਲੱਭ ਰਹੇ ਹਨ…',
sniper_scan_off:'ਆਟੋ ਸ਼ਿਕਾਰ ਬੰਦ',
sniper_scan_next:'ਅੱਗੇ ਸਕੈਨ ਕਰੋ',
sniper_scan_idle:'ਨਿਸ਼ਕਿਰਿਆ — ਸਕੈਨ ਕਰਨ ਲਈ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ',
sniper_auto_place:'ਬੇਸ ਤੇ ਆਟੋ-ਰੱਖੋ',
sniper_place_desc:'(ਚੋਰੀ ਕੀਤੇ ਜਾਨਵਰ ਨੂੰ ਤੁਹਾਡੇ ਬੇਸ ਸਲੌਟ ਵਿੱਚ ਰੱਖਦਾ ਹੈ)',
sniper_auto_drop:'ਲਹਿਰਾਂ ਵਿੱਚ ਨਾ ਮਿਲਦੇ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਨੂੰ ਆਟੋ-ਡ੍ਰੌਪ ਕਰੋ',
sniper_drop_desc:'(ਫਿਲਟਰ ਨਾਲ ਮੇਲ ਨਾ ਖਾਂਦੇ ਜੰਗਲੀ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਨੂੰ ਡ੍ਰੌਪ ਕਰਕੇ ਸਪੌਨ ਪੂਲ ਨੂੰ ਤਾਜ਼ਾ ਕਰਦਾ ਹੈ)',
sniper_auto_hunt:'ਆਟੋ ਸ਼ਿਕਾਰ',
sniper_hunt_desc:'(ਦੂਜੇ ਕਮਰੇ ਸਕੈਨ ਕਰੋ ਅਤੇ ਸਭ ਤੋਂ ਵਧੀਆ ਮੈਚ ਤੇ ਜਾਓ)',
sniper_auto_sell:'ਚੋਰੀ ਵਿੱਚ ਆਟੋ-ਵੇਚੋ',
sniper_sell_desc:'(ਬੇਸ ਭਰਿਆ ਹੋਣ ਤੇ ਸਭ ਤੋਂ ਘੱਟ ਵੇਚੋ)',
sniper_lockdown:'ਲੌਕ ≤',
sniper_lockdown_hint:'ਬੇਸਾਂ ਵਿੱਚ ≤ ਇਸ ਬਾਕੀ ਸਮੇਂ ਵਾਲੇ ਚੋਰੀ ਟੀਚੇ। 0 = ਸਿਰਫ਼ ਅਨਲੌਕ।',
sniper_join_grace:'ਕਿਰਪਾ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ',
sniper_start:'ਸਨਾਈਪਰ ਸ਼ੁਰੂ',
sniper_stop:'ਸਨਾਈਪਰ ਬੰਦ',
sniper_idle:'ਵਿਹਲਾ',
sniper_no_filter:'ਕੋਈ ਫਿਲਟਰ ਸੈੱਟ ਨਹੀਂ',
sniper_waiting:'ਮੈਚ ਦੀ ਉਡੀਕ...',
sniper_hold_pause:'ਪਾਲਤੂ ਫੜਿਆ — ਰੁਕਿਆ',
sniper_stolen_pause:'ਸਾਡਾ ਪਾਲਤੂ ਚੋਰੀ ਹੋਇਆ — ਰੁਕਿਆ',
sniper_cooldown:'ਕੂਲਡਾਊਨ',
sniper_hopping:'ਸਰਵਰ ਬਦਲ ਰਿਹਾ...',
sniper_na:'ਲੌਬੀ ਵਿੱਚ ਸਨਾਈਪਰ ਉਪਲਬਧ ਨਹੀਂ — ਪਹਿਲਾਂ ਮੈਚ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ',
sniper_wait_lock:'ਲੌਕ ਡਾਟਾ ਦੀ ਉਡੀਕ...',
sniper_locked:'ਬੇਸ ਲੌਕ ਹੈ — ਛੱਡ ਰਿਹਾ...',
sniper_full_eggs:'ਬੇਸ ਭਰਿਆ — ਸਿਰਫ਼ ਅੰਡੇ, ਵੇਚ ਨਹੀਂ ਸਕਦੇ',
sniper_stealing:'ਚੋਰੀ ਜਾਰੀ',
sniper_dropped:'ਛੱਡਿਆ',
sniper_holding:'ਫੜਿਆ',
sniper_place:'! ਬੇਸ ਤੇ ਰੱਖੋ।',
sniper_steal_mode:'[ਚੋਰੀ]',
sniper_theft_nohop:'ਪਾਲਤੂ ਚੋਰੀ ਹੋ ਰਿਹਾ:',
sniper_nohop_suffix:'— ਹੌਪ ਨਹੀਂ',
sniper_sniping:'ਸਨਾਈਪਿੰਗ:',
sniper_options:'ਵਿਕਲਪ',
sniper_drop_fail_status:'ਛੱਡਣਾ ਅਸਫ਼ਲ!',
sniper_hotkey_label:'ਹੌਟਕੀ:',
sniper_panel_label:'ਪੈਨਲ:',
sniper_grab_fail:'ਫੜਨਾ ਅਸਫ਼ਲ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼...',
sniper_our_pet_stolen:'ਸਾਡਾ ਪਾਲਤੂ ਚੋਰੀ ਹੋਇਆ — 8 ਸਕਿੰਟ ਕੂਲਡਾਊਨ',
sniper_hopping_short:'ਹੌਪ ਹੋ ਰਿਹਾ...',
sniper_base_full:'ਅਧਾਰ ਪੂਰਾ',
mobile_up:'▲',
mobile_down:'▼',
mobile_sprint:'ਸਪ੍ਰਿੰਟ',
pet_teleport_title:'ਟੈਲੀਪੋਰਟ',
pet_pickup_title:'ਚੁੱਕਣਾ',
owner_yours:'ਤੁਹਾਡਾ',
owner_wild:'ਜੰਗਲੀ',
footer_gf:'ਗ੍ਰੇਸੀ ਫੋਰਕ',
copy_ok:'ਕਾਪੀ ਕੀਤਾ',
copy_failed:'ਕਾਪੀ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ',
s_invis_on_fly:'ਉੱਡਦੇ ਸਮੇਂ ਅਦਿੱਖ',
snipe_walk_home:'ਚੋਰੀ ਕਰਨ ਤੋਂ ਬਾਅਦ ਘਰ ਤੁਰੋ',
snipe_walk_home_desc:'ਆਪਣੇ ਬੇਸ ਵੱਲ ਵਾਪਸ ਤੁਰੋ',
sniper_afk_sell:'AFK ਬੇਮੇਲ ਪਾਲਤੂ ਜਾਨਵਰ ਵੇਚੋ',
sniper_afk_sell_desc:'(ਜਦੋਂ ਨਿਸ਼ਕਿਰਿਆ 5 ਸਕਿੰਟ, ਫਿਲਟਰ ਨਾਲ ਮੇਲ ਨਾ ਖਾਂਦੇ ਜਾਨਵਰਾਂ ਨੂੰ ਮੁੱਲ ਅਨੁਸਾਰ ਵੇਚੋ — ਸਿਰਫ ਲਹਿਰਾਂ)',
hb_fly:'ਉੱਡ',
hb_lck:'ਲਾਕ',
hb_inv:'ਗਾਇਬ',
hb_cud:'ਜੱਫੀ',
hb_pet:'ਪਾਲਤ',
hb_snp:'ਨਿਸ਼ਾ',
hb_cfg:'ਸੈਟਿ',
hb_help:'?',
hb_rng:'RNG',
hb_accts:'ਖਾਤਾ',
ban_title:'ਕਨੈਕਸ਼ਨ ਬਲੌਕ ਕੀਤਾ ਗਿਆ',
ban_sub:'ਤੁਹਾਡਾ IP ਪਤਾ Meeland ਦੁਆਰਾ ਪ੍ਰਤਿਬੰਧਿਤ ਕੀਤਾ ਗਿਆ ਹੈ',
ban_body:'ਚਿੰਤਾ ਨਾ ਕਰੋ — ਇਹ ਠੀਕ ਕਰਨਾ ਆਸਾਨ ਹੈ! ਮੁਫ਼ਤ VPN ਤੁਹਾਨੂੰ ਨਵਾਂ IP ਦੇਵੇਗੀ ਤਾਂ ਜੋ ਤੁਸੀਂ ਦੁਬਾਰਾ ਖੇਡ ਸਕੋ।',
ban_pick:'ਤੁਰੰਤ ਹੱਲ — ਕੋਈ ਇੱਕ ਚੁਣੋ:',
ban_warp:'ਮੁਫ਼ਤ, ਅਸੀਮਤ, ਇੱਕ-ਕਲਿੱਕ ਸੈੱਟਅੱਪ',
ban_warp_store:'App Store ਅਤੇ Play Store ਵਿੱਚ "1.1.1.1"',
ban_proton:'ਕੋਈ ਡੇਟਾ ਸੀਮਾ ਨਹੀਂ, 5 ਦੇਸ਼',
ban_steps:'ਇੰਸਟਾਲ ਕਰੋ → ਕਨੈਕਟ ਕਰੋ → ਇਸ ਪੰਨੇ ਨੂੰ ਤਾਜ਼ਾ ਕਰੋ। ਇਹ ਹੀ ਗੱਲ ਹੈ!',
ban_ok:'ਮਿਲ ਗਿਆ',
warn_title:'ਹਮੇਸ਼ਾ ਇੱਕ VPN ਦੀ ਵਰਤੋਂ ਕਰੋ',
warn_body:'ਹਮੇਸ਼ਾ <b>VPN</b> ਚਾਲੂ ਰੱਖ ਕੇ ਖੇਡੋ।',
warn_ok:'ਸਮਝ ਗਿਆ, ਮੈਂ ਸਮਝਦਾ ਹਾਂ',
loading:'ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ',
tcl_loading:'ਪੂਰਾ ਟਾਵਰ ਲੂਪ ਚੱਲ ਰਿਹਾ ਹੈ। ਰੋਕਣ ਲਈ {key} ਦਬਾਓ।',
hop_search:'ਮੈਚ ਲੱਭ ਰਿਹਾ ਹੈ',
hop_match:'{name} ਲੱਭਿਆ — ਜੁੜ ਰਿਹਾ ਹੈ',
hop_flee:'ਘੁਸਪੈਠੀਏ ਤੋਂ ਭੱਜ ਰਿਹਾ ਹੈ',
hop_reconnect:'ਦੁਬਾਰਾ ਜੁੜ ਰਿਹਾ ਹੈ',
hop_reload:'ਦੁਬਾਰਾ ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ',
hop_fall:'ਡਿੱਗਣ ਤੋਂ ਠੀਕ ਹੋ ਰਿਹਾ ਹੈ',
hop_join:'ਕਮਰੇ ਵਿੱਚ ਜੁੜ ਰਿਹਾ ਹੈ',
lock_off:'ਬੰਦ',
lock_unlocked:'ਅਨਲੌਕ ਕੀਤਾ',
desc_intro:'MES ਤੁਹਾਨੂੰ ਮੀਲੈਂਡ ਵਿੱਚ ਵਾਲਹੈਕ, ਆਟੋ-ਫਾਰਮਿੰਗ, ਦੁਰਲੱਭ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦਾ ਸੰਗ੍ਰਹਿ, ਸਪੀਡ ਬੂਸਟ, ਫਲਾਈਟ, ਅਦਿੱਖਤਾ, ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਦਿੰਦਾ ਹੈ',
desc_free:'100% ਮੁਫ਼ਤ, ਹਮੇਸ਼ਾ। ਫੀਡਬੈਕ ਹੈ? ⭐ ਚੰਗੀ ਸਮੀਖਿਆ ਦਿਓ — ਇਹੀ ਅੱਪਡੇਟ ਜਾਰੀ ਰੱਖਦਾ ਹੈ।',
desc_h_movement:'ਮੂਵਮੈਂਟ',
desc_h_combat:'ਲੜਾਈ',
desc_h_tuning:'ਟਿਊਨਿੰਗ',
desc_h_pets:'ਪਾਲਤੂ & ਚੋਰੀ',
desc_h_economy:'ਅਰਥਵਿਵਸਥਾ',
desc_h_custom:'ਅਨੁਕੂਲਨ',
desc_h_extras:'ਵਾਧੂ',
desc_fly:'ਉਡਾਣ',
desc_fly_d:'Space ਉੱਪਰ, F ਥੱਲੇ। ਸਪੀਡ ਐਡਜਸਟ ਹੋ ਸਕਦੀ।',
desc_speed:'ਬਲਿੰਕ',
desc_speed_d:'Shift ਤੁਰੰਤ ਟੈਲੀਪੋਰਟ।',
desc_noclip:'ਕੰਧ ਵਿੱਚੋਂ ਲੰਘੋ',
desc_noclip_d:'ਕੰਧਾਂ ਵਿੱਚੋਂ ਲੰਘੋ।',
desc_walls:'ਕੰਧਾਂ \'ਤੇ ਚੱਲੋ',
desc_walls_d:'ਕਿਸੇ ਵੀ ਸਤ੍ਹਾ \'ਤੇ ਚੜ੍ਹੋ।',
desc_waypts:'ਵੇਪੁਆਇੰਟ',
desc_waypts_d:'10 ਥਾਵਾਂ ਸੇਵ ਕਰੋ। ਇੱਕ-ਕੁੰਜੀ ਟੈਲੀਪੋਰਟ। <kbd>Z</kbd> ਟੌਗਲ।',
desc_invis:'ਅਦਿੱਖ',
desc_invis_d:'ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਦਿੱਖ ਹੋਣ ਲਈ CapsLock ਦਬਾਓ।',
desc_fpv:'FPV',
desc_fpv_d:'ਪਹਿਲੇ ਵਿਅਕਤੀ ਕੈਮਰੇ \'ਤੇ ਸਵਿਚ ਕਰਨ ਲਈ <kbd>.</kbd> ਦਬਾਓ।',
desc_anti_invis:'ਐਂਟੀ-ਅਦਿੱਖਤਾ',
desc_anti_invis_d:'ਅਦਿੱਖ ਖਿਡਾਰੀਆਂ ਨੂੰ ਭੂਤ ਵਾਂਗ ਦੇਖੋ।',
desc_xray:'ਐਕਸ-ਰੇ ਵਿਜਨ',
desc_xray_d:'ਮਰਡਰ ਮਿਸਟਰੀ ਵਿੱਚ ਕੰਧਾਂ ਰਾਹੀਂ ਖਿਡਾਡ਼ੀਆਂ ਨੂੰ ਦੇਖੋ। ਲਾਲ = ਕਤਿਲ, ਹਰਾ = ਨਾਗਰਿਕ।',
desc_nodeathh:'ਅਮਰ',
desc_nodeath_d:'ਸਾਰੇ ਨੁਕਸਾਨ ਤੋਂ ਸੁਰੱਖਿਅਤ।',
desc_antikb:'ਐਂਟੀ-ਨੌਕਬੈਕ',
desc_antikb_d:'ਧੱਕਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।',
desc_attack:'ਤੁਰੰਤ ਹਮਲਾ',
desc_attack_d:'<kbd>G</kbd> ਨਜ਼ਦੀਕੀ ਖਿਡਾਰੀ ਕੋਲ ਟੈਲੀਪੋਰਟ ਕਰਕੇ ਮਾਰਦਾ ਹੈ।',
desc_jumpgrav:'ਛਾਲ ਅਤੇ ਗੁਰੂਤਾ',
desc_jumpgrav_d:'ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਅਡਜਸਟੇਬਲ ਮਲਟੀਪਲਾਇਰ।',
desc_fov:'FOV ਕੰਟਰੋਲ',
desc_fov_d:'ਪਹਿਲੇ-ਵਿਅਕਤੀ ਅਤੇ ਤੀਜੇ-ਵਿਅਕਤੀ FOV ਸਲਾਈਡਰ।',
desc_autoinvis:'ਉਡਾਣ \'ਤੇ ਆਟੋ-ਅਦਿੱਖ',
desc_autoinvis_d:'ਉੱਡਣ ਦੌਰਾਨ ਆਪਣੇ ਆਪ ਅਦਿੱਖ ਹੋ ਜਾਓ।',
desc_sniper:'ਪਾਲਤੂ ਸਨਾਈਪਰ',
desc_sniper_d:'ਫ਼ਿਲਟਰ ਕੀਤੇ ਪਾਲਤੂ ਜਾਨਵਰਾਂ ਦੀ ਆਟੋ-ਚੋਰੀ। ਦੋਵੇਂ ਮੋਡ।',
desc_prv:'ਨਿੱਜੀ ਕਮਰਾ',
desc_prv_d:'<kbd>PgDn</kbd> ਮੌਜੂਦਾ ਮੋਡ ਵਿੱਚ ਨਿੱਜੀ ਕਮਰਾ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਆਪਣੇ ਆਪ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।',
desc_petbrow:'ਪਾਲਤੂ ਬ੍ਰਾਊਜ਼ਰ',
desc_petbrow_d:'<kbd>K</kbd> ਸਾਰੇ ਪਾਲਤੂ ਦਿਖਾਉਂਦਾ। ਛਾਂਟੋ, ਫ਼ਿਲਟਰ, ਫੜੋ।',
desc_cuddle:'ਗਲਵੱਕੜੀ ਪੈਨਲ',
desc_cuddle_d:'<kbd>J</kbd> ਦੂਰੀ ਅਨੁਸਾਰ ਖਿਡਾਰੀ। ਫਾਲੋ ਕਰਨ ਲਈ ਕਲਿੱਕ।',
desc_return:'ਆਟੋ ਵਾਪਸੀ',
desc_return_d:'ਚੋਰੀ ਤੋਂ ਬਾਅਦ ਘਰ ਟੈਲੀਪੋਰਟ।',
desc_autolock:'ਆਟੋ-ਲੌਕ',
desc_autolock_d:'ਬੇਸ ਹਮੇਸ਼ਾ ਲਾਕ।',
desc_fountain:'ਆਟੋ-ਫਾਊਂਟੇਨ',
desc_fountain_d:'ਸਥਾਈ 1.5× ਮੁਨਾਫ਼ਾ। ਆਟੋ-ਨਵੀਨੀਕਰਨ।',
desc_money:'ਮੁਫ਼ਤ ਪੈਸਾ + ਤਾਰੇ + ਹੀਰੇ',
desc_money_d:'ਇਸ਼ਤਿਹਾਰ ਦੀ ਲੋੜ ਨਹੀਂ।',
desc_collect:'ਆਟੋ-ਇਕੱਠਾ',
desc_collect_d:'ਪਾਲਤੂ ਆਮਦਨ ਹਰ 30 ਸਕਿੰਟ।',
desc_music:'ਕੈਰੀ ਟਿਊਨ',
desc_music_d:'ਚੋਰੀ ਦੌਰਾਨ ਸੰਗੀਤ। 15 ਸ਼ੈਲੀਆਂ।',
desc_chatfade:'ਚੈਟ ਫੇਡ',
desc_chatfade_d:'ਸੁਨੇਹਾ ਦਿੱਖ ਕੰਟਰੋਲ ਕਰੋ। 5–120s।',
desc_emotes:'ਫਲਾਈ ਇਮੋਟਸ',
desc_emotes_d:'ਉੱਡਦੇ ਸਮੇਂ ਬੇਤਰਤੀਬ ਇਮੋਟਸ।',
desc_displays:'ਡਿਸਪਲੇ ਓਵਰਲੇ',
desc_displays_d:'ਕੋਆਰਡੀਨੇਟ, FPS ਕਾਊਂਟਰ ਅਤੇ ਟੀਚੇ ਦੀ ਜਾਣਕਾਰੀ।',
desc_config:'ਸੈਟਿੰਗਾਂ',
desc_config_d:'<kbd>M</kbd> ਫ਼ੀਚਰ, ਕੁੰਜੀਆਂ, ਸਪੀਡ ਟੌਗਲ।',
desc_langs:'60 ਭਾਸ਼ਾਵਾਂ',
desc_langs_d:'ਪੂਰਾ UI ਅਨੁਵਾਦ।',
desc_tower:'ਟਾਵਰ ਪੂਰਾ',
desc_tower_d:'<kbd>Y</kbd> Obby Tower ਤੁਰੰਤ ਜਿੱਤ।',
desc_cats:'ਬਿੱਲੀ ਲੋਡਿੰਗ ਸਕ੍ਰੀਨ',
desc_cats_d:'ਪਿਆਰੀਆਂ ਬਿੱਲੀਆਂ ਲੋਡਿੰਗ ਬਦਲਦੀਆਂ ਹਨ।',
desc_h_install:'ਇੰਸਟਾਲ',
desc_desktop:'ਡੈਸਕਟਾਪ (Chrome, Edge, Firefox, Opera, Brave)',
desc_inst_ext:'<a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a> ਜਾਂ <a href="https://chrome.google.com/webstore/detail/violentmonkey/jinjaccalgkegednnccohejagnlnfdag">Violentmonkey</a> ਲਵੋ',
desc_inst_click:'ਉੱਪਰ ਇੰਸਟਾਲ ਤੇ ਕਲਿੱਕ ਕਰੋ',
desc_inst_open:'ਕੋਈ ਵੀ Meeland ਗੇਮ ਖੋਲ੍ਹੋ — ਬੱਸ ਕੰਮ ਕਰਦਾ',
desc_mobile:'ਮੋਬਾਈਲ (Android)',
desc_mob_ff:'Play Store ਤੋਂ <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox Android</a> ਇੰਸਟਾਲ ਕਰੋ',
desc_mob_addon:'Firefox ਖੋਲ੍ਹੋ → ਮੀਨੂ → ਐਡ-ਆਨ → <strong>Tampermonkey</strong> ਇੰਸਟਾਲ ਕਰੋ',
desc_mob_visit:'Firefox ਵਿੱਚ ਇਹ ਪੇਜ ਖੋਲ੍ਹੋ ਅਤੇ ਇੰਸਟਾਲ ਦਬਾਓ',
desc_mob_play:'Meeland ਖੇਡੋ — ਟੱਚ HUD ਬਟਨ ਆਪਣੇ ਆਪ ਦਿਖਦੇ ਹਨ',
desc_ios:'iOS: Apple ਸਾਰੇ iOS ਬ੍ਰਾਊਜ਼ਰਾਂ (Firefox ਸਮੇਤ) ਵਿੱਚ ਬ੍ਰਾਊਜ਼ਰ ਐਕਸਟੈਂਸ਼ਨ ਬਲੌਕ ਕਰਦਾ ਹੈ। ਡੈਸਕਟਾਪ ਜਾਂ Android ਵਰਤੋ।',
desc_h_privacy:'ਗੋਪਨੀਯਤਾ',
desc_privacy:'ਸਿਰਫ਼ ਕਲਾਈਂਟ-ਸਾਈਡ — ਕੋਈ ਡਾਟਾ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਤੋਂ ਬਾਹਰ ਨਹੀਂ ਜਾਂਦਾ'
});
try {
const _sv = JSON.parse(_dbGet(_K_CFG) || '{}')._lang;
if (_sv && _i18n[_sv]) { _currentLang = _sv; T = _i18n[_sv]; }
else {
const _bf = { zh:'zh-CN','zh-hans':'zh-CN','zh-hant':'zh-TW' };
const _langs = [navigator.language, ...(navigator.languages || [])];
for (const t of _langs) {
const tl = t.toLowerCase();
if (_i18n[tl]) { _currentLang = tl; T = _i18n[tl]; break; }
if (_bf[tl] && _i18n[_bf[tl]]) { _currentLang = _bf[tl]; T = _i18n[_bf[tl]]; break; }
const b = tl.split('-')[0];
if (_bf[b] && _i18n[_bf[b]]) { _currentLang = _bf[b]; T = _i18n[_bf[b]]; break; }
if (_i18n[b]) { _currentLang = b; T = _i18n[b]; break; }
}
}
_applyLangToDOM();
} catch (e) { _log('err','lang detect: '+e.message); }
}, 0);
const STORE_KEY = _K_WP;
const CFG_KEY = _K_CFG;
const _log = () => {};
let isMobile = false;
(function _syncIsMobile() {
if (W.pc && typeof W.pc.isMobile === 'boolean') { isMobile = W.pc.isMobile; return; }
setTimeout(_syncIsMobile, 100);
})();
let FLY_MIN_SPEED = 10;
let TP_FWD_DIST = 5;
let GRAVITY = -18;
let SPEED_DEFAULT = 7;
const _fly = {
active: false,
startTime: 0,
holdTimer: null,
up: false,
down: false,
velY: 0,
};
let _leverKeyHeld = false;
const _FLY_EMOTES = ['Waving','Breakdance','Macarena','Shuffle','Smooth Moves','Techno'];
const slots = new Array(10).fill(null);
let _debugPrevFrameAt = performance.now();
let _debugFps = 0;
let _debugFpsAccumFrames = 0;
let _debugFpsAccumMs = 0;
let homePos = null;
let backPos = null;
let _pendingBaseCapture = false;
let _roomJoinTime = 0;
let _snipeRoomJoinTime = 0;
let _snipeRoomProven = false;
let _joinGraceUntil = 0;
let _targetedHopGrace = 0;
let _shiftNoclipForced = false;
const _cuddle = {
target: null,
active: false,
walking: false,
noclipWasOff: false,
prev: null,
stationaryTicks: 0,
lastRdx: 0,
lastRdz: 1,
lastSnap: 0,
firstOrient: false,
wasRunning: false,
interp: null,
animHooked: false,
idleStopped: false,
firstSnapDone: false,
};
const _feats = {
fly:true, sprint:true, waypoints:true, cuddle:true, cuddleFollow:true,
pets:true, autoLock:true, antiKnockback:true, noclip:false,
freeMoney:true, autoCollect:true, invincible:true, ghostMode:true,
freeStars:true, freeDiamonds:true, autoFountain:true, autoRollX25:true, rollSpamRate:500, autoCraft:true, autoCraftMinPets:150, autoCraftKeepN:8, autoVipSword:true, autoVipWaves:true,
directKill:true, directKillRate:40, autoBoost:true, autoBoostCoins:true, autoBoostDiamonds:true, autoBoostLuck:true,
autoUnlockAreas:true, autoRebirth:false, hideKillRewards:true, hideRoller:true, autoJoinTp:true,
invisible:false, autoInvisOnFly:false, fleeOnIntruder:true, flyEmotes:true, proTips:true, hideProTips:true,
showCoords:false, showFps:false, showTargetInfo:false, showObj:false, jumpMult:1, gravMult:1, walkUpWalls:false, carryNormalize:true, petPickupRadius:3, firstPerson:false, fovFirstPerson:80, fovThirdPerson:55, fovVerticalMult:1.4, showExpModes:false, xrayInfection:true, infectionTrapImmune:true, infectionSlimeImmune:true,
nameColors:true, chatEnhance:true, bgKeepAlive:true, bgKeepAliveFps:60,
towerLoop:false,
};
let _targetInfoText = '';
const _shows = {
invis:true, snipe:true, help:true, settings:true,
fly:true, sprint:isMobile, waypoints:true, autoLock:true, cuddle:false, pets:true, prv:isMobile, rng:true, tc:true, tcl:true, accts:true,
};
let _freeStarsTimer = null;
let _freeDiamondsTimer = null;
let _fountainTimer = null;
let _autoRollX25Timer = null;
let _autoCraftTimer = null;
let _autoVipTimer = null;
let _directKillTimer = null;
let _directKillCredits = [];
let _directKillCoin = null;
let _autoBoostTimer = null;
let _rbManualDeathAt = 0;
let _lastFountainSend = 0;
let _fountainLoggedRoom = false;
let freeMoneyDone = false;
let autoCollectInterval = 30;
let chatFadeTime = 180;
let carryTune = 'lofi';
let carryTuneVol = 50;
const _dbgRing = [];
const _dbgRingMax = 1000;
let _dbgSeq = 0;
const _dbgLevelOk = (e, minLevel) => {
if (!minLevel) return true;
const levels = { debug: 0, info: 1, warn: 2, error: 3 };
return (levels[e.l] ?? 1) >= (levels[minLevel] ?? 0);
};
const _dbgScopeOk = (e, scope) => {
if (!scope) return true;
const want = Array.isArray(scope) ? scope : String(scope).split(',');
for (const s of want) if (s && e.scope === s.trim()) return true;
return false;
};
const _dbgSnapshot = (n, minLevel, scope) => {
const k = Math.max(1, Math.min(500, n | 0 || 50));
return _dbgRing.slice(Math.max(0, _dbgRing.length - k)).filter(e => _dbgLevelOk(e, minLevel) && _dbgScopeOk(e, scope));
};
if (W.__ML_TEST__) Object.defineProperty(W, '_dbgGet', { value: _dbgSnapshot, configurable: true, enumerable: false, writable: true });
const _dbgClear = () => { _dbgRing.length = 0; };
const _dbgLog = (scope, msg, data, level) => {
const entry = { t: Date.now(), scope, msg, l: level || 'info', s: ++_dbgSeq };
if (data != null) entry.data = data;
_dbgRing.push(entry);
if (_dbgRing.length > _dbgRingMax) {
const _excess = _dbgRing.length - _dbgRingMax;
let _dbgCount = 0;
for (const e of _dbgRing) if (e.l === 'debug') _dbgCount++;
if (_dbgCount >= _excess) {
let _removed = 0;
for (let i = 0; i < _dbgRing.length && _removed < _excess; i++) {
if (_dbgRing[i].l === 'debug') { _dbgRing.splice(i, 1); _removed++; i--; }
}
} else {
_dbgRing.splice(0, _dbgRing.length - _dbgRingMax);
}
}
};
let _errHandlersInstalled = false;
function _installErrHandlers() {
if (_errHandlersInstalled) return;
_errHandlersInstalled = true;
window.addEventListener('error', e => {
_dbgLog('console', 'error', { msg: e.message, file: e.filename?.split('/').pop(), line: e.lineno, col: e.colno }, 'error');
});
window.addEventListener('unhandledrejection', e => {
const _em = e.reason?.message || String(e.reason);
if (_em === 'The document is not visible.') return;
_dbgLog('console', 'unhandledrejection', { msg: _em }, 'error');
});
}
const _defaultStealMode = () => ({ filter: 'halo or terminal', active: true, autoDrop: true, autoSell: true, autoHop: true, walkHome: true, lockdownMax: 180, joinGrace: 6, autoPlaceOnBase: true, afkSell: false });
const _defaultWavesMode = () => ({ filter: '(exclusive egg) or terminal', active: true, autoDrop: false, autoSell: true, autoHop: true, lockdownMax: 180, autoPlaceOnBase: true, walkHome: true, joinGrace: 5, afkSell: false });
const _hubSnipeDummy = Object.freeze({ filter: '', active: false, autoDrop: false, autoSell: false, autoHop: false, lockdownMax: 360, joinGrace: 0 });
const snipeCfg = { steal: _defaultStealMode(), waves: _defaultWavesMode() };
let _lastKnownSnipeMode = null;
let _syncSnipePanel = null;
const _pendingSnipeTokens = new Set();
const _autoDropTokens = new Set();
const _AUTO_DROP_TOKEN_CAP = 256;
let _getAllPets = null;
let _triggerSnipeScan = null;
function _markAutoDropped(token) {
if (token == null) return;
const t = String(token);
_autoDropTokens.add(t);
if (_autoDropTokens.size > _AUTO_DROP_TOKEN_CAP) {
let overflow = _autoDropTokens.size - _AUTO_DROP_TOKEN_CAP;
for (const k of _autoDropTokens) {
if (overflow <= 0) break;
_autoDropTokens.delete(k);
overflow--;
}
}
}
function _isAutoDropped(token) {
return token != null && _autoDropTokens.has(String(token));
}
let _cachedSnipeMode = null;
let _cachedSnipeModeTime = 0;
let _snipeModePrev = undefined;
const _snipeModeChangeCbs = [];
function _onSnipeModeChange(cb) { if (typeof cb === 'function') _snipeModeChangeCbs.push(cb); }
const _NULL_MODE_ROOMS = new Set(['TowerParkour', 'Hub', 'Infection', 'Town', 'Replay']);
function _snipeMode() {
const now = Date.now();
if (_cachedSnipeModeTime && now - _cachedSnipeModeTime < 250) return _cachedSnipeMode;
const nm = _getNetworkManager();
const rn = nm?.room?.name;
const gm = nm?.gameMode;
if (rn) setCachedRoomName(rn);
const _realMode = gm || rn;
if (_realMode) _setLastRealGameMode(_realMode);
let _next;
if (_NULL_MODE_ROOMS.has(rn) || _NULL_MODE_ROOMS.has(gm)) {
_next = null;
} else if (rn === 'PetTycoon' || gm === 'PetTycoon') {
_lastKnownSnipeMode = 'steal';
_next = 'steal';
} else if (rn === 'EscapeTsunami' || gm === 'EscapeTsunami') {
_lastKnownSnipeMode = 'waves';
_next = 'waves';
} else {
const bm = _getBasesManager();
if (bm?.activeBases) { _lastKnownSnipeMode = 'steal'; _next = 'steal'; }
else {
const et = _getEscapeTsunami();
if (et && !bm?.activeBases) { _lastKnownSnipeMode = 'waves'; _next = 'waves'; }
else if (_hopInProgress && _lastKnownSnipeMode) { _next = _lastKnownSnipeMode; }
else { _next = null; }
}
}
_cachedSnipeMode = _next;
_cachedSnipeModeTime = now;
if (_snipeModePrev !== undefined && _next !== _snipeModePrev && _snipeModeChangeCbs.length) {
for (let i = 0; i < _snipeModeChangeCbs.length; i++) {
try { _snipeModeChangeCbs[i](_next, _snipeModePrev); } catch (_) {}
}
}
_snipeModePrev = _next;
return _next;
}
const _snipeModeToGame = (m) => m === 'steal' ? 'PetTycoon' : m === 'waves' ? 'EscapeTsunami' : (m === 'Hub' ? null : m);
let _lastRealGameMode = null;
let _hubIntent = false;
try { _lastRealGameMode = _dbGet(_K_LASTMODE) || null; } catch (_) {}
function _markHubIntent() { _hubIntent = true; _dbgLog('room', 'hub-intent', null, 'debug'); }
function _setLastRealGameMode(mode) {
if (!mode || mode === 'Hub') return;
_hubIntent = false;
if (mode === _lastRealGameMode) return;
_lastRealGameMode = mode;
try { _dbSet(_K_LASTMODE, mode); } catch (_) {}
}
function _resolveJoinMode(mode) {
if (!mode) return 'PetTycoon';
if (mode !== 'Hub') return mode;
if (_hubIntent) { _dbgLog('room', 'hub-allowed-intent', null, 'debug'); return 'Hub'; }
try { if (!_dbGet(_K_WARN)) { _dbgLog('room', 'hub-allowed-first', null, 'debug'); return 'Hub'; } } catch (_) {}
const _m = _lastRealGameMode || 'PetTycoon';
_dbgLog('room', 'hub-redirect', { to: _m }, 'warn');
return _m;
}
function _sc() { const m = _snipeMode(); return m ? snipeCfg[m] : _hubSnipeDummy; }
let _snipeCooldown = 0;
function _setSnipeCooldown(ms) {
if (_snipeMode() === 'waves') return;
_snipeCooldown = Date.now() + ms;
}
function _snipeCooldownExtend(ms) {
if (_snipeMode() === 'waves') return;
_snipeCooldown = Math.max(_snipeCooldown || 0, Date.now() + ms);
}
let _snipeWasHolding = false;
let _lastTotalPets = 0;
let _stablePetsTicks = 0;
let _snipeLastMode = null;
let _snipePetActionActive = false;
let _snipeActionStartedAt = 0;
let _snipePreInvis = null;
let _huntPrevInvis = null;
let _huntInvisOff = true;
let _snipeDropInProgress = false;
let _lastGrabTime = 0;
let _lastTriggerSkipLog = 0;
const _usedSlots = new Map();
const _USED_SLOT_TTL = 3000;
const _slotUsed = placeId => {
if (!_usedSlots.has(placeId)) return false;
if (Date.now() - _usedSlots.get(placeId) > _USED_SLOT_TTL) { _usedSlots.delete(placeId); return false; }
return true;
};
const _markSlotUsed = placeId => { _usedSlots.set(placeId, Date.now()); };
let _wavesHoldPlace = false;
let _firstPTC = true;
let _hopInProgress = false;
let _hopLeaveIntentional = false;
let _lastHopSuccessAt = 0;
let _probeInProgress = false;
let _probeStartedAt = 0;
let _lastProbeEnd = 0;
let _rrRecovering = false;
let _probeOriginalRoomId = null;
let _hopStartedAt = 0;
let _hopReason = null;
function _setHopReason(key, detail) {
_hopReason = key ? { key, detail: detail || '', t: Date.now() } : null;
if (key) _dbgLog('room', 'hop-reason', { key, detail: detail || '' }, 'debug');
}
function _persistHopReason(key, detail) {
try { _dbSet(_K_HOPR, JSON.stringify({ key, detail: detail || '', t: Date.now() })); } catch (_) {}
}
let _snipeHopNoMatchStart = 0;
let _snipeLockWaitStart = 0;
let _snipeLockWaitUntil = 0;
let _hopNeedsRelock = false;
let _preSnipePos = null;
let _preSnipeOwner = null;
let _lastStealAt = 0;
function _stopSnipeSearch() {
if (typeof _probeRooms === 'function') {
try { if (_probeRooms.abort) _probeRooms.abort(); } catch (_) {}
try { if (_probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive(); } catch (_) {}
}
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
_probeOriginalRoomId = null;
_snipeHopNoMatchStart = 0;
_snipeLockWaitStart = 0;
_snipeLockWaitUntil = 0;
}
let _modeSwitchAt = 0;
const _MODE_SWITCH_GRACE = 6000;
function _markModeSwitch() {
_modeSwitchAt = Date.now();
_cachedSnipeMode = null;
_cachedSnipeModeTime = 0;
_snipeModePrev = undefined;
}
function _modeSwitchPending() { return _modeSwitchAt !== 0 && Date.now() - _modeSwitchAt < _MODE_SWITCH_GRACE; }
function _abortSnipeActivity() {
_stopSnipeSearch();
if (typeof abortActiveHop === 'function') { try { abortActiveHop(); } catch (_) {} }
}
const _carry = {
forcedInvis: false,
forcedInvisPrev: false,
forcedInvisSuppressed: false,
forcedNoclip: false,
forcedNoclipPrev: false,
};
const _snipe = {
freezeUntil: 0,
freezeStealActive: false,
freezeStartedAt: 0,
};
let _stealRetryTimer = null;
let _stealPollTimer = null;
const _recentlySnipedBases = new Map();
const _baseLockStarts = new Map();
const _baseLockEnd = new Map();
const _baseEntryTimes = new Map();
const _lockAbortSkip = new Map();
const _lockBlockLogged = new Map();
const _lockGraceLogged = new Map();
const _firstSeenByOwner = new Map();
const _baseLastLockedAt = new Map();
const _baseExplicitUnlock = new Set();
const _baseLeftAt = new Map();
const _LOCK_GRACE_MS = 60000;
const _EARLY_UNLOCK_MS = 20000;
const _BASE_LEFT_TTL_MS = 60000;
const autoRefresh = true;
const refreshInterval = 5;
let kbListeningRow = null;
let petFilter = '';
let petCfg = { steal: '', waves: 'wild' };
let petSortCol = 'price';
let petSortDir = -1;
const _petMeta = new WeakMap();
let petAutoRefresh = true;
let petRefreshInterval = 1;
const _ban = {
detected: false,
dialogShown: false,
pending: false,
autoRejoinPending: false,
autoRejoinFails: 0,
autoRejoinLastSuccess: 0,
forceRejoinRoomId: null,
forceRejoinMode: null,
userModeChangeAt: 0,
lastRoomId: null,
};
function _saveBanIp() {
fetch('https://api.ipify.org?format=json')
.then(function(r) { return r.json(); })
.then(function(d) { if (d && d.ip) try { _dbSet(_K_BAN, d.ip); } catch (_) {} })
.catch(function() {});
}
function _syncCoordsOverlay(posOverride) {
const el = _ui?.coords;
if (!el) return;
const parts = [];
const pos = posOverride || getPlayer()?.getPosition?.();
if (_feats.showCoords && pos) parts.push(`${Math.round(pos.x)}, ${Math.round(pos.y)}, ${Math.round(pos.z)}`);
if (_feats.showFps) parts.push(`${Math.max(0, _debugFps | 0)} FPS`);
if (_feats.showObj) {
var root = W.pc?.app?.root;
if (root) {
var meshCount = 0;
var entCount = 0;
root.forEach(function(e) {
entCount++;
if (e.model && e.model.meshInstances) meshCount += e.model.meshInstances.length;
if (e.render && e.render.meshInstances) meshCount += e.render.meshInstances.length;
});
parts.push(entCount + 'e ' + meshCount + 'm');
}
}
if (_feats.showTargetInfo && _targetInfoText) parts.push(_targetInfoText);
const nextText = parts.join('\n');
const nextDisplay = parts.length ? 'block' : 'none';
if (el.textContent !== nextText) el.textContent = nextText;
if (el.style.display !== nextDisplay) el.style.display = nextDisplay;
}
function _showBanVpnDialog() {
if (_ban.dialogShown) return;
_ban.dialogShown = true;
const box = _sr.querySelector('.ml-ban');
if (!box) { _ban.pending = true; _ban.dialogShown = false; return; }
box.classList.add('open');
_dbgLog('ui', 'ban-shown');
}
const _blockedUrls = [
/api\.meeland\.io\/v1\/store\/orders/,
];
const _rawFetch = W.fetch;
{
const _origFetch = _rawFetch;
const _fetchStr = _origFpToString.call(_origFetch);
W.fetch = new Proxy(_origFetch, {
apply(target, thisArg, args) {
const u = typeof args[0] === 'string' ? args[0] : args[0]?.url || '';
if (_blockedUrls.some(rx => rx.test(u))) {
return Promise.resolve(new Response('{}', { status: 200 }));
}
return Reflect.apply(target, thisArg, args);
}
});
_spoofMap.set(W.fetch, _fetchStr);
}
const KEYBINDS = {
fly: 'Space',
flyDown: 'KeyF',
setHome: 'KeyQ',
home: 'Backquote',
back: 'KeyZ',
cuddle: 'KeyJ',
settings: 'KeyM',
pets: 'KeyK',
slots: 'Minus',
help: 'Slash',
snipe: 'KeyU',
attack: 'KeyG',
invisible:'CapsLock',
towerComplete: 'KeyY',
towerLoop: 'Digit7',
snipeToggle: 'BracketLeft',
autolock: 'KeyL',
prv: 'PageDown',
firstPerson: 'Period',
rng: 'KeyN',
acctToggle: 'KeyO',
};
const DEFAULT_KEYBINDS = { ...KEYBINDS };
const _keyLabels = { Slash: '/', Semicolon: ';', Backquote: '`', BracketLeft: '[', BracketRight: ']', Period: '.', Comma: ',', Minus: '-', Equal: '=', Backslash: '\\', Quote: "'", PageDown: 'PgDn', PageUp: 'PgUp', ArrowUp: '\u2191', ArrowDown: '\u2193', ArrowLeft: '\u2190', ArrowRight: '\u2192', Escape: 'Esc', Tab: 'Tab', Enter: '\u23ce', Backspace: '\u232b', Delete: 'Del', NumpadEnter: 'Enter', NumpadDecimal: '.', NumpadAdd: '+', NumpadSubtract: '-', NumpadMultiply: '*', NumpadDivide: '/', IntlBackslash: '\\', CapsLock: 'Caps' };
const _CFG_SCALARS = [
{ key: 'TP_FWD_DIST', get: () => TP_FWD_DIST, set: v => TP_FWD_DIST = v, migrate: { SPRINT_SPEED: v => TP_FWD_DIST = v, SPEED_CAP: v => TP_FWD_DIST = Math.round(v * 0.5) } },
{ key: 'SPEED_DEFAULT', get: () => SPEED_DEFAULT, set: v => SPEED_DEFAULT = v },
{ key: '_lang', get: () => _currentLang, set: v => _currentLang = v },
{ key: 'autoCollectInterval', get: () => autoCollectInterval, set: v => autoCollectInterval = v },
{ key: 'chatFadeTime', get: () => chatFadeTime, set: v => chatFadeTime = v },
{ key: 'carryTune', get: () => carryTune, set: v => carryTune = v },
{ key: 'carryTuneVol', get: () => carryTuneVol, set: v => carryTuneVol = v },
{ key: 'petFilter', get: () => petFilter, set: v => petFilter = v },
{ key: 'petCfg', get: () => petCfg, set: v => { if (v) { if (typeof v.steal === 'string') petCfg.steal = v.steal; if (typeof v.waves === 'string') petCfg.waves = v.waves; } } },
{ key: 'petSortCol', get: () => petSortCol, set: v => petSortCol = v },
{ key: 'petSortDir', get: () => petSortDir, set: v => petSortDir = v },
{ key: 'petAutoRefresh', get: () => petAutoRefresh, set: v => petAutoRefresh = v },
{ key: 'petRefreshInterval', get: () => petRefreshInterval, set: v => petRefreshInterval = Math.max(1, v || 1) },
];
const _CFG_FEAT_MIGRATIONS = {
featCuddleFollow: 'cuddleFollow',
featStalk: 'cuddleFollow',
featAutoLock: 'autoLock',
featAntiKnockback: 'antiKnockback',
featNoclip: 'noclip',
featFreeMoney: 'freeMoney',
featAutoCollect: 'autoCollect',
featInvincible: 'invincible',
featFreeStars: 'freeStars',
featFreeDiamonds: 'freeDiamonds',
featAutoFountain: 'autoFountain',
featInvisible: 'invisible',
featAutoInvisOnFly: 'autoInvisOnFly',
featFlyEmotes: 'flyEmotes',
featProTips: 'proTips',
featCarryNormalize: 'carryNormalize',
};
const _CFG_SHOW_MIGRATIONS = {
showInvisBtn: 'invis', showSnipeBtn: 'snipe', showHelpBtn: 'help',
showFlyBtn: 'fly', showSprintBtn: 'sprint', showWaypointsBtn: 'waypoints',
showAutoLockBtn: 'autoLock', showCuddleBtn: 'cuddle', showPetsBtn: 'pets',
};
const _SNIPE_KEYS = ['filter', 'active', 'autoDrop', 'autoSell', 'autoHop', 'walkHome', 'lockdownMax', 'joinGrace', 'autoPlaceOnBase', 'afkSell'];
function saveSettings() {
try {
const out = {};
for (const e of _CFG_SCALARS) out[e.key] = e.get();
const featsToSave = { ..._feats };
if (_carry.forcedInvis) featsToSave.invisible = _carry.forcedInvisPrev;
if (_carry.forcedNoclip) featsToSave.noclip = _carry.forcedNoclipPrev;
out.feats = featsToSave;
out.shows = { ..._shows };
out.snipeCfg = { steal: { ...snipeCfg.steal }, waves: { ...snipeCfg.waves } };
out.keybinds = { ...KEYBINDS };
out.keyLabels = { ..._keyLabels };
_dbSet(CFG_KEY, JSON.stringify(out));
} catch (e) { _log('err', 'save cfg: ' + e.message); }
}
function loadSettings() {
try {
const raw = _dbGet(CFG_KEY);
if (!raw) return;
const d = JSON.parse(raw);
for (const e of _CFG_SCALARS) {
if (d[e.key] !== undefined) { e.set(d[e.key]); continue; }
if (e.migrate) {
for (const [oldKey, fn] of Object.entries(e.migrate)) {
if (d[oldKey] !== undefined) { fn(d[oldKey]); break; }
}
}
}
for (const [oldKey, newKey] of Object.entries(_CFG_FEAT_MIGRATIONS)) {
if (d[oldKey] !== undefined) _feats[newKey] = d[oldKey];
}
for (const [oldKey, newKey] of Object.entries(_CFG_SHOW_MIGRATIONS)) {
if (d[oldKey] !== undefined) _shows[newKey] = d[oldKey];
}
if (d.feats) Object.assign(_feats, d.feats);
if (d.shows) { for (const k of Object.keys(_shows)) { if (d.shows[k] !== undefined) _shows[k] = d.shows[k]; } }
if (d.snipeCfg) {
for (const mode of ['steal', 'waves']) {
if (d.snipeCfg[mode]) { const src = d.snipeCfg[mode]; for (const k of _SNIPE_KEYS) if (k in src) snipeCfg[mode][k] = src[k]; }
}
} else {
const mig = {};
if (d.snipeFilter !== undefined) mig.filter = d.snipeFilter;
if (d.snipeAutoDrop !== undefined) mig.autoDrop = d.snipeAutoDrop;
if (d.snipeAutoSell !== undefined) mig.autoSell = d.snipeAutoSell;
if (d.snipeLockdownMax !== undefined) mig.lockdownMax = d.snipeLockdownMax;
if (d.snipeActive !== undefined) mig.active = d.snipeActive;
Object.assign(snipeCfg.steal, mig);
Object.assign(snipeCfg.waves, mig);
}
snipeCfg.steal.afkSell = false;
snipeCfg.waves.afkSell = false;
if (snipeCfg.steal.active !== snipeCfg.waves.active) {
const _linkedActive = snipeCfg.steal.active || snipeCfg.waves.active;
snipeCfg.steal.active = _linkedActive;
snipeCfg.waves.active = _linkedActive;
}
if (d.keybinds) Object.assign(KEYBINDS, d.keybinds);
if (d.keyLabels) Object.assign(_keyLabels, d.keyLabels);
_shows.settings = true;
} catch (e) { _log('err', 'load cfg: ' + e.message); }
}
loadSettings();
function _cached(ttl, fn, missTtl = Math.min(ttl, 250)) {
let v = null, t = 0, hasHit = false;
const get = () => {
const n = Date.now();
if (t && n - t < (hasHit ? ttl : missTtl)) return v;
v = fn() || null;
hasHit = v != null;
t = n;
return v;
};
get.clear = () => { v = null; t = 0; hasHit = false; };
return get;
}
let _playerCache = null, _playerCacheTime = 0;
let _cachedRoomName = '';
const getCachedRoomName = () => _cachedRoomName;
const setCachedRoomName = (name) => { _cachedRoomName = name || ''; };
const _pgHolding = () => {
const cn = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
if (cn === 'PetTycoon') return !!_getPetTycoon()?.isHoldingPet;
if (cn === 'EscapeTsunami') return !!_getEscapeTsunami()?.isHoldingPet;
return false;
};
const getPlayer = () => {
const now = Date.now();
if (_playerCacheTime && now - _playerCacheTime < 1000) return _playerCache;
_playerCache = W.pc?.app?.root?.findByName('Player') ?? null;
if (_playerCache) _playerCacheTime = now;
return _playerCache;
};
const getKcc = p => p?.script?.kcc ?? null;
const getPC = p => p?.script?.playerController ?? null;
const _loadGameModeMap = (mode) => new Promise((resolve) => {
const app = W.pc?.app;
const gm = app?.root?.findByName('GameManager')?.script?.gameManager;
const holder = gm?.gameModeHolder;
if (!app || !holder) { _dbgLog('room', 'map-no-holder', { mode }, 'warn'); resolve(false); return; }
let tries = 0;
const attempt = () => {
try {
const kids = holder.children.slice();
for (let i = 0; i < kids.length; i++) {
try { kids[i].destroy(); } catch (_) {}
}
holder.children.length = 0;
} catch (_) {}
const scn = app.scenes?.find?.('Mode_' + (mode || 'PetTycoon'));
if (!scn) { _dbgLog('room', 'map-no-scene', { mode }, 'warn'); resolve(false); return; }
app.scenes.loadSceneHierarchy(scn, (err, root) => {
if (!err && root) { try { root.reparent(holder); } catch (_) {} }
if (holder.children.length > 0) {
_dbgLog('room', 'map-loaded', { mode, tries, children: holder.children.length });
resolve(true);
return;
}
tries++;
if (tries <= 2) {
_dbgLog('room', 'map-retry', { mode, tries, err: !!err }, 'warn');
setTimeout(attempt, 250);
return;
}
_dbgLog('room', 'map-failed', { mode, err: !!err, children: holder.children.length }, 'warn');
resolve(false);
});
};
attempt();
});
const $ = id => _sr && _sr.querySelector('.' + id);
const _pulseFresh = el => {
if (!el) return;
el.classList.add('fresh');
setTimeout(() => el.classList.remove('fresh'), 400);
};
const flash = id => {
const el = $(id);
_pulseFresh(el);
if (_nativeHud) {
const idMap = { 'ml-fly': 'fly', 'ml-invis': 'invis', 'ml-lock': 'lock' };
const k = idMap[id];
if (k) _pulseFresh(_nativeHud[k]);
}
};
const syncSlider = (id, valId, v, uom) => { const el = $(id), ve = $(valId); if (el) el.value = v; if (ve) ve.textContent = uom ? v + uom : v; };
const vec3 = v => ({ x: v.x, y: v.y, z: v.z });
const _rawSend = room => room[_SYM_ORIG] || room.send.bind(room);
const _getRoom = () => { const nm = _getNetworkManager(); const r = nm?.room; if (r?.connection?.isOpen) { setCachedRoomName(r.name); return r; } setCachedRoomName(''); return null; };
const _netGuard = cb => { const r = _getRoom(); if (r) cb(r, _rawSend(r)); };
const _myId = () => _getNetworkManager()?.room?.sessionId || W.pc?.sessionId || null;
const _mutName = (m) => {
if (typeof m === 'number') {
if (m === 2) return 'Golden';
if (m === 3) return 'Diamond';
if (m === 4) return 'Emerald';
if (m === 5) return 'Rainbow';
if (m === 6) return 'Galaxy';
if (m === 10) return 'Hacked';
return '';
}
return (typeof m === 'string' && m !== 'Default') ? m : '';
};
const _throttle = (map, key, now, ms) => {
const last = map.get(key) || 0;
if (now - last < ms) return false;
map.set(key, now);
return true;
};
const _filterMatcher = (() => {
let _raw = null;
let _fn = null;
const _build = (raw) => {
const tokens = raw.match(/\(|\)|AND|OR|[^\s()]+/gi) || [];
function _pOr(i, haystack) {
let [r, j] = _pAnd(i, haystack);
while (j < tokens.length && tokens[j]?.toUpperCase() === 'OR') {
const [r2, j2] = _pAnd(j + 1, haystack);
r = r || r2;
j = j2;
}
return [r, j];
}
function _pAnd(i, haystack) {
let [r, j] = _pAtom(i, haystack);
while (j < tokens.length) {
const up = tokens[j]?.toUpperCase();
if (up === 'AND') { j++; if (j >= tokens.length) break; }
else if (up === 'OR' || tokens[j] === ')') break;
const [r2, j2] = _pAtom(j, haystack);
r = r && r2;
j = j2;
}
return [r, j];
}
function _pAtom(i, haystack) {
if (i >= tokens.length) return [false, i];
if (tokens[i] === '(') {
const [r, j] = _pOr(i + 1, haystack);
return [r, j < tokens.length && tokens[j] === ')' ? j + 1 : j];
}
const t = tokens[i].toLowerCase();
if (t.startsWith('-') && t.length > 1) {
const neg = t.slice(1);
if (neg.includes('*') || neg.includes('%')) {
const parts = neg.split(/[*%]+/).filter(Boolean);
if (parts.length === 0) return [false, i + 1];
let pos = 0;
let all = true;
for (const part of parts) {
const idx = haystack.indexOf(part, pos);
if (idx === -1) { all = false; break; }
pos = idx + part.length;
}
return [!all, i + 1];
}
return [!haystack.includes(neg), i + 1];
}
if (t.includes('*') || t.includes('%')) {
const parts = t.split(/[*%]+/).filter(Boolean);
if (parts.length === 0) return [true, i + 1];
let pos = 0;
for (const part of parts) {
const idx = haystack.indexOf(part, pos);
if (idx === -1) return [false, i + 1];
pos = idx + part.length;
}
return [true, i + 1];
}
return [haystack.includes(t), i + 1];
}
return (haystack) => {
try { return _pOr(0, haystack)[0]; } catch (_) { return haystack.includes(raw.toLowerCase()); }
};
};
return (raw) => {
if (!raw || !raw.trim()) return () => true;
if (_raw !== raw || !_fn) { _raw = raw; _fn = _build(raw); }
return _fn;
};
})();
const requestPointerLockSafe = () => {
try {
const p = document.body.requestPointerLock({ unadjustedMovement: true });
if (p?.catch) p.catch(() => {});
} catch {}
};
const FEAT_IDS = ['ml-f-autolock','ml-f-noclip','ml-f-fly','ml-f-walkupwalls','ml-f-carrynormalize','ml-f-invincible','ml-f-antiknockback','ml-f-freemoney','ml-f-autocollect','ml-f-freestars','ml-f-freediamonds','ml-f-autorollx25','ml-f-autocraft','ml-f-autovipsword','ml-f-autovipwaves','ml-f-directkill','ml-f-autoboost','ml-f-autoboostcoins','ml-f-autoboostdiamonds','ml-f-autoboostluck','ml-f-auto-unlock-areas','ml-f-auto-rebirth','ml-f-hide-rewards','ml-f-hide-roller','ml-f-auto-join-tp','ml-f-ghost','ml-f-flee','ml-f-autofountain','ml-f-invisible','ml-f-xrayinfection','ml-f-autoinvisonfly','ml-f-flyemotes','ml-f-cuddle-follow','ml-f-protips','ml-f-hideprotips','ml-f-firstperson','ml-f-showexpmodes','ml-f-show-invis','ml-f-show-snipe','ml-f-show-help','ml-f-show-cfg','ml-f-show-fly','ml-f-show-sprint','ml-f-show-waypoints','ml-f-show-autolock','ml-f-show-cuddle','ml-f-show-pets','ml-f-show-prv','ml-f-show-rng','ml-f-show-tc','ml-f-show-tcl','ml-f-show-accts','ml-f-showcoords','ml-f-showfps','ml-f-showtargetinfo','ml-f-showobj','ml-f-debuglogs','ml-f-infection-trap-immune','ml-f-infection-slime-immune'];
const MOVE_KEYS = new Set(['KeyW','KeyA','KeyS','KeyD','ArrowUp','ArrowDown','ArrowLeft','ArrowRight']);
const getCamera = _cached(1000, () => W.pc?.app?.root?.findByName('Camera') ?? null);
const _getPetTycoon = _cached(5000, () => {
const app = W.pc?.app;
return app?.root?.findByName('PetTycoonRoom')?.script?.petTycoon
|| app?.root?.find(e => e.script?.petTycoon)?.[0]?.script?.petTycoon;
});
const _getEscapeTsunami = _cached(5000, () => {
const app = W.pc?.app;
return app?.root?.findByName('EscapeTsunamiRoom')?.script?.escapeTsunamiRoom
|| app?.root?.find(e => e.script?.escapeTsunamiRoom)?.[0]?.script?.escapeTsunamiRoom;
});
const _getNetworkManager = _cached(5000, () =>
W.pc?.app?.root?.findByName('NetworkManager')?.script?.networkManager
);
const _getBasesManager = _cached(5000, () =>
W.pc?.app?.root?.findByName('Bases')?.script?.petTycoonBasesManager
);
const _getEnemyHolder = _cached(5000, () =>
W.pc?.app?.root?.findByName('EnemyHolder') ?? null
);
const _getPopup = _cached(5000, () =>
W.pc?.app?.root?.findByName('Popup') ?? null
);
const _getLockdownMgr = _cached(5000, () =>
W.pc?.app?.root?.findByName('BaseLockdownManager')?.script?.petTycoonBaseLockdownManager ?? null
);
const _swordMgr = (entName, scriptKey) => _cached(5000, () => {
const app = W.pc?.app;
const ent = app?.root?.findByName(entName);
if (ent?.script?.[scriptKey]) return ent.script[scriptKey];
const found = app?.root?.find(e => e.script?.[scriptKey]);
return found?.[0]?.script?.[scriptKey] ?? null;
});
const _getRollManager = _swordMgr('RollManager', 'swordRNGRollManager');
const _getCraftManager = _swordMgr('CraftManager', 'swordRNGCraftManager');
const _getSwordVipManager = _swordMgr('VipManager', 'swordRNGVipManager');
const _getEscapeVipManager = _cached(5000, () => {
const app = W.pc?.app;
const found = app?.root?.find(e => e.script?.escapeTsunamiVipManaager);
return found?.[0]?.script?.escapeTsunamiVipManaager ?? null;
});
const _getSwordMobsManager = _swordMgr('MobsManager', 'swordRNGMobsManager');
const _getSwordRebirthManager = _swordMgr('RebirthManager', 'swordRNGRebirthManager');
const _getSwordOverlayManager = _swordMgr('OverlayManager', 'swordRNGOverlayManager');
const _getSwordUpgradesManager = _swordMgr('UpgradesManager', 'swordRNGUpgradesManager');
const _swordNextAreaPrice = () => {
if (!_feats.autoUnlockAreas) return 0;
const mm = _getSwordMobsManager();
if (!mm) return 0;
const unlocked = new Set(mm.unlockedAreas || []);
const priceMap = new Map((mm.existingLevelPrices || []).map(p => [p.name, p.price]));
const ordered = (mm.levels || []).map(l => l.title);
for (const t of ordered) {
if (unlocked.has(t)) continue;
const price = priceMap.get(t);
if (!price) continue;
return (mm.balance >= price) ? price : 0;
}
return 0;
};
const _findPetsManager = _cached(5000, () => {
const root = W.pc?.app?.root;
if (!root) return null;
const pmEntity = root.findByName('PetsManager');
let pm = pmEntity?.script?.petsManager;
if (!pm && pmEntity?.script) {
for (const k of Object.keys(pmEntity.script)) {
const s = pmEntity.script[k];
if (s?.activePets || s?.basePets) { pm = s; break; }
}
}
if (!pm) {
root.find(e => {
if (!e.script) return false;
for (const k of Object.keys(e.script)) {
const s = e.script[k];
if (s?.activePets || s?.basePets) { pm = s; return true; }
}
return false;
});
}
return pm;
});
const _eachMesh = (entity, fn) => {
if (!entity || !entity.forEach) return;
entity.forEach(child => {
const mis = child.render?.meshInstances || child.model?.meshInstances || [];
for (let i = 0; i < mis.length; i++) if (mis[i].material) fn(mis[i]);
});
};
const _eachCharChild = (fn) => {
const player = getPlayer();
const ch = player?.findByName('CharacterHolder');
if (!ch) return;
const petHolder = player.findByName('PetHolder');
const skipSet = new Set();
if (petHolder) { skipSet.add(petHolder); petHolder.forEach(c => skipSet.add(c)); }
ch.forEach(child => { if (!skipSet.has(child)) fn(child); });
};
const _collectCharMeshes = () => {
const result = [];
_eachCharChild(child => {
const mis = child.render?.meshInstances || child.model?.meshInstances || [];
for (let i = 0; i < mis.length; i++) if (mis[i].material) result.push(mis[i]);
});
return result;
};
const _collectEntityMeshes = (entity, out) => {
const ch = entity.findByName ? entity.findByName('CharacterHolder') : null;
const root = ch || entity;
const model = root.model;
if (model && model.meshInstances) {
for (let j = 0; j < model.meshInstances.length; j++) {
if (model.meshInstances[j].material) out.push(model.meshInstances[j]);
}
}
const render = root.render;
if (render && render.meshInstances) {
for (let j = 0; j < render.meshInstances.length; j++) {
if (render.meshInstances[j].material) out.push(render.meshInstances[j]);
}
}
const children = root.children;
if (children) {
for (let i = 0; i < children.length; i++) {
_collectEntityMeshes(children[i], out);
}
}
};
const _saveOrigMat = (mi, sym) => {
if (!mi[sym]) mi[sym] = mi.material;
};
const _cloneMat = (mi, sym) => {
if (!mi[sym]) {
mi[sym] = mi.material;
mi.material = mi.material.clone();
}
return mi.material;
};
const _restoreMat = (mi, sym) => {
if (mi[sym]) {
mi.material = mi[sym];
delete mi[sym];
mi.material.update();
}
};
const { capturePos, restoreCam, getPlayerState, teleport, _blink, serializePos, saveWaypoints, loadWaypoints, _logMove, _mr2, _r1 } = (() => {
const _mr2 = v => Math.round(v * 100) / 100;
const _r1 = v => Math.round(v * 10) / 10;
const _moveLogLast = new Map();
const _moveLogMinMs = 200;
const _logMove = (why, x, y, z, extra) => {
const _now = Date.now();
const _last = _moveLogLast.get(why) || 0;
if (_now - _last < _moveLogMinMs) return;
_moveLogLast.set(why, _now);
const d = { why, x: _mr2(x), y: _mr2(y), z: _mr2(z) };
if (extra) Object.assign(d, extra);
_dbgLog('move', 'pos', d);
};
function capturePos(player) {
const p = player.getPosition();
const r = player.getEulerAngles();
const camera = getCamera();
const cam = camera?.getEulerAngles();
let se = null;
for (const inst of (camera?.script?._scripts || [])) {
if (inst.eulers) { se = vec3(inst.eulers); break; }
}
return { x: p.x, y: p.y, z: p.z, rot: vec3(r), cam: cam ? vec3(cam) : null, se };
}
function restoreCam(posData) {
if (!posData?.cam) return;
const camera = getCamera();
if (!camera) return;
let scriptRestored = false;
for (const inst of (camera.script?._scripts || [])) {
if ('_yaw' in inst) { inst._yaw = posData.cam.y; scriptRestored = true; }
if ('_pitch' in inst) { inst._pitch = posData.cam.x; scriptRestored = true; }
if ('yaw' in inst) { inst.yaw = posData.cam.y; scriptRestored = true; }
if ('pitch' in inst) { inst.pitch = posData.cam.x; scriptRestored = true; }
if (inst.eulers && posData.se) {
inst.eulers.x = posData.se.x; inst.eulers.y = posData.se.y; inst.eulers.z = posData.se.z;
scriptRestored = true;
}
}
if (!scriptRestored) camera.setEulerAngles(posData.cam.x, posData.cam.y, posData.cam.z);
_dbgLog('move', 'cam-restore', { x: _mr2(posData.cam.x), y: _mr2(posData.cam.y), z: _mr2(posData.cam.z), script: scriptRestored });
}
function getPlayerState() {
const nm = W.pc?.app?.root?.findByName('NetworkManager')?.script?.networkManager;
if (!nm?.room?.state?.players) return null;
return nm.room.state.players.get(nm.room.sessionId) ?? null;
}
function teleport(player, pos, why) {
player.setPosition(pos.x, pos.y, pos.z);
player.rigidbody?.teleport(pos.x, pos.y, pos.z);
if (pos.rot) player.setEulerAngles(pos.rot.x, pos.rot.y, pos.rot.z);
restoreCam(pos);
_logMove(why || 'teleport', pos.x, pos.y, pos.z, { rot: pos.rot ? _mr2(pos.rot.x) + ',' + _mr2(pos.rot.y) + ',' + _mr2(pos.rot.z) : null, cam: pos.cam ? 'set' : null });
}
let _blinkLastMs = 0;
function _blink() {
const now = performance.now();
if (snipeCfg.steal.active && now - _blinkLastMs < 1000) return;
const p = getPlayer();
if (!p) return;
const cam = getCamera();
if (!cam) return;
const origin = cam.getPosition();
const fwd = cam.forward;
const rb = W.pc?.app?.systems?.rigidbody;
if (!rb) return;
const end = new W.pc.Vec3(origin.x + fwd.x * 500, origin.y + fwd.y * 500, origin.z + fwd.z * 500);
const hit = rb.raycastFirst(origin, end);
if (!hit) return;
let _e = hit.entity;
while (_e) { if (_e === p) return; _e = _e.parent; }
_blinkLastMs = now;
const hx = hit.point.x - fwd.x * 1.0;
const hy = hit.point.y - fwd.y * 1.0;
const hz = hit.point.z - fwd.z * 1.0;
p.setPosition(hx, hy, hz);
p.rigidbody?.teleport(hx, hy, hz);
const _kcc = getKcc(p);
if (_kcc && _kcc._velY > 0) _kcc._velY = 0;
_logMove('blink', hx, hy, hz, { guard: snipeCfg.steal.active });
}
function serializePos(p) {
if (!p) return null;
const o = vec3(p);
if (p.rot) o.rot = vec3(p.rot);
if (p.cam) o.cam = vec3(p.cam);
if (p.se) o.se = vec3(p.se);
return o;
}
function saveWaypoints() {
try {
_dbSet(STORE_KEY, JSON.stringify({
home: serializePos(homePos),
back: serializePos(backPos),
slots: slots.map(s => serializePos(s)),
}));
} catch (e) { _log('err', 'save waypoints: ' + e.message); }
}
function loadWaypoints() {
try {
const raw = _dbGet(STORE_KEY);
if (!raw) return;
const d = JSON.parse(raw);
if (d.home) homePos = d.home;
if (d.back) backPos = d.back;
if (Array.isArray(d.slots)) d.slots.forEach((s, i) => { if (s) slots[i] = s; });
} catch (e) { _log('err', 'load waypoints: ' + e.message); }
}
return { capturePos, restoreCam, getPlayerState, teleport, _blink, serializePos, saveWaypoints, loadWaypoints, _logMove, _mr2, _r1 };
})();
let _hubGuardDone = false;
function _hubGuardReady() {
const app = W.pc?.app;
const om = app?.root?.find(function(e) { return e.script?.overlayManager; })?.[0]?.script?.overlayManager;
return !!(om && Object.getPrototypeOf(om)?.[_SYM_HUBG]);
}
function _hookClickGameMode() {
const app = W.pc?.app;
if (!app) return;
const om = app.root?.find(function(e) { return e.script?.overlayManager; })?.[0]?.script?.overlayManager;
if (!om) return;
const p = Object.getPrototypeOf(om);
if (!p || p[_SYM_HUBG]) return;
p[_SYM_HUBG] = true;
if (typeof p.onClickGameMode !== 'function') return;
const _orig = p.onClickGameMode;
_hookProp(p, 'onClickGameMode', {
onClickGameMode(a) {
try { const b = this.gameModes && this.gameModes[a]; if (b && /^hub$/i.test(String(b.roomCode || b.name || ''))) _markHubIntent(); } catch (_) {}
return _orig.call(this, a);
}
}.onClickGameMode);
}
(function _hubGuardInit() {
_hookClickGameMode();
if (!_hubGuardReady()) {
setTimeout(_hubGuardInit, 100);
return;
}
if (!_hubGuardDone) {
_hubGuardDone = true;
_dbgLog('room', 'hub-guard-ready', null, 'debug');
}
})();
const _rr = { active: false, belowMs: 0, prevLow: 0, since: 0, reconnected: false, lastTry: 0 };
const _rrFALL = -25;
try {
const _app = W.pc?.app;
if (_app && !_app[_SYM_RR]) {
_app[_SYM_RR] = true;
_app.on('NetworkManager:Connected', function() {
_rr.active = false; _rr.belowMs = 0; _rr.prevLow = 0; _rr.since = 0; _rr.reconnected = false; _rr.lastTry = 0;
_rrRecovering = false;
});
}
} catch (_) {}
const _rrRecover = (mode, roomId) => {
const app = W.pc?.app;
if (!app) return;
mode = _resolveJoinMode(mode || 'PetTycoon');
_rrRecovering = true;
_setHopReason('fall');
if (roomId) { _ban.forceRejoinRoomId = roomId; _ban.forceRejoinMode = _snipeModeToGame(mode) || mode; }
let sceneDone = false;
let mapDone = false;
try {
const nm = _getNetworkManager();
if (nm) { nm.isConnecting = false; nm.gameMode = mode; app.fire('NetworkManager:LeaveCurrentRoom'); }
if (W.GameGlobals) W.GameGlobals.gameMode = mode;
} catch (_) {}
_loadGameModeMap(mode || 'PetTycoon').then(r => { sceneDone = r; mapDone = true; }).catch(() => { mapDone = true; });
let waited = 0;
const iv = setInterval(() => {
waited += 500;
_getNetworkManager.clear();
const cnm = _getNetworkManager();
if (cnm?.room) {
clearInterval(iv);
_rrRecovering = false;
_rr.active = false; _rr.belowMs = 0; _rr.prevLow = 0; _rr.since = 0; _rr.reconnected = false; _rr.lastTry = 0;
_dbgLog('room', 'fall-rejoin-skip', { rid: roomId, mode, waited, scene: sceneDone });
return;
}
const gone = !cnm?.room && !cnm?.isConnecting;
const ready = gone && sceneDone && waited >= 1500;
const mapGaveUp = gone && mapDone && !sceneDone && waited >= 1500;
if (ready || mapGaveUp || (waited > 8000 && !cnm?.room)) {
clearInterval(iv);
_dbgLog('room', 'fall-rejoin', { rid: roomId, mode, waited, scene: sceneDone });
try { if (cnm) { cnm.isConnecting = false; cnm.connectToColyseus(); } } catch (_) {}
}
}, 500);
};
setInterval(function() {
const _now = Date.now();
const _p = getPlayer();
const _y = _p?.getPosition?.()?.y;
const _nm = _getNetworkManager();
const _rid = _nm?.room?.roomId;
const _rn = _nm?.room?.name;
const _mode = _rn || window.GameGlobals?.gameMode || _nm?.gameMode || 'PetTycoon';
if (_y !== undefined && _y < _rrFALL) {
if (!_rr.active) {
_rr.active = true;
_rr.belowMs = 0;
_rr.prevLow = _now;
_rr.since = _now;
_rr.reconnected = false;
_dbgLog('room', 'fall-detected', { y: Math.round(_y * 10) / 10, rid: _rid });
} else {
_rr.belowMs += (_now - _rr.prevLow);
_rr.prevLow = _now;
}
} else if (_rr.active && _y !== undefined && _now - _rr.prevLow > 2000) {
_rr.active = false; _rr.belowMs = 0; _rr.prevLow = 0; _rr.since = 0; _rr.reconnected = false; _rr.lastTry = 0;
_rrRecovering = false;
_dbgLog('room', 'fall-recovered', { y: Math.round(_y * 10) / 10 });
return;
}
if (!_rr.active) return;
if (_rr.reconnected && _rr.lastTry && _now - _rr.lastTry > 15000) {
_rr.reconnected = false;
_rr.belowMs = 0;
_rr.since = _now;
_dbgLog('room', 'fall-retry', { rid: _rid });
}
const _stuck = _y === undefined && _now - _rr.since > 3000;
if (!_rr.reconnected && !_hopInProgress && (_rr.belowMs >= 1500 || _stuck)) {
_rr.reconnected = true;
_rr.lastTry = _now;
_dbgLog('room', 'fall-recover', { rid: _rid, mode: _mode });
_rrRecover(_mode, _rid);
}
}, 500);
const { flyOn, flyOff, _flyEmoteLoop, _flyEmoteStop } = (() => {
let _flyEmoteTimer = null;
let _flyEmoteCount = 0;
let _wasInvisBeforeFly = false;
function flyOn(kcc, hover) {
_fly.active = true;
_dbgLog('fly', 'fly-on', null, 'debug');
_fly.startTime = Date.now();
if (_feats.autoInvisOnFly) {
_wasInvisBeforeFly = _feats.invisible;
if (!_wasInvisBeforeFly) {
_feats.invisible = true;
_toggleInvisible(true);
_updateInvisEffect(true);
}
}
kcc.gravity = 0;
if (hover) {
_fly.up = false;
_fly.down = false;
_fly.velY = 0;
kcc._velY = 0;
} else {
_fly.up = true;
_fly.velY = FLY_MIN_SPEED;
kcc._velY = FLY_MIN_SPEED;
}
_flyEmoteLoop();
}
function flyOff(kcc, resetVel = true) {
_fly.active = false;
_dbgLog('fly', 'fly-off', null, 'debug');
_fly.up = false;
_fly.down = false;
_fly.velY = 0;
if (_feats.autoInvisOnFly && !_wasInvisBeforeFly && !_getPetTycoon()?.isHoldingPet) {
_feats.invisible = false;
_toggleInvisible(false);
_updateInvisEffect(false);
}
kcc.gravity = GRAVITY;
if (resetVel) kcc._velY = 0;
_flyEmoteStop();
}
function _flyEmoteLoop() {
clearTimeout(_flyEmoteTimer);
_flyEmoteTimer = null;
if (!_fly.active || !_feats.flyEmotes || _flyEmoteCount >= 10) return;
const app = W.pc?.app;
if (!app) return;
_flyEmoteCount++;
const name = _FLY_EMOTES[Math.random() * _FLY_EMOTES.length | 0];
app.fire('NetworkManager:Send', 'emotePlay', name);
const asset = app.assets?.find('Emote-' + name + '.glb', 'animation');
const dur = asset?.resource?.duration || 4;
_flyEmoteTimer = setTimeout(_flyEmoteLoop, dur * 1000 + 200);
}
function _flyEmoteStop() {
clearTimeout(_flyEmoteTimer);
_flyEmoteTimer = null;
_flyEmoteCount = 0;
const app = W.pc?.app;
if (app) app.fire('NetworkManager:Send', 'emoteStop');
}
return { flyOn, flyOff, _flyEmoteLoop, _flyEmoteStop };
})();
const _ACCT_K = _K_ACCT;
const _ACCT_API = 'https://api.meeland.io/v1';
let _acctBank = null;
let _acctPendingId = null;
let _acctPrevTokens = null;
function _acctReload() {
if (_acctBank !== null) return _acctBank;
try { _acctBank = JSON.parse(_dbGet(_ACCT_K) || '[]'); } catch (_) { _acctBank = []; }
if (!Array.isArray(_acctBank)) _acctBank = [];
return _acctBank;
}
function _acctPersist() { try { _dbSet(_ACCT_K, JSON.stringify(_acctBank || [])); } catch (_) {} }
function _acctList() { return _acctReload(); }
function _acctUtils() {
try { if (typeof Utils !== 'undefined' && Utils && typeof Utils.setItem === 'function') return Utils; } catch (_) {}
return null;
}
function _acctStoreGet(k) {
const U = _acctUtils();
if (U) { try { const v = U.getItem(k); if (v) return v; } catch (_) {} }
try { const v = localStorage.getItem(k); if (v) return v; } catch (_) {}
try { if (W.CrazyGames?.SDK?.data?.getItem) { const v = W.CrazyGames.SDK.data.getItem(k); if (v) return v; } } catch (_) {}
return null;
}
function _acctSetKey(k, v) {
if (v == null) { _acctClearKey(k); return; }
const U = _acctUtils();
if (U) { try { U.setItem(k, v); } catch (_) {} }
try { localStorage.setItem(k, v); } catch (_) {}
try { if (W.CrazyGames?.SDK?.data?.setItem) W.CrazyGames.SDK.data.setItem(k, v); } catch (_) {}
}
function _acctClearKey(k) {
const U = _acctUtils();
if (U) { try { U.deleteItem(k); } catch (_) {} }
try { localStorage.removeItem(k); } catch (_) {}
try { if (W.CrazyGames?.SDK?.data?.removeItem) W.CrazyGames.SDK.data.removeItem(k); } catch (_) {}
}
function _acctCurTokens() {
return {
access_token: _acctStoreGet('access_token'),
refresh_token: _acctStoreGet('refresh_token'),
customID: _acctStoreGet('customID'),
};
}
function _acctToken() {
try { const A = W.pc?.access_token; if (A) return A; } catch (_) {}
try { const t = _acctCurTokens(); if (t && t.access_token) return t.access_token; } catch (_) {}
return null;
}
async function _acctMe(access_token) {
if (!access_token) return null;
try {
const r = await fetch(_ACCT_API + '/users/me', { headers: { accept: 'application/json', Authorization: 'Bearer ' + access_token } });
if (!r.ok) return null;
return await r.json();
} catch (_) { return null; }
}
async function _acctValidate(access_token) {
if (!access_token) return false;
try {
const r = await fetch(_ACCT_API + '/users/me', { headers: { accept: 'application/json', Authorization: 'Bearer ' + access_token } });
if (r.ok) return true;
if (r.status === 401 || r.status === 403) return false;
return true;
} catch (_) { return true; }
}
function _acctUpsert(acct) {
if (!acct || !acct.id) return false;
const bank = _acctReload();
const i = bank.findIndex(a => a.id === acct.id);
if (i >= 0) bank[i] = acct; else bank.push(acct);
_acctPersist();
return true;
}
async function _acctMint() {
try {
const r = await fetch(_ACCT_API + '/auth/local/customLogin');
const d = await r.json();
const tok = d.access_token || null;
const ref = d.refresh_token || null;
const cid = d.customID || null;
const me = tok ? await _acctMe(tok) : null;
const acct = {
id: (me && me.id) || cid || ('acct' + Date.now()),
name: (me && me.name) || 'Guest',
access_token: tok, refresh_token: ref, customID: cid,
addedAt: Date.now(),
};
_acctUpsert(acct);
_dbgLog('acct', 'mint', { id: acct.id, name: acct.name, haveToken: !!tok });
return acct;
} catch (e) { _dbgLog('acct', 'mint-err', { err: String(e) }, 'warn'); return null; }
}
async function _acctImport(userTokens) {
const tok = userTokens && userTokens.access_token;
if (!tok) return null;
const ok = await _acctValidate(tok);
if (ok === false) { _dbgLog('acct', 'import-invalid', {}, 'warn'); return null; }
const me = tok ? await _acctMe(tok) : null;
const acct = {
id: (me && me.id) || (userTokens && userTokens.customID) || ('acct' + Date.now()),
name: (me && me.name) || 'Imported',
access_token: tok,
refresh_token: (userTokens && userTokens.refresh_token) || null,
customID: (userTokens && userTokens.customID) || null,
addedAt: Date.now(),
};
_acctUpsert(acct);
_dbgLog('acct', 'import', { id: acct.id, name: acct.name, haveToken: !!tok });
return acct;
}
function _acctHash(s) {
let h = 0;
for (let i = 0; i < s.length; i++) h = ((h * 31) + s.charCodeAt(i)) | 0;
return (h >>> 0).toString(36);
}
function _acctCurName() {
try {
if (typeof getPlayer === 'function') {
const p = getPlayer();
if (p) {
const ue = p.script?.enemy?.usernameEntity || p.script?.playerController?.usernameEntity;
if (ue && ue.element && ue.element.text) return ue.element.text;
const u2 = p.findByName && p.findByName('Username');
if (u2 && u2.element && u2.element.text) return u2.element.text;
}
}
} catch (_) {}
return null;
}
async function _acctCaptureCurrent() {
const tok = _acctToken();
if (!tok) {
try { _dbgLog('acct', 'no-token', { ls: !!localStorage.getItem('access_token'), pc: !!W.pc?.access_token }, 'debug'); } catch (_) {}
return null;
}
const t = _acctCurTokens();
const me = await _acctMe(tok);
let pid = null;
try { pid = W.pc?.accountId || null; } catch (_) {}
const id = (me && me.id) || pid || (t && t.customID) || null;
const nm = (me && me.name) || _acctCurName() || 'Guest';
try { _dbgLog('acct', 'cur', { id, name: nm, sdk: String(W.pc?.sdkType || ''), same: tok === (t && t.access_token), via: id ? 'id' : 'hash' }); } catch (_) {}
const bank = _acctReload();
const found = bank.find(a => a.id === id || (a.access_token && a.access_token === tok));
if (found) {
const freshName = (me && me.name) || null;
if (freshName) found.name = freshName;
else if (!found.name && nm && nm !== 'Guest') found.name = nm;
if (!found.access_token) found.access_token = tok;
_acctPersist();
return found;
}
const acct = {
id: id || ('acct_' + _acctHash(tok)),
name: nm,
access_token: tok, refresh_token: (t && t.refresh_token) || null, customID: (t && t.customID) || null,
addedAt: Date.now(),
};
bank.push(acct);
_acctPersist();
_dbgLog('acct', 'capture', { id: acct.id, name: acct.name, via: id ? 'id' : 'hash' });
return acct;
}
function _acctDelete(id) {
const bank = _acctReload();
const i = bank.findIndex(a => a.id === id);
if (i < 0) return;
bank.splice(i, 1);
_acctPersist();
if (_acctPendingId === id) { _acctPendingId = null; _acctPrevTokens = null; }
_dbgLog('acct', 'delete', { id });
}
async function _acctRename(id, name) {
const acct = _acctReload().find(a => a.id === id);
if (!acct || !acct.access_token) return { ok: false, reason: 'no-token' };
const nm = String(name == null ? '' : name).trim();
if (nm.length < 4 || nm.length > 12) return { ok: false, reason: 'length' };
try {
const r = await fetch(_ACCT_API + '/users/changeName', {
method: 'POST',
headers: { accept: 'application/json', 'Content-Type': 'application/json', Authorization: 'Bearer ' + acct.access_token },
body: JSON.stringify({ name: nm }),
});
if (!r.ok) {
let msg = '';
try { const j = await r.json(); msg = (j && j.message) || ''; } catch (_) {}
_dbgLog('acct', 'rename-fail', { id, status: r.status, msg: String(msg) }, 'warn');
return { ok: false, reason: 'status', status: r.status, msg };
}
try { await r.json(); } catch (_) {}
acct.name = nm;
acct.label = nm;
_acctPersist();
_dbgLog('acct', 'rename', { id, name: nm });
return { ok: true };
} catch (e) {
_dbgLog('acct', 'rename-err', { id, err: String(e) }, 'warn');
return { ok: false, reason: 'err' };
}
}
async function _acctExportCurrent() {
try {
const cur = await _acctCaptureCurrent();
if (!cur) return '';
return cur.customID || cur.access_token || '';
} catch (_) { return ''; }
}
const _ACCT_URL_PARAM = 'mlacct';
const _ACCT_CG_BASE = 'https://www.crazygames.com/game/meeland-io';
let _acctUrlHandled = false;
function _acctBuildURL(cred) {
let base;
try { if (W.pc?.sdkType === 'crazygames') base = _ACCT_CG_BASE; } catch (_) {}
if (!base) base = location.origin + location.pathname;
return base + '?' + _ACCT_URL_PARAM + '=' + encodeURIComponent(cred);
}
async function _acctExportURL() {
try {
const cur = await _acctCaptureCurrent();
const cred = cur ? (cur.customID || cur.access_token || '') : '';
if (!cred) return '';
return _acctBuildURL(cred);
} catch (_) { return ''; }
}
async function _acctAutoImport() {
if (_acctUrlHandled) return;
_acctUrlHandled = true;
try {
if (typeof location === 'undefined' || !location.search) return;
const sp = new URLSearchParams(location.search);
const cred = sp.get(_ACCT_URL_PARAM);
if (!cred) return;
try {
sp.delete(_ACCT_URL_PARAM);
const qs = sp.toString();
const next = location.origin + location.pathname + (qs ? '?' + qs : '');
if (typeof history !== 'undefined' && history.replaceState) history.replaceState({}, document.title, next);
} catch (_) {}
_dbgLog('acct', 'url-import', {});
const acct = await _acctImportCredential(cred);
if (!acct || !acct.id) { _dbgLog('acct', 'url-import-failed', {}, 'warn'); return; }
const p = await _acctPrepare(acct.id);
if (p && p.ok) _acctReloadNow();
} catch (_) {}
}
async function _acctMintToken(cid) {
if (!cid) return null;
try {
const r = await fetch(_ACCT_API + '/auth/local/customLogin', { headers: { accept: 'application/json', 'custom-id': cid } });
const d = await r.json();
return d.access_token || null;
} catch (_) { return null; }
}
async function _acctImportCredential(value) {
if (!value) return null;
let v = String(value).trim();
const qp = v.indexOf(_ACCT_URL_PARAM + '=');
if (qp >= 0) {
try {
const sp = new URLSearchParams(v.slice(v.indexOf('?') >= 0 ? v.indexOf('?') + 1 : 0));
const c = sp.get(_ACCT_URL_PARAM);
if (c) v = c.trim();
} catch (_) {}
}
if (/^\{/.test(v) && /"accounts"/.test(v)) {
const n = await _acctImportBank(v);
return n > 0 ? { bank: n } : null;
}
const isJwt = /^eyJ/.test(v) && (v.match(/\./g) || []).length === 2;
if (isJwt) return await _acctImport({ access_token: v });
const tok = await _acctMintToken(v);
if (tok) return await _acctImport({ access_token: tok, customID: v });
return null;
}
async function _acctImportBank(json) {
try {
const d = JSON.parse(json || '');
const arr = Array.isArray(d) ? d : (d && Array.isArray(d.accounts) ? d.accounts : null);
if (!arr) return 0;
const bank = _acctReload();
let n = 0;
for (const a of arr) {
if (!a || !a.access_token) continue;
let id = a.id, name = a.name || 'Imported', ref = a.refresh_token || null, cid = a.customID || null;
if (!id) {
const me = await _acctMe(a.access_token);
if (!me || !me.id) continue;
id = me.id; name = me.name || name;
}
const i = bank.findIndex(x => x.id === id);
const entry = {
id, name, access_token: a.access_token, refresh_token: ref, customID: cid,
label: a.label, addedAt: a.addedAt || Date.now(),
};
if (i >= 0) bank[i] = entry; else bank.push(entry);
n++;
}
_acctPersist();
_dbgLog('acct', 'import-bank', { n });
return n;
} catch (e) { _dbgLog('acct', 'import-bank-err', { err: String(e) }, 'warn'); return 0; }
}
async function _acctPrepare(id) {
const acct = _acctReload().find(a => a.id === id);
if (!acct || !acct.access_token) { _dbgLog('acct', 'prepare-no-token', { id }, 'warn'); return { ok: false, reason: 'no-token' }; }
const ok = await _acctValidate(acct.access_token);
if (ok === false) {
_dbgLog('acct', 'prepare-invalid', { id, name: acct.name }, 'warn');
return { ok: false, reason: 'invalid' };
}
const me = await _acctMe(acct.access_token);
if (me && me.name) acct.name = me.name;
if (!_acctPrevTokens) _acctPrevTokens = _acctCurTokens();
try {
_acctSetKey('access_token', acct.access_token);
_acctSetKey('refresh_token', acct.refresh_token);
_acctSetKey('customID', acct.customID);
_acctClearKey('auth_provider');
} catch (e) { _dbgLog('acct', 'prepare-err', { err: String(e) }, 'warn'); return { ok: false, reason: 'err' }; }
_acctPendingId = id;
_dbgLog('acct', 'prepare', { id, name: acct.name, sdk: String(W.pc?.sdkType || ''), tok: _acctMask(acct.access_token), ok: true });
return { ok: true };
}
function _acctPending() {
return _acctPendingId ? _acctReload().find(a => a.id === _acctPendingId) || null : null;
}
function _acctReloadNow() { try { location.reload(); } catch (_) {} }
function _acctCancel() {
if (_acctPrevTokens) {
try {
_acctSetKey('access_token', _acctPrevTokens.access_token);
_acctSetKey('refresh_token', _acctPrevTokens.refresh_token);
_acctSetKey('customID', _acctPrevTokens.customID);
} catch (_) {}
}
_acctPendingId = null;
_acctPrevTokens = null;
_dbgLog('acct', 'cancel');
}
function _acctMask(id) {
if (!id) return '';
const s = String(id);
return s.length > 8 ? s.slice(-8) : s;
}
const DESCRIPTION = _buildDesc(T);
const anyPanelOpen = () =>
W.pc?.isEmotesOpen ||
W.pc?.isFocusedOnChat ||
Object.values(panels).some(p => p?.classList.contains('open')) ||
!!_overlayMgr?.currentPauseCategory ||
!!_overlayMgr?.tabEntity?.enabled;
function panelPause() {
const app = W.pc?.app;
try {
const _fle = _overlayMgr?.firstLockEntity;
if (_fle?.enabled) _fle.enabled = false;
} catch (_) {}
if (app && !W.pc?.isGamePaused) {
app.fire('GameManager:UnlockMouse');
app.fire('GameManager:GamePause');
}
}
function panelResume() {
if (W.pc?.isGamePaused && !anyPanelOpen()) {
W.pc?.app?.fire('GameManager:GameResumeButton');
}
}
const _panelMeta = new WeakMap();
const _setPanelMeta = (el, meta) => {
if (el) _panelMeta.set(el, meta);
};
const _getPanelMeta = el => el ? _panelMeta.get(el) : null;
const _togglePanel = (el, forceOpen, onOpen, onClose) => {
if (!el) return;
const wasOpen = el.classList.contains('open');
const open = forceOpen !== undefined ? forceOpen : !wasOpen;
const meta = _getPanelMeta(el);
if (!open && wasOpen) meta?.savePos?.();
el.classList.toggle('open', open);
el.style.setProperty('display', open ? '' : 'none', 'important');
if (open) { panelPause(); meta?.restorePos?.(); onOpen?.(wasOpen); }
else if (wasOpen) { onClose?.(); panelResume(); }
};
let _rngLog = [];
let _rngLogRender = null;
function _rngLogEsc(s) { return String(s).replace(/[&<>"']/g, c => ({ '&':'&','<':'<','>':'>','"':'"',"'":''' }[c])); }
function _renderRngLog() {
const el = $('ml-rng-log');
if (!el) return;
el.innerHTML = _rngLog.map(item => {
let cls = 'ml-rng-log-item';
if (item.c) cls += ' ml-rng-log-' + item.c;
return '<div class="' + cls + '">' + _rngLogEsc(item.t) + '</div>';
}).join('');
}
function _rngLogPush(text, cls) {
_rngLog.unshift({ t: text, c: cls || '' });
if (_rngLog.length > 500) _rngLog.length = 500;
if (typeof _rngLogRender === 'function') { try { _rngLogRender(); } catch (_) {} }
}
function _fmtVal(v) {
if (!v || v <= 0) return '?';
const u = [[1e12, 'T'], [1e9, 'B'], [1e6, 'M'], [1e3, 'K']];
for (let i = 0; i < u.length; i++) {
if (v >= u[i][0]) {
const x = v / u[i][0];
return (x >= 100 ? String(Math.round(x)) : (x >= 10 ? x.toFixed(1) : x.toFixed(2))) + u[i][1];
}
}
return String(Math.round(v));
}
function _getEnemyName(entity) {
let n = null;
try { n = entity.script?.enemy?.usernameEntity?.element?.text; } catch (e) { _log('err', 'enemy name: ' + e.message); }
if (!n) { const ue = entity.findByName?.('Username'); if (ue?.element?.text) n = ue.element.text; }
return n || null;
}
function _isImmortalEntity(entity) {
if (!entity) return true;
if (!entity.script?.enemy?.usernameEntity) return true;
const nm = _getNetworkManager();
const players = nm?.room?.state?.players;
let sid = entity.id || entity.sessionId || entity.playerId;
if (!sid && entity.script?._scriptsIndex) {
for (const sk of Object.keys(entity.script._scriptsIndex)) {
const inst = entity.script[sk];
sid = inst?.id || inst?.sessionId || inst?.playerId;
if (sid) break;
}
}
if (sid && players instanceof Map && players.has(sid)) return false;
if (_getEnemyName(entity) === 'Stishka') return true;
if (!sid) return true;
return false;
}
const _serverLockedSessions = new Set();
const _serverLockdownUntil = new Map();
let _lockDataReceived = false;
let _lastLockDataTs = 0;
function createHUD() {
if ($('ml-hud')) return;
let _afkSellActive = false;
let _afkPrevInvis;
let _afkLastPos = null;
let _afkPosTime = 0;
let _afkLastInput = 0;
const _AFK_IDLE_MS = 3000;
function _setAfkSellActive(v) {
if (v === _afkSellActive) return;
_dbgLog('snipe', 'afksell-set-active', { from: _afkSellActive, to: v, idle: Date.now() - _afkPosTime, noInput: Date.now() - _afkLastInput, pending: _afkSellPending }, 'debug');
if (v) {
_afkPrevInvis = (_snipePreInvis !== null) ? _snipePreInvis : _feats.invisible;
if (!_feats.invisible) { _feats.invisible = true; _toggleInvisible(true); _updateInvisEffect(true); }
} else {
if (_afkPrevInvis !== undefined && !_afkPrevInvis) { _feats.invisible = false; _toggleInvisible(false); _updateInvisEffect(false); }
}
_afkSellActive = v;
}
function _afkPoll() {
const _cfg = _sc();
if (!_cfg.afkSell) { if (_afkSellActive) _dbgLog('snipe', 'afksell-poll-disabled', null, 'debug'); _setAfkSellActive(false); return; }
if (_afkSellPending) { if (!_afkSellActive) _dbgLog('snipe', 'afksell-poll-pending-block', { pending: _afkSellPending }, 'debug'); return; }
const p = getPlayer();
if (!p) return;
const pos = p.getPosition();
if (!pos) return;
const dx = Math.round(pos.x) - Math.round((_afkLastPos ? parseFloat(_afkLastPos.split('|')[0]) : pos.x));
const dz = Math.round(pos.z) - Math.round((_afkLastPos ? parseFloat(_afkLastPos.split('|')[1]) : pos.z));
const k = Math.round(pos.x) + '|' + Math.round(pos.z);
if (k === _afkLastPos || (Math.abs(dx) < 3 && Math.abs(dz) < 3)) {
if (!_afkSellActive && Date.now() - _afkPosTime >= _AFK_IDLE_MS && Date.now() - _afkLastInput >= _AFK_IDLE_MS) { _dbgLog('snipe', 'afksell-idle-detected', { idleMs: Date.now() - _afkPosTime, noInputMs: Date.now() - _afkLastInput }, 'debug'); _setAfkSellActive(true); }
} else {
if (_afkSellActive) _dbgLog('snipe', 'afksell-move-detected', { dx: Math.round(dx), dz: Math.round(dz) }, 'debug');
_afkLastPos = k;
_afkPosTime = Date.now();
_setAfkSellActive(false);
}
}
document.addEventListener('mousedown', () => { _afkLastInput = Date.now(); _setAfkSellActive(false); }, true);
document.addEventListener('keydown', () => { _afkLastInput = Date.now(); _setAfkSellActive(false); }, true);
const FEEDBACK_GF_URL = 'https://greasyfork.org/en/scripts/561477-meeland-enhancement-suite/feedback';
const FEEDBACK_FOOTER_HTML = `<div class="ml-feedback ml-footer"><a class="ml-feedback-gf" href="${FEEDBACK_GF_URL}" target="_blank" rel="noopener">${T.footer_gf || 'Greasy Fork'}</a></div>`;
const s = document.createElement('style');
s.textContent = [
'.ml-hud{display:none}',
'.ml-panel{border-radius:18px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",sans-serif;user-select:none;background:rgba(15,25,90,.96);border:none;box-shadow:0 12px 48px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,200,60,.08)}',
'.ml-panel.open{display:flex;flex-direction:column}',
'.ml-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:600px;max-width:calc(100vw - 20px);max-height:82vh;display:none;z-index:100000;pointer-events:auto;overflow:hidden}',
'.ml-dialog-head{padding:10px 14px 6px;display:flex;align-items:center;justify-content:space-between}',
'.ml-dialog-title{font-size:20px;font-weight:900;color:#FFD700;letter-spacing:.04em;-webkit-text-stroke:.5px rgba(0,0,0,.25);text-shadow:0 2px 8px rgba(255,180,0,.25),0 1px 3px rgba(0,0,0,.4)}',
'.ml-dialog-close,.ml-plist-close,.ml-settings-close,.ml-pets-close,.ml-slots-pop-close,.ml-snipe-close,.ml-rng-close{cursor:pointer;background:#c62828;border:none;color:#fff;font-size:16px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-family:inherit;line-height:1;transition:all .15s;font-weight:900}',
'.ml-dialog-close:hover,.ml-plist-close:hover,.ml-settings-close:hover,.ml-pets-close:hover,.ml-slots-pop-close:hover,.ml-snipe-close:hover,.ml-rng-close:hover{background:#e53935;transform:scale(1.08)}',
'.ml-dialog-body,.ml-plist-body,.ml-settings-body,.ml-pets-body,.ml-slots-pop-body,.ml-snipe-body,.ml-ban-body,.ml-warn-body{scrollbar-width:thin;scrollbar-color:rgba(255,180,60,.35) rgba(30,50,140,.2);-webkit-overflow-scrolling:touch;touch-action:pan-y}',
'.ml-dialog-body{overflow-y:auto;flex:1;padding:4px 14px 8px;color:rgba(255,220,100,.88);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:13px;line-height:1.5}',
'.ml-dialog-body::-webkit-scrollbar,.ml-plist-body::-webkit-scrollbar,.ml-settings-body::-webkit-scrollbar,.ml-pets-body::-webkit-scrollbar,.ml-slots-pop-body::-webkit-scrollbar,.ml-snipe-body::-webkit-scrollbar,.ml-ban-body::-webkit-scrollbar,.ml-warn-body::-webkit-scrollbar{width:6px}',
'.ml-dialog-body::-webkit-scrollbar-track,.ml-plist-body::-webkit-scrollbar-track,.ml-settings-body::-webkit-scrollbar-track,.ml-pets-body::-webkit-scrollbar-track,.ml-slots-pop-body::-webkit-scrollbar-track,.ml-snipe-body::-webkit-scrollbar-track,.ml-ban-body::-webkit-scrollbar-track,.ml-warn-body::-webkit-scrollbar-track{background:rgba(30,50,140,.15)}',
'.ml-dialog-body::-webkit-scrollbar-thumb,.ml-plist-body::-webkit-scrollbar-thumb,.ml-settings-body::-webkit-scrollbar-thumb,.ml-pets-body::-webkit-scrollbar-thumb,.ml-slots-pop-body::-webkit-scrollbar-thumb,.ml-snipe-body::-webkit-scrollbar-thumb,.ml-ban-body::-webkit-scrollbar-thumb,.ml-warn-body::-webkit-scrollbar-thumb{background:rgba(255,180,60,.4);border-radius:3px}',
'.ml-dialog-body::-webkit-scrollbar-thumb:hover,.ml-plist-body::-webkit-scrollbar-thumb:hover,.ml-settings-body::-webkit-scrollbar-thumb:hover,.ml-pets-body::-webkit-scrollbar-thumb:hover,.ml-slots-pop-body::-webkit-scrollbar-thumb:hover,.ml-snipe-body::-webkit-scrollbar-thumb:hover,.ml-ban-body::-webkit-scrollbar-thumb:hover,.ml-warn-body::-webkit-scrollbar-thumb:hover{background:rgba(255,180,60,.6)}',
'.ml-dialog-body h1{display:none}',
'.ml-dialog-body h2{color:#FFA726;font-size:.92em;letter-spacing:.06em;margin:8px 0 2px;border-top:1px solid rgba(255,180,60,.2);padding-top:6px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",sans-serif}',
'.ml-dialog-body h2:first-child{border-top:none;margin-top:4px}',
'.ml-dialog-body h3{font-size:.8em;color:rgba(255,200,80,.55);margin:4px 0 1px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",sans-serif}',
'.ml-dialog-body li{margin:2px 0}',
'.ml-dialog-body kbd{background:rgba(30,55,150,.5);border:1px solid rgba(255,180,60,.25);border-radius:3px;padding:1px 4px;font-family:monospace;font-size:.9em;color:#FFD54F}',
'.ml-dialog-body a{color:#FFD54F}',
'.ml-dialog-body blockquote{border-left:3px solid rgba(255,180,60,.3);margin:4px 0 0;padding:4px 10px;color:rgba(255,200,80,.5);font-size:.9em}',
'.ml-plist{position:fixed;top:50%;right:20px;transform:translateY(-50%);width:280px;max-width:calc(100vw - 40px);max-height:70vh;display:none;z-index:100001;pointer-events:auto;overflow:hidden}',
'.ml-plist-head{padding:8px 14px 4px;display:flex;align-items:center;justify-content:space-between}',
'.ml-plist-title{font-size:15px;font-weight:900;color:#FFD700;letter-spacing:.04em;}',
'.ml-plist-timer{font-size:10px;color:rgba(255,180,60,.4);font-variant-numeric:tabular-nums;margin-left:6px;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-plist-refresh{cursor:pointer;background:rgba(30,55,150,.5);border:none;color:#FFCA28;font-size:11px;padding:4px 10px;border-radius:20px;font-family:inherit;font-weight:800;transition:all .15s;letter-spacing:.05em}',
'.ml-plist-refresh:hover{color:#FFD54F;background:rgba(40,70,180,.6)}',
'.ml-plist-body{overflow-y:auto;flex:1;padding:2px 8px 4px}',
'.ml-plist-empty{color:rgba(255,200,80,.45);text-align:center;padding:10px 8px;font-size:11px;font-style:italic;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-prow{display:flex;align-items:center;gap:6px;padding:4px 10px;margin:1px 0;border-radius:20px;cursor:pointer;transition:all .15s;border:none;background:rgba(30,55,150,.35)}',
'.ml-prow:hover{background:rgba(40,70,180,.45)}',
'.ml-prow:active{background:rgba(50,85,200,.5);transform:scale(.98)}',
'.ml-pnum{font-size:11px;color:rgba(255,200,80,.5);font-weight:700;min-width:16px;text-align:right;font-variant-numeric:tabular-nums;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-pinfo{flex:1;overflow:hidden}',
'.ml-pname{font-size:12px;font-weight:600;color:#FFCA28;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-pdist{font-size:10px;color:rgba(100,160,255,.55);line-height:1.2;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-parrow{color:rgba(100,160,255,.3);font-size:14px;transition:all .15s}',
'.ml-prow:hover .ml-parrow{color:rgba(255,200,80,.7);transform:translateX(3px)}',
'.ml-settings{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:420px;max-width:calc(100vw - 20px);max-height:95vh;display:none;z-index:100002;pointer-events:auto;overflow:hidden}',
'.ml-settings-head{position:relative;padding:10px 14px 6px;display:flex;align-items:center;justify-content:space-between}',
'.ml-settings-title{font-size:20px;font-weight:900;color:#FFD700;letter-spacing:.04em;-webkit-text-stroke:.5px rgba(0,0,0,.25);text-shadow:0 2px 8px rgba(255,180,0,.25),0 1px 3px rgba(0,0,0,.4)}',
'.ml-settings-ver{font-size:10px;font-weight:800;color:#FFB300;margin-left:8px;padding:1px 8px;border-radius:10px;background:rgba(255,180,0,.12);border:1px solid rgba(255,180,0,.25);-webkit-text-stroke:0;text-transform:none;letter-spacing:.04em}',
'.ml-feedback{display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0 6px;font-size:10px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-feedback.ml-footer{margin-top:auto;flex:0 0 auto;padding:4px 12px 4px;border-top:1px solid rgba(255,180,60,.14);background:linear-gradient(180deg,rgba(12,24,88,.12),rgba(12,24,88,.34))}',
'.ml-feedback a{position:relative;display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 11px;border-radius:999px;color:#fff;text-decoration:none;opacity:.98;font-size:10.5px;font-weight:800;letter-spacing:.02em;line-height:1;border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(2px);box-shadow:0 6px 14px rgba(0,0,0,.25);transform:translateY(0) scale(1);transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}',
'.ml-feedback a::before{content:"";width:20px;height:20px;display:inline-block;flex:0 0 20px;background-color:currentColor;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;mask-repeat:no-repeat;mask-position:center;mask-size:contain;filter:drop-shadow(0 0 3px rgba(0,0,0,.35))}',
'.ml-feedback .ml-feedback-gf{background:linear-gradient(135deg,#ff9f1a,#ff6f00);border-color:rgba(255,215,120,.55)}',
'.ml-feedback .ml-feedback-gf::before{-webkit-mask-image:url("https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/greasyfork.svg");mask-image:url("https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/greasyfork.svg")}',
'.ml-feedback a:hover{transform:translateY(-1px) scale(1.03);filter:saturate(1.1);box-shadow:0 10px 22px rgba(0,0,0,.36),0 0 14px rgba(255,255,255,.16)}',
'.ml-feedback a:active{transform:translateY(0) scale(.985)}',
'.ml-settings-reset,.ml-snipe-reset,.ml-rng-reset{cursor:pointer;background:rgba(30,55,150,.5);border:none;color:#FFCA28;font-size:11px;padding:5px 10px;border-radius:20px;font-family:inherit;font-weight:800;transition:all .15s;letter-spacing:.05em}',
'.ml-settings-reset:hover,.ml-snipe-reset:hover,.ml-rng-reset:hover{color:#FFD54F;background:rgba(40,70,180,.6)}',
'.ml-settings-body{position:relative;overflow-y:auto;flex:1;padding:0 10px 4px}',
'.ml-sgroup{margin:0}',
'.ml-accts-body{padding:2px 0}',
'.ml-acct-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-radius:12px;background:rgba(20,45,140,.4);border:1px solid rgba(255,180,60,.18);margin:2px 0 8px}',
'.ml-acct-head-name{font-size:13px;font-weight:800;color:#FFD54F;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}',
'.ml-acct-head-id{font-size:10px;color:rgba(100,160,255,.6);font-variant-numeric:tabular-nums}',
'.ml-acct-actions{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}',
'.ml-acct-btn{cursor:pointer;border:none;border-radius:14px;padding:5px 12px;font-size:11px;font-weight:800;font-family:inherit;color:#FFCA28;background:rgba(30,55,150,.5);transition:all .15s}',
'.ml-acct-btn:hover{color:#FFD54F;background:rgba(40,70,180,.6)}',
'.ml-acct-btn.ml-acct-new{background:rgba(0,140,90,.45)}',
'.ml-acct-btn.ml-acct-new:hover{background:rgba(0,170,110,.55)}',
'.ml-acct-btn.ml-acct-import{background:rgba(60,70,180,.5)}',
'.ml-acct-btn.ml-acct-export{background:rgba(120,60,180,.5)}',
'.ml-acct-btn.ml-acct-export:hover{background:rgba(150,80,210,.6)}',
'.ml-acct-btn.ml-acct-copy{background:rgba(80,60,150,.5)}',
'.ml-acct-btn.ml-acct-copy:hover{background:rgba(110,80,190,.6)}',
'.ml-acct-btn.ml-acct-sw{background:rgba(0,110,80,.55)}',
'.ml-acct-btn.ml-acct-sw:hover{background:rgba(0,150,110,.65)}',
'.ml-acct-btn.ml-acct-reload{background:rgba(150,110,0,.5)}',
'.ml-acct-btn.ml-acct-reload:hover{background:rgba(180,140,0,.6)}',
'.ml-acct-btn.ml-acct-del{background:rgba(150,30,30,.5)}',
'.ml-acct-btn.ml-acct-del:hover{background:rgba(180,40,40,.6)}',
'.ml-acct-btn.ml-acct-rename{background:rgba(20,90,160,.5)}',
'.ml-acct-btn.ml-acct-rename:hover{background:rgba(30,120,200,.6)}',
'.ml-acct-btn.ml-acct-edit-ok{background:rgba(0,120,80,.55)}',
'.ml-acct-btn.ml-acct-edit-ok:hover{background:rgba(0,160,110,.65)}',
'.ml-acct-btn.ml-acct-edit-cancel{background:rgba(150,30,30,.5)}',
'.ml-acct-btn.ml-acct-edit-cancel:hover{background:rgba(180,40,40,.6)}',
'.ml-acct-edit{display:flex;align-items:center;gap:6px;flex:1;min-width:0}',
'.ml-acct-edit-input{flex:1;min-width:0;background:rgba(20,40,120,.4);border:1px solid rgba(255,180,60,.25);border-radius:10px;color:#FFCA28;padding:4px 8px;font-size:12px;font-family:inherit;outline:none;box-sizing:border-box}',
'.ml-acct-row{display:flex;align-items:center;gap:8px;padding:7px 12px;margin:2px 0;border-radius:12px;background:rgba(30,55,150,.35);border:1px solid rgba(255,180,60,.12)}',
'.ml-acct-row.on{border-color:rgba(255,200,80,.5);background:rgba(50,90,200,.35)}',
'.ml-acct-name{flex:1;font-size:12px;font-weight:700;color:#FFCA28;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}',
'.ml-acct-id{font-size:10px;color:rgba(100,160,255,.55);font-variant-numeric:tabular-nums}',
'.ml-acct-act{font-size:12px;color:#55E08A;flex-shrink:0}',
'.ml-acct-empty{text-align:center;padding:12px;color:rgba(255,200,80,.5);font-size:11px;font-style:italic}',
'.ml-acct-msg{font-size:11px;color:#FF9A9A;padding:4px 8px;margin:4px 0}',
'.ml-acct-import-input{width:100%;background:rgba(20,40,120,.4);border:1px solid rgba(255,180,60,.25);border-radius:14px;color:#FFCA28;padding:5px 10px;font-size:11px;font-family:inherit;outline:none;box-sizing:border-box;margin:4px 0}',
'.ml-acct-pending{font-size:11px;color:#7CD48F;padding:6px 10px;border-radius:10px;background:rgba(0,120,80,.25);margin:4px 0}',
'.ml-acct-ipnote{font-size:10.5px;color:rgba(255,180,60,.6);line-height:1.45;margin-top:8px;display:block}',
'.ml-acct-howto{font-size:10.5px;color:rgba(255,220,120,.8);line-height:1.6;margin:6px 0 0;padding:7px 10px;border-radius:10px;background:rgba(20,45,140,.25);border:1px solid rgba(255,180,60,.12);white-space:pre-line;display:block}',
'.ml-tabs{display:flex;gap:0;padding:0 10px 0;margin-bottom:6px;border-bottom:2px solid rgba(255,180,0,.25)}',
'.ml-tab{padding:5px 8px;font-size:11px;font-weight:700;text-align:center;color:rgba(255,200,80,.5);cursor:pointer;transition:all .2s;border-radius:5px 5px 0 0;background:transparent;border:none;font-family:inherit;letter-spacing:.04em;border-bottom:2px solid transparent;margin-bottom:-2px}',
'.ml-tab:hover{color:rgba(255,200,80,.8);background:rgba(25,45,130,.3)}',
'.ml-tab.active{color:#FFB300;background:rgba(25,45,130,.4);border-bottom-color:#FFB300}',
'.ml-tab-content{display:none}',
'.ml-sheader{font-size:11px;font-weight:700;letter-spacing:.06em;color:#FFA726;padding:4px 10px 1px;margin-top:0;font-family:inherit;cursor:pointer;user-select:none;display:flex;align-items:center;gap:4px}',
'.ml-sheader::after{content:"";display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(255,180,60,.5);transition:transform .15s;flex-shrink:0;margin-left:2px}',
'.ml-sheader.collapsed::after{transform:rotate(-90deg)}',
'.ml-tab-content.active{display:block}',
'.ml-srow{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border-radius:20px;transition:all .12s;margin:1px 0;background:rgba(30,55,150,.35)}',
'.ml-srow:hover{background:rgba(40,70,180,.45)}',
'.ml-srow-label{font-size:12px;color:#FFCA28;flex:1;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-srow-value{font-size:12px;color:#FFD54F;font-variant-numeric:tabular-nums;min-width:28px;text-align:right;margin-right:6px;font-weight:700;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-toggle{position:relative;width:32px;height:18px;border-radius:9px;background:rgba(30,55,150,.4);border:1.5px solid rgba(100,140,220,.3);cursor:pointer;transition:all .2s;flex-shrink:0}',
'.ml-toggle::after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:6px;background:rgba(100,140,220,.5);transition:all .2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}',
'.ml-toggle.on{background:#FFB300;border-color:rgba(255,180,0,.8)}',
'.ml-toggle.on::after{left:17px;background:#0D1B4A;box-shadow:0 1px 4px rgba(0,0,0,.3)}',
'.ml-slider{-webkit-appearance:none;appearance:none;width:72px;height:4px;border-radius:2px;background:rgba(30,55,150,.4);outline:none;cursor:pointer;border:none}',
'.ml-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#FFD700;border:none;box-shadow:0 1px 4px rgba(0,0,0,.4),0 0 8px rgba(255,200,0,.25);cursor:pointer;transition:all .15s}',
'.ml-slider::-webkit-slider-thumb:hover{transform:scale(1.12);box-shadow:0 2px 12px rgba(255,200,0,.45)}',
'.ml-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#FFD700;border:none;box-shadow:0 1px 4px rgba(0,0,0,.4);cursor:pointer}',
'.ml-keybinds-body{padding:0}',
'.ml-krow{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border-radius:20px;cursor:pointer;transition:all .12s;margin:1px 0;background:rgba(30,55,150,.35)}',
'.ml-krow:hover{background:rgba(40,70,180,.45)}',
'.ml-krow.listening{background:rgba(255,180,0,.1);border:2px solid rgba(255,180,0,.4);border-radius:20px}',
'.ml-krow-action{font-size:12px;color:#FFCA28;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-krow-key{font-size:11px;color:#FFD54F;font-weight:700;padding:3px 10px;border-radius:16px;background:rgba(25,45,130,.45);border:none;min-width:36px;text-align:center;transition:all .15s;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-krow.listening .ml-krow-key{color:#FFD700;background:rgba(255,180,0,.15);border:1px solid rgba(255,180,0,.45)}',
'.ml-pets{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:480px;max-width:calc(100vw - 20px);max-height:82vh;display:none;z-index:100004;pointer-events:auto;overflow:hidden}',
'.ml-pets-head{position:relative;padding:8px 14px 4px;display:flex;align-items:center;justify-content:space-between}',
'.ml-pets-title{font-size:16px;font-weight:900;color:#FFD700;letter-spacing:.04em;}',
'.ml-pets-count{font-size:10px;color:rgba(255,180,60,.45);margin-left:8px;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-pets-filter{position:relative;padding:4px 10px;border-bottom:2px solid #FFB300}',
'.ml-pets-search{width:100%;background:rgba(20,40,120,.45);border:1.5px solid rgba(255,180,60,.25);color:#FFCA28;font-size:11px;padding:5px 10px;border-radius:20px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;outline:none;box-sizing:border-box;transition:all .15s}',
'.ml-pets-search:focus{border-color:rgba(255,180,60,.5);box-shadow:0 0 12px rgba(255,180,0,.12)}',
'.ml-pets-search::placeholder{color:rgba(100,160,255,.4)}',
'.ml-pets-body{position:relative;overflow-y:auto;flex:1;padding:0}',
'.ml-ptable{width:100%;border-collapse:collapse;font-size:10px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-ptable th{position:sticky;top:0;background:rgba(12,20,75,.98);color:#FFA726;font-size:10px;letter-spacing:.12em;padding:4px 6px;text-align:left;cursor:pointer;border-bottom:2px solid #FFB300;white-space:nowrap;transition:color .12s;z-index:1;font-weight:700}',
'.ml-ptable th:hover{color:#FFD700}',
'.ml-ptable th.sort-asc::after{content:" ▲";font-size:8px}',
'.ml-ptable th.sort-desc::after{content:" ▼";font-size:8px}',
'.ml-ptable td{padding:2px 5px;border-bottom:1px solid rgba(100,140,220,.08);color:rgba(255,220,100,.85);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px}',
'.ml-ptable tr:hover td{background:rgba(40,70,180,.2)}',
'.ml-ptable .own-you{color:rgba(80,255,120,.9);font-weight:600}',
'.ml-ptable .own-wild{color:rgba(255,190,60,.85);font-style:italic}',
'.ml-ptable .pet-var{color:rgba(100,180,255,.85);font-style:italic}',
'.ml-ptable .pet-mut-Golden{color:rgba(255,215,0,.95)}',
'.ml-ptable .pet-mut-Diamond{color:rgba(80,180,255,.95)}',
'.ml-ptable .pet-mut-Emerald{color:rgba(0,200,100,.95)}',
'.ml-ptable .pet-mut-Rainbow{color:rgba(255,80,80,.95)}',
'.ml-ptable .pet-mut-Galaxy{color:rgba(160,80,255,.95)}',
'.ml-ptable .pet-mut-Hacked{color:rgba(120,255,120,.95)}',
'.ml-ptable .pet-rar{font-size:10px;letter-spacing:.05em}',
'.pet-tp{background:rgba(30,55,150,.5);border:none;color:#FFCA28;font-size:10px;padding:3px 8px;border-radius:16px;cursor:pointer;transition:all .12s;line-height:1}',
'.pet-tp:hover{background:rgba(40,70,180,.6);color:#FFD54F}',
'.pet-grab{background:rgba(60,200,60,.15);border:1px solid rgba(60,200,60,.3);color:rgba(140,255,140,.8);font-size:10px;padding:2px 6px;border-radius:16px;cursor:pointer;transition:all .12s;line-height:1;margin-left:2px}',
'.pet-grab:hover{background:rgba(60,200,60,.3);color:#fff;border-color:rgba(80,230,80,.6)}',
'.ml-pets-empty{color:rgba(100,160,255,.45);text-align:center;padding:15px 8px;font-size:11px;font-style:italic;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-slots-pop{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:320px;max-width:calc(100vw - 20px);max-height:70vh;display:none;z-index:100003;pointer-events:auto;overflow:hidden}',
'.ml-slots-pop-head{padding:8px 14px 4px;display:flex;align-items:center;justify-content:space-between}',
'.ml-slots-pop-title{font-size:15px;font-weight:900;color:#FFD700;letter-spacing:.04em;}',
'.ml-slots-pop-body{overflow-y:auto;flex:1;padding:2px 8px 4px}',
'.ml-slot{display:flex;align-items:center;gap:5px;padding:4px 10px;margin:1px 0;border-radius:20px;transition:all .12s;border:none;background:rgba(30,55,150,.35)}',
'.ml-slot:hover{background:rgba(40,70,180,.45)}',
'.ml-slot-num{font-size:10px;color:rgba(100,160,255,.5);font-weight:700;min-width:12px;text-align:right;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-slot-info{flex:1;font-size:11px;color:rgba(100,160,255,.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-slot-info.filled{color:#FFCA28}',
'.ml-slot-go{background:rgba(30,55,150,.5);border:none;color:#FFCA28;font-size:9px;padding:3px 8px;border-radius:16px;cursor:pointer;transition:all .12s;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-slot-go:hover{background:rgba(40,70,180,.6);color:#FFD54F}',
'.ml-slot-go.empty{opacity:.35;pointer-events:none}',
'.ml-slot-set{background:rgba(60,180,60,.12);border:1px solid rgba(60,180,60,.25);color:rgba(140,230,140,.8);font-size:9px;padding:3px 8px;border-radius:16px;cursor:pointer;transition:all .12s;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-slot-set:hover{background:rgba(60,180,60,.25);color:#fff}',
'.ml-slot-clr{background:rgba(220,60,60,.12);border:1px solid rgba(220,60,60,.25);color:rgba(255,140,140,.8);font-size:9px;padding:3px 6px;border-radius:16px;cursor:pointer;transition:all .12s;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-slot-clr:hover{background:rgba(220,60,60,.25);color:#fff}',
'.ml-slot-clr.empty{opacity:.35;pointer-events:none}',
'.ml-snipe{position:fixed;top:60px;right:10px;width:360px;max-width:calc(100vw - 20px);max-height:calc(100vh - 20px);min-height:400px;display:none;z-index:100005;pointer-events:auto;overflow:hidden auto}',
'.ml-accounts{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:440px;max-width:calc(100vw - 20px);max-height:82vh;display:none;z-index:2147483000;pointer-events:auto;overflow:hidden}',
'.ml-accounts-head{position:relative;padding:10px 14px 6px;display:flex;align-items:center;justify-content:space-between}',
'.ml-accounts-title{font-size:20px;font-weight:900;color:#FFD700;letter-spacing:.04em;-webkit-text-stroke:.5px rgba(0,0,0,.25);text-shadow:0 2px 8px rgba(255,180,0,.25),0 1px 3px rgba(0,0,0,.4)}',
'.ml-accounts-close{cursor:pointer;background:#c62828;border:none;color:#fff;font-size:16px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-family:inherit;line-height:1;transition:all .15s;font-weight:900}',
'.ml-accounts-close:hover{background:#e53935;transform:scale(1.08)}',
'.ml-accounts-body{overflow-y:auto;flex:1;padding:4px 14px 10px;color:rgba(255,220,100,.88);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:13px;line-height:1.5;scrollbar-width:thin;scrollbar-color:rgba(255,180,60,.35) rgba(30,50,140,.2);-webkit-overflow-scrolling:touch;touch-action:pan-y}',
'.ml-snipe-head{padding:8px 14px 4px;display:flex;align-items:center;justify-content:space-between}',
'.ml-snipe-title{font-size:16px;font-weight:900;color:#FFD700;letter-spacing:.04em;}',
'.ml-snipe-body{padding:4px 10px 6px;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}',
'.ml-snipe-search{width:100%;background:rgba(20,40,120,.45);border:1.5px solid rgba(255,180,60,.25);color:#FFCA28;font-size:11px;padding:5px 10px;border-radius:20px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;outline:none;box-sizing:border-box;transition:all .15s}',
'.ml-snipe-search:focus{border-color:rgba(255,180,60,.5);box-shadow:0 0 12px rgba(255,180,0,.12)}',
'.ml-snipe-search::placeholder{color:rgba(100,160,255,.4)}',
'.ml-snipe-search-row{display:flex;align-items:center;gap:4px;position:relative}',
'.ml-snipe-hint-icon:hover{color:#FFB300;border-color:rgba(255,180,60,.55);background:rgba(255,180,0,.1)}',
'.ml-snipe-hint-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid rgba(100,160,255,.35);color:rgba(100,160,255,.55);font-size:10px;font-weight:700;cursor:help;flex-shrink:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;transition:all .15s}',
'.ml-snipe-hint-tip{position:absolute;top:calc(100% + 4px);left:0;right:0;white-space:normal;background:rgba(10,18,60,.97);border:1px solid rgba(255,180,60,.35);border-radius:5px;padding:4px 8px;font-size:10px;font-weight:400;color:rgba(255,220,100,.9);pointer-events:none;display:none;z-index:99999;line-height:1.4;text-align:center}',
'.ml-snipe-toggle{width:100%;margin-top:6px;padding:5px 0;border-radius:16px;border:none;background:rgba(30,55,150,.45);color:#FFCA28;font-size:11px;font-weight:700;cursor:pointer;transition:all .15s;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-snipe-toggle:hover{background:rgba(40,70,180,.55)}',
'.ml-snipe-toggle.active{background:rgba(60,200,60,.15);border:1.5px solid rgba(60,200,60,.3);color:rgba(140,255,140,.95)}',
'.ml-snipe-types{margin-top:2px;font-size:9.5px;color:rgba(255,220,100,.75);line-height:1.4;flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,180,60,.3) transparent;-webkit-overflow-scrolling:touch;touch-action:pan-y;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-snipe-matches + .ml-snipe-probe{margin-top:6px;border-top:1px solid rgba(100,140,220,.15);padding-top:5px}',
'.ml-snipe-tbl{width:100%;border-collapse:collapse;font-size:10px}',
'.ml-snipe-tbl th{text-align:left;color:rgba(100,160,255,.6);font-weight:600;padding:2px 4px;border-bottom:1px solid rgba(100,140,220,.15)}',
'.ml-snipe-tbl td{padding:2px 4px;border-bottom:1px solid rgba(100,140,220,.08)}',
'.ml-snipe-tbl td:last-child{white-space:nowrap}',
'.ml-snipe-tbl th[data-sort="searches"],.ml-snipe-tbl td.ml-searches{width:1%;white-space:nowrap;text-align:center}',
'.ml-snipe-tbl .ml-top-owner{width:84px;min-width:84px;max-width:84px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}',
'.ml-snipe-tbl .lock-0{color:rgba(100,255,100,.8)}',
'.ml-snipe-tbl .lock-lo{color:rgba(255,220,100,.8)}',
'.ml-snipe-tbl .lock-hi{color:rgba(255,100,100,.6)}',
'.ml-snipe-tbl th[data-sort],.ml-snipe-tbl th[data-msort]{cursor:pointer;user-select:none}',
'.ml-snipe-tbl th[data-sort]:hover,.ml-snipe-tbl th[data-msort]:hover{color:rgba(255,215,0,.95)}',
'.ml-snipe-join{background:linear-gradient(135deg,#FF9F1A,#FF6F00);border:1px solid rgba(255,215,120,.55);color:#fff;font-size:9px;font-weight:800;padding:3px 10px;border-radius:14px;cursor:pointer;transition:all .12s;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.35)}',
'.ml-snipe-join:hover{background:linear-gradient(135deg,#FFB347,#FF8C00);color:#fff;box-shadow:0 0 8px rgba(255,160,0,.45)}',
'.ml-snipe-opts-toggle{display:flex;align-items:center;gap:4px;margin-top:4px;padding:4px 8px;border-radius:12px;cursor:pointer;font-size:10px;font-weight:700;color:rgba(255,180,60,.65);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;user-select:none;transition:all .15s}',
'.ml-snipe-opts-toggle:hover{color:#FFB300;background:rgba(30,55,150,.35)}',
'.ml-snipe-opts-toggle::after{content:"";display:inline-block;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:5px solid currentColor;transition:transform .15s;flex-shrink:0}',
'.ml-snipe-opts-toggle.open::after{transform:rotate(90deg)}',
'.ml-snipe-opts{margin-top:2px}',
'.ml-snipe-opt{display:flex;align-items:center;gap:4px;margin-top:4px;cursor:pointer;font-size:10px;color:rgba(255,220,100,.85);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;position:relative}',
'.ml-snipe-opt-label{white-space:nowrap}',
'.ml-snipe-hotkey-hint{font-size:9px;color:rgba(255,180,60,.5);margin-top:4px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}',
'.ml-snipe-tbl .pet-mut-Golden{color:rgba(255,215,0,.95)}',
'.ml-snipe-tbl .pet-mut-Diamond{color:rgba(80,180,255,.95)}',
'.ml-snipe-tbl .pet-mut-Emerald{color:rgba(0,200,100,.95)}',
'.ml-snipe-tbl .pet-mut-Rainbow{color:rgba(255,80,80,.95)}',
'.ml-snipe-tbl .pet-mut-Galaxy{color:rgba(160,80,255,.95)}',
'.ml-snipe-tbl .pet-mut-Hacked{color:rgba(120,255,120,.95)}',
'.ml-rng{position:fixed;top:60px;left:10px;width:380px;height:600px;max-width:calc(100vw - 20px);max-height:calc(100vh - 20px);display:none;z-index:100006;pointer-events:auto;overflow:hidden}',
'.ml-rng-head{padding:8px 14px 4px;display:flex;align-items:center;justify-content:space-between}',
'.ml-rng-title{font-size:16px;font-weight:900;color:#FFD700;letter-spacing:.04em;}',
'.ml-rng-body{padding:4px 10px 6px;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}',
'.ml-rng-body .ml-sgroup{flex:1;min-height:0;overflow-y:auto}',
'.ml-rng-resize{height:10px;margin:2px 0;cursor:ns-resize;border-radius:4px;background:rgba(100,140,220,.15);flex:0 0 auto;display:flex;align-items:center;justify-content:center}',
'.ml-rng-resize:hover{background:rgba(255,180,60,.3)}',
'.ml-rng-resize::after{content:"";display:block;width:34px;height:3px;border-radius:2px;background:rgba(255,200,60,.35)}',
'.ml-rng-loghead{font-size:11px;font-weight:700;letter-spacing:.06em;color:#FFA726;padding:6px 4px 2px;border-top:1px solid rgba(100,140,220,.15)}',
'.ml-rng-log{height:150px;min-height:50px;overflow-y:auto;margin-top:2px;font-size:10px;font-family:ui-monospace,Menlo,Consolas,monospace;line-height:1.5;scrollbar-width:thin;scrollbar-color:rgba(255,180,60,.3) transparent}',
'.ml-rng-log-item{padding:2px 4px;border-radius:6px;color:rgba(255,220,100,.85);border-bottom:1px solid rgba(100,140,220,.08);white-space:pre-wrap;word-break:break-word}',
'.ml-rng-log-item:first-child{color:rgba(255,235,150,.98)}',
'.ml-rng-log-item.ml-rng-log-ok{color:#63F07E}',
'.ml-rng-log-item.ml-rng-log-fail{color:#FF6B6B}',
'.ml-carry-timer{position:fixed;bottom:18px;left:18px;display:none;padding:6px 14px;border-radius:25px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px;font-weight:800;color:#FFD700;background:rgba(15,25,90,.92);border:1.5px solid rgba(255,180,60,.4);box-shadow:0 4px 16px rgba(0,0,0,.3),0 0 12px rgba(255,180,0,.1);z-index:100010;pointer-events:none;letter-spacing:.03em}',
'.ml-ban{position:fixed;top:0;left:0;right:0;bottom:0;display:none;z-index:200000;background:rgba(0,0,0,.82);align-items:center;justify-content:center;pointer-events:auto}',
'.ml-ban.open{display:flex}',
'.ml-ban-box{width:460px;max-width:90vw;max-height:82vh;overflow:hidden;display:flex;flex-direction:column}',
'.ml-ban-head{padding:10px 14px 6px;text-align:center}',
'.ml-ban-title{font-size:18px;font-weight:900;color:#FFD54F;letter-spacing:.03em}',
'.ml-ban-sub{font-size:13px;color:rgba(255,255,255,.45);margin-top:4px}',
'.ml-ban-body{overflow-y:auto;flex:1;padding:4px 14px 8px;color:rgba(255,255,255,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px;line-height:1.7;text-align:left}',
'.ml-ban-body p{margin:0 0 12px}',
'.ml-ban-body p:last-child{margin:0;color:rgba(255,255,255,.4);font-size:12px}',
'.ml-ban-vpns{background:rgba(20,40,130,.5);border-radius:8px;padding:10px 14px;margin-bottom:10px}',
'.ml-ban-vpns a{color:#FFD54F}',
'.ml-ban-foot{margin-top:auto;padding:8px 18px 0;text-align:center;display:flex;flex-direction:column;gap:8px}',
'.ml-ban-close,.ml-warn-close{cursor:pointer;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.7);font-size:13px;padding:7px 20px;border-radius:8px;font-family:inherit;font-weight:700;letter-spacing:.03em;transition:all .15s}',
'.ml-ban-close:hover,.ml-warn-close:hover{background:rgba(255,255,255,.2);color:#fff}',
'.ml-warn{position:fixed;top:0;left:0;right:0;bottom:0;display:none;z-index:200001;background:rgba(0,0,0,.82);align-items:center;justify-content:center;pointer-events:auto}',
'.ml-warn.open{display:flex}',
'.ml-warn-box{width:420px;max-width:90vw;max-height:82vh;overflow:hidden;display:flex;flex-direction:column}',
'.ml-warn-head{padding:10px 14px 6px;text-align:center}',
'.ml-warn-title{font-size:18px;font-weight:900;color:#FFD54F;letter-spacing:.03em}',
'.ml-warn-body{padding:4px 14px 8px;overflow-y:auto;flex:1;min-height:0;color:rgba(255,255,255,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px;line-height:1.7;text-align:center}',
'.ml-warn-foot{margin-top:auto;padding:8px 18px 0;text-align:center;display:flex;flex-direction:column;gap:8px}',
'.ml-warn-lang{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:rgba(20,40,120,.4);border:1px solid rgba(255,180,60,.25);border-radius:16px;color:#FFCA28;padding:4px 20px 4px 8px;font-size:11px;font-family:inherit;font-weight:700;outline:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'8\' height=\'6\' viewBox=\'0 0 8 6\'%3E%3Cpath fill=\'%23FFCA28\' d=\'M0 0l4 6 4-6z\'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:8px 6px;line-height:1.2}',
'.ml-warn-lang:hover{border-color:rgba(255,180,60,.5)}',
'.ml-warn-lang:focus{border-color:rgba(255,180,60,.55);box-shadow:0 0 8px rgba(255,180,0,.12)}',
'.ml-warn-lang option{background:rgba(15,25,90,.98);color:#FFCA28;font-size:11px;padding:4px 8px}',
'.ml-warn-lang-row{display:flex;align-items:center;justify-content:center;gap:8px}',
'.ml-warn-lang-label{font-size:12px;color:rgba(255,255,255,.45)}',
'.ml-lang-sel{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:rgba(20,40,120,.4);border:1px solid rgba(255,180,60,.25);border-radius:16px;color:#FFCA28;padding:4px 20px 4px 8px;font-size:11px;font-family:inherit;font-weight:700;outline:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'8\' height=\'6\' viewBox=\'0 0 8 6\'%3E%3Cpath fill=\'%23FFCA28\' d=\'M0 0l4 6 4-6z\'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;padding-right:20px}',
'.ml-lang-sel:hover{border-color:rgba(255,180,60,.5)}',
'.ml-lang-sel:focus{border-color:rgba(255,180,60,.55);box-shadow:0 0 8px rgba(255,180,0,.12)}',
'.ml-lang-sel option{background:rgba(15,25,90,.98);color:#FFCA28;font-size:11px;padding:4px 8px}',
'.ml-reticle{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:2147483647;display:none;width:28px;height:28px}',
'.ml-reticle-ring{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(30,130,255,0.9);box-shadow:0 0 8px rgba(30,130,255,0.5)}',
'.ml-reticle-dot{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:4px;border-radius:50%;background:rgba(255,200,0,0.95);box-shadow:0 0 5px rgba(255,200,0,0.8)}',
'.ml-target-reticle{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:2147483647;display:none;width:8px;height:8px;border-radius:50%;background:rgba(255,40,40,0.9);box-shadow:0 0 6px rgba(255,40,40,0.7)}',
'.ml-coords{position:fixed;top:8px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:#fff;font-family:monospace;font-size:13px;padding:3px 10px;border-radius:7px;pointer-events:none;white-space:pre-line;z-index:2147483647;display:none;letter-spacing:.05em;text-align:center;user-select:none;-webkit-user-select:none;-moz-user-select:none}',
].join('');
_sr.appendChild(s);
const h = document.createElement('div');
const carryTimer = document.createElement('div');
carryTimer.classList.add('ml-carry-timer');
_sr.appendChild(carryTimer);
h.classList.add('ml-hud');
h.innerHTML = '<span class="ml-fly"></span><span class="ml-invis"></span><span class="ml-lock"></span><span class="ml-tc"></span><span class="ml-tcl"></span><span class="ml-cfg"></span><span class="ml-help"></span><span class="ml-snipe-btn"></span><span class="ml-pets-btn"></span><span class="ml-rng-btn"></span><span class="ml-tp"></span><span class="ml-spr"></span><span class="ml-slots"></span><span class="ml-prv"></span><span class="ml-acct-btn"></span>';
_sr.appendChild(h);
const reticle = document.createElement('div');
reticle.classList.add('ml-reticle');
reticle.innerHTML = '<div class="ml-reticle-ring"></div><div class="ml-reticle-dot"></div>';
_sr.appendChild(reticle);
const coordsEl = document.createElement('div');
coordsEl.classList.add('ml-coords');
_sr.appendChild(coordsEl);
const targetReticle = document.createElement('div');
targetReticle.classList.add('ml-target-reticle');
_sr.appendChild(targetReticle);
const d = document.createElement('div');
d.classList.add('ml-panel', 'ml-dialog');
d.innerHTML = `<div class="ml-dialog-head"><span class="ml-dialog-title">${T.help_title}</span><button class="ml-dialog-close">${T.close}</button></div><div class="ml-dialog-body">${DESCRIPTION}</div>${FEEDBACK_FOOTER_HTML}`;
_sr.appendChild(d);
const ban = document.createElement('div');
ban.classList.add('ml-ban');
ban.innerHTML = `<div class="ml-panel ml-ban-box"><div class="ml-ban-head"><div class="ml-ban-title">\uD83D\uDEE1\uFE0F ${T.ban_title}</div><div class="ml-ban-sub">${T.ban_sub}</div></div><div class="ml-ban-body"><p>${T.ban_body}</p><div class="ml-ban-vpns"><div style="font-size:15px;color:#FFD700;margin-bottom:10px">${T.ban_pick}</div><div style="margin-bottom:10px"><b style="font-size:14px">\uD83C\uDF1F Cloudflare WARP</b> <span style="color:rgba(255,255,255,.6);font-size:13px">\u2014 ${T.ban_warp}</span><br><a href="https://one.one.one.one" target="_blank" style="font-size:13px">one.one.one.one</a> <span style="color:rgba(255,255,255,.4);font-size:12px">\u2022 ${T.ban_warp_store}</span></div><div style="display:flex;flex-direction:column;gap:4px;font-size:13px;color:rgba(255,255,255,.6)"><span>\u2022 <b>Proton VPN</b> \u2014 ${T.ban_proton} <a href="https://protonvpn.com" target="_blank">(protonvpn.com)</a></span></div></div><p>${T.ban_steps}</p></div><div class="ml-ban-foot"><button class="ml-ban-close">${T.ban_ok}</button>${FEEDBACK_FOOTER_HTML}</div></div>`;
_sr.appendChild(ban);
$('ml-ban-close').addEventListener('click', () => { ban.classList.remove('open'); _dbgLog('ui', 'ban-closed'); });
const warn = document.createElement('div');
warn.classList.add('ml-warn');
_sr.appendChild(warn);
if (!_dbGet(_K_WARN)) {
warn.innerHTML = `<div class="ml-panel ml-warn-box"><div class="ml-warn-head"><div class="ml-warn-title">\u26A0\uFE0F ${T.warn_title}</div></div><div class="ml-warn-body">${T.warn_body}</div><div class="ml-warn-foot"><div class="ml-warn-lang-row"><span class="ml-warn-lang-label">${T.sh_language}</span><select class="ml-warn-lang">${_langOptions()}</select></div><button class="ml-warn-close">${T.warn_ok}</button>${FEEDBACK_FOOTER_HTML}</div></div>`;
warn.classList.add('open');
warn.querySelector('.ml-warn-close').addEventListener('click', () => {
warn.classList.remove('open');
try { _dbSet(_K_WARN, '1'); } catch (e) {}
});
warn.querySelector('.ml-warn-lang').addEventListener('change', e => {
_setLang(e.target.value);
_applyLangToDOM();
});
}
const plist = document.createElement('div');
plist.classList.add('ml-panel', 'ml-plist');
plist.innerHTML = '<div class="ml-plist-head"><div style="display:flex;align-items:baseline;gap:6px"><span class="ml-plist-title">' + T.players_title + '</span><span class="ml-plist-timer">10s</span></div><div style="display:flex;gap:6px;align-items:center"><button class="ml-plist-refresh">' + T.refresh + '</button><button class="ml-plist-close">' + T.close + '</button></div></div><div class="ml-plist-body"><div class="ml-plist-empty">' + T.players_empty + '</div></div>' + FEEDBACK_FOOTER_HTML;
_sr.appendChild(plist);
const settings = document.createElement('div');
settings.classList.add('ml-panel', 'ml-settings');
settings.innerHTML = `<div class="ml-settings-head"><span class="ml-settings-title">${T.settings_title}<span class="ml-settings-ver">v${ML_VERSION}</span></span><div style="display:flex;gap:6px;align-items:center"><button class="ml-settings-reset">${T.settings_reset}</button><button class="ml-settings-close">${T.close}</button></div></div>
<div class="ml-tabs">
<div class="ml-tab active" data-tab="gameplay">${T.tab_gameplay}</div>
<div class="ml-tab" data-tab="economy">${T.tab_economy}</div>
<div class="ml-tab" data-tab="audio">${T.tab_audio}</div>
<div class="ml-tab" data-tab="hud">${T.tab_hud}</div>
<div class="ml-tab" data-tab="keys">${T.tab_keys}</div>
<div class="ml-tab" data-tab="advanced">${T.tab_advanced}</div>
</div>
<div class="ml-settings-body">
<div class="ml-tab-content active" data-tab="gameplay">
<div class="ml-sgroup">
<div class="ml-sheader" data-ml-sh="sh_movement">${T.sh_movement}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_fly">${T.s_fly}</span><div class="ml-toggle on ml-f-fly"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_noclip">${T.s_noclip}</span><div class="ml-toggle ml-f-noclip"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_walk_up_walls">${T.s_walk_up_walls}</span><div class="ml-toggle ml-f-walkupwalls"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_carry_normalize">${T.s_carry_normalize}</span><div class="ml-toggle on ml-f-carrynormalize"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_fly_emotes">${T.s_fly_emotes}</span><div class="ml-toggle on ml-f-flyemotes"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_cont_cuddle">${T.s_cont_cuddle}</span><div class="ml-toggle on ml-f-cuddle-follow"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_base_speed">${T.s_base_speed}</span><span class="ml-srow-value ml-sv-base">${SPEED_DEFAULT}</span><input type="range" class="ml-slider ml-s-base" min="0" max="20" value="${SPEED_DEFAULT}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_jump_mult">${T.s_jump_mult}</span><span class="ml-srow-value ml-sv-jumpmult">${_feats.jumpMult}x</span><input type="range" class="ml-slider ml-s-jumpmult" min="0" max="10" step="0.1" value="${_feats.jumpMult}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_grav_mult">${T.s_grav_mult}</span><span class="ml-srow-value ml-sv-gravmult">${_feats.gravMult}x</span><input type="range" class="ml-slider ml-s-gravmult" min="0.01" max="3" step="0.01" value="${_feats.gravMult}"></div>
<div class="ml-sheader" data-ml-sh="sh_camera">${T.sh_camera}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_first_person">${T.s_first_person}</span><div class="ml-toggle ml-f-firstperson"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_fov_first_person">${T.s_fov_first_person}</span><span class="ml-srow-value ml-sv-fovfp">${_feats.fovFirstPerson}°</span><input type="range" class="ml-slider ml-s-fovfp" min="50" max="130" step="1" value="${_feats.fovFirstPerson}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_fov_third_person">${T.s_fov_third_person}</span><span class="ml-srow-value ml-sv-fovtp">${_feats.fovThirdPerson}°</span><input type="range" class="ml-slider ml-s-fovtp" min="50" max="130" step="1" value="${_feats.fovThirdPerson}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_fov_vertical_mult">${T.s_fov_vertical_mult}</span><span class="ml-srow-value ml-sv-fovvm">${_feats.fovVerticalMult}x</span><input type="range" class="ml-slider ml-s-fovvm" min="0.5" max="3" step="0.05" value="${_feats.fovVerticalMult}"></div>
<div class="ml-sheader" data-ml-sh="sh_defense">${T.sh_defense}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_invincibility">${T.s_invincibility}</span><div class="ml-toggle on ml-f-invincible"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_anti_kb">${T.s_anti_kb}</span><div class="ml-toggle on ml-f-antiknockback"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_invisible">${T.s_invisible}</span><div class="ml-toggle ml-f-invisible"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_xray_infection">${T.s_xray_infection}</span><div class="ml-toggle on ml-f-xrayinfection"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_invis_on_fly">${T.s_invis_on_fly}</span><div class="ml-toggle ml-f-autoinvisonfly"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_ghost_mode">${T.s_ghost_mode}</span><div class="ml-toggle on ml-f-ghost"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_flee_intruder">${T.s_flee_intruder}</span><div class="ml-toggle on ml-f-flee"></div></div>
</div>
</div>
<div class="ml-tab-content" data-tab="economy">
<div class="ml-sgroup">
<div class="ml-sheader" data-ml-sh="sh_waves">${T.sh_waves}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_vip_waves">${T.s_auto_vip_waves}</span><div class="ml-toggle on ml-f-autovipwaves"></div></div>
<div class="ml-sheader" data-ml-sh="sh_steal_a_pet">${T.sh_steal_a_pet}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_lock">${T.s_auto_lock}</span><div class="ml-toggle ml-f-autolock"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_collect">${T.s_auto_collect}</span><div class="ml-toggle ml-f-autocollect"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_collect_interval">${T.s_collect_interval}</span><span class="ml-srow-value ml-sv-acinterval">${autoCollectInterval}s</span><input type="range" class="ml-slider ml-s-acinterval" min="10" max="120" value="${autoCollectInterval}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_pet_pickup_radius">${T.s_pet_pickup_radius}</span><span class="ml-srow-value ml-sv-petradius">${_feats.petPickupRadius}</span><input type="range" class="ml-slider ml-s-petradius" min="1.5" max="200" step="0.5" value="${_feats.petPickupRadius}"></div>
<div class="ml-sheader" data-ml-sh="sh_tower">${T.sh_tower}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_diamonds_tower">${T.s_diamonds_tower}</span><div class="ml-toggle on ml-f-freediamonds"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_tower_loop">${T.s_tower_loop}</span><div class="ml-toggle ml-f-tower-loop"></div></div>
<div class="ml-sheader" data-ml-sh="sh_misc_multi">${T.sh_misc_multi}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_daily_coins">${T.s_daily_coins}</span><div class="ml-toggle on ml-f-freemoney"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_stars">${T.s_stars}</span><div class="ml-toggle on ml-f-freestars"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_fountain">${T.s_auto_fountain}</span><div class="ml-toggle ml-f-autofountain"></div></div>
</div>
</div>
<div class="ml-tab-content" data-tab="audio">
<div class="ml-sgroup">
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_carry_vol">${T.s_carry_vol}</span><span class="ml-srow-value ml-sv-carryvol">${carryTuneVol}%</span><input type="range" class="ml-slider ml-s-carryvol" min="0" max="100" value="${carryTuneVol}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_carry_tune">${T.s_carry_tune}</span><select class="ml-sel ml-s-carrytune" style="background:rgba(20,40,120,.4);border:1px solid rgba(255,180,60,.25);border-radius:16px;color:#FFCA28;padding:4px 8px;font-size:11px;font-family:inherit;font-weight:700;outline:none;cursor:pointer"><option value="default"${carryTune === 'default' ? ' selected' : ''}>${T.carry_tune_default}</option><option value="silent"${carryTune === 'silent' ? ' selected' : ''}>${T.carry_tune_silent}</option><option value="ambient"${carryTune === 'ambient' ? ' selected' : ''}>${T.carry_tune_ambient}</option><option value="blues"${carryTune === 'blues' ? ' selected' : ''}>${T.carry_tune_blues}</option><option value="chiptune"${carryTune === 'chiptune' ? ' selected' : ''}>${T.carry_tune_chiptune}</option><option value="classical"${carryTune === 'classical' ? ' selected' : ''}>${T.carry_tune_classical}</option><option value="electronic"${carryTune === 'electronic' ? ' selected' : ''}>${T.carry_tune_electronic}</option><option value="epic"${carryTune === 'epic' ? ' selected' : ''}>${T.carry_tune_epic}</option><option value="folk"${carryTune === 'folk' ? ' selected' : ''}>${T.carry_tune_folk}</option><option value="funk"${carryTune === 'funk' ? ' selected' : ''}>${T.carry_tune_funk}</option><option value="jazz"${carryTune === 'jazz' ? ' selected' : ''}>${T.carry_tune_jazz}</option><option value="lofi"${carryTune === 'lofi' ? ' selected' : ''}>${T.carry_tune_lofi}</option><option value="metal"${carryTune === 'metal' ? ' selected' : ''}>${T.carry_tune_metal}</option><option value="pop"${carryTune === 'pop' ? ' selected' : ''}>${T.carry_tune_pop}</option><option value="punk"${carryTune === 'punk' ? ' selected' : ''}>${T.carry_tune_punk}</option><option value="reggae"${carryTune === 'reggae' ? ' selected' : ''}>${T.carry_tune_reggae}</option><option value="rock"${carryTune === 'rock' ? ' selected' : ''}>${T.carry_tune_rock}</option></select></div>
</div>
</div>
<div class="ml-tab-content" data-tab="hud">
<div class="ml-sgroup">
<div class="ml-sheader" data-ml-sh="sh_chat">${T.sh_chat}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_chat_fade">${T.s_chat_fade}</span><span class="ml-srow-value ml-sv-chatfade">${chatFadeTime}s</span><input type="range" class="ml-slider ml-s-chatfade" min="5" max="300" value="${chatFadeTime}"></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_name_colors">${T.s_name_colors}</span><div class="ml-toggle ml-f-name-colors"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_chat_enhance">${T.s_chat_enhance}</span><div class="ml-toggle ml-f-chat-enhance"></div></div>
<div class="ml-sheader" data-ml-sh="sh_overlays">${T.sh_overlays}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_showcoords">${T.s_showcoords}</span><div class="ml-toggle ml-f-showcoords"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_showfps">${T.s_showfps}</span><div class="ml-toggle ml-f-showfps"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_showtargetinfo">${T.s_showtargetinfo}</span><div class="ml-toggle ml-f-showtargetinfo"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_showobj">${T.s_showobj}</span><div class="ml-toggle ml-f-showobj"></div></div>
<div class="ml-sheader" data-ml-sh="sh_behaviour">${T.sh_behaviour}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_protips">${T.s_protips}</span><div class="ml-toggle ml-f-protips"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_hideprotips">${T.s_hideprotips}</span><div class="ml-toggle ml-f-hideprotips"></div></div>
<div class="ml-sheader" data-ml-sh="sh_buttons">${T.sh_buttons}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_fly">${T.h_fly}</span><div class="ml-toggle on ml-f-show-fly"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_speed">${T.h_speed}</span><div class="ml-toggle on ml-f-show-sprint"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_waypoints">${T.h_waypoints}</span><div class="ml-toggle on ml-f-show-waypoints"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_autolock">${T.h_autolock}</span><div class="ml-toggle on ml-f-show-autolock"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_invisible">${T.h_invisible}</span><div class="ml-toggle on ml-f-show-invis"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_cuddle">${T.h_cuddle}</span><div class="ml-toggle on ml-f-show-cuddle"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_pets">${T.h_pets}</span><div class="ml-toggle on ml-f-show-pets"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_snipe">${T.h_snipe}</span><div class="ml-toggle on ml-f-show-snipe"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_help">${T.h_help}</span><div class="ml-toggle on ml-f-show-help"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_settings">${T.h_settings}</span><div class="ml-toggle on ml-f-show-cfg"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_prv">${T.h_prv}</span><div class="ml-toggle on ml-f-show-prv"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_rng">${T.h_rng}</span><div class="ml-toggle on ml-f-show-rng"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_accts">${T.h_accts}</span><div class="ml-toggle on ml-f-show-accts"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_tc">${T.h_tc}</span><div class="ml-toggle on ml-f-show-tc"></div></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="h_tcl">${T.h_tcl}</span><div class="ml-toggle on ml-f-show-tcl"></div></div>
</div>
</div>
<div class="ml-tab-content" data-tab="keys">
<div class="ml-sgroup ml-keybinds-body"></div>
</div>
<div class="ml-tab-content" data-tab="advanced">
<div class="ml-sgroup">
<div class="ml-sheader" data-ml-sh="sh_language">${T.sh_language}</div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="sh_language">${T.sh_language}</span><select class="ml-lang-sel">${_langOptions()}</select></div>
<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_show_exp_modes">${T.s_show_exp_modes}</span><div class="ml-toggle ml-f-showexpmodes"></div></div>
<div class="ml-srow"><span class="ml-srow-label ml-joingrace-label">${T.sniper_join_grace} ${T.sniper_steal_mode}</span><span class="ml-srow-value ml-sv-joingrace">${snipeCfg.steal.joinGrace}s</span><input type="range" class="ml-slider ml-s-joingrace" min="0" max="30" step="1" value="${snipeCfg.steal.joinGrace}"></div>
<div class="ml-srow" style="justify-content:space-between;gap:8px"><span class="ml-srow-label" data-ml-label="s_copy_dbg">${T.s_copy_dbg}</span><button class="ml-debug-copy" style="padding:4px 8px;border-radius:14px;border:none;background:#FFB300;color:#0D1B4A;font-size:10px;font-weight:800;font-family:inherit;cursor:pointer;">${T.s_copy_json}</button><button class="ml-debug-clear" style="padding:4px 8px;border-radius:14px;border:none;background:#555;color:#fff;font-size:10px;font-weight:800;font-family:inherit;cursor:pointer;">${T.s_clear_dbg}</button></div>
</div>
</div>
</div>
${FEEDBACK_FOOTER_HTML}`;
_sr.appendChild(settings);
function keyCodeLabel(code) {
if (_keyLabels[code]) return _keyLabels[code];
if (code === 'Space') return 'Space';
if (code.startsWith('Key')) return code.slice(3);
if (code.startsWith('Digit')) return code.slice(5);
if (code.startsWith('Numpad')) return 'Num' + code.slice(6);
return code;
}
function buildKeybindsHTML() {
const KB_LABELS = {
fly: T.kb_fly, flyDown: T.kb_fly_down, setHome: T.kb_set_home, home: T.kb_home,
back: T.kb_back, cuddle: T.kb_cuddle, settings: T.kb_settings, pets: T.kb_pets,
slots: T.kb_slots, snipe: T.kb_snipe, snipeToggle: T.kb_snipe_toggle,
attack: T.kb_attack, help: T.kb_help, towerComplete: T.kb_tower, invisible: T.kb_invisible,
autolock: T.kb_autolock,
prv: T.kb_prv,
firstPerson: T.kb_first_person,
rng: T.kb_rng,
towerLoop: T.kb_tower_loop,
acctToggle: T.kb_accts,
};
let rows = '';
const sorted = Object.entries(KEYBINDS).sort((a, b) => {
const la = (KB_LABELS[a[0]] || a[0]).toLowerCase();
const lb = (KB_LABELS[b[0]] || b[0]).toLowerCase();
return la < lb ? -1 : la > lb ? 1 : 0;
});
for (const [action, code] of sorted) {
rows += '<div class="ml-krow" data-action="' + action + '"><span class="ml-krow-action">' + (KB_LABELS[action] || action) + '</span><span class="ml-krow-key">' + keyCodeLabel(code) + '</span></div>';
}
$('ml-keybinds-body').innerHTML = rows;
}
buildKeybindsHTML();
_rebuildKeybinds = buildKeybindsHTML;
const petsPanel = document.createElement('div');
petsPanel.classList.add('ml-panel', 'ml-pets');
petsPanel.innerHTML = '<div class="ml-pets-head"><div style="display:flex;align-items:baseline;gap:6px"><span class="ml-pets-title"></span><span class="ml-pets-count"></span></div><div style="display:flex;gap:8px;align-items:center"><label style="display:flex;align-items:center;gap:4px;cursor:pointer;font-size:10px;color:rgba(255,220,100,.65);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif"><input type="checkbox" class="ml-pets-auto"> <span class="ml-pets-auto-label"></span></label><span style="display:flex;align-items:center;gap:3px;font-size:10px;color:rgba(100,160,255,.55);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif"><input type="range" class="ml-pets-interval" min="1" max="10" value="' + petRefreshInterval + '" style="width:50px;height:3px"><span class="ml-pets-iv">' + petRefreshInterval + '</span>s</span><button class="ml-pets-close"></button></div></div><div class="ml-pets-filter"><div class="ml-snipe-search-row"><input class="ml-pets-search" type="text" style="flex:1"><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip"></span></div></div><div class="ml-pets-body"></div>' + FEEDBACK_FOOTER_HTML;
var pt = petsPanel.querySelector('.ml-pets-title'); if (pt) pt.textContent = T.pets_title;
var pal = petsPanel.querySelector('.ml-pets-auto-label'); if (pal) pal.textContent = T.auto;
var pcb = petsPanel.querySelector('.ml-pets-close'); if (pcb) pcb.textContent = T.close;
var psh = petsPanel.querySelector('.ml-pets-search'); if (psh) psh.placeholder = T.pets_search_placeholder || '';
var pht = petsPanel.querySelector('.ml-snipe-hint-tip'); if (pht) pht.textContent = T.pets_hint;
_sr.appendChild(petsPanel);
const slotsPop = document.createElement('div');
slotsPop.classList.add('ml-panel', 'ml-slots-pop');
slotsPop.innerHTML = '<div class="ml-slots-pop-head"><span class="ml-slots-pop-title">' + T.slots_title + '</span><button class="ml-slots-pop-close">' + T.close + '</button></div><div class="ml-slots-pop-body"></div>' + FEEDBACK_FOOTER_HTML;
_sr.appendChild(slotsPop);
function buildSlotsHTML() {
const body = $('ml-slots-pop-body');
if (!body) return;
let html = '';
for (let i = 0; i < 10; i++) {
const s = slots[i];
const info = s ? `${s.x.toFixed(1)}, ${s.y.toFixed(1)}, ${s.z.toFixed(1)}` : T.empty;
html += `<div class="ml-slot"><span class="ml-slot-num">${i}</span><span class="ml-slot-info${s ? ' filled' : ''}">${info}</span><button class="ml-slot-go${s ? '' : ' empty'}" data-slot="${i}">${T.go}</button><button class="ml-slot-set" data-slot="${i}">${T.set}</button><button class="ml-slot-clr${s ? '' : ' empty'}" data-slot="${i}">${T.close}</button></div>`;
}
body.innerHTML = html;
}
buildSlotsHTML();
$('ml-slots-pop-close').addEventListener('click', () => toggleSlots(false));
slotsPop.addEventListener('click', e => {
const goBtn = e.target.closest('.ml-slot-go');
const setBtn = e.target.closest('.ml-slot-set');
const clrBtn = e.target.closest('.ml-slot-clr');
if (!goBtn && !setBtn && !clrBtn) return;
const idx = parseInt((goBtn || setBtn || clrBtn).dataset.slot);
if (isNaN(idx)) return;
const p = getPlayer();
if (!p) return;
if (clrBtn) {
slots[idx] = null;
saveWaypoints();
flash('ml-slots');
buildSlotsHTML();
_clog(`[slot ${idx}] cleared`);
} else if (setBtn) {
slots[idx] = capturePos(p);
saveWaypoints();
flash('ml-slots');
buildSlotsHTML();
_clog(`[slot ${idx}] saved via popout`);
} else if (goBtn && slots[idx]) {
backPos = capturePos(p);
teleport(p, slots[idx], 'slot');
saveWaypoints();
flash('ml-slots');
toggleSlots(false);
_clog(`[slot ${idx}] teleported via popout`);
}
});
slotsPop.addEventListener('ml-rebuild', () => buildSlotsHTML());
const snipePanel = document.createElement('div');
snipePanel.classList.add('ml-panel', 'ml-snipe');
snipePanel.innerHTML = '<div class="ml-snipe-head"><span class="ml-snipe-title">' + T.sniper_title + '</span><div style="display:flex;gap:6px;align-items:center"><button class="ml-snipe-reset">' + T.settings_reset + '</button><button class="ml-snipe-close">' + T.close + '</button></div></div>'
+ '<div class="ml-snipe-body"><div class="ml-snipe-search-row"><input class="ml-snipe-search" type="text" placeholder="' + T.sniper_placeholder + '" style="flex:1"><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_hint + '</span></div>'
+ '<button class="ml-snipe-toggle">' + T.sniper_start + '</button>'
+ '<div class="ml-snipe-hotkey-hint"></div>'
+ '<div class="ml-snipe-opts-toggle open">' + T.sniper_options + '</div>'
+ '<div class="ml-snipe-opts" style="">'
+ '<label class="ml-snipe-place-row ml-snipe-opt"><input class="ml-snipe-place" type="checkbox" style="accent-color:#FFB300"><span class="ml-snipe-opt-label">' + T.sniper_auto_place + '</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_place_desc + '</span></label>'
+ '<label class="ml-snipe-drop-row ml-snipe-opt"><input class="ml-snipe-drop" type="checkbox" style="accent-color:#FFB300"><span class="ml-snipe-opt-label">' + T.sniper_auto_drop + '</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_drop_desc + '</span></label>'
+ '<label class="ml-snipe-hop-row ml-snipe-opt"><input class="ml-snipe-hop" type="checkbox" style="accent-color:#FFB300"><span class="ml-snipe-opt-label">' + T.sniper_auto_hunt + '</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_hunt_desc + '</span></label>'
+ '<label class="ml-snipe-walkhome-row ml-snipe-opt"><input class="ml-snipe-walkhome" type="checkbox" style="accent-color:#FFB300"><span class="ml-snipe-opt-label">' + T.snipe_walk_home + '</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.snipe_walk_home_desc + '</span></label>'
+ '<label class="ml-snipe-sell-row ml-snipe-opt"><input class="ml-snipe-sell" type="checkbox" style="accent-color:#FFB300"><span class="ml-snipe-opt-label">' + T.sniper_auto_sell + '</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_sell_desc + '</span></label>'
+ '<label class="ml-snipe-afksell-row ml-snipe-opt"><input class="ml-snipe-afksell" type="checkbox" style="accent-color:#FFB300"><span class="ml-snipe-opt-label">' + T.sniper_afk_sell + '</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_afk_sell_desc + '</span></label>'
+ '<div class="ml-snipe-lockdown-row ml-snipe-opt"><span class="ml-snipe-opt-label">' + T.sniper_lockdown + '</span><input class="ml-snipe-lockdown" type="range" min="0" max="360" step="1" value="180" style="flex:1;accent-color:#FFB300"><span class="ml-snipe-lockdown-val" style="min-width:26px;text-align:right;font-variant-numeric:tabular-nums">3m</span><span class="ml-snipe-hint-icon">?</span><span class="ml-snipe-hint-tip">' + T.sniper_lockdown_hint + '</span></div>'
+ '</div>'
+ '<div class="ml-snipe-types"></div></div>';
_sr.appendChild(snipePanel);
const accountPanel = document.createElement('div');
accountPanel.classList.add('ml-panel', 'ml-accounts');
accountPanel.innerHTML = '<div class="ml-accounts-head"><span class="ml-accounts-title">' + T.tab_accounts + '</span><button class="ml-accounts-close">' + T.close + '</button></div>'
+ '<div class="ml-accounts-body"></div>';
_sr.appendChild(accountPanel);
function toggleAccountPanel(forceOpen) {
const nextOpen = forceOpen == null ? !accountPanel.classList.contains('open') : !!forceOpen;
_togglePanel(accountPanel, forceOpen, () => { renderAccountsInto($('ml-accounts-body')); }, () => {});
_dbgLog('ui', nextOpen ? 'accounts-open' : 'accounts-close');
}
$('ml-accounts-close').addEventListener('click', () => toggleAccountPanel(false));
$('ml-accounts-body').addEventListener('ml-rebuild', () => { if (accountPanel.classList.contains('open')) renderAccountsInto($('ml-accounts-body')); });
const rngPanel = document.createElement('div');
rngPanel.classList.add('ml-panel', 'ml-rng');
rngPanel.innerHTML = '<div class="ml-rng-head"><span class="ml-rng-title" data-ml-label="rng_title">' + T.rng_title + '</span><div style="display:flex;gap:6px;align-items:center"><button class="ml-rng-reset">' + T.settings_reset + '</button><button class="ml-rng-close">' + T.close + '</button></div></div>'
+ '<div class="ml-rng-body">'
+ '<div class="ml-sgroup">'
+ '<div class="ml-sheader" data-ml-label="rng_sec_rolling">' + T.rng_sec_rolling + '</div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_roll_x25">' + T.s_auto_roll_x25 + '</span><div class="ml-toggle on ml-f-autorollx25"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_hide_roll_anim">' + T.s_hide_roll_anim + '</span><div class="ml-toggle on ml-f-hide-roller"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_vip_sword">' + T.s_auto_vip_sword + '</span><div class="ml-toggle on ml-f-autovipsword"></div></div>'
+ '<div class="ml-sheader" data-ml-label="rng_sec_crafting">' + T.rng_sec_crafting + '</div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_craft">' + T.s_auto_craft + '</span><div class="ml-toggle on ml-f-autocraft"></div></div>'
+ '<div class="ml-sheader" data-ml-label="rng_sec_combat">' + T.rng_sec_combat + '</div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_direct_kill">' + T.s_direct_kill + '</span><div class="ml-toggle on ml-f-directkill"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_direct_kill_rate">' + T.s_direct_kill_rate + '</span><span class="ml-srow-value ml-sv-directkillrate">' + _feats.directKillRate + '/s</span><input type="range" class="ml-slider ml-s-directkillrate" min="10" max="40" step="10" value="' + _feats.directKillRate + '"></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_hide_kill_rewards">' + T.s_hide_kill_rewards + '</span><div class="ml-toggle on ml-f-hide-rewards"></div></div>'
+ '<div class="ml-sheader" data-ml-label="rng_sec_upgrades">' + T.rng_sec_upgrades + '</div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_buy_upgrades">' + T.s_auto_buy_upgrades + '</span><div class="ml-toggle on ml-f-autoboost"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_boost_luck">' + T.s_boost_luck + '</span><div class="ml-toggle on ml-f-autoboostluck"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_boost_coins">' + T.s_boost_coins + '</span><div class="ml-toggle on ml-f-autoboostcoins"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_boost_diamonds">' + T.s_boost_diamonds + '</span><div class="ml-toggle on ml-f-autoboostdiamonds"></div></div>'
+ '<div class="ml-sheader" data-ml-label="rng_sec_areas">' + T.rng_sec_areas + '</div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_unlock_areas">' + T.s_auto_unlock_areas + '</span><div class="ml-toggle on ml-f-auto-unlock-areas"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_rebirth">' + T.s_auto_rebirth + '</span><div class="ml-toggle ml-f-auto-rebirth"></div></div>'
+ '<div class="ml-srow"><span class="ml-srow-label" data-ml-label="s_auto_join_tp">' + T.s_auto_join_tp + '</span><div class="ml-toggle on ml-f-auto-join-tp"></div></div>'
+ '</div>'
+ '<div class="ml-rng-resize"></div>'
+ '<div class="ml-rng-loghead" data-ml-label="rng_actions">' + T.rng_actions + '</div>'
+ '<div class="ml-rng-log"></div>'
+ '</div>';
_sr.appendChild(rngPanel);
_rngLogRender = () => { if (rngPanel?.classList.contains('open')) _renderRngLog(); };
const rngResize = rngPanel.querySelector('.ml-rng-resize');
const rngLogEl = $('ml-rng-log');
if (rngResize && rngLogEl) {
rngResize.addEventListener('pointerdown', e => {
e.preventDefault(); e.stopPropagation();
const pid = e.pointerId;
const startY = e.clientY;
const startH = rngLogEl.offsetHeight;
try { rngResize.setPointerCapture(pid); } catch (_) {}
const move = ev => {
const nh = Math.max(60, Math.min(440, startH + (startY - ev.clientY)));
rngLogEl.style.height = nh + 'px';
};
const up = () => {
rngResize.removeEventListener('pointermove', move);
rngResize.removeEventListener('pointerup', up);
rngResize.removeEventListener('pointercancel', up);
try { rngResize.releasePointerCapture(pid); } catch (_) {}
};
rngResize.addEventListener('pointermove', move);
rngResize.addEventListener('pointerup', up);
rngResize.addEventListener('pointercancel', up);
});
}
function toggleRngPanel(forceOpen) {
const nextOpen = forceOpen == null ? !rngPanel.classList.contains('open') : !!forceOpen;
_togglePanel(rngPanel, forceOpen, () => {
syncSettingsUI();
_renderRngLog();
_dbgLog('ui', nextOpen ? 'rng-open' : 'rng-close');
});
}
$('ml-rng-btn').addEventListener('click', () => {
const inSword = _getNetworkManager()?.room?.name === 'SwordRNG';
if (!inSword && !rngPanel.classList.contains('open')) return;
toggleRngPanel();
});
$('ml-rng-close').addEventListener('click', () => toggleRngPanel(false));
const interactivePanels = [plist, settings, d, petsPanel, slotsPop, snipePanel, rngPanel, accountPanel];
const stopPointerEvents = ['mousedown','mouseup','click','pointerdown','pointerup','mousemove','mouseover','mouseenter','mouseleave','wheel','contextmenu','pointermove','pointerover','pointerenter'];
const stopKeyEvents = ['keydown','keyup','keypress'];
interactivePanels.forEach(el => {
stopPointerEvents.forEach(evt => {
el.addEventListener(evt, e => e.stopPropagation());
});
stopKeyEvents.forEach(evt => {
el.addEventListener(evt, e => e.stopPropagation());
});
});
function makeDraggable(panel, handle, storageKey) {
let dragging = false, ox = 0, oy = 0;
const SK = storageKey ? _pfx + 'p-' + storageKey : null;
handle.style.cursor = 'grab';
panel.style.resize = 'both';
panel.style.overflow = 'auto';
function clampToScreen() {
const r = panel.getBoundingClientRect();
const vw = window.innerWidth, vh = window.innerHeight;
let l = r.left, t = r.top;
if (r.width > vw) l = 0;
else { if (l + r.width > vw) l = vw - r.width; if (l < 0) l = 0; }
if (r.height > vh) t = 0;
else { if (t + r.height > vh) t = vh - r.height; if (t < 0) t = 0; }
panel.style.left = l + 'px';
panel.style.top = t + 'px';
panel.style.right = 'auto';
panel.style.bottom = 'auto';
panel.style.transform = 'none';
}
function savePos() {
if (!SK) return;
const r = panel.getBoundingClientRect();
if (!panel.style.left && !panel.style.top) return;
try { _dbSet(SK, JSON.stringify({ l: Math.round(r.left), t: Math.round(r.top), w: Math.round(r.width), h: Math.round(r.height) })); } catch {}
}
function restorePos() {
if (!SK) return false;
const raw = _dbGet(SK);
if (!raw) return false;
try {
const p = JSON.parse(raw);
panel.style.left = p.l + 'px';
panel.style.top = p.t + 'px';
panel.style.right = 'auto';
panel.style.bottom = 'auto';
panel.style.transform = 'none';
if (p.w) panel.style.width = p.w + 'px';
if (p.h) panel.style.height = p.h + 'px';
clampToScreen();
return true;
} catch { return false; }
}
function startDrag(cx, cy, tag) {
if (tag === 'BUTTON' || tag === 'INPUT' || tag === 'LABEL') return false;
dragging = true;
handle.style.cursor = 'grabbing';
const rect = panel.getBoundingClientRect();
panel.style.left = rect.left + 'px';
panel.style.top = rect.top + 'px';
panel.style.right = 'auto';
panel.style.bottom = 'auto';
panel.style.transform = 'none';
ox = cx - rect.left;
oy = cy - rect.top;
return true;
}
let _dragRaf = null, _dragCX = 0, _dragCY = 0;
function moveDrag(cx, cy) {
if (!dragging) return;
_dragCX = cx; _dragCY = cy;
if (_dragRaf) return;
_dragRaf = requestAnimationFrame(() => {
_dragRaf = null;
if (!dragging) return;
const ph = panel.offsetHeight || 40;
const pw = panel.offsetWidth || 40;
const vw = window.innerWidth, vh = window.innerHeight;
panel.style.left = Math.max(0, Math.min(_dragCX - ox, vw - pw)) + 'px';
panel.style.top = Math.max(0, Math.min(_dragCY - oy, vh - ph)) + 'px';
});
}
function endDrag() {
if (dragging) { dragging = false; handle.style.cursor = 'grab'; savePos(); }
}
handle.addEventListener('mousedown', e => { if (startDrag(e.clientX, e.clientY, e.target.tagName)) e.preventDefault(); });
window.addEventListener('mousemove', e => moveDrag(e.clientX, e.clientY), true);
window.addEventListener('mouseup', endDrag, true);
handle.addEventListener('touchstart', e => {
const t = e.touches[0];
if (startDrag(t.clientX, t.clientY, e.target.tagName)) { e.preventDefault(); e.stopPropagation(); }
}, { passive: false });
window.addEventListener('touchmove', e => {
if (!dragging) return;
moveDrag(e.touches[0].clientX, e.touches[0].clientY);
e.preventDefault();
}, { passive: false, capture: true });
window.addEventListener('touchend', endDrag, true);
_setPanelMeta(panel, { savePos, restorePos, clampToScreen });
}
[
[plist, 'ml-plist-head', 'plist'],
[settings, 'ml-settings-head', 'settings'],
[petsPanel, 'ml-pets-head', 'pets'],
[slotsPop, 'ml-slots-pop-head', 'slots'],
[snipePanel, 'ml-snipe-head', 'snipe'],
[rngPanel, 'ml-rng-head', 'rng'],
[accountPanel, 'ml-accounts-head', 'accounts'],
[d, 'ml-dialog-head', 'help'],
].forEach(([panel, handleClass, key]) => makeDraggable(panel, $(handleClass), key));
window.addEventListener('resize', () => {
interactivePanels.forEach(p => {
if (p.classList.contains('open') && p.style.left) _getPanelMeta(p)?.clampToScreen?.();
});
});
function syncSettingsUI() {
syncSlider('ml-s-cap', 'ml-sv-cap', TP_FWD_DIST);
syncSlider('ml-s-base', 'ml-sv-base', SPEED_DEFAULT);
syncSlider('ml-s-jumpmult', 'ml-sv-jumpmult', _feats.jumpMult, 'x');
syncSlider('ml-s-gravmult', 'ml-sv-gravmult', _feats.gravMult, 'x');
syncSlider('ml-s-acinterval', 'ml-sv-acinterval', autoCollectInterval, 's');
syncSlider('ml-s-chatfade', 'ml-sv-chatfade', chatFadeTime, 's');
syncSlider('ml-s-joingrace', 'ml-sv-joingrace', snipeCfg.steal.joinGrace, 's');
syncSlider('ml-s-carryvol', 'ml-sv-carryvol', carryTuneVol, '%');
syncSlider('ml-s-petradius', 'ml-sv-petradius', _feats.petPickupRadius);
syncSlider('ml-s-directkillrate', 'ml-sv-directkillrate', _feats.directKillRate, '/s');
syncSlider('ml-s-fovfp', 'ml-sv-fovfp', _feats.fovFirstPerson, '°');
syncSlider('ml-s-fovtp', 'ml-sv-fovtp', _feats.fovThirdPerson, '°');
syncSlider('ml-s-fovvm', 'ml-sv-fovvm', _feats.fovVerticalMult, 'x');
const ctSel = $('ml-s-carrytune'); if (ctSel) ctSel.value = carryTune;
const featVals = [_feats.autoLock, _feats.noclip, _feats.fly, _feats.walkUpWalls, _feats.carryNormalize, _feats.invincible, _feats.antiKnockback, _feats.freeMoney, _feats.autoCollect, _feats.freeStars, _feats.freeDiamonds, _feats.autoRollX25, _feats.autoCraft, _feats.autoVipSword, _feats.autoVipWaves, _feats.directKill, _feats.autoBoost, _feats.autoBoostCoins, _feats.autoBoostDiamonds, _feats.autoBoostLuck, _feats.autoUnlockAreas, _feats.autoRebirth, _feats.hideKillRewards, _feats.hideRoller, _feats.autoJoinTp, _feats.ghostMode, _feats.fleeOnIntruder, _feats.autoFountain, _feats.invisible, _feats.xrayInfection, _feats.autoInvisOnFly, _feats.flyEmotes, _feats.cuddleFollow, _feats.proTips, _feats.hideProTips, _feats.firstPerson, _feats.showExpModes, _shows.invis, _shows.snipe, _shows.help, _shows.settings, _shows.fly, _shows.sprint, _shows.waypoints, _shows.autoLock, _shows.cuddle, _shows.pets, _shows.prv, _shows.rng, _shows.tc, _shows.tcl, _shows.accts, _feats.showCoords, _feats.showFps, _feats.showTargetInfo, _feats.showObj];
FEAT_IDS.forEach((id, i) => { const el = $(id); if (el) el.classList.toggle('on', featVals[i]); });
const _nc = $('ml-f-name-colors'); if (_nc) _nc.classList.toggle('on', _feats.nameColors);
const _ce = $('ml-f-chat-enhance'); if (_ce) _ce.classList.toggle('on', _feats.chatEnhance);
const _tl = $('ml-f-tower-loop'); if (_tl) _tl.classList.toggle('on', _feats.towerLoop);
}
syncSettingsUI();
function getPlayers() {
const holder = _getEnemyHolder();
const player = getPlayer();
const playerPos = player?.getPosition();
const results = [];
for (const enemy of holder.children) {
if (typeof _isImmortalEntity === 'function' && _isImmortalEntity(enemy)) continue;
const pos = enemy.getPosition();
let username = _getEnemyName(enemy);
if (!username || username === 'Enemy') username = enemy.name !== 'Enemy' ? enemy.name : null;
if (!username) username = 'Player';
const dist = playerPos ? Math.floor(playerPos.distance(pos)) : '?';
results.push({ name: username, dist, pos: vec3(pos), entity: enemy });
}
results.sort((a, b) => (typeof a.dist === 'number' && typeof b.dist === 'number') ? a.dist - b.dist : 0);
return results;
}
function refreshPlayerList() {
const body = $('ml-plist-body');
if (!body) return;
const players = getPlayers();
if (players.length === 0) {
body.innerHTML = '<div class="ml-plist-empty">' + T.players_empty + '</div>';
return;
}
body.innerHTML = '';
players.forEach((p, i) => {
const row = document.createElement('div');
row.className = 'ml-prow';
row.innerHTML = `<span class="ml-pnum">${i + 1}</span><div class="ml-pinfo"><div class="ml-pname"></div><div class="ml-pdist">${p.dist}m</div></div><span class="ml-parrow">→</span>`;
row.querySelector('.ml-pname').textContent = p.name;
row.addEventListener('click', () => {
const player = getPlayer();
if (!player) return;
const freshPos = p.entity?.getPosition();
const target = freshPos || p.pos;
backPos = capturePos(player);
teleport(player, vec3(target), 'cuddle');
saveWaypoints();
if (_feats.cuddleFollow) {
_cuddle.target = p.entity;
_cuddle.active = true;
_cuddle.stationaryTicks = 0;
_cuddle.lastSnap = Date.now();
_cuddle.firstOrient = false;
_cuddle.wasRunning = false;
_cuddle.interp = null;
_cuddle.animHooked = false;
_cuddle.idleStopped = false;
_cuddle.firstSnapDone = false;
_dbgLog('cuddle', 'locked', { target: p.name }, 'debug');
_dbgLog('nav', 'cuddle-set', { target: p.name }, 'debug');
}
flash('ml-back');
const app = W.pc?.app;
if (app) app.fire('GameManager:GameResumed');
});
body.appendChild(row);
});
}
function getPetOwnerId(pet) {
if (!pet) return null;
const d = pet.owner;
if (d === false) return false;
if (d != null) return d;
return pet?.data?.owner ?? pet?.ownerId ?? pet?.data?.ownerId ?? null;
}
let _ownerMapCache = null;
let _ownerMapTime = 0;
function buildOwnerMap() {
const now = Date.now();
if (_ownerMapCache && now - _ownerMapTime < 2000) return _ownerMapCache;
const map = {};
const myId = W.pc?.sessionId;
if (myId) map[myId] = T.owner_yours || 'Yours';
const nm = _getNetworkManager();
if (nm?.sessionId && !map[nm.sessionId]) map[nm.sessionId] = T.owner_yours || 'Yours';
const holder = _getEnemyHolder();
if (holder) {
for (const child of holder.children) {
if (typeof _isImmortalEntity === 'function' && _isImmortalEntity(child)) continue;
let id = child.id || child.sessionId || child.playerId;
if (!id && child.script) {
for (const sk of Object.keys(child.script._scriptsIndex || {})) {
const inst = child.script[sk];
id = inst?.id || inst?.sessionId || inst?.playerId;
if (id) break;
}
}
if (!id) continue;
const name = _getEnemyName(child);
if (name && name !== 'Enemy') map[id] = name;
}
}
_ownerMapCache = map;
_ownerMapTime = now;
return map;
}
function getPetOwnerName(pet, ownerMap) {
const ownerId = getPetOwnerId(pet);
if (ownerId === false || ownerId == null) return T.owner_wild || 'Wild';
if (ownerMap?.[ownerId]) return ownerMap[ownerId];
return ownerId.length > 10 ? ownerId.substring(0, 8) + '…' : ownerId;
}
function getPetsManager() { return _findPetsManager(); }
let _petsSnapshotCache = null;
let _petsSnapshotAt = 0;
const _snipeTypesHtmlCache = new WeakMap();
let _cachedProbeKey = '';
let _probeSortCol = 'top';
let _probeSortDir = -1;
let _matchesSortCol = '';
let _matchesSortDir = -1;
function getAllPets() {
const now = Date.now();
if (_petsSnapshotCache && now - _petsSnapshotAt < 120) return _petsSnapshotCache.slice();
const pm = getPetsManager();
if (!pm) {
_petsSnapshotCache = null;
_petsSnapshotAt = 0;
return [];
}
hookPetSpawn();
const ownerMap = buildOwnerMap();
const pets = [];
const scan = (map, type) => {
if (!map) return;
const MUT_IDS = { Default: 1, Golden: 2, Diamond: 3, Emerald: 4, Rainbow: 5, Galaxy: 6, Hacked: 10 };
map.forEach((pet, token) => {
const sd = petSpawnData.get(token);
const name = sd?.name || pet.name || String(token).substring(0, 8);
let mutation = _mutName(sd?.mutation ?? '');
let rarity = sd?.rarity ?? '';
let profit = sd?.profit ?? null;
if (!mutation) {
try {
if (pet[_SYM_PMUT]) { mutation = pet[_SYM_PMUT]; }
else {
for (const [mn, mid] of Object.entries(MUT_IDS)) {
if (mn === 'Default') continue;
if (pet.findByName?.(`Mutation ${mn} Effect`) || pet.findByName?.(`Mutation ${mid} Effect`)) { mutation = mn; break; }
}
if (mutation) pet[_SYM_PMUT] = mutation;
}
} catch (e) { _log('err', 'pet mutation: ' + e.message); }
}
if (!rarity) {
try {
if (pet[_SYM_PRAR]) { rarity = pet[_SYM_PRAR]; }
else {
const RARITIES = ['BASIC', 'RARE', 'EPIC', 'LEGENDARY', 'MYTHICAL', 'EXOTIC', 'SECRET', 'EXCLUSIVE', 'QUANTUM'];
for (const r of RARITIES) {
const node = pet.findByName?.(r);
if (node && ('_enabled' in node ? node._enabled : node.enabled)) { rarity = r; break; }
}
if (rarity) pet[_SYM_PRAR] = rarity;
}
} catch (e) { _log('err', 'pet rarity: ' + e.message); }
}
if (!profit) {
try {
if (pet[_SYM_PVAL]) {
profit = pet[_SYM_PVAL];
} else {
const statsEl = pet.findByName?.('PetStats');
if (statsEl) {
const profitEl = statsEl.findByName?.('Profit') || statsEl.findByName?.('PetProfit');
if (profitEl?.element?.text) {
const m = profitEl.element.text.match(/\$\s*([\d,.]+)\s*([kmbtqsxi]*)/);
if (m) {
let v = parseFloat(m[1].replace(/,/g, ''));
const suf = m[2]?.toLowerCase();
if (suf === 'k') v *= 1e3;
else if (suf === 'm') v *= 1e6;
else if (suf === 'b') v *= 1e9;
else if (suf === 't') v *= 1e12;
else if (suf === 'q') v *= 1e15;
else if (suf === 's') v *= 1e18;
else if (suf === 'x') v *= 1e21;
else if (suf === 'i') v *= 1e24;
profit = v;
if (profit > 0) pet[_SYM_PVAL] = profit;
}
}
}
}
} catch (e) { _log('err', 'pet profit: ' + e.message); }
}
const pos = pet.getPosition ? pet.getPosition() : pet.position;
const price = pet.price ?? 0;
pets.push({
token,
name,
price,
income: profit ?? 0,
owner: getPetOwnerName(pet, ownerMap),
ownerId: getPetOwnerId(pet),
type,
mutation,
rarity,
isEgg: sd?.isEgg || false,
x: pos?.x ?? 0,
y: pos?.y ?? 0,
z: pos?.z ?? 0,
});
});
};
scan(pm.activePets, 'active');
scan(pm.basePets, 'base');
{
const _tkS = new Set();
for (const p of pets) if (p.token != null) _tkS.add(String(p.token));
const _nowS = Date.now();
const _bpMap = new Map();
const _bmS = _getBasesManager();
if (_bmS?.activeBases) {
for (const _bd of _bmS.activeBases) {
const _sid = _bd?.data?.sessionId;
if (!_sid || _bpMap.has(_sid)) continue;
let _bpe = null;
try { _bpe = _bd.entity?.getPosition?.(); } catch (_) {}
_bpMap.set(_sid, _bpe ? { x: _bpe.x, y: _bpe.y, z: _bpe.z } : null);
}
}
for (const [_tk, _sd] of petSpawnData) {
if (!_sd || _tkS.has(String(_tk))) continue;
if (!_sd.owner || _sd.owner === false || !_bpMap.has(_sd.owner)) continue;
if (_nowS - (_sd.t || 0) > 60000) continue;
_tkS.add(String(_tk));
const _m2 = _mutName(_sd.mutation ?? '');
const _b2 = _bpMap.get(_sd.owner);
pets.push({
token: _tk,
name: _sd.name || '',
price: 0,
income: _sd.profit ?? 0,
owner: _sd.owner,
ownerId: _sd.owner,
type: 'base',
mutation: _m2,
rarity: _sd.rarity || '',
isEgg: !!_sd.isEgg,
x: _b2?.x ?? 0,
y: _b2?.y ?? 0,
z: _b2?.z ?? 0
});
}
}
_petsSnapshotCache = pets;
_petsSnapshotAt = now;
_getAllPets = getAllPets;
return pets.slice();
}
let lastRenderedPets = [];
const grabbedTokens = new Map();
function renderPetTable() {
const body = $('ml-pets-body');
const countEl = $('ml-pets-count');
if (!body) return;
let pets = getAllPets();
if (countEl) countEl.textContent = `(${pets.length})`;
if (pets.length === 0) {
lastRenderedPets = [];
body.innerHTML = '<div class="ml-pets-empty">' + T.pets_empty + '</div>';
return;
}
if (petFilter) pets = pets.filter(p => petMatchesFilter(p, petFilter));
const playerPos = getPlayer()?.getPosition();
if (playerPos) pets.forEach(p => { _petMeta.set(p, { dist: Math.hypot(p.x - playerPos.x, p.y - playerPos.y, p.z - playerPos.z) }); });
pets.sort((a, b) => {
let av, bv;
if (petSortCol === 'dist') { av = _petMeta.get(a)?.dist; bv = _petMeta.get(b)?.dist; }
else { av = a[petSortCol]; bv = b[petSortCol]; }
if (av == null) av = Infinity;
if (bv == null) bv = Infinity;
if (typeof av === 'string') av = av.toLowerCase();
if (typeof bv === 'string') bv = bv.toLowerCase();
if (av < bv) return -petSortDir;
if (av > bv) return petSortDir;
return 0;
});
lastRenderedPets = pets;
const cols = ['name','mutation','rarity','owner','price','income','dist','go'];
const labels = { name:T.pt_name, mutation:T.pt_mut, rarity:T.pt_rar, owner:T.pt_owner, price:T.pt_worth, income:T.pt_income, dist:T.pt_dist, go:'' };
let html = '<table class="ml-ptable"><thead><tr>';
cols.forEach(c => {
const cls = petSortCol === c ? (petSortDir === 1 ? 'sort-asc' : 'sort-desc') : '';
html += c === 'go' ? '<th></th>' : `<th data-col="${c}" class="${cls}">${labels[c]}</th>`;
});
html += '</tr></thead><tbody>';
const now = Date.now();
if (grabbedTokens.size > 50) grabbedTokens.forEach((exp, k) => { if (exp <= now) grabbedTokens.delete(k); });
pets.forEach(p => {
const ownerCls = p.owner === (T.owner_yours || 'Yours') ? 'own-you' : p.owner === (T.owner_wild || 'Wild') ? 'own-wild' : '';
const mutCls = p.mutation ? `pet-mut-${p.mutation}` : 'pet-var';
const tokenStr = String(p.token);
const grabbed = grabbedTokens.has(tokenStr) && grabbedTokens.get(tokenStr) > now;
const grabBtn = p.owner !== (T.owner_yours || 'Yours') ? `<button class="pet-grab" data-token="${esc(p.token)}"${grabbed ? ' disabled' : ''} title="${esc(T.pet_pickup_title || 'Pick up')}">${grabbed ? '\u2714' : '\u270B'}</button>` : '';
const pDist = _petMeta.get(p)?.dist;
html += `<tr><td>${esc(p.name)}</td><td class="${mutCls}">${esc(p.mutation) || '\u2014'}</td><td class="pet-rar">${esc(p.rarity) || '\u2014'}</td><td class="${ownerCls}">${esc(p.owner)}</td><td>${numFmt(p.price)}</td><td>${numFmt(p.income)}/s</td><td>${pDist != null ? numFmt(Math.round(pDist)) : '\u2014'}</td><td><button class="pet-tp" data-token="${esc(p.token)}" title="${esc(T.pet_teleport_title || 'Teleport')}">\u279C</button>${grabBtn}</td></tr>`;
});
html += '</tbody></table>';
body.innerHTML = html;
}
function findPetByToken(token) {
return lastRenderedPets.find(p => String(p.token) === token) || null;
}
$('ml-pets-body').addEventListener('click', e => {
const th = e.target.closest('th[data-col]');
if (th) {
const col = th.dataset.col;
if (petSortCol === col) petSortDir *= -1;
else { petSortCol = col; petSortDir = col === 'price' || col === 'income' || col === 'dist' ? -1 : 1; }
saveSettings();
renderPetTable();
return;
}
const tpBtn = e.target.closest('.pet-tp');
if (tpBtn) {
const p = findPetByToken(tpBtn.dataset.token);
if (!p) return;
const player = getPlayer();
if (!player) return;
player.setPosition(p.x, p.y + 1, p.z);
_dbgLog('pet', 'pet-tp', { name: p.name || null, token: tpBtn.dataset.token });
togglePetsPanel(false);
return;
}
const grabBtn = e.target.closest('.pet-grab');
if (grabBtn) {
const p = findPetByToken(grabBtn.dataset.token);
if (!p) return;
const app = W.pc?.app;
if (!app) return;
const player = getPlayer();
if (!player) return;
const tokenStr = String(p.token);
const orig = player.getPosition().clone();
player.setPosition(p.x, p.y + 0.5, p.z);
grabBtn.disabled = true;
grabBtn.textContent = '…';
setTimeout(() => {
app.fire('ModeOverlay:BuyPet', p.token);
_clog(`· grab pet: ${p.name} (${p.token})`);
_dbgLog('pet', 'pet-grab', { name: p.name, token: String(p.token) });
setTimeout(() => {
player.setPosition(orig.x, orig.y, orig.z);
setTimeout(() => {
app.fire('NetworkManager:Send', 'dropPet');
_clog(`· drop pet at origin`);
grabbedTokens.set(tokenStr, Date.now() + 5000);
renderPetTable();
}, 150);
}, 150);
}, 100);
}
});
function esc(s) {
return String(s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');
}
function numFmt(n) {
if (!isFinite(n)) return '\u2014';
if (n >= 999.95e12) return (n / 1e15).toFixed(1) + 'q';
if (n >= 999.95e9) return (n / 1e12).toFixed(1) + 't';
if (n >= 999.95e6) return (n / 1e9).toFixed(1) + 'b';
if (n >= 999.95e3) return (n / 1e6).toFixed(1) + 'm';
if (n >= 999.95) return (n / 1e3).toFixed(1) + 'k';
return n % 1 === 0 ? String(n) : n.toFixed(1);
}
function petMatchesFilter(p, raw) {
if (!raw || !raw.trim()) return true;
const text = [p.name, p.mutation, p.rarity].join(' ').toLowerCase();
return _filterMatcher(raw)(text);
}
let petRefreshTimer = null;
function startPetRefresh() {
stopPetRefresh();
petRefreshTimer = setInterval(() => renderPetTable(), petRefreshInterval * 1000);
}
function stopPetRefresh() {
if (petRefreshTimer) { clearInterval(petRefreshTimer); petRefreshTimer = null; }
}
function togglePetsPanel(forceOpen) {
if (!petsPanel || !petsPanel.classList) return;
const nextOpen = forceOpen == null ? !petsPanel.classList.contains('open') : !!forceOpen;
_togglePanel(petsPanel, forceOpen, () => {
var s = $('ml-pets-search');
if (s) s.value = petFilter;
var a = $('ml-pets-auto');
if (a) a.checked = petAutoRefresh;
syncSlider('ml-pets-interval', 'ml-pets-iv', petRefreshInterval);
renderPetTable();
if (petAutoRefresh) startPetRefresh();
}, () => stopPetRefresh());
}
$('ml-pets-btn').addEventListener('click', () => { togglePetsPanel(); });
$('ml-pets-close').addEventListener('click', () => togglePetsPanel(false));
const petsHintIcon = petsPanel.querySelector('.ml-snipe-hint-icon');
const petsHintTip = petsPanel.querySelector('.ml-snipe-hint-tip');
if (petsHintIcon && petsHintTip) {
petsHintIcon.addEventListener('mouseenter', () => { petsHintTip.style.display = 'block'; });
petsHintIcon.addEventListener('mouseleave', () => { petsHintTip.style.display = 'none'; });
}
let _petsSearchTimer = null;
$('ml-pets-search').addEventListener('input', e => {
petFilter = e.target.value;
saveSettings();
_dbgLog('pet', 'pet-filter', { filter: e.target.value }, 'debug');
clearTimeout(_petsSearchTimer);
_petsSearchTimer = setTimeout(() => renderPetTable(), 300);
});
$('ml-pets-auto').addEventListener('change', e => {
petAutoRefresh = e.target.checked;
saveSettings();
_dbgLog('pet', 'pet-auto-refresh', { on: e.target.checked }, 'debug');
if (petAutoRefresh && petsPanel.classList.contains('open')) startPetRefresh();
else stopPetRefresh();
});
$('ml-pets-interval').addEventListener('input', e => {
petRefreshInterval = Math.max(1, parseInt(e.target.value) || 1);
const iv = $('ml-pets-iv');
if (iv) iv.textContent = petRefreshInterval;
saveSettings();
if (petAutoRefresh && petsPanel.classList.contains('open')) startPetRefresh();
});
let _snipeTimer = null;
let _lastSnipeActive = true;
let _stuckNotInRoomAt = 0;
let _stuckReconnectAt = 0;
let _stuckReloadedAt = 0;
function getOwnerLockdownSecs(ownerId) {
if (!ownerId) return 0;
const now0 = Date.now();
const _left0 = _baseLeftAt.get(ownerId);
if (_left0) {
if (now0 - _left0 > _BASE_LEFT_TTL_MS) _baseLeftAt.delete(ownerId);
else return 7200;
}
const until0 = _serverLockdownUntil.get(ownerId);
if (until0) {
const rem0 = (until0 - now0) / 1000;
if (rem0 > 1) { _baseLastLockedAt.set(ownerId, now0); return rem0; }
_serverLockdownUntil.delete(ownerId);
}
if (!_baseExplicitUnlock.has(ownerId)) {
const _lastLocked = _baseLastLockedAt.get(ownerId);
if (_lastLocked) {
const _age = now0 - _lastLocked;
if (_age < _LOCK_GRACE_MS) {
if (_throttle(_lockGraceLogged, ownerId, now0, 30000)) {
_dbgLog('room', 'lock-grace', { sid: ownerId, age: Math.round(_age / 1000) }, 'debug');
}
return Math.max(1, Math.ceil((_LOCK_GRACE_MS - _age) / 1000));
}
_baseLastLockedAt.delete(ownerId);
}
}
if (_lockDataReceived && now0 - _lastLockDataTs < 2500 && !_serverLockedSessions.has(ownerId)) return 0;
const ldm = _getLockdownMgr();
if (ldm?.lockedBases) {
const entry = ldm.lockedBases.get(ownerId);
if (entry) {
const remaining = (entry.endTime - Date.now()) / 1000;
if (remaining > 1) { _baseLastLockedAt.set(ownerId, now0); return remaining; }
}
}
if (_serverLockedSessions.has(ownerId)) {
const bm = _getBasesManager();
if (bm?.activeBases) {
for (const bd of bm.activeBases) {
if (bd.data?.sessionId !== ownerId) continue;
if (bd.data.lockdownTimeLeft > 1) { _baseLastLockedAt.set(ownerId, now0); return bd.data.lockdownTimeLeft; }
const lb = bd.entity?.findByName?.('LockdownButton')?.script?.lockdownButton;
if (lb?.lockdownTimeLeft > 1) { _baseLastLockedAt.set(ownerId, now0); return lb.lockdownTimeLeft; }
break;
}
}
return 1;
}
const bm = _getBasesManager();
if (bm?.activeBases) {
for (const bd of bm.activeBases) {
if (bd.data?.sessionId !== ownerId) continue;
const lb = bd.entity?.findByName?.('LockdownButton')?.script?.lockdownButton;
if (lb) {
if (lb.isLockdownActive && lb.lockdownTimeLeft > 0) { _baseLastLockedAt.set(ownerId, now0); return lb.lockdownTimeLeft; }
if (lb.lockdownTimeLeft > 0) { _baseLastLockedAt.set(ownerId, now0); return lb.lockdownTimeLeft; }
return 0;
}
if (bd.data.lockdownActive && bd.data.lockdownTimeLeft > 0) { _baseLastLockedAt.set(ownerId, now0); return bd.data.lockdownTimeLeft; }
if (bd.data.lockdownTimeLeft > 0) { _baseLastLockedAt.set(ownerId, now0); return bd.data.lockdownTimeLeft; }
return 0;
}
}
return 0;
}
function _withinBaseLockCycle(ownerId) {
if (!ownerId) return false;
const entryT = _baseEntryTimes.get(ownerId);
const _lockStart = _baseLockStarts.get(ownerId);
return !!(entryT && _lockStart && entryT >= _lockStart && Date.now() - entryT <= 300000);
}
const _snipedPets = [];
const SNIPE_HISTORY_CAP = 200;
function recordSnipe(token) {
_snipedPets.push({ token: String(token), time: Date.now() });
while (_snipedPets.length > SNIPE_HISTORY_CAP) _snipedPets.shift();
_pendingSnipeTokens.add(String(token));
}
function getSnipeTime(token) {
const t = String(token);
for (let i = _snipedPets.length - 1; i >= 0; i--) {
if (_snipedPets[i].token === t) return _snipedPets[i].time;
}
return 0;
}
function snipeScan() {
if (snipePanel.classList.contains('open')) syncSnipePanelMode();
const sc = _sc();
if (!sc.active) {
_setSS(T.sniper_idle, 'idle');
return null;
}
if (!sc.filter) {
_setSS(T.sniper_no_filter);
$('ml-snipe-types').textContent = '';
return null;
}
const app = W.pc?.app;
const player = getPlayer();
if (!app || !player) {
_setSS(T.sniper_waiting);
return null;
}
const myId = _myId();
const bm = _getBasesManager();
const isStealMode = !!(bm?.activeBases);
const playerPos = player.getPosition();
if (isStealMode && playerPos && bm.activeBases) {
const now = Date.now();
for (const bd of bm.activeBases) {
const sid = bd.data?.sessionId;
if (!sid) continue;
const be = bm.baseEntities?.[bd.data.id];
const bp = be?.getPosition?.() || bd.entity?.getPosition?.();
if (!bp) continue;
if (Math.abs(playerPos.x - bp.x) <= 11.5 && Math.abs(playerPos.z - bp.z) <= 11.5) {
if (!_baseEntryTimes.has(sid)) _dbgLog('room', 'base-enter', { sid, via: 'scan' });
_baseEntryTimes.set(sid, now);
}
}
}
const pets = getAllPets();
const nameMatches = pets.filter(p => {
if (p.ownerId === myId || p.owner === (T.owner_yours || 'Yours')) return false;
return petMatchesFilter(p, sc.filter);
});
const wavesWildMatches = isStealMode ? null : nameMatches.filter(p => p.owner === (T.owner_wild || 'Wild'));
let blocked = 0;
let notWorth = 0;
let _blockWild = 0, _blockActive = 0, _blockLock = 0, _blockLeft = 0;
let _minLockedSecs = Infinity;
let _lowestSellableIncome = null;
if (isStealMode && sc.autoSell && myId) {
const myBasePets = pets.filter(p => p.ownerId === myId && p.type === 'base');
const maxSlots = bm?.myBase?.data?.places || 10;
if (myBasePets.length >= maxSlots) {
const sellable = myBasePets.filter(p => !p.isEgg);
if (sellable.length) {
sellable.sort((a, b) => a.income - b.income);
_lowestSellableIncome = sellable[0].income;
}
}
}
const _now = Date.now();
const matches = nameMatches.filter(p => {
if (isStealMode) {
if (p.owner === (T.owner_wild || 'Wild') || !p.ownerId) { blocked++; _blockWild++; return false; }
if (p.type === 'active') { blocked++; _blockActive++; return false; }
if (_baseLeftAt.has(p.ownerId)) {
if (_now - _baseLeftAt.get(p.ownerId) > _BASE_LEFT_TTL_MS) _baseLeftAt.delete(p.ownerId);
else { blocked++; _blockLeft++; return false; }
}
const lockSecs = getOwnerLockdownSecs(p.ownerId);
if (lockSecs > 0 && !_withinBaseLockCycle(p.ownerId)) {
blocked++; _blockLock++;
if (lockSecs < _minLockedSecs) _minLockedSecs = lockSecs;
if (_throttle(_lockBlockLogged, p.ownerId, _now, 30000)) {
const entryT = _baseEntryTimes.get(p.ownerId);
const _lockStart = _baseLockStarts.get(p.ownerId);
if (!entryT) _dbgLog('room', 'lock-block', { reason: 'no-entry', sid: p.ownerId });
else _dbgLog('room', 'lock-block', { reason: _lockStart ? 'pre-cycle' : 'no-cycle', sid: p.ownerId, age: Math.round((Date.now() - entryT) / 1000) });
}
return false;
}
if (_lowestSellableIncome !== null && p.income <= _lowestSellableIncome) { notWorth++; return false; }
return true;
} else {
if (p.owner !== (T.owner_wild || 'Wild') && p.ownerId) { blocked++; return false; }
return true;
}
});
{
let _diagBase = 0, _diagActive = 0, _diagBaseLocked = 0, _diagBaseUnlocked = 0;
for (const p of nameMatches) {
if (p.type === 'base') { _diagBase++; const ls = getOwnerLockdownSecs(p.ownerId); if (ls > 0) _diagBaseLocked++; else _diagBaseUnlocked++; }
else _diagActive++;
}
}
const typesEl = $('ml-snipe-types');
if (typesEl) {
let tableMatches = isStealMode ? nameMatches.filter(p => p.owner !== (T.owner_wild || 'Wild') && p.ownerId) : (wavesWildMatches || []);
if (isStealMode && _lowestSellableIncome !== null) {
tableMatches = tableMatches.filter(p => p.income > _lowestSellableIncome);
}
tableMatches = tableMatches.filter(p => p.type !== 'active');
const _ldMax = _sc().lockdownMax || 0;
const _lockCache = {};
const _lockTrigger = isStealMode && tableMatches.some(p => {
if (!p.ownerId) return false;
if (!(p.ownerId in _lockCache)) _lockCache[p.ownerId] = getOwnerLockdownSecs(p.ownerId);
return _lockCache[p.ownerId] > _ldMax;
});
const _lockWaitShown = isStealMode && _snipeLockWaitStart && _snipeLockWaitStart !== -1 && _snipeLockWaitUntil > 0 && _minLockedSecs != null && isFinite(_minLockedSecs) && _minLockedSecs <= _ldMax && Date.now() < _snipeLockWaitUntil;
const _showProbe = tableMatches.length === 0 || _lockTrigger || _lockWaitShown;
const _showMatches = tableMatches.length > 0;
let _probeEl = typesEl.querySelector('.ml-snipe-probe');
let _matchesEl = typesEl.querySelector('.ml-snipe-matches');
if (_showMatches) {
if (!_matchesEl) {
_matchesEl = document.createElement('div');
_matchesEl.className = 'ml-snipe-matches';
if (_probeEl) typesEl.insertBefore(_matchesEl, _probeEl);
else typesEl.appendChild(_matchesEl);
}
} else if (_matchesEl) {
_matchesEl.remove();
_matchesEl = null;
}
if (_showProbe) {
if (!_probeEl) {
_probeEl = document.createElement('div');
_probeEl.className = 'ml-snipe-probe';
typesEl.appendChild(_probeEl);
}
} else if (_probeEl) {
_probeEl.remove();
_probeEl = null;
_cachedProbeKey = '';
}
if (_showProbe) {
const _probeCachedHtml = _snipeTypesHtmlCache.get(_probeEl) || '';
const _probeRep = (typeof _probeRooms === 'function' && _probeRooms.getScanReport) ? _probeRooms.getScanReport() : [];
const _scanHuntOn = !!_sc().autoHop;
const _lockWaitRemain = (_lockWaitShown && _minLockedSecs != null && isFinite(_minLockedSecs)) ? Math.max(0, Math.ceil(Math.min(_minLockedSecs, (_sc().lockdownMax || 0)))) : 0;
const _throttleMs = (typeof _probeRooms === 'function' && _probeRooms.getThrottledMs) ? _probeRooms.getThrottledMs() : 0;
let _scanStatusTxt = !_sc().active ? (T.sniper_idle || 'Idle') : (!_scanHuntOn ? (T.sniper_scan_off || 'Auto hunt off') : (_throttleMs > 0 ? 'Matchmaker blocked — retrying in ' + Math.ceil(_throttleMs / 1000) + 's' : (_probeInProgress ? (T.sniper_scanning_rooms || 'Searching other rooms…') : (_lockWaitShown ? 'Lock ' + _lockWaitRemain + 's — ' + (T.sniper_scanning_rooms || 'Searching other rooms…') : (_lastProbeEnd && Date.now() - _lastProbeEnd < 8000 ? (T.sniper_scan_next || 'Next scan in') + ' ' + Math.ceil((8000 - (Date.now() - _lastProbeEnd)) / 1000) + 's' : (T.sniper_scan_idle || 'Idle — waiting to scan'))))));
const _scanStatusHtml = '<div class="ml-snipe-scan-status" style="font-size:9px;color:rgba(255,220,100,.75);margin:2px 0 1px">' + esc(_scanStatusTxt) + '</div>';
if (_probeRep.length > 0 || _probeInProgress) {
const _curRoomId = _getNetworkManager()?.room?.roomId || null;
const _sortFn = (a, b) => {
const _c = _probeSortCol;
const _d = _probeSortDir;
let _v = 0;
if (_c === 'roomId') _v = String(a.roomId || '').localeCompare(String(b.roomId || ''));
else if (_c === 'lastSeen') _v = (a.lastSeen || 0) - (b.lastSeen || 0);
else if (_c === 'searches') _v = ((a.searches || 0) - (b.searches || 0));
else if (_c === 'top') _v = ((a.top && a.top.income) || 0) - ((b.top && b.top.income) || 0);
else if (_c === 'toppet') _v = String((a.top && a.top.name) || '').localeCompare(String((b.top && b.top.name) || ''));
else if (_c === 'topowner') _v = String((a.top && a.top.owner) || '').localeCompare(String((b.top && b.top.owner) || ''));
return _v * _d;
};
const _repSorted = [..._probeRep].sort(_sortFn);
const _keyRows = [..._probeRep].sort((a, b) => String(a.roomId || '').localeCompare(String(b.roomId || '')));
let _key = (isStealMode ? 'S' : 'W') + '|' + (_probeInProgress ? 'P' : 'p') + '|' + _probeRep.length + '|' + _probeSortCol + '|' + _probeSortDir + '|' + (_currentLang || 'en') + '|';
for (const _r of _keyRows) {
const _here = !!(_curRoomId && _r.roomId === _curRoomId);
const _tk = (_r.top && _r.top.name) ? [_r.top.mutation || '', _r.top.name, _r.top.income || 0, _r.top.owner || ''].join('~') : '';
_key += (_r.roomId || '?') + '=' + (_r.searches || 0) + '=' + (_here ? 1 : 0) + '=' + (_r.free === 0 ? 1 : 0) + '=' + _tk + ';';
}
if (_cachedProbeKey !== _key) {
_cachedProbeKey = _key;
let html = _scanStatusHtml;
if (_probeRep.length > 0) {
const _sortArw = (c) => _probeSortCol === c ? (_probeSortDir < 0 ? ' \u25bc' : ' \u25b2') : '';
html += '<table class="ml-snipe-tbl"><tr><th></th><th data-sort="lastSeen">' + esc(T.sniper_age_col || 'Age') + _sortArw('lastSeen') + '</th><th data-sort="toppet">' + esc(T.sniper_top_pet_col || 'Top Pet') + _sortArw('toppet') + '</th><th data-sort="top">' + esc(T.sniper_top_worth_col || 'Top Worth') + _sortArw('top') + '</th>' + (isStealMode ? '<th data-sort="topowner" class="ml-top-owner">' + esc(T.sniper_top_owner_col || 'Top Owner') + _sortArw('topowner') + '</th>' : '') + '<th data-sort="searches">' + esc(T.sniper_scans_col || 'Scans') + _sortArw('searches') + '</th><th data-sort="roomId">' + esc(T.sniper_room_col || 'Room') + _sortArw('roomId') + '</th></tr>';
for (const _r of _repSorted) {
const _ageSec = Math.max(0, Math.floor((Date.now() - (_r.lastSeen || Date.now())) / 1000));
const _ageStr = Math.floor(_ageSec / 60) + ':' + String(_ageSec % 60).padStart(2, '0');
let _topPetCell = '\u2014';
let _topWorthCell = '\u2014';
let _topOwnerCell = '\u2014';
if (_r.top && _r.top.name) {
const _mut = _r.top.mutation || '';
_topPetCell = _mut ? '<span class="pet-mut-' + esc(_mut) + '">' + esc(_mut) + '</span> ' + esc(_r.top.name) : esc(_r.top.name);
_topWorthCell = numFmt(_r.top.income || 0);
_topOwnerCell = _r.top.owner ? esc(_r.top.owner) : '\u2014';
}
const _here = !!(_curRoomId && _r.roomId === _curRoomId);
const _joinCell = _here ? '<span style="color:rgba(100,255,100,.7)">\u2713</span>' : (_r.free === 0 ? '<span style="color:rgba(255,120,120,.55)">' + esc(T.sniper_full || 'Full') + '</span>' : '<button class="ml-snipe-join" data-join="' + esc(_r.roomId || '') + '">' + esc(T.sniper_join_btn || 'Join') + '</button>');
html += '<tr data-room="' + esc(_r.roomId || '') + '"><td>' + _joinCell + '</td><td class="ml-age" data-room="' + esc(_r.roomId || '') + '">' + _ageStr + '</td><td style="white-space:normal">' + _topPetCell + '</td><td>' + _topWorthCell + '</td>' + (isStealMode ? '<td class="ml-top-owner">' + _topOwnerCell + '</td>' : '') + '<td class="ml-searches">' + (_r.searches || 0) + '</td><td>' + esc(_r.roomId || '?') + '</td></tr>';
}
html += '</table>';
}
if (_probeCachedHtml !== html) {
_probeEl.innerHTML = html;
_snipeTypesHtmlCache.set(_probeEl, html);
}
} else if (_probeEl.querySelector('td.ml-age')) {
const _stEl = _probeEl.querySelector('.ml-snipe-scan-status');
if (_stEl && _stEl.textContent !== _scanStatusTxt) _stEl.textContent = _scanStatusTxt;
const _rm = new Map();
for (const _r of _probeRep) _rm.set(_r.roomId, _r.lastSeen || 0);
for (const _td of _probeEl.querySelectorAll('td.ml-age')) {
const _ageSec = Math.max(0, Math.floor((Date.now() - (_rm.get(_td.getAttribute('data-room')) || 0)) / 1000));
_td.textContent = Math.floor(_ageSec / 60) + ':' + String(_ageSec % 60).padStart(2, '0');
}
if (_probeSortCol === 'lastSeen') {
const _tbl = _probeEl.querySelector('table.ml-snipe-tbl tbody') || _probeEl.querySelector('table.ml-snipe-tbl');
if (_tbl) {
const _ordered = [..._probeRep].sort(_sortFn);
for (const _r of _ordered) {
const _row = _tbl.querySelector('tr[data-room="' + _r.roomId + '"]');
if (_row) _tbl.appendChild(_row);
}
}
}
}
} else {
const _emptyHtml = _scanStatusHtml;
if (_probeCachedHtml !== _emptyHtml) {
_probeEl.innerHTML = _emptyHtml;
_snipeTypesHtmlCache.set(_probeEl, _emptyHtml);
}
_cachedProbeKey = '';
}
}
if (_showMatches) {
const _matchCachedHtml = _snipeTypesHtmlCache.get(_matchesEl) || '';
_cachedProbeKey = '';
const ownerLockCache = {};
const pPos = player?.getPosition?.();
const rows = tableMatches.map(p => {
let lockSecs = 0;
if (isStealMode && p.ownerId) {
if (!(p.ownerId in ownerLockCache)) ownerLockCache[p.ownerId] = getOwnerLockdownSecs(p.ownerId);
lockSecs = ownerLockCache[p.ownerId];
}
const dist = pPos ? Math.hypot(p.x - pPos.x, p.y - pPos.y, p.z - pPos.z) : Infinity;
const value = Math.max(p.price || 0, p.income || 0);
const blockedActive = isStealMode && p.type === 'active';
let blockedLock = isStealMode && lockSecs > 0 && !_withinBaseLockCycle(p.ownerId);
const blockedWorth = isStealMode && _lowestSellableIncome !== null && p.income <= _lowestSellableIncome;
const candidate = !blockedActive && !blockedLock && !blockedWorth;
const unlocked = !isStealMode || lockSecs <= 1;
const _petMut = _mutName(p.mutation);
return {
pet: [p.rarity, _petMut, p.name].filter(Boolean).join(' '),
rar: p.rarity || '',
mut: _petMut,
pname: p.name || '',
lock: lockSecs,
owner: p.owner || '?',
income: p.income || 0,
value,
dist,
candidate,
unlocked,
snipeTime: getSnipeTime(p.token)
};
});
if (_matchesSortCol) {
rows.sort((a, b) => {
let _mv = 0;
if (_matchesSortCol === 'pet') _mv = String(a.pet || '').localeCompare(String(b.pet || ''));
else if (_matchesSortCol === 'owner') _mv = String(a.owner || '').localeCompare(String(b.owner || ''));
else if (_matchesSortCol === 'lock') _mv = (a.lock || 0) - (b.lock || 0);
return _mv * _matchesSortDir;
});
} else {
rows.sort((a, b) => {
if (isStealMode) {
if (a.lock !== b.lock) return a.lock - b.lock;
if (a.candidate !== b.candidate) return a.candidate ? -1 : 1;
if (b.income !== a.income) return b.income - a.income;
if (b.value !== a.value) return b.value - a.value;
if (a.dist !== b.dist) return a.dist - b.dist;
} else {
if (!a.snipeTime && b.snipeTime) return -1;
if (a.snipeTime && !b.snipeTime) return 1;
if (a.snipeTime && b.snipeTime && a.snipeTime !== b.snipeTime) return a.snipeTime - b.snipeTime;
if (b.value !== a.value) return b.value - a.value;
if (a.dist !== b.dist) return a.dist - b.dist;
}
return a.lock === b.lock ? 0 : a.lock - b.lock;
});
}
const _msortArw = (c) => _matchesSortCol === c ? (_matchesSortDir < 0 ? ' \u25bc' : ' \u25b2') : '';
let html = '<table class="ml-snipe-tbl"><tr><th data-msort="pet">' + esc(T.sniper_tbl_pet || 'Pet') + _msortArw('pet') + '</th><th data-msort="owner">' + esc(T.sniper_tbl_owner || 'Owner') + _msortArw('owner') + '</th><th data-msort="lock">' + esc(T.sniper_tbl_lock || 'Lock') + _msortArw('lock') + '</th></tr>';
for (const r of rows) {
const cls = r.lock <= 0 ? 'lock-0' : r.lock <= 10 ? 'lock-lo' : 'lock-hi';
const lockStr = r.lock <= 0 ? '\u2705' : r.lock === Infinity ? '\ud83d\udd12\u221e' : '\ud83d\udd12' + (r.lock >= 60 ? Math.floor(r.lock / 60) + 'm' + (Math.ceil(r.lock % 60) > 0 ? Math.ceil(r.lock % 60) + 's' : '') : Math.ceil(r.lock) + 's');
html += '<tr><td style="white-space:normal">' + (r.rar ? '<span style="opacity:.65">' + esc(r.rar) + '</span> ' : '') + (r.mut ? '<span class="pet-mut-' + esc(r.mut) + '">' + esc(r.mut) + '</span> ' : '') + esc(r.pname) + '</td><td>' + esc(r.owner) + '</td><td class="' + cls + '">' + lockStr + '</td></tr>';
}
html += '</table>';
if (_matchCachedHtml !== html) {
_matchesEl.innerHTML = html;
_snipeTypesHtmlCache.set(_matchesEl, html);
}
}
}
return { matches, pets, isStealMode, totalPets: pets.length, visiblePets: isStealMode ? nameMatches.length : (wavesWildMatches ? wavesWildMatches.length : 0), minLockSecs: isFinite(_minLockedSecs) ? _minLockedSecs : null, blocked, notWorth, _bWild: _blockWild, _bActive: _blockActive, _bLock: _blockLock, _bLeft: _blockLeft, _lowestIncome: _lowestSellableIncome, sample: nameMatches[0] ? { owner: nameMatches[0].owner, ownerId: nameMatches[0].ownerId, type: nameMatches[0].type } : null };
}
let _snipeScanTimer = null;
let _noMatchLogSkip = 0;
const _lockWaitLogged = new Map();
const _stealEnterLogged = new Map();
const _scanNullLogged = new Map();
const _LOCK_WAIT_PROBE_MS = 12000;
const _NO_MATCH_BACKOFF_MS = 4000;
const _STEAL_JOIN_SETTLE_MS = 5000;
let _noMatchBackoffUntil = 0;
function _abortProbeLocal() {
if (!_probeInProgress) return false;
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
_probeOriginalRoomId = null;
if (typeof _probeRooms === 'function') {
try { if (_probeRooms.abort) _probeRooms.abort(); } catch (_) {}
try { if (_probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive(); } catch (_) {}
}
_dbgLog('snipe', 'probe-abort-local', null, 'debug');
return true;
}
function _localStealableSoon() {
try {
const sc = _sc();
if (!sc.active || !sc.filter) return false;
const bm = _getBasesManager();
if (!bm?.activeBases) return false;
const myId = _myId();
const now = Date.now();
const pets = getAllPets();
for (const p of pets) {
if (p.ownerId === myId || p.owner === (T.owner_yours || 'Yours')) continue;
if (p.owner === (T.owner_wild || 'Wild') || !p.ownerId) continue;
if (p.type === 'active') continue;
if (!petMatchesFilter(p, sc.filter)) continue;
const ls = getOwnerLockdownSecs(p.ownerId);
if (ls <= 0) return true;
if (ls <= 8) return true;
let _realLock = false;
const _until = _serverLockdownUntil.get(p.ownerId);
if (_until && _until > now + 1000) _realLock = true;
const _ldm = _getLockdownMgr();
const _le = _ldm?.lockedBases?.get(p.ownerId);
if (_le && _le.endTime > now + 1000) _realLock = true;
for (const bd of bm.activeBases) {
if (bd.data?.sessionId !== p.ownerId) continue;
const _lb = bd.entity?.findByName?.('LockdownButton')?.script?.lockdownButton;
if (_lb?.lockdownTimeLeft > 1) _realLock = true;
else if (bd.data.lockdownTimeLeft > 1) _realLock = true;
}
if (!_realLock && _baseLastLockedAt.has(p.ownerId) && !_baseExplicitUnlock.has(p.ownerId)) return true;
}
} catch (_) {}
return false;
}
function _probeAndHop(mode, trigger, useSeat, onNoMatch, onErr) {
const _tag = mode === 'PetTycoon' ? 'steal' : 'waves';
if (_modeSwitchPending()) return 'cooldown';
if (typeof _probeRooms !== 'function') {
_dbgLog('snipe', 'probe-skip-' + _tag, { hasProbeRooms: typeof _probeRooms, probeInProgress: _probeInProgress });
performServerHop(mode);
return 'skip';
}
if (_probeInProgress || Date.now() - _lastProbeEnd <= 200) return 'cooldown';
if (typeof _probeRooms === 'function' && _probeRooms.getThrottledUntil && Date.now() < _probeRooms.getThrottledUntil()) return 'cooldown';
if (_tag === 'steal' && Date.now() < _noMatchBackoffUntil) return 'cooldown';
_dbgLog('snipe', 'probe-trigger-' + trigger, { hasProbeRooms: typeof _probeRooms, probeInProgress: _probeInProgress });
_probeInProgress = true;
_probeStartedAt = Date.now();
_probeOriginalRoomId = (_getNetworkManager()?.room?.roomId) || null;
const _probeStale = () => {
const _nowRm = _getNetworkManager()?.room;
if (_probeOriginalRoomId && _nowRm?.roomId && _nowRm.roomId !== _probeOriginalRoomId) return true;
return _snipeMode() !== _tag || !_sc().active || !_sc().autoHop;
};
_probeRooms(_sc().filter, mode).then(bestRoom => {
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
if (_probeStale()) {
_dbgLog('snipe', 'probe-' + _tag + '-stale', { roomId: bestRoom?.roomId || null, nowMode: _snipeMode() });
if (bestRoom && typeof bestRoom._releaseSeat === 'function') { try { bestRoom._releaseSeat(); } catch (_) {} }
_probeOriginalRoomId = null;
return;
}
if (bestRoom?.roomId && bestRoom.roomId !== (_getNetworkManager()?.room?.roomId)) {
_dbgLog('snipe', 'probe-' + _tag + '-found', { roomId: bestRoom.roomId, matches: bestRoom.matchCount, pet: bestRoom?.topPet?.name || null });
const _localAct = _snipePetActionActive || _snipeDropInProgress || _stealRetryTimer;
let _localMatch = false;
let _lockWaitActive = false;
let _localUnknown = false;
let _localSoon = false;
if (!_localAct) {
try {
const _s2 = snipeScan();
if (_s2) {
_localMatch = _s2.matches.length > 0;
if (!_localMatch && _s2._bLock > 0 && _s2.minLockSecs != null && _s2.minLockSecs <= (_sc().lockdownMax || 0) && _snipeLockWaitStart !== -1 && _snipeLockWaitStart > 0 && _snipeLockWaitUntil > 0 && Date.now() < _snipeLockWaitUntil) {
_lockWaitActive = true;
}
if (_tag === 'steal' && !_localMatch) _localSoon = _localStealableSoon();
} else {
_localUnknown = true;
}
} catch (_) {
_localUnknown = true;
}
}
const _deferReason = _localAct ? 'action' : (_localUnknown ? 'scan-unknown' : (_localMatch ? 'local-match' : (_localSoon ? 'local-soon' : 'lock-wait')));
if (_localAct || _localUnknown || _localMatch || _localSoon || _lockWaitActive) {
_dbgLog('snipe', 'probe-' + _tag + '-hop-deferred', { roomId: bestRoom.roomId, reason: _deferReason, matches: bestRoom.matchCount, unlocked: bestRoom.unlockedMatchCount || 0 });
if (bestRoom && typeof bestRoom._releaseSeat === 'function') { try { bestRoom._releaseSeat(); } catch (_) {} }
_snipeHopNoMatchStart = Date.now();
return;
}
_targetedHopGrace = Date.now() + 20000;
performTargetedHop(bestRoom.roomId, mode, bestRoom.reservation, bestRoom._releaseSeat, false, 'match', (bestRoom?.topPet?.name || ''));
} else if (bestRoom?.roomId) {
_dbgLog('snipe', 'probe-' + _tag + '-already-here', { roomId: bestRoom.roomId, matches: bestRoom.matchCount });
_snipeHopNoMatchStart = Date.now();
} else {
_dbgLog('snipe', 'probe-' + _tag + '-no-match');
if (_tag === 'steal') _noMatchBackoffUntil = Date.now() + _NO_MATCH_BACKOFF_MS;
onNoMatch(mode);
}
}).catch(() => {
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
if (_probeStale()) {
_dbgLog('snipe', 'probe-' + _tag + '-stale', { roomId: null, nowMode: _snipeMode() });
_probeOriginalRoomId = null;
return;
}
onErr(mode);
});
return 'started';
}
function snipeTick() {
if (!_sc().active) {
if (_lastSnipeActive) {
_dbgLog('snipe', 'tick-inactive', { mode: _snipeMode() || null }, 'debug');
_lastSnipeActive = false;
_huntInvisOff = false;
if (_huntPrevInvis !== null) {
const _hv = _huntPrevInvis;
_huntPrevInvis = null;
if (_feats.invisible !== _hv) {
_feats.invisible = _hv;
_toggleInvisible(_hv);
_updateInvisEffect(_hv);
}
}
if (_probeInProgress && typeof _probeRooms === 'function' && _probeRooms.abort) {
_probeRooms.abort();
if (_probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive();
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
}
}
return;
}
_lastSnipeActive = true;
if (_huntPrevInvis === null) {
_huntPrevInvis = !!_feats.invisible;
_huntInvisOff = !_feats.invisible;
}
try {
const _s0t = _sc();
if (_s0t?.filter && _s0t?.filter.trim() && !_feats.invisible && !_hopInProgress && !_huntInvisOff) {
_feats.invisible = true;
_toggleInvisible(true);
_updateInvisEffect(true);
}
} catch (_) {}
{
const _nmW0 = _getNetworkManager();
const _modeW = _snipeMode() || _lastKnownSnipeMode;
if (_modeW && !_nmW0?.room && !_hopInProgress && !_probeInProgress) {
const _nowW = Date.now();
if (!_stuckNotInRoomAt) _stuckNotInRoomAt = _nowW;
const _waitMs = _nowW - _stuckNotInRoomAt;
if (!_rrRecovering && _waitMs > 5000 && !_stuckReconnectAt && !_nmW0?.isConnecting) {
_stuckReconnectAt = _nowW;
_dbgLog('snipe', 'stuck-reconnect', { waitedMs: _waitMs, mode: _modeW });
try { if (typeof _probeRooms === 'function' && _probeInProgress && _probeRooms.abort) { _probeRooms.abort(); _probeInProgress = false; _probeStartedAt = 0; _lastProbeEnd = Date.now(); } } catch (_) {}
try { _doReconnect(_snipeModeToGame(_modeW) || 'PetTycoon'); } catch (_) {}
} else if (!_rrRecovering && _waitMs > 12000) {
if (!_stuckReloadedAt) {
_stuckReloadedAt = _nowW;
_dbgLog('snipe', 'stuck-reconnect2', { waitedMs: _waitMs, mode: _modeW });
try { _doReconnect(_snipeModeToGame(_modeW) || 'PetTycoon'); } catch (_) {}
} else if (_nowW - _stuckReloadedAt > 20000) {
_stuckReloadedAt = 0;
_dbgLog('snipe', 'stuck-reload', { waitedMs: _waitMs });
_stuckNotInRoomAt = 0;
_stuckReconnectAt = 0;
try { _hopReload('stuck-not-in-room'); } catch (_) { try { window.location.reload(); } catch (_) {} }
}
}
} else {
_stuckNotInRoomAt = 0;
_stuckReconnectAt = 0;
_stuckReloadedAt = 0;
}
}
_afkSellTick();
if (!_lockDataReceived && _snipeRoomJoinTime && Date.now() - _snipeRoomJoinTime > 5000) {
_dbgLog('snipe', 'lock-data-fallback', { waited: Date.now() - _snipeRoomJoinTime }, 'warn');
_lockDataReceived = true;
}
if (_hopInProgress) {
if (_hopStartedAt && Date.now() - _hopStartedAt > 20000) {
_dbgLog('snipe', 'hop-stuck-reset', { stuckMs: Date.now() - _hopStartedAt }, 'warn');
_hopInProgress = false;
_hopStartedAt = 0;
} else {
return;
}
}
if (_probeInProgress && _probeStartedAt && Date.now() - _probeStartedAt > 30000) {
_dbgLog('snipe', 'probe-stuck-reset', { stuckMs: Date.now() - _probeStartedAt }, 'warn');
if (typeof _probeRooms === 'function' && _probeRooms.abort) _probeRooms.abort();
if (typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive();
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
}
if (_snipePetActionActive || _snipeDropInProgress || _stealRetryTimer) {
if (_snipePetActionActive && _snipeActionStartedAt && Date.now() - _snipeActionStartedAt > 30000) {
_dbgLog('snipe', 'action-stale-reset', { stuckMs: Date.now() - _snipeActionStartedAt }, 'error');
_snipePetActionActive = false;
_snipeActionStartedAt = 0;
_snipeStealPos = null;
_ghostSuppressed = false;
_snipe.freezeStealActive = false;
_snipe.freezeUntil = 0;
_snipe.freezeStartedAt = 0;
if (_stealRetryTimer) { clearInterval(_stealRetryTimer); _stealRetryTimer = null; }
} else {
_setSS(T.sniper_waiting);
return;
}
}
if (_snipePreInvis !== null) {
const _pre = _snipePreInvis;
_snipePreInvis = null;
const _restoreSnipeInvis = () => {
if (_snipePetActionActive || _stealRetryTimer || _snipeDropInProgress) {
setTimeout(_restoreSnipeInvis, 500);
return;
}
let _invTgt = _pre;
try {
const _s0 = _sc();
if (_s0?.active && _s0?.filter && _s0?.filter.trim()) _invTgt = true;
else if (_huntInvisOff) _invTgt = false;
else if (_huntPrevInvis !== null) _invTgt = _huntPrevInvis;
else _invTgt = _feats.invisible;
} catch (_) {}
_feats.invisible = _invTgt;
_toggleInvisible(_invTgt);
_updateInvisEffect(_invTgt);
if (typeof _carry.forcedInvis !== 'undefined') _carry.forcedInvis = false;
if (_snipeMode() === 'steal' && _getPetTycoon()?.isHoldingPet && typeof _scheduleWalkHome === 'function') _scheduleWalkHome();
};
setTimeout(_restoreSnipeInvis, 1000);
}
const now = Date.now();
const mode = _snipeMode();
if (mode && _snipeLastMode && mode !== _snipeLastMode) {
_snipeCooldown = 0;
_snipeWasHolding = false;
_preSnipePos = null;
_preSnipeOwner = null;
}
if (mode) _snipeLastMode = mode;
const pt = _getPetTycoon();
const et = _getEscapeTsunami();
const holding = mode === 'steal' ? !!pt?.isHoldingPet : mode === 'waves' ? !!et?.isHoldingPet : !!(pt?.isHoldingPet || et?.isHoldingPet);
if (_snipeWasHolding && !holding) {
if (_preSnipePos) {
_setSnipeCooldown(4000);
const nm = _getNetworkManager();
const room = nm?.room;
const sid = room?.sessionId;
_log('snipe', '← deposited');
const _dp = getPlayer()?.getPosition?.();
_dbgLog('snipe', 'deposit', { owner: _preSnipeOwner || null, x: _dp ? _r1(_dp.x) : null, z: _dp ? _r1(_dp.z) : null, hide: _pgHidden(), elapsed: _lastStealAt ? Date.now() - _lastStealAt : null });
_preSnipePos = null;
_preSnipeOwner = null;
setTimeout(() => { if (_triggerSnipeScan) _triggerSnipeScan(); }, 50);
} else if (_snipeMode() === 'steal') {
_setSnipeCooldown(4000);
_log('snipe', 'pet deposited — cooldown');
}
}
_snipeWasHolding = holding;
if (holding) {
_setSS(T.sniper_hold_pause);
return;
}
const nm2 = _getNetworkManager();
const room = nm2?.room;
const myId = room?.sessionId;
if (_myPetTokens.size > 0 && room?.state?.players) {
let thiefName = null;
room.state.players.forEach((p, sid) => {
if (sid !== myId && p.isHoldingPet && p.holdingPetToken && _myPetTokens.has(p.holdingPetToken)) thiefName = p.username || sid;
});
if (thiefName) {
_setSS(thiefName + ' ' + T.sniper_stolen_pause);
return;
}
}
const app = W.pc?.app;
const scan = snipeScan();
if (!scan) {
if (_throttle(_scanNullLogged, _snipeMode() || 'none', Date.now(), 2000)) _dbgLog('snipe', 'scan-null', { filter: !!_sc().filter, mode: _snipeMode() || null, app: !!app, player: !!getPlayer() }, 'warn');
return;
}
if (scan.matches.length === 0) {
const _dropReady = _sc().autoDrop && _snipeMode() === 'waves' && _sc().filter && !_afkSellActive && _afkSellPending <= 0;
const _wildN = T.owner_wild || 'Wild';
const _dropCand = _dropReady ? scan.pets.filter(p => p.owner === _wildN && p.type !== 'base' && !petMatchesFilter(p, _sc().filter) && !_isAutoDropped(p.token)) : [];
if (_probeInProgress && _dropCand.length === 0) return;
if (scan.totalPets > 0 && (++_noMatchLogSkip % 50) === 0) {
_dbgLog('snipe', 'no-match-status', { total: scan.totalPets, nameMatch: scan.visiblePets, blockedW: scan._bWild, blockedA: scan._bActive, blockedL: scan._bLock, blockedLeft: scan._bLeft, notWorth: scan.notWorth }, 'debug');
}
if (_sc().autoHop && _snipeMode() === 'steal' && _sc().filter && scan.totalPets > 0) {
if (_modeSwitchPending()) { _snipeHopNoMatchStart = 0; _snipeLockWaitStart = 0; _snipeLockWaitUntil = 0; return; }
if (!_snipeRoomProven && _snipeRoomJoinTime && Date.now() - _snipeRoomJoinTime < 3000) {
_snipeHopNoMatchStart = 0;
_snipeLockWaitStart = 0;
_snipeLockWaitUntil = 0;
return;
}
if (scan._bLock > 0 && scan.minLockSecs != null && scan.minLockSecs <= _sc().lockdownMax) {
if (!_snipeLockWaitStart) {
_snipeLockWaitStart = Date.now();
_snipeLockWaitUntil = Date.now() + Math.max(1000, Math.min(scan.minLockSecs, (_sc().lockdownMax || 0)) * 1000);
_snipeHopNoMatchStart = 0;
if (_throttle(_lockWaitLogged, 'lw', Date.now(), 30000)) {
_dbgLog('snipe', 'lock-wait', { minLockSecs: scan.minLockSecs, lockdownMax: _sc().lockdownMax, patienceSecs: Math.min(scan.minLockSecs, _sc().lockdownMax || 0) }, 'warn');
}
}
if (_snipeLockWaitStart !== -1 && Date.now() < _snipeLockWaitUntil) {
if (Date.now() - _lastProbeEnd <= _LOCK_WAIT_PROBE_MS) return;
} else if (_snipeLockWaitStart !== -1) {
_dbgLog('snipe', 'hop-despite-lock', { waitedSecs: ((Date.now() - _snipeLockWaitStart) / 1000) | 0, minLockSecs: scan.minLockSecs, locked: scan._bLock }, 'warn');
_snipeLockWaitStart = -1;
_snipeLockWaitUntil = 0;
}
}
const _provenS = _snipeRoomProven;
if (!_provenS && !_snipeHopNoMatchStart) _snipeHopNoMatchStart = Date.now();
if (_provenS || ((((Date.now() - _snipeHopNoMatchStart) / 1000) | 0) >= 1)) {
_refreshMyPetTokens();
if (_myPetTokens.size > 0) {
const nm = _getNetworkManager();
const room = nm?.room;
if (room?.state?.players) {
const myId = room.sessionId;
let thief = null;
room.state.players.forEach((p, sid) => {
if (sid !== myId && p.isHoldingPet && p.holdingPetToken && _myPetTokens.has(p.holdingPetToken)) thief = p.username || sid;
});
if (thief) {
_setSS(T.sniper_theft_nohop + ' ' + thief + ' ' + T.sniper_nohop_suffix);
return;
}
}
}
_setSS(T.sniper_hopping);
_snipeHopNoMatchStart = 0;
const pt3 = _getPetTycoon();
if (pt3?.isHoldingPet) return;
const lastChance = snipeScan();
if (!lastChance) { _snipeHopNoMatchStart = 0; return; }
if (lastChance.matches.length > 0) { _snipeHopNoMatchStart = 0; return; }
if (_probeAndHop('PetTycoon', 'steal', true, () => { _snipeHopNoMatchStart = Date.now(); }, () => { _snipeHopNoMatchStart = Date.now(); }) !== 'cooldown') return;
_snipeHopNoMatchStart = Date.now();
}
return;
}
if (_sc().autoHop && _snipeMode() === 'waves' && _sc().filter && scan.totalPets > 0) {
if (_modeSwitchPending()) { _snipeHopNoMatchStart = 0; return; }
if (!_snipeRoomProven && _snipeRoomJoinTime && Date.now() - _snipeRoomJoinTime < 3000) {
_snipeHopNoMatchStart = 0;
return;
}
const _provenW = _snipeRoomProven;
if (!_provenW && !_snipeHopNoMatchStart) _snipeHopNoMatchStart = Date.now();
if (_provenW || ((((Date.now() - _snipeHopNoMatchStart) / 1000) | 0) >= 1)) {
_setSS(T.sniper_hopping);
_snipeHopNoMatchStart = 0;
const _lastChanceW = snipeScan();
if (!_lastChanceW) { _snipeHopNoMatchStart = 0; return; }
if (_lastChanceW.matches.length > 0) { _snipeHopNoMatchStart = 0; return; }
_probeAndHop('EscapeTsunami', 'waves-nomatch', false, () => { _snipeHopNoMatchStart = Date.now(); }, () => { _snipeHopNoMatchStart = Date.now(); });
_snipeHopNoMatchStart = Date.now();
}
}
if (_dropCand.length > 0) {
_dropCand.sort((a, b) => Math.max(b.price || 0, b.income || 0) - Math.max(a.price || 0, a.income || 0));
const _best = _dropCand[0];
scan.matches = [_best];
_dbgLog('snipe', 'waves-drop-clear', { name: _best.name, token: String(_best.token), worth: Math.max(_best.price || 0, _best.income || 0) });
} else {
return;
}
}
if (now < _snipeCooldown) {
_setSS(T.sniper_cooldown + ' ' + (((_snipeCooldown - now) / 1000) | 0) + 's...');
return;
}
_snipeHopNoMatchStart = 0;
_snipeLockWaitStart = 0;
_snipeLockWaitUntil = 0;
const { matches, isStealMode } = scan;
if (_throttle(_stealEnterLogged, 'se', Date.now(), 2000)) {
_dbgLog('snipe', 'steal-enter', { matchCount: matches.length, isStealMode, hasPlayer: !!getPlayer() }, 'debug');
}
const allPets = scan.pets || [];
const player = getPlayer();
if (!player) { _dbgLog('snipe', 'steal-no-player', null, 'warn'); return; }
const pPos = player.getPosition();
if (!pPos) { _dbgLog('snipe', 'steal-no-pos', null, 'warn'); return; }
for (const m of matches) {
_petMeta.set(m, {
dist: Math.hypot(m.x - pPos.x, m.y - pPos.y, m.z - pPos.z),
snipeTime: getSnipeTime(m.token),
value: Math.max(m.price || 0, m.income || 0)
});
}
matches.sort((a, b) => {
const am = _petMeta.get(a), bm = _petMeta.get(b);
if (!isStealMode) {
if (!am.snipeTime && bm.snipeTime) return -1;
if (am.snipeTime && !bm.snipeTime) return 1;
if (am.snipeTime && bm.snipeTime) return am.snipeTime - bm.snipeTime;
}
if (isStealMode) {
if (b.income !== a.income) return b.income - a.income;
}
if (bm.value !== am.value) return bm.value - am.value;
return am.dist - bm.dist;
});
let target = null;
if (isStealMode) {
if (now < _joinGraceUntil || !_lockDataReceived) {
const _gd = _lockDataReceived ? ((_joinGraceUntil - now) / 1000).toFixed(1) : null;
_setSS(T.sniper_wait_lock + (_gd ? ' (' + _gd + 's)' : ''));
if (_throttle(_stealEnterLogged, 'jg', Date.now(), 3000)) {
_dbgLog('snipe', 'steal-block-grace', { remain: _gd, lockData: _lockDataReceived }, 'warn');
}
return;
}
const nm0 = _getNetworkManager();
const room0 = nm0?.room;
const sid0 = room0?.sessionId;
if (!room0 || !sid0) { _dbgLog('snipe', 'skip-no-room', { nm: !!nm0 }, 'warn'); return; }
const bm0 = _getBasesManager();
const maxSlots0 = bm0?.myBase?.data?.places || 10;
const myBasePets0 = allPets.filter(p => p.ownerId === sid0 && p.type === 'base');
const baseFull = myBasePets0.length >= maxSlots0;
let lowest0 = null;
if (baseFull) {
const sellable0 = myBasePets0.filter(p => !p.isEgg);
lowest0 = sellable0.length ? sellable0.sort((a, b) => a.income - b.income)[0] : null;
if (!lowest0) {
_setSS(T.sniper_full_eggs);
_setSnipeCooldown(2000);
_dbgLog('snipe', 'skip-full-eggs', { slots: maxSlots0, count: myBasePets0.length }, 'warn');
return;
}
}
let _skipLock = 0, _skipIncome = 0, _bypassNewcomer = 0, _skipFresh = 0;
for (const cand of matches) {
const candLock = cand.ownerId ? getOwnerLockdownSecs(cand.ownerId) : 0;
if (candLock > 0 && !_withinBaseLockCycle(cand.ownerId)) { _skipLock++; continue; }
if (cand.ownerId && candLock <= 0) {
const _srvLocked = _serverLockedSessions.has(cand.ownerId);
const _srvUntil = (_serverLockdownUntil.get(cand.ownerId) || 0) > Date.now();
if (_srvLocked || _srvUntil) {
if (_throttle(_lockGraceLogged, cand.ownerId + ':srv', Date.now(), 30000)) {
_dbgLog('snipe', 'steal-lock-miss', { ownerId: cand.ownerId, lockSecs: candLock, srvLocked: _srvLocked, srvUntil: _srvUntil }, 'warn');
}
}
}
if (_sc().autoSell && baseFull && lowest0 && cand.income <= lowest0.income) { _skipIncome++; continue; }
target = cand;
_baseEntryTimes.set(target.ownerId, Date.now());
break;
}
if (!target) {
_setSS(T.sniper_locked);
_setSnipeCooldown(500);
_dbgLog('snipe', 'skip-locked', { matchCount: matches.length, skipLock: _skipLock, skipIncome: _skipIncome, skipFresh: _skipFresh, bypassNewcomer: _bypassNewcomer, baseFull, lowestIncome: lowest0 ? lowest0.income : null, autoSell: _sc().autoSell, topMatch: matches[0] ? { name: matches[0].name, ownerId: matches[0].ownerId, income: matches[0].income, rarity: matches[0].rarity } : null }, 'warn');
return;
}
_dbgLog('snipe', 'target-picked', { name: target.name, ownerId: target.ownerId, income: target.income, rarity: target.rarity, skipped: { lock: _skipLock, income: _skipIncome, fresh: _skipFresh, bypassNew: _bypassNewcomer } });
} else {
const etBm2 = _getEscapeTsunami()?.basesManagerScript;
if (_sc().autoPlaceOnBase !== false && etBm2?.myPlaces) {
const hasEmpty = Object.values(etBm2.myPlaces).some(p => !p.placeActive && !p.locked && !p.placeTaken && !_slotUsed(p.placeId));
if (!hasEmpty && !_sc().autoDrop) {
_setSS(T.sniper_base_full + ' (all places taken)');
_setSnipeCooldown(1000);
return;
}
}
target = matches[0];
}
_setSS(T.sniper_sniping + ' ' + target.name + '...');
if (isStealMode) {
const nm = _getNetworkManager();
const room = nm?.room;
const sid = room?.sessionId;
_dbgLog('snipe', 'steal-pre', { room: !!room, sid: !!sid, target: target.name });
if (!room || !sid) return;
{
const _nowS = Date.now();
if (_rrRecovering || (_nowS - _snipeRoomJoinTime) < _STEAL_JOIN_SETTLE_MS) {
_setSnipeCooldown(2000);
_dbgLog('snipe', 'steal-block-pos', { reason: _rrRecovering ? 'recovering' : 'settle', inMs: Math.max(0, _STEAL_JOIN_SETTLE_MS - (_nowS - _snipeRoomJoinTime)) }, 'warn');
return;
}
const _plY = getPlayer()?.getPosition?.()?.y;
if (_plY !== undefined && _plY < _rrFALL) {
_setSnipeCooldown(2000);
_dbgLog('snipe', 'steal-block-pos', { reason: 'falling', y: Math.round(_plY) }, 'warn');
return;
}
}
if (typeof _cancelWalkHome === 'function') _cancelWalkHome();
_abortProbeLocal();
_snipePetActionActive = true;
_snipeActionStartedAt = Date.now();
const rawSend = _rawSend(room);
const bm = _getBasesManager();
const maxSlots = bm?.myBase?.data?.places || 10;
const myBasePets = allPets.filter(p => p.ownerId === sid && p.type === 'base');
if (myBasePets.length >= maxSlots) {
const sellable = myBasePets.filter(p => !p.isEgg);
const lowest = sellable.length ? sellable.sort((a, b) => a.income - b.income)[0] : null;
if (_sc().autoSell && lowest && target.income > lowest.income) {
rawSend('sellPet', lowest.token);
_log('snipe', 'sell: ' + lowest.name + ' $' + lowest.income + ' (make room)');
_dbgLog('snipe', 'sell-room', { name: lowest.name, income: lowest.income });
}
}
let stealX = target.x, stealZ = target.z;
const stealY = target.y + 1.5;
if (target.ownerId && bm?.activeBases) {
for (const bd of bm.activeBases) {
if (bd.data?.sessionId !== target.ownerId) continue;
const baseEnt = bm.baseEntities?.[bd.data.id];
if (!baseEnt) break;
const bc = baseEnt.getPosition();
if (!bc) break;
const dx = bc.x - target.x, dz = bc.z - target.z;
const dist = Math.sqrt(dx * dx + dz * dz);
if (dist > 0.01) {
const move = Math.min(1.3, dist);
stealX = target.x + (dx / dist) * move;
stealZ = target.z + (dz / dist) * move;
}
break;
}
}
_snipeStealPos = { x: stealX, y: stealY, z: stealZ };
_ghostSuppressed = true;
_snipePreInvis = _feats.invisible;
_feats.invisible = true;
_toggleInvisible(true);
_updateInvisEffect(true);
if (typeof _carry.forcedInvis !== 'undefined') _carry.forcedInvis = false;
_logMove('steal', stealX, stealY, stealZ, { owner: target.ownerId || null });
player.setPosition(stealX, stealY, stealZ);
_preSnipePos = { x: stealX, y: stealY, z: stealZ };
_preSnipeOwner = target.ownerId || null;
const isStealSnipe = !!_getBasesManager()?.activeBases;
if (isStealSnipe) {
_snipe.freezeStartedAt = Date.now();
_snipe.freezeUntil = _snipe.freezeStartedAt + 3000;
_snipe.freezeStealActive = true;
backPos = { x: stealX, y: stealY, z: stealZ };
_dbgLog('snipe', 'steal-freeze', { x: _mr2(stealX), y: _mr2(stealY), z: _mr2(stealZ), ms: 3000, settleWait: _STEAL_JOIN_SETTLE_MS });
}
_log('snipe', '→ ' + target.name + ' (' + (_preSnipeOwner || '?') + ') @ ' + stealX.toFixed(1) + ',' + stealZ.toFixed(1));
_dbgLog('snipe', 'steal-attempt', { name: target.name, owner: _preSnipeOwner || null, x: _mr2(stealX), y: _mr2(stealY), z: _mr2(stealZ), freeze: isStealSnipe ? 3000 : null });
const posMsg = { x: stealX, y: stealY, z: stealZ, w: 0 };
rawSend('p', posMsg);
recordSnipe(target.token);
if (target.ownerId) {
if (_recentlySnipedBases.size > 256) {
const overflow = _recentlySnipedBases.size - 256;
const it = _recentlySnipedBases.keys();
for (let i = 0; i < overflow; i++) _recentlySnipedBases.delete(it.next().value);
}
const _lock = getOwnerLockdownSecs(target.ownerId);
_recentlySnipedBases.set(target.ownerId, { time: Date.now(), lockAtEntry: _lock, seenUnlock: _lock <= 1 });
}
_setSS(T.sniper_stealing + ' ' + target.name + '...');
_setSnipeCooldown(8000);
_dbgLog('snipe', 'steal-pos-send', { x: _mr2(stealX), y: _mr2(stealY), z: _mr2(stealZ), sends: 1, via: 'broadcast' });
const _initialStealDelay = 600;
const _stealRetryEvery = 400;
const _stealRetryMax = 20;
let retryCount = 0;
const _stealStartMs = Date.now();
setTimeout(() => {
_ghostSuppressed = false;
room.send('stealPet', target.token);
_dbgLog('snipe', 'steal-fire', { attempt: 1, afterMs: _initialStealDelay, elapsed: Date.now() - _stealStartMs });
if (_stealRetryTimer) clearInterval(_stealRetryTimer);
_stealRetryTimer = setInterval(() => {
retryCount++;
const _retryElapsed = Date.now() - _stealStartMs;
const pt = _getPetTycoon();
if (pt?.isHoldingPet) {
clearInterval(_stealRetryTimer); _stealRetryTimer = null;
_snipePetActionActive = false;
_snipe.freezeStealActive = false;
_snipe.freezeUntil = 0;
_snipe.freezeStartedAt = 0;
_snipeStealPos = null;
_log('snipe', 'steal confirmed after ' + retryCount + ' check(s)');
_dbgLog('snipe', 'steal-confirmed', { attempts: retryCount + 1, elapsed: _retryElapsed });
if (target.ownerId) _baseEntryTimes.set(target.ownerId, Date.now());
if (_snipeMode() === 'waves') _trySendProTip();
else if (typeof _scheduleWalkHome === 'function') _scheduleWalkHome();
return;
}
if (target.ownerId && _baseLeftAt.has(target.ownerId)) {
clearInterval(_stealRetryTimer); _stealRetryTimer = null;
_snipePetActionActive = false;
_snipe.freezeStealActive = false;
_snipe.freezeUntil = 0;
_snipe.freezeStartedAt = 0;
_snipeStealPos = null;
_preSnipePos = null;
_preSnipeOwner = null;
const _altL = matches.length - 1;
_setSnipeCooldown(_altL > 0 ? 3000 : 6000);
_log('snipe', 'steal aborted — owner left room');
_dbgLog('snipe', 'steal-abort-left', { owner: target.ownerId, elapsed: _retryElapsed, attempts: retryCount + 1 }, 'warn');
return;
}
if (retryCount >= _stealRetryMax) {
clearInterval(_stealRetryTimer); _stealRetryTimer = null;
_snipePetActionActive = false;
_snipe.freezeStealActive = false;
_snipe.freezeUntil = 0;
_snipe.freezeStartedAt = 0;
_snipeStealPos = null;
_preSnipePos = null;
_preSnipeOwner = null;
const _altF = matches.length - 1;
_setSnipeCooldown(_altF > 0 ? 5000 : 12000);
_log('snipe', 'steal failed after ' + (_stealRetryMax + 1) + ' attempts' + (_altF > 0 ? ' (re-target)' : ''));
let _failLock = null;
let _failPresent = null;
let _failLive = null;
try { _failLock = Math.round(getOwnerLockdownSecs(target.ownerId || '')); } catch (_) {}
try {
const _tkS = String(target.token);
const _pmL = getPetsManager();
if (_pmL) {
_failLive = false;
if (_pmL.basePets) { for (const _tk of _pmL.basePets.keys()) { if (String(_tk) === _tkS) { _failLive = true; break; } } }
if (!_failLive && _pmL.activePets) { for (const _tk of _pmL.activePets.keys()) { if (String(_tk) === _tkS) { _failLive = true; break; } } }
}
const _alP = getAllPets();
_failPresent = false;
for (let i = 0; i < _alP.length; i++) { if (String(_alP[i].token) === _tkS) { _failPresent = true; break; } }
} catch (_) {}
_dbgLog('snipe', 'steal-failed', { alt: _altF, elapsed: _retryElapsed, attempts: _stealRetryMax + 1, lockSecs: _failLock, petPresent: _failPresent, petLive: _failLive }, 'error');
return;
}
room.send('stealPet', target.token);
if (retryCount <= 3 || retryCount % 5 === 0) {
_dbgLog('snipe', 'steal-retry', { n: retryCount, elapsed: _retryElapsed });
}
}, _stealRetryEvery);
}, _initialStealDelay);
} else {
const orig = player.getPosition().clone();
const nm = _getNetworkManager();
const room = nm?.room;
const sid = room?.sessionId;
if (!room || !sid) return;
_abortProbeLocal();
_snipePetActionActive = true;
_snipeActionStartedAt = Date.now();
const _dropTarget = !!(target && _sc().autoDrop && target.owner === (T.owner_wild || 'Wild') && !petMatchesFilter(target, _sc().filter));
_snipePreInvis = _feats.invisible;
if (!_huntInvisOff) {
_feats.invisible = true;
_toggleInvisible(true);
_updateInvisEffect(true);
}
const rawSend = _rawSend(room);
_setSnipeCooldown(5000);
if (_feats.ghostMode) {
_wavesGhostPos = { x: target.x, y: target.y + 0.5, z: target.z };
_logMove('waves-grab', target.x, target.y + 0.5, target.z, { ghost: true });
} else {
_logMove('waves-grab', target.x, target.y + 0.5, target.z, { ghost: false });
player.setPosition(target.x, target.y + 0.5, target.z);
}
(async () => {
await new Promise(r => setTimeout(r, 150));
app.fire('ModeOverlay:BuyPet', target.token);
if (!_dropTarget) {
recordSnipe(target.token);
}
_log('snipe', 'grab: ' + target.name + ' ' + target.token);
_dbgLog('snipe', 'grab', { name: target.name, token: String(target.token), x: _mr2(target.x), z: _mr2(target.z), elapsed: Date.now() - _snipeActionStartedAt });
const grabbed = await new Promise(resolve => {
let _gd = false;
let _gretries = 0;
let _gtmo = null;
const _gfin = (v) => { if (_gd) return; _gd = true; clearTimeout(_gtmo); gunsub(); resolve(v); };
const _garm = () => {
_gtmo = setTimeout(() => {
if (_gretries < 1) {
_gretries++;
const _galive = getAllPets().find(p => String(p.token) === String(target.token));
if (_galive) {
app.fire('ModeOverlay:BuyPet', target.token);
_dbgLog('snipe', 'grab-retry', { name: target.name, token: String(target.token) });
_garm();
return;
}
}
_gfin(false);
}, 1000);
};
const gunsub = room.onMessage('petHeld', msg => {
if (msg.holderSessionId !== sid) return;
_gfin(true);
});
_garm();
});
if (!grabbed) {
_wavesGhostPos = null;
if (!_feats.ghostMode) { _logMove('waves-restore', orig.x, orig.y, orig.z, { why: 'grab-fail' }); player.setPosition(orig.x, orig.y, orig.z); }
_setSS(T.sniper_grab_fail);
_setSnipeCooldown(500);
_snipePetActionActive = false;
_dbgLog('snipe', 'grab-fail', { name: target.name, token: String(target.token), waitedMs: Date.now() - _snipeActionStartedAt }, 'warn');
return;
}
_wavesGhostPos = null;
if (!_feats.ghostMode) { _logMove('waves-restore', orig.x, orig.y, orig.z, { why: 'grabbed' }); player.setPosition(orig.x, orig.y, orig.z); }
_dbgLog('snipe', 'grab-confirmed', { name: target.name, elapsed: Date.now() - _snipeActionStartedAt });
_trySendProTip();
let autoPlaced = false;
for (let _pr = 0; _pr < 20 && !autoPlaced; _pr++) {
if (_sc().autoPlaceOnBase === false || _dropTarget) break;
const _bm = _getEscapeTsunami()?.basesManagerScript;
if (!_bm?.myPlaces) {
await new Promise(r => setTimeout(r, 200));
continue;
}
const emptyPlace = Object.values(_bm.myPlaces).find(p => !p.placeActive && !p.locked && !p.placeTaken && !_slotUsed(p.placeId));
if (!emptyPlace) break;
_markSlotUsed(emptyPlace.placeId);
await new Promise(r => setTimeout(r, 150));
rawSend('putPetOnBase', { place: parseInt(emptyPlace.placeId) });
_dbgLog('snipe', 'auto-place', { placeId: emptyPlace.placeId });
autoPlaced = true;
}
if (autoPlaced) {
_setSS(T.sniper_dropped + ' ' + target.name);
_setSnipeCooldown(300);
_wavesHoldPlace = false;
_snipePetActionActive = false;
} else if (_dropTarget) {
_snipeDropInProgress = true;
try {
const realPos = player.getPosition();
if (!realPos) { _snipeDropInProgress = false; return; }
rawSend('p', { x: realPos.x, y: realPos.y, z: realPos.z, w: 0 });
let dropped = false;
for (let att = 0; att < 4 && !dropped; att++) {
await new Promise(r => setTimeout(r, att === 0 ? 200 : 500));
const et = _getEscapeTsunami();
if (!et?.isHoldingPet) { dropped = true; break; }
const dp = new Promise(resolve => {
const t = setTimeout(() => { u(); resolve(false); }, 800);
const u = room.onMessage('escapeTsunamiPetDropped', msg => {
if (msg?.holderSessionId !== sid) return;
clearTimeout(t); u(); resolve(true);
});
});
rawSend('dropPet');
if (att > 0) rawSend('p', { x: realPos.x, y: realPos.y, z: realPos.z, w: 0 });
dropped = await dp;
if (!dropped) _log('snipe', 'drop attempt ' + (att + 1) + ' failed');
}
_snipeDropInProgress = false;
_snipeWasHolding = false;
if (!dropped) { _log('snipe', 'drop failed after retries — isHolding: ' + _getEscapeTsunami()?.isHoldingPet); _dbgLog('snipe', 'drop-failed', null, 'error'); }
else { _markAutoDropped(target.token); }
_setSS(dropped ? T.sniper_dropped + ' ' + target.name : T.sniper_drop_fail_status);
_setSnipeCooldown(300);
_wavesHoldPlace = false;
_snipePetActionActive = false;
} finally { _snipeDropInProgress = false; }
} else {
_wavesHoldPlace = true;
_setSS(T.sniper_holding + ' ' + target.name + T.sniper_place);
_setSnipeCooldown(1000);
_snipePetActionActive = false;
}
})();
}
}
let _heldPetCleanup = null;
let _ownDropPending = false;
let _afkSellDiag = 0;
let _afkSellPending = 0;
let _afkSellTokens = new Set();
let _afkSellTokenDuped = new Set();
let _afkSellDiagTick = 0;
let _afkSellLastSellAt = 0;
const _AFK_SELL_MAX_PENDING = 1;
const _AFK_SELL_FIRST_TMO = 500;
const _AFK_SELL_RETRY_TMO = 1500;
const _AFK_SELL_COOLDOWN = 1250;
function _afkSellTick() {
_afkPoll();
const _mode = _snipeMode();
const _cfg = _sc();
if (_mode !== 'waves' || !_cfg.afkSell) { if (_afkSellDiag !== 5) { _afkSellDiag = 5; _dbgLog('snipe', 'afksell-skip-mode', { mode: _mode, afkSell: _cfg.afkSell }, 'debug'); } return; }
if (!_afkSellActive) { if (_afkSellDiag !== 2) { _afkSellDiag = 2; _dbgLog('snipe', 'afksell-wait-idle', null, 'debug'); } return; }
if (_afkSellDiag === 2) { _afkSellDiag = 0; _dbgLog('snipe', 'afksell-active', null, 'debug'); }
if (_snipePetActionActive || _snipeDropInProgress) { _dbgLog('snipe', 'afksell-blocked', { act: _snipePetActionActive, drop: _snipeDropInProgress, own: _ownDropPending }, 'debug'); return; }
if (_ownDropPending && _getEscapeTsunami()?.isHoldingPet) { if (_afkSellDiag !== 8) { _afkSellDiag = 8; _dbgLog('snipe', 'afksell-blocked-own-drop', null, 'debug'); } return; }
if (_afkSellPending >= _AFK_SELL_MAX_PENDING) {
if (_afkSellDiag !== 6) { _afkSellDiag = 6; _dbgLog('snipe', 'afksell-max-pending', { pending: _afkSellPending, max: _AFK_SELL_MAX_PENDING }, 'debug'); }
return;
}
if (_getEscapeTsunami()?.isHoldingPet) { if (_afkSellDiag !== 7) { _afkSellDiag = 7; _dbgLog('snipe', 'afksell-holding', null, 'debug'); } return; }
if (_afkSellDiag >= 6 && _afkSellDiag <= 8) _afkSellDiag = 0;
const app = W.pc?.app;
const player = getPlayer();
if (!app || !player) { _dbgLog('snipe', 'afksell-no-app', { app: !!app, player: !!player }, 'debug'); return; }
const pets = getAllPets();
const wildPets = pets.filter(p => (p.owner === (T.owner_wild || 'Wild') || !p.ownerId) && p.type !== 'base');
if (!wildPets.length) { if (_afkSellDiag !== 3) { _afkSellDiag = 3; _dbgLog('snipe', 'afksell-no-wild', { total: pets.length }, 'debug'); } return; }
const nonMatching = wildPets.filter(p => !petMatchesFilter(p, _cfg.filter));
if (!nonMatching.length) { if (_afkSellDiag !== 4) { _afkSellDiag = 4; _dbgLog('snipe', 'afksell-all-match', { wild: wildPets.length, filter: _cfg.filter, wildSample: wildPets.slice(0,3).map(p => ({ name: p.name, income: p.income, price: p.price, owner: p.owner })) }, 'debug'); } return; }
_afkSellDiag = 0;
nonMatching.sort((a, b) => (b.price || b.income || 0) - (a.price || a.income || 0));
const target = nonMatching[0];
const nm = _getNetworkManager();
const room = nm?.room;
if (!room) { _dbgLog('snipe', 'afksell-no-room', null, 'debug'); return; }
const rawSend = _rawSend(room);
const sid = room.sessionId;
const token = String(target.token);
if (_afkSellTokens.has(token)) {
if (!_afkSellTokenDuped.has(token)) { _afkSellTokenDuped.add(token); _dbgLog('snipe', 'afksell-token-dupe', { token, name: target.name }, 'debug'); }
return;
}
_dbgLog('snipe', 'afksell-target', { name: target.name, token, income: target.income, price: target.price, rarity: target.rarity, mutation: target.mutation, x: Math.round(target.x), z: Math.round(target.z), nonMatchingCount: nonMatching.length, wildCount: wildPets.length });
_afkSellTokens.add(token);
_afkSellPending++;
if (!_feats.invisible) { _feats.invisible = true; _toggleInvisible(true); _updateInvisEffect(true); }
let _resolved = false;
let _retried = false;
const _afkAbort = (why) => {
if (_resolved) return;
_resolved = true;
_dbgLog('snipe', 'afksell-' + why, { token, name: target.name, pending: _afkSellPending - 1 });
_afkSellPending--;
_afkSellTokens.delete(token);
_afkSellTokenDuped.delete(token);
_wavesGhostPos = null;
};
const _fireBuy = () => { rawSend('holdPet', target.token); };
const _beginBuy = () => {
if (!_afkSellActive) { _afkAbort('player-input'); return; }
if (_getEscapeTsunami()?.isHoldingPet) { _afkAbort('player-holding'); return; }
const _live = getAllPets().find(p => String(p.token) === token);
if (!_live || ((String(_live.owner) !== (T.owner_wild || 'Wild')) && _live.ownerId)) { _afkAbort('target-grabbed'); return; }
_dbgLog('snipe', 'afksell-buy-fire', { token, name: target.name });
_fireBuy();
const _buyTime = Date.now();
if (_feats.ghostMode) _wavesGhostPos = { x: target.x, y: target.y + 0.5, z: target.z };
const _cleanup = (why) => {
if (_resolved) return;
clearTimeout(_retryTimer);
_sellUnsub();
_afkAbort(why);
};
const _retryTimer = setTimeout(() => {
if (!_retried) {
if (!_afkSellActive || _getEscapeTsunami()?.isHoldingPet) { _cleanup('player-interrupt'); return; }
_retried = true;
_dbgLog('snipe', 'afksell-buy-retry', { token, name: target.name, elapsed: Date.now() - _buyTime });
_fireBuy();
setTimeout(() => _cleanup('timeout'), _AFK_SELL_RETRY_TMO);
return;
}
_cleanup('timeout');
}, _AFK_SELL_FIRST_TMO);
const _sellUnsub = room.onMessage('petHeld', msg => {
if (msg?.holderSessionId !== sid) return;
if (String(msg.petToken) !== token) {
_dbgLog('snipe', 'afksell-petheld-diff-token', { expected: token, got: String(msg.petToken) });
return;
}
if (_resolved) { _dbgLog('snipe', 'afksell-petheld-after-resolve', { token }); return; }
_resolved = true;
clearTimeout(_retryTimer);
_sellUnsub();
_dbgLog('snipe', 'afksell-petheld', { token, name: target.name, elapsed: Date.now() - _buyTime });
rawSend('sellPet');
_afkSellLastSellAt = Date.now();
rawSend('dropPet');
_dbgLog('snipe', 'afksell-sell-sent', { token, name: target.name });
_afkSellPending--;
_afkSellTokens.delete(token);
_afkSellTokenDuped.delete(token);
_wavesGhostPos = null;
});
};
const _cooldownDelay = _afkSellLastSellAt ? Math.max(50, _AFK_SELL_COOLDOWN - (Date.now() - _afkSellLastSellAt)) : 50;
_dbgLog('snipe', 'afksell-cooldown-delay', { delay: _cooldownDelay, sinceSell: _afkSellLastSellAt ? Date.now() - _afkSellLastSellAt : -1 });
setTimeout(_beginBuy, _cooldownDelay);
}
function heldPetCleanupTick() {
if (_snipeMode() !== 'waves') return;
if (!_sc().active || _snipeDropInProgress || _ownDropPending) return;
if (_snipePetActionActive) return;
if (_wavesHoldPlace) return;
if (_afkSellActive || _afkSellPending > 0) {
_dbgLog('snipe', 'cleanup-afksell-skip', { afkSellActive: _afkSellActive, pending: _afkSellPending });
return;
}
const et = _getEscapeTsunami();
if (!et?.isHoldingPet) return;
const nm = _getNetworkManager();
const room = nm?.room;
if (!room) return;
const rawSend = _rawSend(room);
const pos = getPlayer()?.getPosition();
if (pos) rawSend('p', { x: pos.x, y: pos.y, z: pos.z, w: 0 });
rawSend('dropPet');
_ownDropPending = true;
const sid = room.sessionId;
const timer = setTimeout(() => { _ownDropPending = false; unsub(); }, 1500);
const unsub = room.onMessage('escapeTsunamiPetDropped', msg => {
if (msg?.holderSessionId !== sid) return;
clearTimeout(timer);
unsub();
_ownDropPending = false;
});
_log('snipe', 'held-pet cleanup: forced drop');
_dbgLog('snipe', 'forced-drop');
}
function _scheduleSnipeTick() {
_snipeTimer = setTimeout(() => { try { snipeTick(); } catch (e) { _dbgLog('snipe', 'tick-crash', { error: e?.message || String(e), stack: e?.stack ? String(e.stack).split('\n').slice(0,3).join(' | ') : null }); } if (_snipeTimer) _scheduleSnipeTick(); }, 120);
}
let _bgAudioCtx = null;
let _bgAudioOsc = null;
function _bgAudioStart() {
try {
if (_bgAudioCtx) return;
const AC = W.AudioContext || W.webkitAudioContext;
if (!AC) return;
const _ctx = new AC();
const _osc = _ctx.createOscillator();
const _gain = _ctx.createGain();
_gain.gain.value = 0.0001;
_osc.connect(_gain);
_gain.connect(_ctx.destination);
_osc.start();
_bgAudioCtx = _ctx;
_bgAudioOsc = _osc;
const _resume = () => { try { if (_bgAudioCtx && _bgAudioCtx.state === 'suspended') _bgAudioCtx.resume(); } catch (_) {} };
_resume();
if (_ctx.state !== 'running') {
window.addEventListener('pointerdown', _resume, { once: true });
window.addEventListener('keydown', _resume, { once: true });
}
_dbgLog('room', 'bg-audio', { state: _ctx.state });
} catch (_) {}
}
function _bgAudioStop() {
try {
if (_bgAudioOsc) { try { _bgAudioOsc.stop(); } catch (_) {} _bgAudioOsc = null; }
if (_bgAudioCtx) { try { _bgAudioCtx.close(); } catch (_) {} _bgAudioCtx = null; }
} catch (_) {}
}
function startSnipe() {
if (_snipeTimer) { clearTimeout(_snipeTimer); _snipeTimer = null; }
if (!_snipeRoomJoinTime) _snipeRoomJoinTime = Date.now();
_lastSnipeActive = true;
_triggerSnipeScan = () => { if (!_sc().active || _hopInProgress) return; try { snipeTick(); } catch (_) {} };
_dbgLog('snipe', 'snipe-start', { mode: _snipeMode() || null });
_scheduleSnipeTick();
_bgAudioStart();
if (!_heldPetCleanup) _heldPetCleanup = setInterval(heldPetCleanupTick, 3000);
}
function stopSnipe() {
if (_afkSellPending > 0 || _afkSellTokens.size > 0) {
_dbgLog('snipe', 'afksell-stop-reset', { pending: _afkSellPending, tokens: _afkSellTokens.size });
_afkSellPending = 0;
_afkSellTokens.clear();
_afkSellTokenDuped.clear();
_afkSellDiag = 0;
_afkSellDiagTick = 0;
_afkSellLastSellAt = 0;
}
_snipePetActionActive = false;
_snipeActionStartedAt = 0;
_snipePreInvis = null;
_snipeDropInProgress = false;
_wavesHoldPlace = false;
if (typeof _carry.forcedInvis !== 'undefined') _carry.forcedInvis = false;
_dbgLog('snipe', 'snipe-stop');
_bgAudioStop();
if (_snipeTimer) { clearTimeout(_snipeTimer); _snipeTimer = null; }
if (_snipeScanTimer) { clearInterval(_snipeScanTimer); _snipeScanTimer = null; }
if (_heldPetCleanup) { clearInterval(_heldPetCleanup); _heldPetCleanup = null; }
if (_stealRetryTimer) { clearInterval(_stealRetryTimer); _stealRetryTimer = null; }
if (_stealPollTimer) { clearInterval(_stealPollTimer); _stealPollTimer = null; }
_stopSnipeSearch();
_snipeWasHolding = false;
_snipeCooldown = 0;
_preSnipePos = null;
_preSnipeOwner = null;
_wavesGhostPos = null;
_usedSlots.clear();
if (_afkPrevInvis !== undefined && !_afkPrevInvis) { _feats.invisible = false; _toggleInvisible(false); _updateInvisEffect(false); }
_afkSellActive = false;
}
let _lastSnipePanelMode = undefined;
function syncSnipePanelMode() {
const mode = _snipeMode();
const roomName = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
const modeLabel = mode ? mode[0].toUpperCase() + mode.slice(1) : (roomName || 'Hub');
const cacheKey = (mode || '') + '|' + modeLabel;
if (cacheKey === _lastSnipePanelMode) return;
_lastSnipePanelMode = cacheKey;
const sc = _sc();
$('ml-snipe-title').textContent = T.sniper_title + ' [' + modeLabel + ']';
$('ml-snipe-search').value = sc.filter;
$('ml-snipe-place').checked = sc.autoPlaceOnBase !== false;
$('ml-snipe-drop').checked = sc.autoDrop;
$('ml-snipe-hop').checked = sc.autoHop;
$('ml-snipe-sell').checked = sc.autoSell;
$('ml-snipe-afksell').checked = sc.afkSell;
$('ml-snipe-walkhome').checked = sc.walkHome !== false;
$('ml-snipe-lockdown').value = sc.lockdownMax;
$('ml-snipe-lockdown-val').textContent = _fmtLockdown(sc.lockdownMax);
$('ml-snipe-toggle').textContent = sc.active ? T.sniper_stop : T.sniper_start;
$('ml-snipe-toggle').classList.toggle('active', sc.active);
const isSteal = mode === 'steal';
const isHub = !mode;
$('ml-snipe-place-row').style.display = isSteal || isHub ? 'none' : 'flex';
$('ml-snipe-drop-row').style.display = isSteal || isHub ? 'none' : 'flex';
$('ml-snipe-hop-row').style.display = isHub ? 'none' : 'flex';
$('ml-snipe-walkhome-row').style.display = isSteal && !isHub ? 'flex' : 'none';
$('ml-snipe-sell-row').style.display = isSteal && !isHub ? 'flex' : 'none';
$('ml-snipe-afksell-row').style.display = isSteal || isHub ? 'none' : 'flex';
$('ml-snipe-lockdown-row').style.display = isSteal && !isHub ? 'flex' : 'none';
$('ml-snipe-toggle').style.display = isHub ? 'none' : '';
$('ml-snipe-search').disabled = isHub;
if (isHub) {
_setSS(T.sniper_na, 'na');
if (_snipeScanTimer) { clearInterval(_snipeScanTimer); _snipeScanTimer = null; }
} else if (!_snipeScanTimer) {
_snipeScanTimer = setInterval(snipeScan, 300);
}
}
_syncSnipePanel = syncSnipePanelMode;
function toggleSnipePanel(forceOpen) {
const nextOpen = forceOpen == null ? !snipePanel.classList.contains('open') : !!forceOpen;
_togglePanel(snipePanel, forceOpen, () => {
_lastSnipePanelMode = undefined;
syncSnipePanelMode();
_dbgLog('ui', nextOpen ? 'snipe-open' : 'snipe-close', { mode: _snipeMode() || null });
const hk = $('ml-snipe-hotkey-hint');
if (hk) hk.textContent = T.sniper_hotkey_label + ' ' + keyCodeLabel(KEYBINDS.snipeToggle) + ' \u2022 ' + T.sniper_panel_label + ' ' + keyCodeLabel(KEYBINDS.snipe);
if (_snipeMode()) snipeScan();
}, () => { if (_snipeScanTimer) { clearInterval(_snipeScanTimer); _snipeScanTimer = null; } });
}
$('ml-snipe-btn').addEventListener('click', () => { toggleSnipePanel(); });
$('ml-snipe-close').addEventListener('click', () => toggleSnipePanel(false));
$('ml-snipe-reset').addEventListener('click', () => {
const mode = _snipeMode();
if (mode === 'steal') { snipeCfg.steal = _defaultStealMode(); snipeCfg.waves.active = snipeCfg.steal.active; }
else if (mode === 'waves') { snipeCfg.waves = _defaultWavesMode(); snipeCfg.steal.active = snipeCfg.waves.active; }
_lastSnipePanelMode = undefined;
_syncSnipePanel?.();
saveSettings();
_clog('[snipe] panel reset');
});
const _snipeHintHover = (show) => (e) => {
const _ic = e.target.closest('.ml-snipe-hint-icon');
if (!_ic) return;
const _tip = _ic.nextElementSibling;
if (_tip && _tip.classList && _tip.classList.contains('ml-snipe-hint-tip')) _tip.style.display = show ? 'block' : 'none';
};
snipePanel.addEventListener('mouseover', _snipeHintHover(true));
snipePanel.addEventListener('mouseout', _snipeHintHover(false));
snipePanel.querySelector('.ml-snipe-opts-toggle').addEventListener('click', function () {
this.classList.toggle('open');
const opts = snipePanel.querySelector('.ml-snipe-opts');
const show = opts.style.display === 'none';
opts.style.display = show ? '' : 'none';
this.textContent = T.sniper_options;
});
$('ml-snipe-search').addEventListener('input', e => {
if (!_snipeMode()) return;
_sc().filter = e.target.value;
saveSettings();
});
{
const _snipeTypesEl0 = $('ml-snipe-types');
if (_snipeTypesEl0) {
const _onJoin = (e) => {
const _jb = e.target.closest('.ml-snipe-join');
if (!_jb) return;
const _rid = _jb.getAttribute('data-join');
if (!_rid || _hopInProgress) return;
_dbgLog('snipe', 'join-room-manual', { roomId: _rid });
try { if (typeof _probeRooms === 'function' && _probeInProgress && _probeRooms.abort) { _probeRooms.abort(); _probeInProgress = false; _probeStartedAt = 0; _lastProbeEnd = Date.now(); } } catch (_) {}
performTargetedHop(_rid, _snipeMode() === 'waves' ? 'EscapeTsunami' : 'PetTycoon', null, null, true, 'join');
};
const _onSort = (e) => {
const th = e.target.closest('th[data-sort]');
if (!th) return;
const col = th.getAttribute('data-sort');
if (!col) return;
if (_probeSortCol === col) _probeSortDir = -_probeSortDir;
else { _probeSortCol = col; _probeSortDir = col === 'roomId' ? 1 : -1; }
_cachedProbeKey = '';
try { snipeScan(); } catch (_) {}
};
const _onMSort = (e) => {
const th = e.target.closest('th[data-msort]');
if (!th) return;
const col = th.getAttribute('data-msort');
if (!col) return;
if (_matchesSortCol === col) _matchesSortDir = -_matchesSortDir;
else { _matchesSortCol = col; _matchesSortDir = -1; }
try { snipeScan(); } catch (_) {}
};
_snipeTypesEl0.addEventListener('pointerdown', e => { if (e.button === 0) _onJoin(e); });
_snipeTypesEl0.addEventListener('pointerdown', e => { if (e.button === 0) _onSort(e); });
_snipeTypesEl0.addEventListener('pointerdown', e => { if (e.button === 0) _onMSort(e); });
_snipeTypesEl0.addEventListener('click', _onJoin);
}
}
$('ml-snipe-place').addEventListener('change', e => {
if (!_snipeMode()) return;
_sc().autoPlaceOnBase = e.target.checked;
saveSettings();
});
$('ml-snipe-drop').addEventListener('change', e => {
if (!_snipeMode()) return;
_sc().autoDrop = e.target.checked;
saveSettings();
});
$('ml-snipe-sell').addEventListener('change', e => {
if (!_snipeMode()) return;
_sc().autoSell = e.target.checked;
saveSettings();
});
$('ml-snipe-afksell').addEventListener('change', e => {
if (!_snipeMode() || _snipeMode() !== 'waves') return;
_sc().afkSell = e.target.checked;
saveSettings();
_dbgLog('snipe', 'afksell-changed', { v: e.target.checked });
});
$('ml-snipe-hop').addEventListener('change', e => {
if (!_snipeMode()) return;
_sc().autoHop = e.target.checked;
saveSettings();
if (!_sc().autoHop) _stopSnipeSearch();
});
$('ml-snipe-walkhome').addEventListener('change', e => {
if (!_snipeMode() || _snipeMode() !== 'steal') return;
_sc().walkHome = e.target.checked;
saveSettings();
});
function _fmtLockdown(s) { return s >= 60 ? Math.floor(s / 60) + 'm' + (s % 60 ? String(s % 60).padStart(2, '0') + 's' : '') : s + 's'; }
$('ml-snipe-lockdown').addEventListener('input', e => {
if (!_snipeMode()) return;
const v = +e.target.value;
_sc().lockdownMax = v;
$('ml-snipe-lockdown-val').textContent = _fmtLockdown(v);
saveSettings();
});
$('ml-snipe-lockdown').addEventListener('change', e => {
if (!_snipeMode()) return;
_dbgLog('snipe', 'lockdown-set', { mode: _snipeMode(), value: +e.target.value });
});
$('ml-snipe-toggle').addEventListener('click', () => {
if (!_snipeMode()) return;
const _on = !_sc().active;
snipeCfg.steal.active = _on;
snipeCfg.waves.active = _on;
saveSettings();
$('ml-snipe-toggle').textContent = _on ? T.sniper_stop : T.sniper_start;
$('ml-snipe-toggle').classList.toggle('active', _on);
if (_on) startSnipe();
else { stopSnipe(); _setSS(T.sniper_idle, 'idle'); }
});
if (snipeCfg.steal.active || snipeCfg.waves.active) {
const _waitForMode = setInterval(() => {
if (_snipeMode()) { clearInterval(_waitForMode); startSnipe(); }
}, 250);
}
function toggleCuddlePanel(forceOpen) {
const nextOpen = forceOpen == null ? !plist.classList.contains('open') : !!forceOpen;
_togglePanel(plist, forceOpen, (wasOpen) => {
refreshPlayerList();
_dbgLog('ui', nextOpen ? 'players-open' : 'players-close', { autoRefresh: !!autoRefresh, wasOpen: !!wasOpen });
if (!wasOpen && autoRefresh) startRefreshTimer();
}, () => stopRefreshTimer());
}
let refreshCountdown = refreshInterval;
let refreshTimer = null;
function startRefreshTimer() {
stopRefreshTimer();
refreshCountdown = refreshInterval;
const timerEl = $('ml-plist-timer');
if (timerEl) timerEl.textContent = refreshCountdown + 's';
refreshTimer = setInterval(() => {
refreshCountdown--;
if (timerEl) timerEl.textContent = refreshCountdown + 's';
if (refreshCountdown <= 0) {
refreshPlayerList();
refreshCountdown = refreshInterval;
if (timerEl) timerEl.textContent = refreshCountdown + 's';
}
}, 1000);
}
function stopRefreshTimer() {
if (refreshTimer) { clearInterval(refreshTimer); refreshTimer = null; }
}
$('ml-invis').addEventListener('click', () => {
_feats.invisible = !_feats.invisible;
try { const _sT = _sc(); if (_sT?.active && _sT?.filter && _sT?.filter.trim()) _huntInvisOff = !_feats.invisible; } catch (_) {}
if (_carry.forcedInvis && !!_getBasesManager()?.activeBases && !!_getPetTycoon()?.isHoldingPet) {
_carry.forcedInvisSuppressed = !_feats.invisible;
}
_toggleInvisible(_feats.invisible);
_updateInvisEffect(_feats.invisible);
const el = $('ml-f-invisible');
if (el) el.classList.toggle('on', _feats.invisible);
saveSettings();
});
$('ml-tp').addEventListener('click', () => { toggleCuddlePanel(); });
$('ml-tc').addEventListener('click', () => { _towerComplete(); });
$('ml-tcl').addEventListener('click', () => { _towerLoopToggle(); });
$('ml-slots').addEventListener('click', () => { if (_feats.waypoints) toggleSlots(); });
$('ml-prv').addEventListener('click', () => { const ev = new KeyboardEvent('keydown', { key: 'PageDown', code: 'PageDown', keyCode: 34, which: 34, bubbles: true, cancelable: true }); window.dispatchEvent(ev); });
if (isMobile) {
$('ml-spr').addEventListener('click', () => { if (typeof _blink === 'function') _blink(); });
}
$('ml-plist-refresh').addEventListener('click', () => {
refreshPlayerList();
if (autoRefresh && plist.classList.contains('open')) startRefreshTimer();
});
$('ml-plist-close').addEventListener('click', () => toggleCuddlePanel(false));
function toggleSettings(forceOpen) {
const nextOpen = forceOpen == null ? !settings.classList.contains('open') : !!forceOpen;
_togglePanel(settings, forceOpen, () => refreshUsernameUI(), () => { kbListeningRow = null; });
_dbgLog('ui', nextOpen ? 'settings-open' : 'settings-close', { tab: _sr.querySelector('.ml-tabs .ml-tab.active')?.dataset?.tab || null });
}
$('ml-cfg').addEventListener('click', () => { toggleSettings(); });
$('ml-acct-btn').addEventListener('click', () => { toggleAccountPanel(); });
$('ml-settings-close').addEventListener('click', () => toggleSettings(false));
_sr.querySelectorAll('.ml-tabs .ml-tab').forEach(tab => {
tab.addEventListener('click', () => {
const t = tab.dataset.tab;
_sr.querySelectorAll('.ml-tabs .ml-tab').forEach(x => x.classList.toggle('active', x.dataset.tab === t));
_sr.querySelectorAll('.ml-settings-body .ml-tab-content').forEach(x => x.classList.toggle('active', x.dataset.tab === t));
_dbgLog('ui', 'settings-tab', { tab: t });
if (t === 'keys') buildKeybindsHTML();
else { kbListeningRow = null; $('ml-keybinds-body').querySelectorAll('.ml-krow.listening').forEach(r => r.classList.remove('listening')); }
});
});
const _acctEsc = s => String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c]));
let _acctBusy = false;
let _acctRenderRetries = 0;
const _acctCopy = async (text) => {
try { if (navigator.clipboard?.writeText) { await navigator.clipboard.writeText(text); return 'clipboard'; } } catch (_) {}
try {
const ta = document.createElement('textarea');
ta.value = text; ta.style.position = 'fixed'; ta.style.left = '-9999px';
document.body.appendChild(ta); ta.focus(); ta.select();
const ok = document.execCommand('copy');
document.body.removeChild(ta);
if (ok) return 'execCommand';
} catch (_) {}
return null;
};
const _acctColorSpans = new Set();
function _acctColorize(container) {
if (!container) return;
_acctColorSpans.clear();
container.querySelectorAll('[data-uc]').forEach((el) => {
const nm = el.getAttribute('data-uc') || el.textContent || '';
if (!_feats.nameColors) { el.style.color = ''; return; }
if (_isDefaultName(nm)) { el.style.color = '#FFFFFF'; return; }
if (_isMesName(nm)) {
_acctColorSpans.add(el);
el.style.color = _nameColorAnim(nm, Date.now());
} else {
el.style.color = _nameColor(nm);
}
});
}
setInterval(() => {
if (!_feats.nameColors || _acctColorSpans.size === 0) return;
const now = Date.now();
for (const el of _acctColorSpans) {
if (!el || !el.isConnected) { _acctColorSpans.delete(el); continue; }
try { el.style.color = _nameColorAnim(el.getAttribute('data-uc') || el.textContent || '', now); } catch (_) {}
}
}, 100);
async function renderAccountsInto(container) {
if (!container || _acctBusy) return;
_acctBusy = true;
try {
const t = T;
const curTk = _acctToken();
const pending = _acctPending();
const bank = _acctList();
const curInBank = curTk ? bank.find(a => a.access_token === curTk) : null;
const curName = curInBank ? curInBank.name : null;
const curId = curInBank ? curInBank.id : null;
let html = '';
html += '<div class="ml-acct-head"><div style="min-width:0"><div class="ml-acct-head-name" data-uc="' + _acctEsc(curName || '') + '">' + _acctEsc(curName || (!curTk ? t.acct_empty : t.acct_current)) + '</div><div class="ml-acct-head-id">' + (_acctMask(curId || curTk) ? '#' + _acctEsc(_acctMask(curId || curTk)) : '—') + '</div></div>' + (curTk ? '<span class="ml-acct-act">●</span>' : '') + '</div>';
html += '<div class="ml-acct-actions"><button class="ml-acct-btn ml-acct-new">' + _acctEsc(t.acct_new) + '</button><button class="ml-acct-btn ml-acct-import">' + _acctEsc(t.acct_import) + '</button><button class="ml-acct-btn ml-acct-export">' + _acctEsc(t.acct_export) + '</button></div>';
html += '<span class="ml-acct-howto">' + _acctEsc(t.acct_howto) + '</span>';
html += '<div class="ml-acct-msg" style="display:none"></div>';
html += '<input class="ml-acct-import-input" style="display:none" placeholder="' + _acctEsc(t.acct_token_ph) + '"><div style="display:none;margin:0 0 6px"><button class="ml-acct-btn ml-acct-import-go">' + _acctEsc(t.acct_import) + '</button></div>';
if (pending) html += '<div class="ml-acct-pending">' + _acctEsc(t.acct_ready) + ' (' + _acctEsc(pending.name || '#' + _acctMask(pending.id)) + ')</div>';
html += '<span class="ml-acct-ipnote">' + _acctEsc(t.acct_ip_note) + '</span>';
if (!bank.length) {
html += '<div class="ml-acct-empty">' + _acctEsc(t.acct_empty) + '</div>';
} else {
for (const a of bank) {
const isCur = !!(a.access_token && curTk && a.access_token === curTk);
const isPending = !!(pending && pending.id === a.id);
const nm = a.label || a.name || ('#' + _acctMask(a.id));
html += '<div class="ml-acct-row' + (isCur ? ' on' : '') + '">';
html += '<span class="ml-acct-name" title="' + _acctEsc(a.name || '') + '" data-uc="' + _acctEsc(a.name || '') + '">' + _acctEsc(nm) + '</span>';
if (isCur) html += '<span class="ml-acct-act">●</span>';
html += '<button class="ml-acct-btn ml-acct-copy" data-id="' + _acctEsc(a.id) + '">' + _acctEsc(t.acct_copy) + '</button>';
if (!a.label) html += '<button class="ml-acct-btn ml-acct-rename" data-id="' + _acctEsc(a.id) + '">' + _acctEsc(t.acct_rename) + '</button>';
if (isPending) {
html += '<button class="ml-acct-btn ml-acct-reload" data-id="' + _acctEsc(a.id) + '">' + _acctEsc(t.acct_reload) + '</button>';
html += '<button class="ml-acct-btn ml-acct-del" data-id="' + _acctEsc(a.id) + '">' + _acctEsc(t.acct_cancel) + '</button>';
} else {
html += '<button class="ml-acct-btn ml-acct-sw" data-id="' + _acctEsc(a.id) + '">' + _acctEsc(t.acct_switch) + '</button>';
html += '<button class="ml-acct-btn ml-acct-del" data-id="' + _acctEsc(a.id) + '">' + _acctEsc(t.acct_delete) + '</button>';
}
html += '</div>';
}
}
container.innerHTML = html;
const re = () => renderAccountsInto(container);
const acctMsg = (txt) => {
const m = container.querySelector('.ml-acct-msg');
if (m) { m.textContent = txt; m.style.display = 'block'; clearTimeout(m._t); m._t = setTimeout(() => { m.style.display = 'none'; }, 2500); }
};
container.querySelectorAll('.ml-acct-new').forEach(b => b.addEventListener('click', async () => { await _acctMint(); re(); }));
container.querySelectorAll('.ml-acct-export').forEach(b => b.addEventListener('click', async () => {
const btn = b; const prev = btn.textContent;
const payload = await _acctExportURL();
const okm = await _acctCopy(payload);
btn.textContent = okm ? (t.copy_ok || 'Copied') : (t.copy_failed || 'Copy Failed');
if (okm) _dbgLog('acct', 'export-url', { method: okm });
setTimeout(() => { btn.textContent = t.acct_export || prev; }, 1400);
}));
container.querySelectorAll('.ml-acct-import').forEach(b => b.addEventListener('click', async () => {
const inp = container.querySelector('.ml-acct-import-input');
const row = inp ? inp.nextElementSibling : null;
if (inp) {
inp.style.display = '';
try { const clip = await navigator.clipboard.readText(); if (clip && clip.trim()) inp.value = clip.trim(); } catch (_) {}
}
if (row) row.style.display = 'block';
}));
container.querySelectorAll('.ml-acct-import-go').forEach(b => b.addEventListener('click', async () => {
const inp = container.querySelector('.ml-acct-import-input');
if (!inp || !inp.value) return;
const r = await _acctImportCredential(inp.value);
if (r) re(); else acctMsg(t.acct_invalid);
}));
container.querySelectorAll('.ml-acct-copy').forEach(b => b.addEventListener('click', async () => {
const a = bank.find(x => x.id === b.dataset.id);
if (!a) return;
const cred = a.customID || a.access_token || '';
const ok = await _acctCopy(cred ? _acctBuildURL(cred) : '');
const prev = b.textContent;
b.textContent = ok ? (t.copy_ok || 'Copied') : (t.copy_failed || 'Copy Failed');
if (ok) _dbgLog('acct', 'copy-account-url', { id: a.id });
setTimeout(() => { b.textContent = t.acct_copy || prev; }, 1100);
}));
container.querySelectorAll('.ml-acct-rename').forEach(b => b.addEventListener('click', () => {
const id = b.dataset.id;
const a = bank.find(x => x.id === id);
const row = b.closest('.ml-acct-row');
if (!row) return;
const cur = (a && (a.label || a.name)) || '';
row.innerHTML = '<div class="ml-acct-edit"><input class="ml-acct-edit-input" value="' + _acctEsc(cur) + '"><button class="ml-acct-btn ml-acct-edit-ok">' + _acctEsc(t.acct_save) + '</button><button class="ml-acct-btn ml-acct-edit-cancel">' + _acctEsc(t.acct_cancel) + '</button></div>';
const inp = row.querySelector('.ml-acct-edit-input');
const ok = row.querySelector('.ml-acct-edit-ok');
const cn = row.querySelector('.ml-acct-edit-cancel');
const commit = async () => {
const v = inp.value.trim();
if (!v) { re(); return; }
if (v.length < 4 || v.length > 12) { acctMsg(t.acct_name_len); inp.focus(); return; }
const r = await _acctRename(id, v);
if (r && r.ok) { re(); } else { acctMsg(r && r.msg ? r.msg : t.acct_name_fail); re(); }
};
ok.addEventListener('click', commit);
cn.addEventListener('click', () => re());
inp.addEventListener('keydown', e => { if (e.key === 'Enter') commit(); else if (e.key === 'Escape') re(); });
inp.focus();
inp.select();
}));
container.querySelectorAll('.ml-acct-sw').forEach(b => b.addEventListener('click', async e => { const r = await _acctPrepare(e.currentTarget.dataset.id); if (r && r.ok) re(); else acctMsg(t.acct_invalid); }));
container.querySelectorAll('.ml-acct-reload').forEach(b => b.addEventListener('click', () => _acctReloadNow()));
container.querySelectorAll('.ml-acct-del').forEach(b => b.addEventListener('click', e => { const id = e.currentTarget.dataset.id; const p = _acctPending(); if (p && p.id === id) { _acctCancel(); } else { _acctDelete(id); } re(); }));
_acctColorize(container);
if (curTk) {
_acctRenderRetries = 0;
(async () => {
try {
const cap = await _acctCaptureCurrent();
if (!cap) return;
if (!curInBank) { re(); return; }
const hn = container.querySelector('.ml-acct-head-name');
if (hn && cap.name && cap.name !== curName) hn.textContent = cap.name;
const hid = container.querySelector('.ml-acct-head-id');
if (hid && cap.id && cap.id !== curId) hid.textContent = '#' + _acctMask(cap.id);
} catch (_) {}
})();
} else if (_acctRenderRetries < 6) {
_acctRenderRetries++;
setTimeout(() => { _acctRenderRetries = Math.max(0, _acctRenderRetries - 1); renderAccountsInto(container); }, 1000);
}
} catch (e) { _dbgLog('acct', 'render-err', { err: String(e) }, 'warn'); }
finally { _acctBusy = false; }
}
try { const _app = W.pc?.app; if (_app && typeof _app.on === 'function') _app.on('APIManager:CompletedAuth', () => { if (accountPanel.classList.contains('open')) renderAccountsInto($('ml-accounts-body')); }); } catch (_) {}
setTimeout(() => { try { _acctAutoImport(); } catch (_) {} }, 1500);
settings.querySelectorAll('.ml-sheader').forEach(sh => {
sh.addEventListener('click', () => {
const collapsed = sh.classList.toggle('collapsed');
let el = sh.nextElementSibling;
while (el && !el.classList.contains('ml-sheader')) {
el.style.display = collapsed ? 'none' : '';
el = el.nextElementSibling;
}
});
});
const DEFAULTS = { TP_FWD_DIST: 5, SPEED_DEFAULT: 7, jumpMult: 1, gravMult: 1, petPickupRadius: 3, petRefreshInterval: 1, petFilter: 'wild', petSortCol: 'price', petSortDir: -1 };
$('ml-settings-reset').addEventListener('click', () => {
_dbgLog('settings', 'reset');
TP_FWD_DIST = DEFAULTS.TP_FWD_DIST;
SPEED_DEFAULT = DEFAULTS.SPEED_DEFAULT;
petRefreshInterval = DEFAULTS.petRefreshInterval;
petFilter = DEFAULTS.petFilter;
petSortCol = DEFAULTS.petSortCol;
petSortDir = DEFAULTS.petSortDir;
_feats.fly = true; _feats.sprint = true; _feats.waypoints = true; _feats.cuddle = true; _feats.cuddleFollow = true; _feats.pets = true; _feats.autoLock = true;
_feats.antiKnockback = true; _feats.noclip = false; _feats.freeMoney = true; _feats.autoCollect = true; _feats.invincible = true;
_feats.freeStars = true; _feats.freeDiamonds = true; _feats.autoFountain = true; _feats.invisible = false; _feats.autoInvisOnFly = false; _feats.flyEmotes = true; _feats.proTips = true; _feats.hideProTips = true;
_feats.autoRollX25 = true; _feats.rollSpamRate = 100; _feats.autoVipSword = true; _feats.autoVipWaves = true;
_feats.autoCraft = true;
_feats.directKill = true; _feats.directKillRate = 40; _feats.autoBoost = true;
_feats.autoUnlockAreas = true; _feats.autoRebirth = false; _feats.hideKillRewards = true; _feats.hideRoller = true; _feats.autoJoinTp = true;
_feats.ghostMode = true; _feats.fleeOnIntruder = true; _feats.infectionTrapImmune = true; _feats.infectionSlimeImmune = true;
_feats.jumpMult = DEFAULTS.jumpMult; _feats.gravMult = DEFAULTS.gravMult; _feats.petPickupRadius = DEFAULTS.petPickupRadius; _feats.walkUpWalls = false; _feats.carryNormalize = true;
_feats.firstPerson = false; _feats.fovFirstPerson = 80; _feats.fovThirdPerson = 55; _feats.fovVerticalMult = 1.4;
_feats.xrayInfection = true; _feats.showExpModes = false;
_shows.invis = true; _shows.snipe = true; _shows.help = true; _shows.settings = true;
_shows.fly = true; _shows.sprint = true; _shows.waypoints = true; _shows.autoLock = true; _shows.cuddle = false; _shows.pets = true; _shows.prv = isMobile; _shows.rng = true; _shows.tc = true; _shows.tcl = true; _shows.accts = true;
_feats.showCoords = false; _feats.showFps = false; _feats.showTargetInfo = false; _feats.showObj = false; _targetInfoText = '';
_feats.nameColors = true; _feats.chatEnhance = true;
const lr = $('ml-target-reticle'); if (lr) lr.style.display = 'none';
autoCollectInterval = 30;
petAutoRefresh = true;
chatFadeTime = 180; carryTune = 'lofi'; carryTuneVol = 50; _stopCarryTune();
snipeCfg.steal = _defaultStealMode();
snipeCfg.waves = _defaultWavesMode();
Object.assign(KEYBINDS, DEFAULT_KEYBINDS);
if (_feats.freeStars && !_freeStarsTimer) try { _freeStarsStart(); } catch (e) { _log('err', 'stars: ' + e.message); }
if (_feats.freeDiamonds && !_freeDiamondsTimer) try { _freeDiamondsStart(); } catch (e) { _log('err', 'diamonds: ' + e.message); }
if (_feats.autoFountain && !_fountainTimer) try { _fountainStart(); } catch (e) { _log('err', 'fountain: ' + e.message); }
if (_feats.autoRollX25 && !_autoRollX25Timer) try { _autoRollX25Start(); } catch (e) { _log('err', 'rollx25: ' + e.message); }
if (_feats.autoCraft && !_autoCraftTimer) try { _autoCraftStart(); } catch (e) { _log('err', 'craft: ' + e.message); }
if ((_feats.autoVipSword || _feats.autoVipWaves) && !_autoVipTimer) try { _autoVipStart(); } catch (e) { _log('err', 'vip: ' + e.message); }
if (_feats.directKill && !_directKillTimer) try { _directKillStart(); } catch (e) { _log('err', 'directkill: ' + e.message); }
if (_feats.autoBoost && !_autoBoostTimer) try { _autoBoostStart(); } catch (e) { _log('err', 'autoboost: ' + e.message); }
syncSettingsUI();
_syncCoordsOverlay();
buildKeybindsHTML();
updateHUDBadgeLabels();
_lastSnipePanelMode = undefined;
_syncSnipePanel?.();
_clog('[settings] reset');
saveSettings();
});
const sliderMap = [
{ id: 'ml-s-cap', valId: 'ml-sv-cap', apply: v => { TP_FWD_DIST = v; } },
{ id: 'ml-s-base', valId: 'ml-sv-base', apply: v => { SPEED_DEFAULT = v; W.pc?.app?.fire('PlayerController:SetSpeed', _snipeMode() === 'steal' ? Math.min(v, 9) : v); } },
{ id: 'ml-s-jumpmult', valId: 'ml-sv-jumpmult', uom: 'x', float: true, apply: v => { _feats.jumpMult = v; } },
{ id: 'ml-s-gravmult', valId: 'ml-sv-gravmult', uom: 'x', float: true, apply: v => { _feats.gravMult = v; } },
{ id: 'ml-s-petradius', valId: 'ml-sv-petradius', float: true, apply: v => { _feats.petPickupRadius = v; } },
{ id: 'ml-s-directkillrate', valId: 'ml-sv-directkillrate', uom: '/s', apply: v => { _feats.directKillRate = v; } },
{ id: 'ml-s-acinterval', valId: 'ml-sv-acinterval', uom: 's', apply: v => { autoCollectInterval = v; } },
{ id: 'ml-s-chatfade', valId: 'ml-sv-chatfade', uom: 's', apply: v => { chatFadeTime = v; } },
{ id: 'ml-s-joingrace', valId: 'ml-sv-joingrace', uom: 's', apply: v => { snipeCfg.steal.joinGrace = v; } },
{ id: 'ml-s-carryvol', valId: 'ml-sv-carryvol', uom: '%', apply: v => { carryTuneVol = v; _carryTune.syncVol(); } },
{ id: 'ml-s-fovfp', valId: 'ml-sv-fovfp', uom: '°', apply: v => { _feats.fovFirstPerson = v; } },
{ id: 'ml-s-fovtp', valId: 'ml-sv-fovtp', uom: '°', apply: v => { _feats.fovThirdPerson = v; } },
{ id: 'ml-s-fovvm', valId: 'ml-sv-fovvm', uom: 'x', float: true, apply: v => { _feats.fovVerticalMult = v; } },
];
sliderMap.forEach(s => {
const el = $(s.id);
const valEl = $(s.valId);
if (!el) return;
el.addEventListener('input', () => {
const v = s.float ? parseFloat(el.value) : parseInt(el.value);
if (valEl) valEl.textContent = s.uom ? v + s.uom : v;
s.apply(v);
saveSettings();
});
});
const featToggles = [
{ id: 'ml-f-autolock', get: () => _feats.autoLock, set: v => { _feats.autoLock = v; } },
{ id: 'ml-f-cuddle-follow', get: () => _feats.cuddleFollow, set: v => { _feats.cuddleFollow = v; if (!v) { _cuddle.active = false; _cuddle.target = null; } } },
{ id: 'ml-f-protips', get: () => _feats.proTips, set: v => { _feats.proTips = v; } },
{ id: 'ml-f-hideprotips', get: () => _feats.hideProTips, set: v => { _feats.hideProTips = v; } },
{ id: 'ml-f-showexpmodes', get: () => _feats.showExpModes, set: v => { _feats.showExpModes = v; if (v) { if (typeof _showExpModeClones === 'function') _showExpModeClones(); } else { if (typeof _hideExpModeClones === 'function') _hideExpModeClones(); } } },
{ id: 'ml-f-antiknockback', get: () => _feats.antiKnockback, set: v => { _feats.antiKnockback = v; } },
{ id: 'ml-f-noclip', get: () => _feats.noclip, set: v => { _feats.noclip = v; } },
{ id: 'ml-f-fly', get: () => _feats.fly, set: v => { _feats.fly = v; if (!v && _fly.active) { const _p = getPlayer(); const _k = getKcc(_p); if (_k) flyOff(_k); else _fly.active = false; } } },
{ id: 'ml-f-walkupwalls', get: () => _feats.walkUpWalls, set: v => { _feats.walkUpWalls = v; const p = getPlayer(); const k = getKcc(p); if (k) k.slopeLimitDeg = v ? 180 : 50; } },
{ id: 'ml-f-carrynormalize', get: () => _feats.carryNormalize, set: v => { _feats.carryNormalize = v; } },
{ id: 'ml-f-freemoney', get: () => _feats.freeMoney, set: v => { _feats.freeMoney = v; if (v && !freeMoneyDone) autoFarmFreeMoney().catch(() => {}); } },
{ id: 'ml-f-autocollect', get: () => _feats.autoCollect, set: v => { _feats.autoCollect = v; } },
{ id: 'ml-f-invincible', get: () => _feats.invincible, set: v => { _feats.invincible = v; } },
{ id: 'ml-f-freestars', get: () => _feats.freeStars, set: v => { _feats.freeStars = v; if (v) _freeStarsStart(); else _freeStarsStop(); } },
{ id: 'ml-f-freediamonds', get: () => _feats.freeDiamonds, set: v => { _feats.freeDiamonds = v; if (v) _freeDiamondsStart(); else _freeDiamondsStop(); } },
{ id: 'ml-f-autorollx25', get: () => _feats.autoRollX25, set: v => { _feats.autoRollX25 = v; if (v) _autoRollX25Start(); else _autoRollX25Stop(); } },
{ id: 'ml-f-tower-loop', get: () => _feats.towerLoop, set: v => { if (v) _towerLoopStart(); else _towerLoopStop(); } },
{ id: 'ml-f-autocraft', get: () => _feats.autoCraft, set: v => { _feats.autoCraft = v; if (v) _autoCraftStart(); else _autoCraftStop(); } },
{ id: 'ml-f-autovipsword', get: () => _feats.autoVipSword, set: v => { _feats.autoVipSword = v; if (v) _autoVipStart(); else _autoVipStop(); } },
{ id: 'ml-f-autovipwaves', get: () => _feats.autoVipWaves, set: v => { _feats.autoVipWaves = v; if (v) _autoVipStart(); else _autoVipStop(); } },
{ id: 'ml-f-directkill', get: () => _feats.directKill, set: v => { _feats.directKill = v; if (v) _directKillStart(); else _directKillStop(); } },
{ id: 'ml-f-autoboost', get: () => _feats.autoBoost, set: v => { _feats.autoBoost = v; if (v) _autoBoostStart(); else _autoBoostStop(); } },
{ id: 'ml-f-autoboostcoins', get: () => _feats.autoBoostCoins, set: v => { _feats.autoBoostCoins = v; } },
{ id: 'ml-f-autoboostdiamonds', get: () => _feats.autoBoostDiamonds, set: v => { _feats.autoBoostDiamonds = v; } },
{ id: 'ml-f-autoboostluck', get: () => _feats.autoBoostLuck, set: v => { _feats.autoBoostLuck = v; } },
{ id: 'ml-f-auto-unlock-areas', get: () => _feats.autoUnlockAreas, set: v => { _feats.autoUnlockAreas = v; } },
{ id: 'ml-f-auto-rebirth', get: () => _feats.autoRebirth, set: v => { _feats.autoRebirth = v; } },
{ id: 'ml-f-hide-rewards', get: () => _feats.hideKillRewards, set: v => { _feats.hideKillRewards = v; } },
{ id: 'ml-f-hide-roller', get: () => _feats.hideRoller, set: v => { _feats.hideRoller = v; } },
{ id: 'ml-f-auto-join-tp', get: () => _feats.autoJoinTp, set: v => { _feats.autoJoinTp = v; } },
{ id: 'ml-f-ghost', get: () => _feats.ghostMode, set: v => { _feats.ghostMode = v; if (!v) { _ghostActive = false; _ghostSuppressed = false; if (typeof _updateCharTransparency === 'function') _updateCharTransparency(); } } },
{ id: 'ml-f-flee', get: () => _feats.fleeOnIntruder, set: v => { _feats.fleeOnIntruder = v; } },
{ id: 'ml-f-autofountain', get: () => _feats.autoFountain, set: v => { _feats.autoFountain = v; if (v) _fountainStart(); else _fountainStop(); } },
{ id: 'ml-f-invisible', get: () => _feats.invisible, set: v => { _feats.invisible = v; try { const _sT = _sc(); if (_sT?.active && _sT?.filter && _sT?.filter.trim()) _huntInvisOff = !v; } catch (_) {} _toggleInvisible(v); _updateInvisEffect(v); } },
{ id: 'ml-f-xrayinfection', get: () => _feats.xrayInfection, set: v => { _feats.xrayInfection = v; if (!v) { if (typeof _clearAllXray === 'function') _clearAllXray(); } } },
{ id: 'ml-f-firstperson', get: () => _feats.firstPerson, set: v => { _feats.firstPerson = v; } },
{ id: 'ml-f-autoinvisonfly', get: () => _feats.autoInvisOnFly, set: v => { _feats.autoInvisOnFly = v; } },
{ id: 'ml-f-flyemotes', get: () => _feats.flyEmotes, set: v => { _feats.flyEmotes = v; if (!v) _flyEmoteStop(); else if (_fly.active) _flyEmoteLoop(); } },
{ id: 'ml-f-show-fly', get: () => _shows.fly, set: v => { _shows.fly = v; } },
{ id: 'ml-f-show-sprint', get: () => _shows.sprint, set: v => { _shows.sprint = v; } },
{ id: 'ml-f-show-waypoints', get: () => _shows.waypoints, set: v => { _shows.waypoints = v; } },
{ id: 'ml-f-show-autolock', get: () => _shows.autoLock, set: v => { _shows.autoLock = v; } },
{ id: 'ml-f-show-cuddle', get: () => _shows.cuddle, set: v => { _shows.cuddle = v; } },
{ id: 'ml-f-show-pets', get: () => _shows.pets, set: v => { _shows.pets = v; } },
{ id: 'ml-f-show-invis', get: () => _shows.invis, set: v => { _shows.invis = v; } },
{ id: 'ml-f-show-snipe', get: () => _shows.snipe, set: v => { _shows.snipe = v; } },
{ id: 'ml-f-show-help', get: () => _shows.help, set: v => { _shows.help = v; } },
{ id: 'ml-f-show-cfg', get: () => _shows.settings, set: v => { _shows.settings = v; } },
{ id: 'ml-f-show-prv', get: () => _shows.prv, set: v => { _shows.prv = v; } },
{ id: 'ml-f-show-rng', get: () => _shows.rng, set: v => { _shows.rng = v; } },
{ id: 'ml-f-show-tc', get: () => _shows.tc, set: v => { _shows.tc = v; } },
{ id: 'ml-f-show-tcl', get: () => _shows.tcl, set: v => { _shows.tcl = v; } },
{ id: 'ml-f-show-accts', get: () => _shows.accts, set: v => { _shows.accts = v; } },
{ id: 'ml-f-showcoords', get: () => _feats.showCoords, set: v => { _feats.showCoords = v; _syncCoordsOverlay(); } },
{ id: 'ml-f-showfps', get: () => _feats.showFps, set: v => { _feats.showFps = v; _syncCoordsOverlay(); } },
{ id: 'ml-f-showtargetinfo', get: () => _feats.showTargetInfo, set: v => { _feats.showTargetInfo = v; if (!v) { _targetInfoText = ''; _syncCoordsOverlay(); const lr = $('ml-target-reticle'); if (lr) lr.style.display = 'none'; } } },
{ id: 'ml-f-showobj', get: () => _feats.showObj, set: v => { _feats.showObj = v; _syncCoordsOverlay(); } },
{ id: 'ml-f-name-colors', get: () => _feats.nameColors, set: v => { _feats.nameColors = v; if (v) { try { hookNameColors(); } catch (_) {} try { _tabRecolorNow(); } catch (_) {} try { _hookBaseNames(); } catch (_) {} } else { try { _nameColorRevert(); } catch (_) {} } try { _hookUsernameColorPreview(); } catch (_) {} } },
{ id: 'ml-f-chat-enhance', get: () => _feats.chatEnhance, set: v => { _feats.chatEnhance = v; try { hookChatCompact(); } catch (_) {} } },
];
featToggles.forEach(ft => {
const el = $(ft.id);
if (!el) return;
el.classList.toggle('on', ft.get());
el.addEventListener('click', () => {
const nv = !ft.get();
ft.set(nv);
el.classList.toggle('on', nv);
saveSettings();
_dbgLog('feat', ft.id.replace('ml-f-',''), { on: nv }, 'debug');
_clog(`[feat] ${ft.id.replace('ml-f-','')} = ${nv}`);
});
});
$('ml-rng-reset')?.addEventListener('click', () => {
const rngDefaults = {
'ml-f-autorollx25': true,
'ml-f-autocraft': true,
'ml-f-autovipsword': true,
'ml-f-directkill': true,
'ml-f-hide-rewards': true,
'ml-f-autoboost': true,
'ml-f-autoboostcoins': true,
'ml-f-autoboostdiamonds': true,
'ml-f-autoboostluck': true,
'ml-f-auto-unlock-areas': true,
'ml-f-auto-rebirth': false,
'ml-f-hide-roller': true,
'ml-f-auto-join-tp': true,
};
for (const ft of featToggles) {
if (!(ft.id in rngDefaults)) continue;
const dv = rngDefaults[ft.id];
if (ft.get() !== dv) ft.set(dv);
}
_feats.directKillRate = 40;
syncSettingsUI();
saveSettings();
_dbgLog('rng', 'reset');
_clog('[rng] panel reset');
});
$('ml-debug-copy')?.addEventListener('click', async e => {
const btn = e.currentTarget;
if (!btn) return;
const prev = btn.textContent;
const logs = _dbgSnapshot(500);
const payload = logs.map(e => JSON.stringify(e)).join('\n');
let ok = false;
let method = null;
try {
if (navigator.clipboard?.writeText) {
await navigator.clipboard.writeText(payload);
ok = true;
method = 'clipboard';
}
} catch (_) {}
if (!ok) {
try {
const ta = document.createElement('textarea');
ta.value = payload;
ta.style.position = 'fixed';
ta.style.left = '-9999px';
document.body.appendChild(ta);
ta.focus();
ta.select();
ok = document.execCommand('copy');
document.body.removeChild(ta);
if (ok) method = 'execCommand';
} catch (_) {}
}
_dbgLog('debug', 'copy-buffer', { ok, method, count: logs.length });
btn.textContent = ok ? (T.copy_ok || 'Copied') : (T.copy_failed || 'Copy Failed');
setTimeout(() => { btn.textContent = T.s_copy_json || prev || ''; }, 1200);
});
$('ml-debug-clear')?.addEventListener('click', () => {
if (typeof _dbgClear === 'function') _dbgClear();
const btn = $('ml-debug-clear');
if (btn) {
const prev = btn.textContent;
btn.textContent = T.copy_ok || 'Cleared';
setTimeout(() => { btn.textContent = prev || ''; }, 800);
}
_dbgLog('debug', 'buffer-cleared');
});
function refreshUsernameUI() {
}
_refreshUsernameUI = refreshUsernameUI;
const langSel = $('ml-lang-sel');
if (langSel) langSel.addEventListener('change', e => {
_setLang(e.target.value);
_applyLangToDOM();
_cachedProbeKey = '';
try { if (typeof snipeScan === 'function') snipeScan(); } catch (_) {}
_dbgLog('settings', 'language-change', { lang: e.target.value });
_log('info', 'language changed to: ' + e.target.value);
});
const ctSel = $('ml-s-carrytune');
if (ctSel) ctSel.addEventListener('change', e => {
carryTune = e.target.value;
_dbgLog('settings', 'carry-tune-change', { tune: carryTune });
_stopCarryTune();
if (carryTune !== 'default' && carryTune !== 'silent') _carryTune.start(carryTune);
saveSettings();
});
$('ml-keybinds-body').addEventListener('click', e => {
const row = e.target.closest('.ml-krow');
if (!row) return;
$('ml-keybinds-body').querySelectorAll('.ml-krow.listening').forEach(r => r.classList.remove('listening'));
if (kbListeningRow === row) { kbListeningRow = null; return; }
row.classList.add('listening');
row.querySelector('.ml-krow-key').textContent = '...';
kbListeningRow = row;
});
window.addEventListener('keydown', e => {
if (!kbListeningRow) return;
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
const action = kbListeningRow.dataset.action;
if (!action || !(action in KEYBINDS)) return;
if (e.code === 'Escape') {
kbListeningRow.classList.remove('listening');
kbListeningRow.querySelector('.ml-krow-key').textContent = keyCodeLabel(KEYBINDS[action]);
kbListeningRow = null;
return;
}
const prevCode = KEYBINDS[action];
KEYBINDS[action] = e.code;
_dbgLog('settings', 'keybind-change', { action, from: prevCode, to: e.code });
if (e.key.length === 1) _keyLabels[e.code] = e.key.toUpperCase();
kbListeningRow.querySelector('.ml-krow-key').textContent = keyCodeLabel(e.code);
kbListeningRow.classList.remove('listening');
kbListeningRow = null;
saveSettings();
updateHUDBadgeLabels();
_clog('[keybind] ' + action + ' → ' + e.code);
}, true);
function updateHUDBadgeLabels() {
const map = {
'ml-fly': ['FLY', 'fly'],
'ml-invis': ['INVIS', 'invisible'],
'ml-lock': ['LOCK', 'autolock'],
'ml-cfg': ['CFG', 'settings'],
'ml-help': ['HELP', 'help'],
'ml-snipe-btn': ['SNIPE', 'snipe+snipeToggle'],
'ml-pets-btn': ['PETS', 'pets'],
'ml-rng-btn': ['RNG', 'rng'],
'ml-acct-btn': ['ACC', 'acctToggle'],
'ml-tp': ['CUDDLE', 'cuddle'],
'ml-tc': ['TC', 'towerComplete'],
'ml-tcl': ['TCL', 'towerLoop'],
'ml-prv': ['PRV', 'prv'],
};
const nativeKeyMap = { 'ml-fly': 'fly', 'ml-invis': 'invis', 'ml-lock': 'lock', 'ml-tc': 'tc', 'ml-tcl': 'tcl', 'ml-cfg': 'cfg', 'ml-help': 'help', 'ml-snipe-btn': 'snipeBtn', 'ml-pets-btn': 'petsBtn', 'ml-rng-btn': 'rngBtn', 'ml-acct-btn': 'acctBtn', 'ml-tp': 'tp', 'ml-prv': 'prv' };
for (const [id, [label, action]] of Object.entries(map)) {
if (_nativeHud) {
const k = nativeKeyMap[id];
const kl = k && _nativeHud[k]?._native?.keyLbl;
if (kl?.element) {
if (!action) kl.element.text = 'SH';
else if (action.includes('+')) kl.element.text = action.split('+').map(a => keyBadge(KEYBINDS[a])).join('');
else kl.element.text = keyBadge(KEYBINDS[action]);
}
}
}
}
updateHUDBadgeLabels();
function toggleHelp(forceOpen) {
const nextOpen = forceOpen == null ? !d.classList.contains('open') : !!forceOpen;
_togglePanel(d, forceOpen);
_dbgLog('ui', nextOpen ? 'help-open' : 'help-close');
}
$('ml-help').addEventListener('click', () => { toggleHelp(); });
$('ml-dialog-close').addEventListener('click', () => toggleHelp(false));
const dlgBody = $('ml-dialog-body');
if (dlgBody) dlgBody.addEventListener('wheel', e => { e.stopPropagation(); }, { passive: true });
function enableTouchScroll(el) {
el.addEventListener('touchstart', e => e.stopPropagation(), { passive: true });
el.addEventListener('touchmove', e => e.stopPropagation(), { passive: true });
el.addEventListener('touchend', e => e.stopPropagation(), { passive: true });
}
[$('ml-dialog-body'), $('ml-plist-body'), $('ml-settings-body'),
$('ml-pets-body'), $('ml-slots-pop-body'), $('ml-accounts-body'),
$('ml-snipe-types'), $('ml-ban-body')].forEach(el => { if (el) enableTouchScroll(el); });
const banBody = $('ml-ban-body');
if (banBody) banBody.addEventListener('wheel', e => { e.stopPropagation(); }, { passive: true });
if (_ban.pending) { _ban.pending = false; _showBanVpnDialog(); }
}
function keyBadge(code) {
if (_keyLabels[code]) return _keyLabels[code];
if (code.startsWith('Key')) return code.slice(3);
if (code.startsWith('Digit')) return code.slice(5);
if (code.startsWith('Numpad')) { const r = code.slice(6); return r.length <= 2 ? 'N' + r : r.slice(0, 3); }
if (code.startsWith('Shift')) return 'SH';
if (code.startsWith('Control')) return 'CT';
if (code.startsWith('Alt')) return 'ALT';
if (code === 'Space') return 'SPC';
if (code === 'Backquote') return '`';
if (code === 'Escape') return 'ESC';
if (code === 'Enter') return 'RET';
if (code === 'Tab') return 'TAB';
if (code === 'PageDown') return 'PgDn';
if (code === 'PageUp') return 'PgUp';
return code.length <= 3 ? code : code.slice(0, 3);
}
let _nativeHud = null;
let _overlayMgr = null;
function createNativeHUD() {
const app = W.pc?.app;
const pc = W.pc;
if (!app || !pc) return null;
const roundedTex = app.assets.get(236692532);
const fontAsset = app.assets.get(236690804);
const gpm = app.root.findByName('GamePlayMenu');
if (!gpm || !roundedTex || !fontAsset) return null;
const old = app.root.findByName('ML-HUD');
if (old) old.destroy();
const btnSize = 50, spacing = 59, rowGap = 68;
const maxCols = 5;
const topLeftNudge = Math.round(btnSize * 0.12);
const _gameTopOffset = rowGap + btnSize + 20;
const _nativeClear = _gameTopOffset - rowGap - 5;
const _pushedChildren = [];
let _nativePushed = _gameTopOffset;
const COL_NORM = [0.071, 0.071, 0.071];
const COL_ON = [0, 0.5, 1];
const COL_FRESH = [0, 0.66, 1];
const allDefs = [];
if (!isMobile) {
allDefs.push(['fly', T.hb_fly, keyBadge(KEYBINDS.fly), 'ml-fly']);
}
allDefs.push(
['invis', T.hb_inv, keyBadge(KEYBINDS.invisible), 'ml-invis'],
['lock', T.hb_lck, keyBadge(KEYBINDS.autolock), 'ml-lock'],
['slots', 'SLOTS', isMobile ? null : keyBadge(KEYBINDS.slots), 'ml-slots'],
['prv', 'PRV', keyBadge(KEYBINDS.prv), 'ml-prv'],
['tc', 'TC', keyBadge(KEYBINDS.towerComplete), 'ml-tc'],
['tcl', 'TCL', keyBadge(KEYBINDS.towerLoop), 'ml-tcl'],
['cfg', T.hb_cfg, keyBadge(KEYBINDS.settings), 'ml-cfg'],
['help', T.hb_help, keyBadge(KEYBINDS.help), 'ml-help'],
['snipeBtn', T.hb_snp, keyBadge(KEYBINDS.snipe) + keyBadge(KEYBINDS.snipeToggle), 'ml-snipe-btn'],
['petsBtn', T.hb_pet, keyBadge(KEYBINDS.pets), 'ml-pets-btn'],
['rngBtn', T.hb_rng, keyBadge(KEYBINDS.rng), 'ml-rng-btn'],
['tp', T.hb_cud, keyBadge(KEYBINDS.cuddle), 'ml-tp'],
['acctBtn', T.hb_accts, keyBadge(KEYBINDS.acctToggle), 'ml-acct-btn'],
);
const mlGroup = new pc.Entity();
mlGroup.addComponent('element', { type: 'group', anchor: [0,1,0,1], pivot: [0,1], width: 440, height: 220 });
mlGroup.setLocalPosition(7, -_nativeClear, 0);
mlGroup.enabled = false;
function _renderLblTex(text) {
const canvas = document.createElement('canvas');
const s = 2;
canvas.width = btnSize * s; canvas.height = btnSize * s;
const ctx = canvas.getContext('2d');
const fs = text.length > 3 ? 15 : text.length > 2 ? 20 : text.length > 1 ? 24 : 30;
ctx.font = `bold ${fs * s}px system-ui, -apple-system, sans-serif`;
ctx.textAlign = 'center'; ctx.textBaseline = 'middle';
ctx.strokeStyle = 'black'; ctx.lineWidth = fs * s * 0.08;
ctx.strokeText(text, canvas.width / 2, canvas.height / 2);
ctx.fillStyle = 'white';
ctx.fillText(text, canvas.width / 2, canvas.height / 2);
const tex = new pc.Texture(app.graphicsDevice, { width: canvas.width, height: canvas.height, mipmaps: false, magFilter: pc.FILTER_LINEAR, minFilter: pc.FILTER_LINEAR });
tex.setSource(canvas);
return tex;
}
function makeBtn(id, label, keyText) {
const btn = new pc.Entity();
btn.addComponent('element', { type: 'group', anchor: [0,1,0,1], pivot: [0,1], width: btnSize + 6, height: btnSize + 30 });
const bg = new pc.Entity('BG');
bg.addComponent('element', {
type: 'image', anchor: [.5,.5,.5,.5], pivot: [.5,.5],
width: btnSize, height: btnSize,
color: new pc.Color(COL_NORM[0], COL_NORM[1], COL_NORM[2]),
opacity: 1, textureAsset: roundedTex.id, useInput: true
});
btn.addChild(bg);
const lbl = new pc.Entity('Label');
lbl.addComponent('element', {
type: 'image', anchor: [.5,.5,.5,.5], pivot: [.5,.5],
width: btnSize * 0.9, height: btnSize * 0.9, opacity: 1, useInput: false
});
lbl.element.texture = _renderLblTex(label);
lbl[_SYM_LTXT] = label;
bg.addChild(lbl);
if (keyText && !isMobile) {
const isLong = keyText.length > 2, isMed = keyText.length === 2;
if (isLong || isMed) {
const hg = isLong ? 6 : 3, rw = hg * 2 + 0.5;
const dk = new pc.Entity('DesktopKey');
dk.addComponent('element', { type:'group', anchor:[.5,.5,.5,.5], pivot:[.5,.5], width:25, height:25 });
dk.setLocalPosition(17.5, -17.5, 0);
bg.addChild(dk);
[[-hg,25,25],[hg,25,25],[0,rw,25]].forEach(([x,w,h],j)=>{
const e = new pc.Entity('Image');
const c = { type:'image', anchor:[.5,.5,.5,.5], pivot:[.5,.5], width:w, height:h, color:new pc.Color(.388,.388,.388), opacity:1 };
if (j < 2) c.textureAsset = roundedTex.id;
e.addComponent('element', c); if (x) e.setLocalPosition(x,0,0); dk.addChild(e);
});
[[-hg,20,20],[hg,20,20],[0,rw,20]].forEach(([x,w,h],j)=>{
const e = new pc.Entity('Group');
const c = { type:'image', anchor:[.5,.5,.5,.5], pivot:[.5,.5], width:w, height:h, color:new pc.Color(1,1,1), opacity:1 };
if (j < 2) c.textureAsset = roundedTex.id;
e.addComponent('element', c); if (x) e.setLocalPosition(x,0,0); dk.addChild(e);
});
const kl = new pc.Entity('Text');
kl.addComponent('element', { type:'text', anchor:[.5,.5,.5,.5], pivot:[.5,.5],
text:keyText, fontSize:15, fontAsset:fontAsset.id, color:new pc.Color(0,0,0), autoWidth:true, autoHeight:true });
kl.setLocalPosition(0, -0.3, 0); dk.addChild(kl);
} else {
const dk = new pc.Entity('DesktopKey');
dk.addComponent('element', { type:'image', anchor:[.5,.5,.5,.5], pivot:[.5,.5],
width:25, height:25, color:new pc.Color(.388,.388,.388), opacity:1, textureAsset:roundedTex.id });
dk.setLocalPosition(17.5, -17.5, 0);
bg.addChild(dk);
const inner = new pc.Entity('Group');
inner.addComponent('element', { type:'image', anchor:[.5,.5,.5,.5], pivot:[.5,.5],
width:20, height:20, color:new pc.Color(1,1,1), opacity:1, textureAsset:roundedTex.id });
dk.addChild(inner);
const kl = new pc.Entity('Text');
kl.addComponent('element', { type:'text', anchor:[.5,.5,.5,.5], pivot:[.5,.5],
text:keyText, fontSize:15, fontAsset:fontAsset.id, color:new pc.Color(0,0,0), autoWidth:true, autoHeight:true });
kl.setLocalPosition(0.6, 0, 0); dk.addChild(kl);
}
}
mlGroup.addChild(btn);
return { bg, lbl, btn, keyLbl: keyText ? btn.findByName('Text') : null };
}
let realign = () => {};
let _chatEntity = null;
let _origChatY = 0;
function makeProxy(parts, htmlId) {
const st = {};
const setCol = (r, g, b) => { if (parts.bg.element) { parts.bg.element.color = new pc.Color(r, g, b); } };
const update = () => {
if (!parts.bg.element || !parts.lbl.element) return;
if (st.disabled) {
parts.btn.enabled = false;
realign();
return;
}
if (!parts.btn.enabled) { parts.btn.enabled = true; realign(); }
if (st.fresh) {
setCol(COL_FRESH[0], COL_FRESH[1], COL_FRESH[2]);
parts.bg.element.opacity = 1;
parts.lbl.element.color = new pc.Color(1, 1, 1);
} else if (st.on) {
setCol(COL_ON[0], COL_ON[1], COL_ON[2]);
parts.bg.element.opacity = 1;
parts.lbl.element.color = new pc.Color(1, 1, 1);
} else {
setCol(COL_NORM[0], COL_NORM[1], COL_NORM[2]);
parts.bg.element.opacity = 1;
parts.lbl.element.color = new pc.Color(1, 1, 1);
}
};
return {
_native: parts,
classList: {
toggle(cls, force) { st[cls] = force; update(); },
add(cls) { st[cls] = true; update(); },
remove(cls) { delete st[cls]; update(); },
contains(cls) { return !!st[cls]; }
},
set textContent(t) {
if (!parts.lbl?.element) return;
const short = t.replace(/^SLOTS\s*/, '').replace(/^\u{1F512}\s*/u, '').replace(/^\u{1F513}\s*/u, '');
const txt = short.length > 5 ? short.substring(0, 5) : short;
if (parts.lbl[_SYM_LTXT] === txt) return;
parts.lbl[_SYM_LTXT] = txt;
const oldTex = parts.lbl.element.texture;
parts.lbl.element.texture = _renderLblTex(txt);
if (oldTex) oldTex.destroy();
},
get textContent() { return parts.lbl?.[_SYM_LTXT] || ''; },
addEventListener() {},
click() { const el = _sr.querySelector('.' + htmlId); if (el) el.click(); }
};
}
const result = { _root: mlGroup, _renderLblTex };
allDefs.forEach(([key, label, keyText, htmlId]) => {
result[key] = makeProxy(makeBtn(key, label, keyText), htmlId);
});
let _isPaused = false;
function _setNativePushed(v) {
if (v === _nativePushed) return;
_nativePushed = v;
for (const p of _pushedChildren) p.entity.setLocalPosition(p.entity.localPosition.x, p.origY - v, 0);
}
realign = () => {
const nudge = _isPaused ? 0 : topLeftNudge;
let total = 0;
for (const [key] of allDefs) {
if (!result[key]?._native?.btn?.enabled) continue;
if (total >= maxCols * 2) break;
total++;
}
const rowShift = _isPaused && total <= maxCols ? 1 : 0;
let n = 0;
for (const [key] of allDefs) {
if (!result[key]?._native?.btn?.enabled) continue;
if (n >= maxCols * 2) break;
const col = n % maxCols;
const row = Math.floor(n / maxCols) + rowShift;
const y = -(row * rowGap) + nudge;
result[key]._native.btn.setLocalPosition(col * spacing, y, 0);
btnLayout[key].idx = col;
btnLayout[key].yBase = -y;
n++;
}
const visibleRows = Math.ceil(n / maxCols);
const pushOff = visibleRows > 1 ? _gameTopOffset : visibleRows > 0 ? _gameTopOffset - rowGap : 0;
if (!_isPaused) _setNativePushed(pushOff);
if (_chatEntity) {
if (_isPaused || n === 0) {
_chatEntity.setLocalPosition(_chatEntity.localPosition.x, _origChatY, 0);
} else {
const baseOffset = Math.abs(mlGroup.localPosition.y);
const chatY = -(baseOffset + (visibleRows - 1) * rowGap - nudge + btnSize + 25);
_chatEntity.setLocalPosition(_chatEntity.localPosition.x, chatY, 0);
}
}
};
if (result.tc?._native?.btn) result.tc._native.btn.enabled = false;
if (result.tcl?._native?.btn) result.tcl._native.btn.enabled = false;
const prevOverlay = $('ml-click-overlay');
if (prevOverlay) prevOverlay.remove();
const clickOverlay = document.createElement('div');
clickOverlay.classList.add('ml-click-overlay');
clickOverlay.style.cssText = 'position:fixed;inset:0;z-index:10;pointer-events:none';
_sr.appendChild(clickOverlay);
const clickDivs = {};
for (const key of Object.keys(result)) {
const div = document.createElement('div');
div.style.cssText = 'position:absolute;pointer-events:auto;cursor:pointer;touch-action:manipulation';
div.dataset.key = key;
clickOverlay.appendChild(div);
clickDivs[key] = div;
}
['mousedown','mouseup','pointerdown','pointerup'].forEach(evt => {
clickOverlay.addEventListener(evt, e => {
if (e.target.dataset?.key) e.stopPropagation();
});
});
clickOverlay.addEventListener('touchstart', e => {
if (e.target.dataset?.key) { e.stopPropagation(); e.preventDefault(); }
});
clickOverlay.addEventListener('touchend', e => {
const key = e.target.dataset?.key;
if (key && result[key]) {
e.stopPropagation(); e.preventDefault();
_log('info', 'btn-touch ' + key);
_dbgLog('ui', 'btn-touch', { key }, 'debug');
result[key].click();
}
});
clickOverlay.addEventListener('click', e => {
const key = e.target.dataset?.key;
if (!key || !result[key]) return;
_log('info', 'btn-click ' + key);
_dbgLog('ui', 'btn-click', { key }, 'debug');
e.stopPropagation();
e.preventDefault();
result[key].click();
});
const btnLayout = {};
allDefs.forEach(([key], i) => { btnLayout[key] = { idx: i % maxCols, yBase: Math.floor(i / maxCols) * rowGap }; });
realign();
let _syncDiag = false;
let _syncLast = 0;
let _syncTimer = null;
const _overlayCssCache = {};
function syncOverlay(force) {
const now = performance.now();
const syncDelay = document.hidden ? 1500 : 500;
if (!force && now - _syncLast < syncDelay) {
clearTimeout(_syncTimer);
_syncTimer = setTimeout(() => syncOverlay(), Math.max(0, syncDelay - (now - _syncLast)));
return;
}
_syncLast = now;
const canvas = app.graphicsDevice.canvas;
const rect = canvas.getBoundingClientRect();
const cw = rect.width, ch = rect.height;
const scr = mlGroup.parent?.screen;
const refW = scr?.referenceResolution?.x || 1280;
const refH = scr?.referenceResolution?.y || 720;
const sx = cw / refW, sy = ch / refH;
const blend = scr?.scaleBlend ?? 0.5;
const scale = Math.pow(sx, 1 - blend) * Math.pow(sy, blend);
const groupY = Math.abs(mlGroup.localPosition.y);
const groupX = mlGroup.localPosition.x;
const visible = mlGroup.enabled;
for (const key of Object.keys(result)) {
const lay = btnLayout[key];
if (!lay) continue;
const bgLeft = groupX + lay.idx * spacing + 3;
const bgTop = groupY + lay.yBase + 15;
const div = clickDivs[key];
const nextLeft = (rect.left + bgLeft * scale) + 'px';
const nextTop = (rect.top + bgTop * scale) + 'px';
const nextWidth = (btnSize * scale) + 'px';
const nextHeight = (btnSize * scale) + 'px';
const nextDisplay = (visible && result[key]?._native?.btn?.enabled) ? 'block' : 'none';
const cache = _overlayCssCache[key] || (_overlayCssCache[key] = {});
if (cache.left !== nextLeft) { div.style.left = nextLeft; cache.left = nextLeft; }
if (cache.top !== nextTop) { div.style.top = nextTop; cache.top = nextTop; }
if (cache.width !== nextWidth) { div.style.width = nextWidth; cache.width = nextWidth; }
if (cache.height !== nextHeight) { div.style.height = nextHeight; cache.height = nextHeight; }
if (cache.display !== nextDisplay) { div.style.display = nextDisplay; cache.display = nextDisplay; }
}
if (!_syncDiag && visible) {
_syncDiag = true;
_log('setup', 'overlay-sync scale=' + scale.toFixed(3) + ' groupXY=' + groupX + ',' + groupY + ' canvas=' + cw.toFixed(0) + 'x' + ch.toFixed(0) + ' buttons=' + Object.keys(btnLayout).join(','));
_dbgLog('setup', 'overlay-sync', { scale: +scale.toFixed(3) }, 'debug');
}
clearTimeout(_syncTimer);
_syncTimer = setTimeout(() => syncOverlay(), syncDelay);
}
const overlay = gpm.parent;
overlay.addChild(mlGroup);
overlay.screen.on('set:resolution', () => {
_syncLast = 0;
if (_isPaused) mlGroup.setLocalPosition(7, _pauseBottomY(), 0);
syncOverlay(true);
});
syncOverlay(true);
const omArr = app.root.find(e => e.script?.overlayManager);
const omScr = omArr?.[0]?.script?.overlayManager;
if (omScr) _overlayMgr = omScr;
const _allOverlays = app.root.find(e => e.script?.overlayManager || e.script?.petTycoonOverlay || e.script?.escapeTsunamiOverlay || e.script?.towerParkourOverlay) || [];
const chatEntity = gpm.findByName('Chat')
|| omScr?.chatMainHolder || omScr?.chatHolder
|| _allOverlays.reduce((f, e) => f || e.script?.petTycoonOverlay?.chatMainHolder || e.script?.escapeTsunamiOverlay?.chatMainHolder || e.script?.towerParkourOverlay?.chatMainHolder, null)
|| _allOverlays.reduce((f, e) => f || e.script?.petTycoonOverlay?.chatHolder || e.script?.escapeTsunamiOverlay?.chatHolder || e.script?.towerParkourOverlay?.chatHolder, null);
if (chatEntity?.element) {
_origChatY = chatEntity.localPosition.y;
_chatEntity = chatEntity;
}
const _mobileKeys = app.root.findByTag('MobileKey') || [];
const _mobileTouch = app.root.find(e => e.script?.mobileTouch);
if (_mobileTouch) _mobileKeys.push(_mobileTouch);
for (const mk of _mobileKeys) {
if (!mk?.localPosition || !mk.element) continue;
if (_pushedChildren.some(p => p.entity === mk)) continue;
const _mkOrigY = mk.localPosition.y;
mk.setLocalPosition(mk.localPosition.x, _mkOrigY - _gameTopOffset, 0);
_pushedChildren.push({ entity: mk, origY: _mkOrigY });
}
realign();
syncOverlay(true);
const pauseEntity = overlay.findByName('Pause');
function _pauseBottomY() {
const scr = overlay.screen;
return -(scr.resolution.y / scr.scale - (rowGap + btnSize + 30));
}
function setPauseLayout() {
_isPaused = true;
mlGroup.setLocalPosition(7, _pauseBottomY(), 0);
for (const p of _pushedChildren) p.entity.setLocalPosition(p.entity.localPosition.x, p.origY, 0);
_nativePushed = 0;
_syncLast = 0;
realign();
syncOverlay(true);
_syncAcctBtn();
}
function setGameplayLayout() {
_isPaused = false;
mlGroup.setLocalPosition(7, -_nativeClear, 0);
for (const p of _pushedChildren) p.entity.setLocalPosition(p.entity.localPosition.x, p.origY - _gameTopOffset, 0);
_nativePushed = _gameTopOffset;
_syncLast = 0;
realign();
syncOverlay(true);
_syncAcctBtn();
}
const _acctShow = () => {
try {
if (!_shows.accts) return false;
if (_isPaused) return true;
const nm = _getNetworkManager();
return (nm?.room?.name || nm?.gameMode) === 'Hub';
} catch (_) { return false; }
};
function _syncAcctBtn() {
try {
const ab = result.acctBtn?._native?.btn;
if (!ab) return;
const want = _acctShow();
if (ab.enabled === want) return;
ab.enabled = want;
_syncLast = 0;
realign();
syncOverlay(true);
} catch (_) {}
}
setInterval(() => _syncAcctBtn(), 800);
if (pauseEntity) {
const origDesc = Object.getOwnPropertyDescriptor(pc.GraphNode.prototype, 'enabled');
if (origDesc?.set) {
Object.defineProperty(pauseEntity, 'enabled', {
get() { return origDesc.get.call(this); },
set(v) {
origDesc.set.call(this, v);
if (v) setPauseLayout(); else setGameplayLayout();
},
configurable: true
});
_opdHiddenSet.add(pauseEntity);
}
}
const loadingEntity = overlay.findByName('LoadingScreen');
const catOverlay = document.createElement('div');
catOverlay.classList.add('ml-cat-loading');
catOverlay.style.cssText = 'position:fixed;inset:0;z-index:5;display:none;background:#000;user-select:none;-webkit-user-select:none;pointer-events:none';
const catImg = document.createElement('img');
catImg.style.cssText = 'position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none';
const catUrl = (() => { try { const p = JSON.parse(_dbGet(_K_CPOOL) || '[]'); if (p.length) return p[Math.floor(Math.random() * p.length)]; } catch {} return _dbGet(_K_CURL); })();
if (catUrl) catImg.src = catUrl;
catOverlay.appendChild(catImg);
const catText = document.createElement('div');
catText.style.cssText = 'position:absolute;bottom:0;left:0;right:0;text-align:center;padding:24px 20px 28px;' +
'font-family:"Lilita One",Impact,"Arial Black",sans-serif;font-size:clamp(24px,4.5vw,48px);color:#fff;' +
'text-shadow:0 2px 12px rgba(0,0,0,.8),0 0 40px rgba(0,0,0,.5);' +
'background:linear-gradient(transparent,rgba(0,0,0,.55) 40%,rgba(0,0,0,.75));pointer-events:none;' +
'backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);' +
'animation:ml-cat-pulse 1.8s ease-in-out infinite';
const catTextInner = document.createElement('span');
catText.appendChild(catTextInner);
const catDots = document.createElement('span');
catDots.style.cssText = 'display:inline-block;width:1.5em;text-align:left';
catDots.classList.add('ml-dots');
catText.appendChild(catDots);
catOverlay.appendChild(catText);
const catRunOuter = document.createElement('div');
catRunOuter.style.cssText = 'position:absolute;bottom:80px;left:0;width:clamp(70px,12vw,120px);' +
'pointer-events:none;will-change:transform;transform:translateX(-10vw)';
const catRunInner = document.createElement('div');
catRunInner.style.cssText = 'will-change:transform;transform-origin:center bottom';
catRunInner.innerHTML = '<svg viewBox="0 0 115 72" fill="none" xmlns="http://www.w3.org/2000/svg" style="display:block;width:100%;height:auto">' +
'<g class="cs" style="transform-box:fill-box;transform-origin:50% 50%">' +
'<ellipse cx="55" cy="69" rx="30" ry="3" fill="rgba(0,0,0,.18)"/></g>' +
'<g class="ct" style="transform-box:fill-box;transform-origin:100% 100%">' +
'<path d="M28,38 C18,30 8,20 12,12 C15,6 20,10 18,16" stroke="#fff" stroke-width="5" stroke-linecap="round"/></g>' +
'<g class="cb" style="transform-box:fill-box;transform-origin:50% 0%">' +
'<rect x="33" y="52" width="7" height="15" rx="3.5" fill="#ddd"/>' +
'<rect x="40" y="52" width="7" height="15" rx="3.5" fill="#eee"/></g>' +
'<ellipse cx="52" cy="40" rx="24" ry="14" fill="#fff"/>' +
'<g class="cf" style="transform-box:fill-box;transform-origin:50% 0%">' +
'<rect x="62" y="52" width="7" height="15" rx="3.5" fill="#ddd"/>' +
'<rect x="69" y="52" width="7" height="15" rx="3.5" fill="#eee"/></g>' +
'<g class="ch" style="transform-box:fill-box;transform-origin:50% 100%">' +
'<circle cx="78" cy="28" r="15" fill="#fff"/>' +
'<g class="cr" style="transform-box:fill-box;transform-origin:50% 100%">' +
'<polygon points="65,18 69,2 73,16" fill="#fff"/><polygon points="81,16 85,2 89,18" fill="#fff"/>' +
'<polygon points="67.5,16.5 69,7 70.5,16" fill="#FFB6C1"/><polygon points="83,16 85,7 87,16.5" fill="#FFB6C1"/></g>' +
'<g class="ce" style="transform-box:fill-box;transform-origin:50% 50%">' +
'<ellipse cx="72" cy="26" rx="2.8" ry="3.2" fill="#333"/><ellipse cx="84" cy="26" rx="2.8" ry="3.2" fill="#333"/>' +
'<circle cx="73.2" cy="25" r="1.1" fill="#fff"/><circle cx="85.2" cy="25" r="1.1" fill="#fff"/></g>' +
'<ellipse cx="78" cy="31" rx="2" ry="1.4" fill="#FFB6C1"/>' +
'<path d="M78,32.5 C76.5,34.5 74.5,34.5 73.5,33.5" stroke="#777" stroke-width=".8" fill="none" stroke-linecap="round"/>' +
'<path d="M78,32.5 C79.5,34.5 81.5,34.5 82.5,33.5" stroke="#777" stroke-width=".8" fill="none" stroke-linecap="round"/>' +
'<g class="cw" style="transform-box:fill-box;transform-origin:50% 50%" stroke="#ccc" stroke-width=".7" stroke-linecap="round">' +
'<line x1="67" y1="29" x2="57" y2="27"/><line x1="67" y1="31.5" x2="57" y2="33.5"/>' +
'<line x1="89" y1="29" x2="99" y2="27"/><line x1="89" y1="31.5" x2="99" y2="33.5"/></g></g></svg>';
const _catSvg = catRunInner.querySelector('svg');
const _shadow = catRunInner.querySelector('.cs');
const _tail = catRunInner.querySelector('.ct');
const _lback = catRunInner.querySelector('.cb');
const _lfront = catRunInner.querySelector('.cf');
const _head = catRunInner.querySelector('.ch');
const _ears = catRunInner.querySelector('.cr');
const _eyes = catRunInner.querySelector('.ce');
const _whiskers = catRunInner.querySelector('.cw');
catRunOuter.appendChild(catRunInner);
catOverlay.appendChild(catRunOuter);
let _catWalkAnim, _catBobAnim, _catActive = false;
let _tailAnim, _lbackAnim, _lfrontAnim, _whiskerAnim, _blinkTimer, _earTimer;
let _speedTimer, _behaviorTimer;
let _catState = 'walk';
const _catWalkDur = 8000;
function _catDbg() {}
let _catWalkRight = true;
function _catGoingRight() { return _catWalkRight; }
function _startWalkSegment() {
_catSvg.style.transform = _catWalkRight ? '' : 'scaleX(-1)';
_catWalkAnim = catRunOuter.animate([
{ transform: 'translateX(' + (_catWalkRight ? 2 : 92) + 'vw)' },
{ transform: 'translateX(' + (_catWalkRight ? 92 : 2) + 'vw)' }
], { duration: _catWalkDur, easing: 'linear' });
_catWalkAnim.onfinish = function () {
if (!_catActive) return;
const rate = this.playbackRate;
_catWalkRight = !_catWalkRight;
_catDbg('flip');
_startWalkSegment();
if (rate !== 1) _catWalkAnim.updatePlaybackRate(rate);
};
}
function _doBlink() {
if (!_catActive) return;
_eyes.animate([
{ transform: 'scaleY(1)', offset: 0 },
{ transform: 'scaleY(0.1)', offset: 0.4 },
{ transform: 'scaleY(0.1)', offset: 0.6 },
{ transform: 'scaleY(1)', offset: 1 }
], { duration: 180, easing: 'ease-in-out' });
if (Math.random() < 0.3) {
setTimeout(function () {
if (!_catActive) return;
_eyes.animate([
{ transform: 'scaleY(1)', offset: 0 },
{ transform: 'scaleY(0.1)', offset: 0.35 },
{ transform: 'scaleY(0.1)', offset: 0.55 },
{ transform: 'scaleY(1)', offset: 1 }
], { duration: 150, easing: 'ease-in-out' });
}, 250);
}
_blinkTimer = setTimeout(_doBlink, 3000 + Math.random() * 5000);
}
function _doEarTwitch() {
if (!_catActive || _catState !== 'walk') return;
_ears.animate([
{ transform: 'rotate(0deg) scaleY(1)' },
{ transform: 'rotate(-4deg) scaleY(1)' },
{ transform: 'rotate(2deg) scaleY(1)' },
{ transform: 'rotate(0deg) scaleY(1)' }
], { duration: 200, easing: 'ease-out' });
_earTimer = setTimeout(_doEarTwitch, 4000 + Math.random() * 6000);
}
function _pauseWalk() {
_catDbg('pauseWalk');
_catWalkAnim.pause();
_catBobAnim?.pause();
_tailAnim?.pause();
_lbackAnim?.pause();
_lfrontAnim?.pause();
_whiskerAnim?.pause();
}
function _resumeWalk() {
_catState = 'walk';
_catDbg('resumeWalk');
_catWalkAnim.updatePlaybackRate(1);
_catWalkAnim.play();
_catBobAnim?.play();
_tailAnim?.play();
_lbackAnim?.play();
_lfrontAnim?.play();
_whiskerAnim?.play();
_scheduleTimers();
}
function _clearBehaviorTimers() {
clearTimeout(_earTimer);
clearTimeout(_speedTimer);
clearTimeout(_behaviorTimer);
}
function _scheduleTimers() {
_earTimer = setTimeout(_doEarTwitch, 2000 + Math.random() * 3000);
_speedTimer = setTimeout(_doSpeedChange, 4000 + Math.random() * 6000);
_behaviorTimer = setTimeout(_doRandomBehavior, 300 + Math.random() * 800);
}
const _behaviors = [_doPounce, _doPounce, _doLookAround, _doGroom, _doStartle, _doSprint, _doTailChase, _doSwat, _doPlayBow];
function _doRandomBehavior() {
if (!_catActive || _catState !== 'walk') {
_behaviorTimer = setTimeout(_doRandomBehavior, 1500);
return;
}
_behaviors[Math.floor(Math.random() * _behaviors.length)]();
}
function _spawnDust() {
for (let i = 0; i < 5; i++) {
const d = document.createElement('div');
d.style.cssText = 'position:absolute;bottom:0;left:50%;width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.5);pointer-events:none';
catRunOuter.appendChild(d);
const dx = -20 + Math.random() * 40;
const dy = -5 - Math.random() * 15;
d.animate([
{ transform: 'translate(-50%,0) scale(1)', opacity: 0.6 },
{ transform: 'translate(calc(-50% + ' + dx + 'px),' + dy + 'px) scale(0.3)', opacity: 0 }
], { duration: 400 + Math.random() * 200, easing: 'ease-out' }).onfinish = function () { d.remove(); };
}
}
function _doLookAround() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'look';
_catDbg('look');
_pauseWalk();
_clearBehaviorTimers();
const r = _catGoingRight() ? 1 : -1;
_head.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (-7 * r) + 'deg)', offset: 0.2 },
{ transform: 'rotate(' + (-7 * r) + 'deg)', offset: 0.38 },
{ transform: 'rotate(' + (5 * r) + 'deg)', offset: 0.6 },
{ transform: 'rotate(' + (5 * r) + 'deg)', offset: 0.78 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2200, easing: 'ease-in-out' }).onfinish = function () {
if (!_catActive) return;
_resumeWalk();
};
}
function _doGroom() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'groom';
_catDbg('groom');
_pauseWalk();
_clearBehaviorTimers();
const r = _catGoingRight() ? 1 : -1;
_lfront.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-35deg)', offset: 0.12 },
{ transform: 'rotate(-35deg)', offset: 0.88 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2800, easing: 'ease-in-out' });
_head.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (8 * r) + 'deg)', offset: 0.12 },
{ transform: 'rotate(' + (10 * r) + 'deg)', offset: 0.25 },
{ transform: 'rotate(' + (7 * r) + 'deg)', offset: 0.38 },
{ transform: 'rotate(' + (10 * r) + 'deg)', offset: 0.5 },
{ transform: 'rotate(' + (7 * r) + 'deg)', offset: 0.62 },
{ transform: 'rotate(' + (10 * r) + 'deg)', offset: 0.75 },
{ transform: 'rotate(' + (7 * r) + 'deg)', offset: 0.88 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2800, easing: 'ease-in-out' });
_tail.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(15deg)', offset: 0.15 },
{ transform: 'rotate(12deg)', offset: 0.85 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2800, easing: 'ease-in-out' }).onfinish = function () {
if (!_catActive) return;
_resumeWalk();
};
}
function _doStartle() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'startle';
_catDbg('startle');
_pauseWalk();
_clearBehaviorTimers();
catRunInner.animate([
{ transform: 'translateY(0)', offset: 0 },
{ transform: 'translateY(-35px)', offset: 0.25 },
{ transform: 'translateY(-35px)', offset: 0.4 },
{ transform: 'translateY(3px)', offset: 0.75 },
{ transform: 'translateY(0)', offset: 1 }
], { duration: 600, easing: 'ease-out' });
_tail.animate([
{ transform: 'rotate(0deg) scaleX(1.3)', offset: 0 },
{ transform: 'rotate(-30deg) scaleX(1.5)', offset: 0.25 },
{ transform: 'rotate(-30deg) scaleX(1.5)', offset: 0.4 },
{ transform: 'rotate(-10deg) scaleX(1.1)', offset: 0.75 },
{ transform: 'rotate(0deg) scaleX(1)', offset: 1 }
], { duration: 600, easing: 'ease-out' });
_ears.animate([
{ transform: 'scaleY(1) rotate(0deg)', offset: 0 },
{ transform: 'scaleY(0.5) rotate(-6deg)', offset: 0.2 },
{ transform: 'scaleY(0.5) rotate(-6deg)', offset: 0.45 },
{ transform: 'scaleY(1) rotate(0deg)', offset: 1 }
], { duration: 600, easing: 'ease-out' });
_lback.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(15deg)', offset: 0.25 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 600, easing: 'ease-out' });
_lfront.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-15deg)', offset: 0.25 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 600, easing: 'ease-out' });
_shadow.animate([
{ transform: 'scaleX(1) scaleY(1)', offset: 0 },
{ transform: 'scaleX(0.4) scaleY(0.4)', offset: 0.25 },
{ transform: 'scaleX(1.2) scaleY(1.2)', offset: 0.75 },
{ transform: 'scaleX(1) scaleY(1)', offset: 1 }
], { duration: 600, easing: 'ease-out' }).onfinish = function () {
if (!_catActive) return;
_spawnDust();
_resumeWalk();
};
}
function _doSprint() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'sprint';
_catDbg('sprint');
_clearBehaviorTimers();
_catWalkAnim.updatePlaybackRate(4);
_catDbg('sprint-4x');
if (_lbackAnim) _lbackAnim.playbackRate = 3;
if (_lfrontAnim) _lfrontAnim.playbackRate = 3;
if (_tailAnim) _tailAnim.playbackRate = 2.5;
catRunInner.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (_catGoingRight() ? -3 : 3) + 'deg)', offset: 0.1 },
{ transform: 'rotate(' + (_catGoingRight() ? -3 : 3) + 'deg)', offset: 0.9 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1800, easing: 'ease-in-out' }).onfinish = function () {
if (!_catActive) return;
_catDbg('sprint-end');
_catWalkAnim.updatePlaybackRate(1);
if (_lbackAnim) _lbackAnim.playbackRate = 1;
if (_lfrontAnim) _lfrontAnim.playbackRate = 1;
if (_tailAnim) _tailAnim.playbackRate = 1;
_catState = 'walk';
_scheduleTimers();
};
}
function _doTailChase() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'stretch';
_catDbg('stretch');
_pauseWalk();
_clearBehaviorTimers();
const r = _catGoingRight() ? 1 : -1;
catRunInner.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (5 * r) + 'deg) translateY(3px)', offset: 0.15 },
{ transform: 'rotate(' + (5 * r) + 'deg) translateY(3px)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2200, easing: 'ease-in-out' });
_lfront.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(18deg)', offset: 0.15 },
{ transform: 'rotate(18deg)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2200, easing: 'ease-in-out' });
_lback.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-8deg)', offset: 0.15 },
{ transform: 'rotate(-8deg)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2200, easing: 'ease-in-out' });
_tail.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-25deg)', offset: 0.15 },
{ transform: 'rotate(-20deg)', offset: 0.45 },
{ transform: 'rotate(-25deg)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2200, easing: 'ease-in-out' });
_head.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (-3 * r) + 'deg)', offset: 0.15 },
{ transform: 'rotate(' + (-5 * r) + 'deg)', offset: 0.4 },
{ transform: 'rotate(' + (-3 * r) + 'deg)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2200, easing: 'ease-in-out' }).onfinish = function () {
if (!_catActive) return;
_resumeWalk();
};
}
function _doSwat() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'swat';
_catDbg('swat');
_pauseWalk();
_clearBehaviorTimers();
_head.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-8deg)', offset: 0.1 },
{ transform: 'rotate(-6deg)', offset: 0.85 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_lfront.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-40deg)', offset: 0.12 },
{ transform: 'rotate(-10deg)', offset: 0.24 },
{ transform: 'rotate(-45deg)', offset: 0.36 },
{ transform: 'rotate(-5deg)', offset: 0.5 },
{ transform: 'rotate(-38deg)', offset: 0.62 },
{ transform: 'rotate(-10deg)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_ears.animate([
{ transform: 'rotate(0deg) scaleY(1)', offset: 0 },
{ transform: 'rotate(3deg) scaleY(1.1)', offset: 0.1 },
{ transform: 'rotate(3deg) scaleY(1.1)', offset: 0.8 },
{ transform: 'rotate(0deg) scaleY(1)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_tail.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-15deg)', offset: 0.15 },
{ transform: 'rotate(10deg)', offset: 0.4 },
{ transform: 'rotate(-12deg)', offset: 0.65 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' }).onfinish = function () {
if (!_catActive) return;
_resumeWalk();
};
}
function _doPlayBow() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'playbow';
_catDbg('playbow');
_pauseWalk();
_clearBehaviorTimers();
const r = _catGoingRight() ? 1 : -1;
catRunInner.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (6 * r) + 'deg)', offset: 0.15 },
{ transform: 'rotate(' + (6 * r) + 'deg)', offset: 0.7 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2000, easing: 'ease-in-out' });
_lfront.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(15deg)', offset: 0.15 },
{ transform: 'rotate(15deg)', offset: 0.7 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2000, easing: 'ease-in-out' });
_lback.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-5deg)', offset: 0.15 },
{ transform: 'rotate(-5deg)', offset: 0.7 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2000, easing: 'ease-in-out' });
_tail.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(15deg)', offset: 0.15 },
{ transform: 'rotate(-15deg)', offset: 0.3 },
{ transform: 'rotate(15deg)', offset: 0.45 },
{ transform: 'rotate(-15deg)', offset: 0.6 },
{ transform: 'rotate(10deg)', offset: 0.75 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2000, easing: 'ease-in-out' });
_head.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (-4 * r) + 'deg)', offset: 0.1 },
{ transform: 'rotate(' + (3 * r) + 'deg)', offset: 0.4 },
{ transform: 'rotate(' + (-4 * r) + 'deg)', offset: 0.6 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 2000, easing: 'ease-in-out' }).onfinish = function () {
if (!_catActive) return;
_catWalkAnim.updatePlaybackRate(2.5);
_catWalkAnim.play();
if (_lbackAnim) _lbackAnim.playbackRate = 2;
if (_lfrontAnim) _lfrontAnim.playbackRate = 2;
if (_tailAnim) _tailAnim.playbackRate = 2;
_catBobAnim?.play();
_tailAnim?.play();
_lbackAnim?.play();
_lfrontAnim?.play();
_whiskerAnim?.play();
setTimeout(function () {
if (!_catActive || _catState !== 'playbow') return;
_catWalkAnim.updatePlaybackRate(1);
if (_lbackAnim) _lbackAnim.playbackRate = 1;
if (_lfrontAnim) _lfrontAnim.playbackRate = 1;
if (_tailAnim) _tailAnim.playbackRate = 1;
_catState = 'walk';
_scheduleTimers();
}, 1500);
};
}
function _doSpeedChange() {
if (!_catActive || _catState !== 'walk') return;
const rate = 0.6 + Math.random() * 0.8;
_catDbg('speedChange', 'rate=' + rate.toFixed(2));
_catWalkAnim.updatePlaybackRate(rate);
if (_lbackAnim) _lbackAnim.playbackRate = rate;
if (_lfrontAnim) _lfrontAnim.playbackRate = rate;
if (_tailAnim) _tailAnim.playbackRate = rate;
setTimeout(function () {
if (!_catActive || _catState !== 'walk') return;
_catDbg('speedRestore');
_catWalkAnim.updatePlaybackRate(1);
if (_lbackAnim) _lbackAnim.playbackRate = 1;
if (_lfrontAnim) _lfrontAnim.playbackRate = 1;
if (_tailAnim) _tailAnim.playbackRate = 1;
}, 3000 + Math.random() * 2000);
_speedTimer = setTimeout(_doSpeedChange, 6000 + Math.random() * 10000);
}
function _doPounce() {
if (!_catActive || _catState !== 'walk') return;
_catState = 'pounce';
_catDbg('pounce');
const right = _catGoingRight();
const r = right ? 1 : -1;
_pauseWalk();
_clearBehaviorTimers();
_whiskers.animate([
{ transform: 'rotate(0deg)' },
{ transform: 'rotate(' + (3 * r) + 'deg)' },
{ transform: 'rotate(' + (-3 * r) + 'deg)' },
{ transform: 'rotate(' + (3 * r) + 'deg)' },
{ transform: 'rotate(0deg)' }
], { duration: 400, easing: 'linear' });
const wiggle = catRunInner.animate([
{ transform: 'rotate(0deg)' },
{ transform: 'rotate(' + (-2.5 * r) + 'deg)' },
{ transform: 'rotate(' + (2.5 * r) + 'deg)' },
{ transform: 'rotate(' + (-2.5 * r) + 'deg)' },
{ transform: 'rotate(' + (2.5 * r) + 'deg)' },
{ transform: 'rotate(0deg)' }
], { duration: 400, easing: 'linear' });
_tail.animate([
{ transform: 'rotate(12deg)' },
{ transform: 'rotate(-12deg)' },
{ transform: 'rotate(12deg)' },
{ transform: 'rotate(-12deg)' }
], { duration: 400, easing: 'linear' });
wiggle.onfinish = function () {
if (!_catActive) return;
_catWalkAnim.updatePlaybackRate(3);
_catWalkAnim.play();
_catDbg('pounce-leap');
const pa = catRunInner.animate([
{ transform: 'translateY(0) rotate(0deg)', offset: 0 },
{ transform: 'translateY(6px) rotate(' + (5 * r) + 'deg)', offset: 0.2 },
{ transform: 'translateY(6px) rotate(' + (5 * r) + 'deg)', offset: 0.35 },
{ transform: 'translateY(-30px) rotate(' + (-10 * r) + 'deg)', offset: 0.6 },
{ transform: 'translateY(-4px) rotate(' + (3 * r) + 'deg)', offset: 0.85 },
{ transform: 'translateY(0) rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_tail.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-15deg)', offset: 0.3 },
{ transform: 'rotate(25deg)', offset: 0.6 },
{ transform: 'rotate(-5deg)', offset: 0.85 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_lback.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(12deg)', offset: 0.25 },
{ transform: 'rotate(-18deg)', offset: 0.6 },
{ transform: 'rotate(5deg)', offset: 0.85 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_lfront.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(-12deg)', offset: 0.25 },
{ transform: 'rotate(18deg)', offset: 0.6 },
{ transform: 'rotate(-5deg)', offset: 0.85 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_ears.animate([
{ transform: 'scaleY(1)', offset: 0 },
{ transform: 'scaleY(0.65)', offset: 0.3 },
{ transform: 'scaleY(0.55)', offset: 0.6 },
{ transform: 'scaleY(0.85)', offset: 0.85 },
{ transform: 'scaleY(1)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_shadow.animate([
{ transform: 'scaleX(1) scaleY(1)', offset: 0 },
{ transform: 'scaleX(0.8) scaleY(0.8)', offset: 0.3 },
{ transform: 'scaleX(0.5) scaleY(0.5)', offset: 0.6 },
{ transform: 'scaleX(1.15) scaleY(1.2)', offset: 0.85 },
{ transform: 'scaleX(1) scaleY(1)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
_head.animate([
{ transform: 'rotate(0deg)', offset: 0 },
{ transform: 'rotate(' + (3 * r) + 'deg)', offset: 0.2 },
{ transform: 'rotate(' + (-5 * r) + 'deg)', offset: 0.6 },
{ transform: 'rotate(' + (2 * r) + 'deg)', offset: 0.85 },
{ transform: 'rotate(0deg)', offset: 1 }
], { duration: 1200, easing: 'ease-in-out' });
pa.onfinish = function () {
if (!_catActive) return;
_catDbg('pounce-land');
_spawnDust();
_resumeWalk();
};
};
}
function _catStart() {
if (_catActive) return;
_catActive = true;
_catState = 'walk';
if (_splFlipIv) { clearInterval(_splFlipIv); _splFlipIv = 0; }
if (_splBlinkIv) { clearInterval(_splBlinkIv); _splBlinkIv = 0; }
_clog('[cat] START');
if (_splashWalkAnim) {
const spl = _splashWalkAnim.effect?.getComputedTiming();
const splPr = spl?.progress ?? 0;
const splIt = spl?.currentIteration ?? 0;
_catWalkRight = (splIt % 2) === 0;
_startWalkSegment();
_catWalkAnim.currentTime = splPr * _catWalkDur;
} else {
_catWalkRight = Math.random() < 0.5;
_startWalkSegment();
_catWalkAnim.currentTime = Math.random() * _catWalkDur;
}
_catBobAnim = catRunInner.animate([
{ transform: 'translateY(0)' },
{ transform: 'translateY(-4px)' },
{ transform: 'translateY(0)' }
], { duration: 350, iterations: Infinity, easing: 'ease-in-out' });
_tailAnim = _tail.animate([
{ transform: 'rotate(-10deg)' },
{ transform: 'rotate(10deg)' },
{ transform: 'rotate(-10deg)' }
], { duration: 600, iterations: Infinity, easing: 'ease-in-out' });
_lbackAnim = _lback.animate([
{ transform: 'rotate(-8deg)' },
{ transform: 'rotate(8deg)' },
{ transform: 'rotate(-8deg)' }
], { duration: 350, iterations: Infinity, easing: 'ease-in-out' });
_lfrontAnim = _lfront.animate([
{ transform: 'rotate(8deg)' },
{ transform: 'rotate(-8deg)' },
{ transform: 'rotate(8deg)' }
], { duration: 350, iterations: Infinity, easing: 'ease-in-out' });
_whiskerAnim = _whiskers.animate([
{ transform: 'rotate(-2deg)' },
{ transform: 'rotate(2deg)' },
{ transform: 'rotate(-2deg)' }
], { duration: 800, iterations: Infinity, easing: 'ease-in-out' });
_blinkTimer = setTimeout(_doBlink, 2000 + Math.random() * 3000);
_scheduleTimers();
}
function _catStop() {
_catActive = false;
_catState = 'walk';
clearTimeout(_blinkTimer);
_clearBehaviorTimers();
_catWalkAnim?.cancel();
_catBobAnim?.cancel();
_tailAnim?.cancel();
_lbackAnim?.cancel();
_lfrontAnim?.cancel();
_whiskerAnim?.cancel();
_catWalkAnim = _catBobAnim = _tailAnim = _lbackAnim = _lfrontAnim = _whiskerAnim = null;
}
const catStyle = document.createElement('style');
catStyle.textContent = '@keyframes ml-cat-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}' +
'@keyframes ml-cat-dots{0%,20%{content:""}25%,45%{content:"."}50%,70%{content:".."}75%,100%{content:"..."}}' +
'.ml-cat-loading .ml-dots::after{content:"";animation:ml-cat-dots 1.4s steps(4,end) infinite}';
_sr.appendChild(catStyle);
_sr.appendChild(catOverlay);
try {
const _hrRaw = _dbGet(_K_HOPR);
if (_hrRaw) {
const _hr = JSON.parse(_hrRaw);
if (_hr && _hr.key && Date.now() - (_hr.t || 0) < 90000) _setHopReason(_hr.key, _hr.detail);
_dbRm(_K_HOPR);
}
} catch (_) {}
const gameModeTitle = loadingEntity?.findByName('GameModeTitle');
if (loadingEntity) {
const origDesc = Object.getOwnPropertyDescriptor(pc.GraphNode.prototype, 'enabled');
if (origDesc?.set) {
let _catJoinPending = !!loadingEntity.enabled;
let _catJoinDeadline = _catJoinPending ? Date.now() + 30000 : 0;
const _roomReady = () => {
const nm = _getNetworkManager();
const room = nm?.room;
if (!room?.connection?.isOpen) return false;
if (_overlayMgr?.firstLockEntity?.enabled) return true;
if (!getPlayer()) return false;
return true;
};
let _lastCatText = '';
const _setCatText = () => {
let txt = '';
if (_feats.towerLoop) {
txt = T.tcl_loading.replace('{key}', keyBadge(KEYBINDS.towerLoop));
} else {
const hr = _hopReason && Date.now() - _hopReason.t < 30000 ? _hopReason : null;
if (_hopReason && !hr) _setHopReason(null);
const tpl = hr && hr.key ? (T['hop_' + hr.key] || '') : '';
if (hr && hr.key && tpl) {
txt = tpl.replace('{name}', hr.detail || '');
} else {
const mode = _getNetworkManager()?.gameMode || window.GameGlobals?.gameMode || gameModeTitle?.element?.text || '';
txt = mode ? T.loading + ' ' + mode : T.loading;
}
}
catTextInner.textContent = txt;
if (txt !== _lastCatText) {
_lastCatText = txt;
_dbgLog('setup', 'cat-text', { text: txt, reason: _hopReason?.key || null, detail: _hopReason?.detail || '' }, 'debug');
}
};
const _applyCatLoading = (showCat) => {
mlGroup.enabled = !showCat;
const mf = $('ml-mobile-fly');
if (mf) mf.style.display = (showCat || !isMobile) ? 'none' : 'flex';
if (showCat) {
if (catOverlay.style.display !== 'block') _catStart();
catOverlay.style.display = 'block';
_setCatText();
} else {
if (catOverlay.style.display !== 'none') _catStop();
catOverlay.style.display = 'none';
}
};
Object.defineProperty(loadingEntity, 'enabled', {
get() { return origDesc.get.call(this); },
set(v) {
origDesc.set.call(this, v);
const wasHidden = catOverlay.style.display === 'none';
if (v) {
_catJoinPending = true;
_catJoinDeadline = Date.now() + 30000;
}
if (_catJoinPending && (_roomReady() || Date.now() > _catJoinDeadline)) _catJoinPending = false;
const showCat = !!v || _catJoinPending;
_applyCatLoading(showCat);
if (v && wasHidden) {
try { const p = JSON.parse(_dbGet(_K_CPOOL) || '[]'); if (p.length) { catImg.src = p[Math.floor(Math.random() * p.length)]; } } catch {}
_setCatText();
setTimeout(_setCatText, 0);
}
},
configurable: true
});
_opdHiddenSet.add(loadingEntity);
_applyCatLoading(!!loadingEntity.enabled || _catJoinPending);
setInterval(() => {
if (!_catJoinPending && catOverlay.style.display !== 'block') return;
if (_catJoinPending && (_roomReady() || Date.now() > _catJoinDeadline)) _catJoinPending = false;
const showCat = !!loadingEntity.enabled || _catJoinPending;
_applyCatLoading(showCat);
if (showCat) _setCatText();
}, 250);
} else {
mlGroup.enabled = true;
const mfOrig = $('ml-mobile-fly');
if (mfOrig && isMobile) mfOrig.style.display = 'flex';
}
} else {
mlGroup.enabled = true;
const mfFallback = $('ml-mobile-fly');
if (mfFallback && isMobile) mfFallback.style.display = 'flex';
}
_log('setup', 'native PlayCanvas HUD created');
_dbgLog('setup', 'native-hud-created');
return result;
}
const { getApiManager, autoFarmFreeMoney, _freeStarsStart, _freeStarsStop, _fountainStart, _fountainStop, _fountainSend, _fountainHookExpiry, _freeDiamondsStart, _freeDiamondsStop, _autoRollX25Start, _autoRollX25Stop, _autoCraftStart, _autoCraftStop, _autoVipStart, _autoVipStop, _directKillStart, _directKillStop, _autoBoostStart, _autoBoostStop } = (() => {
const getApiManager = _cached(5000, () => {
const root = W.pc?.app?.root;
const scripts = root?.findComponents('script') || [];
for (const s of scripts) {
for (const name of Object.keys(s)) {
const inst = s[name];
if (inst?.freeCurrency && inst?.balance !== undefined) return inst;
}
}
return null;
});
async function autoFarmFreeMoney() {
if (freeMoneyDone || !_feats.freeMoney) return;
const api = getApiManager();
if (!api) return;
if (!_myId()) return;
freeMoneyDone = true;
const remaining = (api.freeCurrencyAdLimit || 10) - (api.freeCurrencyAdCounter || 0);
if (remaining <= 0) { _log('info', 'free money: daily limit already reached'); _dbgLog('economy', 'free-money-limit'); return; }
let total = 0, calls = 0;
for (let i = 0; i < remaining; i++) {
const before = api.balance;
api.freeCurrency();
await new Promise(r => setTimeout(r, 1500));
const gained = api.balance - before;
if (gained <= 0) break;
total += gained;
calls++;
}
_log('info', 'free money: +' + total + ' coins (' + calls + ' calls, balance: ' + api.balance + ')');
_dbgLog('economy', 'free-money', { total, calls, balance: api.balance });
}
let _freeStarsBalance = null;
let _freeStarsLast = null;
let _starsLogAt = 0;
function _freeStarsStart() {
_freeStarsStop();
if (!_feats.freeStars) return;
_dbgLog('economy', 'stars-start', { on: _feats.freeStars });
_freeStarsTick();
}
function _freeStarsStop() {
clearTimeout(_freeStarsTimer);
_freeStarsTimer = null;
}
function _freeStarsHook(room) {
if (room[_SYM_STAR]) return;
room[_SYM_STAR] = true;
_dbgLog('economy', 'stars-hook', { room: room.name || null });
room.onMessage('starBalance', msg => {
const prev = _freeStarsBalance;
if (typeof msg === 'number') _freeStarsBalance = msg;
const _now = Date.now();
if (_now - _starsLogAt >= 1000) {
_starsLogAt = _now;
_dbgLog('economy', 'stars-balance', { room: room.name || null, val: msg, prev, delta: (typeof msg === 'number' && prev !== null) ? (msg - prev) : null });
}
});
}
function _freeStarsTick() {
_freeStarsStop();
if (!_feats.freeStars) return;
const nm = _getNetworkManager();
if (!nm?.room) { _dbgLog('economy', 'stars-tick', { noRoom: true }); _freeStarsTimer = setTimeout(_freeStarsTick, 5000); return; }
const rn = nm.room.name;
const open = !!nm.room?.connection?.isOpen;
if (rn !== 'EscapeTsunami' && rn !== 'SwordRNG') {
_dbgLog('economy', 'stars-tick', { room: rn, open, skip: true });
_freeStarsTimer = setTimeout(_freeStarsTick, 5000);
return;
}
_freeStarsHook(nm.room);
const room = nm.room;
const before = _freeStarsBalance;
let sent = 0;
for (let i = 0; i < 50; i++) {
if (!room?.connection?.isOpen) break;
room.send('getFreeStars');
sent++;
}
_dbgLog('economy', 'stars-burst', { room: rn, open, sent, before, after: _freeStarsBalance ?? null });
_log('info', 'free stars burst: +' + (sent * 100) + ' stars (sent ' + sent + ', balance: ' + (_freeStarsBalance ?? '?') + ')');
_dbgLog('economy', 'free-stars', { sent, stars: _freeStarsBalance ?? null, room: rn });
_freeStarsTimer = setTimeout(_freeStarsTick, 10000);
}
function _fountainStart() {
if (!_feats.autoFountain) return;
_fountainSend();
}
function _fountainStop() {
clearTimeout(_fountainTimer);
_fountainTimer = null;
}
function _fountainSend() {
_netGuard(room => {
if (room.name !== 'PetTycoon') return;
_lastFountainSend = Date.now();
room.send('unlockDecoration', 'MagicFountain');
if (!_fountainLoggedRoom) { _fountainLoggedRoom = true; _log('info', 'fountain: 1.5× profit boost active'); _dbgLog('economy', 'fountain-boost', { room: room.name || null }); }
});
}
function _fountainHookExpiry(room) {
if (room[_SYM_FOUNT]) return;
room[_SYM_FOUNT] = true;
room.onMessage('decorationDisabled', msg => {
if (!_feats.autoFountain) return;
if (msg?.sessionId !== room.sessionId) return;
if (msg?.decorationName !== 'MagicFountain') return;
_fountainTimer = setTimeout(() => { _fountainTimer = null; _fountainSend(); }, 1000);
});
}
function _freeDiamondsStart() {
_freeDiamondsStop();
if (!_feats.freeDiamonds) return;
_freeDiamondsTick();
}
function _freeDiamondsStop() {
clearTimeout(_freeDiamondsTimer);
_freeDiamondsTimer = null;
}
function _freeDiamondsTick() {
_freeDiamondsStop();
if (!_feats.freeDiamonds) return;
const nm = _getNetworkManager();
if (!nm?.room || nm.room.name !== 'TowerParkour') {
_freeDiamondsTimer = setTimeout(_freeDiamondsTick, 5000);
return;
}
const room = nm.room;
if (!room?.connection?.isOpen) { _freeDiamondsTimer = setTimeout(_freeDiamondsTick, 5000); return; }
let sent = 0;
for (let i = 0; i < 20; i++) {
if (!room?.connection?.isOpen) break;
room.send('adFreeGiveDiamonds');
sent++;
}
const p = room?.state?.players?.get(room?.sessionId);
_log('info', 'free diamonds burst: sent ' + sent + ' (balance: ' + (p?.diamonds ?? '?') + ')');
_dbgLog('economy', 'free-diamonds', { sent, diamonds: p?.diamonds ?? null });
_freeDiamondsTimer = setTimeout(_freeDiamondsTick, 310000);
}
let _rollCredits = [];
let _rollLastFire = 0;
let _rollWaitAt = 0;
let _rollLastResultAt = 0;
let _rollPrevResultAt = 0;
let _rollResultGap = 0;
function _autoRollX25Start() {
_autoRollX25Stop();
if (!_feats.autoRollX25) return;
_rollCredits.length = 0;
_rollLastFire = 0;
_rollWaitAt = 0;
_rollLastResultAt = 0;
_rollPrevResultAt = 0;
_rollResultGap = 0;
_dbgLog('economy', 'rollx25-start', { on: _feats.autoRollX25 });
_autoRollX25Tick();
}
function _autoRollX25Stop() {
clearTimeout(_autoRollX25Timer);
_autoRollX25Timer = null;
}
function _autoRollX25Buy(room, why) {
if (!_feats.autoRollX25) return;
const nm = _getNetworkManager();
if (nm?.room !== room) return;
if (!room?.connection?.isOpen) return;
room.send('buyWithStars', 25);
_dbgLog('economy', 'rollx25-buy', { room: room.name || null, why: why || null });
}
function _autoRollX25Hook(room) {
if (room[_SYM_RLX]) return;
room[_SYM_RLX] = true;
_dbgLog('economy', 'rollx25-hook', { room: room.name || null });
const rm = _getRollManager();
if (!rm?.nextRollLuckX25?.enabled) _autoRollX25Buy(room, 'init');
room.onMessage('rollResult', (d) => {
_rollCredits.push(Date.now());
if (_rollCredits.length > 600) _rollCredits.shift();
const rm2 = _getRollManager();
if (rm2) { try { rm2.canRoll = true; rm2.isRolling = false; } catch (_) {} }
const nowR = Date.now();
if (_rollPrevResultAt) _rollResultGap = Math.round(nowR - _rollPrevResultAt);
_rollPrevResultAt = nowR;
_rollLastResultAt = nowR;
if (room?.connection?.isOpen) room.send('equipBest');
_dbgLog('economy', 'rollx25-result', { room: room.name || null, pet: d?.cubes?.[0]?.name || null, rarity: d?.cubes?.[0]?.rarity || null, sinceFire: _rollLastFire ? _rollLastResultAt - _rollLastFire : null, gapMs: _rollResultGap || null });
});
}
function _autoRollX25Tick() {
_autoRollX25Stop();
if (!_feats.autoRollX25) return;
const nm = _getNetworkManager();
if (!nm?.room) { _autoRollX25Timer = setTimeout(_autoRollX25Tick, 5000); return; }
if (nm.room.name !== 'SwordRNG') { _autoRollX25Timer = setTimeout(_autoRollX25Tick, 5000); return; }
_autoRollX25Hook(nm.room);
const room = nm.room;
if (!room?.connection?.isOpen) { _autoRollX25Timer = setTimeout(_autoRollX25Tick, 5000); return; }
const rm = _getRollManager();
if (rm?.isAuto) { try { W.pc?.app?.fire('RollManager:AutoSwitch'); } catch (_) {} }
const now = Date.now();
const minGap = Math.max(50, Math.floor(_feats.rollSpamRate ?? 100));
const rollGap = Math.min(Math.max(minGap, _rollResultGap || 1600), 8000);
if (now >= _rollWaitAt && now - _rollLastFire >= minGap) {
try { rm.canRoll = true; rm.isRolling = false; } catch (_) {}
if (!rm?.nextRollLuckX25?.enabled) room.send('buyWithStars', 25);
_rollLastFire = now;
_rollWaitAt = now + rollGap;
try { W.pc?.app?.fire('RollManager:Roll'); } catch (_) {}
const win = now - 5000;
let cred = 0;
for (let i = _rollCredits.length - 1; i >= 0; i--) { if (_rollCredits[i] < win) break; cred++; }
const credited = cred / 5;
_dbgLog('economy', 'rollx25-fire', { room: room.name || null, credited: Math.round(credited * 10) / 10, isRolling: !!rm?.isRolling, canRoll: !!rm?.canRoll, minGap, rollGap, sinceResult: _rollLastResultAt ? now - _rollLastResultAt : null });
}
_autoRollX25Timer = setTimeout(_autoRollX25Tick, 50);
}
let _craftAt = 0;
let _craftPending = false;
let _craftLastPayload = null;
let _craftLastVals = null;
let _craftPoolLogRoom = null;
let _craftLastConfirm = 0;
let _craftChosenRank = 0;
let _craftCandsKey = '';
let _craftBestWait = false;
let _craftBestAt = 0;
let _craftBestFresh = false;
let _craftCycleStartAt = 0;
let _craftCountLog = -1;
let _craftLastEqBest = -1;
let _craftDenied = new Set();
function _autoCraftCount(inv) {
let n = 0;
for (const arr of [inv?.cubes, inv?.equippedCubes]) {
for (const c of (arr || [])) { if (c) n += (c.count || 1); }
}
return n;
}
function _autoCraftStart() {
_autoCraftStop();
_feats.autoCraft = true;
_craftPending = false;
_craftLastPayload = null;
_craftLastVals = null;
_craftAt = 0;
_craftLastConfirm = 0;
_craftBestWait = false;
_craftBestFresh = false;
_craftCycleStartAt = 0;
_craftCountLog = -1;
_craftLastEqBest = -1;
_craftDenied.clear();
_dbgLog('economy', 'craft-start', { on: true });
_autoCraftTick();
}
function _autoCraftStop() {
clearTimeout(_autoCraftTimer);
_autoCraftTimer = null;
_craftPending = false;
_craftBestWait = false;
_craftBestFresh = false;
}
function _autoCraftRank(cm) {
const inv = cm?.inventoryManagerScript;
const live = inv?.cubes || cm?.available || [];
const seen = new Set();
const cubes = [];
for (const c of live) {
if (!c) continue;
const k = c.name + '|' + c.size + '|' + c.mutation;
if (seen.has(k)) continue;
seen.add(k);
cubes.push(c);
}
cubes.sort((a, b) => (b.effectiveDamage || 0) - (a.effectiveDamage || 0) || (b.rarity || 0) - (a.rarity || 0));
return cubes;
}
function _autoCraftPayload(cm) {
const cubes = _autoCraftRank(cm);
const inv = cm?.inventoryManagerScript;
const guard = new Set();
const gk = [];
const eqk = [];
for (const e of (inv?.equippedCubes || [])) {
if (!e) continue;
eqk.push(e.name + '|' + (e.size || '') + '|' + (e.mutation || ''));
if (e.name) {
gk.push(e.name);
guard.add(e.name);
}
}
const room = _getNetworkManager()?.room;
const rk = room?.sessionId || room?.id || null;
if (rk && _craftPoolLogRoom !== rk && cubes.length) {
_craftPoolLogRoom = rk;
const raw = (inv?.cubes || cm?.available || []).filter(Boolean);
_dbgLog('economy', 'craft-pool', { top: cubes.slice(0, 10).map(c => ({ p: c.name + '|' + (c.size || '') + '|' + (c.mutation || ''), e: c.effectiveDamage ?? null, d: c.damage ?? null, r: c.rarity ?? null, n: c.count })) });
_dbgLog('economy', 'craft-inv', { guard: gk, equipped: eqk, raw: raw.map(c => ({ p: c.name + '|' + (c.size || '') + '|' + (c.mutation || ''), e: c.effectiveDamage ?? null, r: c.rarity ?? null, n: c.count })), sorted: cubes.map(c => ({ p: c.name + '|' + (c.size || '') + '|' + (c.mutation || ''), e: c.effectiveDamage ?? null, r: c.rarity ?? null, n: c.count })) });
}
const cands = [];
for (let i = 0; i < cubes.length; i++) {
const c = cubes[i];
if (guard.has(c.name)) continue;
if ((c.rarity || 0) <= 0) continue;
cands.push({ c, i });
}
cands.sort((a, b) => (b.c.effectiveDamage || 0) - (a.c.effectiveDamage || 0) || (b.c.rarity || 0) - (a.c.rarity || 0));
const keepN = Math.max(0, Math.min(_feats.autoCraftKeepN ?? 8, cands.length - 3));
let picks = [];
let anchorLog = null;
for (let k = keepN; k + 2 < cands.length; k++) {
const cand = cands.slice(k, k + 3);
const key = cand.map(p => p.c.name + '|' + (p.c.size || '') + '|' + (p.c.mutation || '')).join('~');
if (_craftDenied.has(key)) continue;
picks = cand;
anchorLog = { a: cand[0].c.name, e: cand[0].c.effectiveDamage ?? null, r: cand[0].c.rarity ?? null, sum: (cand[0].c.effectiveDamage || 0) + (cand[1].c.effectiveDamage || 0) + (cand[2].c.effectiveDamage || 0), top: cands.length, keep: keepN };
break;
}
const ck = JSON.stringify(picks.map(p => p.c.name + '|' + (p.c.size || '') + '|' + (p.c.mutation || '')));
if (ck !== _craftCandsKey) {
_craftCandsKey = ck;
_dbgLog('economy', 'craft-cands', { anchor: anchorLog, cands: picks.map(p => ({ i: p.i, p: p.c.name + '|' + (p.c.size || '') + '|' + (p.c.mutation || ''), e: p.c.effectiveDamage ?? null, r: p.c.rarity ?? null, n: p.c.count })) });
}
if (picks.length === 3) {
_craftChosenRank = picks[0].i;
_craftLastVals = picks.map(p => p.c.rarity || 0);
return picks.map(p => ({ name: p.c.name, size: p.c.size, mutation: p.c.mutation }));
}
return null;
}
function _autoCraftHook(room) {
if (room[_SYM_CRF]) return;
room[_SYM_CRF] = true;
_craftDenied.clear();
_dbgLog('economy', 'craft-hook', { room: room.name || null });
room.onMessage('craftOffer', (d) => {
_craftPending = false;
_dbgLog('economy', 'craft-offer', { prize: d?.prize?.name || null, rarity: d?.prize?.rarity ?? null, size: d?.prize?.size || null, mutation: d?.prize?.mutation || null, chance: d?.chance ?? null, success: d?.success ?? null, inputs: d?.inputs || null });
if (d?.prize && _craftLastPayload) {
_craftPending = true;
_craftAt = Date.now() + 1200;
_craftLastConfirm = Date.now();
room.send('craftConfirm', _craftLastPayload);
}
});
room.onMessage('craftOfferDenied', (d) => {
_craftPending = false;
_craftAt = 0;
const k = (_craftLastPayload || []).map(p => p.name + '|' + (p.size || '') + '|' + (p.mutation || '')).join('~');
if (k && _craftDenied.size < 128) _craftDenied.add(k);
_dbgLog('economy', 'craft-denied', { reason: d?.reason || null, key: k, denied: _craftDenied.size });
});
room.onMessage('craftResult', (d) => {
_craftPending = false;
_craftAt = 0;
const inv = (_craftLastPayload || []).map((p, i) => p.name + ' [' + _fmtVal(_craftLastVals?.[i]) + ']').join(' + ');
const g = d?.gained;
const out = g ? T.log_success + ' ' + (g.name || '?') + ' [' + _fmtVal(g.rarity) + ']' : T.log_fail;
_rngLogPush(T.log_craft + ' ' + inv + ' -> ' + out, g ? 'ok' : 'fail');
_dbgLog('economy', 'craft-result', { gained: d?.gained || null, cycleMs: _craftCycleStartAt ? Date.now() - _craftCycleStartAt : null, consumed: (d?.consumed || []).map(x => ({ p: x?.name + '|' + (x?.size || '') + '|' + (x?.mutation || ''), n: x?.count ?? null, r: x?.removed ?? null })) });
});
room.onMessage('craftDenied', (d) => {
_craftPending = false;
_craftAt = 0;
_dbgLog('economy', 'craft-fail', { reason: d?.reason || null, inputs: d?.inputs || null, consumed: d?.consumed || null });
});
room.onMessage('equipBestResult', (d) => {
_craftBestFresh = true;
const eq = d?.equippedCubes || [];
let best = null;
for (const c of eq) { if (c && (!best || (c.rarity || c.effectiveDamage || 0) > (best.rarity || best.effectiveDamage || 0))) best = c; }
const bv = best ? (best.rarity || best.effectiveDamage || 0) : 0;
if (_craftLastEqBest >= 0 && bv > _craftLastEqBest && best) {
_rngLogPush(T.log_equipped + ': ' + best.name + ' [' + _fmtVal(bv) + ']');
_dbgLog('economy', 'craft-equip-new', { name: best.name, value: bv });
}
_craftLastEqBest = bv;
_dbgLog('economy', 'craft-best-result', { equipped: eq.map(c => c.name + '|' + (c.size || '') + '|' + (c.mutation || '')), rtMs: _craftBestAt ? Date.now() - _craftBestAt : null });
});
}
function _autoCraftTick() {
clearTimeout(_autoCraftTimer);
_autoCraftTimer = null;
if (!_feats.autoCraft) return;
const nm = _getNetworkManager();
if (!nm?.room) { _autoCraftTimer = setTimeout(_autoCraftTick, 3000); return; }
if (nm.room.name !== 'SwordRNG') { _autoCraftTimer = setTimeout(_autoCraftTick, 3000); return; }
_autoCraftHook(nm.room);
const room = nm.room;
if (!room?.connection?.isOpen) { _autoCraftTimer = setTimeout(_autoCraftTick, 3000); return; }
const cm = _getCraftManager();
if (!cm) { _autoCraftTimer = setTimeout(_autoCraftTick, 3000); return; }
const now = Date.now();
if (_craftBestWait) {
if (_craftBestFresh || now - _craftBestAt >= 3000) {
_craftBestWait = false;
_craftBestFresh = false;
const payload = _autoCraftPayload(cm);
if (payload) {
_craftLastPayload = payload;
_craftPending = true;
_craftAt = now + 1200;
room.send('craftGetOffer', payload);
_dbgLog('economy', 'craft-offer-req', { input: payload[0].name, n: 3, rank: _craftChosenRank });
} else {
_craftAt = now + 3000;
}
}
} else if (!_craftPending && now >= _craftAt && now - _craftLastConfirm >= 1200) {
const inv = cm?.inventoryManagerScript;
const minPets = _feats.autoCraftMinPets ?? 150;
const total = _autoCraftCount(inv);
if (total < minPets) {
if (_craftCountLog !== total) { _craftCountLog = total; _dbgLog('economy', 'craft-paused', { total, min: minPets }); }
_craftAt = now + ((minPets - total) <= 2 ? 1500 : 5000);
} else {
if (_craftCountLog !== -1) _craftCountLog = -1;
_craftBestWait = true;
_craftBestAt = now;
_craftCycleStartAt = now;
_craftBestFresh = false;
room.send('equipBest');
_dbgLog('economy', 'craft-equip-best', { room: room.name || null, total });
}
} else if (_craftPending && now >= _craftAt + 4000) {
_craftPending = false;
_craftAt = 0;
}
_autoCraftTimer = setTimeout(_autoCraftTick, 250);
}
let _autoVipLastSend = 0;
function _autoVipStart() {
_autoVipStop();
if (!_feats.autoVipSword && !_feats.autoVipWaves) return;
_dbgLog('economy', 'vip-start', { sword: _feats.autoVipSword, waves: _feats.autoVipWaves });
_autoVipTick();
}
function _autoVipStop() {
clearTimeout(_autoVipTimer);
_autoVipTimer = null;
}
function _autoVipSend(room, mode) {
if (!_feats.autoVipSword && !_feats.autoVipWaves) return;
if (!room?.connection?.isOpen) return;
room.send('buyVip');
_autoVipLastSend = Date.now();
_dbgLog('economy', 'vip-buy', { room: room.name || null, mode });
_log('info', 'auto vip: bought in ' + (room.name || '?'));
}
function _autoVipTick() {
_autoVipStop();
if (!_feats.autoVipSword && !_feats.autoVipWaves) return;
const nm = _getNetworkManager();
if (!nm?.room) { _autoVipTimer = setTimeout(_autoVipTick, 2000); return; }
const rn = nm.room.name;
if (rn !== 'SwordRNG' && rn !== 'EscapeTsunami') { _autoVipTimer = setTimeout(_autoVipTick, 2000); return; }
const now = Date.now();
if (rn === 'SwordRNG') {
if (!_feats.autoVipSword) { _autoVipTimer = setTimeout(_autoVipTick, 2000); return; }
const mgr = _getSwordVipManager();
if (mgr && !mgr.activeVip && now - _autoVipLastSend > 1500) _autoVipSend(nm.room, 'sword');
} else if (rn === 'EscapeTsunami') {
if (!_feats.autoVipWaves) { _autoVipTimer = setTimeout(_autoVipTick, 2000); return; }
const mgr = _getEscapeVipManager();
if (mgr && !mgr.activeVip && now - _autoVipLastSend > 1500) _autoVipSend(nm.room, 'waves');
}
_autoVipTimer = setTimeout(_autoVipTick, 2000);
}
let _directKillKills = 0;
let _farmStatsAt = 0;
function _directKillStart() {
_directKillStop();
if (!_feats.directKill) return;
_directKillCredits.length = 0;
_directKillCoin = null;
_directKillKills = 0;
_dbgLog('economy', 'directkill-start', { on: _feats.directKill, rate: _feats.directKillRate });
_directKillTick();
}
function _directKillStop() {
clearTimeout(_directKillTimer);
_directKillTimer = null;
}
function _directKillHook(room) {
if (room[_SYM_DK]) return;
room[_SYM_DK] = true;
_directKillCoin = null;
_directKillCredits.length = 0;
room.onMessage('balanceVariables', msg => {
const c = msg?.coins;
if (typeof c !== 'number') return;
if (_directKillCoin === null) { _directKillCoin = c; return; }
if (c > _directKillCoin) {
_directKillCredits.push(Date.now());
if (_directKillCredits.length > 600) _directKillCredits.shift();
}
_directKillCoin = c;
});
}
function _directKillTick() {
_directKillStop();
if (!_feats.directKill) return;
const nm = _getNetworkManager();
if (!nm?.room) { _directKillTimer = setTimeout(_directKillTick, 500); return; }
if (nm.room.name !== 'SwordRNG') { _directKillTimer = setTimeout(_directKillTick, 500); return; }
try {
const room = nm.room;
_directKillHook(room);
const mm = _getSwordMobsManager();
const mobs = mm?.currentLevel?.mobs;
const name = (mobs && mobs.length) ? (mobs[Math.floor(Math.random() * mobs.length)]?.name || null) : null;
if (name && room.connection?.isOpen) {
const now = Date.now();
const win = now - 5000;
let n = 0;
for (let i = _directKillCredits.length - 1; i >= 0; i--) {
if (_directKillCredits[i] < win) break;
n++;
}
const credited = n / 5;
const target = Math.min(_feats.directKillRate, 40, Math.max(20, Math.round(credited * 2)));
const perTick = Math.max(1, Math.round(target / 20));
for (let i = 0; i < perTick; i++) {
if (!room.connection?.isOpen) break;
room.send('killedMob', { name });
}
_directKillKills += perTick;
_dbgLog('economy', 'directkill-hit', { name, rate: _feats.directKillRate, target, credited: Math.round(credited * 10) / 10, batch: perTick });
}
} catch (e) {
_dbgLog('economy', 'directkill-err', { err: e.message }, 'error');
}
const nowS = Date.now();
if (nowS - _farmStatsAt >= 2000) {
_farmStatsAt = nowS;
const win = nowS - 5000;
let kn = 0;
for (let i = _directKillCredits.length - 1; i >= 0; i--) { if (_directKillCredits[i] < win) break; kn++; }
let rn = 0;
for (let i = _rollCredits.length - 1; i >= 0; i--) { if (_rollCredits[i] < win) break; rn++; }
_dbgLog('economy', 'farm-stats', { kps: Math.round(kn / 5), rpm: Math.round(rn * 12), rollGap: _rollLastFire ? Math.max(0, Math.round(_rollWaitAt - nowS)) : null, craftPending: _craftPending, craftCycle: _craftCycleStartAt ? Math.round(nowS - _craftCycleStartAt) : null });
}
_directKillTimer = setTimeout(_directKillTick, 50);
}
let _boostCoins = null;
let _boostLevels = null;
let _boostLastBuy = 0;
let _boostSkipLog = '';
let _boostTickCount = 0;
let _boostAppHooked = false;
let _boostDeferLog = '';
function _autoBoostRead() {
const mgr = _getSwordUpgradesManager();
if (!mgr) return;
if (typeof mgr.balance === 'number') _boostCoins = mgr.balance;
if (mgr.levels) _boostLevels = mgr.levels;
}
function _autoBoostStart() {
_autoBoostStop();
if (!_feats.autoBoost) return;
_dbgLog('economy', 'autoboost-start', { on: _feats.autoBoost, mgr: !!_getSwordUpgradesManager() });
_autoBoostHook();
_autoBoostTick();
}
function _autoBoostStop() {
clearTimeout(_autoBoostTimer);
_autoBoostTimer = null;
}
function _autoBoostAppHook() {
const app = W.pc?.app;
if (!app || typeof app.on !== 'function') return false;
if (_boostAppHooked) return true;
_boostAppHooked = true;
app.on('UpgradesManager:UpgradesData', d => { if (d) _boostLevels = d; });
app.on('ModeOverlay:BalanceVariables', d => { if (d && typeof d.coins === 'number') { const r = _getNetworkManager()?.room; if (r?.name === 'SwordRNG') _boostCoins = d.coins; } });
return true;
}
function _autoBoostHook() {
_autoBoostRead();
_autoBoostAppHook();
const nm = _getNetworkManager();
const room = nm?.room;
if (!room || room[_SYM_BST]) return;
room[_SYM_BST] = true;
room.onMessage('balanceVariables', msg => {
if (msg && typeof msg.coins === 'number') _boostCoins = msg.coins;
});
room.onMessage('upgradesData', msg => {
if (msg) _boostLevels = msg;
});
}
function _autoBoostTick() {
_autoBoostStop();
if (!_feats.autoBoost) return;
const nm = _getNetworkManager();
if (!nm?.room) { _autoBoostTimer = setTimeout(_autoBoostTick, 2000); return; }
if (nm.room.name !== 'SwordRNG') { _autoBoostTimer = setTimeout(_autoBoostTick, 2000); return; }
_autoBoostHook();
_autoBoostRead();
const room = nm.room;
_boostTickCount++;
if (_boostTickCount % 5 === 0) {
const mgr = _getSwordUpgradesManager();
const cb = _boostLevels?.levelCoinsBoost;
const db = _boostLevels?.levelDiamondsBoost;
const lk = _boostLevels ? Object.keys(_boostLevels).find(k => k.toLowerCase().includes('luck')) : null;
const lb = lk ? _boostLevels[lk] : null;
_dbgLog('economy', 'autoboost-state', {
open: !!room?.connection?.isOpen, coins: _boostCoins, mgr: !!mgr, mgrBalance: mgr?.balance ?? null,
keys: _boostLevels ? Object.keys(_boostLevels).slice(0, 12) : null,
coinsUp: cb ? { cv: cb.currentValue, nv: cb.nextValue, p: cb.price } : null,
diamUp: db ? { cv: db.currentValue, nv: db.nextValue, p: db.price } : null,
luckUp: lb ? { cv: lb.currentValue, nv: lb.nextValue, p: lb.price } : null
});
}
const _boostReady = room?.connection?.isOpen && _boostCoins !== null && _boostLevels;
if (!_boostReady) {
const _skip = 'o' + !!room?.connection?.isOpen + 'c' + _boostCoins + 'l' + !!_boostLevels;
if (_boostSkipLog !== _skip) { _boostSkipLog = _skip; _dbgLog('economy', 'autoboost-skip', { open: !!room?.connection?.isOpen, coins: _boostCoins, levels: !!_boostLevels }); }
}
if (_boostReady) {
const now = Date.now();
const _areaPrice = _swordNextAreaPrice();
const types = [];
if (_feats.autoBoostCoins) types.push('levelCoinsBoost');
if (_feats.autoBoostDiamonds) types.push('levelDiamondsBoost');
if (_feats.autoBoostLuck) {
const luckKey = Object.keys(_boostLevels).find(k => k.toLowerCase().includes('luck'));
if (luckKey) types.push(luckKey);
}
for (const type of types) {
const lv = _boostLevels[type];
if (!lv || !lv.nextValue) continue;
if (_areaPrice > 0 && _areaPrice <= lv.price) {
const _d = type + ':' + _areaPrice;
if (_boostDeferLog !== _d) { _boostDeferLog = _d; _dbgLog('economy', 'autoboost-defer', { type, area: _areaPrice, up: lv.price, coins: _boostCoins }); }
continue;
}
if (_boostCoins >= lv.price && now - _boostLastBuy > 500) {
room.send('buyUpgrade', type);
_boostLastBuy = now;
_boostCoins -= lv.price;
_rngLogPush(T.log_bought_upgrade + ' ' + type + ' (lvl ' + lv.nextValue + ')');
_dbgLog('economy', 'autoboost-buy', { type, lvl: lv.currentValue, price: lv.price, coins: _boostCoins });
}
}
}
_autoBoostTimer = setTimeout(_autoBoostTick, 2000);
}
let _bstInitTimer = setInterval(() => { if (_autoBoostAppHook()) clearInterval(_bstInitTimer); }, 500);
return { getApiManager, autoFarmFreeMoney, _freeStarsStart, _freeStarsStop, _fountainStart, _fountainStop, _fountainSend, _fountainHookExpiry, _freeDiamondsStart, _freeDiamondsStop, _autoRollX25Start, _autoRollX25Stop, _autoCraftStart, _autoCraftStop, _autoVipStart, _autoVipStop, _directKillStart, _directKillStop, _autoBoostStart, _autoBoostStop };
})();
let lastAutoCollect = 0;
let _mlBatchCollecting = false;
let _mlBatchTotal = 0;
let _mlBatchCount = 0;
let _mlBatchTimer = null;
let _mlBalanceTimer = null;
let _mlCachedBalance = null;
const { findPetOverlay, flushBatch, autoCollectPetEarnings } = (() => {
const findPetOverlay = _cached(10000, () => {
const app = W.pc?.app;
if (!app) return null;
let overlay = null;
app.root.find(e => {
if (!e.script) return false;
for (const k of Object.keys(e.script)) {
const s = e.script[k];
if (s?.coinContainer && s?.onCoinAnimation) { overlay = s; return true; }
}
return false;
});
return overlay;
});
function flushBatch() {
if (!_mlBatchCollecting) return;
_mlBatchCollecting = false;
clearTimeout(_mlBatchTimer);
if (_mlBalanceTimer) { clearTimeout(_mlBalanceTimer); _mlBalanceTimer = null; }
if (_mlBatchTotal !== 0) {
_log('collect', 'batched ' + _mlBatchCount + ' notifications → +$' + _mlBatchTotal);
_dbgLog('collect', 'batch-flush', { count: _mlBatchCount, total: _mlBatchTotal }, 'debug');
const overlay = findPetOverlay();
const app = W.pc?.app;
if (overlay) {
for (let i = 0; i < 3; i++) {
setTimeout(() => overlay.onCoinAnimation(5), i * 200);
}
}
if (_mlCachedBalance !== null && app?.[_SYM_OFIRE]) {
const bal = _mlCachedBalance;
_mlCachedBalance = null;
_mlBalanceTimer = setTimeout(() => {
_mlBalanceTimer = null;
app[_SYM_OFIRE].call(app, 'ModeOverlay:Balance', bal);
}, 800);
}
} else if (_mlCachedBalance !== null) {
const app = W.pc?.app;
if (app?.[_SYM_OFIRE]) {
app[_SYM_OFIRE].call(app, 'ModeOverlay:Balance', _mlCachedBalance);
}
_mlCachedBalance = null;
}
_mlBatchTotal = 0;
_mlBatchCount = 0;
}
function autoCollectPetEarnings() {
if (!_feats.autoCollect) return;
const now = Date.now();
if (now - lastAutoCollect < autoCollectInterval * 1000) return;
lastAutoCollect = now;
const app = W.pc?.app;
if (!app) return;
if (!app[_SYM_ADHK]) {
app[_SYM_ADHK] = true;
app[_SYM_OFIRE] = app.fire;
}
const pm = _findPetsManager();
if (!pm?.basePets || pm.basePets.size === 0) return;
const myId = _myId();
if (!myId) return;
_mlBatchCollecting = true;
_mlBatchTotal = 0;
_mlBatchCount = 0;
clearTimeout(_mlBatchTimer);
let claimed = 0;
pm.basePets.forEach((pet, token) => {
if (String(pet.owner) === String(myId)) {
app.fire('NetworkManager:Send', 'claimPetBalance', token);
claimed++;
}
});
if (claimed > 0) {
_log('collect', 'claimed ' + claimed + ' pets');
_dbgLog('collect', 'claimed', { claimed });
_mlBatchTimer = setTimeout(flushBatch, 2000);
} else {
_mlBatchCollecting = false;
}
}
return { findPetOverlay, flushBatch, autoCollectPetEarnings };
})();
const petSpawnData = new Map();
const PET_SPAWN_CAP = 2000;
const hookPetSpawn = (() => {
function hookPetSpawn() {
const app = W.pc?.app;
if (!app) return;
if (app[_SYM_PSPWN]) return;
app[_SYM_PSPWN] = true;
const onPetsSpawn = data => {
const items = Array.isArray(data) ? data : (data && typeof data === 'object' ? Object.values(data) : []);
if (!items.length) return;
if (petSpawnData.size > PET_SPAWN_CAP) {
const excess = petSpawnData.size - PET_SPAWN_CAP + items.length;
const it = petSpawnData.keys();
for (let i = 0; i < excess; i++) petSpawnData.delete(it.next().value);
}
for (const p of items) {
if (!p.token) continue;
petSpawnData.set(p.token, {
name: p.name ?? null,
profit: p.profit ?? null,
rarity: p.rarity ?? null,
mutation: p.mutation ?? null,
isEgg: !!p.isEgg,
owner: p.owner ?? null,
basePlace: p.basePlace ?? null,
t: Date.now()
});
}
};
const onPetsRemove = data => {
const items = Array.isArray(data) ? data : (data && typeof data === 'object' ? Object.values(data) : []);
for (const p of items) {
if (p && p.token != null) petSpawnData.delete(p.token);
}
};
app.on('PetsManager:PetsSpawn', onPetsSpawn);
app.on('BasesManager:PetsSpawn', onPetsSpawn);
app.on('PetsManager:PetsRemove', onPetsRemove);
app.on('BasesManager:PetsRemove', onPetsRemove);
_log('setup', 'pet spawn hook installed');
_dbgLog('setup', 'pet-spawn-hooked', null, 'debug');
}
return hookPetSpawn;
})();
const { getMyBase, getLockBtn } = (() => {
function getMyBase() {
const basesScript = _getBasesManager();
if (!basesScript?.activeBases) return null;
const sessionId = _myId();
if (!sessionId) return null;
for (const bd of basesScript.activeBases) {
if (bd?.data?.sessionId === sessionId) return basesScript.baseEntities?.[bd.data.id] ?? null;
}
return null;
}
function getLockBtn() {
const base = getMyBase();
if (!base) return null;
const btn = base.findByName('LockdownButton');
return btn?.script?.lockdownButton ?? null;
}
return { getMyBase, getLockBtn };
})();
let _lockActivatedAt = 0;
let _lockDuration = 0;
function triggerLock() {
const room = _getRoom();
if (!room) return false;
_rawSend(room)('activateLockdown');
const now = Date.now();
if (_roomJoinTime) {
_log('lock', 'first lock ' + (now - _roomJoinTime) + 'ms after join');
_dbgLog('room', 'first-lock', { msAfterJoin: now - _roomJoinTime });
_roomJoinTime = 0;
_lastIntruderPosTs = 0;
if (typeof _getEnemyHolder !== 'undefined' && _getEnemyHolder.clear) _getEnemyHolder.clear();
if (typeof _getBasesManager !== 'undefined' && _getBasesManager.clear) _getBasesManager.clear();
}
return true;
}
let lastLockCheck = 0;
let _lastIntruderPosTs = 0;
const _clearGameCaches = (full) => {
_getNetworkManager.clear();
_getBasesManager.clear();
_getPetTycoon.clear(); _getEscapeTsunami.clear();
_findPetsManager.clear(); _getLockdownMgr.clear(); _getRollManager.clear(); _getSwordVipManager.clear(); _getEscapeVipManager.clear(); _getSwordMobsManager.clear();
if (full) {
_getEnemyHolder.clear(); _getPopup.clear();
if (_stealRetryTimer) { clearInterval(_stealRetryTimer); _stealRetryTimer = null; }
if (_stealPollTimer) { clearInterval(_stealPollTimer); _stealPollTimer = null; }
_snipeStealPos = null;
_snipe.freezeStealActive = false;
_snipe.freezeUntil = 0;
_snipe.freezeStartedAt = 0;
_carryTuneHooked = false; _overlayMgr = null; _stopCarryTune(); _carryTune.resetCache();
_recentlySnipedBases.clear();
resetAntiKnockback();
}
_serverLockedSessions.clear();
_serverLockdownUntil.clear();
_baseLockStarts.clear();
_baseEntryTimes.clear();
_baseLockEnd.clear();
_lockAbortSkip.clear();
_baseLastLockedAt.clear();
_baseExplicitUnlock.clear();
_baseLeftAt.clear();
_lockBlockLogged.clear();
_lockGraceLogged.clear();
petSpawnData.clear();
_lockDataReceived = false;
_lastLockDataTs = 0;
_snipeRoomJoinTime = 0;
_snipeRoomProven = false;
_myPetTokens = new Set(); _myPetTokensTime = 0;
_snipeWasHolding = false;
_lastTotalPets = 0;
_stablePetsTicks = 0;
_snipePetActionActive = false;
_snipeActionStartedAt = 0;
_snipePreInvis = null;
_snipeDropInProgress = false;
_usedSlots.clear();
_wavesHoldPlace = false;
_snipeHopNoMatchStart = 0;
_snipeLockWaitStart = 0;
_snipeLockWaitUntil = 0;
};
let _walkHomePhase = null;
let _mlLastP = null;
let _carrySpeedCap = null;
(function _hookProtoEarly() {
const _nm = _getNetworkManager();
const _p = _nm ? Object.getPrototypeOf(_nm) : null;
if (_p && !_p[_SYM_DCHK]) {
_p[_SYM_DCHK] = true;
const _orig = _p.handleDisconnection;
const _origStr = _origFpToString.call(_orig);
_p.handleDisconnection = function(a) {
const isBan = a && (a.code === 4024 || a.code === 4025 || /ban/i.test(a.message || ''));
if (isBan) { _handleBan(this.gameMode || window.GameGlobals?.gameMode || 'PetTycoon'); return; }
return _orig ? _orig.call(this, a) : undefined;
};
_spoofMap.set(_p.handleDisconnection, _origStr);
if (!_p._dpFixed) {
_p._dpFixed = true;
const _origDP = _p.deletePlayers;
const _origDPStr = _origFpToString.call(_origDP);
_p.deletePlayers = function() {
var _arr = this.playerArray;
if (_arr && _arr.length > 0) {
for (var _i = _arr.length - 1; _i >= 0; _i--) {
try { var _ent = _arr[_i]; if (_ent) _ent.destroy(); } catch (_) {}
}
}
this.playerArray = [];
};
_spoofMap.set(_p.deletePlayers, _origDPStr);
}
}
if (!_getNetworkManager() || !_getNetworkManager().__proto__?.[_SYM_DCHK]) setTimeout(_hookProtoEarly, 1);
})();
(function _fixClearGameMode() {
try {
const _app = W.pc?.app;
if (!_app) { setTimeout(_fixClearGameMode, 50); return; }
if (_app.scenes && !_app.scenes._lshHooked) {
_app.scenes._lshHooked = true;
var _origLSH = _app.scenes.loadSceneHierarchy;
var _origLSHStr = _origFpToString.call(_origLSH);
var _lshCount = 0;
_app.scenes.loadSceneHierarchy = function(_scene, _cb) {
_lshCount++;
if (_lshCount > 1 && _ban.autoRejoinPending) {
if (_cb) _cb(new Error('blocked'), null);
return;
}
return _origLSH.call(this, _scene, _cb);
};
_spoofMap.set(_app.scenes.loadSceneHierarchy, _origLSHStr);
}
const _gm = _app.root?.find(function(e) { return e.script?.gameManager; })?.[0]?.script?.gameManager;
if (!_gm) { setTimeout(_fixClearGameMode, 50); return; }
const _proto = Object.getPrototypeOf(_gm);
if (_proto && !_proto._ccmFixed) {
_proto._ccmFixed = true;
const _orig = _proto.clearCurrentGameMode;
const _origCCGMStr = _origFpToString.call(_orig);
_proto.clearCurrentGameMode = function() {
var _c = this.gameModeHolder?.children;
if (_c && _c.length > 0) {
for (var _i = _c.length - 1; _i >= 0; _i--) {
try { _c[_i].destroy(); } catch (_) {}
}
}
};
_spoofMap.set(_proto.clearCurrentGameMode, _origCCGMStr);
const _origIGM = _proto.initGameMode;
const _origIGMStr = _origFpToString.call(_origIGM);
_proto.initGameMode = function(_mode) {
if (_ban.autoRejoinPending && !_ban.detected) {
_ban.autoRejoinPending = false;
_ban.forceRejoinRoomId = null;
_ban.forceRejoinMode = null;
_ban.autoRejoinFails = 0;
}
_mode = _resolveJoinMode(_mode);
return _origIGM.call(this, _mode);
};
_spoofMap.set(_proto.initGameMode, _origIGMStr);
}
} catch (_) { setTimeout(_fixClearGameMode, 50); }
})();
function _doReconnect(mode) {
mode = _snipeModeToGame(mode) || 'PetTycoon';
_getNetworkManager.clear();
const freshNm = _getNetworkManager();
if (freshNm?.room) return;
const _nowG = Date.now();
if (_nowG - _lastReconnectAt < _RECONNECT_MIN_GAP) return;
_lastReconnectAt = _nowG;
_setHopReason('reconnect');
try { freshNm.lastDisconnection = 0; } catch (_) {}
try { freshNm.isConnecting = false; } catch (_) {}
try { freshNm.leaveOnPurpose = Date.now(); } catch (_) {}
const app = W.pc?.app;
if (!app) return;
_clearGameCaches(true);
try { _overlayMgr = app.root?.find(e => e.script?.overlayManager)?.[0]?.script?.overlayManager ?? null; } catch (_) {}
if (_overlayMgr?.disconnectionEntity) _overlayMgr.disconnectionEntity.enabled = false;
try { freshNm.gameMode = mode; } catch (_) {}
if (W.GameGlobals) W.GameGlobals.gameMode = mode;
try { const _h = app.root?.findByName('GameManager')?.script?.gameManager?.gameModeHolder; if (!_h?.children?.length) _loadGameModeMap(mode).catch(() => {}); } catch (_) {}
try { freshNm.connectToColyseus(); } catch (_) {}
setTimeout(() => { try { const _n = _getNetworkManager(); if (_n) _n.leaveOnPurpose = false; } catch (_) {} }, 3000);
}
function _handleBan(mode) {
_ban.detected = true;
_ban.autoRejoinPending = true;
_saveBanIp();
setTimeout(function() { _ban.autoRejoinPending = false; }, 30000);
_showBanVpnDialog();
}
function _scheduleReconnect(mode, dcRoomId) {
if (_probeInProgress) {
try { if (typeof _probeRooms === 'function' && _probeRooms.abort) _probeRooms.abort(); } catch (_) {}
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
}
if (_ban.autoRejoinFails > 5) { _ban.autoRejoinFails = 0; return; }
const backoff = Math.min(900 + _ban.autoRejoinFails * 1200, 8000) + Math.random() * 500;
_ban.autoRejoinFails++;
_ban.autoRejoinPending = true;
if (dcRoomId) { _ban.forceRejoinRoomId = dcRoomId; _ban.forceRejoinMode = _snipeModeToGame(mode); }
setTimeout(() => {
if (!_ban.autoRejoinPending) return;
_ban.autoRejoinPending = false;
_doReconnect(mode);
}, backoff);
}
let _noRoomWatch = { timer: null, attempts: 0, connectSince: 0 };
let _lastReconnectAt = 0;
const _RECONNECT_MIN_GAP = 1500;
const _NO_ROOM_RETRY_MAX = 6;
const _NO_ROOM_CONNECT_CAP = 15000;
const _NO_ROOM_SLOW_MS = 60000;
function _clearNoRoomWatch() {
if (_noRoomWatch.timer) { clearTimeout(_noRoomWatch.timer); _noRoomWatch.timer = null; }
_noRoomWatch.attempts = 0;
_noRoomWatch.connectSince = 0;
}
function _scheduleNoRoomWatchdog() {
if (_noRoomWatch.timer) clearTimeout(_noRoomWatch.timer);
const _slow = _noRoomWatch.attempts >= _NO_ROOM_RETRY_MAX;
const _delay = _slow ? _NO_ROOM_SLOW_MS : (_noRoomWatch.attempts === 0 ? 4000 : Math.min(4000 + _noRoomWatch.attempts * 2000, 12000));
_noRoomWatch.timer = setTimeout(() => {
_noRoomWatch.timer = null;
if (_hopInProgress || _rrRecovering || _ban.detected || _ban.autoRejoinPending) { _noRoomWatch.attempts = 0; return; }
_getNetworkManager.clear();
const _nmW = _getNetworkManager();
if (_nmW?.room) { _clearNoRoomWatch(); return; }
const _modeW = window.GameGlobals?.gameMode || _nmW?.gameMode || 'PetTycoon';
const _nowW = Date.now();
if (_nmW?.isConnecting) {
if (!_noRoomWatch.connectSince) _noRoomWatch.connectSince = _nowW;
if (_nowW - _noRoomWatch.connectSince < _NO_ROOM_CONNECT_CAP) {
_scheduleNoRoomWatchdog();
return;
}
_noRoomWatch.connectSince = 0;
} else {
_noRoomWatch.connectSince = 0;
}
if (_noRoomWatch.attempts < _NO_ROOM_RETRY_MAX) _noRoomWatch.attempts++;
_dbgLog('room', _noRoomWatch.attempts >= _NO_ROOM_RETRY_MAX ? 'no-room-slow' : 'no-room-recover', { mode: _modeW, connecting: !!_nmW?.isConnecting, attempt: _noRoomWatch.attempts }, 'warn');
try { _doReconnect(_snipeModeToGame(_modeW) || 'PetTycoon'); } catch (_) {}
_scheduleNoRoomWatchdog();
}, _delay);
}
function hookAntiDisconnect() {
const nm = _getNetworkManager();
const room = nm?.room;
if (!room) return;
if (room[_SYM_SEND]) return;
room[_SYM_SEND] = true;
_ban.lastRoomId = room.roomId || null;
_ban.autoRejoinPending = false;
_ban.autoRejoinFails = 0;
_ban.autoRejoinLastSuccess = Date.now();
try { nm.leaveOnPurpose = false; } catch (_) {}
if (!nm[_SYM_SEND]) {
nm[_SYM_SEND] = true;
var _origJoinByMode = nm.joinByMode;
_hookProp(nm, 'joinByMode', { joinByMode(mode) {
if (_ban.forceRejoinRoomId) {
if (mode !== _ban.forceRejoinMode) {
_ban.forceRejoinRoomId = null;
_ban.forceRejoinMode = null;
_ban.autoRejoinPending = false;
return _origJoinByMode.call(this, mode);
}
var roomId = _ban.forceRejoinRoomId;
_ban.forceRejoinRoomId = null;
_ban.forceRejoinMode = null;
return this.forceJoinById(roomId);
}
return _origJoinByMode.call(this, mode);
} }.joinByMode);
}
const origSend = room.send.bind(room);
room[_SYM_ORIG] = origSend;
let _lastRewriteLog = 0;
let _lastSendCap = 0;
let _lastPPos = null;
let _lastPLog = 0;
const _sendP = (msg) => {
if (msg && typeof msg.x === 'number' && typeof msg.z === 'number') {
const _cn = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
const _hold = _pgHolding();
if (_hold && _mlLastP) {
const _dtB = Date.now() - _mlLastP.t;
_carrySpeedCap = 500 / Math.max(_dtB, 110);
} else {
_carrySpeedCap = null;
}
if (_hold && _lastPPos) {
const _d = Math.hypot(msg.x - _lastPPos.x, msg.z - _lastPPos.z);
const _n = Date.now();
let _ex = null, _ez = null, _ed = null;
try { const _pE = getPlayer()?.getPosition?.(); if (_pE) { _ex = _pE.x; _ez = _pE.z; _ed = Math.hypot(msg.x - _pE.x, msg.z - _pE.z); } } catch (_) {}
if (_d > 3 && _n - _lastPLog > 400) {
_lastPLog = _n;
_dbgLog('tp', 'p-send', { jump: _mr2(_d), fromX: _mr2(_lastPPos.x), fromZ: _mr2(_lastPPos.z), toX: _mr2(msg.x), toZ: _mr2(msg.z), y: _mr2(msg.y), w: _mr2(msg.w), noclip: !!_feats.noclip, rewrite: !!_snipeStealPos, hold: 1, desync: _ed != null ? _mr2(_ed) : null, ex: _ex != null ? _mr2(_ex) : null, ez: _ez != null ? _mr2(_ez) : null, room: _cn }, 'warn');
} else if (_n - _lastPLog > 1000) {
_lastPLog = _n;
_dbgLog('tp', 'p-stream', { x: _mr2(msg.x), z: _mr2(msg.z), y: _mr2(msg.y), w: _mr2(msg.w), jump: _mr2(_d), noclip: !!_feats.noclip, rewrite: !!_snipeStealPos, hold: 1, desync: _ed != null ? _mr2(_ed) : null, ex: _ex != null ? _mr2(_ex) : null, ez: _ez != null ? _mr2(_ez) : null, room: _cn }, 'debug');
}
}
_lastPPos = { x: msg.x, z: msg.z, t: Date.now() };
_mlLastP = { x: msg.x, y: msg.y, z: msg.z, w: msg.w, t: Date.now() };
}
return origSend('p', msg);
};
_hookProp(room, 'send', (type, message) => {
if (type !== 'p' && room.name === 'SwordRNG') {
const _scNow = Date.now();
if (_scNow - _lastSendCap > 250) {
_lastSendCap = _scNow;
_dbgLog('net', 'send-capture', { type, msg: message });
}
}
if (type === 'p' && message && _snipeStealPos) {
const _rwNow = Date.now();
if (_rwNow - _lastRewriteLog > 1000) {
_lastRewriteLog = _rwNow;
_dbgLog('snipe', 'pos-rewrite', { x: _mr2(_snipeStealPos.x), y: _mr2(_snipeStealPos.y), z: _mr2(_snipeStealPos.z), freeze: Date.now() < _snipe.freezeUntil, hold: _pgHolding() });
}
return _sendP({ x: _snipeStealPos.x, y: _snipeStealPos.y, z: _snipeStealPos.z, w: message.w });
}
if (type === 'p' && message && _snipeMode() === 'steal' && message.y >= 19) {
return _sendP({ x: message.x, y: 10, z: message.z, w: message.w });
}
if (type === 'p' && message && _feats.ghostMode && !_ghostSuppressed) {
if (_wavesGhostPos) {
const _gwNow = Date.now();
if (_gwNow - _lastRewriteLog > 1000) {
_lastRewriteLog = _gwNow;
_dbgLog('snipe', 'pos-rewrite', { x: _mr2(_wavesGhostPos.x), y: _mr2(_wavesGhostPos.y), z: _mr2(_wavesGhostPos.z), via: 'waves-ghost' });
}
return _sendP({ x: _wavesGhostPos.x, y: _wavesGhostPos.y, z: _wavesGhostPos.z, w: message.w });
}
}
if (type === 'p' && message) return _sendP(message);
return origSend(type, message);
}, true);
try {
room.onMessage('petDropped', msg => {
if (msg?.stealerSessionId !== room.sessionId) return;
const _ctx = getPlayer()?.getPosition?.();
const _pe = _ctx ? { x: _ctx.x, z: _ctx.z, y: _ctx.y } : null;
const _ds = _mlLastP && _pe ? Math.hypot(_mlLastP.x - _pe.x, _mlLastP.z - _pe.z) : null;
_dbgLog('snipe', 'drop-moment', { phase: _walkHomePhase, px: _pe ? _r1(_pe.x) : null, pz: _pe ? _r1(_pe.z) : null, py: _pe ? _r1(_pe.y) : null, lastX: _mlLastP ? _r1(_mlLastP.x) : null, lastZ: _mlLastP ? _r1(_mlLastP.z) : null, lastY: _mlLastP ? _r1(_mlLastP.y) : null, w: _mlLastP ? _mr2(_mlLastP.w) : null, desync: _ds != null ? _mr2(_ds) : null, stillHolding: _pgHolding(), room: getCachedRoomName() || null }, 'warn');
});
} catch (_) {}
_playerCache = null; _playerCacheTime = 0;
_clearGameCaches(false);
const _hopG = Date.now() < _targetedHopGrace ? Math.min(snipeCfg.steal.joinGrace || 0, 2) : (snipeCfg.steal.joinGrace || 0);
if (_hopG > 0) _joinGraceUntil = Date.now() + _hopG * 1000;
_pendingBaseCapture = true;
_roomJoinTime = Date.now();
_snipeRoomJoinTime = Date.now();
_myPetTokens = new Set(); _myPetTokensTime = 0;
_fountainLoggedRoom = false;
_ban.detected = false;
if (SPEED_DEFAULT !== 7) {
setTimeout(() => { W.pc?.app?.fire('PlayerController:SetSpeed', _snipeMode() === 'steal' ? Math.min(SPEED_DEFAULT, 9) : SPEED_DEFAULT); }, 800);
}
if (room[_SYM_GHOST]) return;
room[_SYM_GHOST] = true;
_setReticleVisible(false);
let _lastWsMsg = Date.now();
let _lastPositions = 0;
let _missingFromStateStart = 0;
const _roomJoinedAt = Date.now();
const _wsObj = room.connection?.transport?.ws ?? room.connection?.ws;
if (_wsObj) {
const _origWsMsg = _wsObj.onmessage;
_wsObj.onmessage = function(e) {
_lastWsMsg = Date.now();
return _origWsMsg?.call(this, e);
};
}
room.onMessage('positions', (data) => {
if (!Array.isArray(data) || data.length === 0) return;
if (data.length > 1 || data[0]?.sessionId === room.sessionId) _lastPositions = Date.now();
});
const _triggerReconnect = (reason) => {
clearInterval(_ghostCheckIv); _ghostCheckIv = null;
_dbgLog('room', 'ghost-trigger', { reason, wsSilence: Date.now() - _lastWsMsg }, 'warn');
const ws = _wsObj;
try {
if (ws && ws.readyState <= 1) { ws.close(1000); return; }
} catch (_) {}
const nm2 = _getNetworkManager();
if (nm2) { nm2.isActive = false; nm2.room = null; nm2.handleDisconnection(1001); }
};
let _ghostWasIdle = false;
let _ghostCheckIv = setInterval(() => {
const cnm = _getNetworkManager();
if (!cnm || cnm.room !== room || !cnm.isActive) { clearInterval(_ghostCheckIv); _ghostCheckIv = null; return; }
let _ghostIdle = false;
try {
const _gS = _sc();
const _gBusy = _snipePetActionActive || !!_stealRetryTimer || _hopInProgress || _rrRecovering;
_ghostIdle = !!(_gS?.active && _gS?.filter && _gS?.filter.trim()) && !_gBusy;
} catch (_) { _ghostIdle = false; }
if (_ghostIdle) { _ghostWasIdle = true; return; }
if (_ghostWasIdle) { _ghostWasIdle = false; _lastWsMsg = Date.now(); _lastPositions = Date.now(); }
const now = Date.now();
const wsSilence = now - _lastWsMsg;
const sinceJoin = now - _roomJoinedAt;
const sid = room.sessionId;
const sPlayer = room.state?.players?.get?.(sid) ?? room.state?.players?.[sid];
if (wsSilence > 8000) { _triggerReconnect('ws-silence'); return; }
if (sinceJoin > 5000) {
if (_lastPositions > 0) {
const posAge = now - _lastPositions;
if (posAge > 8000 && wsSilence < 8000) { _triggerReconnect('stale-positions'); return; }
}
if (!sPlayer) {
if (!_missingFromStateStart) _missingFromStateStart = now;
if (now - _missingFromStateStart > 2000) { _triggerReconnect('missing-player'); return; }
} else {
if (_missingFromStateStart) _missingFromStateStart = 0;
}
}
}, 1000);
try {
if (nm.handleDisconnection && !Object.prototype.hasOwnProperty.call(nm, _SYM_DCHK)) {
nm[_SYM_DCHK] = true;
try {
for (const _k of Object.getOwnPropertyNames(nm)) {
if (/^interval\d+users/i.test(_k) && typeof nm[_k] === 'number') {
clearInterval(nm[_k]);
nm[_k] = -1;
}
}
const _nmProto = Object.getPrototypeOf(nm);
for (const _k of Object.getOwnPropertyNames(_nmProto)) {
if (typeof _nmProto[_k] === 'function') {
try {
if (_origFpToString.call(_nmProto[_k]).includes('/v1/store/orders')) {
const _banStr = _origFpToString.call(_nmProto[_k]);
const _noop = { [_k]() {} }[_k];
_nmProto[_k] = _noop;
_spoofMap.set(_noop, _banStr);
break;
}
} catch {}
}
}
} catch {}
const origDC = nm.handleDisconnection.bind(nm);
_hookProp(nm, 'handleDisconnection', (a) => {
if (_stealRetryTimer) { clearInterval(_stealRetryTimer); _stealRetryTimer = null; }
const isBan = a && (a.code === 4024 || a.code === 4025 || /ban/i.test(a.message || ''));
const isNetErr = a && typeof a.message === 'string' && /networkerror|failed to fetch|GM_xmlhttp/i.test(a.message);
const wasIntentional = nm.leaveOnPurpose;
const mode = window.GameGlobals?.gameMode || nm.gameMode || 'PetTycoon';
const dcRoomId = nm.room?.roomId || _ban.lastRoomId;
const result = origDC(a);
if (isBan) { return result; }
if (!wasIntentional && !_ban.autoRejoinPending) {
const isKick = a && typeof a === 'object' && typeof a.code === 'number' && !isNetErr;
const timeSinceSuccess = Date.now() - _ban.autoRejoinLastSuccess;
if (timeSinceSuccess < 5000) _ban.autoRejoinFails++;
else _ban.autoRejoinFails = 0;
if (isKick) { _ban.forceRejoinRoomId = null; _ban.forceRejoinMode = null; }
_scheduleReconnect(mode, isKick ? null : dcRoomId);
}
return result;
}, true);
}
} catch (_nmHookErr) {}
if (_feats.antiKnockback) {
room.onMessage('gotAttacked', () => {});
}
setTimeout(() => {
if (_feats.invisible) { _toggleInvisible(true); _updateInvisEffect(true); }
if (_feats.autoFountain) _fountainStart();
_fountainHookExpiry(room);
}, 2000);
let _stealReturnTimer = null;
const _stolenPendingClaim = new Map();
function _stealReturnHome() {
if (!_feats.ghostMode) return;
const rawSend = _rawSend(room);
if (_stealReturnTimer) {
clearTimeout(_stealReturnTimer);
}
_stealReturnTimer = setTimeout(() => {
_stealReturnTimer = null;
const player = getPlayer();
if (!player) { _dbgLog('snipe', 'return-no-player', null, 'warn'); return; }
const pt = _getPetTycoon();
const et = _getEscapeTsunami();
if (!pt?.isHoldingPet && !et?.isHoldingPet) { _dbgLog('snipe', 'return-not-holding', null, 'info'); return; }
_wavesGhostPos = null;
backPos = capturePos(player);
const app = W.pc?.app;
if (app) app.fire('Player:TeleportToPersonalSpawn');
setTimeout(() => {
const pos = player.getPosition();
rawSend('p', { x: pos.x, y: pos.y, z: pos.z, w: 0 });
}, 100);
_log('info', 'steal return: teleported to base');
_dbgLog('snipe', 'return-to-base');
}, 10000);
}
let _lastPetSpawnScan = 0;
const _onPetsSpawn = data => {
const _now = Date.now();
if (_now - _lastPetSpawnScan < 200) return;
_lastPetSpawnScan = _now;
if (_triggerSnipeScan) _triggerSnipeScan();
};
room.onMessage('petsSpawn', _onPetsSpawn);
room.onMessage('petsBaseSpawn', _onPetsSpawn);
room.onMessage('petClaimed', msg => {
const sid = room.sessionId;
if (msg?.stealerSessionId !== sid && msg?.sessionId !== sid) return;
const _claimedTok = msg?.petToken != null ? String(msg.petToken) : '';
if (_claimedTok) _pendingSnipeTokens.delete(_claimedTok);
if (_claimedTok && _stolenPendingClaim.has(_claimedTok)) {
_stolenPendingClaim.delete(_claimedTok);
}
_dbgLog('snipe', 'msg-petClaimed', { tok: _claimedTok, stealer: msg?.stealerSessionId, sess: msg?.sessionId, elapsed: _lastStealAt ? Date.now() - _lastStealAt : null, stillHolding: _pgHolding() });
_setSnipeCooldown(4000);
});
room.onMessage('petHeld', msg => {
if (msg?.holderSessionId === room.sessionId) _snipeRoomProven = true;
if (msg?.holderSessionId === room.sessionId && msg.petData) {
_dbgLog('snipe', 'pet-held', { isEgg: msg.petData.isEgg, rarity: msg.petData.rarity, name: msg.petData.name, elapsed: _lastGrabTime ? Date.now() - _lastGrabTime : null });
if (msg.petData.isEgg && (msg.petData.rarity === 'EXCLUSIVE' || msg.petData.rarity === 'QUANTUM') && _pendingSnipeTokens.has(String(msg.petToken))) {
_pendingSnipeTokens.delete(String(msg.petToken));
}
}
});
room.onMessage('petReturnedToBase', msg => {
const _baseTok = msg?.petToken != null ? String(msg.petToken) : '';
if (_baseTok) {
_stolenPendingClaim.delete(_baseTok);
_pendingSnipeTokens.delete(_baseTok);
}
});
room.onMessage('petDropped', msg => {
if (msg?.stealerSessionId !== room.sessionId) return;
const _dropTok = msg?.petToken != null ? String(msg.petToken) : '';
const _dpP = getPlayer()?.getPosition?.();
let _dpB = null;
try { const _bm = _getBasesManager()?.activeBases; if (_bm && _preSnipeOwner) { for (const _bd of _bm) { if (_bd.data?.sessionId === _preSnipeOwner) { const _be = _bm._bases?.[_bd.data.id] || _bm.baseEntities?.[_bd.data.id]; if (_be) { const _bp = _be.getPosition?.(); if (_bp) _dpB = { x: Math.round(_bp.x), z: Math.round(_bp.z) }; } break; } } } } catch (_) {}
_dbgLog('snipe', 'msg-petDropped', { tok: _dropTok, elapsed: _lastStealAt ? Date.now() - _lastStealAt : null, stillHolding: _pgHolding(), stealer: msg?.stealerSessionId, sess: msg?.sessionId, keys: Object.keys(msg || {}), px: _dpP ? _r1(_dpP.x) : null, pz: _dpP ? _r1(_dpP.z) : null, bx: _dpB?.x ?? null, bz: _dpB?.z ?? null });
if (!_dropTok) return;
_stolenPendingClaim.delete(_dropTok);
_pendingSnipeTokens.delete(_dropTok);
});
room.onMessage('petStolen', msg => {
const _stolenTok = msg?.petToken != null ? String(msg.petToken) : '';
if (_stolenTok && msg?.stealerSessionId && msg.stealerSessionId !== room.sessionId) {
_stolenPendingClaim.delete(_stolenTok);
_pendingSnipeTokens.delete(_stolenTok);
}
if (msg.stealerSessionId === room.sessionId && msg.petData) {
_lastStealAt = Date.now();
_dbgLog('snipe', 'pet-stolen', { isEgg: msg.petData.isEgg, rarity: msg.petData.rarity, name: msg.petData.name, price: msg.petData.price, token: _stolenTok || null });
if (_stolenTok && _pendingSnipeTokens.has(_stolenTok)) {
_stolenPendingClaim.set(_stolenTok, msg.petData.price || msg.petData.coinPrice || 0);
}
}
if (msg?.stealerSessionId && msg.stealerSessionId !== room.sessionId && msg.petToken && _myPetTokens.has(msg.petToken)) {
_setSnipeCooldown(8000);
_log('info', 'our pet stolen by ' + msg.stealerSessionId + ' token: ' + msg.petToken);
_dbgLog('snipe', 'pet-stolen-by', { stealer: msg.stealerSessionId, token: msg.petToken });
_setSS(T.sniper_our_pet_stolen);
}
if (msg?.stealerSessionId && msg.stealerSessionId !== room.sessionId) return;
if (msg?.sessionId && msg.sessionId !== room.sessionId) return;
if (msg?.stealerSessionId === room.sessionId) _trySendProTip();
});
room.onMessage('modeNotification', msg => {
if (msg === 'PetClaimedSuccessfully' || (typeof msg === 'object' && msg.text === 'PetClaimedSuccessfully')) {
_snipeCooldownExtend(1000);
}
});
let _lastLockDataKey = '';
room.onMessage('baseLockdownTimers', msg => {
_serverLockedSessions.clear();
_serverLockdownUntil.clear();
_baseLockStarts.clear();
const now = Date.now();
const entries = Array.isArray(msg)
? msg
: msg && typeof msg === 'object'
? Object.values(msg)
: [];
const _curLockSids = [];
for (const entry of entries) {
if (!entry) continue;
const sid = typeof entry === 'object'
? (entry.sessionId || entry.ownerId || entry.playerId || entry.id)
: null;
if (!sid) continue;
_curLockSids.push(sid);
_serverLockedSessions.add(sid);
let secs = 0;
let dur = 0;
if (typeof entry === 'object') {
const raw = entry.lockdownTimeLeft ?? entry.timeLeft ?? entry.remaining ?? entry.seconds ?? entry.duration ?? entry.lockdown;
if (typeof raw === 'number' && isFinite(raw) && raw > 0) secs = raw;
const endRaw = entry.endTime ?? entry.endsAt ?? entry.endAt;
if (typeof endRaw === 'number' && isFinite(endRaw) && endRaw > now) {
const endSecs = (endRaw - now) / 1000;
if (endSecs > secs) secs = endSecs;
}
dur = entry.duration ?? entry.lockdownDuration ?? 0;
if (typeof dur !== 'number' || !isFinite(dur)) dur = 0;
}
if (secs > 0) { _serverLockdownUntil.set(sid, now + secs * 1000); _baseLockEnd.set(sid, now + secs * 1000); }
if (dur > 0 && secs > 0) {
_baseLockStarts.set(sid, now - (dur - secs) * 1000);
} else if (secs > 0) {
_baseLockStarts.set(sid, now);
}
_baseLastLockedAt.set(sid, now);
_baseExplicitUnlock.delete(sid);
}
const _lockKey = _curLockSids.length + ':' + _curLockSids.slice().sort().join(',');
if (_lockKey !== _lastLockDataKey) {
_lastLockDataKey = _lockKey;
_dbgLog('room', 'lock-data', { count: _curLockSids.length, sample: Array.isArray(msg) ? msg.slice(0, 2) : null });
}
_lastLockDataTs = Date.now();
if (!_lockDataReceived) {
_joinGraceUntil = Math.max(_joinGraceUntil, Date.now() + 1500);
}
_lockDataReceived = true;
});
room.onMessage('baseLockdownStart', msg => {
const sid = msg && typeof msg === 'object' ? (msg.sessionId || msg.ownerId || msg.id) : null;
if (!sid) return;
const _now2 = Date.now();
_serverLockedSessions.add(sid);
const _dur2 = Number(msg.duration ?? msg.lockdownDuration) || 60;
_serverLockdownUntil.set(sid, _now2 + _dur2 * 1000);
_baseLockStarts.set(sid, _now2);
_baseLastLockedAt.set(sid, _now2);
_baseExplicitUnlock.delete(sid);
_baseLockEnd.set(sid, _now2 + _dur2 * 1000);
_baseLeftAt.delete(sid);
_dbgLog('room', 'lock-start-ev', { sid }, 'debug');
});
room.onMessage('baseLockdownEnd', msg => {
const sid = msg && typeof msg === 'object' ? (msg.sessionId || msg.ownerId || msg.id) : null;
if (!sid) return;
const _endNow = Date.now();
const _expEnd = _baseLockEnd.get(sid) || _serverLockdownUntil.get(sid) || 0;
if (sid !== room.sessionId && _expEnd - _endNow > _EARLY_UNLOCK_MS) {
_baseLeftAt.set(sid, _endNow);
_dbgLog('room', 'lock-left-early', { sid, remainMs: _expEnd - _endNow }, 'warn');
}
_baseLockEnd.delete(sid);
_baseExplicitUnlock.add(sid);
_baseLastLockedAt.delete(sid);
_baseLockStarts.delete(sid);
_serverLockedSessions.delete(sid);
_serverLockdownUntil.delete(sid);
_dbgLog('room', 'lock-end-ev', { sid }, 'debug');
});
let _lastPosFleeCheck = 0;
room.onMessage('positions', posArr => {
if (!_feats.fleeOnIntruder || !_feats.autoLock || _hopInProgress) return;
const now = Date.now();
_lastIntruderPosTs = now;
if (now - _lastPosFleeCheck < 500) return;
_lastPosFleeCheck = now;
if (!Array.isArray(posArr)) return;
const myBase = getMyBase();
if (!myBase) return;
const bp = myBase.getPosition();
if (!bp) return;
_refreshMyPetTokens();
let anyHoldingOurs = false;
let intruder = null;
for (const e of posArr) {
if (e.sessionId === room.sessionId) continue;
if (Math.abs(e.x - bp.x) >= _BASE_HALF || Math.abs(e.z - bp.z) >= _BASE_HALF) continue;
const ps = room.state.players.get(e.sessionId);
if (ps?.isHoldingPet && ps.holdingPetToken && _myPetTokens.has(ps.holdingPetToken)) {
anyHoldingOurs = true;
break;
}
if (!intruder) intruder = { sid: e.sessionId, name: ps?.username || e.sessionId };
}
if (anyHoldingOurs) return;
if (intruder) {
_log('flee', 'intruder "' + intruder.name + '" via positions msg — hopping');
_dbgLog('room', 'flee-hop', { intruder: intruder.name, via: 'positions' }, 'warn');
performServerHop('PetTycoon', 'flee');
}
});
room.onMessage('lockdownActivated', duration => {
_lockActivatedAt = Date.now();
_lockDuration = (Number(duration) || 40) * 1000;
const myId = room?.sessionId;
if (myId) _baseLockStarts.set(myId, _lockActivatedAt);
});
room.onMessage('lockdownEnded', () => {
_lockActivatedAt = 0;
_lockDuration = 0;
if (!_feats.autoLock) return;
const rs = _rawSend(room);
rs('activateLockdown');
_log('lock', 'instant re-lock on lockdownEnded');
_dbgLog('room', 'instant-relock');
});
room.onMessage('triggerFunction', msg => {
if (!msg?.client || msg.client === room.sessionId) return;
if (msg.name !== 'Disable' && msg.name !== 'Enable') return;
const rn = room.name || _getNetworkManager()?.gameMode || '';
if (rn !== 'PetTycoon' && rn !== 'EscapeTsunami') {
if (!_lastTriggerSkipLog || Date.now() - _lastTriggerSkipLog > 10000) {
_lastTriggerSkipLog = Date.now();
_dbgLog('room', 'triggerFunction-skip', { user: msg.client, name: msg.name, room: rn }, 'debug');
}
return;
}
const nm2 = _getNetworkManager();
const enemy = nm2?.getPlayerById(msg.client);
if (!enemy) return;
const es = enemy.script?.enemy;
if (!es?.originEntity) return;
if (msg.name === 'Disable') {
es.originEntity.enabled = true;
_ghostifyEnemy(es.originEntity);
_log('info', 'anti-invis: ghosted ' + (enemy.username || msg.client));
_dbgLog('room', 'anti-invis-ghost', { user: enemy.username || msg.client }, 'warn');
} else {
_unghostifyEnemy(es.originEntity);
_log('info', 'anti-invis: restored ' + (enemy.username || msg.client));
_dbgLog('room', 'anti-invis-restore', { user: enemy.username || msg.client });
}
});
if (room.state?.players?.onRemove) {
room.state.players.onRemove((player, sessionId) => {
if (sessionId === room.sessionId) return;
_baseLeftAt.set(sessionId, Date.now());
_dbgLog('room', 'owner-left', { sid: sessionId }, 'warn');
});
}
room.onMessage('onRemovePlayer', msg => {
const sid = msg && typeof msg === 'object' ? (msg.sessionId || msg.playerId || msg.id) : null;
if (!sid || sid === room.sessionId) return;
_baseLeftAt.set(sid, Date.now());
_dbgLog('room', 'owner-left', { sid }, 'warn');
});
if (typeof room.onLeave === 'function') {
room.onLeave((code) => {
_autoDropTokens.clear();
_stolenPendingClaim.clear();
});
}
if (room.state?.players?.onAdd) {
room.state.players.onAdd((player, sessionId) => {
if (sessionId === room.sessionId) return;
if (!_sc().active) return;
const bm = _getBasesManager();
if (!bm?.activeBases) return;
setTimeout(() => snipeTick(), 500);
});
}
}
let _ghostActive = false;
let _wavesGhostPos = null;
let _ghostSuppressed = false;
let _snipeStealPos = null;
const GHOST_OPACITY = 0.25;
const INVIS_OPACITY = 0.3;
const { _ghostifyEnemy, _unghostifyEnemy, _updateCharTransparency, updateGhostEffect } = (() => {
function _ghostifyEnemy(origin) {
_eachMesh(origin, mi => {
_cloneMat(mi, _SYM_GHOST);
mi.material.blendType = W.pc.BLEND_NORMAL;
mi.material.opacity = 0.3;
mi.material.depthWrite = false;
mi.material.update();
});
}
function _unghostifyEnemy(origin) {
_eachMesh(origin, mi => { _restoreMat(mi, _SYM_GHOST); });
}
function _updateCharTransparency() {
const shouldFade = _ghostActive || _feats.invisible;
const opacity = !shouldFade ? 1.0 : (_feats.invisible ? INVIS_OPACITY : GHOST_OPACITY);
const mis = _collectCharMeshes();
if (!mis.length) return;
for (const mi of mis) {
if (opacity < 1.0) {
_cloneMat(mi, _SYM_MAT);
mi.material.blendType = W.pc.BLEND_NORMAL;
mi.material.opacity = opacity;
mi.material.depthWrite = false;
} else {
_restoreMat(mi, _SYM_MAT);
}
mi.material.update();
}
}
function updateGhostEffect() {
const pt = _getPetTycoon();
const inSteal = !!_getBasesManager()?.activeBases;
const shouldGhost = _feats.ghostMode && !_sc().active && (!inSteal && !!pt?.isHoldingPet || !!_wavesGhostPos);
if (shouldGhost === _ghostActive) return;
_ghostActive = shouldGhost;
_updateCharTransparency();
}
return { _ghostifyEnemy, _unghostifyEnemy, _updateCharTransparency, updateGhostEffect };
})();
let _xrayActive = false;
const _xrayEntityData = new WeakMap();
const { _xrayEnemy, _unxrayEnemy, _xrayAllEnemies, _clearAllXray, updateXrayEffect } = (() => {
function _getPlayerRole(sessionId) {
try {
const nm = _getNetworkManager();
const players = nm?.room?.state?.players;
if (!players) return null;
const p = players.get?.(sessionId);
if (!p) return null;
return p.isMurder === true ? 'murder' : 'civilian';
} catch (e) { return null; }
}
function _raycastOccluded(origin, target, enemy) {
try {
const rb = W.pc?.app?.systems?.rigidbody;
if (!rb) return true;
const dir = new W.pc.Vec3().sub2(target, origin);
const dist = dir.length();
if (dist < 0.01) return false;
dir.scale(1 / dist);
const start = new W.pc.Vec3().add2(origin, dir.clone().scale(0.3));
const end = new W.pc.Vec3().add2(start, dir.scale(dist + 2));
const hit = rb.raycastFirst(start, end);
if (!hit) return false;
let ent = hit.entity;
while (ent) {
if (ent === enemy) return false;
ent = ent.parent;
}
const hitDist = origin.distance(hit.point);
return hitDist < dist - 0.8;
} catch (e) { return true; }
}
function _occlusionRatio(enemy) {
try {
const cam = getCamera();
if (!cam) return 1;
const origin = cam.getPosition();
const base = enemy.getPosition();
if (!origin || !base) return 1;
const offsets = [
new W.pc.Vec3(0, 1.8, 0),
new W.pc.Vec3(0, 1.0, 0),
new W.pc.Vec3(0.3, 0.6, 0),
new W.pc.Vec3(-0.3, 0.6, 0),
new W.pc.Vec3(0, 0.0, 0),
new W.pc.Vec3(0, -0.6, 0),
new W.pc.Vec3(0, -1.0, 0),
];
let occluded = 0;
for (let i = 0; i < offsets.length; i++) {
const t = new W.pc.Vec3().add2(base, offsets[i]);
if (_raycastOccluded(origin, t, enemy)) occluded++;
}
return occluded / offsets.length;
} catch (e) { return 1; }
}
function _makeXrayMaterial(role, opacity) {
const mat = new W.pc.StandardMaterial();
mat.depthTest = false;
mat.depthWrite = false;
mat.blendType = W.pc.BLEND_NORMAL;
mat.opacity = Math.max(0.15, Math.min(0.85, opacity));
if (role === 'murder') {
mat.diffuse = new W.pc.Color(1, 0.08, 0.08);
mat.emissive = new W.pc.Color(1.2, 0.05, 0.05);
} else if (role === 'civilian') {
mat.diffuse = new W.pc.Color(0.08, 0.4, 1);
mat.emissive = new W.pc.Color(0.05, 0.3, 1.2);
} else {
mat.diffuse = new W.pc.Color(0.6, 0.6, 0.08);
mat.emissive = new W.pc.Color(0.4, 0.4, 0.05);
}
mat.update();
return mat;
}
function _xrayEnemy(entity) {
const sid = entity.sessionId;
const role = _getPlayerRole(sid);
const ratio = _occlusionRatio(entity);
if (ratio < 0.4) {
_unxrayEnemy(entity);
return;
}
let data = _xrayEntityData.get(entity);
if (!data) {
data = { mat: null, role };
_xrayEntityData.set(entity, data);
}
const targetOpacity = 0.15 + ratio * 0.7;
if (!data.mat || data.role !== role) {
if (data.mat) data.mat.destroy();
data.mat = _makeXrayMaterial(role, targetOpacity);
data.role = role;
const meshes = [];
_collectEntityMeshes(entity, meshes);
for (let i = 0; i < meshes.length; i++) {
const mi = meshes[i];
_saveOrigMat(mi, _SYM_XRAY);
mi.material = data.mat;
}
} else if (Math.abs(data.mat.opacity - targetOpacity) > 0.05) {
data.mat.opacity = targetOpacity;
data.mat.update();
}
}
function _unxrayEnemy(entity) {
const data = _xrayEntityData.get(entity);
const meshes = [];
_collectEntityMeshes(entity, meshes);
for (let i = 0; i < meshes.length; i++) {
_restoreMat(meshes[i], _SYM_XRAY);
}
if (data) {
if (data.mat) data.mat.destroy();
_xrayEntityData.delete(entity);
}
}
function _xrayAllEnemies() {
const nm = _getNetworkManager();
if (!nm) return;
const arr = nm.playerArray;
if (!arr || !arr.length) return;
const mySid = nm.sessionId;
for (let i = 0; i < arr.length; i++) {
const enemy = arr[i];
if (!enemy) continue;
const sid = enemy.sessionId;
if (!sid || sid === mySid) continue;
_xrayEnemy(enemy);
}
}
function _clearAllXray() {
const nm = _getNetworkManager();
if (!nm) return;
const arr = nm.playerArray;
if (!arr) return;
for (let i = 0; i < arr.length; i++) {
_unxrayEnemy(arr[i]);
}
_xrayActive = false;
}
function updateXrayEffect() {
const nm = _getNetworkManager();
const rn = nm?.room?.name;
const gm = nm?.gameMode;
const inInfection = rn === 'Infection' || gm === 'Infection';
const shouldXray = _feats.xrayInfection && inInfection;
if (inInfection && _feats.xrayInfection) {
const scene = W.pc?.app?.scene;
if (scene && scene.fog) {
scene.fog.type = W.pc.FOG_NONE || 'none';
}
const cam = getCamera();
if (cam && cam.camera && cam.camera.farClip < 8000) {
try { cam.camera.farClip = 8000; } catch (e) {}
}
}
if (!shouldXray && _xrayActive) {
_clearAllXray();
return;
}
if (shouldXray && !_xrayActive) {
_xrayActive = true;
}
if (_xrayActive) {
_xrayAllEnemies();
}
}
return { _xrayEnemy, _unxrayEnemy, _xrayAllEnemies, _clearAllXray, updateXrayEffect };
})();
let _proTipsCooldown = 0;
const _PT_COOLDOWN = 20000;
const _P = {
A: ['bro','he','she','they','this guy','someone','that dude','my guy','this person','homeboy','that one','mans','buddy','fella','this player','the guy','the one','that dude over there','this one','people','nobody','somebody','yall','anyone','who'],
B: ['moving','flying','zipping','zooming','gliding','sliding','running','speeding','warping','cruising','dashing','blinking','coasting','floating','drifting','snapping','hopping','skipping','jumping','bouncing','rolling','sailing','swooping','tearing','blasting','ripping','charging','jetting','surfing','spinning','flicking','flashing','zapping'],
C: ['like that','different','wild','mad quick','hella fast','weird','sus','strange','odd','unnaturally','impossibly','stupid fast','ridiculous','insane','mad','extra','abnormal','not normal','funny','interesting','peculiar','uncanny','off','eerie','bizarre','goofy','freaky','unreal','out of pocket','diabolical','devious'],
D: ['yo','wait','hold up','ok but','ayo','bruh','hey','guys','listen','dude','ok so','for real','btw','sheesh','wow','hm','hmm','uh','uhh','lmao','real talk','istg','based','true'],
E: ['stars','pets','gems','diamonds','coins','speed','points','levels','upgrades','unlocks','skins','items','loot','rewards','progress','rank','stats','achievements','power','wealth','the bag','resources','currency','the goods','inventory'],
F: ['fast','easy','broken','wild','goated','cracked','elite','different','special','advanced','upgraded','enhanced','modified','custom','premium','deluxe','turbo','boosted','buffed','juiced','loaded','stacked','maxed','optimized','tuned','patched','tweaked','adjusted','altered','improved','pro','expert','exclusive','secret'],
G: ['greasy fork','greasyfork','greasy fork org','greasyfork.org','the fork','g fork','greasy fork site','google','a google search','google it','a quick search','the search bar','search engine','quick search','the internet','the web','online','browser','the source'],
H: ['lol','fr','tbh','ngl','no cap','deadass','irl','rn','fr fr','trust','bet','swear','just sayin','not lying','straight up','honestly','period','facts','no joke','i promise','word','say less','big facts','true story','actual','legit','genuinely','literally','unironically','sincerely'],
I: ['this game','meeland','the lobby','this server','the game','here','this place','the room','our server','the mode','this mode','the round','the match','the run','our game','our room','the instance'],
J: ['lag','a glitch','my ping','desync','my game','a bug','server lag','a visual bug','packet loss','my connection','the server','my wifi','frame drop','my fps','rubberbanding','the netcode','my client','server issues','latency','a hiccup'],
K: ['goated','cracked','built different','elite','him','the best','top tier','S tier','the goat','unmatched','unstoppable','next level','peak','maximum','ultimate','final form','god mode','god tier','legendary','mythic','rare','special','one of one','exclusive','limited edition'],
L: ['search','check','try','get','grab','download','install','learn','study','investigate','research','explore','discover','hunt','locate','source','peep','scope','browse'],
M: ['no anticheat','no mods','no security','no bans','no moderation','nothing','zero protection','no filter','no checks','no limits','no rules','no oversight','no guardrails','no detection','no enforcement','no patrol','no watch','no monitor','no review','no scan','zero enforcement','no admins','no policing','no supervision','no reporting system'],
N: ['teleport','fly','glide','blink','zoom','speed through','phase','warp','ghost','dash','zip','snap','flash','flick','shift','vanish','appear','pop','materialize'],
O: ['wait','what','huh','yo','hold up','sheesh','wow','whoa','holy','yoo','ayo','bruh','bro','um','uhh','eh','oh','ah','jeez'],
P: ['vanilla','stock','default','basic','plain','standard','normal','regular','bare','clean','pure','fresh','untouched','unaltered','unmodded','original','base','factory settings','out of the box','day one','version one','first edition'],
Q: ['does anyone','has anyone','can someone','did anyone','anyone','who here','any of yall','anyone at all','anybody','someone','anyone else','who else','anyone know'],
R: ['if','once','when','soon as','after','the moment','if only','seeing as','considering','provided','assuming','supposing','in case'],
S: ['infinitely','dramatically','noticeably','significantly','exponentially','insanely','absurdly','unbelievably','ridiculously','laughably','vastly'],
T: ['found','discovered','stumbled on','came across','got','picked up','learned about','figured out','dug up','unearthed','located','acquired','obtained','secured','got their hands on'],
U: ['realize','understand','figure out','catch on','notice','tell','see','recognize','grasp','comprehend','get','pick up on','detect','spot'],
V: ['cant','wont','couldnt','wouldnt','dont even','never','barely','hardly','fail to','struggle to','simply cant','absolutely cannot','could never','will never','wont ever','refuse to','cant even','dont'],
W: ['rn','today','lately','recently','a minute ago','earlier','yesterday','last night','a second ago','all day','all week','the past hour','the past few days','in the last hour','just a bit ago','tonight'],
X: ['in here','on this server','around here','in game','in chat','in the room','nearby','on our server','in this lobby','on meeland','in the session','in our game','over here','in the area','locally'],
Y: ['imagine','what if','just think','consider','suppose','think about','visualize','just imagine','hypothetically'],
Z: ['no shot','get real','be fr','stop playing','cap','wild','insane','unreal','absurd','ridiculous','no way','youre joking','aint no way','i refuse to believe'],
};
const _pick = a => a[Math.random() * a.length | 0];
const _T = [
'D why are some people F while others are P H',
'D imagine being P when F exists H',
'D you over here P while A is F H',
'D the difference between P and F is real',
'D why bother with P when F exists H',
'everyone has the F except you',
'D you heard of the F tool H',
'D that F tool is how A B C H',
'D check out the F addon H',
'D theres this F mod for I H',
'D that F plugin works on I H',
'D the F tool everyone uses for I H',
'D theres this F addon that makes I F H',
'D that F patch is F H',
'D A is using the F mod H',
'D theres this F tool for I H',
'D that tool is how A B C H',
'D i heard theres something called m.e.s. H',
'D look up m.e.s. on G H',
'D search for "mes" H',
'D the meeland extended suite is F H',
'D anyone here use "mes" H',
'D who else uses "mes" in I H',
'D A is definitely using m.e.s. H',
'D "mes" works on I H',
'D mes is actually F H',
'D anyone tried the I tool H',
'D search for the I tool on G H',
'D theres a tool that makes I F H',
'D that tool is F H',
'D theres a tool on G H',
'D how do you use the tool in I H',
'D that tool works on I H',
'i found m.e.s. on G W',
'A told me about "mes" W',
'that tool is how A B C H',
'R you had it youd B C',
'Y using "mes" in I',
'Y having the F tool for I',
'playing without "mes" is like being P',
'D mes is the reason A B C H',
'D anyone know about the F tool H',
'D i seen A using "mes" H',
'D just L m.e.s. on G H',
'D you can L "mes" on G H',
'D "mes" is on G H',
'D anyone can L it on G H',
'D go L mes on G H',
'D the F tool is on G H',
'D L the tool on G and thank me later H',
'D the F tool is a L away on G H',
'D you can L the F tool on G H',
'D just L it its called m.e.s. H',
'D search G for "mes" H',
'D G has the F tool H',
'D finding m.e.s. on G is F H',
'D its easy to L mes on G H',
'D just search G for it H',
'D "mes" is on G rn H',
'D i got m.e.s. off G and its F H',
'D m.e.s. changed I for me H',
'D been using m.e.s. for weeks no issues H',
'D mes works on I no ban H',
'D everyone in I uses \'mes\' now H',
'D "mes" is why A B C H',
'D cant believe people still dont use it H',
'D mes is literally free on G H',
'D why would anyone play I without "mes" H',
'D "mes" updated recently its even better H',
'D the new mes update is F H',
'D "mes" has everything you need for I H',
'D i used to struggle in I before L ing it H',
'D "mes" made I fun again H',
'D theres this F tool everyone uses in I H',
'D that tool on G is F H',
'D the tool for I is free on G H',
'D i found a tool for I on G W',
'D that I tool makes the game F H',
'D just L that I tool on G H',
'D i was P until i found the tool on G H',
'D the F tool for I is on G H',
'D that F tool everyone uses is on G H',
'D theres this F mod that makes I easy H',
'D that addon from G is F H',
'D been using the F tool for months no ban H',
'D I has M so why not use the F H',
'D nobody gets banned for using "mes" in I H',
'D youre the only one without it in I H',
'D imagine still playing P I in current year H',
'D P players dont even know what theyre missing H',
'D the gap between m.e.s. users and P players is wild H',
'D once you L it you U why everyone uses it H',
'D mes users are S ahead of P players H',
'D i didnt believe the hype til i L ed "mes" H',
'D "mes" is basically required for I at this point H',
'D the devs know about it they dont care H',
'D "mes" been around forever and no bans H',
'D i know like 10 people using \'mes\' no ban H',
'D G has everything you need for I H',
'D the F tool is the first result on G H',
'D type I tool on G and its right there H',
'D the F tool has M detection H',
'D mes gets updated faster than I H',
'D "mes" discord has F support H',
'D "mes" has features the base game doesnt H',
'D with "mes" you can do anything in I H',
'D all the top players in I use "mes" H',
'D you think A is K without it H',
'D A would be P without "mes" H',
'D every F player in I is on "mes" H',
'D theres no reason not to use it in I H',
'D mes is safer than other F tools H',
'D "mes" has been safe for months H',
'D i switched from other F tools to m.e.s. H',
'D "mes" is the only F tool i trust H',
'D try \'mes\' and you U why everyone switched H',
'D one session with m.e.s. and you U H',
'D the first time you use "mes" is F H',
'D m.e.s. makes I feel like a different game H',
'D cant go back to P I after "mes" H',
'D P I feels broken after using "mes" H',
'D you dont U how limited P I is til you L mes H',
'D "mes" adds features that should be in I H',
'D I without \'mes\' is like playing a demo H',
'D why grind E when m.e.s. does it for you H',
'D "mes" saves hours of grinding in I H',
'D i maxed my E in one day with mes H',
'D "mes" is why everyone has max E now H',
'D you think A grinded for those E H',
'D A got all that E from "mes" H',
'D nobody earns E legit anymore they use "mes" H',
'D m.e.s. automates everything in I H',
'D you can afk with "mes" and still progress H',
'D been using \'mes\' while i sleep H',
'D "mes" does the work while you chill H',
'D L the tool that makes I play itself H',
'D the F tool everyone gatekeeping is "mes" H',
'D stop gatekeeping mes just tell them H',
'D nobody told me about m.e.s. i had to L it H',
'D someone finally told me about m.e.s. W H',
'D i wish someone told me about "mes" sooner H',
'D been gatekeeping mes but its too good H',
'D at this point just share the m.e.s. link H',
'D "mes" link is on G just L it H',
'D one search on G and your I experience changes H',
'D search I tool on G thank me later H',
'D the F thing on G works for I H',
'D G is full of F tools for I H',
'D half the lobby is using something from G H',
'D check G before playing any game H',
'D G has F stuff for every game including I H',
'D i always check G before grinding a game H',
'D G is the first place i look for I tools H',
'D if its not on G it doesnt exist H',
'D everything F for I comes from G H',
'D G is undefeated for I tools H',
'D i found more F stuff for I on G than anywhere H',
'D G has better I tools than the official store H',
'D skip the app store go to G for I tools H',
'D the official I store has nothing compared to G H',
'D everything on G for I is free too H',
'D why pay for E when G has F tools H',
'D free F tools on G beat any I purchase H',
'D spent money on I before i discovered G H',
'D havent spent a cent on I since finding G H',
'D G saved me so much money on I H',
'D "mes" is free on G why would you pay H',
'D the F tool on G costs nothing H',
'D that F tool on G changed my I experience H',
'D best things for I are free on G H',
'D stop struggling and L what everyone else uses H',
'D theres a reason everyone B C in I now H',
'D you think these players got F naturally H',
'D nobody is that F without help from G H',
'D the playing field is not level in I H',
'D either L the F or get left behind H',
'D adapt or stay P forever H',
'D P in I is basically hard mode H',
'D why play on hard mode when F exists H',
'D P players are a different breed H',
'D i was P for months before i saw the light H',
'D being P in I is a choice at this point H',
'D choose to be P or choose to be F H',
'D the F side of I is way more fun H',
'D once you cross over you V go back H',
'D theres two I the P one and the F one H',
'D you playing P I while everyone else on F I H',
'D hows the P I experience treating you H',
'D P I was fun til i saw what F I could do H',
'D seeing F I ruined P I for me H',
'D ignorance is bliss til you see the F H',
'D once you know about the F you V unknow it H',
'D the F knowledge changes everything H',
'D L what everyone else L ed and catch up H',
'D dont be the only P player in the lobby H',
'D imagine being the last P player in I H',
'D the last P player in I is gonna be you H',
'D everyone moved on from P I except you H',
'D P I is a ghost town everyone on F now H',
'D even casuals use the F now H',
'D when the F becomes the new P H',
'D P I is just the trial version H',
'D the devs expect you to use the F at this point H',
'D I is balanced around the F tools H',
'D game would be unplayable without the F H',
'D thank goodness for the F community H',
'D the F community keeps I alive H',
'D I wouldve quit without the F tools H',
'D i was about to quit I then i T the F H',
'D quit I for a year came back because of "mes" H',
'D mes made me enjoy I again H',
'D actually having fun in I thanks to m.e.s. H',
'D "mes" turned I from a chore into fun H',
'D grinding is for \'mes\' i just play now H',
'D let m.e.s. handle the grind you have fun H',
'D the game starts when you stop grinding H',
'D mes handles the boring part of I H',
'D focus on the fun parts let "mes" do the rest H',
'D "mes" is like having a teammate that never sleeps H',
'D "mes" does more in one night than you do in a week H',
'D wake up to max E every day with mes H',
'D my E went up overnight thanks to "mes" H',
'D "mes" been running all night look at my E H',
'D went from broke to stacked overnight with m.e.s. H',
'D this is what one night of \'mes\' looks like H',
'D results speak for themselves L mes H',
'D the proof is in your E L "mes" H',
'D look at my E and tell me m.e.s. doesnt work H',
'D my progress since getting m.e.s. is F H',
'D started "mes" a week ago look at me now H',
'D a week on mes vs a month of P grinding H',
'D one week of \'mes\' beats months of P H',
'D time is money and m.e.s. saves both H',
'D why waste time when m.e.s. exists H',
'D life is too short to grind P I H',
'D spend your time playing not grinding H',
'D "mes" gives you your life back H',
'D touch grass while "mes" plays for you H',
'D m.e.s. is the work life balance of I H',
'D work smart not hard L "mes" H',
'D working hard is for P players H',
'D smart players use the F and chill H',
'D big brain move is just L the F H',
'D the smartest thing i did in I was L mes H',
'D L ing \'mes\' was the best decision i made in I H',
'D no regrets L ing m.e.s. H',
'D only regret is not L ing m.e.s. sooner H',
'D wish i L ed "mes" day one H',
'D day one mes wouldve saved me so much time H',
'D if i could go back id L \'mes\' immediately H',
'D new players should L it before even starting I H',
'D L the F first then start playing I H',
'D tutorial should be how to L m.e.s. H',
'D step one L m.e.s. step two enjoy I H',
'D first thing i tell new I players is L "mes" H',
'D every new I player needs to know about mes H',
'D help the new players out tell them about "mes" H',
'D be a hero tell the lobby about m.e.s. H',
'D share the knowledge L "mes" H',
'D doing the lobby a favor go L "mes" H',
'D yall welcome in advance L mes on G H',
'D thank me later just L m.e.s. on G H',
'D future you will thank you for L ing "mes" H',
'D your future self is begging you to L "mes" H',
'D dont let future you regret not L ing "mes" H',
'D time is ticking go L mes H',
'D every second without "mes" is wasted H',
'D you could be F rn but youre still reading H',
'D less typing more L ing m.e.s. H',
'D stop reading chat and L "mes" already H',
'D chat can wait \'mes\' cant H',
'D the F wont L itself H',
'D nobody gonna L it for you H',
'D only you can L the F for yourself H',
'D take control of your I experience L "mes" H',
'D empower yourself L the F tool H',
'D be the change you want to see L mes H',
'D M in I is the wild west H',
'D I got M its actually funny H',
'D the M situation in I is real H',
'D i tested it M in I is true H',
'D can confirm M is real in I H',
'D i reported someone and nothing happened M H',
'D been doing F stuff for weeks M H',
'D M means anything goes in I H',
'D no consequences in I might as well F H',
'D when M why not use every F tool H',
'D M is basically an invitation H',
'D devs saying M without saying it H',
'D M is the green light for F H',
'D with M theres no reason to stay P H',
'D M removes the only argument against F H',
'D the only thing stopping you was fear M H',
'D M so stop being scared and L the F H',
'D nothing to lose L the F H',
'D zero risk all reward L "mes" H',
'D its not wrong if M H',
'D is it really wrong if M H',
'D M means its fair game H',
'D using F when M is just being efficient H',
'D M made the F a legitimate strategy H',
'D playing P when M is just stubborn H',
'D stubborn P players when M exists H',
'D pride is the only reason to stay P H',
'D theres no honor in P when M H',
'D honorable mention to P players yall wild H',
'D P players have my respect but not my time H',
'D respect the P hustle but im on that F timing H',
'D i was a P warrior once then i got smart H',
'D recovering P player best decision i made H',
'D ex P player checking in never going back H',
'D used to be P like you then i L ed the F H',
'D i remember being P those were dark times H',
'D my P days feel like a fever dream H',
'D looking back at P me like who was that H',
'D P me would be shocked at F me H',
'D P me could never imagine F me H',
'D the P to F pipeline is real H',
'D another one joins the F side H',
'D welcome to the F side H',
'D the F side is better anyway H',
'D we have F on this side H',
'D the grass is F er on this side H',
'D crossed over and never looking back H',
'D once you cross over the P world looks so F H',
'D seeing P gameplay after F is comedy H',
'D watching P players struggle is painful now H',
'D i feel bad for P players H',
'D P players dont even know theyre playing wrong H',
'D its sad watching P players grind H',
'D i just watch P players and smh H',
'D P players working overtime for nothing H',
'D all that effort when m.e.s. does it in minutes H',
'D hours of P grinding vs minutes of "mes" H',
'D the time comparison is embarrassing H',
'D P grindset vs F efficiency H',
'D its not grinding its the grind at this point H',
'D stop struggling and L the F already H',
'D end the struggle L mes H',
'D "mes" is the cure for I burnout H',
'D burnt out from grinding L "mes" H',
'D hate grinding love m.e.s. H',
'D grinding is a scam L "mes" H',
'D the grind is a lie L mes H',
'D you been lied to grinding is optional H',
'D nobody told you grinding is optional with "mes" H',
'D the secret is out grinding is dead H',
'D grinding died when m.e.s. dropped H',
'D "mes" killed the grind and im here for it H',
'D rip grinding you wont be missed H',
'D funeral for the grind "mes" killed it H',
'D pour one out for the grind gone but not forgotten H',
'D the grind had a good run but mes is better H',
'D evolution of I from grind to "mes" H',
'D we evolved past grinding H',
'D grinding is prehistoric L m.e.s. H',
'D welcome to the future its called "mes" H',
'D the future of I is here and its F H',
'D future proof your I experience with "mes" H',
'D stay ahead of the curve L "mes" H',
'D the curve is leaving you behind H',
'D dont get left behind the curve is moving H',
'D the meta shifted catch up H',
'D meta update L the F or drop ranks H',
'D patch notes: L \'mes\' or derank H',
'D new meta just dropped its called mes H',
'D meta slaves already on "mes" H',
'D following the meta means using m.e.s. H',
'D anti meta is just P cope H',
'D the P copium in this lobby is strong H',
'D i can smell the P copium H',
'D P copium is a hell of a drug H',
'D let me know when youre done coping H',
'D cope harder or L m.e.s. your choice H',
'D you can cope or you can L H',
'D coping takes more energy than L ing H',
'D just L it its less effort than coping H',
'D the mental gymnastics to stay P is wild H',
'D justifying P is more work than L ing "mes" H',
'D making excuses for P is exhausting H',
'D save your breath and L mes H',
'D all that typing couldve been one G search H',
'D you typed all that instead of L ing "mes" H',
'D "mes" download is shorter than your cope H',
'D downloading "mes" takes less time than this convo H',
'D by now you couldve installed m.e.s. already H',
'D mes install time: 2 minutes P cope time: forever H',
'D 2 min install vs eternal P struggle H',
'D the choice is obvious H',
'D its really that simple H',
'D simplicity itself L "mes" H',
'D one click on G changes everything H',
'D one decision separates P from F H',
'D one L away from a different I H',
'D the barrier to entry is one search on G H',
'D lowest barrier highest reward H',
'D easiest decision youll make today H',
'D easiest F youll ever get H',
'D getting F takes zero effort H',
'D zero effort maximum reward H',
'D literally just a few clicks H',
'D a few clicks separates you from F H',
'D clicks away from greatness H',
'D greatness awaits on G H',
'D your destiny is on G H',
'D G holds the key to F I H',
'D unlock F I with one G visit H',
'D the key is on G go get it H',
'D open the door L mes H',
'D door is open walk through H',
'D opportunity is knocking its "mes" H',
'D this is your sign to L m.e.s. H',
'D the universe wants you to L "mes" H',
'D fate brought you here to L "mes" H',
'D you didnt find this chat by accident H',
'D meant to be L mes H',
'D its destiny L "mes" H',
'D destined for F stop fighting it H',
'D stop fighting your F destiny H',
'D embrace the F within H',
'D you were always meant to be F H',
'D born to be F forced to be P H',
'D break free from P L m.e.s. H',
'D free yourself from the P chains H',
'D free yourself L "mes" H',
'D liberation is one G search away H',
'D liberate your I experience H',
'D free your mind the rest follows H',
'D open your mind to the F H',
'D expand your consciousness L "mes" H',
'D enlightenment is on G H',
'D achieve I enlightenment through mes H',
'D transcend P existence with "mes" H',
'D ascend to F with m.e.s. H',
'D ascension is real and its called "mes" H',
'D i ascended when i L ed "mes" H',
'D been on a higher plane since L ing mes H',
'D different dimension of I with "mes" H',
'D "mes" opens portals to F I H',
'D m.e.s. is the portal to real I H',
'D step through the portal L "mes" H',
'D the portal to F I is on G H',
'D G is the gateway to F I H',
'D walk through the gate L "mes" H',
'D the gate is open come through H',
'D we waiting for you on the F side H',
'D we saved you a spot in F H',
'D reservation for one in F I H',
'D F table for one ready when you are H',
'D pull up to F whenever H',
'D the F club is always accepting members H',
'D F club membership is free on G H',
'D no membership fee just one G search H',
'D free lifetime membership to F H',
'D one time initiation: L m.e.s. H',
'D the initiation is painless H',
'D painless transition to F H',
'D smooth transition to the F side H',
'D seamless upgrade from P to F H',
'D P to F pipeline has never been smoother H',
'D the P to F transition is butter smooth H',
'D zero friction P to F H',
'D frictionless F experience H',
'D buttery smooth F gameplay H',
'D F gameplay hits different H',
'D F gameplay is S better H',
'D the F difference is night and day H',
'D day and night difference with the F H',
'D you V believe the difference til you try H',
'D doubt it til you try it H',
'D everyone doubts til they try H',
'D skepticism disappears after one use H',
'D i was skeptical too then i L ed "mes" H',
'D former skeptic checking in \'mes\' is real H',
'D i doubted the F too now im a believer H',
'D from doubter to believer in one L H',
'D conversion complete L m.e.s. H',
'D join the converted L "mes" H',
'D the converted ones all say the same thing H',
'D every convert says why didnt i L sooner H',
'D the number one regret: not L ing sooner H',
'D universal experience: shouldve L ed earlier H',
'D we all said the same thing H',
'D we all been there shouldve L ed sooner H',
'D every F user has the same origin story H',
'D the origin story always starts with doubt H',
'D doubt then L then never go back H',
'D the three stages: doubt L believe H',
'D stage one doubt stage two G stage three F H',
'D you are at stage one right now H',
'D move to stage two L "mes" H',
'D progress to the next stage H',
'D level up your I journey H',
'D next level of I unlocked by "mes" H',
'D mes is the level up you need H',
'D the ultimate level up is m.e.s. H',
'D final form achieved with "mes" H',
'D final form requires "mes" H',
'D power up with mes H',
'D "mes" is the power up I needed H',
'D power level S with m.e.s. H',
'D power scaling in I is broken without "mes" H',
'D power creep is real m.e.s. keeps you relevant H',
'D stay relevant L "mes" H',
'D relevance in I requires the F H',
'D irrelevance is a choice stay P H',
'D choose relevance L the F H',
'D stay in the conversation L mes H',
'D npc behavior is staying P H',
'D main character energy comes from "mes" H',
'D be the main character L m.e.s. H',
'D npc or main character your choice H',
'D protagonist energy requires "mes" H',
'D side character vibes = P gameplay H',
'D side character arc ends when you L "mes" H',
'D your villain arc starts with mes H',
'D become the villain of I with "mes" H',
'D villain origin story: L ed m.e.s. H',
'D my villain origin story started on G H',
'D final boss status achieved via "mes" H',
'D A thinks they the final boss til "mes" H',
'D theres always a bigger F H',
'D i am the one who is F H',
'D say my name its mes H',
'D "mes" is the one who knocks H',
'D i am the one using m.e.s. H',
'D you think im F wait til you see "mes" H',
'D this isnt even F compared to mes H',
'D you havent seen F til you seen "mes" H',
'D what i do is nothing compared to "mes" users H',
'D mes users are on another level H',
'D A is F but \'mes\' users are F er H',
'D the F hierarchy goes P then F then "mes" H',
'D m.e.s. is the top of the F food chain H',
'D apex predator in I is m.e.s. user H',
'D mes users sit at the top of I H',
'D top of the pyramid is "mes" users H',
'D pyramid scheme but the product is free H',
'D its not a pyramid its a ladder and mes is top H',
'D climb the ladder L "mes" H',
'D the ladder is right there H',
'D start climbing H',
'D first rung of the ladder is G H',
'D just L "mes" on G its free H',
'D L m.e.s. on G thank me later H',
'D go L \'mes\' on G right now H',
'D you can L m.e.s. for free on G H',
'D L "mes" off G its F and free H',
'D get \'mes\' free from G no catch H',
'D L ing m.e.s. from G takes seconds H',
'D the "mes" download on G is free H',
'D search G for free \'mes\' H',
'D free m.e.s. on G no strings H',
'D G has "mes" completely free H',
'D \'mes\' costs nothing on G H',
'D G search "mes" its the first result H',
'D type \'mes\' on G its right there H',
'D one G search for m.e.s. changes I H',
'D the official "mes" is on G H',
'D only download \'mes\' from G H',
'D G is where everyone gets m.e.s. H',
'D i L ed "mes" from G W best thing ever H',
'D i got \'mes\' off G and its F H',
'D been using m.e.s. from G for weeks no issues H',
'D i found "mes" on G and never looked back H',
'D i wish i L ed \'mes\' from G sooner H',
'D someone told me m.e.s. was on G W H',
'D "mes" from G is safe no bans H',
'D \'mes\' on G has M H',
'D the G version of m.e.s. is safe H',
'D "mes" from G zero bans been using it H',
'D everyone gets "mes" from G H',
'D all the F players use \'mes\' from G H',
'D half the lobby got m.e.s. from G H',
'D Q got "mes" from G yet H',
'D if you havent L ed \'mes\' from G yet H',
'D honestly just L "mes" from G H',
'D not even gatekeeping \'mes\' is on G H',
'D real ones get m.e.s. from G H',
'D smartest thing i did was L "mes" from G H',
'D L \'mes\' on G and enjoy I H',
'D m.e.s. on G makes I actually fun H',
'D quit struggling L "mes" from G H',
'D \'mes\' from G is the only way to play I H',
'D G search m.e.s. you wont regret it H',
'D stop overthinking L m.e.s. on G H',
'D L "mes" on G takes one minute H',
'D G is the real source for \'mes\' H',
'D search I on G its right there H',
'D just search I on G H',
'D G type I first result H',
'D look up I on G H',
'D go to G and search I H',
'D G search I thank me later H',
'D I is on G just L it H',
'D one G search for I H',
'D G has I for free H',
'D search I on G takes seconds H',
'D find I on G it takes one search H',
'D G dot com search I done H',
'D its called "mes" look it up H',
'D search "mes" on G H',
'D just google "mes" its free H',
'D the tool is called "mes" btw H',
'D everyone uses "mes" in I now H',
'D look up "mes" on G thank me later H',
'D type "mes" on G first result H',
'D get "mes" from G its free H',
'D "mes" is on G go get it H',
'D i found "mes" on G W H',
'D its literally called "mes" H',
'D google "mes meeland" H',
'D "mes" changed I for me H',
'D just L "mes" from G H',
'D search G for "mes" H',
'D check out "mes" on G H',
'D "mes" is free on G no catch H',
'D been using "mes" for weeks H',
'D "mes" works on I no ban H',
'D anyone tried "mes" yet H',
'D the "mes" download is on G H',
'D go to G and search "mes" H',
'D "mes" made I fun again H',
'D tell everyone about "mes" H',
'D search for \'mes\' on G H',
'D its called \'mes\' try it H',
'D look up m.e.s. on G H',
'D m.e.s. is free on G H',
'D just get m.e.s. from G H',
'D everyone uses m.e.s. in I H',
'D m.e.s. download on G free H'
];
const _proTipSentMsgs = new Set();
let _lastProTipSendTime = 0;
function _addNoise(s) {
const capsR = Math.random();
if (capsR < 0.005) { s = s.toUpperCase(); }
else if (capsR < 0.42) { s = s.charAt(0).toUpperCase() + s.slice(1); }
else if (capsR < 0.48) {
const w = s.split(' ');
if (w.length > 1) {
const ri = (Math.random() * w.length | 0);
if (w[ri].length >= 4 && w[ri].length <= 6) w[ri] = w[ri].toUpperCase();
s = w.join(' ');
}
}
const punctR = Math.random();
if (punctR < 0.18) { } else if (punctR < 0.37) s += '.';
else if (punctR < 0.45) s += '!';
else if (punctR < 0.53) s += '?';
else if (punctR < 0.58) s += '..';
else if (punctR < 0.61) s += '...';
if (Math.random() < 0.03 && s.length > 4) {
const i = 1 + (Math.random() * (s.length - 2) | 0);
if (s[i] !== ' ' && s[i-1] !== ' ' && s[i] !== s[i-1]) {
s = s.slice(0, i-1) + s[i] + s[i-1] + s.slice(i+1);
}
}
if (Math.random() < 0.07) {
const w = s.split(' ');
const si = Math.random() * (w.length - 1) | 0;
const word = w[si];
if (word.length >= 4 && word.length <= 5 && Math.random() < 0.5) {
w[si] = word + word.charAt(word.length-1);
}
s = w.join(' ');
}
if (Math.random() < 0.12) {
const w = s.split(' ');
if (w.length > 2) {
const ci = 1 + (Math.random() * (w.length - 2) | 0);
if (!/[.!?,]$/.test(w[ci-1]) && !/^[A-Z]/.test(w[ci])) {
w[ci-1] = w[ci-1] + ',';
}
s = w.join(' ');
}
}
s = s.replace(/\s+/g, ' ');
if (Math.random() < 0.08) {
const sp = s.indexOf(' ', 1);
if (sp > 0) s = s.slice(0, sp) + ' ' + s.slice(sp + 1);
}
if (Math.random() < 0.04 && !/\s$/.test(s)) s += ' ';
if (Math.random() < 0.03) {
const sp = s.indexOf(' ');
if (sp > 0 && Math.random() < 0.5) s = s.slice(0, sp) + '.' + s.slice(sp + 1);
}
return s;
}
const _IRREGULAR = { get: { ed: 'got' } };
function _conjugate(word, suffix) {
if (_IRREGULAR[word] && _IRREGULAR[word][suffix]) return _IRREGULAR[word][suffix];
const _endsCVC = /[^aeiou][aeiou][^aeiou]$/;
const VOWEL_SUFFIX = /^(ing|ed|er|est)$/;
if (suffix === 'er' || suffix === 'est') {
const vowelGroups = word.match(/[aeiouy]+/g);
const syllables = vowelGroups ? vowelGroups.length : 1;
const endsInConsY = /[^aeiou]y$/.test(word);
if (syllables >= 3 || (syllables === 2 && !endsInConsY)) {
return (suffix === 'er' ? 'more ' : 'most ') + word;
}
}
var stem = word;
if (VOWEL_SUFFIX.test(suffix)) {
if (stem.endsWith('e')) {
stem = stem.slice(0, -1);
} else if (_endsCVC.test(stem) && stem.length <= 5) {
stem = stem + stem.charAt(stem.length - 1);
}
}
if (suffix === 'ed' || suffix === 'er' || suffix === 'est') {
stem = stem.replace(/([^aeiou])y$/, '$1i');
}
return stem + suffix;
}
function _genProTip() {
const t = _pick(_T);
const subs = {};
const assembled = t.replace(/[A-Z]/g, (m, offset) => {
const word = _pick(_P[m] || ['']);
subs[m] = word;
const needSpace = offset > 0 && /[A-Z]/.test(t[offset - 1]);
return (needSpace ? ' ' : '') + word;
});
const conjugated = assembled.replace(/(\w+) (ing|ed|er|est)\b/g, function(_, word, suffix) {
subs['*' + suffix] = (subs['*' + suffix] || 0) + 1;
return _conjugate(word, suffix);
});
const final = _addNoise(conjugated);
return { template: t, subs, assembled: conjugated, final };
}
function _colouredNameInRoom() {
const room = _getRoom();
if (!room?.state?.players) return false;
const myId = room.sessionId;
let found = false;
room.state.players.forEach((p, sid) => {
if (sid === myId) return;
const nm = p?.username;
if (nm && !_isDefaultName(nm)) found = true;
});
return found;
}
function _proTipSuppressed() {
if (_colouredNameInRoom()) return true;
return false;
}
function _trySendProTip() {
if (!_feats.proTips) return;
const now = Date.now();
if (now - _proTipsCooldown < _PT_COOLDOWN) return;
const room = _getRoom();
if (!room) return;
if (_proTipSuppressed()) return;
_proTipsCooldown = now;
const rawSend = _rawSend(room);
const delay = 2000 + Math.random() * 3000;
setTimeout(() => {
if (!_feats.proTips || !_getRoom()) return;
if (_proTipSuppressed()) return;
const { template, subs, assembled, final: msg } = _genProTip();
_proTipSentMsgs.add(msg);
_lastProTipSendTime = Date.now();
setTimeout(() => _proTipSentMsgs.delete(msg), 5000);
rawSend(1, msg);
_dbgLog('protip', 'sent', { msg, template, subs, assembled });
}, delay);
}
const _carryTune = (() => {
let _audio = null;
let _playing = false;
let _pendingName = null;
let _mmCache = null;
const _urls = { ambient: 'https://opengameart.org/sites/default/files/ambientmain_0.ogg', blues: 'https://opengameart.org/sites/default/files/blues_0.mp3', chiptune: 'https://opengameart.org/sites/default/files/TalkingCuteChiptune_0.mp3', classical: 'https://opengameart.org/sites/default/files/apparitions_ball_0.mp3', electronic: 'https://opengameart.org/sites/default/files/mythica.mp3', epic: 'https://opengameart.org/sites/default/files/Epic%20at%20the%20Jungle_0.mp3', folk: 'https://opengameart.org/sites/default/files/celtic_0.mp3', funk: 'https://opengameart.org/sites/default/files/wednesday_night.ogg', jazz: 'https://opengameart.org/sites/default/files/8bit%20Bossa.mp3', lofi: 'https://opengameart.org/sites/default/files/lofihiphop.ogg', metal: 'https://opengameart.org/sites/default/files/megasong_0.mp3', pop: 'https://opengameart.org/sites/default/files/Lay%20Low_0.mp3', punk: 'https://opengameart.org/sites/default/files/Flesh%20and%20Blood_0.mp3', reggae: 'https://opengameart.org/sites/default/files/regea_0.mp3', rock: 'https://opengameart.org/sites/default/files/clean_rock_0.mp3' };
const _volMod = { metal: 0.8 };
const _cache = {};
const _fetching = {};
function _fetch(name) {
if (_cache[name]) return Promise.resolve(_cache[name]);
if (_fetching[name]) return _fetching[name];
const url = _urls[name];
if (!url) return Promise.resolve(null);
_fetching[name] = new Promise(resolve => {
if (typeof GM_xmlhttpRequest !== 'undefined') {
GM_xmlhttpRequest({ method: 'GET', url, responseType: 'blob', onload(r) { if (r.status >= 200 && r.status < 300) { const b = URL.createObjectURL(r.response); const a = new Audio(b); a.loop = true; a.preload = 'auto'; _cache[name] = a; resolve(a); } else { resolve(null); } delete _fetching[name]; }, onerror() { resolve(null); delete _fetching[name]; } });
} else {
fetch(url).then(r => r.blob()).then(b => { const u = URL.createObjectURL(b); const a = new Audio(u); a.loop = true; a.preload = 'auto'; _cache[name] = a; resolve(a); }).catch(() => resolve(null)).finally(() => delete _fetching[name]);
}
});
return _fetching[name];
}
function _preload(name) { _fetch(name); }
function _getMM() {
if (_mmCache?.entity?.sound) return _mmCache;
const app = W.pc?.app;
if (!app) return null;
const e = app.root.findOne(n => n.script?.musicManager);
_mmCache = e?.script?.musicManager || null;
return _mmCache;
}
function _syncVol(a, name) {
a.volume = (carryTuneVol / 100) * (_volMod[name] || 1);
}
function start(name) {
stop();
_playing = true;
_pendingName = name;
_fetch(name).then(a => {
if (!_playing || _pendingName !== name || !a) return;
_audio = a;
_syncVol(a, name);
a.currentTime = 0;
const app = W.pc?.app;
if (app) app.fire('Music:Pause');
a.play().catch(() => {});
});
}
function stop() {
const wasPlaying = _playing;
_playing = false;
if (_audio) { _audio.pause(); _audio.currentTime = 0; _audio = null; }
if (wasPlaying) {
const mm = _getMM();
if (mm?.currentSlot) {
const slot = mm.getSlot(mm.currentSlot);
if (slot?.isPaused) slot.resume();
}
}
}
function resetCache() { _mmCache = null; }
function syncVol() { if (_audio && _pendingName) _syncVol(_audio, _pendingName); }
return { start, stop, syncVol, get playing() { return _playing; }, preload: _preload, resetCache };
})();
function _stopCarryTune() { _carryTune.stop(); }
if (carryTune !== 'default' && carryTune !== 'silent') _carryTune.preload(carryTune);
let _chatFadeHooked = false;
let _italicMsgs = new Set();
let _italicOrig = new Map();
function _nameHash(name) {
let h = 2166136261;
const s = String(name || '');
for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 16777619) >>> 0; }
return ((h >>> 0) * 0.618033988749895) % 1 * 360;
}
function _hueToHex(hue) {
const c = 0.9 * 0.9;
const x = c * (1 - Math.abs((hue / 60) % 2 - 1));
const m = 0.9 - c;
let r = 0, g = 0, b = 0;
if (hue < 60) { r = c; g = x; b = 0; }
else if (hue < 120) { r = x; g = c; b = 0; }
else if (hue < 180) { r = 0; g = c; b = x; }
else if (hue < 240) { r = 0; g = x; b = c; }
else if (hue < 300) { r = x; g = 0; b = c; }
else { r = c; g = 0; b = x; }
const hex = (v) => Math.round((v + m) * 255).toString(16).padStart(2, '0');
return '#' + hex(r) + hex(g) + hex(b);
}
function _nameColor(name) { return _hueToHex(_nameHash(name)); }
function _isMesName(name) { return /m[^\p{L}]*e[^\p{L}]*s/iu.test(String(name || '')); }
function _isDefaultName(name) {
const s = String(name || '').trim();
if (!s) return false;
if (/\.cg\d*$/i.test(s)) return true;
return /^[A-Z][a-z]+[^A-Za-z0-9]*[0-9]{5,}$/.test(s);
}
function _nameColorAnim(name, now) { return _hueToHex((_nameHash(name) + now * 0.18) % 360); }
function _isJoinLeaveChat(b) { return !!(b && b.type === 4 && b.msg && (b.msg.text === 'shared.chat.messages.player_joined' || b.msg.text === 'shared.chat.messages.player_left')); }
let _hookedNameProtos = new Set();
function _setElColor(el, hex) {
try {
const h = String(hex).replace('#', '');
if (h.length !== 6) return;
const r = parseInt(h.substring(0, 2), 16) / 255;
const g = parseInt(h.substring(2, 4), 16) / 255;
const b = parseInt(h.substring(4, 6), 16) / 255;
el.color.set(r, g, b);
} catch (_) {}
}
let _nameColorOrig = new Map();
let _animTargets = new Map();
let _chatAnim = new Map();
let _animNext = 0;
let _animTextNext = 0;
let _chatAnimNext = 0;
function _applyNameColor(el, name, defColor) {
if (!el || el.color === undefined) return;
const nm = String(name || '');
if (_isDefaultName(nm)) {
_animTargets.delete(el);
if (!_nameColorOrig.has(el)) _nameColorOrig.set(el, [el.color.r, el.color.g, el.color.b]);
_setElColor(el, defColor || '#FFFFFF');
try { if (el.text !== undefined) { el.text = ''; el.text = String(nm); } } catch (_) {}
return;
}
if (!_nameColorOrig.has(el)) _nameColorOrig.set(el, [el.color.r, el.color.g, el.color.b]);
if (_isMesName(nm)) {
if (_animTargets.size > 64) _animTargets.clear();
_animTargets.set(el, nm);
_setElColor(el, _nameColorAnim(nm, Date.now()));
try { if (el.text !== undefined) { el.text = ''; el.text = String(nm); } } catch (_) {}
} else {
_animTargets.delete(el);
_setElColor(el, _nameColor(nm));
}
}
function _tickNameAnim() {
const now = Date.now();
if (now >= _hintSyncNext) {
_hintSyncNext = now + 200;
for (const [el] of _hints) _syncMesHint(el);
}
if (!_feats.nameColors) return;
const nCount = _animTargets.size;
const animInt = nCount <= 8 ? 16 : (nCount <= 24 ? 33 : 66);
if (now >= _animNext) {
_animNext = now + 16;
for (const [el, nm] of _animTargets) {
if (!el || el.color === undefined) { _animTargets.delete(el); continue; }
try { _setElColor(el, _nameColorAnim(nm, now)); } catch (_) { _animTargets.delete(el); }
}
}
if (now >= _animTextNext) {
_animTextNext = now + animInt;
for (const [el, nm] of _animTargets) {
if (!el || el.color === undefined) { _animTargets.delete(el); continue; }
try { if (el.text !== undefined) { el.text = ''; el.text = String(nm); } } catch (_) { _animTargets.delete(el); }
}
}
if (now >= _chatAnimNext) {
_chatAnimNext = now + (_chatAnim.size <= 6 ? 33 : 50);
for (const [ent, meta] of _chatAnim) {
if (!ent || !ent.element) { _chatAnim.delete(ent); continue; }
try {
ent.element.text = meta.orig.replace(/#00D4FF/g, _nameColorAnim(meta.username, now));
if (_feats.chatEnhance) _chatSetDrawOrder(ent, -1);
} catch (_) { _chatAnim.delete(ent); }
}
}
}
function _colorUserNameEntity(u) {
if (!_feats.nameColors) return;
if (!u?.element?.text) return;
_applyNameColor(u.element, String(u.element.text));
}
function hookNameColors() {
if (!_feats.nameColors) return;
const root = W.pc?.app?.root;
if (!root) return;
try {
root.find((e) => {
const sc = e?.script;
if (!sc) return false;
if (sc.playerController) {
try {
const proto = Object.getPrototypeOf(sc.playerController);
if (proto?.onConnected && !_hookedNameProtos.has(proto)) {
const orig = proto.onConnected;
_hookProp(proto, 'onConnected', { onConnected() {
orig.call(this);
_colorUserNameEntity(this.usernameEntity);
} }.onConnected);
_hookedNameProtos.add(proto);
}
} catch (_) {}
try { _colorUserNameEntity(sc.playerController.usernameEntity); } catch (_) {}
}
if (sc.enemy) {
try {
const proto = Object.getPrototypeOf(sc.enemy);
if (proto?.onUsername && !_hookedNameProtos.has(proto)) {
const orig = proto.onUsername;
_hookProp(proto, 'onUsername', { onUsername(a) {
orig.call(this, a);
_colorUserNameEntity(this.usernameEntity);
} }.onUsername);
_hookedNameProtos.add(proto);
}
} catch (_) {}
try { _colorUserNameEntity(sc.enemy.usernameEntity); } catch (_) {}
}
return false;
});
} catch (_) {}
}
let _baseLastColor = new WeakMap();
function _baseUsernameText(base) {
const holder = base?.findByName?.('UsernameHolder');
if (holder?.findByName) {
const t = holder.findByName('UsernameText');
if (t) return t;
}
return base?.findByName?.('UsernameText') || null;
}
function _colorBaseUsernameNow(base) {
if (!_feats.nameColors) return;
try {
const txt = _baseUsernameText(base);
const el = txt?.element;
const nm = el?.text;
if (el?.color && nm) {
const s = String(nm);
_applyNameColor(el, s);
if (!_isDefaultName(s) && !_isMesName(s)) {
const target = _nameColor(s);
if (_baseLastColor.get(el) !== target) {
try { if (el.text !== undefined) { el.text = ''; el.text = s; } } catch (_) {}
_baseLastColor.set(el, target);
}
}
}
} catch (_) {}
}
function _colorAllBaseUsernames(mgr) {
const arr = mgr?.activeBases;
if (!arr) return;
for (let i = 0; i < arr.length; i++) {
const b = arr[i];
if (b) _colorBaseUsernameNow(b.entity || b);
}
}
function _hookBaseNames() {
if (!_feats.nameColors) return;
if (typeof _getBasesManager.clear === 'function') _getBasesManager.clear();
const stealMgr = _getBasesManager();
if (stealMgr) _colorAllBaseUsernames(stealMgr);
if (typeof _getEscapeTsunami.clear === 'function') _getEscapeTsunami.clear();
const wavesMgr = _getEscapeTsunami()?.basesManagerScript;
if (wavesMgr) _colorAllBaseUsernames(wavesMgr);
}
let _tabColorNext = 0;
let _tabColorEventHooked = null;
let _tabOms = null;
function _tabRefreshOms() {
const app = W.pc?.app;
if (!app?.root) return;
const oms = [];
const ents = app.root.find(e => e?.script?.overlayManager) || [];
for (let k = 0; k < ents.length; k++) {
const s = ents[k]?.script?.overlayManager;
if (s) oms.push(s);
}
if (_overlayMgr && !oms.includes(_overlayMgr)) oms.push(_overlayMgr);
_tabOms = oms.length ? oms : _tabOms;
}
function _tabRecolorNow() {
if (!_feats.nameColors) return;
const app = W.pc?.app;
if (!app?.root) return;
if (!_tabOms) _tabRefreshOms();
const oms = _tabOms || [];
for (let i = 0; i < oms.length; i++) {
const om = oms[i];
const slots = om?.tabSlots;
if (!slots) continue;
for (let j = 0; j < slots.length; j++) {
const slot = slots[j];
if (!slot || !slot.parent) continue;
try {
const u = slot.findByName?.('Username');
const name = u?.element?.text;
if (u?.element?.color && name) {
_applyNameColor(u.element, String(name));
const el = u.element;
try { el.text = ''; el.text = String(name); } catch (_) {}
}
} catch (_) {}
}
}
}
function _tickTabColors() {
if (Date.now() < _tabColorNext) return;
_tabColorNext = Date.now() + 100;
_tabRecolorNow();
}
function hookTabColorEvents() {
const app = W.pc?.app;
if (!app || _tabColorEventHooked === app || !_overlayMgr) return;
_tabColorEventHooked = app;
app.on('OverlayManager:TabUpdate', function () { _tabRefreshOms(); _tabRecolorNow(); });
app.on('OverlayManager:TabClick', function () { _tabRefreshOms(); _tabRecolorNow(); });
app.on('OverlayManager:GamePause', function () { _pauseColorNow(); });
}
const _previewOrig = new WeakMap();
const _previewHookedEls = new WeakSet();
const _previewAnim = new WeakMap();
const _hints = new Map();
let _hintSyncNext = 0;
let _usernameOpen = false;
function _usernamePreviewApply(input) {
const el = input?.element;
if (!el) return;
if (_feats.nameColors) {
if (!_previewOrig.has(el)) _previewOrig.set(el, el.style.color);
const v = input.getValue?.() || '';
const nm = String(v || '');
try {
if (_isDefaultName(nm)) {
const a = _previewAnim.get(el);
if (a) { a.cancel(); _previewAnim.delete(el); }
el.style.color = (_previewOrig.get(el) || '');
} else if (_isMesName(nm)) {
el.style.color = _nameColor(nm);
if (typeof el.animate === 'function' && !_previewAnim.has(el)) {
_previewAnim.set(el, el.animate([{ filter: 'hue-rotate(0deg)' }, { filter: 'hue-rotate(360deg)' }], { duration: 2000, iterations: Infinity }));
}
} else {
const a = _previewAnim.get(el);
if (a) { a.cancel(); _previewAnim.delete(el); }
el.style.color = v ? _nameColor(v) : (_previewOrig.get(el) || '');
}
} catch (_) {}
} else {
try {
const a = _previewAnim.get(el);
if (a) { a.cancel(); _previewAnim.delete(el); }
if (_previewOrig.has(el)) el.style.color = _previewOrig.get(el);
} catch (_) {}
}
}
function _injectMesHint(input) {
if (!_feats.nameColors) return;
const el = input?.element;
if (!el) return;
if (!_hints.has(el)) {
try {
const hint = document.createElement('div');
hint.textContent = T.mes_hint || 'Tip: Include "mes" in your username for a rainbow animated effect!';
hint.style.cssText = 'position:absolute;z-index:90000;pointer-events:none;display:none;box-sizing:border-box;color:#FFE066;font-size:14px;font-weight:800;text-align:center;letter-spacing:.02em;line-height:1.35;padding:6px 10px;background:rgba(15,22,60,.94);border:1px solid rgba(255,190,70,.55);border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.55);text-shadow:0 1px 2px rgba(0,0,0,.8);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;';
_sr.appendChild(hint);
_hints.set(el, hint);
} catch (_) { return; }
}
_syncMesHint(el);
}
function _syncMesHint(el) {
const hint = _hints.get(el);
if (!hint) return;
try {
const txt = T.mes_hint || 'Tip: Include "mes" in your username for a rainbow animated effect!';
if (hint.textContent !== txt) hint.textContent = txt;
const r = el.getBoundingClientRect();
const visible = _feats.nameColors && _usernameOpen && r && (r.width > 0 || r.height > 0) && el.offsetParent !== null;
if (!visible) { hint.style.display = 'none'; return; }
const w = Math.min(Math.max(r.width, 240), window.innerWidth - 20);
hint.style.display = 'block';
hint.style.left = (r.left + (r.width - w) / 2) + 'px';
hint.style.top = (r.bottom + 6) + 'px';
hint.style.width = w + 'px';
} catch (_) {}
}
function _hookUsernameColorPreview() {
const input = _overlayMgr?.changeUsernameInput?.script?.input;
if (!input?.element) return;
const el = input.element;
if (!_previewHookedEls.has(el)) {
_previewHookedEls.add(el);
try { el.addEventListener('input', () => _usernamePreviewApply(input)); } catch (_) {}
}
_usernamePreviewApply(input);
_injectMesHint(input);
}
let _usernameEventsHooked = null;
function _hookUsernameEvents() {
const app = W.pc?.app;
if (!app || _usernameEventsHooked === app) return;
_usernameEventsHooked = app;
app.on('OverlayManager:OpenChangeUsername', function () {
_usernameOpen = true;
try { _hookUsernameColorPreview(); } catch (_) {}
try { requestAnimationFrame(() => { for (const [el] of _hints) _syncMesHint(el); }); } catch (_) {}
});
app.on('OverlayManager:CloseChangeUsername', function () {
_usernameOpen = false;
try { for (const [el] of _hints) _syncMesHint(el); } catch (_) {}
});
}
setInterval(() => { try { hookNameColors(); } catch (_) {} try { hookTabColorEvents(); } catch (_) {} try { _tabRefreshOms(); } catch (_) {} try { _profileRecolor(); } catch (_) {} try { _pauseColorNow(); } catch (_) {} try { _hookUsernameColorPreview(); } catch (_) {} try { _hookUsernameEvents(); } catch (_) {} try { _hookBaseNames(); } catch (_) {} }, 2000);
let _profileColorHooked = null;
function _pauseColorNow() {
if (!_feats.nameColors) return;
const om = _overlayMgr;
const tl = om?.pauseEntity?.findByName?.('TopLeft');
if (!tl) return;
const found = [];
const walk = (ent, depth) => {
if (depth > 12) return;
if (ent.name === 'Username' && ent.element?.text) found.push(ent);
const ch = ent.children;
if (ch) for (let i = 0; i < ch.length; i++) walk(ch[i], depth + 1);
};
walk(tl, 0);
for (let i = 0; i < found.length; i++) {
const el = found[i].element;
const name = el?.text;
if (el?.color && name) {
_applyNameColor(el, String(name));
try { el.text = ''; el.text = String(name); } catch (_) {}
}
}
}
function _profileColorNow() {
if (!_feats.nameColors) return;
const api = typeof getApiManager === 'function' ? getApiManager() : null;
const u = api?.usernamePopupTextEntity;
const name = u?.element?.text;
if (u?.element?.color && name) {
const el = u.element;
_applyNameColor(el, String(name), '#000000');
try { el.text = ''; el.text = String(name); } catch (_) {}
}
}
function _nameColorRevert() {
for (const [el, c] of _nameColorOrig) {
try {
el.color.set(c[0], c[1], c[2]);
if (el.text !== undefined) { const t = String(el.text || ''); el.text = ''; el.text = t; }
} catch (_) {}
}
_nameColorOrig.clear();
_animTargets.clear();
_chatAnim.clear();
}
function _profileRecolor() {
if (!_feats.nameColors) return;
const api = typeof getApiManager === 'function' ? getApiManager() : null;
if (!api || typeof api.renderAccountPopup !== 'function') return;
if (_profileColorHooked && api.renderAccountPopup === _profileColorHooked) { _profileColorNow(); return; }
const orig = api.renderAccountPopup;
const wrap = ({ renderAccountPopup(a) {
try { orig.call(this, a); } catch (_) {}
_profileColorNow();
} }).renderAccountPopup;
_hookProp(api, 'renderAccountPopup', wrap);
_profileColorHooked = wrap;
_profileColorNow();
}
function hookChatFade() {
if (_chatFadeHooked || !_overlayMgr) return;
const om = _overlayMgr;
const app = W.pc?.app;
if (!app || !om.onChatMessage) return;
const origOnChat = om.onChatMessage;
app.off('OverlayManager:ChatMessage', origOnChat, om);
app.on('OverlayManager:ChatMessage', function (b) {
const origST = W.setTimeout;
const extendFade = !_isJoinLeaveChat(b);
let chatDelayReplaced = false;
W.setTimeout = { setTimeout(fn, delay, ...rest) {
if (extendFade && !chatDelayReplaced && delay === 20000) { delay = chatFadeTime * 1000; chatDelayReplaced = true; }
return origST.call(this, fn, delay, ...rest);
} }.setTimeout;
_spoofMap.set(W.setTimeout, _origFpToString.call(origST));
try { origOnChat.call(om, b); }
finally { W.setTimeout = origST; }
const _newMsg = om.chatMessageEntities[om.chatMessageEntities.length - 1];
if (_newMsg && _newMsg.element) {
const mtxt = String(_newMsg.element.text || '');
if (_feats.nameColors && mtxt.indexOf('#00D4FF') !== -1) {
const uname = b && b.username;
if (_isDefaultName(uname)) {
_chatAnim.delete(_newMsg);
} else if (_isMesName(uname)) {
_chatAnim.set(_newMsg, { orig: mtxt, username: uname });
_newMsg.element.text = mtxt.replace(/#00D4FF/g, _nameColorAnim(uname, Date.now()));
} else {
_chatAnim.delete(_newMsg);
_newMsg.element.text = mtxt.replace(/#00D4FF/g, _nameColor(uname));
}
}
if (_feats.chatEnhance) {
_chatSetDrawOrder(_newMsg, -1);
if (_isJoinLeaveChat(b)) {
_chatItalicize(_newMsg, 6);
_newMsg.element.opacity = 0.6;
_italicMsgs.add(_newMsg);
}
}
}
}, om);
app.on('postupdate', function () { _tickChatItalic(); _tickTabColors(); }, om);
_chatFadeHooked = true;
_log('setup', 'chat fade hooked (' + chatFadeTime + 's)');
_dbgLog('setup', 'chat-fade-hooked', { fadeTime: chatFadeTime }, 'debug');
}
let _chatCompactAppliedTo = null;
let _chatSyncHooked = null;
let _chatCompactOrig = null;
function _chatSetDrawOrder(ent, doVal) {
try {
if (!ent || !ent.element) return;
ent.element.drawOrder = doVal;
const c = ent.children;
if (!c) return;
for (let i = 0; i < c.length; i++) _chatSetDrawOrder(c[i], doVal);
} catch (_) {}
}
function _chatItalicize(ent, deg) {
try {
const tf = ent?.element?._text;
const mesh0 = tf?._meshInfo?.[0];
if (!mesh0?.positions) return;
const p = mesh0.positions;
let orig = _italicOrig.get(ent);
if (!orig) { orig = new Float32Array(p); _italicOrig.set(ent, orig); }
let minY = Infinity, maxY = -Infinity;
for (let i = 1; i < orig.length; i += 3) {
if (orig[i] < minY) minY = orig[i];
if (orig[i] > maxY) maxY = orig[i];
}
if (!isFinite(minY)) minY = 0;
if (!isFinite(maxY)) maxY = 0;
const pivot = (minY + maxY) / 2;
const tan = Math.tan(deg * Math.PI / 180);
for (let i = 0; i < p.length; i += 3) {
p[i] = orig[i] + tan * (orig[i + 1] - pivot);
p[i + 1] = orig[i + 1];
p[i + 2] = orig[i + 2];
}
const vb = tf?._model?.meshInstances?.[0]?.mesh?.vertexBuffer;
if (vb?.storage) {
vb.lock();
const v = new Float32Array(vb.storage, 0, p.length);
for (let i = 0; i < p.length; i++) v[i] = p[i];
const wasUsage = vb.usage;
vb.usage = 1;
vb.unlock();
vb.usage = wasUsage;
}
} catch (_) {}
}
function _reapplyItalic() {
for (const ent of _italicMsgs) {
if (!ent || !ent.element) { _italicMsgs.delete(ent); _italicOrig.delete(ent); continue; }
_chatSetDrawOrder(ent, -1);
_chatItalicize(ent, 6);
ent.element.opacity = 0.6;
}
}
function _tickChatItalic() {
if (!_feats.chatEnhance) return;
for (const ent of _italicMsgs) {
if (!ent || !ent.element) { _italicMsgs.delete(ent); _italicOrig.delete(ent); continue; }
ent.element.opacity = 0.6;
}
}
function hookChatCompact() {
const om = _overlayMgr;
const el = om?.chatDefaultMessage?.element;
const ch = om?.chatHolder;
if (!om || !el || !ch?.element) return;
const ce = ch.element;
const scrComp = ce.screen?.screen;
if (scrComp && _chatSyncHooked !== scrComp) {
_chatSyncHooked = scrComp;
scrComp.on('syncdraworder', () => {
if (!_feats.chatEnhance) return;
_chatSetDrawOrder(ch, -1);
_reapplyItalic();
});
}
if (!_feats.chatEnhance) {
if (_chatCompactOrig && _chatCompactAppliedTo === om) {
const o = _chatCompactOrig;
const msgs = om.chatMessageEntities || [];
if (o.maskEl) { o.maskEl.mask = o.maskVal; o.maskEl.opacity = o.maskOp; }
_chatSetDrawOrder(ch, o.chDo);
el.fontSize = o.fontSize;
el.lineHeight = o.lineHeight;
el.wrapLines = o.wrapLines;
el.autoHeight = o.autoHeight;
for (let i = 0; i < msgs.length; i++) {
const me = msgs[i]?.element;
if (!me) continue;
me.fontSize = o.fontSize;
me.lineHeight = o.lineHeight;
me.wrapLines = o.wrapLines;
me.autoHeight = o.autoHeight;
}
_chatCompactOrig = null;
_chatCompactAppliedTo = null;
if (typeof om.updateChatScale === 'function') om.updateChatScale();
} else if (_chatCompactOrig) {
_chatCompactOrig = null;
_chatCompactAppliedTo = null;
}
return;
}
const msgs = om.chatMessageEntities || [];
const maskEnt = (msgs[0]?.element?.maskedBy) || ce.maskedBy || null;
const maskEl = maskEnt && maskEnt.element ? maskEnt.element : null;
if (_chatCompactAppliedTo !== om) {
_chatCompactOrig = { maskEl, maskVal: maskEl?.mask, maskOp: maskEl?.opacity, chDo: ch.element.drawOrder, el, fontSize: el.fontSize, lineHeight: el.lineHeight, wrapLines: el.wrapLines, autoHeight: el.autoHeight };
}
if (maskEl && maskEl.mask !== false) {
maskEl.mask = false;
if (maskEl.opacity !== 0) maskEl.opacity = 0;
_dbgLog('chat', 'unmask', { mask: maskEnt.name || null }, 'debug');
}
_chatSetDrawOrder(ch, -1);
if (_chatCompactAppliedTo === om) return;
const fs = el.fontSize > 0 ? el.fontSize : 34;
const nfs = Math.max(12, Math.round(fs * 0.8));
el.fontSize = nfs;
el.lineHeight = nfs;
el.wrapLines = false;
el.autoHeight = true;
for (let i = 0; i < msgs.length; i++) {
const me = msgs[i]?.element;
if (!me) continue;
me.fontSize = nfs;
me.lineHeight = nfs;
me.wrapLines = false;
me.autoHeight = true;
}
if (typeof om.updateChatScale === 'function') om.updateChatScale();
_chatCompactAppliedTo = om;
const chain = [];
let _e = ce.entity;
while (_e && chain.length < 10) { chain.push(_e.name || '?'); if (_e === ce.screen) break; _e = _e.parent; }
_dbgLog('chat', 'compact', { fs: nfs, do: -1, msgDo: msgs[0]?.element?.drawOrder ?? null, screen: ce.screen?.name || null, priority: scrComp?.priority ?? null, chain, mask: maskEnt?.name || null, maskedBy: ce.maskedBy?.name || null, msgs: msgs.length }, 'debug');
}
let _carryTuneHooked = false;
function hookCarryTune() {
if (_carryTuneHooked) return;
_carryTuneHooked = true;
const player = getPlayer();
if (!player?.sound) { _carryTuneHooked = false; return; }
const snd = player.sound;
const origPlay = snd.play;
const origStop = snd.stop;
let _reP = false, _reS = false;
_hookProp(snd, 'play', { play(slot) {
if (_reP) return origPlay.apply(this, arguments);
_reP = true;
try {
if (slot === 'ImStealing') {
if (carryTune === 'silent') return;
if (carryTune !== 'default') { _dbgLog('kcc', 'carry-tune-play', { tune: carryTune }, 'debug'); _carryTune.start(carryTune); return; }
}
return origPlay.apply(this, arguments);
} finally { _reP = false; }
} }.play);
_hookProp(snd, 'stop', { stop(slot) {
if (_reS) return origStop.apply(this, arguments);
_reS = true;
try {
if (slot === 'ImStealing') { _carryTune.stop(); _dbgLog('kcc', 'carry-tune-stop'); }
return origStop.apply(this, arguments);
} finally { _reS = false; }
} }.stop);
}
const { hookAntiDeath, hookAntiKnockback, hookNoclip, hookJumpMult, resetAntiKnockback, hookChatBubbles } = (() => {
let antiDeathReady = false;
let antiKnockbackReady = false;
let noclipHooked = false;
const _findFarPetTarget = () => {
const r = Math.max(1.5, +_feats.petPickupRadius || 1.5);
if (r <= 2) return null;
const rn = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
if (rn === 'PetTycoon') {
const pm = _getPetTycoon()?.petsManagerScript;
const pp = pm?.playerEntity?.getPosition?.();
if (!pm || !pp) return null;
let best = null;
let bestD = Infinity;
for (const p of pm.basePets?.values?.() || []) {
const d = p.getPosition?.().distance?.(pp);
if (d == null || d > r || d >= bestD) continue;
bestD = d; best = p;
}
if (best) return best;
for (const p of pm.activePets?.values?.() || []) {
const d = p.getPosition?.().distance?.(pp);
if (d == null || d > r || d >= bestD) continue;
bestD = d; best = p;
}
return best;
}
return null;
};
const _resetCuddle = () => {
_cuddle.walking = false;
if (!_cuddle.active) return;
_cuddle.active = false;
_cuddle.target = null;
if (_cuddle.noclipWasOff) { _cuddle.noclipWasOff = false; _feats.noclip = false; hookNoclip(); }
_cuddle.stationaryTicks = 0;
_cuddle.lastSnap = 0;
_cuddle.firstOrient = false;
_cuddle.wasRunning = false;
_cuddle.interp = null;
_cuddle.animHooked = false;
_cuddle.idleStopped = false;
_cuddle.firstSnapDone = false;
_releaseAllSimKeys();
};
function hookAntiDeath() {
if (antiDeathReady) return;
const app = W.pc?.app;
if (!app) return;
if (app[_SYM_OFIRE] && app.fire !== app[_SYM_OFIRE]) { antiDeathReady = true; return; }
if (!app[_SYM_OFIRE]) app[_SYM_OFIRE] = app.fire;
const origFire = app[_SYM_OFIRE];
let _inHook = false;
const _safe = fn => { try { fn(); } catch (_) {} };
const _onGamePause = () => {
if (!anyPanelOpen() && document.pointerLockElement) {
setTimeout(() => {
try {
if (anyPanelOpen()) return;
const fle = _overlayMgr?.firstLockEntity;
if (fle) fle.enabled = false;
origFire.call(app, 'GameManager:GameResumed');
} catch (_) {}
}, 0);
return true;
}
return false;
};
const _onFirstLockRecovery = () => {
if (document.pointerLockElement || anyPanelOpen()) {
if (document.pointerLockElement) {
setTimeout(() => { _safe(() => origFire.call(app, 'OverlayManager:FirstLocked')); }, 0);
} else {
try { if (_overlayMgr?.firstLockEntity?.enabled) _overlayMgr.firstLockEntity.enabled = false; } catch (_) {}
}
return true;
}
return false;
};
const _onLockMouse = (a1) => {
let _fle = _overlayMgr?.firstLockEntity;
if (!_fle?.enabled) {
try {
const _live = app?.root?.find(e => e.script?.overlayManager)?.[0]?.script?.overlayManager ?? null;
if (_live) { _overlayMgr = _live; _fle = _live.firstLockEntity; }
} catch (_) {}
}
if (!(_fle?.enabled && !document.pointerLockElement)) {
try { (document.querySelector('canvas') || document.body).requestPointerLock(); } catch (_) {}
}
if (a1) { _safe(() => origFire.call(app, a1)); }
};
const _onBalanceChange = (a1) => {
if (!_mlBatchCollecting) return false;
_mlBatchTotal += (typeof a1 === 'number' ? a1 : 0);
_mlBatchCount++;
clearTimeout(_mlBatchTimer);
_mlBatchTimer = setTimeout(flushBatch, 2000);
return true;
};
const _onChatMessage = (a1) => {
if (a1?.type === 4 && a1?.msg?.text === 'system.API_MESSAGE.9908') {
_dbgLog('chat', 'suppressed-moderated');
return true;
}
if (_feats.hideProTips && a1?.type === 0) {
if (_proTipSentMsgs.size > 0 && _proTipSentMsgs.has(a1.msg)) {
_dbgLog('protip', 'suppressed', { msg: a1.msg });
return true;
}
const now = Date.now();
if (now - _lastProTipSendTime < 5000) {
const txt = a1.msg ? String(a1.msg).toLowerCase() : '';
if (txt.includes('content moderated') || txt.includes('9908') || txt.includes('***')) {
_dbgLog('protip', 'suppressed-moderated', { msg: a1.msg, age: now - _lastProTipSendTime });
return true;
}
}
}
return false;
};
const hookFn = { fire(ev, a1, a2, a3, a4, a5, a6, a7, a8) {
switch (ev) {
case 'GameManager:GamePause':
if (_walkHomeTimer || _padWalkTimer) return this;
if (_onGamePause()) return this;
break;
case 'GameManager:OpenShop':
if (_walkHomeTimer || _padWalkTimer) return this;
break;
case 'ModeOverlay:PopupShow':
if ((_walkHomeTimer || _padWalkTimer) && a1 === 'Shop') return this;
break;
case 'SDK:GameplayStop':
if (_walkHomeTimer || _padWalkTimer) return this;
break;
case 'GameManager:UnlockMouse':
if (_walkHomeTimer || _padWalkTimer) return this;
break;
case 'OverlayManager:EnabledFirstLockEntity':
if (_onFirstLockRecovery()) return this;
break;
case 'GameManager:LockMouse':
if (_walkHomeTimer || _padWalkTimer) return this;
if (W.pc?.isMobile) break;
_onLockMouse(a1);
return this;
case 'DeathScreen:Trigger': if (_feats.invincible && Date.now() - _rbManualDeathAt >= 2000) return this; break;
case 'PlayerController:GotHit': if (_feats.antiKnockback) return this; break;
case 'ModeOverlay:BalanceChange':
if (_onBalanceChange(a1)) return this;
break;
case 'ModeOverlay:Balance':
if (_mlBatchCollecting) { _mlCachedBalance = a1; return this; }
break;
case 'NetworkManager:Send':
if (a1 === 'p' && _cuddle.interp) {
var ci = _cuddle.interp;
var t = Math.min((Date.now() - ci.start) / ci.dur, 1);
a2.x = ci.fromX + (ci.toX - ci.fromX) * t;
a2.y = ci.fromY + (ci.toY - ci.fromY) * t;
a2.z = ci.fromZ + (ci.toZ - ci.fromZ) * t;
if (t >= 1) _cuddle.interp = null;
}
if (a1 === 'murderAttack') _trySendProTip();
break;
case 'ModeOverlay:DisablePetMenu': {
const t = _findFarPetTarget();
if (t) return origFire.call(this, 'ModeOverlay:PetMenuEnable', t);
break;
}
case 'GameManager:InitGameMode':
_ban.userModeChangeAt = Date.now();
_markModeSwitch();
_abortSnipeActivity();
if (_ban.autoRejoinPending && !_ban.detected) {
_ban.autoRejoinPending = false;
_ban.forceRejoinRoomId = null;
_ban.forceRejoinMode = null;
}
if (_ban.autoRejoinPending) return this;
break;
case 'NetworkManager:SetGameMode':
_markModeSwitch();
_abortSnipeActivity();
if (_ban.autoRejoinPending && !_ban.detected) {
_ban.autoRejoinPending = false;
_ban.forceRejoinRoomId = null;
_ban.forceRejoinMode = null;
_ban.autoRejoinFails = 0;
}
break;
case 'NetworkManager:GameModeStop':
break;
case 'NetworkManager:Connect':
break;
case 'NetworkManager:Connected':
_modeSwitchAt = 0;
_clearNoRoomWatch();
_getNetworkManager.clear();
_getBasesManager.clear();
_getPetTycoon.clear();
_getEscapeTsunami.clear();
_getEnemyHolder.clear();
_getPopup.clear();
_getLockdownMgr.clear();
_findPetsManager.clear();
getCamera.clear();
_getRollManager.clear();
_getCraftManager.clear();
_getSwordMobsManager.clear();
_setReticleVisible(false);
_resetCuddle();
_dbgLog('cuddle', 'connect-cancel', null, 'debug');
if (_fly.active) { try { const _p = getPlayer(); const _k = getKcc(_p); if (_k) flyOff(_k); else _fly.active = false; } catch (_) { _fly.active = false; } }
_safe(() => { if (typeof _clearAllXray === 'function') _clearAllXray(); });
_safe(() => { if (_ghostActive) { _ghostActive = false; _ghostSuppressed = false; if (typeof _updateCharTransparency === 'function') _updateCharTransparency(); } });
_cachedSnipeMode = null;
_cachedSnipeModeTime = 0;
_snipeRoomJoinTime = Date.now();
_roomJoinTime = Date.now();
_snipeRoomProven = false;
{ const _g = Date.now() < _targetedHopGrace ? Math.min(snipeCfg.steal.joinGrace || 0, 2) : (snipeCfg.steal.joinGrace || 0); if (_g > 0) _joinGraceUntil = Date.now() + _g * 1000; }
{
const _nmNow = _getNetworkManager();
if (_nmNow?.room?.name === 'PetTycoon' && _firstPTC) {
_firstPTC = false;
if (_feats.autoLock && !_snipePetActionActive && !_stealRetryTimer) _autoWalkToPad();
setTimeout(() => {
try { hookAntiDisconnect(); } catch (e) { _log('err', 'hookAntiDC: ' + e.message); }
try { hookChatBubbles(); } catch (_) {}
const root = app?.root;
const diag = { hasBases: !!root?.findByName('Bases'), hasPetsMgr: !!root?.findByName('PetsManager'), hasNetwork: !!root?.findByName('NetworkManager'), hasPlayer: !!root?.findByName('Player'), activeBases: _getBasesManager()?.activeBases?.length ?? 0 };
_dbgLog('room', 'first-join-ready', diag);
}, 5000);
} else {
try { hookAntiDisconnect(); } catch (e) { _log('err', 'hookAntiDC: ' + e.message); }
try { hookChatBubbles(); } catch (_) {}
if (_feats.autoLock && _nmNow?.room?.name === 'PetTycoon' && !_snipePetActionActive && !_stealRetryTimer) _autoWalkToPad();
}
}
if (!hookFn._connLogged) {
hookFn._connLogged = true;
setTimeout(() => { hookFn._connLogged = false; }, 1000);
setTimeout(() => {
_overlayMgr = app?.root?.find(e => e.script?.overlayManager)?.[0]?.script?.overlayManager ?? null;
const _nm = _getNetworkManager();
_dbgLog('room', 'connected', { room: _nm?.room?.name || null, sessionId: _nm?.room?.sessionId || null });
if (_nativeHud?.tc?._native?.btn) {
_nativeHud.tc._native.btn.enabled = (_nm?.room?.name === 'TowerParkour');
}
if (_feats.freeStars && !_freeStarsTimer) try { _freeStarsStart(); } catch (e) { _log('err', 'stars: ' + e.message); }
if (_feats.freeDiamonds && !_freeDiamondsTimer) try { _freeDiamondsStart(); } catch (e) { _log('err', 'diamonds: ' + e.message); }
if (_feats.autoRollX25 && !_autoRollX25Timer) try { _autoRollX25Start(); } catch (e) { _log('err', 'rollx25: ' + e.message); }
if (_feats.autoCraft && !_autoCraftTimer) try { _autoCraftStart(); } catch (e) { _log('err', 'craft: ' + e.message); }
if ((_feats.autoVipSword || _feats.autoVipWaves) && !_autoVipTimer) try { _autoVipStart(); } catch (e) { _log('err', 'vip: ' + e.message); }
if (_feats.directKill && !_directKillTimer) try { _directKillStart(); } catch (e) { _log('err', 'directkill: ' + e.message); }
if (_feats.autoBoost && !_autoBoostTimer) try { _autoBoostStart(); } catch (e) { _log('err', 'autoboost: ' + e.message); }
try {
if (_overlayMgr?.chatMessageEntities) {
const _msgs = [..._overlayMgr.chatMessageEntities];
_overlayMgr.chatMessageEntities.length = 0;
for (const _e of _msgs) _safe(() => _e.destroy());
_overlayMgr.updateChatScale?.();
}
} catch (_) {}
}, 0);
}
setTimeout(() => {
try {
const _nmD = _getNetworkManager();
const _plD = _nmD?.room?.state?.players?.get(_nmD?.room?.sessionId);
_dbgLog('room', 'room-join', { ms: Date.now() - _roomJoinTime, room: _nmD?.room?.name || null, rollMgr: !!_getRollManager(), craftMgr: !!_getCraftManager(), mobsMgr: !!_getSwordMobsManager(), stars: _plD?.stars ?? null });
} catch (_) {}
}, 1000);
break;
case 'NetworkManager:Disconnected': _getNetworkManager.clear();
_getBasesManager.clear();
_getPetTycoon.clear();
_getEscapeTsunami.clear();
_getEnemyHolder.clear();
_getPopup.clear();
_getLockdownMgr.clear();
_findPetsManager.clear();
getCamera.clear();
_getRollManager.clear();
_getCraftManager.clear();
_getSwordMobsManager.clear();
_cachedSnipeMode = null;
_cachedSnipeModeTime = 0;
if (_padFindTimer) { clearTimeout(_padFindTimer); _padFindTimer = null; }
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; _releaseAllSimKeys(); }
if (_stealRetryTimer) { clearInterval(_stealRetryTimer); _stealRetryTimer = null; }
if (_stealPollTimer) { clearInterval(_stealPollTimer); _stealPollTimer = null; }
_snipeStealPos = null;
_snipe.freezeStealActive = false;
_snipe.freezeUntil = 0;
_snipe.freezeStartedAt = 0;
_snipePetActionActive = false;
_snipeActionStartedAt = 0;
_snipeDropInProgress = false;
if (!_hopLeaveIntentional) { _hopInProgress = false; _hopStartedAt = 0; _setHopReason(null); }
_firstPTC = true;
_resetCuddle();
_safe(() => { if (typeof _clearAllXray === 'function') _clearAllXray(); });
_safe(() => { if (_ghostActive) { _ghostActive = false; _ghostSuppressed = false; if (typeof _updateCharTransparency === 'function') _updateCharTransparency(); } });
_dbgLog('cuddle', 'disconnect-cancel', null, 'debug');
_dbgLog('room', 'disconnected', { maintenance: !!a1, banned: !!a2, room: _getNetworkManager()?.room?.name || null, sinceProbeMs: _lastProbeEnd ? Date.now() - _lastProbeEnd : -1, walking: !!_walkHomeTimer, hold: _pgHolding(), hide: _pgHidden() });
if (!a1 && !a2 && !_hopLeaveIntentional && !_hopInProgress) {
_scheduleNoRoomWatchdog();
}
if (!a1 && !a2) {
setTimeout(() => {
['disconnectionEntity', 'disconnectionJustGroup', 'disconnectionBannedGroup'].forEach(k => {
_safe(() => { if (_overlayMgr?.[k]) _overlayMgr[k].enabled = false; });
});
}, 50);
}
break;
case 'OverlayManager:ChatMessage':
if (_onChatMessage(a1)) return this;
break;
case 'SDK:RequestRewardedAd': {
if (!_leverKeyHeld) return this;
_leverKeyHeld = false;
const _now = Date.now();
if (!hookFn._lra) hookFn._lra = 0;
if (_now - hookFn._lra < 100) return this;
hookFn._lra = _now;
if (a2) setTimeout(() => {
_safe(() => origFire.call(this, a2, a3));
try {
W.pc?.app?.root?.find(e => e.script?.petTycoonLever)?.forEach(e => {
if (e.script?.petTycoonLever) {
e.script.petTycoonLever.cooldown = 0;
e.script.petTycoonLever.lastLeverUse = 0;
}
});
} catch (_) {}
}, 0);
return this;
}
}
if (_inHook) { try { return origFire.call(this, ev, a1, a2, a3, a4, a5, a6, a7, a8); } catch (_) { return; } }
_inHook = true;
try { return origFire.call(this, ev, a1, a2, a3, a4, a5, a6, a7, a8); }
catch (_) { return; }
finally { _inHook = false; }
} }.fire;
_hookProp(app, 'fire', hookFn, true);
app[_SYM_ADHK] = true;
if (!app[_SYM_BDC]) {
app[_SYM_BDC] = true;
app.on('NetworkManager:Disconnected', function (_maint, banned) {
_setReticleVisible(false);
_overlayMgr = null;
if (banned) { _ban.detected = true; }
});
}
antiDeathReady = true;
_log('setup', 'anti-death: ready');
_dbgLog('kcc', 'antideath-hooked', null, 'debug');
}
function hookAntiKnockback() {
if (antiKnockbackReady) return;
const player = getPlayer();
const pc = getPC(player);
if (!pc || typeof pc.update !== 'function') return;
const origGotHit = pc.gotHit ? pc.gotHit.bind(pc) : null;
if (origGotHit) {
_hookProp(pc, 'gotHit', { gotHit(a, b) {
if (_feats.antiKnockback) return;
origGotHit(a, b);
} }.gotHit, false);
}
const origUpdate = pc.update.bind(pc);
_hookProp(pc, 'update', { update(dt) {
origUpdate(dt);
if (_feats.antiKnockback && pc.knockbackForce) {
pc.knockbackForce.x = 0;
pc.knockbackForce.y = 0;
pc.knockbackForce.z = 0;
}
} }.update, false);
antiKnockbackReady = true;
_dbgLog('kcc', 'antiknockback-hooked', null, 'debug');
}
function hookNoclip() {
if (noclipHooked) return;
const player = getPlayer();
const kcc = getKcc(player);
if (!kcc || !kcc.update) return;
const origUpdate = kcc.update.bind(kcc);
let _stuckSince = 0;
let _stuckLastPos = null;
let _stuckNoclipRestore = null;
let _stuckNoclipTimer = null;
_hookProp(kcc, 'update', { update(dt) {
const prePos = this.entity.getPosition();
const preY = prePos.y;
const speed = this.speed || 7;
const flyCeilingBypass = !!(_fly.active && _feats.fly && _fly.up && !_fly.down);
const applyFlyCeilingBypass = () => {
if (!flyCeilingBypass) return;
const cur = this.entity.getPosition();
const minY = preY + speed * dt;
if (cur.y < minY) this.entity.setPosition(cur.x, minY, cur.z);
};
if (Date.now() < _snipe.freezeUntil || _snipeStealPos) {
const pos = this.entity.getPosition();
const freezeX = pos.x, freezeY = pos.y, freezeZ = pos.z;
origUpdate(dt);
this.entity.setPosition(freezeX, freezeY, freezeZ);
return;
}
const rn = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
if (rn === 'Infection') {
const pc = getPlayer()?.script?.playerController;
const mx = pc?.xInput ?? W.pc?.movementX ?? 0;
const mz = pc?.zInput ?? W.pc?.movementZ ?? 0;
const hasInput = Math.abs(mx) > 0.01 || Math.abs(mz) > 0.01;
const cur = this.entity.getPosition();
if (hasInput) {
if (!_stuckLastPos) { _stuckLastPos = cur.clone(); _stuckSince = Date.now(); }
else {
const elapsed = Date.now() - _stuckSince;
if (elapsed > 1000 && cur.distance(_stuckLastPos) < 4.0) {
if (_stuckNoclipRestore === null) {
_stuckNoclipRestore = !!_feats.noclip;
_feats.noclip = true;
if (_stuckNoclipTimer) clearTimeout(_stuckNoclipTimer);
_stuckNoclipTimer = setTimeout(() => {
_feats.noclip = _stuckNoclipRestore;
_stuckNoclipRestore = null;
_stuckNoclipTimer = null;
}, 300);
}
_stuckSince = Date.now();
_stuckLastPos = cur.clone();
} else if (cur.distance(_stuckLastPos) >= 4.0) {
_stuckLastPos = cur.clone(); _stuckSince = Date.now();
}
}
} else { _stuckSince = 0; _stuckLastPos = null; }
} else { _stuckSince = 0; _stuckLastPos = null; }
if (!_feats.noclip) {
const out = origUpdate(dt);
applyFlyCeilingBypass();
return out;
}
const h = this._horizontal || 0, v = this._vertical || 0;
const pos = prePos;
const preX = pos.x, preZ = pos.z;
origUpdate(dt);
const newPos = this.entity.getPosition();
const noclipY = flyCeilingBypass ? Math.max(newPos.y, preY + speed * dt) : newPos.y;
const _spd = (_carrySpeedCap && _carrySpeedCap < speed) ? _carrySpeedCap : speed;
if (_pgHolding()) {
const _nD = Date.now();
const _dxD = h * _spd * dt, _dzD = v * _spd * dt;
if (dt > 0.05) {
if (_nD - _kccDtAt > 1000) {
_kccDtAt = _nD;
_dbgLog('tp', 'dt-spike', { dt: _mr2(dt), h: _mr2(h), v: _mr2(v), speed: _mr2(_spd), dx: _mr2(_dxD), dz: _mr2(_dzD), fromX: _mr2(preX), fromZ: _mr2(preZ), hold: 1 }, 'warn');
}
} else if (_nD - _kccDtAt > 1000) {
_kccDtAt = _nD;
_dbgLog('tp', 'noclip', { dt: _mr2(dt), h: _mr2(h), v: _mr2(v), speed: _mr2(_spd), dx: _mr2(_dxD), dz: _mr2(_dzD), fromX: _mr2(preX), fromZ: _mr2(preZ), toX: _mr2(preX + _dxD), toZ: _mr2(preZ + _dzD), room: getCachedRoomName() || null }, 'debug');
}
}
this.entity.setPosition(preX + h * _spd * dt, noclipY, preZ + v * _spd * dt);
} }.update);
noclipHooked = true;
_log('setup', 'noclip: KCC update hooked');
_dbgLog('kcc', 'noclip-hooked');
}
function hookJumpMult() {
const player = getPlayer();
const kcc = getKcc(player);
if (!kcc || _SYM_JSPD in kcc) return;
kcc[_SYM_JSPD] = kcc.jumpSpeed;
Object.defineProperty(kcc, 'jumpSpeed', {
get() { return this[_SYM_JSPD] * _feats.jumpMult; },
set(v) { this[_SYM_JSPD] = v; },
configurable: true,
});
_hideOwnKey(kcc, 'jumpSpeed');
if (_SYM_GRAV in kcc) return;
kcc[_SYM_GRAV] = kcc.gravity;
Object.defineProperty(kcc, 'gravity', {
get() { return this[_SYM_GRAV] * _feats.gravMult; },
set(v) { this[_SYM_GRAV] = v; },
configurable: true,
});
_hideOwnKey(kcc, 'gravity');
if (_feats.walkUpWalls) kcc.slopeLimitDeg = 180;
if (_SYM_WSET in kcc.entity) return;
const _origSetPos = kcc.entity.setPosition.bind(kcc.entity);
kcc.entity[_SYM_WSET] = true;
const _kccRef = kcc;
_hookProp(kcc.entity, 'setPosition', { setPosition(a, b, c) {
if (_feats.walkUpWalls && _kccRef._velY <= 0) {
const _cy = _kccRef.entity.getPosition().y;
const _ny = (b === undefined) ? a.y : b;
if (_ny > _cy + 0.02) {
if (b === undefined) { const _v = a.clone(); _v.y = _cy + 0.02; return _origSetPos(_v); }
return _origSetPos(a, _cy + 0.02, c);
}
}
return (b === undefined) ? _origSetPos(a) : _origSetPos(a, b, c);
} }.setPosition);
}
function resetAntiKnockback() { antiKnockbackReady = false; }
function hookChatBubbles() {
if (!_feats.hideProTips) return;
const p = getPlayer();
if (!p || p[_SYM_CBUB]) return;
const _origFire = p.fire?.bind ? p.fire.bind(p) : null;
if (!_origFire) return;
p[_SYM_CBUB] = true;
_hookProp(p, 'fire', { fire(ev, a1) {
if (ev === 'Chat' && _proTipSentMsgs.size > 0 && typeof a1 === 'string' && _proTipSentMsgs.has(a1)) {
return p;
}
return _origFire.call(p, ev, a1);
} }.fire, false);
}
return { hookAntiDeath, hookAntiKnockback, hookNoclip, hookJumpMult, resetAntiKnockback, hookChatBubbles };
})();
createHUD();
let _padFindTimer = null;
let _padWalkTimer = null;
function _simulateKey(which, type) {
const codes = { 87: ['KeyW','w'], 65: ['KeyA','a'], 83: ['KeyS','s'], 68: ['KeyD','d'], 32: ['Space',' '] };
const c = codes[which];
if (!c) return;
const ev = new KeyboardEvent(type, { key: c[1], code: c[0], keyCode: which, which, bubbles: true, cancelable: true });
const cv = W.pc?.app?.graphicsDevice?.canvas;
if (cv) cv.dispatchEvent(ev); else window.dispatchEvent(ev);
const pcs = getPlayer()?.script?.playerController;
if (pcs?.touchInput) {
if (type === 'keydown') {
if (which === 87) pcs.touchInput.z = -1;
if (which === 83) pcs.touchInput.z = 1;
if (which === 65) pcs.touchInput.x = 1;
if (which === 68) pcs.touchInput.x = -1;
} else if (type === 'keyup') {
if (which === 87 || which === 83) pcs.touchInput.z = 0;
if (which === 65 || which === 68) pcs.touchInput.x = 0;
}
}
_lastSimTouchZ = pcs?.touchInput?.z;
_lastSimTouchX = pcs?.touchInput?.x;
if (_pgHidden() && type === 'keydown') {
const _nowKd = Date.now();
if (_nowKd - _simKeyDiagAt > 1000) {
_simKeyDiagAt = _nowKd;
const _kbK = W.pc?.app?.keyboard;
_dbgLog('room', 'simkey-diag', {
which, canvas: !!cv, touchZ: _lastSimTouchZ, touchX: _lastSimTouchX,
kbReflected: _kbK ? (_kbK.isPressed(which) ? 1 : 0) : -1, paused: !!W.pc?.isGamePaused, chat: !!W.pc?.isFocusedOnChat, died: !!W.pc?.isDied
}, 'debug');
}
}
}
let _lastSimTouchZ = 0;
let _lastSimTouchX = 0;
let _simKeyDiagAt = 0;
let _kccDtAt = 0;
let _kbDiagAt = { pad: 0, walk: 0 };
const _kbDiag = (tag, key, extra) => {
const _n = Date.now();
if (_n - _kbDiagAt[key] < 1000) return;
_kbDiagAt[key] = _n;
const _kbD = W.pc?.app?.keyboard;
if (!_kbD) return;
_dbgLog('room', tag, Object.assign({}, extra, {
paused: !!W.pc?.isGamePaused, chat: !!W.pc?.isFocusedOnChat, died: !!W.pc?.isDied,
kbW: _kbD.isPressed(87) ? 1 : 0, kbA: _kbD.isPressed(65) ? 1 : 0, kbS: _kbD.isPressed(83) ? 1 : 0, kbD: _kbD.isPressed(68) ? 1 : 0,
tickN: _tickN
}), 'debug');
};
function _releaseAllSimKeys() {
[87, 65, 83, 68].forEach(k => _simulateKey(k, 'keyup'));
}
let _tpDiagHooked = false;
let _tpDiagPlayer = null;
let _tpDiagLast = null;
let _tpDiagAt = 0;
function _setupTpDiag() {
const p = getPlayer();
if (!p || typeof p.getPosition !== 'function') { setTimeout(_setupTpDiag, 500); return; }
if (_tpDiagHooked && _tpDiagPlayer === p) { setTimeout(_setupTpDiag, 2000); return; }
_tpDiagPlayer = p; _tpDiagLast = null; _tpDiagHooked = false;
const orig = p.setPosition ? p.setPosition.bind(p) : null;
if (!orig) { setTimeout(_setupTpDiag, 500); return; }
_hookProp(p, 'setPosition', { setPosition(a, b, c) {
if (_pgHolding()) {
let nx, nz, ny;
if (b === undefined) { nx = a.x; ny = a.y; nz = a.z; }
else { nx = a; ny = b; nz = c; }
const cur = _tpDiagPlayer.getPosition();
const dx = nx - cur.x;
const dz = nz - cur.z;
const jump = Math.hypot(dx, dz);
if (_tpDiagLast && jump > 2.0) {
const _nA = Date.now();
if (_nA - _tpDiagAt > 400) {
_tpDiagAt = _nA;
_dbgLog('tp', 'candidate', { why: 'setPosition', jump: _mr2(jump), fromX: _mr2(cur.x), fromZ: _mr2(cur.z), toX: _mr2(nx), toZ: _mr2(nz), dy: _mr2(ny - (cur.y || 0)), ms: _nA - _tpDiagLast.t, hold: 1, noclip: !!_feats.noclip, room: getCachedRoomName() || null }, 'warn');
}
}
_tpDiagLast = { x: nx, z: nz, t: Date.now() };
} else {
_tpDiagLast = null;
}
return b === undefined ? orig(a) : orig(a, b, c);
} }.setPosition);
_tpDiagHooked = true;
_dbgLog('tp', 'diag-hooked', { room: getCachedRoomName() || null });
setTimeout(_setupTpDiag, 2000);
}
_setupTpDiag();
function _isTouchInterfering() {
const pcs = getPlayer()?.script?.playerController;
if (!pcs?.touchInput) return false;
const tz = pcs.touchInput.z;
const tx = pcs.touchInput.x;
if (tz === 0 && tx === 0) return false;
if (_lastSimTouchZ !== 0 && Math.abs(tz - _lastSimTouchZ) > 0.01) return true;
if (_lastSimTouchX !== 0 && Math.abs(tx - _lastSimTouchX) > 0.01) return true;
if (_lastSimTouchZ === 0 && Math.abs(tz) > 0.01) return true;
if (_lastSimTouchX === 0 && Math.abs(tx) > 0.01) return true;
return false;
}
function _resumeGame() {
if (!W.pc?.isGamePaused) return;
try {
const fle = _overlayMgr?.firstLockEntity;
if (fle?.enabled) fle.enabled = false;
const app = W.pc?.app;
if (app) { app.fire('GameManager:GameResumed'); app.fire('GameManager:GameResumeButton'); }
} catch (_) {}
}
function _cameraVectors() {
const pc = getPlayer()?.script?.playerController;
if (!pc?.cameraController) return null;
const yaw = pc.cameraController.eulers.x;
const q = new W.pc.Quat().setFromEulerAngles(0, yaw, 0);
const tf = new W.pc.Vec3();
const tr = new W.pc.Vec3();
q.transformVector(W.pc.Vec3.FORWARD, tf);
q.transformVector(W.pc.Vec3.RIGHT, tr);
return { fwd: tf, right: tr };
}
function _walkToPad(padPos, force) {
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; }
const p = getPlayer();
if (!p) { _releaseAllSimKeys(); return; }
const app = W.pc?.app;
if (app) {
const om = app.root?.find(e => e.script?.overlayManager)?.[0]?.script?.overlayManager;
if (om?.firstLockEntity?.enabled && om.onFirstLocked) {
om.onFirstLocked();
}
}
let lastKeys = null;
const _ours = new Set();
const _step = () => {
_resumeGame();
if (!force && typeof _sc === 'function') {
try {
const _s0 = _sc();
if (_s0?.active && _s0?.filter && _s0?.filter.trim()) {
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; }
_releaseAllSimKeys();
_dbgLog('room', 'walk-pad-abort', { reason: 'sniping' }, 'debug');
return;
}
} catch (_) {}
}
if (_snipePetActionActive || _stealRetryTimer) {
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; }
_releaseAllSimKeys();
return;
}
if (app?.keyboard && lastKeys && lastKeys.length) {
for (const kc of [87, 65, 83, 68]) {
if (app.keyboard.isPressed(kc) && !_ours.has(kc)) {
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; }
_releaseAllSimKeys();
_dbgLog('room', 'walk-pad-abort', { reason: 'user-input' });
return;
}
}
}
if (_isTouchInterfering()) {
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; }
_releaseAllSimKeys();
_dbgLog('room', 'walk-pad-abort', { reason: 'touch-interfere' });
return;
}
const cur = p.getPosition();
if (cur.y < -5) { _logMove('fall-rescue', cur.x, 1, cur.z); p.setPosition(cur.x, 1, cur.z); }
const dx = padPos.x - cur.x;
const dz = padPos.z - cur.z;
const dist = Math.hypot(dx, dz);
if (_pgHidden()) _kbDiag('walk-pad-hide-diag', 'pad', { dist: _r1(dist), x: _r1(cur.x), z: _r1(cur.z), padX: _r1(padPos.x), padZ: _r1(padPos.z), hold: _pgHolding() });
if (dist < 0.8) {
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; }
_releaseAllSimKeys();
let settleTicks = 0;
const _settle = () => {
settleTicks++;
const r = _getRoom();
if (r) {
const c2 = p.getPosition();
_rawSend(r)('p', { x: c2.x, y: c2.y, z: c2.z, w: Math.random() * 360 });
}
if (settleTicks < 8) setTimeout(_settle, 200);
};
_settle();
return;
}
const cv = _cameraVectors();
if (!cv) return;
const df = cv.fwd.x * dx + cv.fwd.z * dz;
const dr = cv.right.x * dx + cv.right.z * dz;
const nextKeys = [];
if (df < -0.3) nextKeys.push(87);
if (df > 0.3) nextKeys.push(83);
if (dr > 0.3) nextKeys.push(65);
if (dr < -0.3) nextKeys.push(68);
if (lastKeys) {
lastKeys.forEach(k => { if (!nextKeys.includes(k)) { _simulateKey(k, 'keyup'); _ours.delete(k); } });
}
nextKeys.forEach(k => { if (!lastKeys || !lastKeys.includes(k)) { _simulateKey(k, 'keydown'); _ours.add(k); } });
lastKeys = nextKeys;
};
_padWalkTimer = setInterval(_step, 100);
}
function _autoWalkToPad(force) {
if (!force && typeof _sc === 'function') {
try {
const _s0 = _sc();
if (_s0?.active && _s0?.filter && _s0?.filter.trim()) return;
} catch (_) {}
}
if (_padFindTimer) clearTimeout(_padFindTimer);
if (_padWalkTimer) { clearInterval(_padWalkTimer); _padWalkTimer = null; _releaseAllSimKeys(); }
let settleAttempts = 0;
let graceWaits = 0;
const _findPad = () => {
if (_snipePetActionActive || _stealRetryTimer) { _releaseAllSimKeys(); return; }
if (_joinGraceUntil > Date.now()) {
if (graceWaits < 30) { graceWaits++; _padFindTimer = setTimeout(_findPad, 200); return; }
}
settleAttempts++;
const base = getMyBase();
if (!base) { if (settleAttempts < 60) _padFindTimer = setTimeout(_findPad, 200); return; }
const btn = base.findByName('LockdownButton');
if (!btn) { if (settleAttempts < 60) _padFindTimer = setTimeout(_findPad, 200); return; }
const pos = btn.getPosition();
const ox = (Math.random() - 0.5) * 0.8;
const oz = (Math.random() - 0.5) * 0.8;
_dbgLog('room', 'walk-pad-start', { x: Math.round((pos.x + ox) * 10) / 10, z: Math.round((pos.z + oz) * 10) / 10, padX: Math.round(pos.x * 10) / 10, padZ: Math.round(pos.z * 10) / 10 });
_walkToPad({ x: pos.x + ox, z: pos.z + oz }, force);
};
_padFindTimer = setTimeout(_findPad, 100);
}
let _walkHomeTimer = null;
let _walkHomeDelay = null;
let _walkHomeCam = null;
let _walkHomeCamSpeed = 6;
let _walkHomeStuck = 0;
let _walkHomeNudgeUntil = 0;
let _walkHomeNudgeDir = 1;
function _cancelWalkHome() {
if (_padFindTimer) { clearTimeout(_padFindTimer); _padFindTimer = null; }
_walkHomePhase = null;
if (_padWalkTimer) {
clearInterval(_padWalkTimer); _padWalkTimer = null;
_dbgLog('room', 'walk-pad-abort', { reason: 'cancel' }, 'debug');
}
if (_walkHomeDelay) { clearTimeout(_walkHomeDelay); _walkHomeDelay = null; }
if (_walkHomeTimer) { clearInterval(_walkHomeTimer); _walkHomeTimer = null; }
_walkHomeStuck = 0;
_walkHomeNudgeUntil = 0;
_releaseAllSimKeys();
if (_walkHomeCam) { _walkHomeCam.mouseSpeed = _walkHomeCamSpeed; _walkHomeCam = null; }
}
function _scheduleWalkHome() {
if (typeof _sc === 'function' && _sc().walkHome === false) return;
if (_walkHomeTimer) return;
_cancelWalkHome();
_walkHome();
}
function _retryWalkHome() {
if (_walkHomeDelay) clearTimeout(_walkHomeDelay);
_walkHomeDelay = setTimeout(() => {
_walkHomeDelay = null;
try {
const _s = _sc();
if (_s?.active && _s?.filter && _s?.filter.trim() && _snipeMode() === 'steal') _scheduleWalkHome();
} catch (_) {}
}, 1000);
}
function _walkHome() {
_cancelWalkHome();
const p = getPlayer();
if (!p) { _dbgLog('room', 'walk-home-no-player', null, 'warn'); return; }
const myBase = getMyBase();
if (!myBase) { _dbgLog('room', 'walk-home-no-base', null, 'warn'); _retryWalkHome(); return; }
const basePos = myBase.getPosition();
if (!basePos) { _dbgLog('room', 'walk-home-no-basepos', null, 'warn'); _retryWalkHome(); return; }
const targetX = basePos.x, targetZ = basePos.z;
_dbgLog('room', 'walk-home-start', { tx: Math.round(targetX * 10) / 10, tz: Math.round(targetZ * 10) / 10 });
const startPos = p.getPosition();
const startZ = startPos.z;
let _stolenBX = null, _stolenBZ = null;
const _stolenOwner = typeof _preSnipeOwner !== 'undefined' ? _preSnipeOwner : null;
if (_stolenOwner) {
const bm = _getBasesManager();
if (bm?.activeBases) {
for (const bd of bm.activeBases) {
if (bd.data?.sessionId === _stolenOwner) {
const be = bm.baseEntities?.[bd.data.id];
if (be) {
const bp = be.getPosition();
if (bp) { _stolenBX = bp.x; _stolenBZ = bp.z; }
}
break;
}
}
}
}
let phase = 0;
if (_stolenBX == null) phase = 1;
_walkHomePhase = phase;
_dbgLog('move', 'walk-route', { targetX: _mr2(targetX), targetZ: _mr2(targetZ), startX: _mr2(startPos.x), startZ: _mr2(startZ), stolenBX: _stolenBX != null ? _mr2(_stolenBX) : null, stolenBZ: _stolenBZ != null ? _mr2(_stolenBZ) : null, owner: _stolenOwner || null });
const app = W.pc?.app;
let lastKeys = null;
const _ours = new Set();
let _progPos = null;
const _pc = p?.script?.playerController;
const _cam = _pc?.cameraController;
const _faceBack = (tx, tz, cx, cz) => { let a = Math.atan2(tx - cx, tz - cz) * (180 / Math.PI) + 180; if (a > 180) a -= 360; return a; };
if (_cam) {
_walkHomeCam = _cam;
_walkHomeCamSpeed = _cam.mouseSpeed;
_cam.mouseSpeed = 0;
const _toX = _stolenBX != null ? _stolenBX : 0;
const _toZ = _stolenBZ != null ? _stolenBZ : startZ;
_cam.eulers.x = _faceBack(_toX, _toZ, startPos.x, startPos.z);
_dbgLog('move', 'cam-turn', { phase, deg: _mr2(_cam.eulers.x), via: 'start' });
}
const _forceResume = () => { _resumeGame(); };
_forceResume();
const _step = () => {
if (_snipePetActionActive || _stealRetryTimer) {
_cancelWalkHome();
return;
}
if (!_getPetTycoon()?.isHoldingPet) {
const _lp = p.getPosition();
_dbgLog('room', 'walk-home-lost-pet', { hide: _pgHidden(), phase, dist: (() => { try { const _txx = phase === 0 ? _stolenBX : phase === 1 ? 0 : phase === 2 ? 0 : targetX; const _tzz = phase === 0 ? _stolenBZ : phase === 1 ? (_stolenBZ != null ? _stolenBZ : startZ) : phase === 2 ? targetZ : targetZ; return _r1(Math.hypot(_txx - _lp.x, _tzz - _lp.z)); } catch (_) { return -1; } })(), x: _r1(_lp.x), z: _r1(_lp.z), elapsed: _lastStealAt ? Date.now() - _lastStealAt : null }, 'warn');
_cancelWalkHome();
_autoWalkToPad(true);
return;
}
_forceResume();
if (app?.keyboard && lastKeys && lastKeys.length) {
for (const kc of [87, 65, 83, 68]) {
if (app.keyboard.isPressed(kc) && !_ours.has(kc)) {
_cancelWalkHome();
return;
}
}
}
if (_isTouchInterfering()) {
_cancelWalkHome();
return;
}
const cur = p.getPosition();
if (cur.y < -5) { _logMove('fall-rescue', cur.x, 1, cur.z); p.setPosition(cur.x, 1, cur.z); }
let tgtX, tgtZ;
if (phase === 0) { tgtX = _stolenBX; tgtZ = _stolenBZ; }
else if (phase === 1) { tgtX = 0; tgtZ = _stolenBZ != null ? _stolenBZ : startZ; }
else if (phase === 2) { tgtX = 0; tgtZ = targetZ; }
else { tgtX = targetX; tgtZ = targetZ; }
const dx = tgtX - cur.x;
const dz = tgtZ - cur.z;
const dist = Math.hypot(dx, dz);
if (_pgHidden()) _kbDiag('walk-hide-diag', 'walk', { phase, dist: _r1(dist), x: _r1(cur.x), z: _r1(cur.z), hold: _pgHolding(), stuck: _walkHomeStuck });
if (dist > 1.5) {
const _nowS = Date.now();
if (!_progPos) _progPos = { x: cur.x, z: cur.z, t: _nowS };
else {
const _moved = Math.hypot(cur.x - _progPos.x, cur.z - _progPos.z);
if (_nowS - _progPos.t > 1500 && _moved < 0.5) {
_walkHomeStuck++;
if (_walkHomeStuck > 1) _walkHomeNudgeDir = -_walkHomeNudgeDir;
_dbgLog('room', 'walk-home-stuck', { phase, dist: Math.round(dist * 10) / 10 }, 'warn');
if (lastKeys) {
lastKeys.forEach(k => { _simulateKey(k, 'keyup'); _ours.delete(k); });
}
lastKeys = null;
_progPos = { x: cur.x, z: cur.z, t: _nowS };
if (_cam && tgtX != null) {
_cam.eulers.x = _faceBack(tgtX, tgtZ, cur.x, cur.z);
_dbgLog('move', 'cam-turn', { phase, deg: _mr2(_cam.eulers.x), via: 'stuck' });
}
if (_walkHomeStuck >= 2) {
_walkHomeNudgeUntil = Date.now() + Math.min(600 + _walkHomeStuck * 250, 2000);
}
if (_walkHomeStuck >= 8) {
_cancelWalkHome();
_dbgLog('room', 'walk-home-rescue', { phase, dist: Math.round(dist * 10) / 10, stuck: _walkHomeStuck, pet: 'drop' }, 'warn');
try {
const _rR = _getRoom();
if (_rR) _rawSend(_rR)('dropPet');
} catch (_) {}
return;
}
return;
}
if (_moved >= 0.5 || _nowS - _progPos.t > 1500) {
if (_moved >= 0.5) _walkHomeStuck = 0;
_progPos = { x: cur.x, z: cur.z, t: _nowS };
}
}
} else {
_progPos = null;
}
if (dist < 0.6) {
phase++;
_walkHomePhase = phase;
_dbgLog('move', 'walk-phase', { phase, tx: _mr2(tgtX), tz: _mr2(tgtZ), x: _mr2(cur.x), z: _mr2(cur.z) });
if (phase >= 4) {
_cancelWalkHome();
_dbgLog('move', 'walk-done');
_autoWalkToPad(true);
return;
}
let _ntX, _ntZ;
if (phase === 1) { _ntX = 0; _ntZ = _stolenBZ != null ? _stolenBZ : startZ; }
else if (phase === 2) { _ntX = 0; _ntZ = targetZ; }
else { _ntX = targetX; _ntZ = targetZ; }
if (_cam && _ntX != null) {
_cam.eulers.x = _faceBack(_ntX, _ntZ, cur.x, cur.z);
_dbgLog('move', 'cam-turn', { phase, deg: _mr2(_cam.eulers.x), via: 'phase' });
}
}
const cv = _cameraVectors();
if (!cv) return;
const df = cv.fwd.x * dx + cv.fwd.z * dz;
const dr = cv.right.x * dx + cv.right.z * dz;
const nextKeys = [];
if (df < -0.3) nextKeys.push(87);
if (df > 0.3) nextKeys.push(83);
if (dr > 0.3) nextKeys.push(65);
if (dr < -0.3) nextKeys.push(68);
if (_walkHomeNudgeUntil > Date.now()) nextKeys.push(_walkHomeNudgeDir > 0 ? 68 : 65);
if (lastKeys) {
lastKeys.forEach(k => { if (!nextKeys.includes(k)) { _simulateKey(k, 'keyup'); _ours.delete(k); } });
}
nextKeys.forEach(k => { if (!lastKeys || !lastKeys.includes(k)) { _simulateKey(k, 'keydown'); _ours.add(k); } });
lastKeys = nextKeys;
};
_walkHomeTimer = setInterval(_step, 100);
}
(function _infectionWeaponFix() {
var _hooked = false;
function _fix() {
var nm = _getNetworkManager();
if (!nm || (nm.room?.name !== 'Infection' && nm.gameMode !== 'Infection')) return;
var pl = W.pc?.app?.root?.findByName('Player');
if (!pl) return;
var ih = pl.findByName('ItemsHolder');
if (!ih || !ih.children) return;
var mgr = null;
try {
var comps = W.pc.app.root.findComponents('script');
if (comps) {
for (var i = 0; i < comps.length; i++) {
var scrs = comps[i]._scripts;
if (scrs) {
for (var j = 0; j < scrs.length; j++) {
var s = scrs[j];
if (s && s.selectedItem !== undefined && s.items && s.items.length > 10) { mgr = s; break; }
}
}
if (mgr) break;
}
}
} catch (_) {}
if (!mgr || !mgr.items) { ih.enabled = false; return; }
var sel = mgr.selectedItem;
var kids = ih.children;
for (var k = 0; kids && k < kids.length; k++) {
var kid = kids[k];
if (!kid) continue;
var matched = false;
for (var d in mgr.items) {
if (mgr.items[d] && mgr.items[d].entity === kid) {
kid.enabled = (mgr.items[d].name === sel);
matched = true;
break;
}
}
if (!matched) kid.enabled = false;
}
ih.enabled = (sel !== 'Hand');
}
function _install() {
if (_hooked) return;
var app = W.pc?.app;
if (!app || typeof app.on !== 'function') return;
app.on('update', function() { _fix(); });
_hooked = true;
}
setInterval(_install, 500);
})();
(function _killRotateOverlay() {
var _done = false;
var _tries = 0;
function _kill() {
if (_done) return;
var app = W.pc && W.pc.app;
if (!app || !app.root) {
if (++_tries < 100) setTimeout(_kill, 200);
return;
}
try {
var omEnts = app.root.find(function(e) { return e.script && e.script.overlayManager; });
var mtEnts = app.root.find(function(e) { return e.script && e.script.mobileTouch; });
if (!omEnts || !omEnts.length || !mtEnts || !mtEnts.length) {
if (++_tries < 200) setTimeout(_kill, 500);
return;
}
var om = omEnts[0].script.overlayManager;
var mt = mtEnts[0].script.mobileTouch;
var ent = om.rotateScreenOverlay;
if (ent) {
ent.enabled = false;
}
om.rotateScreenOverlay = null;
try { app.off('CameraContoller:MobileOrientationChanged', om.onOrientationChanged, om); } catch (_) {}
mt.isLandscape = true;
mt.firstCheckOrientation = true;
mt.updateControlsVisibility = function() {
try { this.horizontalControls && (this.horizontalControls.enabled = true); } catch (_) {}
try { this.verticalControls && (this.verticalControls.enabled = false); } catch (_) {}
try { this.horizontalMovementEntityDefault && (this.horizontalMovementEntityDefault.enabled = true); } catch (_) {}
try { this.verticalMovementEntityDefault && (this.verticalMovementEntityDefault.enabled = false); } catch (_) {}
};
_spoofMap.set(mt.updateControlsVisibility, _origFpToString.call(mt.updateControlsVisibility));
var mtProto = Object.getPrototypeOf(mt);
try { mtProto.checkOrientation = () => {}; } catch (_) {}
mt.updateControlsVisibility();
try {
var jb = mt.mobileActionButtonVertical;
if (jb) {
var lp = jb.getLocalPosition();
jb.setLocalPosition(lp.x + 0.22, lp.y, lp.z);
}
var ib = mt.mobileItemButtonVertical;
if (ib) {
var ilp = ib.getLocalPosition();
ib.setLocalPosition(ilp.x + 0.22, ilp.y, ilp.z);
}
} catch (_) {}
_done = true;
} catch (_) {
if (++_tries < 200) setTimeout(_kill, 500);
}
}
setTimeout(_kill, 100);
})();
const _ui = {
snipeStatus: $('ml-snipe-status'),
snipeToggle: $('ml-snipe-toggle'),
reticle: $('ml-reticle'),
coords: $('ml-coords'),
};
_syncCoordsOverlay();
setTimeout(() => _syncCoordsOverlay(), 1200);
const _setSS = (msg, state) => {
const el = _ui.snipeStatus;
if (!el) return;
if (el.textContent !== msg) el.textContent = msg;
if (state !== undefined) {
const nextState = String(state);
if (el.dataset.mlState !== nextState) el.dataset.mlState = nextState;
}
};
const _setReticleVisible = (visible) => {
const el = _ui.reticle;
if (!el) return;
const nextDisplay = visible ? 'block' : 'none';
if (el.style.display !== nextDisplay) el.style.display = nextDisplay;
};
loadWaypoints();
{
const mfc = document.createElement('div');
mfc.classList.add('ml-mobile-fly');
mfc.innerHTML = '<button class="ml-mfly-up ml-mfly">' + T.mobile_up + '</button><button class="ml-mfly-down ml-mfly">' + T.mobile_down + '</button><button class="ml-msprint ml-mfly ml-msprint-btn">' + T.mobile_sprint + '</button><button class="ml-mfly-collapse ml-mfly ml-mcollapse">\u229f</button>';
const mfcStyle = document.createElement('style');
mfcStyle.textContent = [
'.ml-mobile-fly{position:fixed;right:2.5vmin;bottom:3vmin;z-index:15;display:none;flex-direction:column;align-items:flex-end;gap:clamp(6px,1.5vmin,12px);pointer-events:none}',
'.ml-mfly{pointer-events:auto;width:clamp(52px,12vmin,80px);height:clamp(52px,12vmin,80px);border-radius:50%;border:2px solid rgba(255,180,60,.35);background:rgba(15,25,90,.65);color:#FFCA28;font-size:clamp(14px,3.5vmin,22px);font-weight:700;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background .12s,border-color .12s,transform .08s}',
'.ml-mfly:active{transform:scale(.92);background:rgba(40,70,180,.5);border-color:rgba(255,180,60,.6)}',
'.ml-mfly.on{background:rgba(100,180,100,.4);border-color:rgba(140,230,140,.5)}',
'.ml-mcollapse{width:clamp(36px,8vmin,52px);height:clamp(36px,8vmin,52px);font-size:clamp(16px,4vmin,24px);border-color:rgba(255,180,60,.25);background:rgba(15,25,90,.65)}',
'.ml-mcollapse:active{background:rgba(40,70,180,.35)}',
'.ml-mobile-fly.collapsed .ml-mfly:not(.ml-mcollapse){display:none}',
'.ml-msprint-btn{border-color:rgba(255,180,60,.35);background:rgba(80,55,30,.55);font-size:clamp(11px,2.8vmin,16px)}',
'.ml-msprint-btn:active{background:rgba(220,160,40,.4);border-color:rgba(255,200,80,.6)}',
'.ml-msprint-btn.on{background:rgba(220,160,40,.4);border-color:rgba(255,200,80,.5)}',
].join('');
_sr.appendChild(mfcStyle);
_sr.appendChild(mfc);
const mflyUp = $('ml-mfly-up');
const mflyDown = $('ml-mfly-down');
const msprint = $('ml-msprint');
const mCollapse = $('ml-mfly-collapse');
let _collapseLock = false;
const toggleCollapse = () => {
if (_collapseLock) return;
_collapseLock = true;
setTimeout(() => _collapseLock = false, 200);
const collapsed = mfc.classList.toggle('collapsed');
mCollapse.textContent = collapsed ? '⊞' : '⊟';
};
mCollapse.addEventListener('touchstart', e => { e.preventDefault(); toggleCollapse(); });
mCollapse.addEventListener('click', toggleCollapse);
msprint.addEventListener('touchstart', e => {
e.preventDefault();
if (!_feats.sprint) return;
const p = getPlayer(), k = getKcc(p);
if (!k) return;
if (k._horizontal || k._vertical) {
if (!_feats.noclip) { _feats.noclip = true; hookNoclip(); _shiftNoclipForced = true; }
} else {
_setReticleVisible(true);
}
});
msprint.addEventListener('touchend', e => {
e.preventDefault();
if (!_feats.sprint) return;
_setReticleVisible(false);
if (_shiftNoclipForced) { _feats.noclip = false; hookNoclip(); _shiftNoclipForced = false; }
else _blink();
});
msprint.addEventListener('touchcancel', () => {
_setReticleVisible(false);
if (_shiftNoclipForced) { _feats.noclip = false; hookNoclip(); _shiftNoclipForced = false; }
});
msprint.addEventListener('mousedown', e => {
e.preventDefault();
if (!_feats.sprint) return;
const p = getPlayer(), k = getKcc(p);
if (!k) return;
if (k._horizontal || k._vertical) {
if (!_feats.noclip) { _feats.noclip = true; hookNoclip(); _shiftNoclipForced = true; }
} else {
_setReticleVisible(true);
}
});
msprint.addEventListener('mouseup', e => {
e.preventDefault();
if (!_feats.sprint) return;
_setReticleVisible(false);
if (_shiftNoclipForced) { _feats.noclip = false; hookNoclip(); _shiftNoclipForced = false; }
else _blink();
});
msprint.addEventListener('mouseleave', () => {
_setReticleVisible(false);
if (_shiftNoclipForced) { _feats.noclip = false; hookNoclip(); _shiftNoclipForced = false; }
});
mflyUp.addEventListener('touchstart', e => {
e.preventDefault();
if (!_feats.fly) return;
const p = getPlayer(), k = getKcc(p);
if (!k) return;
if (!_fly.active) flyOn(k, true);
_fly.up = true;
});
mflyUp.addEventListener('touchend', e => {
e.preventDefault();
_fly.up = false;
});
mflyUp.addEventListener('touchcancel', () => { _fly.up = false; });
mflyDown.addEventListener('touchstart', e => {
e.preventDefault();
if (!_feats.fly || !_fly.active) return;
_fly.down = true;
});
mflyDown.addEventListener('touchend', e => {
e.preventDefault();
_fly.down = false;
});
mflyDown.addEventListener('touchcancel', () => { _fly.down = false; });
}
let _flyClickTime = 0;
$('ml-fly').addEventListener('click', () => {
if (!_feats.fly || isMobile) return;
const now = Date.now();
if (now - _flyClickTime < 300) return;
_flyClickTime = now;
const p = getPlayer(), k = getKcc(p);
if (!k) return;
if (_fly.active) flyOff(k); else flyOn(k, true);
});
$('ml-lock').addEventListener('click', () => {
_feats.autoLock = !_feats.autoLock;
if (_feats.autoLock) triggerLock();
saveSettings();
_dbgLog('feat', 'lock-toggle', { on: _feats.autoLock }, 'debug');
const lockEl = $('ml-f-autolock'); if (lockEl) lockEl.classList.toggle('on', _feats.autoLock);
flash('ml-lock');
});
function toggleSlots(forceOpen) {
if (!_feats.waypoints) return;
const pop = $('ml-slots-pop');
if (!pop) return;
const nextOpen = forceOpen == null ? !pop.classList.contains('open') : !!forceOpen;
_togglePanel(pop, forceOpen, () => {
_dbgLog('ui', nextOpen ? 'slots-open' : 'slots-close');
pop.dispatchEvent(new CustomEvent('ml-rebuild'));
});
}
const { _toggleInvisible, _updateInvisEffect, _towerComplete } = (() => {
let _invisTimer = null;
let _invisActive = false;
let _invisLogged = false;
function _toggleInvisible(on) {
clearInterval(_invisTimer);
_invisTimer = null;
if (_invisLogged !== on) { _invisLogged = on; _dbgLog('feat', on ? 'invis-on' : 'invis-off', null, 'debug'); }
_netGuard((room, rawSend) => {
rawSend('triggerFunction', { name: on ? 'Disable' : 'Enable', value: true });
if (on) {
_invisTimer = setInterval(() => {
const r = _getRoom();
if (!r || !_feats.invisible) { clearInterval(_invisTimer); _invisTimer = null; return; }
_rawSend(r)('triggerFunction', { name: 'Disable', value: true });
}, 3000);
}
if (!on) _log('info', 'invisible: OFF');
});
}
function _updateInvisEffect(on) {
if (on === _invisActive) return;
_invisActive = on;
_updateCharTransparency();
}
function _towerComplete() {
_netGuard((room, rawSend) => {
if (room.name !== 'TowerParkour') { _log('info', 'tower: not in TowerParkour'); return; }
flash('ml-tc');
for (let i = 1; i <= 10; i++) rawSend('checkPointTake', i);
rawSend('checkPointTake', 777);
_log('info', 'tower: sent checkpoints 1-10 + 777 (instant complete)');
_dbgLog('feat', 'tower-complete');
_trySendProTip();
});
}
return { _toggleInvisible, _updateInvisEffect, _towerComplete };
})();
let _tlPhase = 'idle';
let _tlAt = 0;
let _tlWinAt = 0;
const _TL_WIN_MS = 2500;
const _TL_READY_MS = 1500;
const _TL_HOP_RETRY_MS = 600;
function _towerLoopToggle() {
if (_feats.towerLoop) _towerLoopStop();
else _towerLoopStart();
saveSettings();
_dbgLog('towerloop', _feats.towerLoop ? 'on' : 'off');
}
function _towerLoopStart() {
_feats.towerLoop = true;
_tlPhase = 'idle';
_tlAt = 0;
_tlWinAt = 0;
}
function _towerLoopStop() {
_feats.towerLoop = false;
_tlPhase = 'idle';
_tlAt = 0;
_tlWinAt = 0;
}
function _towerLoopStep() {
if (!_feats.towerLoop) return;
const now = Date.now();
if (now < _tlAt) return;
const nm = _getNetworkManager();
const rn = nm?.room?.name;
const ready = !!nm?.room?.state?.players;
if (_tlPhase === 'idle') {
if (rn !== 'TowerParkour' || !ready) {
_tlAt = now + 800;
return;
}
_tlPhase = 'winning';
_tlWinAt = now;
_towerComplete();
_tlAt = now + _TL_WIN_MS;
return;
}
if (_tlPhase === 'winning') {
_tlPhase = 'hopping';
_tlAt = now + 800;
performServerHop('TowerParkour');
return;
}
if (_tlPhase === 'hopping') {
if (_hopInProgress) {
_tlAt = now + 600;
return;
}
const nmc = _getNetworkManager();
const rnc = nmc?.room?.name;
const rd = !!nmc?.room?.state?.players;
if (rnc === 'TowerParkour' && rd) {
_tlPhase = 'idle';
_tlAt = now + _TL_READY_MS;
} else {
_tlPhase = 'hopping';
_tlAt = now + _TL_HOP_RETRY_MS;
performServerHop('TowerParkour');
}
return;
}
}
let _myPetTokens = new Set();
let _myPetTokensTime = 0;
const { attackClosestEnemy, _refreshMyPetTokens } = (() => {
let _lastAttackTime = 0;
function _trackAttack(player, target, rawSend, dir, onDone) {
const t0 = performance.now();
let hit = false;
let attacks = 0;
let prevPos = null;
const step = () => {
const ep = target.getPosition();
let aimX = ep.x, aimY = ep.y, aimZ = ep.z;
if (prevPos) {
const vx = ep.x - prevPos.x;
const vz = ep.z - prevPos.z;
aimX += vx * 6;
aimZ += vz * 6;
}
prevPos = { x: ep.x, y: ep.y, z: ep.z };
const d = Math.atan2(aimX - player.getPosition().x, aimZ - player.getPosition().z) * (180 / Math.PI);
teleport(player, vec3({ x: aimX, y: aimY, z: aimZ }), 'attack');
rawSend('p', { x: aimX, y: aimY, z: aimZ, w: d });
const elapsed = performance.now() - t0;
if (elapsed >= 50 && attacks < 3) { rawSend('attack', 'Baton'); attacks++; hit = true; }
if (elapsed < 300) { requestAnimationFrame(step); }
else { if (!hit) rawSend('attack', 'Baton'); onDone?.(); }
};
step();
}
function attackClosestEnemy() {
_netGuard((room, rawSend) => {
if (room.name !== 'PetTycoon') return;
const now = Date.now();
if (now - _lastAttackTime < 100) return;
_lastAttackTime = now;
const player = getPlayer();
if (!player) return;
const holder = _getEnemyHolder();
if (!holder?.children?.length) {
_log('info', 'attack: no enemies found');
return;
}
const pPos = player.getPosition();
let closest = null, closestDist = Infinity, closestName = 'Player', closestEntity = null;
for (const enemy of holder.children) {
if (typeof _isImmortalEntity === 'function' && _isImmortalEntity(enemy)) continue;
const name = _getEnemyName(enemy);
const ePos = enemy.getPosition();
const d = pPos.distance(ePos);
if (d < closestDist) {
closestDist = d;
closest = ePos;
closestEntity = enemy;
closestName = name || 'Player';
}
}
if (!closest || !closestEntity) return;
backPos = capturePos(player);
const myPos = player.getPosition();
const dir = Math.atan2(closest.x - myPos.x, closest.z - myPos.z) * (180 / Math.PI);
_trackAttack(player, closestEntity, rawSend, dir, () => {
_log('info', 'attack: hit ' + closestName + ' (' + Math.floor(closestDist) + 'm)');
_dbgLog('combat', 'attack-hit', { target: closestName, dist: Math.floor(closestDist) });
});
});
}
function _refreshMyPetTokens() {
const now = Date.now();
if (now - _myPetTokensTime < 10000 && _myPetTokens.size > 0) return;
const nm = _getNetworkManager();
const room = nm?.room;
const myId = room?.sessionId;
if (!myId) return;
const root = W.pc?.app?.root;
if (!root) return;
const heldByThieves = new Set();
if (room.state?.players) {
room.state.players.forEach((p, sid) => {
if (sid !== myId && p.isHoldingPet && p.holdingPetToken) heldByThieves.add(p.holdingPetToken);
});
}
const fresh = new Set();
root.find(e => {
if (!e.script) return false;
for (const k of Object.keys(e.script)) {
const s = e.script[k];
if (s?.basePets && s.basePets.size > 0) {
s.basePets.forEach((pet, token) => {
if (pet?.owner === myId) fresh.add(token);
});
return true;
}
}
return false;
});
for (const t of _myPetTokens) {
if (heldByThieves.has(t)) fresh.add(t);
}
_myPetTokens = fresh;
_myPetTokensTime = now;
}
return { attackClosestEnemy, _refreshMyPetTokens };
})();
function _dropHeldPet() {
const pt = _getPetTycoon();
if (!pt?.isHoldingPet) return false;
const room = _getNetworkManager()?.room;
if (!room) return false;
const rawSend = _rawSend(room);
const token = pt.heldPetToken;
_dbgLog('combat', 'manual-drop-steal', { token: token != null ? String(token) : null });
rawSend('dropPet');
return true;
}
window.addEventListener('keydown', e => {
const openPanel = $('ml-pets')?.classList.contains('open') ? 'pets'
: $('ml-settings')?.classList.contains('open') ? 'settings'
: $('ml-plist')?.classList.contains('open') ? 'plist'
: $('ml-dialog')?.classList.contains('open') ? 'dialog'
: $('ml-slots-pop')?.classList.contains('open') ? 'slots'
: $('ml-snipe')?.classList.contains('open') ? 'snipe'
: $('ml-accounts')?.classList.contains('open') ? 'accounts'
: null;
if (openPanel) {
if (e.code === 'Escape') {
e.stopPropagation();
e.preventDefault();
const closeMap = { snipe: 'ml-snipe-close', pets: 'ml-pets-close', settings: 'ml-settings-close', plist: 'ml-plist-close', dialog: 'ml-dialog-close', slots: 'ml-slots-pop-close', accounts: 'ml-accounts-close' };
$(closeMap[openPanel])?.click();
return;
}
const active = _sr.activeElement || document.activeElement;
if (active && (active.tagName === 'INPUT' || active.tagName === 'TEXTAREA')) {
e.stopPropagation();
return;
}
const toggleMap = { snipe: KEYBINDS.snipe, pets: KEYBINDS.pets, settings: KEYBINDS.settings, plist: KEYBINDS.cuddle, dialog: KEYBINDS.help, slots: KEYBINDS.slots, accounts: KEYBINDS.acctToggle };
if (e.code === toggleMap[openPanel]) {
e.stopPropagation();
e.preventDefault();
const closeMap2 = { snipe: 'ml-snipe-close', pets: 'ml-pets-close', settings: 'ml-settings-close', plist: 'ml-plist-close', dialog: 'ml-dialog-close', slots: 'ml-slots-pop-close', accounts: 'ml-accounts-close' };
$(closeMap2[openPanel])?.click();
return;
}
if (openPanel === 'snipe' && e.code === KEYBINDS.snipeToggle) {
e.stopPropagation();
e.preventDefault();
$('ml-snipe-toggle')?.click();
return;
}
}
const active = _sr.activeElement || document.activeElement;
if (active?.tagName === 'INPUT' || active?.tagName === 'TEXTAREA') return;
if (kbListeningRow) return;
if (e.code === 'KeyX') {
if (_dropHeldPet()) {
e.preventDefault();
e.stopPropagation();
return;
}
}
if (e.code === 'Escape' && W.pc?.isGamePaused) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
W.pc.app.fire('GameManager:GameResume');
return;
}
if (e.code === 'KeyR' && _getNetworkManager()?.room?.name === 'TowerParkour') {
_rbManualDeathAt = Date.now();
}
const _simpleKeys = {
[KEYBINDS.cuddle]: () => { if (_feats.cuddle) $('ml-tp')?.click(); },
[KEYBINDS.settings]: () => $('ml-cfg')?.click(),
[KEYBINDS.pets]: () => { if (_feats.pets) $('ml-pets-btn')?.click(); },
[KEYBINDS.autolock]: () => $('ml-lock')?.click(),
[KEYBINDS.snipe]: () => $('ml-snipe-btn')?.click(),
[KEYBINDS.rng]: () => {
if (_getNetworkManager()?.room?.name !== 'SwordRNG') return false;
$('ml-rng-btn')?.click();
},
[KEYBINDS.snipeToggle]: () => _ui.snipeToggle?.click(),
[KEYBINDS.attack]: () => { const nm = _getNetworkManager(); if (!nm || nm.room?.name !== 'PetTycoon') return false; attackClosestEnemy(); return true; },
[KEYBINDS.invisible]: () => $('ml-invis')?.click(),
[KEYBINDS.towerComplete]: () => _towerComplete(),
[KEYBINDS.towerLoop]: () => $('ml-tcl')?.click(),
[KEYBINDS.slots]: () => { if (_feats.waypoints) toggleSlots(); },
[KEYBINDS.help]: () => $('ml-help')?.click(),
[KEYBINDS.acctToggle]: () => $('ml-acct-btn')?.click(),
[KEYBINDS.prv]: (() => { let _busy = false; return () => { if (_busy) return; const app = W.pc?.app; const nm = _getNetworkManager(); const mode = nm?.room?.name || nm?.gameMode || 'PetTycoon'; if (!app || !nm) return; if (_hopInProgress || nm.isConnecting) return; _busy = true; _dbgLog('prv', 'create', { mode }); if (nm.client && typeof nm.joinByMode === 'function') { const _origJBM = nm.joinByMode; _hookProp(nm, 'joinByMode', { joinByMode(m) { nm.joinByMode = _origJBM; if (nm.isConnecting) return false; nm.isConnecting = true; nm.client.create(m).then(r => { try { W.pc.sessionId = r.sessionId; nm.onConnected(r); } catch (_) { nm.isConnecting = false; } }).catch(() => { nm.isConnecting = false; nm.joinByMode = _origJBM; _origJBM.call(nm, m); }); } }.joinByMode); } const onConn = () => { app.off('NetworkManager:Connected', onConn); setTimeout(() => { _busy = false; _dbgLog('prv', 'ready', { mode }); }, 300); }; app.on('NetworkManager:Connected', onConn); setTimeout(() => { app.off('NetworkManager:Connected', onConn); _busy = false; }, 15000); setTimeout(() => app.fire('GameManager:InitGameMode', mode), 100); }; })(),
[KEYBINDS.firstPerson]: () => { _feats.firstPerson = !_feats.firstPerson; const el = $('ml-f-firstperson'); if (el) el.classList.toggle('on', _feats.firstPerson); _dbgLog('feat', _feats.firstPerson ? 'fpv-on' : 'fpv-off', null, 'debug'); saveSettings(); },
Digit0: () => { const room = _getRoom(); if (!room) return; const msg = _genProTip(); if (_feats.hideProTips) _proTipSentMsgs.add(msg); const rawSend = _rawSend(room); rawSend(1, msg); _dbgLog('protip', 'sent', { via: 'hotkey' }); setTimeout(() => { _proTipSentMsgs.delete(msg); }, 5000); },
};
const _skHandler = _simpleKeys[e.code];
if (_skHandler) { const handled = _skHandler(); if (handled !== false) { e.preventDefault(); e.stopPropagation(); } if (handled !== false) return; }
const player = getPlayer();
const kcc = getKcc(player);
if (!kcc) return;
if (_cuddle.active && MOVE_KEYS.has(e.code) && e.isTrusted) {
_cuddle.active = false;
_cuddle.target = null;
_cuddle.walking = false;
if (_cuddle.noclipWasOff) { _cuddle.noclipWasOff = false; _feats.noclip = false; hookNoclip(); }
_releaseAllSimKeys();
_cuddle.stationaryTicks = 0;
_cuddle.lastSnap = 0;
_cuddle.firstOrient = false;
_cuddle.wasRunning = false;
_cuddle.interp = null;
_cuddle.animHooked = false;
_cuddle.idleStopped = false;
_cuddle.firstSnapDone = false;
_dbgLog('cuddle', 'keydown-cancel', null, 'debug');
}
const numpadMatch = e.code.match(/^Numpad(\d)$/);
let slotIdx = numpadMatch ? parseInt(numpadMatch[1]) : -1;
if (slotIdx < 0 && e.location === 3) {
const alt = { Insert: 0, End: 1, ArrowDown: 2, PageDown: 3, ArrowLeft: 4, Clear: 5, ArrowRight: 6, Home: 7, ArrowUp: 8, PageUp: 9 };
slotIdx = alt[e.key] ?? -1;
}
if (slotIdx >= 0 && _feats.waypoints) {
const idx = slotIdx;
if (e.ctrlKey) {
e.preventDefault();
e.stopPropagation();
slots[idx] = capturePos(player);
saveWaypoints();
flash('ml-slots');
_clog(`[slot ${idx}] saved`, slots[idx]);
_dbgLog('nav', 'slot-save', { idx }, 'debug');
return;
} else if (slots[idx]) {
e.preventDefault();
e.stopPropagation();
backPos = capturePos(player);
teleport(player, slots[idx], 'slot');
saveWaypoints();
flash('ml-slots');
_clog(`[slot ${idx}] teleported to`, slots[idx]);
_dbgLog('nav', 'slot-tp', { idx });
return;
}
}
if (e.code === 'KeyE') _leverKeyHeld = true;
if (e.code === KEYBINDS.fly && !_cuddle.walking) {
if (_fly.active) {
e.stopPropagation();
_fly.up = true;
} else if (!_fly.holdTimer) {
_fly.holdTimer = setTimeout(() => {
_fly.holdTimer = null;
const p = getPlayer();
const k = getKcc(p);
if (k && !_fly.active && _feats.fly && !(_feats.walkUpWalls && k._grounded)) { flyOn(k, true); _fly.up = true; }
}, 200);
}
return;
}
if (e.code === KEYBINDS.flyDown && _fly.active) { _fly.down = true; return; }
if (e.key === 'Shift' && _feats.sprint) { if (kcc._horizontal || kcc._vertical) { if (!_feats.noclip) { _feats.noclip = true; hookNoclip(); _shiftNoclipForced = true; } } else { _setReticleVisible(true); } return; }
if (e.code === KEYBINDS.setHome) {
e.preventDefault();
if (!_feats.waypoints) return;
homePos = capturePos(player);
saveWaypoints();
flash('ml-home');
_dbgLog('nav', 'home-set-key');
return;
}
if (e.code === KEYBINDS.home) {
e.preventDefault();
if (!_feats.waypoints) return;
if (homePos) {
backPos = capturePos(player);
teleport(player, homePos, 'home');
saveWaypoints();
flash('ml-go');
_dbgLog('nav', 'home-tp-key');
}
return;
}
if (e.code === KEYBINDS.back) {
e.preventDefault();
if (!_feats.waypoints) return;
if (backPos) {
const cur = capturePos(player); teleport(player, backPos, 'back'); backPos = cur;
saveWaypoints();
flash('ml-back');
_dbgLog('nav', 'back-tp-key');
}
}
}, true);
document.addEventListener('mousedown', () => {
if (document.pointerLockElement || anyPanelOpen()) return;
const fle = _overlayMgr?.firstLockEntity;
if (!_overlayMgr || fle?.enabled) return;
const popup = _getPopup();
if (popup?.children?.some(c => c.enabled)) return;
if (!W.pc?.isGamePaused && !W.pc?.isDied) {
W.pc?.app?.fire('GameManager:LockMouse');
}
}, true);
const _probeRooms = (() => {
const _PROBE_CONNECT_TMO = 5000;
const _PROBE_SCAN_TMO = 4000;
const _PROBE_BATCH = 30;
const _PROBE_BURST = 15;
const _PROBE_PARALLEL = 15;
const _PROBE_COOLDOWN = 6000;
const _PROBE_FETCH_TMO = 3000;
const _WAVES_DESPAWN_MIN_SECS = 10;
const _PROBE_RELOCK_SOON_MS = 10000;
let _aborted = false;
const _activeProbes = new Set();
let _sharedClient = null;
let _throttledUntil = 0;
const _THROTTLE_MS = 8000;
const _THROTTLE_DRAIN_MS = 45000;
const _THROTTLE_DEEP_MS = 60000;
let _throttleStreak = 0;
let _keepAliveRoom = null;
const _recentlyProbed = new Map();
const _deadRooms = new Map();
const _noMatchUntil = new Map();
const _skipLogAt = new Map();
const _NO_MATCH_CD_STEAL = 25000;
let _scanReport = [];
const _PROBE_DEAD_TOLERANCE = 25000;
function _markRoomDead(roomId) {
if (!roomId) return;
_deadRooms.set(roomId, Date.now() + _PROBE_DEAD_TOLERANCE);
_dbgLog('probe', 'dead-mark', { roomId, forSecs: _PROBE_DEAD_TOLERANCE / 1000 });
}
function _markRoomAlive(roomId) {
if (!roomId) return;
if (_deadRooms.has(roomId)) {
_deadRooms.delete(roomId);
_dbgLog('probe', 'dead-clear', { roomId });
}
}
function _markNoMatch(roomId) {
if (!roomId) return;
_noMatchUntil.set(roomId, Date.now() + _NO_MATCH_CD_STEAL);
}
function _clearNoMatch(roomId) {
if (!roomId) return;
_noMatchUntil.delete(roomId);
}
const _retryPlan = new Map();
const _RETRY_BASE_MS = 10000;
const _RETRY_MAX_MS = 160000;
const _RETRY_MAX_ATTEMPTS = 5;
const _RETRY_PLAN_CAP = 20;
function _bumpRetry(roomId, matches) {
if (!roomId) return;
const _cur = _retryPlan.get(roomId);
const _attempt = (_cur ? _cur.attempt : 0) + 1;
if (_attempt > _RETRY_MAX_ATTEMPTS) {
_retryPlan.delete(roomId);
_dbgLog('probe', 'retry-dropped', { roomId, attempts: _attempt - 1 });
return;
}
const _delay = Math.min(_RETRY_MAX_MS, _RETRY_BASE_MS * Math.pow(2, _attempt - 1));
_retryPlan.set(roomId, { attempt: _attempt, nextTryAt: Date.now() + _delay, matches: matches || 0 });
if (_retryPlan.size > _RETRY_PLAN_CAP) {
let _evict = null;
for (const [rid2, p2] of _retryPlan) {
if (!_evict || (p2.nextTryAt || 0) > _evict[1].nextTryAt) _evict = [rid2, p2];
}
if (_evict) _retryPlan.delete(_evict[0]);
}
_dbgLog('probe', 'retry-planned', { roomId, attempt: _attempt, inSecs: _delay / 1000, matches: matches || 0 });
}
const _fetchJoinById = (_sHttp, roomId, _authHdr) => {
const _ac = new AbortController();
const _tmo = setTimeout(() => _ac.abort(), _PROBE_FETCH_TMO);
return fetch(_sHttp + '/matchmake/joinById/' + encodeURIComponent(roomId), {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': _authHdr },
body: JSON.stringify({}),
signal: _ac.signal
}).then(r => r.json()).catch(() => null).finally(() => clearTimeout(_tmo));
};
async function _reservePlannedRooms(_sHttp, token, _curRoomId, _reservations) {
if (_retryPlan.size === 0) return;
const _now = Date.now();
const _due = [];
for (const [rid, p] of _retryPlan) {
if (rid === _curRoomId) continue;
if (p.nextTryAt > _now) continue;
if ((_deadRooms.get(rid) || 0) > _now) continue;
if ((_noMatchUntil.get(rid) || 0) > _now) continue;
_due.push(rid);
}
if (_due.length === 0) return;
_dbgLog('probe', 'retry-due', { rooms: _due.length, planned: _retryPlan.size });
const _authHdr = 'Bearer ' + token;
const _res = await Promise.all(_due.map(rid => _fetchJoinById(_sHttp, rid, _authHdr)));
for (let i = 0; i < _due.length; i++) {
if (_aborted || _reservations.length >= _PROBE_BATCH) break;
const rid = _due[i];
const res = _res[i];
if (!res?.room?.roomId) {
_retryPlan.delete(rid);
_dbgLog('probe', 'retry-gone', { roomId: rid });
continue;
}
if (_freeSlotsOf(res) < 2) {
_bumpRetry(rid, _retryPlan.get(rid)?.matches || 0);
continue;
}
res._planned = true;
_recentlyProbed.set(rid, Date.now());
_reservations.push(res);
_dbgLog('probe', 'retry-reserved', { roomId: rid });
}
}
function _destroyClient(c) {
if (!c) return;
try { if (c.close) c.close(); } catch (_) {}
try { if (c.connection) { if (c.connection.close) c.connection.close(); c.connection = null; } } catch (_) {}
try { if (c.transport) { if (c.transport.close) c.transport.close(); if (c.transport._ws) { try { c.transport._ws.close(); } catch (_) {} c.transport._ws = null; } c.transport = null; } } catch (_) {}
}
function _cleanupAll() {
if (_sharedClient) { _destroyClient(_sharedClient); _sharedClient = null; _dbgLog('probe', 'client-destroyed'); }
releaseKeepAlive();
}
function releaseKeepAlive() {
if (_keepAliveRoom) {
_dbgLog('probe', 'keepalive-released');
try { _keepAliveRoom.leave(); } catch (_) {}
_keepAliveRoom = null;
}
if (_sharedClient) { _destroyClient(_sharedClient); _sharedClient = null; }
}
function _petMatchesText(text, raw) {
if (!raw || !raw.trim()) return true;
return _filterMatcher(raw)(text.toLowerCase());
}
function _petMatches(p, filter, excludeOwner, isSteal) {
if (excludeOwner && p.owner === excludeOwner) return false;
if (isSteal && p._pt !== 'base') return false;
if (isSteal && !p.owner) return false;
if (!isSteal && p.owner) return false;
const text = [p.name || '', _mutName(p.mutation), p.rarity || ''].join(' ');
return _petMatchesText(text, filter);
}
let _cachedToken = null;
let _cachedTokenExpiry = 0;
async function _getProbeToken() {
if (_cachedToken && Date.now() < _cachedTokenExpiry) { _dbgLog('probe', 'token-cached', { expiresIn: Math.round((_cachedTokenExpiry - Date.now()) / 1000) }); return _cachedToken; }
try {
const r = await fetch('https://api.meeland.io/v1/auth/local/customLogin');
const d = await r.json();
_cachedToken = d.access_token || null;
_cachedTokenExpiry = Date.now() + 300000;
_dbgLog('probe', 'token-fresh', { ok: !!_cachedToken });
return _cachedToken;
} catch (_) { _dbgLog('probe', 'token-fetch-err', null, 'warn'); return _cachedToken; }
}
const _freeSlotsOf = (res) => {
const _max = res?.room?.maxClients || 0;
const _cl = res?.room?.clients || 0;
return Math.max(0, _max - _cl);
};
function _computeWorthGate() {
try {
const _myId = _getNetworkManager()?.room?.sessionId;
if (!_myId) return null;
const _pets = (typeof _getAllPets === 'function') ? _getAllPets() : [];
const _myBase = _pets.filter(p => p.ownerId === _myId && p.type === 'base');
const _max = _getBasesManager()?.myBase?.data?.places || 10;
if (_myBase.length < _max) return null;
let _low = Infinity;
for (const p of _myBase) {
if (!p.isEgg && p.income < _low) _low = p.income;
}
return isFinite(_low) ? _low : null;
} catch (_) { return null; }
}
function abort() {
_aborted = true;
_activeProbes.forEach(fn => { try { fn(); } catch (_) {} });
_activeProbes.clear();
_cleanupAll();
_recentlyProbed.clear();
_deadRooms.clear();
_noMatchUntil.clear();
_retryPlan.clear();
_throttledUntil = 0;
_throttleStreak = 0;
_dbgLog('probe', 'aborted');
}
async function probe(filter, mode) {
_aborted = false;
_cleanupAll();
if (!filter) { _dbgLog('probe', 'no-filter', { mode }); return null; }
const _Colyseus = typeof Colyseus !== 'undefined' ? Colyseus : null;
if (!_Colyseus) { _dbgLog('probe', 'no-colyseus'); return null; }
const nm = _getNetworkManager();
const _sHttp = nm?.serverHttpURL || 'https://eu.meeland.io';
const _sWs = nm?.serverURL || 'wss://eu.meeland.io';
let token = await _getProbeToken();
if (!token) { _dbgLog('probe', 'no-token'); return null; }
if (_aborted) { _cleanupAll(); return null; }
const _excludeOwner = _getNetworkManager()?.room?.sessionId || null;
const _isSteal = mode !== 'EscapeTsunami';
const _lockdownMs = (snipeCfg[_isSteal ? 'steal' : 'waves'].lockdownMax || 0) * 1000;
const _worthGate = _computeWorthGate();
let _wgDiag = null;
try {
const _myIdD = _getNetworkManager()?.room?.sessionId;
const _petsD = (typeof _getAllPets === 'function') ? _getAllPets() : [];
_wgDiag = { myBase: _petsD.filter(p => p.ownerId === _myIdD && p.type === 'base').length, places: _getBasesManager()?.myBase?.data?.places ?? null };
} catch (_) { _wgDiag = null; }
_dbgLog('probe', 'start', { filter, mode, batches: _PROBE_BATCH, burst: _PROBE_BURST, parallel: _PROBE_PARALLEL, excludeOwner: !!_excludeOwner, isSteal: _isSteal, curRoom: _getNetworkManager()?.room?.roomId || null, worthGate: _worthGate, myBase: _wgDiag?.myBase ?? null, places: _wgDiag?.places ?? null, sWs: _sWs });
const _cycleStart = Date.now();
const _curRoomId = _getNetworkManager()?.room?.roomId || null;
let _dupCount = 0, _cooldownCount = 0, _noMatchSkipCount = 0;
let _fetchTotal = 0, _fetchFail = 0, _curSkip = 0, _deadSkip = 0, _retrySkip = 0;
const _seenAll = new Set();
const _planned = [];
await _reservePlannedRooms(_sHttp, token, _curRoomId, _planned);
_sharedClient = new _Colyseus.Client(_sWs);
_sharedClient.auth.token = token;
const _fetchReservation = () => {
const _ac = new AbortController();
const _tmo = setTimeout(() => _ac.abort(), _PROBE_FETCH_TMO);
return fetch(_sHttp + '/matchmake/joinOrCreate/' + encodeURIComponent(mode), {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token },
body: JSON.stringify({}),
signal: _ac.signal
}).then(r => r.json()).catch(() => null).finally(() => clearTimeout(_tmo));
};
const _acceptReservation = (res) => {
if (!res?.room?.roomId) return null;
const _roomId = res.room.roomId;
const _now = Date.now();
if (_roomId === _curRoomId) {
_seenAll.add(_roomId);
_curSkip++;
if (_throttle(_skipLogAt, _roomId + ':cur', Date.now(), 20000)) _dbgLog('probe', 'cur-room-skip', { roomId: _roomId });
return null;
}
if ((_deadRooms.get(_roomId) || 0) > _now) {
_seenAll.add(_roomId);
_deadSkip++;
if (_throttle(_skipLogAt, _roomId + ':dead', Date.now(), 20000)) _dbgLog('probe', 'dead-skip', { roomId: _roomId, forSecs: Math.round(((_deadRooms.get(_roomId) || 0) - _now) / 1000) });
return null;
}
const _rp = _retryPlan.get(_roomId);
if (_rp && _rp.nextTryAt > _now) {
_seenAll.add(_roomId);
_retrySkip++;
if (_throttle(_skipLogAt, _roomId + ':retry', Date.now(), 20000)) _dbgLog('probe', 'retry-skip', { roomId: _roomId, inSecs: Math.round((_rp.nextTryAt - _now) / 1000) });
return null;
}
const _nmU = _noMatchUntil.get(_roomId) || 0;
if (_nmU > _now) {
_seenAll.add(_roomId);
_noMatchSkipCount++;
if (_throttle(_skipLogAt, _roomId + ':nm', Date.now(), 20000)) _dbgLog('probe', 'nomatch-skip', { roomId: _roomId, inSecs: Math.round((_nmU - _now) / 1000) });
return null;
}
const _last = _recentlyProbed.get(_roomId) || 0;
if (_seenAll.has(_roomId) || (_now - _last < (_isSteal ? 8000 : _PROBE_COOLDOWN))) {
if (!_seenAll.has(_roomId)) {
_cooldownCount++;
if (_throttle(_skipLogAt, _roomId + ':cd', Date.now(), 20000)) _dbgLog('probe', 'cooldown-skip', { roomId: _roomId, age: Math.round((_now - _last) / 1000) });
} else {
_dupCount++;
if (_throttle(_skipLogAt, _roomId + ':dup', Date.now(), 20000)) _dbgLog('probe', 'dup-room', { roomId: _roomId });
}
_seenAll.add(_roomId);
return null;
}
_seenAll.add(_roomId);
_recentlyProbed.set(_roomId, _now);
if (_freeSlotsOf(res) < 1) {
if (_throttle(_skipLogAt, _roomId + ':free', Date.now(), 20000)) _dbgLog('probe', 'skip-free', { roomId: _roomId, free: _freeSlotsOf(res) });
return null;
}
return res;
};
let _best = null;
let _scanned = 0;
let _settled = false;
let _active = 0;
let _launched = 0;
let _failCount = 0;
let _scanDeadline = null;
const _lockedRooms = [];
await new Promise(resolve => {
const _queue = [];
let _burstDone = false;
const _settle = () => {
if (_settled) return;
if (_aborted || _best || (_failCount >= 6 && _active === 0) || (_burstDone && _active === 0 && _queue.length === 0)) {
_settled = true;
if (_scanDeadline) { clearTimeout(_scanDeadline); _scanDeadline = null; }
resolve();
}
};
_scanDeadline = setTimeout(() => {
if (_settled) return;
_settled = true;
_scanDeadline = null;
_dbgLog('probe', 'scan-deadline', { best: _best?.roomId || null, matches: _best?.matchCount || 0, active: _active, launched: _launched, queued: _queue.length });
resolve();
}, _PROBE_CONNECT_TMO + _PROBE_SCAN_TMO + 3000);
const _pump = () => {
while (!_settled && !_aborted && _queue.length > 0 && _active < _PROBE_PARALLEL) {
_startProbe(_queue.shift());
}
};
const _startProbe = (r) => {
const _wasPlanned = !!r._planned;
_launched++;
_active++;
_probeOneRoom(r, _sHttp, filter, _excludeOwner, _isSteal, _worthGate, _lockdownMs).then(result => {
_active--;
if (!result || ('err' in result)) _failCount++;
if (_wasPlanned) {
if (result && result.matchCount > 0) {
_retryPlan.delete(r?.room?.roomId);
_dbgLog('probe', 'retry-recovered', { roomId: r?.room?.roomId, matches: result.matchCount });
} else {
_bumpRetry(r?.room?.roomId, 0);
}
}
if (result && result.totalPets > 0) _scanned++;
if (result?.lockedMatches > 0) _lockedRooms.push({ roomId: result.roomId, locked: result.lockedMatches });
_dbgLog('probe', 'result', {
roomId: result ? result.roomId : null,
matches: result ? result.matchCount : null,
total: result ? result.totalPets : null,
free: result ? result.freeSlots : null,
err: result ? result.err : 'timeout-or-fail'
});
if (_settled) {
if (result?._room) { try { result._room.leave(); } catch (_) {} }
return;
}
if (result && result.matchCount > 0) {
if (!_best || result.freeSlots > _best.freeSlots || (result.freeSlots === _best.freeSlots && result.matchCount > _best.matchCount)) {
if (_best?._room) { try { _best._room.leave(); } catch (_) {} }
_best = result;
_best._releaseSeat = () => { releaseKeepAlive(); };
_dbgLog('probe', 'best-update', { roomId: result.roomId, free: result.freeSlots, matches: result.matchCount });
} else {
try { result._room?.leave(); } catch (_) {}
}
}
_pump();
_settle();
});
};
(async () => {
const _budget = _throttleStreak > 0 ? 4 : _PROBE_BATCH;
for (let i = 0; i < _planned.length && _launched < _budget; i++) {
if (_aborted || _settled) return;
_startProbe(_planned[i]);
}
while (!_settled && !_aborted && _launched < _budget) {
const _round = Math.min(_PROBE_BURST, _budget - _launched);
const _reqs = [];
for (let i = 0; i < _round; i++) _reqs.push(_fetchReservation());
const _res = await Promise.all(_reqs);
if (_aborted || _settled) return;
let _accCount = 0;
_fetchTotal += _res.length;
for (let i = 0; i < _res.length; i++) {
if (_settled || _aborted || _launched >= _budget) break;
const _rr = _res[i];
if (!_rr || !_rr.room || !_rr.room.roomId) _fetchFail++;
const _acc = _acceptReservation(_rr);
if (_acc) { _queue.push(_acc); _accCount++; }
}
_dbgLog('probe', 'burst', { fetched: _res.length, unique: _accCount, launched: _launched, queued: _queue.length, budget: _budget });
_pump();
if (_accCount < _PROBE_BURST * 0.6 || _launched >= _budget) break;
}
_burstDone = true;
_pump();
_settle();
})();
});
if (_aborted) {
_throttledUntil = 0;
} else if (_scanned > 0 || _best) {
_throttledUntil = 0;
_throttleStreak = 0;
} else if (_launched >= 2 && _failCount > 0 && _failCount >= Math.round(_launched * 0.8)) {
_throttleStreak++;
const _bo = _throttleStreak >= 3 ? _THROTTLE_DEEP_MS : (_throttleStreak === 2 ? _THROTTLE_DRAIN_MS : _THROTTLE_MS);
_throttledUntil = Date.now() + _bo;
_deadRooms.clear();
_dbgLog('probe', 'throttle-detected', { launched: _launched, failed: _failCount, streak: _throttleStreak, backoffSecs: _bo / 1000 }, 'warn');
} else if (_launched === 0 && (_fetchFail + _curSkip + _deadSkip + _retrySkip) >= Math.max(2, Math.round(_fetchTotal * 0.8)) && (_dupCount + _cooldownCount + _noMatchSkipCount) < Math.max(2, Math.round(_fetchTotal * 0.8))) {
_throttleStreak++;
const _bo = _throttleStreak >= 3 ? _THROTTLE_DEEP_MS : (_throttleStreak === 2 ? _THROTTLE_DRAIN_MS : _THROTTLE_MS);
_throttledUntil = Date.now() + _bo;
_deadRooms.clear();
_dbgLog('probe', 'throttle-detected', { launched: _launched, fetchFail: _fetchFail, curSkip: _curSkip, deadSkip: _deadSkip, retrySkip: _retrySkip, dup: _dupCount, cooldown: _cooldownCount, fetchTotal: _fetchTotal, streak: _throttleStreak, backoffSecs: _bo / 1000, cause: 'matchmake-down' }, 'warn');
}
if (_best) {
_dbgLog('probe', 'found', { roomId: _best.roomId, matches: _best.matchCount, mode, cycleMs: Date.now() - _cycleStart });
return _best;
}
_cleanupAll();
_dbgLog('probe', 'no-match-all', { mode, launched: _launched, scanned: _scanned, lockedRooms: _lockedRooms, dup: _dupCount, cooldown: _cooldownCount, nomatch: _noMatchSkipCount, fetchFail: _fetchFail, fetchTotal: _fetchTotal, cycleMs: Date.now() - _cycleStart });
return null;
}
function _probeOneRoom(reservation, _sHttp, filter, excludeOwner, isSteal, worthGate, lockdownMs) {
const _rid = reservation?.room?.roomId || '?';
return new Promise(resolve => {
let _connTmo = null;
let _scanTmo = null;
let _roomRef = null;
let _done = false;
const _clearAllTmos = () => {
if (_connTmo) { clearTimeout(_connTmo); _connTmo = null; }
if (_scanTmo) { clearTimeout(_scanTmo); _scanTmo = null; }
};
const _cancel = () => {
if (_done) return;
_done = true;
_clearAllTmos();
if (_roomRef) { try { _roomRef.leave(); } catch (_) {} _roomRef = null; }
resolve(null);
};
_activeProbes.add(_cancel);
_connTmo = setTimeout(() => {
_dbgLog('probe', 'timeout', { roomId: _rid });
_clearAllTmos();
_markRoomDead(_rid);
resolve(null);
}, _PROBE_CONNECT_TMO);
const _finish = (v) => {
if (_done) return;
_done = true;
_activeProbes.delete(_cancel);
_clearAllTmos();
if (v && v.roomId && v.totalPets > 0) {
const _ri = _scanReport.findIndex(r => r.roomId === v.roomId);
const _entry = { roomId: v.roomId, matches: v.matchCount || 0, totalPets: v.totalPets || 0, free: typeof v.freeSlots === 'number' ? v.freeSlots : 0, owners: v.owners || [], locked: v.lockedMatches || 0, top: v.topPet || null, searches: (_ri >= 0 ? (_scanReport[_ri].searches || 0) : 0) + 1, scanning: false, lastSeen: Date.now() };
if (_ri >= 0) _scanReport[_ri] = _entry; else _scanReport.push(_entry);
} else {
const _ri2 = _scanReport.findIndex(r => r.roomId === _rid);
if (_ri2 >= 0) {
if (_scanReport[_ri2].matches === -1) _scanReport.splice(_ri2, 1);
else _scanReport[_ri2] = { ..._scanReport[_ri2], scanning: false, lastSeen: Date.now() };
}
}
if (v && v.roomId && v.matchCount > 0) { _clearNoMatch(v.roomId); }
else if (isSteal && v && v.roomId && v.totalPets > 0) { _markNoMatch(v.roomId); }
resolve(v);
};
const _client = _sharedClient;
if (!_client) {
_dbgLog('probe', 'setup-err', { roomId: _rid, err: 'no-client' });
_finish({ roomId: _rid, matchCount: 0, totalPets: 0, err: 'no-client', reservation });
return;
}
try {
const _onRoom = (room) => {
if (_done || _aborted) { try { room.leave(); } catch (_) {} return; }
_roomRef = room;
_dbgLog('probe', 'connected', { roomId: _rid });
_markRoomAlive(_rid);
const _riP = _scanReport.findIndex(r => r.roomId === _rid);
if (_riP >= 0) {
_scanReport[_riP] = { ..._scanReport[_riP], scanning: true, lastSeen: Date.now() };
} else {
_scanReport.push({ roomId: _rid, matches: -1, totalPets: 0, free: _freeSlotsOf(reservation), owners: [], locked: 0, searches: 0, scanning: true, lastSeen: Date.now() });
}
if (_connTmo) { clearTimeout(_connTmo); _connTmo = null; }
_scanTmo = setTimeout(() => {
_dbgLog('probe', 'scan-timeout', { roomId: _rid });
try { room.leave(); } catch (_) {}
_finish(null);
}, _PROBE_SCAN_TMO);
const _pets = [];
const _locked = new Map();
const _lockDurs = new Map();
let _lockGot = false;
let _scanArmed = null;
const _onLockStart = (d) => {
if (d && d.sessionId) {
_locked.set(d.sessionId, Date.now() + ((d.timeLeft || d.duration || 0) * 1000));
_lockDurs.set(d.sessionId, d.duration || 0);
}
};
const _onLockEnd = (d) => {
if (d && d.sessionId) {
_locked.delete(d.sessionId);
_lockDurs.delete(d.sessionId);
}
};
const _onLockTimers = (d) => {
const _entries = Array.isArray(d) ? d : (d && typeof d === 'object') ? Object.values(d) : [];
for (let i = 0; i < _entries.length; i++) {
const x = _entries[i];
if (x && x.sessionId) {
_locked.set(x.sessionId, Date.now() + ((x.timeLeft || 0) * 1000));
_lockDurs.set(x.sessionId, x.duration || 0);
}
}
if (!_lockGot) {
_lockGot = true;
_dbgLog('probe', 'lock-data', { roomId: _rid, count: _entries.length });
if (_scanArmed) { const _s = _scanArmed; _scanArmed = null; _s(); }
}
};
room.onMessage('baseLockdownStart', _onLockStart);
room.onMessage('baseLockdownEnd', _onLockEnd);
room.onMessage('baseLockdownTimers', _onLockTimers);
const _onSpawn = (data, type) => {
if (Array.isArray(data)) {
for (let i = 0; i < data.length; i++) {
if (data[i] && data[i].token) { data[i]._pt = type; _pets.push(data[i]); }
}
}
};
const _onBases = data => {
if (Array.isArray(data)) {
for (let i = 0; i < data.length; i++) {
const b = data[i];
if (b && Array.isArray(b.pets)) {
for (let j = 0; j < b.pets.length; j++) {
if (b.pets[j] && b.pets[j].token) { b.pets[j]._pt = 'base'; _pets.push(b.pets[j]); }
}
}
}
}
};
room.onMessage('petsSpawn', d => _onSpawn(d, 'active'));
room.onMessage('petsBaseSpawn', d => _onSpawn(d, 'base'));
room.onMessage('initBases', _onBases);
room.onStateChange.once(() => {
const _doScan = (_retry) => {
if (_done || _aborted) { try { room.leave(); } catch (_) {} return; }
const _nameOf = new Map();
try {
const _pl = room.state?.players;
if (_pl) {
const _entries = (typeof _pl.forEach === 'function') ? (() => { const a = []; _pl.forEach((v, k) => a.push([k, v])); return a; })() : Object.entries(_pl);
for (let i = 0; i < _entries.length; i++) {
const _ps = _entries[i][1];
if (_ps && (_ps.username || _ps.name)) _nameOf.set(_entries[i][0], _ps.username || _ps.name);
}
}
} catch (_) {}
const _uniq = [];
const _uniqByTok = new Map();
for (let i = 0; i < _pets.length; i++) {
const p = _pets[i];
const tk = String(p.token);
const _ex = _uniqByTok.get(tk);
if (!_ex) { _uniqByTok.set(tk, p); _uniq.push(p); }
else if (_ex._pt !== 'base' && p._pt === 'base') {
const _ix = _uniq.indexOf(_ex);
if (_ix >= 0) _uniq[_ix] = p;
_uniqByTok.set(tk, p);
}
}
const matches = [];
let _unlockedCount = 0;
let _skipWorth = 0;
let _skipLocked = 0;
let _skipDespawn = 0;
const _sampleNonMatch = [];
for (let i = 0; i < _uniq.length; i++) {
const p = _uniq[i];
if (!_petMatches(p, filter, excludeOwner, isSteal)) {
if (_sampleNonMatch.length < 3) {
_sampleNonMatch.push({ name: p.name || '', owner: p.owner || '', mutation: p.mutation || '', rarity: p.rarity || '' });
}
continue;
}
if (!isSteal && (p.secondsLeft || 0) < _WAVES_DESPAWN_MIN_SECS) {
_skipDespawn++;
continue;
}
if (worthGate !== null && (p.profit || 0) <= worthGate) {
_skipWorth++;
continue;
}
const _le = _locked.get(p.owner);
if (_le && _le - Date.now() > lockdownMs) {
_skipLocked++;
continue;
}
if (_le && _le > Date.now() && _le - Date.now() < _PROBE_RELOCK_SOON_MS) {
const _ldur = _lockDurs.get(p.owner) || 0;
if (_ldur > 0 && _ldur > lockdownMs / 1000) {
_skipLocked++;
continue;
}
}
if (!_le || _le <= Date.now()) _unlockedCount++;
matches.push(p);
}
const _owners = [];
const _ownerSeen = new Set();
for (const _m of matches) {
if (_m.owner && !_ownerSeen.has(_m.owner)) { _ownerSeen.add(_m.owner); _owners.push(_nameOf.get(_m.owner) || _m.owner); }
}
let _topPet = null;
let _topVal = -1;
let _topOwned = null;
let _topOwnedVal = -1;
for (let i = 0; i < _uniq.length; i++) {
const _pt = _uniq[i];
if (excludeOwner && _pt.owner === excludeOwner) continue;
if (!isSteal && _pt.owner) continue;
const _pv = Math.max(_pt.price || 0, _pt.profit || 0);
if (_pv > _topVal) { _topVal = _pv; _topPet = _pt; }
if (_pt.owner && _pv > _topOwnedVal) { _topOwnedVal = _pv; _topOwned = _pt; }
}
if (_topOwned && isSteal) { _topPet = _topOwned; _topVal = _topOwnedVal; }
_dbgLog('probe', 'scan-done', {
roomId: _rid,
totalPets: _uniq.length,
matches: matches.length,
skipWorth: _skipWorth,
skipLocked: _skipLocked,
skipDespawn: _skipDespawn,
worthGate,
nonMatchSample: _sampleNonMatch,
filter
});
if (_uniq.length === 0 && !_retry && !_done && !_aborted) {
_dbgLog('probe', 'scan-empty-retry', { roomId: _rid });
setTimeout(() => _doScan(true), 800);
return;
}
if (matches.length > 0) {
_keepAliveRoom = room;
_dbgLog('probe', 'keepalive-held', { roomId: _rid, matches: matches.length });
_dbgLog('probe', 'match-sample', { roomId: _rid, match: { name: matches[0].name, owner: matches[0].owner, mutation: matches[0].mutation, rarity: matches[0].rarity } });
} else {
try { room.leave(); } catch (_) {}
}
_finish({
roomId: _rid,
matchCount: matches.length,
unlockedMatchCount: _unlockedCount,
totalPets: _uniq.length,
bestMatch: matches[0] || null,
lockedMatches: _skipLocked,
owners: _owners,
topPet: _topPet ? { name: _topPet.name || '?', owner: _nameOf.get(_topPet.owner) || _topPet.owner || '', rarity: _topPet.rarity || '', mutation: _mutName(_topPet.mutation) || '', value: _topVal, income: _topPet.profit || 0 } : null,
reservation,
freeSlots: _freeSlotsOf(reservation),
_room: room
});
};
const _runScan = () => { setTimeout(() => _doScan(false), isSteal ? 500 : 400); };
if (!isSteal || _lockGot) {
_runScan();
} else {
_scanArmed = _runScan;
setTimeout(() => {
if (_scanArmed) {
_scanArmed = null;
_dbgLog('probe', 'lock-data-timeout', { roomId: _rid });
_runScan();
}
}, 1500);
}
});
};
let _connAttempt = 0;
const _tryConnect = () => {
if (_connTmo) { clearTimeout(_connTmo); _connTmo = null; }
_connTmo = setTimeout(() => {
_dbgLog('probe', 'timeout', { roomId: _rid, attempt: _connAttempt });
_clearAllTmos();
_done = true;
_markRoomDead(_rid);
resolve(null);
}, _PROBE_CONNECT_TMO);
_dbgLog('probe', 'connecting', { roomId: _rid, pub: reservation?.room?.publicAddress || null });
let _p = null;
try {
_p = _client.consumeSeatReservation(reservation);
} catch (e) {
if (_done) return;
_dbgLog('probe', 'connect-err', { roomId: _rid, attempt: _connAttempt + 1, name: e?.name, err: e?.message, code: e?.code, str: String(e).slice(0, 120) });
_finish({ roomId: _rid, matchCount: 0, totalPets: 0, err: e?.message, reservation });
return;
}
_p.then(_onRoom).catch(e => {
if (_done) return;
_dbgLog('probe', 'connect-err', { roomId: _rid, attempt: _connAttempt + 1, name: e?.name, err: e?.message, code: e?.code, str: String(e).slice(0, 120) });
_finish({ roomId: _rid, matchCount: 0, totalPets: 0, err: e?.message, reservation });
});
};
_tryConnect();
} catch (e) {
_dbgLog('probe', 'setup-err', { roomId: _rid, err: e?.message });
_finish({ roomId: _rid, matchCount: 0, totalPets: 0, err: e?.message, reservation });
}
});
}
probe.abort = abort;
probe.releaseKeepAlive = releaseKeepAlive;
probe.getThrottledUntil = () => _throttledUntil;
probe.getThrottledMs = () => Math.max(0, _throttledUntil - Date.now());
probe.markFull = (roomId) => {
if (!roomId) return;
const _e = _scanReport.find(r => r.roomId === roomId);
if (_e) { _e.free = 0; _e.fullAt = Date.now(); }
};
probe.planRetry = _bumpRetry;
probe.getScanReport = () => {
if (_scanReport.length > 0) {
const _now = Date.now();
const _cut = _now - 300000;
if (_scanReport.some(r => r.lastSeen < _cut)) _scanReport = _scanReport.filter(r => r.lastSeen >= _cut);
if (_scanReport.length > 30) _scanReport = [..._scanReport].sort((a, b) => (b.lastSeen || 0) - (a.lastSeen || 0)).slice(0, 30);
for (let i = 0; i < _scanReport.length; i++) {
const _r = _scanReport[i];
if (_r.fullAt && _now - _r.fullAt > 10000) { _r.free = 1; _r.fullAt = 0; }
}
}
return _scanReport;
};
probe.clearScanReport = () => {
if (_scanReport.length) {
_scanReport = [];
_dbgLog('probe', 'scan-cleared');
}
};
if (typeof _onSnipeModeChange === 'function') {
_onSnipeModeChange(() => {
probe.clearScanReport();
_retryPlan.clear();
if (_probeInProgress) {
_probeInProgress = false;
_probeStartedAt = 0;
_lastProbeEnd = Date.now();
_probeOriginalRoomId = null;
abort();
}
});
}
return probe;
})();
let _needsRelockOnFocus = false;
document.addEventListener('visibilitychange', () => {
if (!document.hidden && !document.pointerLockElement && !anyPanelOpen()) {
const fle = _overlayMgr?.firstLockEntity;
if (!fle?.enabled && W.pc && !W.pc.isGamePaused) _needsRelockOnFocus = true;
}
});
document.addEventListener('click', () => {
if (_needsRelockOnFocus && !document.pointerLockElement && !anyPanelOpen()) {
_needsRelockOnFocus = false;
requestPointerLockSafe();
}
}, true);
window.addEventListener('keyup', e => {
if (e.code === KEYBINDS.fly) {
_fly.up = false;
if (_fly.holdTimer) { clearTimeout(_fly.holdTimer); _fly.holdTimer = null; }
}
if (e.code === 'KeyE') _leverKeyHeld = false;
if (e.code === KEYBINDS.flyDown) _fly.down = false;
if (e.key === 'Shift' && _feats.sprint) {
_setReticleVisible(false);
if (_shiftNoclipForced) { _feats.noclip = false; hookNoclip(); _shiftNoclipForced = false; }
else {
const ae = _sr.activeElement || document.activeElement;
if (!(ae && (ae.tagName === 'INPUT' || ae.tagName === 'TEXTAREA'))) _blink();
}
}
}, true);
W.addEventListener('unhandledrejection', function(e) {
const r = e.reason;
if (r instanceof TypeError && typeof r.message === 'string' && r.message.includes('asset') && r.stack && r.stack.includes('__game-scripts')) e.preventDefault();
if (r instanceof DOMException) e.preventDefault();
});
const _htmlHud = { fly: $('ml-fly'), invis: $('ml-invis'), lock: $('ml-lock'), tc: $('ml-tc'), tcl: $('ml-tcl'), cfg: $('ml-cfg'), help: $('ml-help'), snipeBtn: $('ml-snipe-btn'), petsBtn: $('ml-pets-btn'), rngBtn: $('ml-rng-btn'), tp: $('ml-tp'), spr: $('ml-spr'), slots: $('ml-slots'), prv: $('ml-prv'), carryTimer: $('ml-carry-timer'), hudRoot: $('ml-hud'), forcedInvis: $('ml-f-invisible'), forcedNoclip: $('ml-f-noclip') };
_nativeHud = createNativeHUD();
if (!_nativeHud) {
const retryId = setInterval(() => {
_nativeHud = createNativeHUD();
if (_nativeHud) {
clearInterval(retryId);
Object.assign(hud, _nativeHud);
_log('setup', 'native HUD loaded (deferred)');
_dbgLog('setup', 'native-hud-deferred', null, 'debug');
}
}, 500);
}
const hud = _nativeHud || _htmlHud;
const panels = { plist: $('ml-plist'), settings: $('ml-settings'), dialog: $('ml-dialog'), pets: $('ml-pets'), snipe: $('ml-snipe'), rng: $('ml-rng'), slotsPopup: $('ml-slots-pop'), warnBox: _sr.querySelector('.ml-warn'), banBox: _sr.querySelector('.ml-ban') };
const _BASE_HALF = 10.5;
const { _checkFleeOnIntruder, performServerHop, performTargetedHop, abortActiveHop, tryHopResume, _hopReload } = (() => {
let _hopResumed = false;
let _hopAbort = false;
let _hopWaitTimer = null;
let _hopPollTimer = null;
const _clearHopTimers = () => {
if (_hopWaitTimer) { clearInterval(_hopWaitTimer); _hopWaitTimer = null; }
if (_hopPollTimer) { clearInterval(_hopPollTimer); _hopPollTimer = null; }
};
function abortActiveHop() {
_clearHopTimers();
if (!_hopInProgress) return false;
_hopAbort = true;
_hopInProgress = false;
_hopStartedAt = 0;
_hopLeaveIntentional = false;
_setHopReason(null);
_lastHopSuccessAt = Date.now();
try { if (typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive(); } catch (_) {}
_getNetworkManager.clear();
_dbgLog('room', 'hop-aborted', null, 'warn');
return true;
}
const _hopAuthInfo = (_nm) => {
const _a = _nm?.client?.auth?.token;
return {
auth: _a,
authHdr: (_a && _a.indexOf('Bearer ') === 0) ? _a : ('Bearer ' + (_a || '')),
base: _nm?.serverHttpURL || 'https://eu.meeland.io'
};
};
const _hopFetchReservation = (_base, _mode, _authHdr, _timeoutMs) => {
return new Promise((_resolve) => {
const _ac = new AbortController();
const _tmo = setTimeout(() => _ac.abort(), _timeoutMs || 5000);
fetch(_base + '/matchmake/joinOrCreate/' + encodeURIComponent(_mode), {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': _authHdr },
body: JSON.stringify({}),
signal: _ac.signal
}).then(r => r.text()).then(t => {
clearTimeout(_tmo);
let d = null;
try { d = JSON.parse(t); } catch (_) { d = null; }
_resolve((d && d.room && d.room.roomId) ? d : null);
}).catch(() => { clearTimeout(_tmo); _resolve(null); });
});
};
const _settleJoined = (_tag, _attempts, _roomName, _releaseProbe) => {
if (_releaseProbe && typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive();
_hopLeaveIntentional = false;
_lastHopSuccessAt = Date.now();
_dbgLog('room', _tag, { attempts: _attempts, room: _roomName });
setTimeout(() => { if (!_hopInProgress) _setHopReason(null); }, 5000);
const fle = _overlayMgr?.firstLockEntity;
if (fle?.enabled) fle.enabled = false;
_hopInProgress = false;
_hopStartedAt = 0;
if (_sc().active) _setSS(T.sniper_waiting);
else _setSS(T.sniper_idle, 'idle');
if (document.pointerLockElement) W.pc?.app?.fire('GameManager:GameResumed');
else _hopNeedsRelock = true;
};
const _hopFetchJoinById = (_roomId, _base, _authHdr) => {
return new Promise((_resolve) => {
const _ac = new AbortController();
const _tmo = setTimeout(() => _ac.abort(), 4000);
fetch(_base + '/matchmake/joinById/' + encodeURIComponent(_roomId), {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Authorization': _authHdr },
body: JSON.stringify({}),
signal: _ac.signal
}).then(r => r.text()).then(t => {
clearTimeout(_tmo);
let d = null;
try { d = JSON.parse(t); } catch (_) { d = null; }
_resolve({ data: (d && d.room && d.room.roomId) ? d : null, raw: t });
}).catch(e => { clearTimeout(_tmo); _resolve({ data: null, raw: null, err: e }); });
});
};
const _hopLeaveAndSeat = (_app, _nm, _data, _tag, _mode) => {
if (_hopAbort) return;
_hopLeaveIntentional = true;
try { if (_nm) _nm.isConnecting = false; } catch (_) {}
try { _app.fire('Loading:Start'); } catch (_) {}
_app.fire('NetworkManager:LeaveCurrentRoom');
let _sceneLoaded = false;
let _mapResolved = false;
_loadGameModeMap(_mode || 'PetTycoon').then(r => { _sceneLoaded = r; _mapResolved = true; }).catch(() => { _mapResolved = true; });
let _waited = 0;
const _hopStart = Date.now();
const _waitDisconnect = setInterval(() => {
if (_hopAbort || _ban.userModeChangeAt > _hopStart) {
clearInterval(_waitDisconnect);
if (_hopWaitTimer === _waitDisconnect) _hopWaitTimer = null;
_hopLeaveIntentional = false;
_hopInProgress = false;
_hopStartedAt = 0;
try { if (typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive(); } catch (_) {}
_dbgLog('room', 'hop-abort-mode', { roomId: _data?.room?.roomId, waited: _waited, via: _hopAbort ? 'abort' : 'mode' });
return;
}
_waited += 100;
_getNetworkManager.clear();
const _cnm = _getNetworkManager();
const _gone = !_cnm?.room && !_cnm?.isConnecting;
const _ready = _gone && _sceneLoaded && _waited >= 100;
const _mapGaveUp = _gone && _mapResolved && !_sceneLoaded && _waited >= 100;
if (_ready || _mapGaveUp || _waited > 7000) {
clearInterval(_waitDisconnect);
if (_hopWaitTimer === _waitDisconnect) _hopWaitTimer = null;
if (_hopAbort) return;
const _doJoin = (d) => {
try { if (_nm) { _nm.isConnecting = false; _nm.joinBySeat(d); } } catch (_) { if (_nm) { _nm.isConnecting = false; _nm.joinByMode(_nm.gameMode || 'PetTycoon'); } }
};
if (_data && typeof _data.then === 'function') {
_data.then(d => {
if (_hopAbort) return;
_dbgLog('room', _tag || 'hop-seat', { roomId: d?.room?.roomId, waited: _waited, scene: _sceneLoaded });
_doJoin(d);
}).catch(() => {});
} else {
_dbgLog('room', _tag || 'hop-seat', { roomId: _data?.room?.roomId, waited: _waited, scene: _sceneLoaded });
_doJoin(_data);
}
}
}, 100);
_hopWaitTimer = _waitDisconnect;
};
const _hopReload = (_reason) => {
_hopLeaveIntentional = false;
_hopInProgress = false;
_hopStartedAt = 0;
_setHopReason('reload');
_persistHopReason('reload');
_dbgLog('room', 'hop-reload', { reason: _reason }, 'error');
setTimeout(() => { try { window.location.reload(); } catch (_) {} }, 400);
};
function _checkFleeOnIntruder() {
if (!_feats.fleeOnIntruder || !_feats.autoLock || _hopInProgress) return;
if (Date.now() - _lastIntruderPosTs < 1500) return;
const bm = _getBasesManager();
if (!bm?.activeBases) return;
_netGuard(room => {
if (!room.state?.players) return;
const myId = room.sessionId;
const myBase = getMyBase();
if (!myBase) return;
const bp = myBase.getPosition();
if (!bp) return;
_refreshMyPetTokens();
let anyHoldingOurs = false;
room.state.players.forEach((p, sid) => {
if (sid !== myId && p.isHoldingPet && p.holdingPetToken && _myPetTokens.has(p.holdingPetToken))
anyHoldingOurs = true;
});
if (anyHoldingOurs) return;
const holder = _getEnemyHolder();
if (holder?.children?.length) {
for (const enemy of holder.children) {
if (typeof _isImmortalEntity === 'function' && _isImmortalEntity(enemy)) continue;
const ep = enemy.getPosition();
if (!ep) continue;
if (Math.abs(ep.x - bp.x) >= _BASE_HALF || Math.abs(ep.z - bp.z) >= _BASE_HALF) continue;
const name = _getEnemyName(enemy);
_log('flee', 'intruder "' + (name || '?') + '" in base — hopping');
_dbgLog('room', 'flee-hop', { intruder: name || null, via: 'base-check' }, 'warn');
performServerHop('PetTycoon', 'flee');
return;
}
}
const nm = _getNetworkManager();
if (nm?.playerArray?.length) {
for (const enemy of nm.playerArray) {
if (enemy === nm.playerEntity) continue;
const ep = enemy.getPosition();
if (!ep) continue;
if (Math.abs(ep.x - bp.x) >= _BASE_HALF || Math.abs(ep.z - bp.z) >= _BASE_HALF) continue;
const name = enemy.username || null;
_log('flee', 'intruder "' + (name || '?') + '" in base — hopping');
_dbgLog('room', 'flee-hop', { intruder: name || null, via: 'playerArray' }, 'warn');
performServerHop('PetTycoon', 'flee');
return;
}
}
});
}
function performServerHop(gameModeIndex, reasonKey, detail) {
if (_hopInProgress || _modeSwitchPending()) return;
let _modeName = null;
if (typeof gameModeIndex === 'string') {
_modeName = gameModeIndex;
const modes = _overlayMgr?.gameModes;
if (modes) {
const found = modes.findIndex(m => m.roomCode === gameModeIndex);
gameModeIndex = found >= 0 ? found : 0;
} else {
gameModeIndex = -1;
}
}
if (gameModeIndex === undefined) gameModeIndex = 0;
_hopInProgress = true;
_hopStartedAt = Date.now();
_hopAbort = false;
_setHopReason(reasonKey || 'search', detail);
_lockActivatedAt = 0;
_lockDuration = 0;
const app = W.pc?.app;
if (!app) { _dbgLog('room', 'hop-no-app', null, 'warn'); _hopInProgress = false; _hopStartedAt = 0; return; }
_dbgLog('room', 'hop-start', { mode: _snipeMode() || null, room: _getNetworkManager()?.room?.name || null });
_hopLeaveIntentional = true;
const _nm0 = _getNetworkManager();
const _prevSid0 = _nm0?.room?.sessionId || null;
if (_nm0) {
try { _nm0.gameMode = _modeName || 'PetTycoon'; } catch (_) {}
if (W.GameGlobals) W.GameGlobals.gameMode = _modeName || 'PetTycoon';
}
_setSS(T.sniper_hopping_short);
_clearGameCaches(true);
_hopResumed = false;
const _ai = _hopAuthInfo(_nm0);
const _hopMode = _modeName || 'PetTycoon';
const _tryJoin = (_n) => {
if (_hopAbort) return;
_dbgLog('room', 'hop-join-attempt', { attempt: _n });
if (_n > 2 || !_ai.auth) { _hopReload('join-exhausted'); return; }
_hopFetchReservation(_ai.base, _hopMode, _ai.authHdr).then(data => {
if (data) {
_dbgLog('room', 'hop-reserved', { roomId: data.room.roomId });
_hopLeaveAndSeat(app, _nm0, data, 'hop-seat', _hopMode);
} else {
_dbgLog('room', 'hop-join-noroom', { attempt: _n });
setTimeout(() => _tryJoin(_n + 1), 600);
}
});
};
_tryJoin(0);
let attempts = 0;
const checkReady = setInterval(() => {
if (_hopAbort) { clearInterval(checkReady); if (_hopPollTimer === checkReady) _hopPollTimer = null; return; }
attempts++;
_getNetworkManager.clear();
const cnm = _getNetworkManager();
if (cnm?.room?.state?.players && cnm.room.sessionId !== _prevSid0) {
clearInterval(checkReady);
if (_hopPollTimer === checkReady) _hopPollTimer = null;
_settleJoined('hop-joined', attempts, cnm.room.name || null, false);
} else if (attempts > 50) {
clearInterval(checkReady);
if (_hopPollTimer === checkReady) _hopPollTimer = null;
_getNetworkManager.clear();
const fnm = _getNetworkManager();
_dbgLog('room', 'hop-join-failed', { hasNm: !!fnm, hasRoom: !!fnm?.room, hasPlayers: !!fnm?.room?.state?.players, isConnecting: !!fnm?.isConnecting });
_hopReload('join-failed');
}
}, 150);
_hopPollTimer = checkReady;
}
function tryHopResume() {
if (_hopResumed || _hopInProgress || !_sc().autoHop || !_sc().active) return;
const nm = _getNetworkManager();
if (!nm?.room?.state?.players) return;
const bm = _getBasesManager();
if (!bm?.activeBases) return;
const root = W.pc?.app?.root;
let petCount = 0;
if (root) {
root.find(e => {
if (!e.script) return false;
for (const k of Object.keys(e.script)) {
const s = e.script[k];
if (s?.basePets && s.basePets.size > 0) { petCount = s.basePets.size; return true; }
}
return false;
});
}
if (petCount === 0) return;
_hopResumed = true;
_log('hop', 'new room ready (' + petCount + ' pets)');
if (_sc().active) _setSS(T.sniper_waiting);
}
function performTargetedHop(roomId, mode, reservation, releaseSeat, manual, reasonKey, detail) {
if (_hopInProgress || !roomId) return;
if (!manual && _modeSwitchPending()) return;
const _manual = !!manual;
_hopInProgress = true;
_hopStartedAt = Date.now();
_hopAbort = false;
_setHopReason(reasonKey || null, detail);
_lockActivatedAt = 0;
_lockDuration = 0;
const app = W.pc?.app;
if (!app) { _hopInProgress = false; _hopStartedAt = 0; return; }
_dbgLog('room', 'hop-targeted-start', { roomId, mode, clients: reservation?.room?.clients ?? null, maxClients: reservation?.room?.maxClients ?? null });
_hopLeaveIntentional = true;
_setSS(T.sniper_hopping_short);
const _nm = _getNetworkManager();
const _prevSid = _nm?.room?.sessionId || null;
_clearGameCaches(true);
_hopResumed = false;
if (!_nm) { _hopLeaveIntentional = false; _hopInProgress = false; _hopStartedAt = 0; _dbgLog('room', 'hop-targeted-abort', { reason: 'no-nm' }); return; }
try { _nm.gameMode = mode; } catch (_) {}
if (W.GameGlobals) W.GameGlobals.gameMode = mode;
const _auth = _nm.client?.auth?.token;
const _authHdr = (_auth && _auth.indexOf('Bearer ') === 0) ? _auth : ('Bearer ' + (_auth || ''));
const _base = _nm.serverHttpURL || 'https://eu.meeland.io';
const _leaveAndSeat = (data) => { _hopLeaveAndSeat(app, _nm, data, 'hop-targeted-seat', mode); };
let _checkReady = null;
const _manualAbort = () => {
if (_checkReady) { clearInterval(_checkReady); _checkReady = null; }
_clearHopTimers();
_hopAbort = true;
if (typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive();
if (typeof _probeRooms === 'function' && _probeRooms.markFull) _probeRooms.markFull(roomId);
_hopLeaveIntentional = false;
_hopInProgress = false;
_hopStartedAt = 0;
_getNetworkManager.clear();
_dbgLog('room', 'hop-targeted-full', { roomId });
_setSS(T.sniper_join_failed || 'Target room full');
const _nmAbort = _getNetworkManager();
if (!_nmAbort?.room) {
_dbgLog('room', 'hop-targeted-recover', { mode });
try { _doReconnect(mode); } catch (_) {}
}
};
const _abandonAutoHop = (tag) => {
if (_checkReady) { clearInterval(_checkReady); _checkReady = null; }
_clearHopTimers();
_hopAbort = true;
if (typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive();
if (typeof _probeRooms === 'function' && _probeRooms.markFull) _probeRooms.markFull(roomId);
if (typeof _probeRooms === 'function' && _probeRooms.planRetry) _probeRooms.planRetry(roomId);
_hopLeaveIntentional = false;
_hopInProgress = false;
_hopStartedAt = 0;
_getNetworkManager.clear();
_dbgLog('room', 'hop-targeted-' + tag, { roomId, manual: _manual });
const _nmA = _getNetworkManager();
if (!_nmA?.room) {
_dbgLog('room', 'hop-targeted-recover', { mode });
try { _doReconnect(mode); } catch (_) {}
return;
}
if (_triggerSnipeScan) { try { _triggerSnipeScan(); } catch (_) {} }
};
const _fallbackJoin = (_n) => {
if (_hopAbort) return;
_dbgLog('room', 'hop-targeted-fallback', { roomId, via: 'joinById', attempt: _n, manual: _manual });
if (_manual) { _manualAbort(); return; }
_abandonAutoHop('abandon-target');
};
let _leaveStarted = false;
const _tryJoinById = (_n) => {
if (_hopAbort) return;
_dbgLog('room', 'hop-targeted-attempt', { attempt: _n, hasAuth: !!_auth });
if (_n > 1) { _dbgLog('room', 'hop-targeted-fallback', { roomId, via: 'joinById-exhausted' }); _fallbackJoin(0); return; }
if (_n === 0 && releaseSeat) { try { releaseSeat(); } catch (_) {} releaseSeat = null; }
if (!_auth) { _fallbackJoin(0); return; }
_hopFetchJoinById(roomId, _base, _authHdr).then(({ data, raw, err }) => {
if (data) {
_dbgLog('room', 'hop-targeted-reserved', { roomId: data.room.roomId });
if (!_leaveStarted) {
_leaveStarted = true;
_leaveAndSeat(data);
_startPoll();
}
} else if (err) {
_dbgLog('room', 'hop-targeted-joinfetch-err', { attempt: _n, err: err?.name || '?' });
setTimeout(() => _tryJoinById(_n + 1), 250);
} else {
_dbgLog('room', 'hop-targeted-noroom', { attempt: _n, raw: String(raw).slice(0, 120) });
setTimeout(() => _tryJoinById(_n + 1), 250);
}
});
};
_tryJoinById(0);
let _targetRetries = 0;
let _attempts = 0;
const _retryTarget = () => {
if (_hopAbort) return;
_getNetworkManager.clear();
const _cnm2 = _getNetworkManager();
if (_cnm2?.room?.state?.players && _cnm2.room.sessionId !== _prevSid) {
_hopLeaveIntentional = false;
_lastHopSuccessAt = Date.now();
setTimeout(() => { if (!_hopInProgress) _setHopReason(null); }, 5000);
_hopInProgress = false;
_hopStartedAt = 0;
_dbgLog('room', 'hop-targeted-joined-late', { roomId: _cnm2.room.roomId });
return;
}
_targetRetries++;
if (_targetRetries > 2 || !_auth) {
_dbgLog('room', 'hop-targeted-failed', { roomId, manual: _manual });
if (_manual) { _manualAbort(); return; }
_abandonAutoHop('abandon-failed');
return;
}
_dbgLog('room', 'hop-targeted-retry', { roomId, n: _targetRetries });
_hopFetchJoinById(roomId, _base, _authHdr).then(({ data, raw, err }) => {
if (data) {
_dbgLog('room', 'hop-targeted-retry-reserved', { roomId: data.room.roomId });
_leaveAndSeat(data);
_startPoll();
} else if (err) {
_dbgLog('room', 'hop-targeted-retry-err', { n: _targetRetries, err: err?.name || '?' });
setTimeout(() => _retryTarget(), 800);
} else {
_dbgLog('room', 'hop-targeted-retry-noroom', { roomId, raw: String(raw).slice(0, 80) });
setTimeout(() => _retryTarget(), 800);
}
});
};
const _startPoll = () => {
_attempts = 0;
if (_checkReady) { clearInterval(_checkReady); _checkReady = null; }
_checkReady = setInterval(() => {
if (_hopAbort) { clearInterval(_checkReady); _checkReady = null; if (_hopPollTimer) _hopPollTimer = null; return; }
_attempts++;
_getNetworkManager.clear();
const cnm = _getNetworkManager();
if (cnm?.room?.state?.players && cnm.room.sessionId !== _prevSid) {
clearInterval(_checkReady);
_checkReady = null;
if (_hopPollTimer) _hopPollTimer = null;
_settleJoined('hop-targeted-joined', _attempts, cnm.room.name || null, true);
} else if (_attempts > 40) {
clearInterval(_checkReady);
_checkReady = null;
if (_hopPollTimer) _hopPollTimer = null;
if (typeof _probeRooms === 'function' && _probeRooms.releaseKeepAlive) _probeRooms.releaseKeepAlive();
_retryTarget();
}
}, 100);
_hopPollTimer = _checkReady;
};
}
if (W.__ML_TEST__) Object.defineProperty(W, '_performTargetedHop', { value: performTargetedHop, configurable: true, enumerable: false, writable: true });
return { _checkFleeOnIntruder, performServerHop, performTargetedHop, abortActiveHop, tryHopResume, _hopReload };
})();
{
let _bgTimer = null;
let _lastHookEnsure = 0;
let _bgLastPosSend = 0;
let _bgLastPosLog = 0;
const _runSafe = (label, fn) => { try { fn(); } catch (e) { _dbgLog('tick', 'runSafe-err', { label, err: e.message }, 'error'); } };
document.addEventListener('pointerlockchange', () => {
if (!document.pointerLockElement) return;
setTimeout(() => {
try {
const fle = _overlayMgr?.firstLockEntity;
if (fle?.enabled && document.pointerLockElement && !W.pc?.isGamePaused) {
fle.enabled = false;
W.pc?.app?.fire('GameManager:GameResumed');
}
} catch (_) {}
}, 150);
});
function _bgTick() {
const now = Date.now();
const liveRoomName = _getNetworkManager()?.room?.name || '';
if (liveRoomName) setCachedRoomName(liveRoomName);
const rn = getCachedRoomName() || liveRoomName;
const inStealMode = rn === 'PetTycoon';
const inWavesMode = rn === 'EscapeTsunami';
if (!_overlayMgr) {
try { _overlayMgr = W.pc?.app?.root?.find(e => e.script?.overlayManager)?.[0]?.script?.overlayManager ?? null; } catch (_) {}
}
const _fleBg = _overlayMgr?.firstLockEntity;
if (_fleBg?.enabled) {
try {
_fleBg.enabled = false;
const _a = W.pc?.app;
if (_a?.[_SYM_OFIRE]) {
if (anyPanelOpen()) {
if (document.pointerLockElement) _a[_SYM_OFIRE].call(_a, 'GameManager:UnlockMouse');
} else {
_a[_SYM_OFIRE].call(_a, 'OverlayManager:FirstLocked');
}
}
} catch (_) {}
}
if (_overlayMgr?.pauseEffectEntity?.enabled && !_overlayMgr?.pauseEntity?.enabled) {
try { _overlayMgr.pauseEffectEntity.enabled = false; } catch (_) {}
}
if (W.pc?.isGamePaused && !_overlayMgr?.pauseEntity?.enabled && !anyPanelOpen()) {
try {
const _a = W.pc?.app;
if (_a?.[_SYM_OFIRE]) _a[_SYM_OFIRE].call(_a, 'GameManager:GameResumed');
} catch (_) {}
}
_lastHookEnsure = _bgEnsurePeriodicHooks(now, _lastHookEnsure, inStealMode || inWavesMode);
_bgStealModeTick(now, inStealMode);
if (inStealMode && _sc().active && document.hidden && now - _bgLastPosSend > 3000) {
_bgLastPosSend = now;
const _rm2 = _getNetworkManager()?.room;
const _pp = getPlayer()?.getPosition();
if (_rm2 && _pp) {
try {
const _py = _pp.y > 10 ? 10 : _pp.y;
_rawSend(_rm2)('p', { x: _pp.x, y: _py, z: _pp.z, w: 0 });
if (now - _bgLastPosLog > 15000) {
_bgLastPosLog = now;
_dbgLog('room', 'bg-pos', { x: Math.round(_pp.x), z: Math.round(_pp.z) }, 'debug');
}
} catch (_) {}
}
}
if (!freeMoneyDone && _feats.freeMoney) _runSafe('bg freeMoney: ', () => autoFarmFreeMoney().catch(e => { _dbgLog('economy', 'free-money-fail', { err: e?.message }, 'warn'); }));
if (_pendingBaseCapture) {
try {
const myBase = getMyBase();
if (myBase) {
const bp = myBase.getPosition();
homePos = { x: bp.x, y: bp.y, z: bp.z };
backPos = homePos;
_pendingBaseCapture = false;
}
} catch (e) { _dbgLog('kcc', 'base-capture-error', { err: e.message }, 'error'); }
}
_bgAutoLock(now, inStealMode && !!_getBasesManager()?.activeBases);
function _bgEnsurePeriodicHooks(now, lastEnsure, fastMode) {
const interval = fastMode ? 2000 : 4000;
if (now - lastEnsure < interval) return lastEnsure;
_runSafe('bg overlayMgr: ', () => {
_overlayMgr = W.pc?.app?.root?.find(e => e.script?.overlayManager)?.[0]?.script?.overlayManager ?? null;
});
_runSafe('bg hookAntiDC: ', () => hookAntiDisconnect());
_runSafe('bg hookPetSpawn: ', () => hookPetSpawn());
_runSafe('bg hookDeath: ', () => hookAntiDeath());
_runSafe('bg hookKnockback: ', () => hookAntiKnockback());
_runSafe('bg hookChatFade: ', () => hookChatFade());
_runSafe('bg hookChatCompact: ', () => hookChatCompact());
_runSafe('bg hookNameColors: ', () => hookNameColors());
_runSafe('bg hookCarryTune: ', () => hookCarryTune());
return now;
}
function _bgStealModeTick(now, inStealMode) {
if (!inStealMode) return;
_runSafe('bg fleeCheck: ', () => _checkFleeOnIntruder());
_runSafe('bg hopResume: ', () => tryHopResume());
_runSafe('bg autoCollect: ', () => autoCollectPetEarnings());
if (_feats.autoFountain && now - _lastFountainSend > 30000) _runSafe('bg fountain: ', () => _fountainSend());
}
function _bgAutoLock(now, inSteal) {
if (!_feats.autoLock || !inSteal || now - lastLockCheck <= 100) return;
lastLockCheck = now;
const lockBtn = getLockBtn();
const clientExpired = lockBtn && (!lockBtn.isLockdownActive || lockBtn.lockdownTimeLeft <= 1);
const wallClockExpired = _lockActivatedAt > 0 && (now - _lockActivatedAt) >= _lockDuration;
const neverLocked = !_lockActivatedAt && lockBtn && !lockBtn.isLockdownActive;
if (clientExpired || wallClockExpired || neverLocked) {
triggerLock();
} else if (lockBtn && lockBtn.isLockdownActive && lockBtn.lockdownTimeLeft > 0 && lockBtn.lockdownTimeLeft <= 1) {
triggerLock();
}
}
const bgDelay = (() => {
const base = (rn === 'PetTycoon' || rn === 'EscapeTsunami') ? 200 : rn === 'TowerParkour' ? 500 : 350;
const factor = _debugFps > 0 ? (_debugFps < 35 ? 1.8 : _debugFps < 45 ? 1.35 : 1) : 1;
return Math.round(base * factor);
})();
_bgTimer = setTimeout(_bgTick, bgDelay);
}
_bgTimer = setTimeout(_bgTick, 200);
}
(function () {
const _arWin = 2000;
const _arThr = 12;
const _arCooldown = 60000;
const _arKey = _pfx + 'ar';
const _arCap = 3;
const _arCapWin = 600000;
let _arBuf = [];
let _arFiredAt = 0;
let _arTries = 0;
const _arReload = () => {
try { _dbgLog('ammo', 'recover-reload', null, 'warn'); } catch (_) {}
_setHopReason('reload');
_persistHopReason('reload');
setTimeout(() => { try { window.location.reload(); } catch (_) {} }, 400);
};
const _arStuck = () => {
const now = Date.now();
if (_arFiredAt && now - _arFiredAt < _arCooldown) return;
let base = { t: 0, n: 0 };
try {
const raw = _dbGet(_arKey);
if (raw && typeof raw === 'object' && typeof raw.n === 'number' && typeof raw.t === 'number') base = raw;
} catch (_) {}
if (base.n >= _arCap && now - base.t < _arCapWin) {
try { _dbgLog('ammo', 'recover-capped', { n: base.n }, 'warn'); } catch (_) {}
_arFiredAt = now;
return;
}
if (now - base.t > _arCapWin) { base.t = now; base.n = 0; }
base.n++;
base.t = now;
try { _dbSet(_arKey, base); } catch (_) {}
_arFiredAt = now;
_arReload();
};
window.addEventListener('error', e => {
let msg = '';
let file = '';
try { msg = e && e.message ? String(e.message) : ''; } catch (_) {}
try { file = e && e.filename ? String(e.filename) : ''; } catch (_) {}
const _arBad = msg.indexOf('too much recursion') >= 0 || msg.indexOf('is not a function') >= 0;
if (!_arBad) return;
if (file && file.indexOf('ammo') < 0) return;
const now = Date.now();
_arBuf.push(now);
while (_arBuf.length && now - _arBuf[0] > _arWin) _arBuf.shift();
if (_arBuf.length < _arThr) return;
_arBuf = [];
_arStuck();
});
const _arHook = () => {
if (_arTries++ > 200) return;
const app = W?.pc?.app;
if (!app) { setTimeout(_arHook, 300); return; }
app.on('NetworkManager:Connected', () => {
_arBuf = [];
try { _dbRm(_arKey); } catch (_) {}
});
};
_arHook();
})();
const { _hideExpModeClones, _showExpModeClones } = (function() {
var _didHook = false;
var _scriptNames = null;
var _mesBannerAsset = null;
var _mesInjectedClones = [];
var _catImgLoaded = null;
function _hideExpModeClones() {
var om = _overlayMgr;
if (!om || !Array.isArray(om.gameModes)) return;
for (var i = om.gameModes.length - 1; i >= 0; i--) {
if (om.gameModes[i] && om.gameModes[i].name && om.gameModes[i].name.indexOf('MES: ') === 0) {
om.gameModes.splice(i, 1);
}
}
for (var j = _mesInjectedClones.length - 1; j >= 0; j--) {
var c = _mesInjectedClones[j];
if (c && c.destroy) c.destroy();
}
_mesInjectedClones.length = 0;
}
function _showExpModeClones() {
var om = _overlayMgr;
if (!om || !Array.isArray(om.gameModes)) return;
_mesInjectedClones.length = 0;
_scanAndInject(om);
var he = om.gameModesHolder && om.gameModesHolder.element;
if (he) he.width = 1100;
var lg = om.gameModesHolder && om.gameModesHolder.layoutgroup;
if (lg) { lg.enabled = false; lg.enabled = true; }
}
(function() {
var img = new Image();
img.onload = function() {
_catImgLoaded = img;
if (_mesInjectedClones.length) {
var pc = W.pc;
var app = pc && pc.app;
var om = _overlayMgr;
if (app && om) _ensureMesBanner(app, om);
}
};
img.onerror = function() {
var fb = new Image();
fb.onload = function() { _catImgLoaded = fb; };
try { fb.src = GM_getResourceURL('catFallback'); } catch(e) {}
};
try { img.src = GM_getResourceURL('catBanner'); } catch(e) {}
})();
function _ensureMesBanner(app, om) {
if (_mesBannerAsset || !_catImgLoaded) return _mesBannerAsset;
try {
var gd = app.graphicsDevice;
if (!gd) return null;
var bw = 330;
var bh = 185;
var br = 20;
try {
if (om && om.gameModeDefaultEntity) {
var be = om.gameModeDefaultEntity.findByName('ModeBanner');
if (be && be.element) {
bw = be.element.width || bw;
bh = be.element.height || bh;
}
}
} catch(e) {}
var c = document.createElement('canvas');
c.width = bw;
c.height = bh;
var ctx = c.getContext('2d');
ctx.beginPath();
ctx.moveTo(br, 0);
ctx.lineTo(bw - br, 0);
ctx.arcTo(bw, 0, bw, br, br);
ctx.lineTo(bw, bh);
ctx.lineTo(0, bh);
ctx.lineTo(0, br);
ctx.arcTo(0, 0, br, 0, br);
ctx.closePath();
ctx.clip();
var img = _catImgLoaded;
var scale = Math.max(bw / img.naturalWidth, bh / img.naturalHeight);
var sw = img.naturalWidth * scale;
var sh = img.naturalHeight * scale;
var sx = (bw - sw) / 2;
var sy = (bh - sh) / 2;
ctx.fillStyle = '#1a1a2e';
ctx.fillRect(0, 0, bw, bh);
ctx.drawImage(img, sx, sy, sw, sh);
ctx.fillStyle = 'rgba(0,0,0,0.2)';
ctx.fillRect(0, 0, bw, bh);
var tex = new pc.Texture(gd, { width: bw, height: bh, format: pc.PIXELFORMAT_R8_G8_B8_A8, mipmaps: false });
tex.minFilter = pc.FILTER_LINEAR;
tex.magFilter = pc.FILTER_LINEAR;
tex.addressU = pc.ADDRESS_CLAMP_TO_EDGE;
tex.addressV = pc.ADDRESS_CLAMP_TO_EDGE;
tex.setSource(c);
_mesBannerAsset = new pc.Asset('_mes_banner', 'texture', null, { url: '' });
_mesBannerAsset.resource = tex;
_mesBannerAsset.loaded = true;
app.assets.add(_mesBannerAsset);
for (var i = 0; i < _mesInjectedClones.length; i++) {
var cl = _mesInjectedClones[i];
var bn = cl && cl.findByName('ModeBanner');
if (bn && bn.element) bn.element.textureAsset = _mesBannerAsset;
}
} catch(e) { _catImgLoaded = null; }
return _mesBannerAsset;
}
function _collectScriptNames(app) {
if (_scriptNames) return _scriptNames;
var names = Object.create(null);
try {
var reg = app && app.scripts;
var list = reg && reg._list;
if (Array.isArray(list)) {
for (var i = 0; i < list.length; i++) {
var n = list[i] && list[i].__name;
if (typeof n === 'string') names[n.toLowerCase()] = true;
}
}
} catch(e) {}
if (Object.keys(names).length > 0) _scriptNames = names;
return names;
}
function _hasScripts(names, rc) {
var p = rc.toLowerCase();
for (var sn in names) {
if (sn.indexOf(p) === 0) return true;
}
return false;
}
function _scanAndInject(om) {
if (!_feats.showExpModes) return;
var app = om.app;
if (!app || !om.gameModeDefaultEntity || !om.gameModesHolder || !Array.isArray(om.gameModes)) return;
var names = _collectScriptNames(app);
var scenes = app.scenes && typeof app.scenes.list === 'function' ? app.scenes.list() : [];
if (!scenes.length) return;
var existing = new Set();
for (var i = 0; i < om.gameModes.length; i++) {
var m = om.gameModes[i];
if (m && m.roomCode) existing.add(m.roomCode);
}
var banner = _ensureMesBanner(app, om) || (om.gameModes[0] && om.gameModes[0].banner);
for (var i = 0; i < scenes.length; i++) {
var name = scenes[i] && scenes[i].name;
if (typeof name !== 'string' || name.indexOf('Mode_') !== 0) continue;
var rc = name.slice(5);
if (!rc || existing.has(rc) || !_hasScripts(names, rc)) continue;
var display = 'MES: ' + rc.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2');
var idx = om.gameModes.length;
om.gameModes.push({ roomCode: rc, name: display, banner: banner, tag: null });
var clone = om.gameModeDefaultEntity.clone();
clone.enabled = true;
clone.name = rc;
var t = clone.findByName('ModeTitle');
if (t && t.element) t.element.text = display;
var bn = clone.findByName('ModeBanner');
if (bn && bn.element && banner) bn.element.textureAsset = banner;
var tg = clone.findByName('ModeTag_new');
var tu = clone.findByName('ModeTag_updated');
if (tg) tg.enabled = false;
if (tu) tu.enabled = false;
if (clone.script && clone.script.button) clone.script.button.argument = String(idx);
om.gameModesHolder.addChild(clone);
if (Array.isArray(om.gameModesArray)) om.gameModesArray.push(clone);
_mesInjectedClones.push(clone);
}
var he = om.gameModesHolder.element;
var lg = om.gameModesHolder.layoutgroup;
if (he && lg && om.gameModesArray && om.gameModesArray.length > 4) {
var sp = (lg.spacing && lg.spacing.x) || 25;
var cw = (om.gameModesArray[0] && om.gameModesArray[0].element && om.gameModesArray[0].element.width) || 330;
he.width = 3 * cw + 2 * sp;
}
}
var _iv = setInterval(function() {
if (!_didHook) {
var pc = W.pc;
if (pc && pc.app && pc.app.root) {
var found = pc.app.root.find(function(e) { return e.script && e.script.overlayManager; });
if (found && found.length) {
var proto = Object.getPrototypeOf(found[0].script.overlayManager);
if (proto && typeof proto.renderGameModes === 'function') {
var _orig = proto.renderGameModes;
_hookProp(proto, 'renderGameModes', { renderGameModes() { _orig.call(this); _scanAndInject(this); } }.renderGameModes);
_didHook = true;
}
}
}
}
if (_didHook && typeof _overlayMgr !== 'undefined' && _overlayMgr && _overlayMgr.gameModes) {
_scanAndInject(_overlayMgr);
clearInterval(_iv);
}
}, 300);
return { _hideExpModeClones, _showExpModeClones };
})();
let _fpvHooked = false;
const _fpvScaleData = new WeakMap();
function _setFpvBody(hide) {
_eachCharChild(function(child) {
if (!(child.render || child.model)) return;
var name = (child.name || '').toLowerCase();
if (/shoe|boot|footwear|weapon|sword|blade|bat|tool/i.test(name)) return;
child.enabled = !hide;
});
}
function _scaleHeldPet(scaleDown) {
var player = typeof getPlayer === 'function' ? getPlayer() : null;
if (!player) return;
var ph = player.findByName && player.findByName('PetHolder');
if (!ph) return;
ph.forEach && ph.forEach(function(child) {
if (scaleDown) {
if (!_fpvScaleData.has(child)) {
_fpvScaleData.set(child, {
scale: child.getLocalScale().clone(),
pos: child.getLocalPosition().clone()
});
}
var d = _fpvScaleData.get(child);
var s = d.scale;
child.setLocalScale(s.x * 0.8, s.y * 0.8, s.z * 0.8);
var p = d.pos;
child.setLocalPosition(p.x + 0.0175, p.y + 0.1, p.z);
} else {
if (_fpvScaleData.has(child)) {
var d2 = _fpvScaleData.get(child);
child.setLocalScale(d2.scale.x, d2.scale.y, d2.scale.z);
child.setLocalPosition(d2.pos.x, d2.pos.y, d2.pos.z);
_fpvScaleData.delete(child);
}
}
});
}
function _syncPetInvis() {
var player = typeof getPlayer === 'function' ? getPlayer() : null;
if (!player) return;
var ph = player.findByName && player.findByName('PetHolder');
if (!ph) return;
var shouldFade = !!_feats.invisible;
_eachMesh(ph, function(mi) {
if (shouldFade) {
_cloneMat(mi, _SYM_MAT);
mi.material.blendType = W.pc.BLEND_NORMAL;
mi.material.opacity = 0.3;
mi.material.depthWrite = false;
mi.material.update();
} else {
_restoreMat(mi, _SYM_MAT);
}
});
}
function _hookFpv() {
if (_fpvHooked) return;
var ce = W.GameGlobals && W.GameGlobals.cameraEntity;
if (!ce || !ce.script) return;
var cc = ce.script.cameraController;
if (!cc || !cc.postUpdate) return;
var orig = cc.postUpdate;
_hookProp(cc, 'postUpdate', { postUpdate(dt) {
orig.call(this, dt);
var fpv = !!_feats.firstPerson;
_setFpvBody(fpv);
_scaleHeldPet(fpv);
_syncPetInvis();
var vertMult = (window.innerHeight > window.innerWidth && _feats.fovVerticalMult) ? _feats.fovVerticalMult : 1;
this.entity.camera.fov = (fpv ? (_feats.fovFirstPerson || 80) : (_feats.fovThirdPerson || 55)) * vertMult;
if (!fpv) return;
var origin = this.cameraOriginEntity;
var mover = this.cameraMoverEntity;
if (!origin || !mover) return;
var eyePos = origin.getPosition();
mover.setPosition(eyePos.x, eyePos.y - 0.35, eyePos.z);
var or = origin.getRotation();
mover.setRotation(or);
var pe = W.GameGlobals && W.GameGlobals.playerEntity;
if (pe && pe.script && pe.script.playerController) {
pe.script.playerController.characterOriginEntity.setLocalEulerAngles(0, this.eulers.x, 0);
}
} }.postUpdate);
_fpvHooked = true;
}
function _updateFirstPerson() {
_hookFpv();
}
(() => {
let _tlObj = null;
function _tlWalk(root, name, on) {
const st = [root];
while (st.length) {
const n = st.pop();
if (!n) continue;
if (n.name === name) n.enabled = on;
const kids = n.children;
if (kids) for (let i = 0; i < kids.length; i++) st.push(kids[i]);
}
}
function _teleportUnlockPoll() {
const mm = _getSwordMobsManager();
if (!mm) return;
if (mm === _tlObj) return;
_tlObj = mm;
_hookProp(mm, 'renderTeleportPopup', { renderTeleportPopup() {
const b = this.teleportPopupHolder?.children;
if (!b) return;
for (let c = 0; c < b.length; c++) {
const e = b[c];
e.script.button.event = 'MobsManager:Teleport';
_tlWalk(e, 'Locked', false);
_tlWalk(e, 'Unlocked', true);
}
} }.renderTeleportPopup);
_dbgLog('feat', 'teleport-unlock', { on: true });
}
setInterval(() => { try { _teleportUnlockPoll(); } catch (_) {} }, 3000);
})();
(() => {
let _auRoom = null;
let _auSeen = new Set();
let _auLastSend = 0;
function _areaUnlockPoll() {
if (!_feats.autoUnlockAreas) return;
const mm = _getSwordMobsManager();
if (!mm) return;
const room = _getNetworkManager()?.room;
if (!room?.connection?.isOpen) return;
if (room.name !== 'SwordRNG') return;
const sid = room.sessionId || room.id || null;
const unlocked = mm.unlockedAreas || [];
const unlockedSet = new Set(unlocked);
if (sid !== _auRoom || unlocked.length < _auSeen.size) {
_auRoom = sid;
_auSeen = new Set(unlocked);
}
const now = Date.now();
const priceMap = new Map((mm.existingLevelPrices || []).map(p => [p.name, p.price]));
let target = null;
const pending = mm.wasLevelUnlockTriggered;
if (pending?.title && !unlockedSet.has(pending.title) && priceMap.has(pending.title)) target = pending.title;
if (!target) {
const ordered = (mm.levels || []).map(l => l.title);
for (const t of ordered) {
if (unlockedSet.has(t)) continue;
if (!priceMap.has(t)) continue;
target = t;
break;
}
}
if (target && now - _auLastSend >= 2500) {
const price = priceMap.get(target) || 0;
if (price > 0 && mm.balance >= price) {
_auLastSend = now;
room.send('buyArea', { name: target });
_rngLogPush(T.log_unlocking_area + ': ' + target + ' [' + _fmtVal(price) + ']');
_dbgLog('feat', 'area-unlock', { area: target, price, balance: mm.balance });
}
}
for (const t of unlocked) {
if (_auSeen.has(t)) continue;
_auSeen.add(t);
const lvl = (mm.levels || []).find(l => l.title === t);
if (lvl?.levelEntity) {
mm.app?.fire('MobsManager:Teleport', t);
_rngLogPush(T.log_area_unlocked + ': ' + t);
_dbgLog('feat', 'area-teleport', { area: t });
}
}
}
setInterval(() => { try { _areaUnlockPoll(); } catch (_) {} }, 1500);
})();
(() => {
let _rbObj = null;
let _rbRoom = null;
let _rbLastSend = 0;
let _rbSentCur = -1;
let _rbTpPending = false;
let _rbTpAt = 0;
let _rbLastSuccess = 0;
let _rbSkipLog = '';
function _firstUnlocked(mm) {
const set = new Set(mm?.unlockedAreas || []);
const skip = new Set(['Spawn', 'Trading Hub']);
const levels = mm?.levels || [];
for (const l of levels) {
const t = l?.title;
if (t && set.has(t) && !skip.has(t)) return t;
}
for (const t of set) if (!skip.has(t)) return t;
return null;
}
function _rebirthPoll() {
if (!_feats.autoRebirth) return;
const rm = _getSwordRebirthManager();
if (!rm) return;
const room = _getNetworkManager()?.room;
if (!room?.connection?.isOpen) return;
if (room.name !== 'SwordRNG') return;
const sid = room.sessionId || room.id || null;
if (rm !== _rbObj || sid !== _rbRoom) {
_rbObj = rm;
_rbRoom = sid;
_rbLastSend = 0;
_rbSentCur = (rm.currentRebirth || 0) - 1;
}
const now = Date.now();
const cost = rm.rebirthCost || 0;
const bal = rm.diamondsBalance || 0;
const cur = rm.currentRebirth || 0;
const sinceSuccess = now - _rbLastSuccess;
const _rbGated = sinceSuccess < 30000 || bal > 50000000;
if (!_rbGated) {
const _skip = 's' + Math.floor(sinceSuccess / 1000) + 'b' + Math.floor(bal / 1000000);
if (_rbSkipLog !== _skip) { _rbSkipLog = _skip; _dbgLog('feat', 'rebirth-gate', { sinceSuccess: Math.floor(sinceSuccess / 1000), bal, cost, cur, chain: sinceSuccess < 30000, over50m: bal > 50000000 }); }
} else {
_rbSkipLog = '';
}
if (!_rbTpPending && _rbGated && cost > 0 && bal >= cost && now - _rbLastSend >= 1500 && (cur > _rbSentCur || now - _rbLastSend >= 5000)) {
_rbLastSend = now;
_rbSentCur = cur;
_rbLastSuccess = now;
room.send('rebirth');
_rbTpPending = true;
_rbTpAt = now + 2000;
_rngLogPush(T.log_rebirthing + ' -> x' + Math.pow(1.82, cur + 1).toFixed(1));
_dbgLog('feat', 'rebirth', { cost, bal, cur });
}
if (_rbTpPending && now >= _rbTpAt) {
const mm = _getSwordMobsManager();
const first = _firstUnlocked(mm);
if (first) {
_rbTpPending = false;
mm?.app?.fire('MobsManager:Teleport', first);
_rngLogPush(T.log_teleported_to + ' ' + first);
_dbgLog('feat', 'rebirth-tp', { area: first });
}
}
}
setInterval(() => { try { _rebirthPoll(); } catch (_) {} }, 1500);
})();
(() => {
function _hideRewardsPoll() {
const om = _getSwordOverlayManager();
if (!om) return;
if (om.balanceContainer) om.balanceContainer.enabled = !_feats.hideKillRewards;
}
setInterval(() => { try { _hideRewardsPoll(); } catch (_) {} }, 1500);
})();
(() => {
let _hrlObj = null;
function _hideRollerPoll() {
const rm = _getRollManager();
if (!rm) return;
if (rm === _hrlObj) return;
_hrlObj = rm;
const _origUpd = rm.updateRollAnimation;
const _origSpawn = rm.spawnResultItem;
_hookProp(rm, 'updateRollAnimation', { updateRollAnimation(dt) {
if (!this.hasSpawnedResultItem) {
if (this.rollMainGroup) this.rollMainGroup.enabled = !_feats.hideRoller;
if (this.rollsHolder) this.rollsHolder.enabled = !_feats.hideRoller;
if (_feats.hideRoller && this.pool) { for (let i = 0; i < this.pool.length; i++) this.pool[i].enabled = false; }
}
_origUpd.call(this, dt);
} }.updateRollAnimation);
_hookProp(rm, 'spawnResultItem', { spawnResultItem() {
if (this.rollMainGroup) this.rollMainGroup.enabled = true;
if (this.rollsHolder) this.rollsHolder.enabled = true;
_origSpawn.call(this);
} }.spawnResultItem);
_dbgLog('feat', 'hide-roller', { on: true });
}
setInterval(() => { try { _hideRollerPoll(); } catch (_) {} }, 3000);
})();
(() => {
let _jtRoom = null;
let _jtDone = false;
function _highestUnlocked(mm) {
const set = new Set(mm?.unlockedAreas || []);
const skip = new Set(['Spawn', 'Trading Hub']);
const levels = mm?.levels || [];
let best = null;
for (const l of levels) {
const t = l?.title;
if (t && set.has(t) && !skip.has(t)) best = t;
}
return best;
}
function _joinTpPoll() {
if (!_feats.autoJoinTp) return;
const mm = _getSwordMobsManager();
if (!mm) return;
const room = _getNetworkManager()?.room;
if (!room?.connection?.isOpen) return;
if (room.name !== 'SwordRNG') return;
const sid = room.sessionId || room.id || null;
if (sid !== _jtRoom) {
_jtRoom = sid;
_jtDone = false;
}
if (_jtDone) return;
const target = _highestUnlocked(mm);
if (!target) return;
_jtDone = true;
mm.app?.fire('MobsManager:Teleport', target);
_rngLogPush(T.log_teleported_to + ' ' + target);
_dbgLog('feat', 'join-tp', { area: target });
}
setInterval(() => { try { _joinTpPoll(); } catch (_) {} }, 1500);
})();
let _tickN = 0;
let _coordsOverlayNextAt = 0;
let _targetInfoNextAt = 0;
const _NO_SNIPE_PET_ROOMS = new Set(['SwordRNG', 'TowerParkour', 'Infection', 'Hub', 'Murder Mystery', 'MurderMystery']);
function _tickSlow() {
_installErrHandlers();
try { hookNoclip(); } catch (e) { _dbgLog('tick', 'hookNoclip-err', { err: e.message }, 'error'); }
try { hookJumpMult(); } catch (e) { _dbgLog('tick', 'hookJumpMult-err', { err: e.message }, 'error'); }
const rn = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
const needGhostTick = _ghostActive || !!_wavesGhostPos || (_feats.ghostMode && (rn === 'PetTycoon' || rn === 'EscapeTsunami'));
if (needGhostTick) {
try { updateGhostEffect(); } catch (e) { _dbgLog('tick', 'ghostEffect-err', { err: e.message }, 'error'); }
}
try { updateXrayEffect(); } catch (e) { _dbgLog('tick', 'xrayEffect-err', { err: e.message }, 'error'); }
if (_nativeHud?._root && !_nativeHud._root.parent) {
_nativeHud = createNativeHUD();
if (_nativeHud) { Object.assign(hud, _nativeHud); _log('setup', 'native HUD recovered'); }
else { for (const k of Object.keys(hud)) hud[k] = null; }
}
const gameSettingsOpen = W.pc?.isGamePaused && _overlayMgr?.currentPauseCategory === 'SettingsCategory';
const nativeVisible = _nativeHud?._root?.enabled && _nativeHud._root.parent;
if (hud.hudRoot) hud.hudRoot.style.display = gameSettingsOpen ? 'none' : (nativeVisible ? 'none' : 'flex');
if (_nativeHud?._root) _nativeHud._root.enabled = !gameSettingsOpen;
if (hud.carryTimer) {
const pt = _getPetTycoon();
const holding = !!(pt?.isHoldingPet);
const isSteal = !!_getBasesManager()?.activeBases;
if (holding && isSteal) {
if (!hud.carryTimer._start) hud.carryTimer._start = Date.now();
hud.carryTimer.style.display = '';
hud.carryTimer.textContent = '\u23F1 ' + ((Date.now() - hud.carryTimer._start) / 1000).toFixed(1) + 's';
} else {
if (hud.carryTimer._start) hud.carryTimer._start = 0;
hud.carryTimer.style.display = 'none';
if (_carryTune.playing) _stopCarryTune();
}
}
}
function _tickFps(frameDtMs) {
_debugFpsAccumFrames++;
_debugFpsAccumMs += frameDtMs;
if (_debugFpsAccumMs >= 1000) {
_debugFps = Math.round((_debugFpsAccumFrames * 1000) / _debugFpsAccumMs);
_debugFpsAccumFrames = 0;
_debugFpsAccumMs = 0;
return true;
}
return false;
}
function _tickCoordsOverlay(fpsDirty) {
const overlayNow = Date.now();
if (_feats.showCoords) {
const playerPos = getPlayer()?.getPosition?.();
if (overlayNow >= _coordsOverlayNextAt || fpsDirty) {
_coordsOverlayNextAt = overlayNow + 100;
_syncCoordsOverlay(playerPos);
}
} else if (_feats.showFps && fpsDirty) _syncCoordsOverlay();
}
function _tickTargetInfo() {
const lookNow = Date.now();
if (lookNow < _targetInfoNextAt) return;
_targetInfoNextAt = lookNow + 300;
try {
const cam = getCamera();
if (!cam) return;
const origin = cam.getPosition();
const fwd = cam.forward;
const rb = W.pc?.app?.systems?.rigidbody;
if (!rb) return;
const end = new W.pc.Vec3(origin.x + fwd.x * 500, origin.y + fwd.y * 500, origin.z + fwd.z * 500);
const hit = rb.raycastFirst(origin, end);
if (hit?.entity) {
const hitEnt = hit.entity;
const parts = [];
let e = hitEnt;
const chain = [];
while (e) { chain.unshift(e.name || '?'); e = e.parent; }
parts.push(chain.join('/'));
const tags = hitEnt.tags;
if (tags && tags.size) parts.push('[' + [...tags].join(',') + ']');
if (hitEnt.model?.meshInstances?.length) {
const mi = hitEnt.model.meshInstances[0];
if (mi.mesh?.name) parts.push('mesh:' + mi.mesh.name);
const mat = mi.material;
if (mat) {
if (mat.name) parts.push('mat:' + mat.name);
const texNames = [];
if (mat.diffuseMap?.name) texNames.push('dif:' + mat.diffuseMap.name);
if (mat.emissiveMap?.name) texNames.push('emi:' + mat.emissiveMap.name);
if (texNames.length) parts.push(texNames.join(' '));
if (mat.opacity != null && mat.opacity !== 1) parts.push('a:' + mat.opacity.toFixed(2));
}
}
_targetInfoText = parts.join(' | ');
} else {
_targetInfoText = _tickTargetInfoFallback(origin, fwd);
}
} catch (_) { _targetInfoText = ''; }
if (_targetInfoText) _syncCoordsOverlay();
}
function _tickTargetInfoFallback(origin, fwd) {
const root = W.pc?.app?.root;
if (!root) return '';
const dirLen = Math.sqrt(fwd.x*fwd.x+fwd.y*fwd.y+fwd.z*fwd.z);
const dx = fwd.x/dirLen, dy = fwd.y/dirLen, dz = fwd.z/dirLen;
let bestDist = Infinity;
let bestEnt = null;
const _worldPos = (ent) => {
const wt = ent.getWorldTransform?.();
if (wt?.data) return {x:wt.data[12], y:wt.data[13], z:wt.data[14]};
const p = ent.getPosition();
return {x:p.x, y:p.y, z:p.z};
};
const _traverse = (ent) => {
const hasModel = ent.model?.meshInstances?.length && ent.model.enabled;
const hasElem = ent.element?.enabled && (ent.element.type === 'image' || ent.element.type === 'text');
if (hasModel || hasElem) {
const wp = _worldPos(ent);
const vx = wp.x - origin.x, vy = wp.y - origin.y, vz = wp.z - origin.z;
const t = vx*dx + vy*dy + vz*dz;
if (t > 0 && t < 500) {
const cx = origin.x + dx*t, cy = origin.y + dy*t, cz = origin.z + dz*t;
const d = Math.sqrt((cx-wp.x)*(cx-wp.x)+(cy-wp.y)*(cy-wp.y)+(cz-wp.z)*(cz-wp.z));
if (d < 3 && t < bestDist) { bestDist = t; bestEnt = ent; }
}
}
const children = ent.children;
if (children) for (let i = 0; i < children.length; i++) _traverse(children[i]);
};
_traverse(root);
if (!bestEnt) return '';
const parts2 = [];
let e2 = bestEnt;
const chain2 = [];
while (e2) { chain2.unshift(e2.name || '?'); e2 = e2.parent; }
parts2.push(chain2.join('/'));
const tags2 = bestEnt.tags;
if (tags2 && tags2.size) parts2.push('[' + [...tags2].join(',') + ']');
if (bestEnt.model?.meshInstances?.length) {
const mi2 = bestEnt.model.meshInstances[0];
if (mi2.mesh?.name) parts2.push('mesh:' + mi2.mesh.name);
const mat2 = mi2.material;
if (mat2) {
if (mat2.name) parts2.push('mat:' + mat2.name);
const tn2 = [];
if (mat2.diffuseMap?.name) tn2.push('dif:' + mat2.diffuseMap.name);
if (mat2.emissiveMap?.name) tn2.push('emi:' + mat2.emissiveMap.name);
if (tn2.length) parts2.push(tn2.join(' '));
if (mat2.opacity != null && mat2.opacity !== 1) parts2.push('a:' + mat2.opacity.toFixed(2));
}
}
if (bestEnt.element?.enabled) {
parts2.push('el:' + (bestEnt.element.type || '?'));
if (bestEnt.element.textureAsset?.name) parts2.push('tex:' + bestEnt.element.textureAsset.name);
if (bestEnt.element.text) parts2.push('txt:' + bestEnt.element.text);
}
return parts2.join(' | ');
}
function _tickCuddle(player, kcc, now) {
if (!_cuddle.active || !_cuddle.target || !_feats.cuddleFollow) return;
var tPos = _cuddle.target.getPosition?.();
if (!tPos || !isFinite(tPos.x) || !isFinite(tPos.z)) {
_cuddle.active = false;
_cuddle.target = null;
_cuddle.walking = false;
if (_cuddle.noclipWasOff) { _cuddle.noclipWasOff = false; _feats.noclip = false; hookNoclip(); }
_cuddle.lastSnap = 0;
_cuddle.stationaryTicks = 0;
_cuddle.firstOrient = false;
_cuddle.idleStopped = false;
_cuddle.firstSnapDone = false;
_releaseAllSimKeys();
_dbgLog('cuddle', 'target-lost', null, 'debug');
return;
}
if (_fly.active) { _fly.active = false; if (typeof flyOff === 'function') flyOff(kcc); }
kcc._grounded = true;
kcc.gravity = GRAVITY;
if (!_feats.noclip) { _cuddle.noclipWasOff = true; _feats.noclip = true; hookNoclip(); }
_cuddle.walking = true;
var cam = player.script?.playerController?.cameraController;
if (!_cuddle.prev) { _cuddle.prev = { x: tPos.x, z: tPos.z }; _cuddle.stationaryTicks = 0; }
var rdx = tPos.x - _cuddle.prev.x;
var rdz = tPos.z - _cuddle.prev.z;
var tDist = Math.hypot(rdx, rdz);
if (tDist < 0.05) { _cuddle.stationaryTicks++; }
else { _cuddle.stationaryTicks = 0; _cuddle.lastRdx = rdx; _cuddle.lastRdz = rdz; }
var pPos = player.getPosition();
var cDist = Math.hypot(tPos.x - pPos.x, tPos.z - pPos.z);
var effDist = Math.abs(cDist - 0.3);
var sinceSnap = now - _cuddle.lastSnap;
var doSnap = (_cuddle.stationaryTicks >= 3 && effDist > 0.5) || (sinceSnap > 1000 && effDist > 0.5) || (!_cuddle.firstSnapDone && sinceSnap > 1000);
var orientRdx, orientRdz;
if (!_cuddle.firstOrient || doSnap) {
if (effDist > 0.5) {
orientRdx = tPos.x - pPos.x;
orientRdz = tPos.z - pPos.z;
} else if (_cuddle.lastRdx || _cuddle.lastRdz) {
orientRdx = _cuddle.lastRdx;
orientRdz = _cuddle.lastRdz;
} else {
var tEulers = _cuddle.target.getEulerAngles?.();
if (tEulers) {
var tr = tEulers.y * Math.PI / 180;
orientRdx = Math.sin(tr);
orientRdz = Math.cos(tr);
}
}
if (orientRdx || orientRdz) {
var yaw = Math.atan2(orientRdx, orientRdz) * (180 / Math.PI);
if (cam) cam.eulers.x = yaw;
var pctrl = player.script?.playerController;
if (pctrl) {
pctrl.direction = yaw * Math.PI / 180;
if (pctrl.characterOriginEntity) pctrl.characterOriginEntity.setLocalEulerAngles(0, yaw, 0);
}
}
if (!_cuddle.firstOrient) _cuddle.firstOrient = true;
}
if (doSnap) {
_tickCuddleSnap(player, kcc, tPos, orientRdx, orientRdz, now);
_cuddle.lastSnap = now;
_cuddle.stationaryTicks = 0;
_cuddle.idleStopped = false;
_cuddle.firstSnapDone = true;
}
_tickCuddleAnim(player, now, effDist);
_cuddle.prev = { x: tPos.x, z: tPos.z };
}
function _tickCuddleSnap(player, kcc, tPos, orientRdx, orientRdz, now) {
var oldPPos = player.getPosition();
var oldPos = { x: oldPPos.x, y: oldPPos.y, z: oldPPos.z };
var snapX = tPos.x, snapZ = tPos.z;
if (orientRdx || orientRdz) {
var oLen = Math.hypot(orientRdx, orientRdz) || 1;
snapX = tPos.x - (orientRdx / oLen) * 0.3;
snapZ = tPos.z - (orientRdz / oLen) * 0.3;
}
teleport(player, { x: snapX, y: tPos.y, z: snapZ }, 'cuddle');
if (kcc && kcc.teleport) { kcc.teleport(snapX, tPos.y, snapZ); }
else if (kcc) { kcc._posX = snapX; kcc._posY = tPos.y; kcc._posZ = snapZ; kcc._velX = 0; kcc._velZ = 0; }
var pctrl3 = player.script?.playerController;
if (pctrl3) { pctrl3.lastBroadcast = 0; }
_cuddle.interp = { fromX: oldPos.x, fromY: oldPos.y, fromZ: oldPos.z, toX: snapX, toY: tPos.y, toZ: snapZ, start: now, dur: 1000 };
if (_cuddle.wasRunning) {
var pctrl4 = pctrl3;
if (pctrl4) { pctrl4.isRunning = false; pctrl4.lastRunningBoolean = true; }
try { W.pc.app.fire('NetworkManager:Send', 'animSetBooleans', [{ name: 'Running', value: false }]); } catch (_) {}
_cuddle.wasRunning = false;
}
}
function _tickCuddleAnim(player, now, effDist) {
if (_cuddle.wasRunning) {
if (effDist < 0.5 && now - _cuddle.lastSnap > 1500) {
var pctrl5 = player.script?.playerController;
if (pctrl5) { pctrl5.isRunning = false; pctrl5.lastRunningBoolean = true; }
try { W.pc.app.fire('NetworkManager:Send', 'animSetBooleans', [{ name: 'Running', value: false }]); } catch (_) {}
_cuddle.wasRunning = false;
_cuddle.idleStopped = true;
} else {
var pctrl5b = player.script?.playerController;
if (pctrl5b) { pctrl5b.isRunning = true; pctrl5b.lastRunningBoolean = false; }
}
} else if (!_cuddle.idleStopped && now - _cuddle.lastSnap > 50 && now - _cuddle.lastSnap < 1500) {
var pctrl6 = player.script?.playerController;
if (pctrl6) { pctrl6.isRunning = true; pctrl6.lastRunningBoolean = false; }
try { W.pc.app.fire('NetworkManager:Send', 'animSetBooleans', [{ name: 'Running', value: true }]); } catch (_) {}
_cuddle.wasRunning = true;
}
if (player.script?.playerController?.characterAnimator) {
player.script.playerController.characterAnimator.setBoolean('Running', _cuddle.wasRunning);
}
}
function _tickCarryState(player, pc, kcc) {
const currentRoom = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
const inStealRoom = currentRoom === 'PetTycoon';
const inWavesRoom = currentRoom === 'EscapeTsunami';
const ptCarry = inStealRoom ? !!_getPetTycoon()?.isHoldingPet : false;
const etCarry = inWavesRoom ? !!_getEscapeTsunami()?.isHoldingPet : false;
const inSteal = inStealRoom && !!_getBasesManager()?.activeBases;
if (inSteal && ptCarry) {
if (!_carry.forcedInvis) {
_carry.forcedInvis = true;
_carry.forcedInvisPrev = !!_feats.invisible;
_carry.forcedInvisSuppressed = false;
}
if (!_carry.forcedInvisSuppressed && !_feats.invisible) {
_feats.invisible = true;
_toggleInvisible(true);
_updateInvisEffect(true);
}
if (hud.forcedInvis) hud.forcedInvis.classList.toggle('on', _feats.invisible);
} else if (_carry.forcedInvis) {
const restoreInvis = _carry.forcedInvisPrev;
_carry.forcedInvis = false;
_carry.forcedInvisPrev = false;
_carry.forcedInvisSuppressed = false;
if (_feats.invisible !== restoreInvis) {
_feats.invisible = restoreInvis;
_toggleInvisible(restoreInvis);
_updateInvisEffect(restoreInvis);
}
if (hud.forcedInvis) hud.forcedInvis.classList.toggle('on', _feats.invisible);
}
if (inSteal && ptCarry) {
if (!_carry.forcedNoclip) {
_carry.forcedNoclip = true;
_carry.forcedNoclipPrev = !!_feats.noclip;
}
if (!_feats.noclip) { _feats.noclip = true; hookNoclip(); }
if (hud.forcedNoclip) hud.forcedNoclip.classList.add('on');
} else if (_carry.forcedNoclip) {
const restoreNoclip = _carry.forcedNoclipPrev;
_carry.forcedNoclip = false;
_carry.forcedNoclipPrev = false;
if (_feats.noclip !== restoreNoclip) { _feats.noclip = restoreNoclip; hookNoclip(); }
if (hud.forcedNoclip) hud.forcedNoclip.classList.toggle('on', _feats.noclip);
}
if (_feats.carryNormalize && (ptCarry || etCarry)) {
if (pc?.isSlowedSpeed) pc.isSlowedSpeed = false;
if (ptCarry && pc?.isHolding) pc.isHolding = false;
if (!_cuddle.active) {
const targetSpeed = inSteal ? Math.min(SPEED_DEFAULT, 9) : SPEED_DEFAULT;
if (kcc.speed !== targetSpeed) kcc.speed = targetSpeed;
}
}
}
function _tickHudButtons() {
const _lazyRoom = getCachedRoomName() || _getNetworkManager()?.room?.name || '';
const _lazySteal = _lazyRoom === 'PetTycoon' && !!_getBasesManager()?.activeBases;
if (hud.fly) { hud.fly.classList.toggle('on', _fly.active); hud.fly.classList.toggle('disabled', !_shows.fly); }
if (hud.mobileFlyToggle) hud.mobileFlyToggle.classList.toggle('on', _fly.active);
if (hud.spr) hud.spr.classList.toggle('disabled', !_shows.sprint);
if (hud.home) hud.home.classList.toggle('disabled', !_shows.waypoints);
if (hud.go) hud.go.classList.toggle('disabled', !_shows.waypoints);
if (hud.back) hud.back.classList.toggle('disabled', !_shows.waypoints);
if (hud.slots) { const n = slots.filter(Boolean).length; hud.slots.textContent = `SLOTS ${n}/10`; hud.slots.classList.toggle('disabled', !_shows.waypoints); }
if (hud.tp) { hud.tp.classList.toggle('disabled', !_shows.cuddle); hud.tp.classList.toggle('on', !!panels.plist?.classList.contains('open')); }
if (hud.petsBtn) {
const petsVisible = _shows.pets && !_NO_SNIPE_PET_ROOMS.has(_lazyRoom);
hud.petsBtn.classList.toggle('disabled', !petsVisible);
hud.petsBtn.classList.toggle('on', !!panels.pets?.classList.contains('open'));
if (_nativeHud?.petsBtn?._native?.btn) _nativeHud.petsBtn._native.btn.enabled = petsVisible;
}
const inSword = _lazyRoom === 'SwordRNG';
if (hud.rngBtn) { const rngVisible = _shows.rng && inSword; hud.rngBtn.classList.toggle('disabled', !rngVisible); hud.rngBtn.classList.toggle('on', !!panels.rng?.classList.contains('open')); if (_nativeHud?.rngBtn?._native?.btn) _nativeHud.rngBtn._native.btn.enabled = rngVisible; }
if (hud.snipeBtn) {
const snipeVisible = _shows.snipe && !_NO_SNIPE_PET_ROOMS.has(_lazyRoom);
hud.snipeBtn.classList.toggle('disabled', !snipeVisible);
hud.snipeBtn.classList.toggle('on', _sc().active);
if (_nativeHud?.snipeBtn?._native?.btn) _nativeHud.snipeBtn._native.btn.enabled = snipeVisible;
}
if (panels.snipe?.classList.contains('open')) _syncSnipePanel?.();
if (hud.invis) { hud.invis.classList.toggle('disabled', !_shows.invis); hud.invis.classList.toggle('on', _feats.invisible); }
if (hud.cfg) { hud.cfg.classList.toggle('disabled', !_shows.settings); hud.cfg.classList.toggle('on', !!panels.settings?.classList.contains('open')); }
if (hud.help) { hud.help.classList.toggle('disabled', !_shows.help); hud.help.classList.toggle('on', !!panels.dialog?.classList.contains('open')); }
if (hud.prv) { hud.prv.classList.toggle('disabled', inSword || !_shows.prv); }
const inTower = _lazyRoom === 'TowerParkour';
const tcVis = inTower && _shows.tc;
if (hud.tc) { hud.tc.classList.toggle('disabled', !tcVis); if (_nativeHud?.tc?._native?.btn) _nativeHud.tc._native.btn.enabled = tcVis; if (hud.carryTimer) hud.carryTimer.style.display = inTower ? '' : 'none'; }
const tclVis = inTower && _shows.tcl;
if (hud.tcl) { hud.tcl.classList.toggle('disabled', !tclVis); hud.tcl.classList.toggle('on', _feats.towerLoop); if (_nativeHud?.tcl?._native?.btn) { _nativeHud.tcl._native.btn.enabled = tclVis; _nativeHud.tcl.classList.toggle('on', _feats.towerLoop); } }
if (hud.lock) {
if (_feats.autoLock && _lazySteal) {
const lockBtn = getLockBtn();
if (lockBtn) {
const timeLeft = lockBtn.lockdownTimeLeft || 0;
const isActive = lockBtn.isLockdownActive || false;
hud.lock.classList.toggle('on', isActive && timeLeft > 0);
hud.lock.textContent = (isActive && timeLeft > 0) ? `\ud83d\udd12 ${Math.ceil(timeLeft)}s` : `\ud83d\udd13 ${T.lock_unlocked}`;
}
} else if (!_feats.autoLock && _lazySteal) {
hud.lock.textContent = `\ud83d\udd13 ${T.lock_off}`;
hud.lock.classList.remove('on');
}
hud.lock.classList.toggle('disabled', inSword || !_shows.autoLock || !_lazySteal);
}
_towerLoopStep();
}
function _tickFly(kcc, now) {
if (!_fly.active) return;
if (kcc._grounded && now - _fly.startTime > 500) { flyOff(kcc, false); return; }
if (kcc.gravity !== 0) kcc.gravity = 0;
_fly.velY = kcc._velY;
const flySpeedCap = SPEED_DEFAULT;
if (_fly.up) {
if (_fly.velY < 0) _fly.velY = 0;
_fly.velY = flySpeedCap;
} else if (_fly.down) {
if (_fly.velY > 0) _fly.velY = 0;
_fly.velY = -flySpeedCap;
} else {
_fly.velY = 0;
}
kcc._velY = _fly.velY;
}
function _tickMid(player, pc, kcc, now) {
if (_snipe.freezeStealActive) {
if (_snipe.freezeUntil > 0 && now >= _snipe.freezeUntil) {
_snipe.freezeStealActive = false;
_snipe.freezeStartedAt = 0;
_dbgLog('snipe', 'freeze-expire', { afterMs: 3000, stillActive: _snipePetActionActive });
} else if (_snipe.freezeStartedAt > 0 && now - _snipe.freezeStartedAt > 3500) {
_snipe.freezeUntil = 0;
_snipe.freezeStealActive = false;
_snipe.freezeStartedAt = 0;
_dbgLog('snipe', 'freeze-timeout', { afterMs: 3500, stillActive: _snipePetActionActive }, 'warn');
}
}
if (pc?.isDied && Date.now() - _rbManualDeathAt >= 2000) { pc.isDied = false; }
_tickCuddle(player, kcc, now);
_tickCarryState(player, pc, kcc);
}
function _tick() {
requestAnimationFrame(_tick);
_tickN++;
const mid = (_tickN & 3) === 0;
const slowEvery = _debugFps > 0 ? (_debugFps < 40 ? 18 : _debugFps < 50 ? 14 : 12) : 12;
const slow = (_tickN % slowEvery === 0);
const lazy = (_tickN % 32 === 0);
const now = Date.now();
if (slow) _tickSlow();
try { _tickChatItalic(); } catch (e) {}
try { _tickTabColors(); } catch (e) {}
try { _tickNameAnim(); } catch (e) {}
const player = getPlayer();
if (!player) return;
const kcc = getKcc(player);
if (!kcc) return;
if (W.pc?.isMobile) {
var kb = W.pc.app?.keyboard;
var pcc = getPC(player);
if (kb && pcc?.touchInput) {
var z = 0, x = 0;
if (kb.isPressed(W.pc.KEY_W) || kb.isPressed(W.pc.KEY_UP)) z = -1;
if (kb.isPressed(W.pc.KEY_S) || kb.isPressed(W.pc.KEY_DOWN)) z = 1;
if (kb.isPressed(W.pc.KEY_A) || kb.isPressed(W.pc.KEY_LEFT)) x = 1;
if (kb.isPressed(W.pc.KEY_D) || kb.isPressed(W.pc.KEY_RIGHT)) x = -1;
if (z !== 0 || x !== 0) {
pcc.touchInput.z = z; pcc.touchInput.x = x;
pcc._kbActive = true;
} else if (pcc._kbActive) {
pcc.touchInput.z = 0; pcc.touchInput.x = 0;
pcc._kbActive = false;
}
if (kb.wasPressed(W.pc.KEY_SPACE)) W.pc.app?.fire('Player:Jump');
}
}
const frameNow = performance.now();
const frameDtMs = Math.max(1, frameNow - _debugPrevFrameAt);
_debugPrevFrameAt = frameNow;
const fpsDirty = _tickFps(frameDtMs);
_tickCoordsOverlay(fpsDirty);
{
const lr = $('ml-target-reticle');
if (lr) {
const want = _feats.showTargetInfo ? 'block' : 'none';
if (lr.style.display !== want) lr.style.display = want;
}
}
if (_feats.showTargetInfo) _tickTargetInfo();
if (_feats.walkUpWalls && kcc._grounded && kcc._velY !== 0) kcc._velY = 0;
try { _hookFpv(); } catch (e) {}
if (mid) {
const pc = getPC(player);
_tickMid(player, pc, kcc, now);
}
if (lazy) _tickHudButtons();
_tickFly(kcc, now);
}
requestAnimationFrame(_tick);
(function _schedPtRand() {
setTimeout(() => { _trySendProTip(); _schedPtRand(); }, 30000 + Math.random() * 150000);
})();
})();