1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Плагин [MECH/FUN] ReActions - Что? Тогда? Иначе! [BukkitDev]

Тема в разделе "Релизы плагинов", создана пользователем fromgate, 16 июл 2013.

  1. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @BrainRTP
    Есть десяток роликов, которые отражают процесс настройки:
     
  2. StranWraith

    StranWraith Активный участник Пользователь

    Баллы:
    76
    Скорее всего.
     
  3. rukaban96

    rukaban96 Активный участник Пользователь

    Баллы:
    76
    StranWraith
    По сути Активатор это своего рода флаг,
    Вариант добавить к ITEM_WEAR флаг регион,то есть при надевании брони вызывается активатор и при условии что человек в регионе он выполняется...
    BrainRTP
    "Да, забыл! А как сделать так, что бы когда игрок выходит с сервера, когда он находиться в регионе pvp_poly2, давали бан на 3 дня?"
    Такого активатора нету
    1)Можно дать бан при входе
    2)Попробовать реализовать косвенно.Я попробую сделать , если получится отпишусь, самому интересно


     
  4. StranWraith

    StranWraith Активный участник Пользователь

    Баллы:
    76
    @rukaban96, я как то недопонял. Можно в виде команд?
     
  5. rukaban96

    rukaban96 Активный участник Пользователь

    Баллы:
    76
    "Просто тут загвоздка в том, что ITEM_WEAR является активатором, но мне нужно, чтобы он использовался как флаг, то есть проверка успешна, если одет HELMENT. Желательно командами, чтобы мне же было понятнее, синтаксис команд изучаю."
    Я могу написать в виде команд , но активатор ITEM_WEAR сработает при надевании брони а не при ее ношении-если верить описанию...
    Как вариант можно попробовать косвенно вывести то есть ли на нем эта броня или нет.
    1)То есть он сначала должен прийти в регион , там проверится есть ли у него в инвентаре такая броня
    2)если есть то например его должно переместить в некое место
    3)здесь мы проверяем отсутствие этой брони в его инвентаре(при этом он не должен иметь возможность выкинуть ее или удалить как либо из своего инвентраря кроме как надеть на себя)
    4)Если он на себя надел то делаем с ним то что вам нужно,так сказать от этого пляшем.
    Если такой вариант устроит я могу приблизительно кинуть в виде команд
     
  6. StranWraith

    StranWraith Активный участник Пользователь

    Баллы:
    76
    Нет, вроде как сразу чекается, одет ли предмет.
     
  7. rukaban96

    rukaban96 Активный участник Пользователь

    Баллы:
    76
    StranWraith
    я проверил все работает , сделал на примере нагрудника
    команды
    /react add item_wear activator 311
    /ra add activator f region region_guard
    /ra add activator r damage 1
     
  8. Lyosha12

    Lyosha12 Активный участник Пользователь

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Будет наноситься урон каждые 3 секунды в регионе, если надет нагрудник. А заказчику нужно полностью противоположное. Без флага проверки надетой брони не обойтись.

    Можно реализовать через переменную: назначать её при присутствии брони и по таймеру снимать переменную каждые 4 секунды. При чём, таймер должен запустить активатор ITEM_WEAR. А если после снятия переменной она не установилась сразу же, то таймер нужно выключать.
    Следовательно, наносить урон, когда переменная установлена и нет, когда сброшена.

    Такая схема будет работать при относительно маленьких лагах, когда каждый тик обрабатывается.

    Однако, если броня будет снята сразу после того, как переменная была удалена или установлена, то пройдёт ещё какое-то время, пока регион начнёт наносить урон.
     
  9. Korvinius

    Korvinius Активный участник Пользователь

    Баллы:
    88
    не знаю с какой версии, но вроде где то в документации, я видел что уже есть флаг ITEM_WEAR, @fromgate я не ошибаюсь?
     
  10. StranWraith

    StranWraith Активный участник Пользователь

    Баллы:
    76
    Добавить перед активатором ! и получится так, как надо.
    упд: вроде все же правильно, дамаг наносится, как противодействие или я где то ошибся? Я в переменных нуль, просто не могу в них разобраться.
    Вроде как тут должно же быть так, если игрок находится в региона region_guard, то все норм, а если он НЕ находится в сем рг, а грудак одет - наносится урон.
     
  11. Lyosha12

    Lyosha12 Активный участник Пользователь

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Что тут сложного? Установка и изменение:
    Код:
    var[_player]_set=id:NAME value:ЗНАЧЕНИЕ
    var[_player]_dec=id:NAME1 value:ЗНАЧЕНИЕ1 - Минус ЗНАЧЕНИЕ1
    var[_player]_inc=:id:NAME2 value:ЗНАЧЕНИЕ2 - Плюс ЗНАЧЕНИЕ2
    (Кстати, а как это будет реализовано в новом формате, @fromgate? Я полагаю, что количество "value" должно быть равно количеству способов описания предметов?..)
    Флаги для переменных:
    Код:
    1. VAR_EXIST. Глобальная переменная существует? Параметр: <идентификатор>
    
    2. VAR_PLAYER_EXIST. Личная переменная существует? Параметр: <идентификатор>
    
    3. VAR_COMPARE. Сравнение глобальной переменной со значением. Параметры: ID:<идентификатор> value:<значение>
    
    4. VAR_PLAYER_COMPARE. Сравнение личной переменной со значением. Параметры: ID:<идентификатор> value:<значение>
    
    5. VAR_GREATER. Глобальная переменная больше значения? Параметры: ID:<идентификатор> value:<значение>
    
    6. VAR_PLAYER_GREATER. Личная переменная больше заданного значения? Параметры: ID:<идентификатор> value:<значение>
    
    7. VAR_LOWER. Глобальная переменная ниже заданного значения? Параметры: ID:<идентификатор> value:<значение>
    
    8. VAR_PLAYER_LOWER. Личная переменная ниже заданного значения? Параметры: ID:<идентификатор> value:<значение>
    При сравнении больше\меньше ЗНАЧЕНИЕ включается. А при инверсии - нет. Это применимо и к флагу DELAY[_PLAYER]
     
  12. StranWraith

    StranWraith Активный участник Пользователь

    Баллы:
    76
    Все равно не могу понять. Саму логику переменных.
     
  13. Lyosha12

    Lyosha12 Активный участник Пользователь

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    Логика проста: есть личные и глобальные переменные. Сейчас личные можно установить только в активаторе, который выполняется по отношению к игроку, который запустил этот активатор. Глобальные же переменные можно установить откуда угодно.

    Как говорит fromgate, переменные хранят строки. Но до сих пор я их использовал или как счётчики, или как триггеры - переключатели.

    Если что-то не понятно - спрашивай. И в самых деталях, что именно не понятно, на каком этапе тестирования. Всё не может быть непонятно - что-то точно должно запомниться. Покажи проблемное место и мы расскажем решение :)
     
  14. rukaban96

    rukaban96 Активный участник Пользователь

    Баллы:
    76
    StranWraith
    Я перепутал пока сюда писал , там в действие надо добавить , я думаю принцип Вы поняли...
     
  15. Max_ASimus

    Max_ASimus Старожил Пользователь

    Баллы:
    103
    Skype:
    max-s.company
    Имя в Minecraft:
    Mr_WonderMan
    Доброго времени суток, прошу помощи. Что здесь не так? :(
    При загрузке сервера выдает такую ошибку:
    Код:
    [23:47:27 INFO]: [ReActions] Failed to load configuration from file C:\Users\╨Ъ╤
    В╨╛ - ╤В╨╛ ╨╜╨╡ ╨╖╨╜╨░╤О ╨║╤В╨╛\Desktop\Minecraft 1.8\╨Р╨║╤В╨╕╨▓╨░╤В╨╛╤А╤Л ReAct
    ions\Episode1\plugins\ReActions\Activators\E1checkpoints.yml
    [23:47:27 WARN]: org.bukkit.configuration.InvalidConfigurationException: mapping
    values are not allowed here
    in 'string', line 4, column 10:
            flags:
                 ^
    В конфиге написано следующее:
    Код:
    REGION_ENTER:
      E1Point1:
        region:e1point1
        flags:
        - VAR_PLAYER_MATCH=id:E1Point1 value:0
        actions:
        - cmd_console=holo setline E1Point1 1 &l
        - cmd_console=tm msg -stay=20 %player% &2Цель достигнута!<nl>&8Отправляйтесь к указанной точке.
        - ACTION_DELAYED=time:1s action:{CMD_CONSOLE tm msg -stay=100 %player% &6Новая цель:<nl>&8Исследуйте пещеру; убивайте встречающихся мобов .}
        - ACTION_DELAYED=time:1s action:{CMD_CONSOLE holo setline E1Point2 1 &6&l>ЦЕЛЬ}
        - VAR_PLAYER_SET=id:E1Point1 value:1
        reactions: []
     
  16. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @Max_ASimus
    Возможно, что ошибка где-то выше. Может быть незакрытая строка (проверяйте одинарные кавычки - ')
     
  17. Max_ASimus

    Max_ASimus Старожил Пользователь

    Баллы:
    103
    Skype:
    max-s.company
    Имя в Minecraft:
    Mr_WonderMan
    На сколько я понял, в файле было два активатора, перед названием второго из них нужно было убрать два пробела, я этого не заметил. Спасибо за помощь.
     
  18. Lyosha12

    Lyosha12 Активный участник Пользователь

    Баллы:
    98
    Skype:
    alexey_zyuz
    Имя в Minecraft:
    Lyosha12
    @fromgate, в флагах, где участвует предмет, должен быть ещё один параметр: точное или неточное сравнение. То есть выдавать true на все предметы, описание которых точно соответствуют тому, что указано, или которые просто подходят под описание.
    Не работает такой вариант на 0.9.4/5 :(
    Код:
    %var:donate-command-shop-%player%%
    Хотя в переменной значение есть:
    donate-command-shop-lyosha12: Esbrime
    И дело не в том, что не распознаётся мой ник с большой буквы.
     
  19. rukaban96

    rukaban96 Активный участник Пользователь

    Баллы:
    76
    Вопрос к автору , если ли активатор клика по npc?
     
  20. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Нет, такого нет. Но вполне можно пробовать средствами Citizens запускать активатор командой. По моему там такая возможность была.
    Буду ещё думать и пробовать. Сейчас сделаю поддержку параметра с именем игрока во всех флагах/действиях с переменными, но вот с плейсхоледрами надо будет подумать. Формат: %var:<имя игрока>/<id переменной>% мне не очень нравится, честно говоря.
     

Поделиться этой страницей