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

Помогите Точная проверка имени игрока

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    hyndo
    При создании плагина на запрос например, чтобы нельзя было отправить запрос самому себе делаю проверку if(sender.getName().equalsIgnoreCase(target.getName())) но если например мой ник Mon4ik и написать в аргументах Mon4ik то все будет нормально и проверка сработает, но если написать Mon, то так же все и сработает напишет что нельзя отправить запрос самому себе, как это пофиксить? Чтобы если я писал Mon то писало что игрок оффлайн
     
  2. Хостинг MineCraft
    <
  3. iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Про офлайн.
    Код:
    if(args.length == 1) {
        if(Bukkit.getPlayer(args[0]) == null) {
            sender.sendMessage("Этот игрок офлайн!");
            return true;
        }
        //Что то дальше.                 
    }
     
  4. Dymeth

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

    Баллы:
    76
    Так в телеграме же уже ответили. Сравнивай ник игрока, вводившего команду, с ником игрока, который был получен по имени:
    Player s = ...;
    String[] args = ...;
    Player p = Bukkit.getPlayer(args[0]);
    if(p == null) s.sendMessage("Игрок не найден");
    else if (s.getName().equals(p.getName())) s.sendMessage("Нельзя отправлять запрос самому себе");
    else ...
     
    Последнее редактирование: 18 мар 2017
  5. iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Если именно с учетом того, что ты отправил самому себе, то
    Код:
    if(args.length == 1) {
        if(Bukkit.getPlayer(args[0]) == null) sender.sendMessage("Этот игрок офлайн!");
        if(args[0] == ((Player)sender).getName()) sender.sendMessage("Вы не можете отправить сообщение самому себе!");
        //Что то дальше.
        return true;              
    }
     
  6. Dymeth

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

    Баллы:
    76
    1) В данном случае нельзя сравнивать строки при помощи ==, нужно .equalsIgnoreCase
    2) Никнейм может быть указан не полностью, в этом случае даже .equalsIgnoreCase вернёт false
     
  7. iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Очень сомневаюсь. Сейчас даже пойду, и проверю. А на счет того, что ник может быть неполным - да.[DOUBLEPOST=1489772790,1489772537][/DOUBLEPOST]Да. И вправду, странно. Раньше вроде как-то делал)

    Кстати, ведь у тебя тоже вроде нету темы с дописыванием ника автоматом(автоматически)?)
     
  8. Dymeth

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

    Баллы:
    76
    Читай:
    http://rubukkit.org/threads/po-chemu-ehto-znachenie-ne-ravno-ehtomu-znacheniju.130557/#post-1412900

    Bukkit.getPlayer(String) делает всё за него
     
    Последнее редактирование: 17 мар 2017
  9. iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Ну так-то сейчас я запустил тот код, который ты скидывал, и прописав мой ник без последний буквы меня просто не детектнуло. Или может я что-то неправильно понимаю!?

    Ладно. Не суть.
     
  10. Dymeth

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

    Баллы:
    76
    Забавно, но это я постоянно путаю .getPlayer и .getPlayerExact. Как раз-таки .getPlayer хавает неполные имена
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Не вижу в этот проблем, если на сервере будет игрок Mon в онлайне, все ок станет. Так что не бери в голову. Да и всегда же есть TAB который допишет ник. Если сомневаешься.
     
  12. Dymeth

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

    Баллы:
    76
    Ему нужно, чтобы игрок не мог указать собственный ник
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Так оно же и так сработает, с автозаполнением или без. Так что не играет роли никакой.
     

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