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

Помогите [Конфиг]

Тема в разделе "Разработка плагинов для новичков", создана пользователем MrElitePro, 25 мар 2016.

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

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Возникла проблемка,когда человек пишет /setskype login его заносит в конфиг тут все так
    Код:
    Players:
      MrElitePro:
        Skype: login
    Я бы хотел сделать в конфиге строчку String Message например
    Код:
    Message: 'Твой скайп: %skype%'
    и чтобы он выводил в чат String Message,но вот тут проблема,как заменить-то данные для скайпа на %skype%
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Код:
    for (String s : this.Passport) {
                          if (s.contains("%name%")) {
                              s.replace("%name%", p.getName());
    }
    }
    Почему %name% не заменяется?
     
  4. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Попроще на верная будет.
    Код:
          Player p = e.getPlayer();
            String skype = getConfig().getString("message");
            String sk = getConfig().getString("Players."+ p.getDisplayName() + ".skype");
            p.sendMessage("" + skype.replace("%skype%",sk));
    
    [DOUBLEPOST=1458928411,1458927766][/DOUBLEPOST]Получаем игрока
    Код:
    Player p = e.getPlayer();
    
    Заносим строку message в переменою skype;
    Код:
    / String  skype = getConfig().getString("message");
    
    Заносим данные в переменою sk;
    Код:
    / String sk = getConfig().getString("Players."+ p.getDisplayName() + ".skype");
    
    Сообщения для игрока:
    Код:
      /   p.sendMessage("" + skype.replace("%skype%",sk));
    
    Заменяем в сообщение %skype% на данные они в нас есть в переменой sk
    Код:
    /  skype.replace("%skype%",sk)
    
     
  5. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Потому что строки - неизменяемый тип, и replace возвращает результат замены, а не меняет в строке.
    В общем, выше все уже написано.
     
  6. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Спасибо большое,помог очень[DOUBLEPOST=1459001596][/DOUBLEPOST]@Bohdan_Hrytsak ,а как получить String Name = getConfig().getString("Players." + p.getName());
    Код:
    Players:
      MrElitePro:
        Skype: login
     
  7. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Не понял.Если ты про то как получить имя игрока тогда почему не сделать так.
    Код:
    Sstring Name  = p.getName;
    
    Или тебе нужна чтоб другой игрок смог посмотреть информацию про игрока?
     
  8. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    И то и это :rolleyes:
     
  9. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    Ну первое бросил.Если нужна второй вариант.Тогда просто при команде /myinfo name
    Код:
    String Name = getConfig().getString("Players." + p.args[0])
    
    + сделай проверку есть ли у игрока паспорт.
     
  10. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Ок,спасибо попробую,а подскажи пожалуйста что не так тут хе-хе
    Код:
    главная команда pass {
    if ((args.length == 2) && (args[0].equalsIgnoreCase("get")))
        {
        p.sendMessage("паспорт игрока отображен");
        if (args.length == 1)
        {
        p.sendMessage("Укажите ник игрока");
        return true;
        }
        }
     
  11. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    может
    Код:
    [LIST=1]
    [*]if ((args.length == 2) || (args[0].equalsIgnoreCase("get")))
    [*]   {
    [*]     if (args.length == 1){
    
    [*]    p.sendMessage("Укажите ник игрока");
    
    [*]    return true;}
    [*]    else
    [*]   {
    [*]   p.sendMessage("паспорт игрока отображен");
    [*]   }
    [*]  }
    [/LIST]
    
    [DOUBLEPOST=1459015304,1459014931][/DOUBLEPOST]
    Твоя проверка вот такая:
    Если два значения ложь :
    Код:
    if ((args.length == 2) && (args[0].equalsIgnoreCase("get")))
    
    тогда
    Код:
    p.sendMessage("паспорт игрока отображен")
    
    а патом проверка если ник неуказан
    Код:
    if (args.length == 1)
        {
        p.sendMessage("Укажите ник игрока");
        return true;
    
     
  12. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Почему ложь? && - это ведь И
     
  13. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    && если 1 и 2 значения ложь.|| если 1 и 2 значения правда .Не так ли
     
  14. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    А вроде && - это и, а || - это или
     
  15. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    я пометил блоки. у тебя if с проверкой == 1 находится внутри блока [1], в который можно попасть, только если длина == 2, то есть код из блока [2] не выполняется никогда
     
  16. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Блин не могу преобразовать смотри вот как исправить
    Код:
    public void GetPassport(Player p)
        {
        Player GetPlayer = Bukkit.getPlayer(args[1]);
        String Name = getConfig().getString("Players." + GetPlayer.getName());
        p.sendMessage(GetPassport.replace("{Name}", GetPlayer.getName());
        }
    Player GetPlayer = Bukkit.getPlayer(args[1]); вот тут подчеркивает ошибку
     
  17. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    ета не правельное получения игрока
    Код:
    Player GetPlayer = Bukkit.getPlayer(args[1])
    
    Если нужен тот кто вел команду тогда.Брать ево из sender
     
  18. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    там команда /pass get nickname тоесть получить игрока из конфига который онлайн[DOUBLEPOST=1459090830,1459090696][/DOUBLEPOST]вот насчет онлайн-то написал проверку,а для получения игрока не знаю[DOUBLEPOST=1459090876][/DOUBLEPOST]Может args подчеркивает из-за того потому что я не сделал String[] args
     
  19. Bohdan_Hrytsak

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

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    А ты как думаеш.:eek:
     
  20. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Объясни, что ты хочешь сделать.
     
  21. Автор темы
    MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Ну а че я пишу в void onEnable() String[] args; а че дальше-то в этом string чего-то не хватает,я точно знаю,а что именно забыл вот
     

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