// ==UserScript==
// @name BetterLZT-lite By LolzNews & Openresty
// @namespace betterlzt
// @version 2.0.0
// @author Openresty \w LolzNews
// @license Apache 2.0
// @description Legendary extension for Lolzteam from LolzNews
// @icon https://lolz.live/styles/brand/download/avatars/three_avatar.svg
// @match https://zelenka.guru/*
// @match https://lzt.market/*
// @match https://lolz.market/*
// @match https://lolz.live/*
// @connect *
// @connect hasan.ovh
// @connect hasan.su
// @grant GM.getValue
// @grant GM.setValue
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @run-at document-body
// ==/UserScript==
//
// ЛЮБЫЕ МОДИФИКАЦИИ КОДА, КОТОРЫЕ НАРУШАЮТ ПРАВИЛА ФОРУМА, ПРИВОДЯТ К СБОЯМ И НАРУШАЮТ РАБОТУ
// ФОРУМА/РАСШИРЕНИЯ ПРИВЕДУТ К БЛОКИРОВКАМ (ФОРУМНОЙ УЧЕТНОЙ ЗАПИСИ/УЧЕТНОЙ ЗАПИСИ BETTERLZT LIVE)
//
(async function () {
'use strict';
var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)();
var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)();
var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
var _unsafeWindow = /* @__PURE__ */ (() => typeof unsafeWindow != "undefined" ? unsafeWindow : void 0)();
function conVar(convar, isGlobal = false) {
try {
if (isGlobal) return globalConfig[convar];
return userConfig[convar];
} catch (e) {
return false;
}
}
function set_conVar(convar, value, isGlobal = false) {
if (isGlobal) {
globalConfig[convar] = value;
return saveConfig(true);
}
userConfig[convar] = value;
saveConfig();
}
function saveConfig(isGlobal = false) {
if (isGlobal)
return _GM_setValue("globalConfig", JSON.stringify(globalConfig));
_GM_setValue("userConfig", JSON.stringify(userConfig));
}
function makeWatermark(text, link = "#") {
if (!text) return false;
const waterm = document.createElement("h1");
waterm.style = "position:fixed;bottom:5px;right:5px;opacity:0.5;z-index:99;color:white;font-size: 25px;";
waterm.innerHTML = text;
waterm.href = link;
return document.body.append(waterm);
}
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
console.error("[BetterLZT Tools] JSON parse failed: " + e);
return false;
}
return true;
}
function changeUserStatus(status) {
if (!status) return;
let statusArea = document.querySelector(".userBlurb.current_text ");
return statusArea.innerHTML = status;
}
function changeUserAvatar(mode = "def") {
if (conVar("lolznews")) mode = "lolznews";
try {
let imageUrl;
switch (mode) {
case "lolznews":
imageUrl = "https://hasan.ovh/better/lolznews.png";
break;
default:
imageUrl = "data:image/png;base64,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";
break;
}
let imageArea = document.querySelector(".avatarScaler img");
imageArea.src = imageUrl;
return true;
} catch {
return false;
}
}
function inProfile() {
return !!document.querySelector(".avatarScaler");
}
function xfAlert(text) {
return XenForo.alert(text, 1, 1e4);
}
const css = ` <style>
.main-text {
font-size: 13px;
font-style: normal;
font-weight: 600;
line-height: normal;
display: inline;
}
.btns-l {
margin-bottom: 10px;
margin-right: 10px;
border-radius: 6px;
display: inline-block;
padding: 7px 15px;
background: #363636;
justify-content: center;
align-items: center;
gap: 12px;
font-size: 13px;
font-style: normal;
font-weight: 600;
}
details {
width: 100%;
background: #272727;
border: solid 3px #363636;
box-shadow: 0 0.1rem 1rem -0.5rem rgba(0, 0, 0, .4);
border-radius: 8px;
overflow: hidden;
margin-top: -25px;
margin-bottom: 35px;
}
summary {
padding: 15px;
display: block;
background: #363636;
position: relative;
cursor: pointer;
color: #D6D6D6;
font-family: Open Sans;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: normal;
}
summary span {
color: #949494;
font-size: 13px;
}
details span {
color: #949494;
font-size: 13px;
}
summary:after {
font-family: "Font Awesome 5 Pro";
color: rgb(148,148,148);
content: '>';
position: absolute;
left: 97%;
top: 50%;
transform: translate(-50%, -50%) rotate(90deg);
transform-origin: 0.2rem 50%;
transition: 0.25s transform ease;
}
details[open] > summary:after {
transform: translate(-50%, -50%) rotate(270deg);
}
details[open] > div {
padding: 10px 20px;
}
details .leftButton {
margin-right: 10px;
}
details button {
width: 45px;
height: 45px;
padding: 5px;
justify-content: center;
align-items: center;
color: rgb(34,142,93);
border-radius: 6px;
background: #363636;
border: none;
font-size: 25px;
margin-bottom: 10px;
margin-right: 10px;
}
details button.active {
border: 1.6px solid #07C682;
background: linear-gradient(180deg, rgba(7, 198, 130, 0.12) 0%, rgba(7, 198, 130, 0.00) 100%), #363636;
}
details input.input{
width: 77%;
padding: 6px;
border-radius: 6px;
height: 20px;
background: #303030;
color: white;
border: 1px solid rgb(54, 54, 54);
}
details input[type=checkbox] {
width: auto;
}
details input[type=checkbox]:after {
border-radius: 4px;
}
.reportBtn {
font-weight: bold; padding: 3px 10px; background: #218e5d; border-radius: 50px; margin-right: 5px; cursor: pointer; color: #fff; border: 0;
}
</style>`;
function init() {
if (conVar("customBackground")) {
document.querySelector("body").style = `background-size: cover;
background-position: center;
background-attachment: fixed;
background-repeat: no-repeat;
background-image: linear-gradient(rgba(54, 54, 54, 0.85), rgba(54, 54, 54, 0.85)), url('${conVar(
"customBackground"
)}')`;
}
}
function saveBackground() {
let bgUrl = document.querySelector("#custombg").value;
xfAlert("Сохранено");
if (bgUrl.length < 1) return set_conVar("customBackground", false);
return set_conVar("customBackground", bgUrl);
}
const render = `
let handling = 0;
let step = 0;
window.addEventListener('message', function(event) {
if (event.data == '20100') {
handling = 0;
step = 0
iframe = document.querySelectorAll('#areaext');
iframe.forEach(function (e){
e.contentWindow.postMessage("10100", "*");
e.contentWindow.postMessage(betterVersion, "*");
e.contentWindow.postMessage(XenForo.visitor.user_id, "*");
})
}
if (event.data == '20200') {
handling = 20200
step = 0
}
if (event.data == '20300') {
handling = 20300
step = 0
set_conVar('userScripts', 0)
xfAlert('Успешно!')
}
else if (handling == 20200 && event.data != '20200') {
if (step == 0) {
window.betterAPI.loadScript(event.data, 'Ext'+ event.data, function() {
window.betterAPI.runScript(event.data, 0);
});
handling = 20200;
step = 1;
xfAlert('Успешно!')
}
if (step == 1) {
xfAlert('Попытка установить скрипт (LiveID#' +event.data + ')')
handling = 0;
step = 0;
}
}
});
function steam(arg) {
e.contentWindow.postMessage(arg, "*");
}
`;
const renderFrame = `<iframe src='https://hasan.su/bettermarket/1_2.php' width='100%' frameborder='0' height='800px' id='areaext'> </iframe> `;
function exuiOnPage() {
let htmlall = `<br>
<details>
<summary>Основные<br><span>Реклама, секретный вопрос</span></summary>
<div><br>
<div class='btns-l' id='rai'> ИИ Ассистент (Розыгрыши)</div>
<div class='btns-l' id='adblock'> Блокировщик рекламы</div>
<div class="btns-l" id="trustFactor">Фактор доверия</div>
<div class='btns-l' id='hideLikes'> Скрывать счетчик лайков в профиле</div> ${globalConfig["unlock_dev"] ? "<div class='btns-l' id='visitorDetector'> Обнаруживать [visitor] в сообщениях</div>" : ""}
<div class='btns-l' id='reportBtns'> Показывать кнопки для быстрой подачи жалоб</div>
<div class='btns-l' id='nickCopy'> Показывать кнопки для копирования ника</div>
<hr style="border: solid 1px #363636;">
<p class="main-text" onclick="window.location.href = 'https://telegra.ph/Security-note-for-BetterLZT-feature-06-27'">Автоматический ввод секретной фразы: (Важная заметка! кликабельно)<br></p>
<br>
<input id="secretph" class="input" placeholder="Введите вашу секретную фразу"> <a class="button leftButton primary" onclick="saveSecret()" id="secretphBtn">Сохранить</a>
</div>
</details>
<br>
<details>
<summary>Внешний вид<br><span>Оформи форум под себя</span></summary>
<div><br>
<p>Не работает в LTS</p>
<p class="main-text">Кастомный фон для всего форума (ссылка на картинку): <br></p>
<br>
<input id="custombg" class="input" placeholder="URL"> <a class="button leftButton primary" onclick="saveBackground()">Сохранить</a>
</div>
</details>
<br>
<details>
<summary>Кнопки быстрой подачи жалоб<br><span>Редактирование текста на кнопках</span></summary>
<div><br>
<p class="main-text">Нажмите на кнопку и введите текст. Учтите, что этот текст будет отправлен в жалобе. Пустой текст скрывает кнопку<br></p>
<br>
<input type="text" id="reportBtn-1" class="reportBtn" value="${userConfig["reportBtn-1"]}"> <input type="text" id="reportBtn-2" class="reportBtn" value="${userConfig["reportBtn-2"]}"> <input type="text" id="reportBtn-3" class="reportBtn" value="${userConfig["reportBtn-3"]}">
</div>
</details>
<br>
<details>
<summary>Маркетплейс расширений<br><span>Запускайте лушие скрипты из раздела "Дополнения" без установки в Tampermonkey<br>Все расширения проверены и безопасны</span></summary>
<div><br>
${globalConfig["unlock_dev"] ? "DEV: <input type='text' id='loadcustom' placeholder='Введите ссылку'><a class='btns-l' id='saveCustom'>Сохранить</a>" : ""}
${renderFrame}
</div>
</details>
`;
let script = document.createElement("script");
script.appendChild(document.createTextNode(render));
document.head.appendChild(script);
let html_prem = `
<div style="background: rgb(54, 54, 54);
margin: 5px 10px;
padding: 0 15px 15px 15px; border-radius: 0px; ${localCache.serverNotice ? "" : "display: none"}"><br>
${localCache.serverNotice ?? ""}
</div><br>
${globalConfig["unlock_dev"] ? '<div style="background: rgb(54, 54, 54);margin: 5px 15px;padding: 0 15px 15px 15px; border-radius: 10px;"><br>BetterLZT Dev mode</div>' : ""}<br>
${htmlall}<br>
<div style="display: flex;
width: 598px;
justify-content: space-between;
align-items: flex-start;">
Version ${betterVersion}<br>
Marketplace 1.2
</div>
<a class="button leftButton primary" target="_blank" href="https://t.me/lolz_news">LolzNews - Подпишитесь)</a>
<br><br>
<a class="button leftButton primary" target="_blank" href="https://lolz.live/payment/balance-transfer?user_id=2626330&hold=0&comment=%D0%94%D0%BE%D0%B1%D1%80%D0%BE%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5%20%D0%BF%D0%BE%D0%B6%D0%B5%D1%80%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5">Разработчику на доширак</a>
<a class="button leftButton" href="https://t.me/trixydev">ТГк Разработчика</a> <a class="button leftButton" onclick="resetConfig()">Сброс настроек</a>
${css}
`;
document.querySelector(".titleBar").innerHTML = "<h1>LN BetterLZT - Настройки</h1>";
document.querySelector(".errorOverlay").innerHTML = html_prem;
return true;
}
const adlist_w = [
"zelenka.guru/threads/3649746",
"http://proxysoxy.com",
"zelenka.guru/threads/2770783",
"https://t.me/talkthenews",
"https://zelenka.guru/threads/5862277/",
"zelenka.guru/threads/5802663/",
"@UniServBot",
"zelenka.guru/threads/5886612",
"https://zelenka.guru/threads/5830418/",
"zelenka.guru/angeldrainer/",
"zelenka.guru/threads/5883557",
"zelenka.guru/threads/5720998",
"https://zelenka.guru/threads/5488501",
"https://zelenka.guru/threads/4871985/",
"zelenka.guru/threads/3649746",
"zelenka.guru/threads/5402454",
"zelenka.guru/threads/2630352",
"https://t.me/poseidon_project",
"https://zelenka.guru/threads/4826265/",
"zelenka.guru/threads/4939541",
"zelenka.guru/threads/4073607",
"zelenka.guru/threads/5071761/",
"https://zelenka.guru/threads/3695705/",
"zelenka.guru/members/4177803",
"@verif_ads",
"verifteam",
"SmmPanelUS.com",
"lteboost.ru"
];
const adlist_white = ["t.me/lolz_news", "https://t.me/lolz_news"];
await( _GM_getValue("adBlock"));
function run$4() {
if (!conVar("adblock")) return false;
if (document.querySelector(".avatarScaler")) return profile$1();
}
function containsLink(str) {
const urlRegex = /https?:\/\/[^\s|<>"]+(?!(?:(?:[^<]*<){2}))/g;
const noHtmlStr = str.replace(/<[^>]*>/g, "");
const matches = noHtmlStr.match(urlRegex);
return !!matches;
}
function profile$1() {
let userStatus = document.querySelector(".userBlurb.current_text");
try {
if (containsLink(userStatus.innerHTML) && !adlist_white.some((o) => userStatus.innerHTML.toLowerCase().includes(o))) {
changeUserStatus("Реклама скрыта");
changeUserAvatar();
return true;
}
if (adlist_w.some((o) => userStatus.innerHTML.toLowerCase().includes(o)) && !adlist_white.some((o) => userStatus.innerHTML.toLowerCase().includes(o))) {
changeUserStatus("Реклама скрыта");
changeUserAvatar();
return true;
}
} catch (e) {
if (globalConfig["unlock_dev"])
console.log("метод обнаружения рекламы не сработал: " + e);
return false;
}
return userStatus.innerHTML === "Реклама скрыта";
}
const ui_primary = "#228e5e";
const ui_error = "#8e2222";
async function show() {
let theme2 = await conVar("dashboard", true);
switch (await theme2) {
case "exui":
exuiOnPage();
break;
default:
exuiOnPage();
break;
}
buttonsRender();
const buttons = document.querySelectorAll(".btns-l");
const report_buttons = document.querySelectorAll(".reportBtn");
buttons.forEach((button) => {
button.addEventListener("click", handleClick);
});
report_buttons.forEach((button) => {
button.addEventListener("change", handleClick);
});
}
function handleClick(e) {
e = e.target;
let state;
switch (e.id) {
case "adblock":
state = conVar("adblock");
set_conVar("adblock", !state);
e.style.background = state ? "" : ui_primary;
if (!state) run$4();
break;
case "hideLikes":
state = conVar("hideLikes");
set_conVar("hideLikes", !state);
e.style.background = state ? "" : ui_primary;
break;
case "trustFactor":
state = conVar("trustFactor");
set_conVar("trustFactor", !state);
e.style.background = state ? "" : ui_primary;
break;
case "visitorDetector":
state = conVar("visitorDetector");
set_conVar("visitorDetector", !state);
e.style.background = state ? "" : ui_primary;
break;
case "reportBtns":
state = conVar("reportBtns");
set_conVar("reportBtns", !state);
e.style.background = state ? "" : ui_primary;
break;
case "saveCustom":
window.betterAPI.loadScript(document.querySelector("#loadcustom").value, "Test", function() {
window.betterAPI.runScript("Test", 0);
});
break;
// Report buttons. TODO: refactor
case "reportBtn-1":
set_conVar("reportBtn-1", e.value);
xfAlert("Сохранено");
break;
case "reportBtn-2":
set_conVar("reportBtn-2", e.value);
xfAlert("Сохранено");
break;
case "reportBtn-3":
set_conVar("reportBtn-3", e.value);
xfAlert("Сохранено");
break;
case "nickCopy":
state = conVar("nickCopy");
set_conVar("nickCopy", !state);
e.style.background = state ? "" : ui_primary;
break;
case "hide_ftapanel":
state = conVar("hide_ftapanel");
set_conVar("hide_ftapanel", !state);
e.style.background = state ? "" : ui_primary;
break;
case "rai":
state = conVar("rai");
set_conVar("rai", !state);
e.style.background = state ? "" : ui_primary;
break;
default:
e.style.background = ui_error;
xfAlert(
"Данная функция временно недоступна. Обновите страницу"
);
break;
}
}
function settingsButtons() {
let accountMenu = document.querySelector(
"#AccountMenu > ul > li:nth-child(12) > a"
);
let settingsMenuItem = document.createElement("li");
settingsMenuItem.innerHTML = '<a href="betterlzt_settings">BetterLZT</a>';
accountMenu.parentNode.insertBefore(
settingsMenuItem,
accountMenu.nextSibling
);
}
function buttonsRender() {
let buttons = document.querySelectorAll(".btns-l");
buttons.forEach((e) => {
if (conVar(e.id)) e.style.background = ui_primary;
});
}
function saveSecret() {
let phrase = document.querySelector("#secretph").value;
if (!phrase || conVar("secureTest", false) !== true) {
set_conVar("secretPhrase", false);
set_conVar("safeMode", true, true);
return alert("Обнаружено нарушение безопасности. Секретная фраза удалена из кеша BetterLZT\nФункция автозаполнения секретной фразы отключена");
}
if (conVar("safeMode", true) || conVar("secureTest", false) !== true) {
return alert("Включен безопасный режим\nФункция автозаполнения секретной фразы недоступна\nПереустановите расширение");
}
document.querySelector("#secretphBtn").innerHTML = "Сохранено!";
return set_conVar("secretPhrase", phrase);
}
function pasteSecret() {
let secretArea = document.querySelector("input[name=secret_answer]");
if (secretArea && conVar("secretPhrase")) {
secretArea.value = conVar("secretPhrase");
return true;
}
return false;
}
function calculate(user) {
try {
if (localCache.TrustFactorService.minExtVersion > betterVersion || !localCache.TrustFactorService.status) {
xfAlert("В работе службы TrustFactor возникла ошибка: Службы LIVE недоступны");
return "unavailable";
}
user.registrationDate = parseDate(user.registrationDate);
const weights = {
test: localCache.TrustFactorService.Weight,
likes: localCache.TrustFactorService.Weights.likes ?? 0.25,
// Вес симпатий: 25%
registrationDays: localCache.TrustFactorService.Weights.registrationDays ?? 0.2,
// Вес времени с момента регистрации: 20%
deposit: localCache.TrustFactorService.Weights.deposit ?? 0.35,
// Вес страхового депозита: 35%
trophies: localCache.TrustFactorService.Weights.trophies ?? 0.05,
// Вес трофеев: 5%
messages: localCache.TrustFactorService.Weights.Messages ?? 0.05,
// Вес количества сообщений: 5%
giveaways: localCache.TrustFactorService.Weights.giveaways ?? 0.1
// Вес числа розыгрышей: 10%
};
const { likes, registrationDate, deposit, trophies, messages, giveaways } = user;
const maxLikes = localCache.TrustFactorService.Values.likes ?? 4e3;
const maxDaysRegistered = localCache.TrustFactorService.Values.registrationDays ?? 365 * 2;
const minDeposit = localCache.TrustFactorService.Values.minDeposit ?? 1e4;
const maxDeposit = localCache.TrustFactorService.Values.maxDeposit ?? 1e5;
const maxTrophies = localCache.TrustFactorService.Values.Trophies ?? 15;
const maxMessages = localCache.TrustFactorService.Values.Messages ?? 1e3;
const maxGiveaways = localCache.TrustFactorService.Values.Giveaways ?? 20;
const today = /* @__PURE__ */ new Date();
const registrationDays = Math.floor((today - new Date(registrationDate)) / (1e3 * 60 * 60 * 24));
const normalizedLikes = Math.min(likes / maxLikes, 1);
const normalizedRegistration = Math.min(registrationDays / maxDaysRegistered, 1);
const normalizedDeposit = Math.min((deposit - minDeposit) / (maxDeposit - minDeposit), 1);
const normalizedTrophies = Math.min(trophies / maxTrophies, 1);
const normalizedMessages = Math.min(messages / maxMessages, 1);
const normalizedGiveaways = Math.min(giveaways / maxGiveaways, 1);
const trustLevel = (normalizedLikes * weights.likes + normalizedRegistration * weights.registrationDays + normalizedDeposit * weights.deposit + normalizedTrophies * weights.trophies + normalizedMessages * weights.messages + normalizedGiveaways * weights.giveaways) * 100;
return Math.min(Math.max(trustLevel, 0), 100);
} catch (e) {
xfAlert("В работе службы TrustFactor возникла проблема. Работа фактора доверия остановлена");
if (conVar("unlock_dev"), 1) console.error("[BetterLZT] TrustService.js failed: " + e);
}
}
function parseDate(dateString) {
const monthMap = {
"янв": "01",
"фев": "02",
"мар": "03",
"апр": "04",
"май": "05",
"июн": "06",
"июл": "07",
"авг": "08",
"сен": "09",
"окт": "10",
"ноя": "11",
"дек": "12",
"Jan": "01",
"Feb": "02",
"Mar": "03",
"Apr": "04",
"May": "05",
"Jun": "06",
"Jul": "07",
"Aug": "08",
"Sep": "09",
"Oct": "10",
"Nov": "11",
"Dec": "12"
};
const regexRu = /(\d{1,2})\s([а-яёА-ЯЁ]+)\s(\d{4})/;
const regexEn = /([A-Za-z]+)\s(\d{1,2}),\s(\d{4})/;
let day, month, year;
if (regexRu.test(dateString)) {
const [, dayStr, monthStr, yearStr] = dateString.match(regexRu);
day = dayStr.padStart(2, "0");
month = monthMap[monthStr.toLowerCase().slice(0, 3)];
year = yearStr;
} else if (regexEn.test(dateString)) {
const [, monthStr, dayStr, yearStr] = dateString.match(regexEn);
day = dayStr.padStart(2, "0");
month = monthMap[monthStr.slice(0, 3)];
year = yearStr;
} else {
throw new Error("Unknown date format");
}
return `${year}-${month}-${day}`;
}
function profile() {
try {
let user = {
likes: parseInt(document.querySelector(".page_counter .count").innerHTML.replace(" ", "")),
registrationDate: document.querySelector(".labeled .DateTime").innerHTML,
deposit: parseInt(document.querySelector("h3.amount").innerHTML.replaceAll(" ", "").replace("₽", "")),
trophies: parseInt(document.querySelectorAll(".page_counter .count")[3].innerHTML.replace(" ", "")),
messages: parseInt(document.querySelectorAll(".page_counter .count")[2].innerHTML.replace(" ", "")),
giveaways: parseInt(document.querySelectorAll(".page_counter .count")[4].innerHTML.replace(" ", ""))
};
let result = calculate(user).toFixed(0);
let blzt_trust = document.querySelector(".insuranceDeposit");
let blzt_trust_color = result > 35 ? "green" : "red";
let blzt_trust_render = `
<br>
<div class="section insuranceDeposit">
<div class="secondaryContent">
<h3>
<a href="https://lolz.live/threads/5821466/" class="username" style="max-width: 200px; word-wrap: break-word;">
Уровень доверия ß
</a>
</h3>
<h3 style="margin-bottom: 0px; font-size: 18px !important; color: ${blzt_trust_color}" class="amount" title="${result}">
${result} / 100
</h3>
</div>
</div>`;
let blzt_trust_block = document.createElement("div");
blzt_trust_block.innerHTML = blzt_trust_render;
blzt_trust.append(blzt_trust_block);
} catch (e) {
xfAlert("В работе фактора доверия произошла ошибка.");
if (conVar("unlock_dev", 1)) console.error("[BetterLZT] Trust.js: " + e);
}
}
function run$3() {
try {
userID();
if (conVar("nickCopy")) nickCopy$1();
if (conVar("hideLikes")) hideLikes();
if (conVar("trustFactor")) profile();
if (isOwn()) {
let likes = document.querySelector(".page_counter .count").innerHTML;
set_conVar("likes", likes);
}
} catch (e) {
xfAlert(
"В работе расширения произошла ошибка (Модуль inProfile остановлен)"
);
if (conVar("unlock_dev", 1)) {
console.error(`[BetterLZT] inProfile.js failed: ${e}`);
}
}
return true;
}
function isOwn() {
return document.querySelector(".button.block").href.includes("account/personal-details");
}
function userID() {
const id = /market\/user\/(\d+)\/items/.exec(document.querySelector(
'.userContentLinks .button[href^="market/"]'
).href)[1];
let idhtml = document.createElement("div");
idhtml.innerHTML = `
<div class="label fl_l">ID пользователя: </div><div class="labeled">${id}<span data-phr="ID скопирован в буфер обмена" onclick="Clipboard.copy(${id}, this)" class="copyButton Tooltip" title="" data-cachedtitle="Скопировать ID" tabindex="0"><i class="far fa-clone" aria-hidden="true"></i>
</span></div>`;
document.querySelector(".pairsJustified").prepend(idhtml);
return true;
}
function nickCopy$1() {
const user_nick = document.querySelector("h1.username span").innerHTML.replace(/ <i.*?>.*?<\/i>/ig, "");
let nickhtml = document.createElement("span");
nickhtml.id = "nick_copy";
nickhtml.innerHTML = `<span data-phr="Ник скопирован в буфер обмена" onclick="Clipboard.copy('${user_nick}', this)" class="copyButton Tooltip" title="" data-cachedtitle="Скопировать ник" tabindex="0"><i class="far fa-clone" aria-hidden="true"></i></span>`;
document.querySelector("h1.username span").append(nickhtml);
return true;
}
function hideLikes() {
return document.querySelectorAll(".page_counter")[1].remove();
}
function run$2() {
window.betterAPI = {
scripts: {},
settingsFields: [],
ApiVer: 1.2,
// Динамичный запуск
loadScript: function(url, className, callback) {
let script = document.createElement("script");
const expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi;
const regex = new RegExp(expression);
url = url.toString();
if (!url.match(regex)) {
url = `https://hasan.ovh/bettermarket/storage/${url}.js`;
}
script.src = url;
script.onload = function() {
console.log(className + " Загружен.");
unsafeWindow.betterAPI.saveToCache(className, url);
if (typeof callback === "function") {
callback();
}
unsafeWindow.betterAPI.runScript(className, 0);
};
script.onerror = function() {
console.error("Error loading script: " + url);
};
document.head.appendChild(script);
},
// инстанс и запуск
runScript: function(className, ...args) {
if (typeof unsafeWindow[className] === "function") {
this.scripts[className] = new unsafeWindow[className](...args);
if (typeof this.scripts[className].run === "function") {
this.scripts[className].run();
} else {
console.warn(className + " Не содержит метода загрузки");
xfAlert(`Внимание! Скрипт ${className} не отвечает требованиям (1). Рекомендуется удаление`);
}
} else {
xfAlert("Скрипт успешно установлен! Перезапустите страницу");
}
if (!unsafeWindow[className]) {
return xfAlert("Перезапустите страницу");
}
return true;
},
// скриптинстанс
getScriptInstance: function(className) {
return this.scripts[className] || null;
},
// сохранение в кеш
saveToCache: function(className, url) {
let cache = this.getCache();
cache[className] = url;
set_conVar("userScripts", JSON.stringify(cache));
},
// получение кеша
getCache: function() {
let cache = conVar("userScripts");
return cache ? JSON.parse(cache) : {};
},
// запуск всех скриптов
loadCachedScripts: async function() {
let cache = this.getCache();
for (let className in cache) {
this.loadScript(cache[className], className);
}
},
getData: async function(variable) {
return conVar(variable);
},
inProfile: function() {
if (document.querySelector(".avatarScaler")) return true;
},
getLiveID: function() {
return 0;
},
isAd: function() {
return run$4();
},
changeUserStatus: function(text) {
return changeUserStatus(text);
},
changeUserAvatar: function(mode) {
return changeUserAvatar(mode);
},
// Регистрация полей настройки для скриптов
addSettingsField: function(className, label, id, type2, defaultValue, onChange) {
if (!this.settingsFields[className]) {
this.settingsFields[className] = [];
}
this.settingsFields[className].push({
label,
id,
type: type2,
defaultValue,
onChange
});
},
showSettingsMenu: async function(activeScript) {
if (!activeScript || !this.settingsFields[activeScript]) {
xfAlert("Настройки для этого скрипта не найдены.");
return;
}
let settingsHTML = "";
let settingsValues = {};
for (let field of this.settingsFields[activeScript]) {
settingsValues[field.id] = await GM.getValue(field.id, field.defaultValue);
settingsHTML += `<label for="${field.id}">${field.label}:</label><br>`;
if (field.type === "text") {
settingsHTML += `<input type="text" id="${field.id}" value="${settingsValues[field.id]}"><br><br>`;
} else if (field.type === "checkbox") {
const checked = settingsValues[field.id] ? "checked" : "";
settingsHTML += `<input type="checkbox" id="${field.id}" ${checked}><br><br>`;
}
}
settingsHTML += `<button id="saveSettings">Сохранить</button>`;
XenForo.alert(settingsHTML);
document.getElementById("saveSettings").onclick = () => {
for (let field of this.settingsFields[activeScript]) {
const newValue = field.type === "checkbox" ? document.getElementById(field.id).checked : document.getElementById(field.id).value;
GM.setValue(field.id, newValue);
if (typeof field.onChange === "function") {
field.onChange(newValue);
}
}
xfAlert("Настройки сохранены!");
};
},
showSettingsMenuAll: async function() {
let settingsHTML = "";
let settingsValues = {};
for (let field of this.settingsFields) {
settingsValues[field.id] = await GM.getValue(field.id, field.defaultValue);
settingsHTML += `<label for="${field.id}">${field.label}:</label><br>`;
if (field.type === "text") {
settingsHTML += `<input type="text" id="${field.id}" value="${settingsValues[field.id]}"><br><br>`;
} else if (field.type === "checkbox") {
const checked = settingsValues[field.id] ? "checked" : "";
settingsHTML += `<input type="checkbox" id="${field.id}" ${checked}><br><br>`;
}
}
settingsHTML += `<button id="saveSettings">Сохранить</button>`;
XenForo.alert(settingsHTML);
document.getElementById("saveSettings").onclick = () => {
for (let field of this.settingsFields) {
const newValue = field.type === "checkbox" ? document.getElementById(field.id).checked : document.getElementById(field.id).value;
GM.setValue(field.id, newValue);
if (typeof field.onChange === "function") {
field.onChange(newValue);
}
}
xfAlert("Настройки сохранены!");
};
},
updateInterface: function(buttonText, statusText) {
this.changeUserStatus(statusText);
}
};
}
function request(url) {
return new Promise((resolve, reject) => _GM_xmlhttpRequest({
method: "GET",
url,
mode: "no-cors",
onload: (response) => resolve(response.responseText),
onerror: (error) => resolve(error)
}));
}
function isAvailable() {
if (!conVar("rai")) {
return false;
}
if (conVar("likes") < 500) {
return false;
} else {
return true;
}
}
async function contestRender() {
const renderParent = document.querySelector(".forumModerators");
const renderTextArea = document.createElement("span");
const renderTextArea2 = document.createElement("span");
const counter = document.querySelector(".counterText").innerHTML;
const max = counter.substring("/")[1];
const current = counter.substring("/")[0];
renderTextArea.className = "rai";
if (document.querySelector(".rai")) {
return;
}
if (!isAvailable()) {
renderTextArea.style.color = `red`;
renderTextArea.innerHTML = `К сожалению, на данный момент функции BetterLZT RAI недоступны для вашего профиля<br>`;
return renderParent.prepend(renderTextArea);
} else {
const resultRub = await request(`${serverLive}ai/acRub.php?uid=${conVar("UID")}&likes=${conVar("likes")}&max=${max}¤t=${current}`).catch(
(err) => {
renderTextArea.style.color = `red`;
renderTextArea.innerHTML = `К сожалению, на данный момент функции BetterLZT RAI недоступны<br>`;
return renderParent.prepend(renderTextArea);
}
);
const result = await request(`${serverLive}ai/ac.php?uid=${conVar("UID")}&likes=${conVar("likes")}&max=${max}¤t=${current}`).catch(
(err) => {
renderTextArea.style.color = `red`;
renderTextArea.innerHTML = `К сожалению, на данный момент функции BetterLZT RAI недоступны<br>`;
return renderParent.prepend(renderTextArea);
}
);
const resultLikes = await request(`${serverLive}ai/acLikes.php?uid=${conVar("UID")}&likes=${conVar("likes")}&max=${max}¤t=${current}`).catch(
(err) => {
renderTextArea.style.color = `red`;
renderTextArea.innerHTML = `К сожалению, на данный момент функции BetterLZT RAI недоступны<br>`;
return renderParent.prepend(renderTextArea);
}
);
if (parseInt(await resultRub) > 0 && parseInt(await result) > 0) {
renderTextArea.style.color = `green`;
renderTextArea.innerHTML = `BetterLZT: Предполагаемый недельный выигрыш ≈ ${resultRub} ₽ в примерно ${result} розыгрышах<br>`;
renderParent.prepend(renderTextArea);
} else {
renderTextArea.style.color = `red`;
renderTextArea.innerHTML = `К сожалению, на данный момент функции BetterLZT RAI недоступны<br>`;
return renderParent.prepend(renderTextArea);
}
if (parseInt(await resultLikes) > 0) {
if (parseInt(await resultLikes) > 65) {
renderTextArea2.style.color = `green`;
renderTextArea2.innerHTML = `BetterLZT: Создав сейчас быстрый розыгрыш (на 30-45 минут) вы можете собрать ≈${resultLikes} симпатий<br>`;
} else {
renderTextArea2.style.color = `orange`;
renderTextArea2.innerHTML = `BetterLZT: Возможно, сейчас не время. Создав сейчас быстрый розыгрыш (на 30-45 минут) вы можете собрать ≈${resultLikes} симпатий<br>`;
}
return renderParent.prepend(renderTextArea2);
}
}
}
function run$1() {
try {
if (window.location.pathname.includes("forums/contests")) {
return contestRender();
}
if (!window.location.pathname.includes("threads")) {
return;
}
if (conVar("visitorDetector")) visitorDetector();
if (conVar("reportBtns")) reportBtns();
if (conVar("nickCopy")) nickCopy();
} catch (e) {
xfAlert(
"В работе расширения произошла ошибка (Модуль inThread остановлен)"
);
if (conVar("unlock_dev", 1)) {
console.error(`В модуле inThread произошел критический сбой: ${e}`);
}
}
return true;
}
function visitorDetector() {
let messgaes = document.querySelectorAll("li.message:not(.checked)");
messgaes.forEach(async (e) => {
setTimeout(async function() {
let id = e.id.replace("post-", "");
let responce = await XenForo.ajax("posts/" + id + "/get-copy-text");
if (responce.text.includes("[visitor]")) {
e.classList.add("checked");
e.querySelector(".privateControls").innerHTML += '<span class="muted item">Внимание: в данном сообщении обнаружен тег [visitor]</span>';
return;
}
}, 1500);
});
let comments = document.querySelectorAll("li.comment:not(.checked)");
comments.forEach(async (e) => {
let id = e.id.replace("post-comment-", "");
let responce;
setTimeout(async () => {
responce = await XenForo.ajax("posts/comments/" + id + "/get-copy-text");
}, 1900);
if (responce.text.includes("[visitor]")) {
e.classList.add("checked");
e.querySelector(".commentControls").innerHTML += '<span class="muted item">Внимание: в данном сообщении обнаружен тег [visitor]</span>';
return;
}
});
}
async function reportBtns() {
try {
let addButtonToPosts = function() {
try {
const blocks = document.querySelectorAll("#messageList > li");
for (let block of blocks) {
if (block.querySelector(".custom-button")) {
continue;
}
for (let key in buttons) {
let name = buttons[key].name;
let message = buttons[key].message;
let span = document.createElement("span");
span.innerText = name;
span.className = "custom-button";
span.setAttribute("style", "font-weight: bold; padding: 3px 10px; background: rgb(45, 45, 45); border-radius: 50px; margin-right: 5px; cursor: pointer;");
span.onclick = function() {
if (!confirm("отправить жалобу?")) return false;
let formData = new FormData();
formData.append("message", key);
formData.append("is_common_reason", 1);
formData.append("_xfToken", _xfToken);
formData.append("_xfNoRedirect", 1);
formData.append("_xfToken", _xfToken);
formData.append("redirect", window.location.href);
postData("posts/" + block.id.split("-")[1] + "/report", formData);
XenForo.alert("Жалоба отправлена", "", 5e3);
};
if (block.querySelector(".publicControls")) block.querySelector(".publicControls").prepend(span);
}
}
} catch (error) {
}
};
let btn1 = conVar("reportBtn-1");
let btn2 = conVar("reportBtn-2");
let btn3 = conVar("reportBtn-3");
const buttons = {
[btn1]: {
name: btn1
},
[btn2]: {
name: btn2
},
[btn3]: {
name: btn3
}
};
const _xfToken = document.querySelector('input[name="_xfToken"]').value;
async function postData(url = "", formData) {
return await fetch(url, { method: "POST", body: formData });
}
if (conVar("reportBtns")) {
addButtonToPosts();
const observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === "childList") {
addButtonToPosts();
}
});
});
observer.observe(document.getElementById("messageList"), { childList: true });
}
} catch (error) {
}
}
function nickCopy() {
const nicknames = document.querySelectorAll(".InlineModForm .username:not(.copy)");
nicknames.forEach((e) => {
e.classList.add("copy");
const user_nick = e.innerHTML.replace(/<[^>]*>?/gm, "");
let nickhtml = document.createElement("span");
nickhtml.id = "nick_copy";
nickhtml.innerHTML = `<span data-phr="Ник скопирован в буфер обмена" onclick="Clipboard.copy('${user_nick}', this)" class="copyButton Tooltip" title="" data-cachedtitle="Скопировать ник" tabindex="0"><i class="far fa-clone" aria-hidden="true"></i></span>`;
e.append(nickhtml);
});
}
function run() {
try {
if (localCache == null ? void 0 : localCache.meme) console.error("#Массовый_Привет_Для_бро_Uncpfiae_От_Openresty");
if (!(localCache == null ? void 0 : localCache.StopcollectStats)) {
fetch("https://hasan.ovh/better/v1/stats.php", {
method: "POST",
mode: "no-cors",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ url: window.location.pathname, id: conVar("UID") })
});
}
return true;
} catch (err) {
return false;
}
}
const version = "2.0.0 Lite (LTS)";
const type = "Lite (LTS)";
const server = "https://hasan.ovh/better";
const serverLive$1 = "https://hasan.ovh/better/live/v1/";
let userConfig$1 = await( _GM_getValue("userConfig"));
let localCache$1 = await( _GM_getValue("localCache"));
let globalConfig$1 = await( _GM_getValue("globalConfig"));
async function newConfig(type2) {
var _a;
userConfig$1 = {
theme: null,
secret: null,
password: null,
adblock: false,
uniq: false,
background: false,
"reportBtn-1": "Флуд",
"reportBtn-2": "Оформление",
"reportBtn-3": "Попрошайничество",
secureTest: true,
trustFactor: true,
liveID: 0,
UID: (_a = XenForo == null ? void 0 : XenForo.visitor) == null ? void 0 : _a.user_id,
likes: 0,
rai: true
};
await GM_setValue("userConfig", JSON.stringify(userConfig$1));
}
async function resetConfig(type2) {
var _a;
if (localCache$1 == null ? void 0 : localCache$1.noreset) return xfAlert("Упс! Сброс настроек на данный момент отключен");
userConfig$1 = {
theme: null,
secret: null,
password: null,
adblock: false,
uniq: false,
background: false,
"reportBtn-1": "Флуд",
"reportBtn-2": "Оформление",
"reportBtn-3": "Попрошайничество",
secureTest: true,
trustFactor: true,
liveID: 0,
UID: (_a = XenForo == null ? void 0 : XenForo.visitor) == null ? void 0 : _a.user_id,
likes: 0,
rai: true
};
await GM_setValue("userConfig", JSON.stringify(userConfig$1));
xfAlert("Настройки сброшены.");
setTimeout(window.location.reload, 1500);
}
if (!userConfig$1) {
newConfig();
} else {
userConfig$1 = JSON.parse(userConfig$1);
}
if (!localCache$1) cacheUpdate();
if (!globalConfig$1) {
globalConfig$1 = {
rofl_forum: 1,
unlock_dev: false,
ui: "exui",
activation: false,
activated: false,
token: ""
};
await( GM_setValue("globalConfig", JSON.stringify(globalConfig$1)));
} else {
globalConfig$1 = JSON.parse(globalConfig$1);
}
try {
if (userConfig$1 == null ? void 0 : userConfig$1.secureTest) {
console.log("[BetterLZT] UserConfig test ok");
}
} catch (e) {
xfAlert("Конфигурация расширения повреждена.");
}
async function documentLoaded() {
run$2();
if (userConfig$1.theme) {
const link = document.createElement("link");
link.href = "https://hasan.ovh/better/css/" + await theme + ".css";
link.type = "text/css";
link.rel = "stylesheet";
document.getElementsByTagName("head")[0].appendChild(link);
}
if (localCache$1.version > version) {
makeWatermark(
"Доступно новое обновление LN BetterLZT!",
"https://hasan.ovh/betterlzt/last.php"
);
}
}
function pageUpdate() {
run$4();
pasteSecret();
run$1();
if (document.URL.includes("betterlzt_settings")) {
show();
}
return true;
}
async function cacheUpdate() {
if (conVar("offline", true)) {
return makeWatermark("BetterLZT Offline");
}
try {
const uid = XenForo.visitor.user_id;
const answer = await request(`${server}/v1/cache.php?uid=${uid}&type=${type}`).catch(
(err) => {
}
);
console.log(answer);
if (answer === "eol") {
return makeWatermark(
"Эта версия BetterLZT больше не поддерживается (кликабельно)",
"https://hasan.ovh/betterlzt/last.php"
);
}
if (isJson(answer)) {
localCache$1 = JSON.parse(answer);
await GM_setValue("localCache", localCache$1);
return console.log("[BetterLZT] Данные в кеше обновлены");
} else {
console.error(
"[BetterLZT] Ошибка обновления данных кеша: сервер вернул недопустимый ответ"
);
}
} catch (error) {
console.error("[BetterLZT] Ошибка обновления данных кеша: " + error);
}
}
function renderFunctions() {
console.log("RenderFunctions");
_unsafeWindow.globalConfig = globalConfig$1;
_unsafeWindow.userConfig = userConfig$1;
_unsafeWindow.localCache = localCache$1;
_unsafeWindow.betterVersion = version;
_unsafeWindow.serverLive = serverLive$1;
_unsafeWindow.request = (e) => request(e);
_unsafeWindow.xfAlert = (e) => xfAlert(e);
_unsafeWindow.window.betterAPI = window.betterAPI;
_unsafeWindow.resetConfig = () => resetConfig();
_unsafeWindow.saveConfig = (e) => saveConfig(e);
let torender = [conVar, set_conVar, handleClick, saveSecret, saveBackground, xfAlert, makeWatermark, inProfile];
let funcs = torender.map((e) => e.toString());
let script = document.createElement("script");
script.appendChild(document.createTextNode(funcs.join("")));
document.head.appendChild(script);
window.betterAPI.loadCachedScripts();
}
if (document.readyState === "complete" || document.readyState === "interactive") {
console.log("Render");
documentLoaded();
renderFunctions();
cacheUpdate();
pageUpdate();
settingsButtons();
if (inProfile()) run$3();
} else {
window.addEventListener("DOMContentLoaded", () => {
console.log("Render");
documentLoaded();
renderFunctions();
cacheUpdate();
pageUpdate();
settingsButtons();
init();
run();
if (inProfile()) run$3();
});
}
window.onload = () => {
const xfAct = XenForo.activate;
const xfAjax = XenForo.ajax;
XenForo.activate = function() {
pageUpdate();
const ret = xfAct.apply(this, arguments);
return ret;
};
XenForo.ajax = function() {
const url = arguments[0];
if (url === "threads/low-priority") {
return;
}
return xfAjax.apply(this, arguments);
};
run();
};
})();