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

Решено Mycommand - как сделать проверку arg1

Тема в разделе "Помощь", создана пользователем xSdDVD, 11 авг 2021.

Статус темы:
Закрыта.
  1. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    Делаю РП замену команде /m на команду /pm, те кто скажут про ALIAS, пожалуйста идите с этой темы
    т.к. я сказал выше "РП замену" то есть когда человек напишет /pm в чате от его имени напишется текст
    *отправил сообщение с телефона* команда должна работать так /pm $arg1(это ник получателя) $multiarg(это уже сообщение)
    Как в $arg1 сделать проверку ника, то есть онлайн ли получатель сообщения, и ввёл ли игрок ник
    при этом нужно что бы выводилось сообщение в чат от имени игрока. ( не в broadcast!)
     
  2. Ignaacioo

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

    Баллы:
    66
    Накидал за пару секунд, вроде работает.
    Код:
    Pm:
      command: /pm
      type: RUN_COMMAND
      runcmd:
      - '$Script$%if%$CheckPlayerStatus%$arg1%isOnline%==true'
      - '$text_to_specific_player%$arg1%&8[&6Шепот&8] $multiargs'
      - '$text$&8[&6i&8] &7Вы успешно отправили сообщение.'
      - '$Script$%else%'
      - '$text$ Не в сети'
      require_all_arguments: true
      required_args: 2
      register: true
      tab_completer:
       1:
       - $player_list
     
  3. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    Я не сильно изучал mycmd, поэтому, как сделать вместо "Шёпот" ник игрока который отправил сообщение?
     
  4. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    и ещё такая проблема, когда игрок пытается написать /pm ему пишет upload_2021-8-13_12-56-23.png
    Хотя я в команде permission-required: false
     
  5. Ignaacioo

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

    Баллы:
    66
    Для команды обязательно нужно указывать пермишион. Как минимум, у меня это работает так.
     
  6. Ignaacioo

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

    Баллы:
    66
    Слушай, не знаю... Есть $player ( что на сайте описывается, как ник игрока, который ввел команду ), но если его поставить - то будет писать ник игрока, а не отправителя ( т.е. %player_name% из papi) . Можно было бы создать переменную (mycmd-variables) и менять ее значение на ник отправителя - > в отправителя поставить холдер от mycmd, который считывает значение этой переменной ( сам холдер не помню, ибо пишу ответ с телефона). Но я думаю, что есть способ легче. Ждём других советчиков, т.к. мне и самому стало интересно))
    Если способ с изменением переменной под ник отправителя тебе подходит - дай знать, кину код.
     
  7. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    Подходит такой вариант
     
  8. Ignaacioo

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

    Баллы:
    66
    Короче, спросил у товарища, там все намного проще.
    1. Изучи документацию: https://dev.bukkit.org/projects/myc...on-and-example/command-types-and-placeholders
    2. Замени $text_to_specific_player%$arg1% на $RUN_CONSOLE$/tellraw $arg1
    3. Формат для /pm задаешь через юникод: http://itpro.cz/juniconv/ (рандомный сайт)
    4. Делается там все в 7 строк (как оказалось)

    Код кидать не буду, чтобы сам разобрался в плагине.
     
  9. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    Сейчас попробую.
     
  10. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    Немного не понял 3-ий пункт ._.
     
  11. Автор темы
    xSdDVD

    xSdDVD Новичок Пользователь

    Баллы:
    11
    Спасибо сначала не понял, сделал что первое в голову пришло и сработало


    Код:
    Pm:
      command: /pm
      type: RUN_COMMAND
      runcmd:
      - '$Script$%if%$CheckPlayerStatus%$arg1%isOnline%==true'
      - '$RUN_CONSOLE$/tellraw $arg1 ["",{"text":"Private message","color":"dark_green"},{"text":" |","color":"gray"},{"text":" *","color":"dark_green"},{"text":"$multiargs","color":"white"},{"text":"*","color":"dark_green"},{"text":" (Отправитель: $player) ","color":"gray"}]'
      - '$text$'
      - '$text$&2Private message &7| &fВы успешно отправили сообщение.'
      - '$text$'
      - '$Script$%else%'
      - '$text$ '
      - '$text$&2Private message &7|&f Извините, игрока с ником &2$arg1&f нет на сервере'
      - '$text$'
      permission-required: false
      permission-node: "mycmd.pm"
      require_all_arguments: true
      required_args: 2
      register: true
      tab_completer:
       1:
       - $player_list
      error-message: |-
       &f
       &2Private message &7| &fИспользуйте &2»&f /pm [Ник игрока] [сообщение]
       &f 
     
Статус темы:
Закрыта.

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