[GUIDE] Создание бана на время @ban <игрок> <время> <причина> + @unban

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
Бан будет без причины, т.к в таком коде будет очень легко запутаться при написании.
Я еще подумала над этим. Оказалось, что добавить причину можно 2-умя блоками (Код с причиной написан таким текстом). Код:

Обработка команды (@ban <игрок> <время> <причина>):​

Событие чата → [Если имя равно (ники игроков, кто может банить) → [Если текст содержит (Сообщение игрока) (@ban) → Разделить текст на элементы (ban_temp) (Сообщение игрока) () → Получить элемент массива (ban_temp) (2) (%player%_text) → Выбрать игроков по имя равно (%player%_text) → Кикнуть игрока {Выборка} → Выбрать игрок по умолчанию → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Текущее местоположение) (Имя сущности = %player%_text) → Выбрать мобов по имя равно (%player%_text) → Добавить в конец массива (banned) (%player%_text) → Получить элемент массива (ban_temp) (3) (%player%_text) → Узнать длину текста (%player%_high_time) (%player%_text) → Отнять (%player%_high_time) - (1) → Обрезать текст (%player%_str_time) (%player%_text) (0) (%player%_high_time) → Заменить символы (%player%_int_time) (%player%_text) (%player%_str_time) () → Парсить число (%player%_int_time) (%player%_int_time) → [Если значение (%player%_str_time) == (d) → Установить * (%selected%_ban_time) (%player%_int_time) (86 400) → Установить (%player%_str_time) = (&9д&f.) ] → [Если значение (%player%_str_time) == (h) → Установить * (%selected%_ban_time) (%player%_int_time) (3 600) → Установить (%player%_str_time) = (&9ч&f.) ] → [Если значение (%player%_str_time) == (m) → Установить * (%selected%_ban_time) (%player%_int_time) (60) → Установить (%player%_str_time) = (&9мин&f.) ] → [Если значение (%player%_str_time) == (s) → Установить (%selected%_ban_time) =(%player%_int_time) → Установить (%player%_str_time) = (&9с&f.) ] → Объединить текст (%player%_ban_rule) ("@ban %selected%"; %player%_text; "&f") <Разделение пробелом> → Заменить символы в тексте (%player%_ban_rule) (Сообщение игрока) (%player%_ban_rule) → Объединить текст (%player%_text) ("&6%player% &fзабанил игрока &6%selected% &fна &6"; %player%_int_time; "&f &6"; %player%_str_time; ''&f Причина: &6"; %player%_ban_rule; "&f.") → Удалить сущность {Выборка} → Отправить сообщение (%player%_text) {Все} ] ]​

Обработка команды (@unban <игрок>):​

Событие чата → [Если имя равно (ники игроков, кто может разбанить) → [Если текст содержит (Сообщение игрока) (@unban) → Заменить символы в тексте (%player%_text) (Сообщение игрока) (@unban &f) () → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Текущее местоположение) (Имя сущности = %player%_text) → Выбрать мобов по имя равно (%player%_text) → Присвоить (%selected%_ban_time) = (0) → Обеднить тексты (%player%_text) (&fИгрок &6%player% &fразбанил игрока &6%selected%&f.) → Удалить сущность {Выборка} → Отправить сообщение (%player%_text) {Все} ] ]​

Вход игрока, запуск цикла:​

Событие вход → [Если значение (%player%_ban_time) > (0) → Кикнуть игрока {Игрок по умолчанию}] → Начать цикл (ban_timer)​

Цикл:​

Цикл (ban_timer) (600) → Получить размер массива (banned) (ban_list_size) → Вызвать функцию (ban_iter) {Синхронно}​

Функция перебора забаненых игроков:​

Функция (ban_iter) → Выбрать случайного игрока → [Если значение (ban_list_size) > (0) → Получить элемент массива (banned) (ban_list_size) (ban_list_edit) → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Любая точка координат в вашей игре) (Имя сущности = ban_list_edit) → Выбрать мобов по имя равно (ban_list_edit) → Отнять (%selected%_ban_time) - (30) → [Если значение (%selected%_ban_time) <= (0) → Отнять (ban_list_size) - (1) → Удалить элемент массива (banned) (ban_list_size)] → Удалить сущность {Выборка} → Отнять (ban_list_size) - (1) → Выбрать случайного игрока → Ждать (1) {В тиках} → Вызвать функцию (ban_iter) {Синхронно}]​

Дополнительная информация:​

Если в мире не будет игроков, то и время у забаненых идти не будет.​
Для установки блока "Разделить текст на элементы" требуется ранг "Hero".​

