您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
vk.com/chris_wayne
// ==UserScript== // @name special for faraway // @namespace https://forum.arizona-rp.com/ // @match https://forum.arizona-rp.com/* // @grant none // @version 0.2 // @author Christopher_Wayne vk.com/chris_wayne // @description vk.com/chris_wayne // @license MIT // ==/UserScript== var buttonname = "ЖБ НО"; var newButtonName = "ЖБ адм"; var settingsButtonName = "Settings"; var version = "0.2"; const RULES_LIST = [ "2.1. ДМ (Нанесение урона без причины)ᴾᴿᴵᴹ ¹ - ТСР на 1-4 звезды | > 2 раз за 3 д. GUN BAN 7 д.", "2.2. ДМ сотрудника полиции или ФБР - ТСР на 3-5 звезд + GUN BAN 1 день | х2 за 5 суток GUN BAN 10 дней.", "2.3. ДМ(нанесение урона) в ЗЗᴾᴿᴵᴹ ² - ТСР на 6 звезд | > 2 раз за 3 д. GUN BAN 10 д.", "2.4. Массовый ДМ (нанесение урона 3 и более игрокам) - Бан акк + GUN BAN от 1 до 7 дней", "2.5. Массовый ДМ в ЗЗ (нанесение урона 3 и более игрокам) - Бан акк + GUN BAN от 1 до 15 дней", "2.6. Оружие в ЗЗ (держать в руке) - Изъятие оружия", "2.7. Оружие в ЗЗ (целиться) - 10-20 минут деморгана", "2.8. Оружие в ЗЗ (стрелять) - 60-120 минут деморгана", "2.9. ДБ (Нанесение урона машиной) - 120-240 минут деморгана", "2.10. ДБ в ЗЗ - 300 минут деморгана", "2.11. Массовое ДБ (нанесение урона 3 и более игрокам машиной) - Бан от 1 до 7 дней", "2.12. Массовое ДБ в ЗЗ (нанесение урона 3 и более игрокам машиной) - Бан от 1 до 15 дней", "2.13. СК (Нанесение урона игрокам на спавне)ᴾᴿᴵᴹ ³ - Варн", "2.14. ТК (Убийство или нанесение более 20 урона игрокам из своей фракции)ᴾᴿᴵᴹ ⁴ - Варн", "2.15. ПГ (Изображение из себя супер-героя)ᴾᴿᴵᴹ ⁵ - Варн", "2.16. Хил / Броня в боюᴾᴿᴵᴹ ⁶ - 120-180 минут деморгана", "2.17. ОФФ / АФК / Инта / Уход в ЗЗ / Аксессуар Шар / Машинка на Р/У от смерти - Варн", "2.18. ОФФ / АФК / Вода / Уход в ЗЗ / Инта / Аксессуар Шар / Машинка на Р/У от ареста - Варн", "2.19. Рп в свою сторону / Отказ / ОФФ / АФК от РП - Варн", "2.20. Отсутствие ответа от игрока, который не участвовал с вами в РП, на вопрос в /do не является отказом от РП. При отсутствии ответа от игрока необходимо повторить вопрос через 60 секунд. При дальнейшем отсутствии ответа необходимо уточнить у игрока в /b чат почему он не отвечает на вопрос.", "2.21. Сбив анимации выстрела любым способом(+ц, отводом, перекатом, сбив темпа стрельбы, и.т.п) в человека(исключение: Дм Арена) - 250-300 минут деморгана / Варн", "2.22. НонРП расположение переносной лавки(На дорогах,в стенке, точках спавна и так далее) - 20-30 минут деморгана", "2.23. НонРП дубинка на терракте - Варн", "2.24. НонРП медик - 120 минут деморгана", "2.25. НонРП сотр.тюрьмы - 120-400 минут деморгана / Варн", "2.26. НонРП на терракте - 120-300 минут деморгана / Варн", "2.27. НонРП поведение - 10-120 минут деморганаᴾᴿᴵᴹ ⁷", "2.28. Лёгкий багоюз (нонРП фермер и прочее) - 10-30 минут деморгана", "2.29. Багоюзᴾᴿᴵᴹ ⁸ - 120-300 минут деморгана / Бан", "2.30. Крыша автоᴾᴿᴵᴹ ⁹: - Слап/Кик при повторении", "2.31. Крыша палаткиᴾᴿᴵᴹ ⁹ - Слап/Кик при повторении", "2.32. Стол в казиноᴾᴿᴵᴹ ⁹ - Слап/Кик при повторении", "2.33. Сбив анимаций - 60-180 минут деморгана", "2.34. Сбив анимаций в ТСР - Варн", "2.35. Попытка избавиться от звезд путем получения деморгана (за крышу авто, стол казино и т.д.) - ТСР 1-6 звезд", "2.37. НонРП выполнение квеста - 60-120 минут деморгана", "2.38. НонРП/неадекватное название такси - 30-120 минут деморгана", "2.39. Серьезные нарушения в ТСР (например: дм, сбив и т.п) - Варн / Увеличение срока", "2.40. Неадекватное описание персонажа - Просьба поменять / Очистка описания (при отказе/неоднократно - бан на 2 дня)", "2.41. Бредовое описание персонажа - Просьба поменять / Очистка описания (при отказе/неоднократно - бан на 2 дня)", "2.41. Описание персонажа, нарушающее РП режим - Просьба поменять / Очистка описания (при отказе/неоднократно - бан на 2 дня)", "2.42. Реклама бизнесов, продажа имущества и т.п. через описание персонажа - Просьба поменять / Очистка описания (при отказе/неоднократно - бан на 2 дня)", "2.43. Уход от ареста в запрещенные места для проведения арестовᴾᴿᴵᴹ ¹⁰ - Варн игроку,коп который полез на респу арестовывать так же получит варн.", "2.44. Соучастие в ДМе(намеренная езда за игроками с целью их убийства вашей компанией) - Наказание как за ДМ", "2.45. Использование бага с бегом CJᴾᴿᴵᴹ ¹¹ - На перый раз - деморган 5 минут, дальше - 120 минут деморгана", "2.46. Помогать на облаве посторонним лицам(стрелять, дбшить, мешать) - Варн", "2.47. Употребление неадекватных выражений, матов, оскорблений, упоминания/оскорбления родных в содержимом стадии AFK - mute 300 / ban 30-2000 дней", "2.48. АФК на ДМ Арене в деморгане с целью сокращения срока - Удвоенное наказание/бан на 3 дня", "2.49. Угон авто DFT-30, которые используются для перевозки бочек с нефтевышек(машиной механиков, копов) - 400 минут деморгана / Если игрок уже получал деморган за этот пункт, то он получает бан на 5 дней.", "2.50. Использовать любые команды для помехи игрокам(также в бою) (Показывать паспорт, piss, kiss, iznas и т.п.) - 60-150 минут деморгана", "2.51. Во время каких-либо ивентов на сервере(будь то обновление хеллоуина, новый год, 8 марта и др) запрещено заезжать/залетать на любых транспортных средствах на главную площадь в честь обновления, дабы не создавать помеху игрокам - Кик / при повторном нарушении 30 минут деморгана", "2.52. Использование маскировки для мафий не по назначению(Вне организованных рп ситуаций, например просто так одеться, писать в орг чат бред или прост бегать в маскировке потому что захотелось) - Warn", "2.53. Запрещён арест на ивентовых зонах.ᴾᴿᴵᴹ 12 - 300 минут деморгана/Warn", "2.54. Запрещено использовать команды /iznas и /piss (в гетто и в мафиях) - Warn" ]; function showNotification(message, color) { const notification = $(`<div style=" position: fixed; bottom: 10px; right: 10px; background-color: ${color}; color: white; padding: 10px 20px; border-radius: 5px; z-index: 9999; font-family: Comic Sans MS, sans-serif; font-size: 14px; ">${message}</div>`); $("body").append(notification); setTimeout(() => { notification.fadeOut(500, () => notification.remove()); }, 5000); } if (window.location.pathname === "/") { const username = $(".p-navgroup-link").text().trim().split("\n")[0]; showNotification( `Приветствую вас, ${username}.<br>Помощник следящих НО для<br>сервера Faraway готов к работе.<br>Версия: ${version}`, "green" ); } ///////////////////////////////////////////////////////////////////// function createbuttons() { buttonsh_add("Опра момента"); buttonsh_add("Фулл опра"); buttonsh_add("Опра принята"); buttonsh_add("Опра отказана"); buttonsh_add("Выдам наказание"); } function createNewButtonList() { buttonsh_add("Чит"); buttonsh_add("Другое"); } /////////////////////////////////////////////////////////////////////////////////////////////////// window.button_id = 0; $(".button--icon--reply").after( '<input type="button" class="button shabs" value="' + buttonname + '" id="shabs" style="margin-left: 3px;">' ); $(".button--icon--reply").after( '<input type="button" class="button shabs" value="' + newButtonName + '" id="newShabs" style="margin-left: 3px;">' ); $(".button--icon--reply").after( '<input type="button" class="button shabs" value="' + settingsButtonName + '" id="settingsButton" style="margin-left: 3px;">' ); $(document).ready(function () { $("#shabs").click(function () { $("div.overlay-container").remove(); XF.alert(`<div id="shabscontent"></div>`, buttonname); createbuttons(); }); $("#newShabs").click(function () { $("div.overlay-container").remove(); XF.alert(`<div id="newShabsContent"></div>`, newButtonName); createNewButtonList(); }); $("#settingsButton").click(function () { $("div.overlay-container").remove(); XF.alert(`<div id="settingsContent"></div>`, settingsButtonName); createSettingsMenu(); }); }); function createSettingsMenu() { const initialText = ` <div style="font-family: Comic Sans MS;"> <p>Скрипт "special for faraway".</p> <p>Версия скрипта: <span style="color: #90EE90;">${version}</span></p> <p>Разработчик скрипта: <a href="https://vk.com/chris_wayne" target="_blank" style="color: #AFEEEE;">Christopher_Wayne</a></p> <p>Помощник в разработке: <a href="https://vk.com/grsky" target="_blank" style="color: #AFEEEE;">James_Mustang</a></p> <p>Скрытие кнопок (галочка - кнопка активна):</p> <label><input type="checkbox" id="toggleNesost"> ЖБ НО</label><br> <label><input type="checkbox" id="toggleAdm"> ЖБ адм</label><br><br> <button id="saveSettings" class="button">Сохранить</button> </div> `; $("#settingsContent").html(initialText); $("#toggleNesost").prop("checked", localStorage.getItem("showNesost") !== "false"); $("#toggleAdm").prop("checked", localStorage.getItem("showAdm") !== "false"); $("#saveSettings").click(function () { const showNesost = $("#toggleNesost").is(":checked"); const showAdm = $("#toggleAdm").is(":checked"); localStorage.setItem("showNesost", showNesost); localStorage.setItem("showAdm", showAdm); toggleButtonVisibility(); showNotification("Настройки сохранены!", "green"); $("#exposeMask").click(); }); } function toggleButtonVisibility() { if (localStorage.getItem("showNesost") === "false") { $("#shabs").hide(); } else { $("#shabs").show(); } if (localStorage.getItem("showAdm") === "false") { $("#newShabs").hide(); } else { $("#newShabs").show(); } } $(document).ready(function () { toggleButtonVisibility(); }); function buttonsh_add(title) { const targetContent = $("#shabscontent, #newShabsContent"); targetContent.append( '<input type="button" class="button js-overlayClose" value="' + title + '" id="shabs_' + window.button_id + '" style="margin-top: 3px;margin-left: -5px;">' ); $(document).on("click", "#shabs_" + window.button_id, function () { let content = ""; switch (title) { case "Опра момента": let ffinalText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Опру момента 24ч[/FONT][/CENTER]`; $(".fr-element").html(ffinalText); $("#exposeMask").click(); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "Фулл опра": let finalTText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Фулл опру 24ч[/FONT][/CENTER]`; $(".fr-element").html(finalTText); $("#exposeMask").click(); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "Опра принята": let fiinalTText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Опра принята[/FONT][/CENTER]`; $(".fr-element").html(fiinalTText); $("#exposeMask").click(); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "Опра отказана": content = `<div> <label>Причина отказа:</label><br> <input type="text" id="inputReason" style="width: 100%; margin-bottom: 10px;"><br> <button id="submitReason" class="button js-overlayClose">Добавить</button> </div>`; XF.alert(content, title); $(document).on("click", "#submitReason", function () { let reason = $("#inputReason").val(); if (!reason) { showNotification("При создании ответа произошла ошибка:<br>Не добавлена причина отказа", "red"); return; } let finalText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Опра отказана<br>${reason}[/FONT][/CENTER]`; $(".fr-element").html(finalText); $("#exposeMask").click(); }); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "Выдам наказание": content = `<div> <label>Пункт правил, по которому выдается наказание (список):</label><br> <input type="text" id="searchRules" placeholder="Введите ключевые слова для поиска среди списка правил..." style="width: 100%; margin-bottom: 10px;"><br> <select id="rulesDropdown" style="width: 100%; margin-bottom: 10px;"> <option value="">Выбор пункта правил из списка</option> </select> <label>Пункт правил, по которому выдается наказание (ручной ввод):</label><br> <input type="text" id="inputRules" placeholder="Ручной ввод пункта правил..." style="width: 100%; margin-bottom: 10px;"><br> <button id="submitManualInput" class="button js-overlayClose">Добавить</button> </div>`; XF.alert(content, title); RULES_LIST.forEach(rule => { $("#rulesDropdown").append(new Option(rule, rule)); }); $(document).on("input", "#searchRules", function () { const searchValue = $(this).val().toLowerCase(); $("#rulesDropdown").empty().append(new Option("Выбор пункта правил из списка", "")); RULES_LIST.filter(rule => rule.toLowerCase().includes(searchValue)).forEach(filteredRule => { $("#rulesDropdown").append(new Option(filteredRule, filteredRule)); }); }); $(document).on("change", "#rulesDropdown", function () { if ($(this).val()) { $("#inputRules").val("").prop("disabled", true); } else { $("#inputRules").prop("disabled", false); } }); $(document).on("input", "#inputRules", function () { if ($(this).val()) { $("#rulesDropdown").val("").prop("disabled", true); } else { $("#rulesDropdown").prop("disabled", false); } }); $(document).on("click", "#submitManualInput", function () { let rules = $("#rulesDropdown").val() || $("#inputRules").val(); if (!rules) { showNotification("При создании ответа произошла ошибка:<br>Не добавлен пункт правил", "red"); return; } let finalText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Накажу игрока за:<br>${rules}[/FONT][/CENTER]`; $(".fr-element").html(finalText); $("#exposeMask").click(); }); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "Чит": content = `<div> <label>Видео-разбор вашего нарушения:</label><br> <input type="text" id="inputEvidence" style="width: 100%; margin-bottom: 10px;"><br> <label>Текст под хайдом</label><br> <input type="text" id="inputHide" style="width: 100%; margin-bottom: 10px;"><br> <button id="submitEvidence" class="button js-overlayClose">Добавить</button> </div>`; XF.alert(content, title); $(document).on("click", "#submitEvidence", function () { let evidence = $("#inputEvidence").val(); let hide = $("#inputHide").val(); if (!evidence) { showNotification("При создании ответа произошла ошибка:<br>Не добавлено доказательство нарушения", "red"); return; } let finalText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Видео-разбор вашего нарушения:<br>${evidence}<br>[USERS=Kalibr Corrigan, Alexei_Alekseev]${hide}[/USERS][/FONT][/CENTER]`; $(".fr-element").html(finalText); $("#exposeMask").click(); }); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case "Другое": content = `<div> <label>Доказательства нарушения (прикрепляем ссылку, строго полный url):</label><br> <input type="text" id="inputEvidence" style="width: 100%; margin-bottom: 10px;"><br> <button id="submitEvidence" class="button js-overlayClose">Добавить</button> </div>`; XF.alert(content, title); $(document).on("click", "#submitEvidence", function () { let evidence = $("#inputEvidence").val(); if (!evidence) { showNotification("При создании ответа произошла ошибка:<br>Не добавлено доказательство нарушения", "red"); return; } let finalText = `[CENTER][FONT=trebuchet ms]Приветствую<br>Доказательства вашего нарушения: [URL='${evidence}']*тык*[/URL][/FONT][/CENTER]`; $(".fr-element").html(finalText); $("#exposeMask").click(); }); break; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// default: showNotification("Ошибка вывода ответа №1.<br>Обратитесь к разработчику скрипта.", "red"); } }); window.button_id++; }