// ==UserScript==
// @name BetterLZT
// @namespace hasanbet
// @version v46
// @description Сделай свой жизнь на LolzTeam проще!
// @author https://zelenka.guru/lays (openresty)
// @match https://zelenka.guru/*
// @match https://lolz.live/*
// @match https://lzt.market/*
// @match https://zelenka.market/*
// @match https://lolz.market/*
// @grant GM_xmlhttpRequest
// @grant GM.setValue
// @grant GM.getValue
// @grant unsafeWindow
// @connect lzt.hasanbek.ru
// @connect localhost
// @run-at document-body
// @icon https://www.google.com/s2/favicons?sz=64&domain=zelenka.guru
// @license MIT
// @downloadURL none
// ==/UserScript==
// 5.0.1.1
const
version = "5.0 (beta 1)",
blzt_link_tos = "https://zelenka.guru/threads/5816508/",
blzt_link_trust = "https://zelenka.guru/threads/5821466/",
server = "http://lzt.hasanbek.ru:8880",
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"],
adlist_l = ["threads", "members", "lolz.live", "zelenka.guru", "t.me"],
adlist_white = ["zelenka.guru/threads/5545248/", "https://zelenka.guru/extasystudio/"];
let usercfg,
adblock,
nickname,
userid,
cache,
secure,
hidelike,
secretph,
marketblock,
theme,
avamarket,
avablock,
contestblock,
uniqstatus,
reportbtns;
(async function() {
usercfg = await GM.getValue("usercfg") ? GM.getValue("usercfg") : `{'cfg': {}}`
adblock = await GM.getValue("adblock") ? GM.getValue("adblock") : 'null';
avablock = await GM.getValue("avablock") ? GM.getValue("avablock") : 'null';
cache = await GM.getValue("cache") ? GM.getValue("cache") : 'null';
secure = await GM.getValue("secure") ? GM.getValue("secure") : 'not';
hidelike = await GM.getValue("hidelike") ? GM.getValue("hidelike") : 'null';
marketblock = await GM.getValue("marketblock") ? GM.getValue("marketblock") : 'null';
secretph = await GM.getValue("secretph") ? GM.getValue("secretph") : 'not';
theme = await GM.getValue("theme") ? GM.getValue("theme") : 'null';
avamarket = await GM.getValue("avamarket") ? GM.getValue("avamarket") : 'null';
uniqstatus = await GM.getValue("uniqstatus") ? GM.getValue("uniqstatus") : 'null';
contestblock= await GM.getValue("contestblock") ? GM.getValue("contestblock") : 'null';
reportbtns = await GM.getValue("reportbtns") ? GM.getValue("reportbtns") : 'null';
window.addEventListener("DOMContentLoaded",async (event) => {
profileRender();
usernames();
themeRender();
renderFunctions();
userid = document.querySelector("input[name=_xfToken").value.split(",")[0];
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
cacheSync();
marketRender();
threadRender();
checkupdate();
})
setInterval(async () => {
adBlockDaemon();
daemon();
}, 0);
setInterval(usernames, 500);
})();
async function threadRender() {
if (!window.location.pathname.includes('threads')) {return;}
// Быстрый репорт, спасибо Jack'у
const buttons = {
"Флуд / Оффтоп / Спам / Бесполезная тема": {
name: 'Флуд',
},
"Создание темы не в соответствующем разделе": {
name: 'Неверный раздел',
},
"Неправильное оформление темы": {
name: 'Неверное оформление',
},
}
const _xfToken = document.querySelector('input[name="_xfToken"]').value;
async function postData(url = '', formData) {
return await fetch(url, { method: 'POST', body: formData });
}
function addButtonToPosts() {
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: #218e5d; 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('Жалоба отправлена', '', 5000);
}
if(block.querySelector('.publicControls')) block.querySelector('.publicControls').prepend(span);
}
}
}
if (await reportbtns == 'on') {
addButtonToPosts();
const observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList') {
addButtonToPosts();
}
});
});
observer.observe(document.getElementById('messageList'), { childList: true });
}
}
async function daemon() {
let nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
if (document.querySelector("input[name=secret_answer]:not(.completed)") && await secretph != 'null') {
document.querySelector("input[name=secret_answer]:not(.completed)").value = await secretph;
document.querySelector("input[name=secret_answer]:not(.completed)").classList.add("completed")
}
// Сканирование bb-кодов в треде (они должны быть самыми первыми)
if (document.location.pathname.includes('threads') && document.querySelector("blockquote")) {
if (document.querySelector("blockquote").innerHTML.trim().includes("betterfast")) return;
}
return;
}
async function themeRender() {
let usernickt = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
let data = await JSON.parse(await cache);
data = data.users[usernickt];
if (data) {
if (data.profilebg != 'null') {
if (!document.querySelector(".avatarScaler")) {
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('${data.profilebg}')`
}
}
}
// акцент профиля
// .messageSimple .secondaryContent .darkBackground .tabs .simpleRedactor .pageNavLinkGroup
if (data && data.maincolor) {
if (!document.querySelector(".avatarScaler")) {
styles = `#header, .messageSimple, .discussionList, .sidebar .sidebarWrapper, .secondaryContent, .darkBackground, .tabs, .simpleRedactor, .pageNavLinkGroup {background: ${data.maincolor};} .page_top {border-bottom: 0;} .counts_module {border-top: 0;}`
let styleSheet = document.createElement("style")
styleSheet.innerText = styles;
document.head.appendChild(styleSheet);
}
}
if(await theme != 'null') {
var link = document.createElement( "link" );
link.href = "https://lzt.hasanbek.ru/better/css/" + await theme + ".css";
link.type = "text/css";
link.rel = "stylesheet";
document.getElementsByTagName( "head" )[0].appendChild( link );
}
}
async function profileRender() {
if (!document.querySelector(".avatarScaler")) return false;
// ид юзера
const id = /market\/user\/(\d+)\/items/.exec(document.querySelector('.userContentLinks .button[href^="market/"]').href)[1];
idhtml = document.createElement("div");
idhtml.innerHTML = `
`;
document.querySelector(".profile_info_row").prepend(idhtml)
// фон профиля
let usernickt = document.querySelector("h1.username span").innerHTML.replace(/ .*?<\/i>/ig,'');
let data = await JSON.parse(await cache);
data = data.users[usernickt];
if (data && data.profilebg) {
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('${data.profilebg}')`;
}
// акцент профиля
// .messageSimple .secondaryContent .darkBackground .tabs .simpleRedactor .pageNavLinkGroup
if (data && data.maincolor) {
styles = `#header, .messageSimple, .discussionList, .sidebar .sidebarWrapper, .secondaryContent, .darkBackground, .tabs, .simpleRedactor, .pageNavLinkGroup {background: ${data.maincolor};} .page_top {border-bottom: 0;} .counts_module {border-top: 0;}`
let styleSheet = document.createElement("style")
styleSheet.innerText = styles;
document.head.appendChild(styleSheet);
}
// Скрытие лайков
if (await hidelike=='on') document.querySelectorAll(".page_counter")[1].remove();
// TrustFactor
trustFactor();
}
async function trustFactor() {
let usertrust = 0;
let user_symps = parseInt(document.querySelector(".page_counter .count").innerHTML.replace(' ', '')),
user_nick = document.querySelector("h1.username span").innerHTML.replace(/ .*?<\/i>/ig,''),
user_role = document.querySelector("h1.username span").classList,
user_insurance = parseInt(document.querySelector('h3.amount').innerHTML.replaceAll(' ','').replace('₽',''));
const depositLevels = [
{ level: 10000, trustVal: 10 },
{ level: 20000, trustVal: 5 },
{ level: 50000, trustVal: 5 },
{ level: 100000, trustVal: 10 },
{ level: 200000, trustVal: 5 },
{ level: 300000, trustVal: 5 },
{ level: 500000, trustVal: 15 },
{ level: 700000, trustVal: 20 }
];
const sympsLevels = [
{ level: 500, trustVal: 10 },
{ level: 1000, trustVal: 15 },
{ level: 1700, trustVal: 10 },
{ level: 3500, trustVal: 5 },
{ level: 5000, trustVal: 10 },
{ level: 7000, trustVal: 15 },
{ level: 10000, trustVal: 10 },
{ level: 20000, trustVal: 10 },
{ level: 30000, trustVal: 15 },
{ level: 40000, trustVal: 5 },
{ level: 50000, trustVal: 5 }
];
const roleLevels = [
{ level: 3, trustVal: 85 },
{ level: 4, trustVal: 25 },
{ level: 30, trustVal: 35 },
{ level: 365, trustVal: 15 },
{ level: 353, trustVal: 40 },
{ level: 12, trustVal: 35 },
{ level: 349, trustVal: 20 },
{ level: 350, trustVal: 40 },
{ level: 354, trustVal: 35 },
{ level: 7, trustVal: 30 },
{ level: 26, trustVal: 1 }
];
for (const level of depositLevels) {
if (user_insurance > level.level) {
usertrust += level.trustVal;
}else break;
}
for (const level of sympsLevels) {
if (user_symps > level.level) {
usertrust += level.trustVal;
}else break;
}
for (const level of roleLevels) {
if (user_role.contains("banned")) {usertrust = 0; break;}
if (user_role.contains("style"+level.level)) {
usertrust += level.trustVal;
}else break;
}
if(usertrust > 100) usertrust = 100;
// переписать
if (usertrust > 15 && usertrust < 35)
{
blzt_trust_text = 'Плохой (1/4)';
blzt_trust_color = 'redc';
}
else if (usertrust >= 35 && usertrust < 65)
{
blzt_trust_text = 'Нормальный (2/4)';
blzt_trust_color = 'mainc';
}
else if (usertrust >= 65 && usertrust < 84)
{
blzt_trust_text = 'Отличный (3/4)';
blzt_trust_color = 'mainc';
}
else if (usertrust >= 84)
{
blzt_trust_text = 'Наивысший(4/4)';
blzt_trust_color = 'mainc';
}
else {
blzt_trust_text = 'Ужасный (0/4)';
blzt_trust_color = 'redc';
}
let blzt_trust = document.querySelector(".insuranceDeposit");
let blzt_trust_render = `
`;
let blzt_trust_block = document.createElement("div");
blzt_trust_block.innerHTML = blzt_trust_render;
blzt_trust.append(blzt_trust_block);
console.log(`[BetterLZT] Фактор доверия ${user_nick} = ${usertrust} (${blzt_trust_text})`)
}
function badTrust(trust) {
let html = `
Почему вы считаете, что рейтинг завышен? Выберите один из вариантов (Кликните)
Спасибо за Ваш вклад в BetterLZT
`;
XenForo.alert(html, "BetterLZT > Фактор доверия");
}
function goodTrust(trust) {
let html = `
Почему вы считаете, что рейтинг занижен? Выберите один из вариантов (Кликните)
Спасибо за Ваш вклад в BetterLZT
`;
XenForo.alert(html, "BetterLZT > Фактор доверия");
}
async function commitVote(reason, trust, type) {
if (!reason) return XenForo.alert("Укажите комментарий!", 1, 10000);
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
let blzt_puser_likes = parseInt(document.querySelector(".page_counter .count").innerHTML.replace(' ', ''));
let blzt_puser_nick = document.querySelector("h1.username span"),
blzt_puser_nick_val = blzt_puser_nick.innerHTML.replace(/ .*?<\/i>/ig,'').replace(//g,''),
blzt_puser_role = blzt_puser_nick.classList,
blzt_puser_deposit = parseInt(document.querySelector('h3.amount').innerHTML.replaceAll(' ','').replace('₽',''));
if (nickname == blzt_puser_nick_val) {
return XenForo.alert("Остановись! Саморепорт карается баном в системе фактора доверия!", 1, 10000)
}
let response = await request(`${server}/v6/report?user=${nickname}&originuser=${blzt_puser_nick_val}&originurl=${window.location.pathname}&originaction=${type}&origintrust=${trust}&origindeposit=${blzt_puser_deposit}&originlikes=${blzt_puser_likes}&comment=${reason}`)
if (response == "200") {
return XenForo.alert("Успех!", 1, 10000)
}
else if (response == "403") {
return XenForo.alert("Доступ к функционалу ограничен. Свяжитесь с разработчиком", 1, 10000)
}
else {
return XenForo.alert("Ошибка", 1, 10000)
}
}
function request(url) {
return new Promise((resolve, reject) => GM_xmlhttpRequest({
method: "GET",
url: url,
onload: response => resolve(response.responseText),
onerror: error => resolve(error)
}));
}
function getUID() {
return document.querySelector("input[name=_xfToken").value.split(",")[0];
}
async function uniqDel() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
if (secure == 'null') {
await setSecure(`${document.querySelector("input[name=_xfToken").value.split(",")[0]+document.querySelector("input[name=_xfToken").value.split(",")[1]}`);
}
let req = await request(`${server}/se/del?user=${nickname}&css=${css}&banner=${banner}&bannertxt=${bannertxt}&svgcss=${svgcss}&svg=${svg}`).catch(e => {
XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
});
if (await req != '200' && req != '401') {
XenForo.alert("Ошибка синхронизации с сервером, свяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
}
if (await req == '401') {
XenForo.alert("Для вашего профиля не найдены ключи авторизации. Cвяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
}
if (await req == '200') {
XenForo.alert("Успех", 1, 10000);
cacheSync();
location.reload();
}
}
async function uniqChange() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
if (secure == 'null') {
await setSecure(`${document.querySelector("input[name=_xfToken").value.split(",")[0]+document.querySelector("input[name=_xfToken").value.split(",")[1]}`);
}
let req = await request(`${server}/v6/change?user=${nickname}`).catch(e => {
XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
});
if (await req != '200' && req != '401') {
XenForo.alert("Ошибка синхронизации с сервером, свяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
}
if (await req == '401') {
XenForo.alert("Для вашего профиля не найдены ключи авторизации. Cвяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
}
if (await req == '200') {
XenForo.alert("Уник выключен", 1, 10000);
cacheSync();
}
if (await req == '201') {
XenForo.alert("Уник включен", 1, 10000);
cacheSync();
}
}
async function uniqSave() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
localcss = document.getElementsByClassName("UsernameCss")[0].value;
banner = document.getElementsByClassName("BannerCss")[0].value;
svgcss = document.getElementsByClassName("BannerCss")[0].value;
bannertxt = document.querySelector("input[name='banner_text']").value;
svg = document.querySelector("textarea[name=banner_icon]").value;
css = encodeURIComponent(localcss.replace(/\n/g, "").replace(/; +/g, ";"));
banner = encodeURIComponent(banner.replace(/\n/g, "").replace(/; +/g, ";"));
bannertxt = encodeURIComponent(bannertxt.replace(/\n/g, "").replace(/; +/g, ";"));
svgcss = encodeURIComponent(svgcss.replace(/\n/g, "").replace(/; +/g, ";"));
svg = encodeURIComponent(svg)
if (secure == 'null') {
await setSecure(`${document.querySelector("input[name=_xfToken").value.split(",")[0]+document.querySelector("input[name=_xfToken").value.split(",")[1]}`);
}
let req = await request(`${server}/v5/new?user=${nickname}&css=${css}&banner=${banner}&bannertxt=${bannertxt}&svgcss=${svgcss}&svg=${svg}`).catch(e => {
XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
});
if (await req != '200' && req != '401') {
XenForo.alert("Ошибка синхронизации с сервером, свяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
}
if (await req == '401') {
XenForo.alert("Для вашего профиля не найдены ключи авторизации. Cвяжитесь с разработчиком t.me/hasantigiev or zelenka.guru/lays", 1, 10000)
}
if (await req == '200') {
XenForo.alert("Уник отправлен на проверку. Обычно это занимает 5-10 минут.", 1, 10000);
cacheSync();
}
document.querySelector("input[type=submit]").click();
}
async function usernames() {
let usernames = document.querySelectorAll(".username span:not(.custom)");
try {
for(let e of usernames) parseUsername(e);
} catch {}
}
async function checkupdate() {
try {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
let response = await request(`${server}/v6/support?ver=${version}&user=${nickname}`).catch(err => {});
if (response == 'no' || response == 'dis') {
let waterm = document.createElement('a')
waterm.style = "position:fixed;bottom:5px;right:5px;opacity:0.5;z-index:99;color:white;font-size: 25px;";
waterm.innerHTML = "Для обновления BetterLZT кликните сюда";
waterm.href = "https://greasyfork.org/ru/scripts/470626-betterlzt"
return document.body.append(waterm);
}
if (response == 'newbeta') {
let 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 = "Вы получили доступ к Beta-версии BetterLZT (t.me/hasantigiev)";
return document.body.append(waterm);
}
} catch (error) {
console.error("[BetterLZT] Failed to check update: "+error)
}
}
async function cacheSync() {
try {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
let response = await request(`${server}/v2/sync?user=${nickname}`).catch(err => {});
if (response != cache && response != '') {
cache = response;
await setCache(response);
console.log('OK')
}
} catch (error) {
console.error("[BetterLZT] Sync error: "+error)
}
}
async function setCache(e) {
return await GM.setValue('cache', e);
}
async function setSecure(e) {
return await GM.setValue('secure', e);
}
async function parseUsername(e) {
let data = await JSON.parse(await cache);
try {
if (!data.users[e.innerHTML]) { e.classList.add("custom"); return; }
data = data.users[e.innerHTML];
if (data && !e.classList.contains("custom")) {
if (data.css && data.uniq == "on" && await uniqstatus == 'on') {
e.style = data.css;
}
e.classList.add("custom");
if (data.status && await uniqstatus == 'on' && data.uniq == "on") {
switch (data.status) {
case "js":
e.innerHTML += ` `
break;
case "python":
e.innerHTML += ` `
break;
case "server":
e.innerHTML += ` `
break;
case "bug":
e.innerHTML += ` `
break;
case "code":
e.innerHTML += ` `
break;
case "verified":
e.innerHTML += ` `
break;
case "gold":
e.innerHTML += ` `
break;
case "silver":
e.innerHTML += ` `
break;
case "beta":
e.innerHTML += ` `
break;
case "cookie":
e.innerHTML += ` `
break;
case "admin":
e.innerHTML += ` `
break;
case "moderate":
e.innerHTML += ` `
break;
case "smoderate":
e.innerHTML += ` `
break;
case "arbitr":
e.innerHTML += ` `
break;
case "editor":
e.innerHTML += ` `
break;
case "designer":
e.innerHTML += ` `
break;
case "designer2":
e.innerHTML += ` `
break;
case "walking":
e.innerHTML += ` `
break;
case "usd":
e.innerHTML += ``
break;
case "custom":
e.innerHTML += ` ${data.statusCode}`
break;
case "bmoder":
e.innerHTML += ``;
break
case "sueta":
e.innerHTML += `
`;
break
default:
e.innerHTML += ` `
break;
}
}
}
if (e.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector('.avatarHolder') && data.uniq == "on" && data.svgcss && await uniqstatus == 'on') {
let svg = document.createElement('div');
e.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder:not(.custom)")
svg.classList.add("avatarUserBadges");
svg.innerHTML = `
${data.svg ? data.svg : ''}
`;
e.parentElement.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder").prepend(svg)
}
if (e.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder") && data.uniq == "on" && data.svgcss && await uniqstatus == 'on') {
let svg = document.createElement('div');
e.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder:not(.custom)").classList.add("custom")
svg.classList.add("avatarUserBadges");
svg.innerHTML = `
${data.svg ? data.svg : ''}
`;
e.parentElement.parentElement.parentElement.parentElement.querySelector(".avatarHolder").prepend(svg)
}
if (await uniqstatus == 'on' && data.uniq == "on") {
if (document.querySelector(".avatarScaler") && data.banner && !document.querySelector(".customBanner") && document.querySelectorAll("h1.username")[0].innerHTML.includes(e.innerHTML)) {
let banner = document.createElement('em');
banner.classList.add("userBanner");
banner.classList.add("customBanner");
banner.classList.add("wrapped");
banner.style = data.banner;
banner.innerHTML = `${data.bannertxt}`;
document.querySelector(".avatarScaler").append(banner);
}
}
} catch {}
}
function setAdblock(e) {
GM.setValue("adblock", e)
adblock = e;
XenForo.alert('AdBlock настроен', 1, 10000)
}
function setLike(e) {
GM.setValue("hidelike", e)
hidelike = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function setAva(e) {
GM.setValue("avamarket", e)
avamarket = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function setUniq(e) {
GM.setValue("uniqstatus", e)
uniqstatus = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function setContest(e) {
GM.setValue("contestblock", e)
contestblock = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function setReport(e) {
GM.setValue("reportbtns", e)
reportbtns = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function setSecretph(e) {
GM.setValue("secretph", e)
hidelike = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000);
}
function setMarketblock(e) {
GM.setValue("marketblock", e)
marketblock = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function setTheme(e) {
GM.setValue("theme", e)
marketblock = e;
XenForo.alert('BetterLZT> Успех!', 1, 10000)
}
function renderFunctions() {
unsafeWindow.nickname = nickname;
unsafeWindow.server = server;
unsafeWindow.cache = cache;
unsafeWindow.version = version;
unsafeWindow.adblock = adblock;
unsafeWindow.hidelike = hidelike;
unsafeWindow.marketblock = marketblock;
unsafeWindow.avamarket = avamarket;
unsafeWindow.secure = secure;
unsafeWindow.theme = theme;
unsafeWindow.uniqstatus = uniqstatus
unsafeWindow.reportbtns = reportbtns
unsafeWindow.setAdblock = e => setAdblock(e);
unsafeWindow.setMarketblock = e => setMarketblock(e);
unsafeWindow.setCache = e => setCache(e);
unsafeWindow.setSecure = e => setSecure(e);
unsafeWindow.setSecretph = e => setSecretph(e);
unsafeWindow.setLike = e => setLike(e);
unsafeWindow.setTheme = e => setTheme(e);
unsafeWindow.setAva = e => setAva(e);
unsafeWindow.setUniq = e => setUniq(e);
unsafeWindow.setContest = e => setContest(e);
unsafeWindow.setReport = e => setReport(e);
unsafeWindow.setGpt = e => setGpt(e);
unsafeWindow.request = request;
let torender = [uniqSave, uniqChange, secretSecurity, goodTrust, badTrust, trustFactor, commitVote, SecretSet, ColorSet, BgSet, dialogWindow, cacheSync, EmojiSet, getUID, usernames, parseUsername, cacheSync, BannerStyle, NickStyle];
let funcs = torender.map(e => e.toString());
let script = document.createElement('script');
script.appendChild(document.createTextNode(funcs.join("")));
document.head.appendChild(script);
renderSettings();
}
function isAd(e) {
if (adlist_w.some(o => e.innerHTML.toLowerCase().includes(o)) && !adlist_white.some(o => e.innerHTML.toLowerCase().includes(o))) {
return true;
}
return false;
}
function isLink(e) {
if (adlist_l.some(o => e.innerHTML.toLowerCase().includes(o)) && !adlist_white.some(o => e.innerHTML.toLowerCase().includes(o))) {
return true;
}
return false;
}
async function adBlockDaemon() {
if (await contestblock == 'on' && document.querySelector(".messageText.SelectQuoteContainer.ugc") && document.querySelector(".moneyContestWithValue")) {
document.querySelector(".messageText.SelectQuoteContainer.ugc").remove()
}
adblock = await adblock;
avablock = await avablock;
if (window.location.pathname == '/' && document.querySelector(".text_Ads") && adblock == 'on') { document.querySelector(".text_Ads").remove(); return;}
let users = document.querySelectorAll("span.userStatus:not(.blocked)");
// удаление рекламы в алертах
if (document.querySelector('[data-author="Реклама"]') && adblock == 'on')
{
let ads = document.querySelectorAll('[data-author="Реклама"]');
ads.forEach(function (e){
e.remove();
})
}
// проверка на рекламу в минипрофиле
if (document.querySelector(".userTitleBlurb h4") && adblock == 'on')
{
let e = document.querySelector(".userTitleBlurb h4");
let img = document.querySelector(".avatarBox span.img");
if (isAd(e)) {
e.classList.add("blocked");
e.innerHTML = "Реклама скрыта";
img.style.backgroundImage = `url('https://placehold.co/600x600?text=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D0%B0')`;
}
}
if (document.querySelector(".userTitleBlurb h4") && adblock == 'on')
{
let e = document.querySelector(".userTitleBlurb h4");
let img = document.querySelector(".avatarBox span.img");
if (isLink(e)) {
e.classList.add("blocked");
e.innerHTML = "Реклама скрыта";
}
}
// Проверка статуса на юзер пейдже
if (document.querySelector(".current_text:not(.blocked)") && adblock == 'on')
{
let e = document.querySelector(".current_text:not(.blocked)");
let img = document.querySelector(".avatarScaler img");
if (isAd(e)) {
e.classList.add("blocked");
e.innerHTML = "Реклама скрыта";
img.src = 'https://placehold.co/600x600?text=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D0%B0';
}
if (isLink(e)) {
e.classList.add("blocked");
e.innerHTML = "Реклама скрыта";
}
}
if (users.length < 1 && adblock != 'on') {return;}
users.forEach(function (e) {
// проверка на рекламу
if (isAd(e) && adblock == 'on')
{
e.innerHTML = 'Реклама скрыта';
e.classList.add("blocked");
// такое говно в будущем стоит переписать =)
$(e).parent().parent().parent().find(".img")[0].style.backgroundImage = `url('https://placehold.co/600x600?text=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D1%81%D0%BA%D1%80%D1%8B%D1%82%D0%B0')`;
return;
}
if (isLink(e) && adblock == 'on')
{
e.innerHTML = 'Реклама скрыта';
e.classList.add("blocked");
return;
}
return;
})
}
function BannerStyle(type) {
switch (type) {
case '1':
document.getElementsByClassName("BannerCss")[0].value = `border-radius: 6px;background: url('https://media1.giphy.com/media/JtBZm3Getg3dqxK0zP/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px #7a00ff, 1px 2px 0px red, 1px 3px 0px green;color: white`;
document.getElementsByClassName("UserBannerStyle")[0].style = `border-radius: 6px;background: url('https://media1.giphy.com/media/JtBZm3Getg3dqxK0zP/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px #7a00ff, 1px 2px 0px red, 1px 3px 0px green;color: white`;
break;
case '2':
document.getElementsByClassName("BannerCss")[0].value = `border-radius: 6px;background: url('https://media1.giphy.com/media/3o7522WIg2FkHbCHvO/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px gray, 1px 2px 0px lime, 1px 3px 0px blue;color: white`;
document.getElementsByClassName("UserBannerStyle")[0].style = `border-radius: 6px;background: url('https://media1.giphy.com/media/3o7522WIg2FkHbCHvO/giphy.gif') center center;text-shadow: 0px 0px 3px #7a00ff, 0px 1px 0px gray, 1px 2px 0px lime, 1px 3px 0px blue;color: white`;
default:
break;
}
}
function NickStyle(type) {
switch (type) {
case '1':
document.getElementsByClassName("UsernameCss")[0].value = `background: url('https://media3.giphy.com/media/h5XENtRSEjj8tELOXW/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
document.getElementsByClassName("UsernameStyle")[0].style = `background: url('https://media3.giphy.com/media/h5XENtRSEjj8tELOXW/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
break;
case '2':
document.getElementsByClassName("UsernameCss")[0].value = `background: url('https://media4.giphy.com/media/dwaeIbBnF6HBu/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
document.getElementsByClassName("UsernameStyle")[0].style = `background: url('https://media4.giphy.com/media/dwaeIbBnF6HBu/giphy.gif');text-shadow: 0 0 5px #ff00f7;-webkit-background-clip: text;-webkit-text-fill-color: transparent`;
default:
break;
}
}
async function renderSettings() {
// Проверка на нахождение в профиле и наличие кнопки редактирования профиля
if (document.querySelector(".secondaryContent a.button.block[href='account/personal-details']")) {
let profileeditbtn = document.createElement('a')
profileeditbtn.classList.add('block');
profileeditbtn.classList.add('button');
profileeditbtn.onclick = function () {
dialogWindow();
};
profileeditbtn.innerHTML = 'Настроить BetterLZT';
document.querySelector(".topblock .secondaryContent").append(profileeditbtn)
}
if(window.location.pathname == "/account/uniq/test" && await uniqstatus == 'on') {
if (document.querySelector("[name=banner_text]").value == "Lolzteam") document.querySelector("[name=banner_text]").value = "BetterLZT";
let adduniq = document.createElement("div");
adduniq.style = "margin-bottom: 25px";
adduniq.innerHTML = `
`
document.getElementsByClassName("ToggleTriggerAnchor")[0].prepend(adduniq);
}else if(window.location.pathname == "/account/uniq/test" && await uniqstatus != 'on'){
let adduniq = document.createElement("div");
adduniq.style = "margin-bottom: 25px";
adduniq.innerHTML = `
⚠️ у вас отключены уники от BetterLZT. Для сохранения бесплатного уника активируйте функцию в настройках
`
document.querySelector("#UniqPanels").prepend(adduniq)
}
}
async function dialogWindow() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim().replace(/<[^>]*>/g, ' ').replace(/\s{2,}/g, ' ').trim().replace(" Premium", "").trim();
let data = await JSON.parse(await cache);
data = data.users[nickname];
if (!data) {
data = {
"premium": false
}
}
adblockt = false;
marketblockt = false;
hideliket = false;
hideava = false;
uniqstatust = false;
uniqstatust = false;
contestblockt = false;
reportbtnst = false;
if (await reportbtns == 'on') {
reportbtnst = true;
}
if (await adblock == 'on') {
adblockt = true;
}
if (await marketblock == 'on') {
marketblockt = true;
}
if (await hidelike == 'on') {
hideliket = true;
}
if (await avamarket == 'on') {
hideava = true;
}
if (await uniqstatus == 'on') {
uniqstatust = true;
}
if (await contestblock == 'on') {
contestblockt = true;
}
let htmlall = `
Основные
Реклама, секретный вопрос
Выбор иконки у ника
Для выбора просто кликните на понравившуюся иконку
Кастомизация
Готовые темы
Новости и обновления
Цены на премиум
`
let html_prem = `
${htmlall}
Version ${version}
Приобрести Premium Настроить уник Обновить расширение
`;
return XenForo.alert(
`${html_prem}`, 'BetterLZT (native) v.'+version
)
}
async function EmojiSet(emoji) {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
request(`${server}/v5/emoji?user=${nickname}&emoji=${emoji}`).catch(e => {
XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
});
cacheSync();
location.reload();
}
async function BgSet() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
bg = document.querySelector("#bgurl").value
request(`${server}/v5/bg?user=${nickname}&bg=${bg}`).catch(e => {
XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
});
cacheSync();
location.reload();
}
async function SecretSet() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
secretph = document.querySelector("#secretph").value;
setSecretph(secretph);
}
async function ColorSet() {
nickname = document.querySelector(".accountUsername.username").firstElementChild.innerText.trim();
bg = document.querySelector("#colorbg").value
request(`${server}/v5/color?user=${nickname}&color=${bg}`).catch(e => {
XenForo.alert("Ошибка синхронизации с сервером, попробуйте еще раз", 1, 10000)
});
cacheSync();
location.reload();
}
async function marketRender() {
if (document.location.host != "lzt.market") {return false;}
if(window.location.href.includes('goods/add')) {
if(document.querySelector(".bbCodeSpoilerContainer")){
document.querySelector(".bbCodeSpoilerContainer button").click()
}
}
if (await marketblock == 'on') {
alerts = document.querySelectorAll(".itemIgnored");
alerts.forEach(function (e){
e.remove();
})
}
if(document.querySelector(".sidebarUserAvatar") && await avamarket == 'on') {
document.querySelector(".sidebarUserAvatar").remove();
}
}
function secretSecurity() {
return XenForo.alert(`Сторонние расширения имеют доступ к пользовательским настройкам BetterLZT. и могут использовать это в корыстных целях
Если вы используете сторонние расширение от малоизвестных авторов - рекомендуем не пользоваться данной функцией ИЛИ
удалить сторонние расширения.
Имеются вопросы по сторонним расширениям? Свяжитесь со мной - t.me/hasantigiev`, "Безопасность превыше всего!")
}