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

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

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

  1. РоманХ

    РоманХ Активный участник

    Баллы:
    61
    Всем доброго дня, начал осваивать ваш плагин, если не сложно, покажите на примере как реализовать, выдачу итема разово одному игроку, пример выдать меч по нажатию кнопки, нужно именно что бы выдавало один раз!
     
  2. SOHIGH

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

    Баллы:
    76
    Код:
    BUTTON:
      BTN:
        world: World
        x: 146
        y: 64
        z: 54
        flags:
        - VAR_PLAYER_EXIST=id:SwordBttn
        actions:
        - MESSAGE=&7Ты же знаешь, что меч можно получить всего &b1&7 раз.
        reactions:
        - VAR_PLAYER_SET=id:SwordBttn value:1
        - MESSAGE=&7Ты получил меч.
        - ITEM_GIVE=type:276 name:{&7Меч кладенец} lore:{&7Этот меч раньше использовали Богатыри.\n А теперь ты :3\n&eУчти, если ты его потеряешь - больше не получишь.}
    Координаты вставь свои.
     
    Последнее редактирование: 29 ноя 2017
  3. SOHIGH

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

    Баллы:
    76
    Здравствуйте.
    Заинтересовавшись вопросом блокировки действий игрока я попытался заблокировать игроку писать в чат, но безуспешно.
    Что в type указывать - не знаю.
    Код:
    MESSAGE:
      BLOCK_MESSAGE:
        mask: ''
        type: EQUAL
        source: CHAT_INPUT
        flags: []
        actions:
        - CANCEL_EVENT=true
        reactions: []
    Я уже знаю альтернативу решения этого, но не хочется использовать его.
    (Выдать пермишн "- - chatex.allowchat" и отменять получение сообщения от плагина о том, что у игрока нет прав)




    UPD: Возможно, нашел какую-то неисправность:
    Когда пишешь любую команду через консоль, то плагин выдает сообщение и отменяет событие.

    [ReActions] Activator command registered: Команда

    Код:
    COMMAND:
      COMMAND_BLOCKED:
        override: true
        regex: false
        command: ''
        flags:
        - VAR_PLAYER_COMPARE=id:BLOCKED value:1
        actions:
        - CANCEL_EVENT=true
     
    Последнее редактирование: 29 ноя 2017
  4. РоманХ

    РоманХ Активный участник

    Баллы:
    61
    Огромное спасибо! То есть использование флага и действия персональной переменной и координат кнопки! выходит
     
  5. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX

    Код:
    MESSAGE:
      BLOCK_MESSAGE:
        mask: '.*'
        type: REGEX
        source: CHAT_INPUT
        flags: []
        actions:
        - CANCEL_EVENT=true
        reactions: []
     
  6. SOHIGH

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

    Баллы:
    76
    Ох, спасибо
     
  7. SOHIGH

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

    Баллы:
    76
    В MySQL не силен ни как.
    Практически ничего о нем не знаю, не подскажите, как действием SQL_SELECT проверить, зарегистрирован ли игрок (например, %PLAYER_NAME%) или нет?
    Таблица в MySQL - authme

    Ах, да, странно, но почему-то плейсхолдер %CALC:% не работает в активаторе:
    Код:
      exec_player_raid:
        flags:
        - VAR_COMPARE=id:Raid value:0 player:%player%
        actions:
        - 'IF_ELSE=if:{%var:%owner%.raid%==0}
                    then:run:actions:{
                        action1:{MESSAGE=&7Рейд на игрока &c%player%&7 начат. До конца: &b10 &7минут.}
                        action2:{VAR_SET=id:Raid value:1 player:%player%}
                    }
                    else:run:actions:{
                        action1:{MESSAGE=&7Вы уже участвуете в рейде. До конца: &b%CALC:10-%varp:raidtime%%&7 минут.}
                    }'
        reactions:
        - 'MESSAGE=&7Игрока &a%player% &7уже рейдят. До конца: &b%CALC:10-%var:%player%.raidtime%%'

    Вообщем, переменная raidtime игрока = 0. raid игрока = 0
    Сообщение получаю такое:
    &7Игрока &a%player% &7уже рейдят. До конца: &b%CALC:10-0%
     
    Последнее редактирование: 30 ноя 2017
  8. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Попробуйте выполнить подсчёт за пределами действия IF_ELSE, а затем передайте в него результат. Это действие ещё сырое, там не всё работает, как надо. Также, внутри IF_ELSE нельзя изменять переменные. Нужно будет со всем этим разобраться когда-нибудь.
     
  9. SOHIGH

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

    Баллы:
    76
    Спасибо, разобрался.

    Вот тут тоже что-то не так.
    Код:
    VARIABLE:
      VAR_1:
        variable-id: 1
        personal: false
        flags: []
        actions:
        - MESSAGE=111111111111111
        reactions: []
    COMMAND:
      1:
        override: true
        regex: false
        command: 123
        flags: []
        actions:
        - VAR_INC=id:1 value:1
    
    Активатор VAR_1 не хочет работать. Как с персональными переменными, так и с глобальными :/
     
  10. SoSeDiK

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

    Баллы:
    76
    Имя в Minecraft:
    SoSeDiK
    Флаг для проверки сердец игрока?
     
  11. DyX

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

    Баллы:
    76
    Имя в Minecraft:
    GoODsPie
    Вот такой вопрос:
    Возможно-ли при помощи ReAction создать арморстенд, который виден только определённому Игроку:
     
  12. Lalki

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

    Баллы:
    66
    Ну если тебе нужно, чтобы он был виден одному из нескольких, находящихся в одном месте, игроков, то нет.
     
  13. SOHIGH

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

    Баллы:
    76
    Здравствуйте, что-то не так.
    Временные переменные не сравниваются.
    IF_ELSE=if:{%owner%==%player%}
    Действий 0.
     
  14. Neosha

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

    Баллы:
    66
    Откуда вы взяли %owner% ? Для вычисления владельца региона используется: %worldguard_region_owner%. Если используете глобальную или персональную переменную: %var:0wner% или %varp:0wner%
     
  15. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    Кто вам мешает проверить ошибки, я для этого добавил плейсхолдер %ifelsdebug%. Скорей всего проблема в том, что сравниваются строки и js-"парсер" не может понять, что это за переменная %owner%. Вам нужно обрамить %owner% и %player% кавычками, тогда ошибок не должно появится.
     
  16. SOHIGH

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

    Баллы:
    76
    Я как всегда тупой)
    Спасибо)


    VAR_TEMP_SET знакомо?)
     
    Последнее редактирование: 2 дек 2017
  17. SOHIGH

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

    Баллы:
    76
    Хм, действие выглядит так:
    Код:
        - 'IF_ELSE=if:{'%owner%'=='%player%'}
                    then:run:actions:{
                    action1:{MESSAGE=player:%owner% &7Рейдить самого себя не получится, увы.}
                    }
                    else:run:actions:{
                    action1:{IF_ELSE=if:{%var:%owner%.raid%==0}
                                        then:run:actions:{
                                            action1:{MESSAGE=player:%owner% &7Рейд на игрока &c%player%&7 начат. До конца: &b10 &7минут}
                                            action2:{VAR_SET=id:Raid value:1 player:%player%}
                                            action3:{VAR_SET=id:Raid value:1 player:%owner%}
                                            action4:{EXECUTE=activator:Exec_raid player:%player% delay:1m}
                                            }
                                        else:run:actions:{
                                            action1:{MESSAGE=player:%owner% &7Вы уже участвуете в рейде. До конца: &b%raidtime%&7 минут.}
                                            }}
                                        }'
    Плагин ругается:
    Код:
    [23:57:20 WARN]: Caused by: while scanning for the next token
    found character '%' that cannot start any token. (Do not use % for indentation)
     in 'string', line 32, column 21:
            - 'IF_ELSE=if:{'%owner%'=='%player%'}
                            ^
    Использовать %ifelsedebug% здесь не получается, т.к. активаторы не загружаются.
     
  18. maxdikiy

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

    Баллы:
    76
    Имя в Minecraft:
    maxdikiy
    У вас синтаксическая ошибка yml файла из-за вложенных кавычек. Вы закомментировали следующим образом:
    'IF_ELSE=if:{'
    %owner%
    '=='
    %player%
    '}...'
    Как видно, %owner% не закомментирован.
     
  19. SOHIGH

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

    Баллы:
    76
    Честно говоря, сам бы я не понял, как закомментировать это правильно.
    Воспользовался парсером.
    Вышло так, работает:
    Код:
        - 'IF_ELSE=if:{''%owner%''==''%player%''}
                    then:run:actions:{
                    action1:{MESSAGE=player:%owner% &7Рейдить самого себя не получится, увы.}
                    }
                    else:run:actions:{
                    action1:{IF_ELSE=if:{%var:%owner%.raid%==0}
                                        then:run:actions:{
                                            action1:{MESSAGE=player:%owner% &7Рейд на игрока &c%player%&7 начат. До конца: &b10 &7минут}
                                            action2:{VAR_SET=id:Raid value:1 player:%player%}
                                            action3:{VAR_SET=id:Raid value:1 player:%owner%}
                                            action4:{EXECUTE=activator:Exec_raid player:%player% delay:1m}
                                            }
                                        else:run:actions:{
                                            action1:{MESSAGE=player:%owner% &7Вы уже участвуете в рейде. До конца: &b%raidtime%&7 минут.}
                                            }}
                                        }'
     
  20. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    #175
    • Теперь активатор DOOR поддерживает все типы дверей (включая железные)

    Если у кого-то есть возможность проверить - буду благодарен :)
     

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