Примеры бана (s - секунды, m - минуты, h - часы, d - дни):​
  • @ban SashaLab7 10s test
  • @ban roman 15m Обход жизни
  • @ban ban_me_pls 100h Сам попросил
  • @ban w3ily 30d Чтобы жизнь малиной не казалась)
Значения:​
  • banned - Массив (Постоянный)
  • %selected%_ban_time, %player%_ban_time - Динамические переменные (Сохраненные)
  • ban_temp - Массив (Временный)
Скрины:​
Скрин кода:​
1683206692179.png
Пример бана:​
1683206819271.png

Можете попросить меня перекопировать код в ваш мир (если у меня не будет дел), в нем можно применять префиксы 🙃

Пример бана + Префиксы через переменные:​
1683138423228.png

Я могла чуть ошибиться, когда переписывала код в текст. Если тут есть те, кому не лень проверить, проверьте :)
 

Вложения

  • All code.png
    All code.png
    439.8 KB · Просмотры: 127
  • 1683138190506.png
    1683138190506.png
    5.7 KB · Просмотры: 123
Последнее редактирование:

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
Последнее редактирование:

_ArturikDog_

Новичок
Регистрация
4 Май 2023
Сообщения
12
Бан будет без причины, т.к в таком коде будет очень легко запутаться при написании. Код:

Обработка команды (@ban <игрок> <время>):​

Событие чата → [Если имя равно (ники игроков, кто может банить) → [Если текст содержит (Сообщение игрока) (@ban) → Разделить текст на элементы (ban_temp) (Сообщение игрока) () → Получить элемент массива (ban_temp) (2) (%player%_text) → Выбрать игроков по имя равно (%player%_text) → Кикнуть игрока {Выборка} → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Текущее местоположение) (Имя сущности = %player%_text) → Выбрать мобов по имя равно (%player%_text) → Добавить в конец массива (banned) (%player%_text) → Получить элемент массива (ban_temp) (3) (%player%_text) → Узнать длину текста (%player%_high_time) (%player%_text) → Отнять (%player%_high_time) - (1) → Обрезать текст (%player%_str_time) (%player%_text) (0) (%player%_high_time) → Заменить символы (%player%_int_time) (%player%_text) (%player%_str_time) () → Парсить число (%player%_int_time) (%player%_int_time) → [Если значение (%player%_str_time) == (d) → Установить * (%selected%_ban_time) (%player%_int_time) (86 400) → Установить (%player%_str_time) = (&9д&f.) ] → [Если значение (%player%_str_time) == (h) → Установить * (%selected%_ban_time) (%player%_int_time) (3 600) → Установить (%player%_str_time) = (&9ч&f.) ] → [Если значение (%player%_str_time) == (m) → Установить * (%selected%_ban_time) (%player%_int_time) (60) → Установить (%player%_str_time) = (&9мин&f.) ] → [Если значение (%player%_str_time) == (s) → Установить (%selected%_ban_time) =(%player%_int_time) → Установить (%player%_str_time) = (&9с&f.) ] → Обеднить текст (%player%_text) (Текст'ы: "&6%player% &fзабанил игрока &6%selected% &fна: &6"; %player%_int_time; %player%_str_time) → Отправить сообщение (%player%_text) {Все} ] ]​

Вход игрока, запуск цикла:​

Событие вход → [Если значение (%player%_ban_time) > (0) → Кикнуть игрока {Игрок по умолчанию}] → Начать цикл (ban_timer)​

Цикл:​

Цикл (ban_timer) (600) → Получить размер массива (banned) (ban_list_size) → Вызвать функцию (ban_iter) {Синхронно}​

Функция перебора забаненых игроков:​

Функция (ban_iter) → Выбрать случайного игрока → [Если значение (ban_list_size) > (0) → Получить элемент массива (banned) (ban_list_size) (ban_list_edit) → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Любая точка координат в вашей игре) (Имя сущности = ban_list_edit) → Выбрать мобов по имя равно (ban_list_edit) → Отнять (%selected%_ban_time) - (30) → [Если значение (%selected%_ban_time) <= (0) → Отнять (ban_list_size) - (1) → Удалить элемент массива (banned) (ban_list_size)] → Удалить сущность {Выборка} → Отнять (ban_list_size) - (1) → Выбрать случайного игрока → Ждать (1) {В тиках} → Вызвать функцию (ban_iter) {Синхронно}]​

Дополнительная информация:​

Если в мире не будет игроков, то и время у забаненых идти не будет.​
Для установки блока "Разделить текст на элементы" требуется ранг "Hero".​

Примеры бана (s - секунды, m - минуты, h - часы, d - дни):​
  • @ban SashaLab7 10s
  • @ban roman 15m
  • @ban ban_me_pls 100h
  • @ban w3ily 30d
Значения:​
  • banned - Массив (Постоянный)
  • %selected%_ban_time, %player%_ban_time - Динамические переменные (Сохраненные)
Скрины:​
Скрин кода:​
Пример бана:​

Можете попросить меня перекопировать код в ваш мир (если у меня не будет дел), он будет даже с причиной и в нем можно применять префиксы 🙃

Пример полного бана (@ban <игрок> <время> <причина>):​


Я могла чуть ошибиться, когда переписывала код в текст. Если тут есть те, кому не лень проверить, проверьте :)
А как сделать @unban
 

