Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал Создание своих команд или CommandHelper плагин

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Tehnyla, 24 июн 2013.

?

Продолжать?

  1. Да, конечно. Плагин заинтересовал!

    71 голосов
    91,0%
  2. Брось ты это дело...

    7 голосов
    9,0%
  1. nikita229

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

    Баллы:
    103
    Имя в Minecraft:
    3JIou
    Типо можно написать, /infospawn = [текст типо чё находится] так как я понял?
     
  2. Mr Hosting
  3. bigclifty

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

    Баллы:
    76
    Можно ли как-то сделать чтобы одной командой игрок банился по нику и IP?
     
  4. bigclifty

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

    Баллы:
    76
  5. Primal

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

    Баллы:
    11
    Есть ли такая настройка, что алиас работает с табом? чтоб быстро писать команду
    И так же, чтобы ник игрока тоже работал с табом
     
  6. Flavor_Flav

    Flavor_Flav Ньюби

    Баллы:
    1
    У меня такой вопрос: Я хочу сделать чтобы по команде /ahelp, с определенным пермишеном, игроку который написал команду выдавался текст в чат. Как такое реализовать?
     
  7. Boot

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

    Баллы:
    61
    , но они имеют меньший приоритет (не только в плане перехвата, но и управления). Что-то удобнее через стандартные аллиасы сделать, но что-то не получится. На счёт переменных - без понятия, но сомневаюсь что там можно скрипты писать...

    Если надо вывести текст в ответ на эту команду:
    Код:
    /infospawn = die('Твой текст');
    (код проверен)

    Код:
    /banall $player [$message='Потому что я так решил'] = >>>   
        run ('/ban '.$player $message);
        run ('/banip '.$player $message);
        die ('Ты попытался забанить '$player);
    <<<
    
    Я до такого не дошёл. Но реализую подобное так:
    Код:
    /реальнаяКоманда [$p1] [$p2]  = >>>
        if ($p1 == 'user'){
            run(die('мояКоманда1'));
            run(die('мояКоманда2'));
        }
        else{
            run('/реальнаяКоманда '.$p1 $p2 );
        }
    <<<
    
    Т.е. по сути я фильтрую реальную команду, если /реальнаяКоманда user имяИгрока, выполняются мои команды. Табом прощёлкиваются все варианты реальной команды.

    Просто проверка на наличие права:
    Код:
    /ahelp [$command=123456789] = >>>
        if (($command == 123456789){
            die('Либо ты знаешь секретный код, либо ты забыл указать команду');
        }
        else{
            if (has_permission('myperm.'.$command)){
                run(die('Да, у тебя есть право'));
            }
            else{
                run(die('Права нет, пичалька'));
            }
        }
    <<<
    
    Если игрок введёт: /ahelp youcommand
    И у него есть право: myperm.youcommand
    Ему скажут 'Да, у тебя есть право')
    Это могут быть и стандартные команды/ права плагинов.
    Код:
    /ahelp [$command=123456789] = >>>
        if (($command == 'gm')||($command == 'gamemode')){
            if (has_permission('essentials.gamemode.creative')){
                run(die('Ты можешь переключиться в креатив'));
            }
            else{
                run(die('Тебе нельзя переключиться в креатив'));
            }
            if (has_permission('essentials.gamemode.ДругойГМ')){
                run(die('Ты можешь переключиться в ДругойГМ'));
            }
            else{
                run(die('Тебе нельзя переключиться в ДругойГМ'));
            }
        }
    <<<
    
    Если надо разные сообщения для разных команд советую посмотреть в сторону switch
     
  8. TheZefirrkka

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    Некропостер.
     
  9. Boot

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

    Баллы:
    61
    Возникла необходимость сделать одну фигню, пока рассказать не могу, так что буду импровизировать чтоб можно было понять чего я хочу...
    Предположим я захотел, чтоб через каждый час после запуска сервера одному везунчику выдавалась игровая валюта.
    Как будет запускаться - не так важно. Можно через встроенные возможности или другой плагин, не суть, хоть сам админ пусть в ручную запускает команду.
    Есть команда all_players () - она выдаст массив, из него надо будет выцепить имена, рандомно выбрать одно из них...
    И вот собственно сама моя проблема, я не знаю как определить авторизован ли человек. Не онлайн, а именно залогинен. Для авторизации использую AuthMe-5.3.2-SNAPSHOT-spigot#1707 (отсюда качал)
    Как импортировать api чтоб использовать isAuthenticated(player()) ?
    Да да да, мне нужно чтоб в скриптах commamdhelper можно было использовать api AuthMeReloaded.
    Кто знает, подскажите что делать?
     
  10. Boot

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

    Баллы:
    61
    Ну так ответил бы раньше, пока было актуально для тех кто задавал эти вопросы. Я, например, не нашёл информацию про права в русскоязычной части, а с моим знанием аглицкого и гуглтранслейт было не очень удобно разбираться. Возможно, кому-нибудь это поможет в будующем. Да, я не написал что там и как работает, просто привёл пример, но это иногда полезнее.
     
  11. alexandrage

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

    Баллы:
    173
    LoginEvent LogoutEvent RestoreSessionEvent
     
  12. Boot

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

    Баллы:
    61
    Как я понял, это на события навешивать свой код? Не разобрался...
    Решил проверять по базе данных MySQL.
    В общем сделал так:
    Код:
        @result = query(array(type: 'mysql', database: 'ИмяБД', username: 'ИмяПользователя', password: 'Пароль'), 'SELECT * FROM `authme` WHERE realname=?', @player);
        if (@result['0']['isLogged']){
            run(msg(@player.' авторизован.'));
        }
        else{
            run(msg(@player.' не авторизован.'));
        }
    
    На файле не проверял, но должно быть что-то вроде:
    Код:
        @result = query(array(type: 'sqlite', file: 'ДИСК:/путь/authme.db'), 'SELECT * FROM `authme` WHERE realname=?', @player);
        if (@result['0']['isLogged']){
            run(msg(@player.' авторизован.'));
    
        }
        else{
            run(msg(@player.' не авторизован.'));
        }
    
     
  13. TheZefirrkka

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    Это если ты плагины пишешь, то ивентами можно отслеживать регистрацию, авторизацию и тд.
     
  14. alexandrage

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

    Баллы:
    173
    Писец ты дурак. Тебе же дал ивенты аутчме.
     
  15. Boot

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

    Баллы:
    61
    И что мне с этими ивентами делать? Регистрировать переменные и держать в памяти для каждого пользователя? Если команда будет вызываться раз в час не вижу в этом смысла. Или что-то ещё? Может я не так понял? Как их в command helper использовать? Не свой плагин, а именно в скрипте. Можно пример?
    Если б разобрался с api воспользовался бы isAuthenticated(), она по идее должна сразу выдать авторизован игрок или нет, но я не смог. Что, куда, как импортировать?

    У одной и той же задачи может быть не одно решение.
    Да, возможно мой код неэффективен, но он работает, а другого я не вижу, даже примерного.
     
  16. MMM2015

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

    Баллы:
    61
    Имя в Minecraft:
    MMM2015
    И такое есть? Че же ты костылишь тогда?
     
  17. Boot

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

    Баллы:
    61
    Ну, покажи как без костылей.
     
  18. Romaha

    Romaha Ньюби

    Баллы:
    1
    я не могу,игрки не могут писать команду
     
  19. bloody_earth

    bloody_earth Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Bloody_Earth
    Кто-нибудь подскажет как заставить алиас работать с табом? К примеру, есть команда /ah view <Имя игрока>, я сделал алиас /view, но при нажатии на Tab этой команды нету, нужно писать ее в ручную, плюс при том же нажатии на таб, не вставляются имена игроков. Надеюсь, я более-менее понятно выразил свои мысли.

    Заранее спасибо тем кто откликнется.
     

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