// ==UserScript==
// @name Скрипт для ЗГС ГОСС
// @namespace https://openuserjs.org/users/Kingston007
// @version 1.6
// @description my skills
// @author Ivan_Gordeev
// @match https://forum.blackrussia.online/index.php?threads/*
// @include https://forum.blackrussia.online/index.php?threads/
// @icon https://icons.iconarchive.com/icons/aha-soft/iron-man/48/Ironman-Mask-3-Old-icon.png
// @grant none
// @license MIT
// ==/UserScript==
(async function () {
`use strict`;
const UNACCEPT_PREFIX = 4; // Prefix that will be set when thread closes
const ACCEPT_PREFIX = 8; // Prefix that will be set when thread accepted
const PIN_PREFIX = 2; // Prefix that will be set when thread pins
const COMMAND_PREFIX = 10; // Prefix that will be set when thread send to project team
const WATCHED_PREFIX = 9;
const CLOSE_PREFIX = 7;
const data = await getThreadData(),
greeting = data.greeting,
user = data.user;
const buttons = [
{
title: `Приветствие`,
content:
`[SIZE=4][FONT=georgia][CENTER] ${greeting}, уважаемый ${user.mention}![/CENTER]<br>` +
`[CENTER] [/CENTER][/FONT][/SIZE]`,
},
{
title: `Открытия заявок`,
content:
`[IMG] [/IMG]<br>`+
`[CENTER][SIZE=5][FONT=times new roman][COLOR=lightgreen] Доброго времени суток, каждый из игроков подходящий по критериям ниже имеет право оставить это заявление, и побороться за лидерство. Помните главное, данный пост это серьезный шаг, делая его Вы соглашаетесь со всеми критериями, а так же понимаете то что должны будете отдавать игре много времени, для поддержания стабильной работы вашей организации. Только после понимания того на что вы идете, пишите это заявление и просим вас не тратить наше время на то, чтобы проверить бессмысленные заявления! [/COLOR]<br><br>`+
`[CENTER][SIZE=5][FONT=times new roman]Критерии для подачи заявления:<br><br>`+
`Игровой уровень не менее 10-го. <br>`+
` Не иметь действующих наказаний. <br>`+
` Минимальный суточный онлайн +4 часа. <br>`+
` Реальный возраст от 15 лет (Исключение даются в крайних случаях). <br>`+
` Знание правил Role-Play и правила отыгровки RP. <br>`+
` Открытый профиль в "VK", дабы была возможность добавлять в беседы. <br><br>`+
` [[COLOR=red] Примечание:[/COLOR] Если вы не выполнили/не подходите по вышеперечисленным критериям, следящая администрация имеет право вам отказать в заявление на пост «Лидера».<br>`+
` Форма подачи заявления:[/FONT][/SIZE].<br><br>`+
`[SIZE=6][FONT=times new roman][[COLOR=red] IС информация:[/COLOR] [/FONT][/SIZE].<br>`+
`[SIZE=5][FONT=times new roman]Ваш NickName:.<br>`+
`Ваш игровой уровень:.<br>`+
`Ваша статистика (/stats):.<br>`+
`Скриншот лицензий (/lic):<br>`+
`Скриншот истории смены игровых NickName'ов (/history):<br>`+
`Ваша RolePlay биография [Одобренная]:[/FONT][/SIZE].<br><br>`+
`[SIZE=6][FONT=times new roman][[COLOR=red] ООС информация: [/COLOR][/FONT][/SIZE].<br>`+
`[SIZE=5][FONT=times new roman]Ваше реальное имя и фамилия:<br>`+
`Ваш возраст:<br>`+
`Страна город/страна проживания:<br>`+
`Часовой пояс (указать в часах от мск):<br>`+
`Ваш средний суточный онлайн:<br>`+
`Расскажите о себе (чем увлекаетесь, занимаетесь в свободное время):<br>`+
`Почему именно вы должны занять данный пост, и администрация должна выбрать именно вас?:<br>`+
`Имеется ли опыт на посту лидера:<br>`+
`Эксклюзивные, оригинальные предложения по улучшению/изменениям во фракции:<br>`+
`Представьте ситуацию - У вас завязался сильный конфликт с лидером другой организации, ваши действия и рассуждения в данной ситуации? Как Вы будете решать эту ситуацию?:<br>`+
`Вы сможете удерживать members 10+ стабильно?:<br>`+
`Ваш логин в Discord:<br>`+
`Ссылка на Вашу страничку VK:<br><br>`+
`[IMG width="695px"]https://i.postimg.cc/NMNn7DSC/image-2022-03-13-145747.png[/IMG]<br>`+
`[[COLOR=red] Примечание:[/COLOR]<br><br>`+
` 1. В анкетах всегда поощряется полное описание всего! Меньше воды, больше интересной информации дабы мы могли представить Вас как личность! Заявки(анкеты), это тоже один из важнейших этапов прохождения на пост лидерства, отнеситесь к этому очень серьезно!<br>`+
`2. Чьи анкеты по мнению администрации не несут в себе достаточной информации, могут быть отклонены или удалены без объяснения причины!<br>`+
`3. Все скриншоты должны быть с /time.<br>`+
`4. Скриншоты должны быть сделаны после открытия заявок на пост лидера фракции.<br>`+
`5. Ваша страница в ВК не должна быть "Фейком".<br>`+
`6. Нельзя занимать места в заявках. За нарушение этого, Ваше сообщение будет удалено.<br>`+
`Обман администрации даже в анкетах, несет за собой нарушение правил проекта, а именно "2.34. Запрещен обман администрации",<br>`+
`Если, у Вас есть уверенность в том, что Вам действительно нужен данный пост - Вы можете подавать заявку. Если Вы не уверены, что сможете отстоять хотя бы 7 дней, не стоит совершать данный поступок.<br><br>`+
`Помните, что при уходе с данного поста, при этом не отстояв срок в 15 дней, Вы получить блокировку аккаунта на 15 дней.[/FONT][/SIZE][/CENTER]<br><br>`+
`[IMG width="695px"]https://i.postimg.cc/NMNn7DSC/image-2022-03-13-145747.png[/IMG]<br>`+
`[FONT=georgia] [[COLOR=red] Примечание: [/COLOR] После одобрение, с вами свяжится Старшая Администрация. Вам будет необходимо добавить представителя старшей администрации в друзья, после вас добавят в специальную беседу.<br>`+
`Никто из состава администрации не будет просить у вас все различные пароли, пин-коды, информация о привязках и так далее. Не ведитесь на обманы!`,
},
{
title: `Закрытие заявок`,
content : `[SIZE=5][FONT=georgia][CENTER] ${greeting}, уважаемые игроки.<br>`+
`[CENTER] В данной теме вы узнаете список [color=lightgreen] одобренных [/color] и [[COLOR=red] отказанных [/color] игроков на должность Лидера Фракции « »<br>`+
`[CENTER] В случае если вы не согласны с решениям Старшей Администрации то составьте свою претензию в раздел «Жалобы на Администрацию».<br><br>`+
`[SIZE=6] [CENTER] [color=lightgreen] Список одобренных кандидат;[/color]<br>`+
`[CENTER] [LIST=1]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[/LIST]<br><br>`+
`[SIZE=6] [CENTER] [COLOR=red] Список отказанных игроков;[/color]<br>`+
`[CENTER] [LIST]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[*] — [COLOR=red] Причина отказа: [/color]
[/LIST]<br><br>`+
`[CENTER] [SIZE=6] [COLOR=red] Примечание: [/COLOR] После одобрение, с вами свяжится Главный Следящий,либо его Заместитель. Вам будет необходимо добавить представителя старшей администрации в друзья, после вас добавят в специальную беседу.<br>`+
`[CENTER] [SIZE=6] Никто из состава администрации не будет просить у вас все различные пароли, пин-коды, информация о привязках и так далее. Не ведитесь на обманы!<br><br>`+
`[CENTER] Всем одобренным кандидатам, желаю удачи на обзвоне! Не забудьте почитать правила до обзвона😝`,
prefix: WATCHED_PREFIX
},
{
title: `Запрос док-вы у лидера`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}![/CENTER]<br>` +
`[CENTER] Запрошу доказательства у лидера.<br><br>` +
`Пожалуйста ожидайте ответа.<br>` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
`[COLOR=orange]На рассмотрение.[/color] [/CENTER][/FONT][/SIZE]`,
prefix: PIN_PREFIX,
status: true,
},
{
title: `Проведена беседа`,
content: ` [SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}!<br>` +
` Благодарим за ваше обращение!<br>` +
` С лидером / заместителем будет проведена профилактическая беседа.<br>` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
` [COLOR=lightgreen]Одобрено[/color],закрыто [/CENTER][/FONT][/SIZE]`,
prefix: ACCEPT_PREFIX,
status: false,
},
{
title: `Получит наказание`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}!<br>` +
`Благодарим за ваше обращение!<br>` +
`Лидер получит соответствующие наказание` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
` [COLOR=lightgreen]Одобрено[/color],закрыто [/CENTER][/FONT][/SIZE]`,
prefix: ACCEPT_PREFIX,
status: false,
},
{
title: `Жалоба не по форме`,
content:
`[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
"[CENTER]Жалоба составлена не по форме. Внимательно прочитайте правила составления жалобы, которые закреплены в этом разделе. <br><br>" +
"[CENTER]С уважением,ЗГС ГОСС - Rostik_Ford. <br><br>" +
`[CENTER][[COLOR=red] Отказано[/color], закрыто.[/CENTER][/FONT][/SIZE]`,
prefix: CLOSE_PREFIX,
status: false,
},
{
title: `В раздел ЖБ на сотрудников`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
`[CENTER]Ошиблись разделом,пожалуйста напишите свою жалобу в раздел «Жалобы на сотрудников»<br>` +
`[CENTER] [[COLOR=red] Отказано[/color],закрыто[/CENTER][/FONT][/SIZE]`,
prefix: CLOSE_PREFIX,
status: false,
},
{
title: ` Не являеться ЛД`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
`[CENTER]Данный игрок больше не являеться лидером.<br>` +
`[CENTER] [COLOR=red] Отказано[/color],закрыто.[/CENTER][/FONT][/SIZE]`,
prefix: CLOSE_PREFIX,
status: false,
},
{
title: `Лидер был снят`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
` [CENTER] Благодарим за ваше обращение!<br>` +
` [CENTER] [COLOR=lightgreen]Одобрено[/color],закрыто.[/CENTER][/FONT][/SIZE]`,
prefix: CLOSE_PREFIX,
status: false,
},
{
title: `Недостаточно док-вы`,
content:`[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
`[CENTER] Недостаточно доказательств, которые потверждают нарушение лидера.<br>`+
` [CENTER][[COLOR=red] Отказано[/color],закрыто.[/CENTER][/FONT][/SIZE]`,
prefix: UNACCEPT_PREFIX,
status: false,
},
{
title: `Нету нарушение`,
content:`[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
`[CENTER] Исходя из выше приложенных доказательств,нарушение со стороны лидера - не имееться!<br>`+
`[CENTER] [COLOR=red] Отказано[/color],закрыто. [/CENTER][/FONT][/SIZE]`,
prefix: UNACCEPT_PREFIX,
status: false,
},
{
title: `Опра в соц.сети`,
content:` [CENTER][SIZE=5][FONT=georgia]${greeting}, уважаемый ${user.mention} <br><br>`+
"Пожалуйста внимательно прочитайте тему «[URL=`https://forum.blackrussia.online/index.php?threads/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BF%D0%BE%D0%B4%D0%B0%D1%87%D0%B8-%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1-%D0%BD%D0%B0-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8E.193340/`]Правила подачи жалоб на администрацию[/URL][SIZE=5][B]»<br><br>"+
"И обратите своё внимание, на данный пункт правил —[/B][/SIZE][/FONT][/SIZE][SIZE=4][FONT=georgia][QUOTE]3.6. Прикрепление доказательств обязательно.Примечание: загрузка доказательств в соц. сети (ВКонтакте, instagram) запрещается, доказательства должны быть загружены на фото/видео хостинги (YouTube, Япикс, imgur).[/QUOTE][/FONT][QUOTE][/quote][/SIZE][QUOTE][/QUOTE]"+
`[SIZE=4][FONT=georgia][COLOR=red] Отказано[/color],[S] закрыто.[/S][/FONT][/SIZE]`,
prefix: UNACCEPT_PREFIX,
status: false,
},
{
title: `Правила раздела`,
content:`[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
`[CENTER]Пожалуйста, убедительная просьба, ознакомится с назначением данного раздела в котором Вы создали тему, так как ваш запрос никоим образом не относится к предназначению данного раздела.[/CENTER]`+
`[CENTER][COLOR=red] Отказано[/color], закрыто.[/CENTER][/FONT]<br><br>`,
prefix: UNACCEPT_PREFIX,
status:false,
},
{
title: `Есть док-ва`,
content:`[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}[/CENTER]<br><br>` +
`[CENTER] Лидер / заместитель предоставил доказательства вашего нарушения,наказание было выдано верно!!<br>`+
`[CENTER] [COLOR=red] Отказано[/color],закрыто. [/CENTER][/FONT][/SIZE]`,
prefix: UNACCEPT_PREFIX,
status: false,
},
{
title: `Возврат должности`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}!<br>` +
`Благодарим за ваше обращение!<br>` +
`Лидер / заместитель будет наказан,должность вам вернут обратно` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
` [COLOR=lightgreen]Одобрено[/color],закрыто [/CENTER][/FONT][/SIZE]`,
prefix: ACCEPT_PREFIX,
status: false,
},
{
title: `Снятие наказания`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}!<br>` +
`Благодарим за ваше обращение!<br><br>` +
`Проверив доказательства лидера / заместителя было принято решение то что вам снимут наказание.` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
` [COLOR=lightgreen]Одобрено[/color],закрыто [/CENTER][/FONT][/SIZE]`,
prefix: ACCEPT_PREFIX,
status: false,
},
{
title: `Заявления на рассмотрении`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемые игроки![/CENTER]<br>` +
`[CENTER] Закрываю заявление на пост лидера на рассмотрение.<br><br>` +
`Пожалуйста ожидайте результатов.<br><br>` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
`[COLOR=orange]На рассмотрение.[/color] [/CENTER][/FONT][/SIZE]`,
prefix: PIN_PREFIX,
status: true,
},
{
title: `Запрос док-вы у заместителя`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}![/CENTER]<br>` +
`[CENTER] Запрошу доказательства у заместителя.<br><br>` +
`Пожалуйста ожидайте ответа.<br>` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
`[COLOR=orange]На рассмотрение.[/color] [/CENTER][/FONT][/SIZE]`,
prefix: PIN_PREFIX,
status: true,
},
{
title: `Заместитель получит наказание`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}!<br>` +
`Благодарим за ваше обращение!<br>` +
`Заместитель получит соответствующие наказание <br><br>` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
` [COLOR=lightgreen]Одобрено[/color],закрыто [/CENTER][/FONT][/SIZE]`,
prefix: ACCEPT_PREFIX,
status: false,
},
{
title: `Передано ГС ГОСС`,
content: `[SIZE=4][FONT=georgia][CENTER]${greeting}, уважаемый ${user.mention}![/CENTER]<br>` +
`[CENTER] Данная информация была передана Главному Следящему.<br><br>` +
`Пожалуйста ожидайте ответа от ГС ОПГ - @Kucas_King.<br><br>` +
`С уважением,ЗГС ГОСС - Rostik_Ford.<br>` +
`[COLOR=orange]На рассмотрение.[/color] [/CENTER][/FONT][/SIZE]`,
prefix: PIN_PREFIX,
status: true,
},
];
$(document).ready(() => {
// Загрузка скрипта для обработки шаблонов
$(`body`).append(`<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>`);
// Добавление кнопок при загрузке страницы
addButton(`На рассмотрение`, `pin`);
addButton(`Одобрено`, `accepted`);
addButton(`Отказано`, `unaccept`);
addButton(`Ответы`, `selectAnswer`);
// Поиск информации о теме
const threadData = getThreadData();
$(`button#pin`).click(() => editThreadData(PIN_PREFIX, true));
$(`button#accepted`).click(() => editThreadData(ACCEPT_PREFIX, false));
$(`button#teamProject`).click(() => editThreadData(COMMAND_PREFIX, true));
$(`button#unaccept`).click(() => editThreadData(UNACCEPT_PREFIX, false));
$(`button#selectAnswer`).click(() => {
XF.alert(buttonsMarkup(buttons), null, `Выберите ответ:`);
buttons.forEach((btn, id) => {
if (id > 2) {
$(`button#answers-${id}`).click(() => pasteContent(id, threadData, true));
} else {
$(`button#answers-${id}`).click(() => pasteContent(id, threadData, false));
}
});
});
});
function addButton(name, id) {
$(`.button--icon--reply`).before(
`<button type="button" class="button rippleButton" id="${id}" style="margin: 3px;">${name}</button>`,
);
}
function buttonsMarkup(buttons) {
return `<div class="select_answer">${buttons
.map(
(btn, i) =>
`<button id="answers-${i}" class="button--primary button ` +
`rippleButton" style="margin:5px"><span class="button-text">${btn.title}</span></button>`,
)
.join(``)}</div>`;
}
function pasteContent(id, data = {}, send = false) {
const template = Handlebars.compile(buttons[id].content);
if ($(`.fr-element.fr-view p`).text() === ``) $(`.fr-element.fr-view p`).empty();
$(`span.fr-placeholder`).empty();
$(`div.fr-element.fr-view p`).append(template(data));
$(`a.overlay-titleCloser`).trigger(`click`);
if (send == true) {
editThreadData(buttons[id].prefix, buttons[id].status);
$(`.button--icon.button--icon--reply.rippleButton`).trigger(`click`);
}
}
async function getThreadData() {
const authorID = $(`a.username`)[0].attributes[`data-user-id`].nodeValue;
const authorName = $(`a.username`).html();
const hours = new Date().getHours();
const greeting = 4 < hours && hours <= 11
? `Доброе утро`
: 11 < hours && hours <= 15
? `Добрый день`
: 15 < hours && hours <= 21
? `Добрый вечер`
: `Доброй ночи`
return {
user: {
id: authorID,
name: authorName,
mention: `[USER=${authorID}]${authorName}[/USER]`,
},
greeting: greeting
};
}
function editThreadData(prefix, pin = false) {
// Получаем заголовок темы, так как он необходим при запросе
const threadTitle = $(`.p-title-value`)[0].lastChild.textContent;
if (pin == false) {
fetch(`${document.URL}edit`, {
method: `POST`,
body: getFormData({
prefix_id: prefix,
title: threadTitle,
_xfToken: XF.config.csrf,
_xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
_xfWithData: 1,
_xfResponseType: `json`,
}),
}).then(() => location.reload());
}
if (pin == true) {
fetch(`${document.URL}edit`, {
method: `POST`,
body: getFormData({
prefix_id: prefix,
title: threadTitle,
sticky: 1,
_xfToken: XF.config.csrf,
_xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
_xfWithData: 1,
_xfResponseType: `json`,
}),
}).then(() => location.reload());
}
}
function getFormData(data) {
const formData = new FormData();
Object.entries(data).forEach(i => formData.append(i[0], i[1]));
return formData;
}
})();