_ArturikDog_

Новичок
Регистрация
4 Май 2023
Сообщения
12
И что делать если вот любое сообщение пишу а мне пишет Игрок такой то забанил игрока такого то и это у всех и бан не работает
 

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
И что делать если вот любое сообщение пишу а мне пишет Игрок такой то забанил игрока такого то и это у всех и бан не работает
Проверяй скобки, где-то ты их упустил
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
358
Полезно для кого-то, но есть варик покруче, с работой нескольких аргументов времени (типа комбинация этих аргументов), и с причиной.
Но у моего кода есть минус, это то, что при повторном бане (без /build /play) у причины второй пробел появляется
1683209851757.png1683209885417.png
 

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
Полезно для кого-то, но есть варик покруче, с работой нескольких аргументов времени (типа комбинация этих аргументов), и с причиной.
Но у моего кода есть минус, это то, что при повторном бане (без /build /play) у причины второй пробел появляется
Посмотреть вложение 132Посмотреть вложение 133
Не вижу смысла писать на форум такой код, ибо варианта как у меня с головой хватает, да и код и так слишком большой.
А по поводу пробела, можно перед использованием команды обнулять переменные, используемые в обработке сообщения. У меня несколько раз встречался подобный баг, и этот способ всегда помогал
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
358
да и код и так слишком большой
на 1 строку больше, большой...
Сообщение объединено:

А по поводу пробела, можно перед использованием команды обнулять переменные, используемые в обработке сообщения. У меня несколько раз встречался подобный баг, и этот способ всегда помогал
0% решения, если обнулить переменную - в ней останется то самое ничего, у меня идёт через объединение через пробел, тобеж если в переменной НИЧЕГо (при этом она есть) - лишний пробел появится
 

SashaLab7

Эксперт
Регистрация
3 Май 2023
Сообщения
95
на 1 строку больше, большой...
Сообщение объединено:


0% решения, если обнулить переменную - в ней останется то самое ничего, у меня идёт через объединение через пробел, тобеж если в переменной НИЧЕГо (при этом она есть) - лишний пробел появится
Я про обнуление переменных перед самой обработкой сообщения
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
358
я сразу-же говорю, я уже обрабатываю переменные перед обработкой
 

_ArturikDog_

Новичок
Регистрация
4 Май 2023
Сообщения
12
Можешь посмотреть мой код?Когда я любое сообщение пишу хоть . то меня сразу кикает и не на время а просто кикает и я могу зайти
 

GFQ_Nazar

Гость
Регистрация
3 Май 2023
Сообщения
123
Бан будет без причины, т.к в таком коде будет очень легко запутаться при написании.
Я еще подумала над этим. Оказалось, что добавить причину можно 2-умя блоками (Код с причиной написан таким текстом). Код:

Обработка команды (@ban <игрок> <время> <причина>):​

