[WIP] Regions - приватим регионы

Discussion in 'Разработка плагинов' started by fromgate, 9/2/16.

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
We welcome you on our site. This site is devoted to the Nukkit project and all that is connected with him. Here you can communicate, download plugins, also many other things get acquainted! Register the account right now :3
Thread Status:
Not open for further replies.
  1. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    В общем, добрался я сегодня до своего долгостроя. Плагин Regions, надеюсь получится аналог WorldGuard'а под Nukkit.
    Плагин ещё в разработке, но уже поддерживает два флага: BREAK и BUILD.



    Для любопытствующих заливаю текущий билд, но всё естественно ещё будет доделываться и переделываься.

    Команда /rg help по идее работает (не проверял ;))
     
    M4Gn1T, Pub4Game and egr7v8 like this.
  2. mivin

    mivin Пользователь

    Messages:
    2
    Likes Received:
    0
    Minecraft:
    mivin
    Годнота.
    Ждем)))
     
  3. Bruno

    Bruno Пользователь

    Messages:
    13
    Likes Received:
    1
    Minecraft:
    Bruno
    Отличная новость!
    Каков лимит привата для игроков?
    И есть ли возможность дать разрешение другим группам в MadePerms?
     
  4. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Лимит привата пока не реализован - но будет настраиваться в конфиге ;)
    А вот насчет MadPerms вопроса не понял.
     
  5. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Вобщем повозился сегодня.
    Добавил пачку команд. Ещё столько же надо будет, судя по всему.

    • /select - Toggle selection mode
    • /select <pos1|pos2> - select current player location as point#1 or point#2
    • /region define <id> - Define new region
    • /region redefine <id> - change dimensions of region according to current selection
    • /region check - check and list all regions around you
    • /region info <id> - show region information about region
    • /region list [pageNum] - list all regions
    • /region flag <region> <flag> [rel:<relation>] <value> - configure flag for region
    • /region setowner <id> <owner>[, <owner2>..] - set owner of region (previous owners will be removed)
    • /region setowner <id> <owner>[, <owner2>..] - set owner of region (previous owners will be removed)
    • /region setmember <id> <member>[, <member2>..] - set members of region (previous members will be removed)
    • /region setowner <id> <owner>[, <owner2>..] - set owner of region (previous owners will be removed)
    • /region removemember <id> <player> - remove member from region
    • /region removowner <id> <player> - remove owner from region
    • /region remove <id> - remove defined region
    • /region help <page> - show plugin's help

    Отличие команд /rg define и /rg claim заключается в том, что первая - админская. А вторая - для пользователей (можно будет настроить "захват" только специально предназначенного для этого региона. Т.е. если к примеру Вы выдаете участки "под застройку".

    Ограничение по количеству регионов "на нос" и по их величине пока не предусмотрено.

    Пермишены расписывать пока не буду, как правило они совпадают с шаблоном "regions.<названиеКоманды>"

    Текущий вариант файла прикладываю. Это не далеко не релиз. Релиз, будет в ресурсах.
     
    Last edited: 12/2/16
  6. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Решил сегодня продолжить добавление недостающих команд. Свёл в один список все команды (вместе со всевозможными алиасами) и понял, что необходимый мимум уже готов (вот заготовка к будущей инструкции):

    Commands
    Select area
    /select​
    /sel​

    Toggles selection mode. When selection mode enabled you can use left click (with "empty hand") and right click to select first and second point of future region.

    Select player location as "point 1"/"point 2"
    /select pos1
    /select p1
    /sel pos1
    /sel p1​

    /select pos2
    /select p2
    /sel pos2
    /sel p2​



    Claim region
    /region claim [id]
    /rg claim [id]​

    Claim region. This command is allows players to claim region and become owner of the region.
    There's two modes for claiming.

    1. Claiming pre-defined regions.
      To enable this modes set paramter of config.yml "claim.claim-only-existing-regions" to true.
      Players must be able to claim regions predefined by
    Define regions
    /region define <id>
    /rg define <id>
    /rg create <id>
    /rg d <id>​

    Redefine regions
    /region redefine <id>
    /rg redefine <id>
    /rg update <id>
    /rg move <id>​



    Show region info
    /region info
    /rg info
    /rg i​

    Show info about defined region
    /rg info <id>
    /rg i <id>​

    List all regions
    /region list
    /rg list
    /rg lst​

    Configure flags of region
    /region flag <FLAG> [rel:<Relation] <value>
    /region f <FLAG> [rel:<Relation] <value>
    /rg flag <FLAG> [rel:<Relation] <value>
    /rg f <FLAG> [rel:<Relation] <value>​

    Remove flag from region
    /region flag <FLAG> clear
    /rg f <FLAG> remove
    /rg f <FLAG> rmv
    /rg f <FLAG> delete
    /rg f <FLAG> del​

    Copy default flag to region flag
    /region flag <FLAG> default
    /rg f <FLAG> default
    /rg f <FLAG> standart​

    Show help
    /region help
    /rg help
    /rg hlp​



    Set owner(s) of region
    /region setowner <id> <player 1>[, <player2>...]
    /rg setowner <id> <player 1>[, <player2>...]
    /rg setown <id> <player 1>[, <player2>...]
    /rg so <id> <player 1>[, <player2>...]​

    Add owner of regions
    /region addowner <id> <player 1>[, <player2>...]
    /rg addowner <id> <player 1>[, <player2>...]
    /rg addown <id> <player 1>[, <player2>...]
    /rg ao <id> <player 1>[, <player2>...]​

    Remove owner from region
    /region removeowner <id> <player>
    /rg removeowner <id> <player>
    /rg remowner <id> <player>
    /rg remown <id> <player>
    /rg ro <id> <player>​

    Set member of region
    /region setmember <id> <player 1>[, <player2>...]
    /rg setmember <id> <player 1>[, <player2>...]
    /rg setmem <id> <player 1>[, <player2>...]
    /rg sm <id> <player 1>[, <player2>...]
    Add member of regions
    /region addmember <id> <player 1>[, <player2>...]
    /rg addmember <id> <player 1>[, <player2>...]
    /rg addmem <id> <player 1>[, <player2>...]
    /rg am <id> <player 1>[, <player2>...]
    Remove owner
    /region removemember <id> <player>
    /rg removemember <id> <player>
    /rg remmember <id> <player>
    /rg remmem <id> <player>
    /rg rm <id> <player>

    Ну что ж. Теперь нужно добавить необходимый минимум по флагам.
     
  7. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Лимит реализован, значение - настраивается в конфиге.
    Так же реализован лимит по количеству регионов на игрока.
    Есть проверка (для команды /region claim) на наличие "пересечения" с другими регионами. Нельзя будет захватить себе часть чужого региона.
    Сделана возможность захвата предопределенных регионов: т.е. админ создает регионы/участки - а игроки могут их забирать себе (правда в этом случае они не могут захватывать произвольные территории).

    Про пермишены поясните, что имеется в виду?
     
  8. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Залил на GitHub: https://github.com/fromgate/Regions

    Поддерживаются флаги:
    • BREAK - разрушение блоков
    • BUILD - установка блоков
    • CHEST - открытие сундуков
    • PVP - получение урона от игроков (и нанесение ;))
    • LEVER - дёрганье сундуков
    • PLATE - топанье по нажимным панелям
    • DOOR - двери
    • TRAPDOOR - люки
    • GATE - врата
    • CLAIM - возможность "захватывать" регионы игроками
     
  9. M4Gn1T

    M4Gn1T Developer (Level 2)

    Messages:
    43
    Likes Received:
    14
    Minecraft:
    M4Gn1T
    Скорее всего ты хотел написать рычагов, так?
     
  10. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
  11. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Добавил флаг ENTRY - запрещает вход (и вообще движение) в регионе.
    Починил команду /region flag ;)
     
  12. Pub4Game

    Pub4Game Модератор всея Nukkit.ru Moderator

    Messages:
    62
    Likes Received:
    31
    Minecraft:
    Pub4Game
    Пожалуйста, добавь /rg pos1, /rg pos2. Также больше сообщений, когда вводишь неверные команды)). Если игрок создает регион, то он не заносится в список овнеров..( Но ты все равно молодец! Спасибо :)
     
  13. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    @pub4game
    По /rg define и не будет заноситься - это команда для админов.

    Для пользователей будет команда /claim (я решил тут обойтись без /rg) - её ещё надо отладить. Что-то я там накуролесил - не работает как надо. Сегодня будут проверять.

    Вместо /rg pos1 и /rg pos2 будут /sel pos1 и /sel pos2

    У меня есть ещё планы на команду /select (/sel) - это будет универсальный селектор территорий для разных ситуаций ;)

    Последний (на текущий момент времени) билд прилагаю - тут исправлен ряд ошибок. Перенёс проверку открытия дверей в соответствующий обработчик.

    Добавил первый текстовый флаг ENTRYMSG - можно будет назначать сообщение на вход в регион.
     
  14. Pub4Game

    Pub4Game Модератор всея Nukkit.ru Moderator

    Messages:
    62
    Likes Received:
    31
    Minecraft:
    Pub4Game
    Игорь, пойми, многие привыкли к этим командам, даже в WG они есть, а эти /sel очень неудобны и многие начинающие игроки опять будут доставить администраторов серверов с вопросами....
     
  15. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    В WG этих команд нет ;)
    Эта команда была введена из-за того что на телефонах нет нормального правого клика. Поэтому использовать wand - топорик не представляется возможным.

    Возможно я ещё переделаю механику выбора территории.
    Но вообще, я допускаю возможность, что регионы будут не только кубоидными, но и сферическими, цилиндрическими и полигональными. Будет очень странно, если при наличии команды /rg pos1 все остальные будут выполняться через /select.
    Но я не допускаю того, что сделаю под них алиас или что-то, но зацикливаться на этом смысла вообще не вижу.

    Тут есть гораздо более интересные задачи, которые надо будет решать ;)
     
    Last edited: 13/2/16
    M4Gn1T likes this.
  16. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Добавил флаг LEAVE (запрет выхода из региона - можно создать тюрьму ;)) и флаг LEAVEMSG (сообщение при выходе).
    regions-leavemsg-flag.png

    А ещё подумал и добавил события для входа/выхода из региона.
    regions-events-test.png
     
    M4Gn1T likes this.
  17. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Сами по себе заработали частицы. Я НИЧЕГО НЕ ТРОГАЛ. Месяц назад написал код для подсветки регионов частицами. Не работало - я и плюнул, решил потом разобраться.
    Сегодня внезапно я обнаружил частицы в области выделения!!!

    Я в шоке: это новое слово в программировании! ;)

    Немного доработал и процесс выделения региона теперь вполне нагляден:

    regions-selection-show.png

    P.S. Частицы видит только тот кто выделяет территорию. Остальным это не мешает.
     
    M4Gn1T likes this.
  18. M4Gn1T

    M4Gn1T Developer (Level 2)

    Messages:
    43
    Likes Received:
    14
    Minecraft:
    M4Gn1T
    Вообще огонь!:eek:
     
    fromgate likes this.
  19. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Когда выбрана только одна (первая или вторая точка), то чтобы её подсвечивать получше - сделал эффект размером побольше :)

    regions-selection-show-one-point.png
     
    M4Gn1T likes this.
  20. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    В общем дело ближется к релизу.
    Добавил:
    • Подсвечивание пересекающихся регионов (т.е. если у Вас есть есть регион в области выделения, то его границы будут подсвечены частицами).
    • Добавил ряд настроек касательно частиц в конфиг
    • Заставил алгоритм расчета пересечений работать без погрешности

    Пересекающиеся с выделением регионы подсвечиваются синими частицами. На картинке не очень наглядно, но в игре - очень даже нормально.

    regions-selection-intersection.png
     

    Attached Files:

    M4Gn1T likes this.
Thread Status:
Not open for further replies.

Share This Page