Событие чата → [Если имя равно (ники игроков, кто может банить) → [Если текст содержит (Сообщение игрока) (@ban) → Разделить текст на элементы (ban_temp) (Сообщение игрока) () → Получить элемент массива (ban_temp) (2) (%player%_text) → Выбрать игроков по имя равно (%player%_text) → Кикнуть игрока {Выборка} → Выбрать игрок по умолчанию → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Текущее местоположение) (Имя сущности = %player%_text) → Выбрать мобов по имя равно (%player%_text) → Добавить в конец массива (banned) (%player%_text) → Получить элемент массива (ban_temp) (3) (%player%_text) → Узнать длину текста (%player%_high_time) (%player%_text) → Отнять (%player%_high_time) - (1) → Обрезать текст (%player%_str_time) (%player%_text) (0) (%player%_high_time) → Заменить символы (%player%_int_time) (%player%_text) (%player%_str_time) () → Парсить число (%player%_int_time) (%player%_int_time) → [Если значение (%player%_str_time) == (d) → Установить * (%selected%_ban_time) (%player%_int_time) (86 400) → Установить (%player%_str_time) = (&9д&f.) ] → [Если значение (%player%_str_time) == (h) → Установить * (%selected%_ban_time) (%player%_int_time) (3 600) → Установить (%player%_str_time) = (&9ч&f.) ] → [Если значение (%player%_str_time) == (m) → Установить * (%selected%_ban_time) (%player%_int_time) (60) → Установить (%player%_str_time) = (&9мин&f.) ] → [Если значение (%player%_str_time) == (s) → Установить (%selected%_ban_time) =(%player%_int_time) → Установить (%player%_str_time) = (&9с&f.) ] → Объединить текст (%player%_ban_rule) ("@ban %selected%"; %player%_text; "&f") <Разделение пробелом> → Заменить символы в тексте (%player%_ban_rule) (Сообщение игрока) (%player%_ban_rule) → Объединить текст (%player%_text) ("&6%player% &fзабанил игрока &6%selected% &fна &6"; %player%_int_time; "&f &6"; %player%_str_time; ''&f Причина: &6"; %player%_ban_rule; "&f.") → Удалить сущность {Выборка} → Отправить сообщение (%player%_text) {Все} ] ]​

Обработка команды (@unban <игрок>):​

Событие чата → [Если имя равно (ники игроков, кто может разбанить) → [Если текст содержит (Сообщение игрока) (@unban) → Заменить символы в тексте (%player%_text) (Сообщение игрока) (@unban &f) () → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Текущее местоположение) (Имя сущности = %player%_text) → Выбрать мобов по имя равно (%player%_text) → Присвоить (%selected%_ban_time) = (0) → Обеднить тексты (%player%_text) (&fИгрок &6%player% &fразбанил игрока &6%selected%&f.) → Удалить сущность {Выборка} → Отправить сообщение (%player%_text) {Все} ] ]​

Вход игрока, запуск цикла:​

Событие вход → [Если значение (%player%_ban_time) > (0) → Кикнуть игрока {Игрок по умолчанию}] → Начать цикл (ban_timer)​

Цикл:​

Цикл (ban_timer) (600) → Получить размер массива (banned) (ban_list_size) → Вызвать функцию (ban_iter) {Синхронно}​

Функция перебора забаненых игроков:​

Функция (ban_iter) → Выбрать случайного игрока → [Если значение (ban_list_size) > (0) → Получить элемент массива (banned) (ban_list_size) (ban_list_edit) → Заспавнить моба (Предмет = Яйцо призыва зомби) (Местоположение = Любая точка координат в вашей игре) (Имя сущности = ban_list_edit) → Выбрать мобов по имя равно (ban_list_edit) → Отнять (%selected%_ban_time) - (30) → [Если значение (%selected%_ban_time) <= (0) → Отнять (ban_list_size) - (1) → Удалить элемент массива (banned) (ban_list_size)] → Удалить сущность {Выборка} → Отнять (ban_list_size) - (1) → Выбрать случайного игрока → Ждать (1) {В тиках} → Вызвать функцию (ban_iter) {Синхронно}]​

Дополнительная информация:​

Если в мире не будет игроков, то и время у забаненых идти не будет.​
Для установки блока "Разделить текст на элементы" требуется ранг "Hero".​

Примеры бана (s - секунды, m - минуты, h - часы, d - дни):​
  • @ban SashaLab7 10s test
  • @ban roman 15m Обход жизни
  • @ban ban_me_pls 100h Сам попросил
  • @ban w3ily 30d Чтобы жизнь малиной не казалась)
Значения:​
  • banned - Массив (Постоянный)
  • %selected%_ban_time, %player%_ban_time - Динамические переменные (Сохраненные)
  • ban_temp - Массив (Временный)
Скрины:​
Скрин кода:​
Пример бана:​

Можете попросить меня перекопировать код в ваш мир (если у меня не будет дел), в нем можно применять префиксы 🙃

Пример бана + Префиксы через переменные:​

Я могла чуть ошибиться, когда переписывала код в текст. Если тут есть те, кому не лень проверить, проверьте :)
ладно, скопирую у друга
 

Abobus

Участник
Регистрация
13 Май 2023
Сообщения
6
Жалко что на сохраненные переменки типа %player% лимиты ОГРОМНЫе...
(Может и не только на %player% но я не чекал прочее)
 
Сверху