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

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

Discussion in 'Разработка плагинов для новичков' started by hyndorik, Mar 17, 2017.

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

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

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

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

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

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

    Trophy Points:
    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 ...
     
    Last edited: Mar 18, 2017
  5. iD3LSY

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

    Trophy Points:
    46
    Имя в Minecraft:
    opy
    Если именно с учетом того, что ты отправил самому себе, то
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

    Bukkit.getPlayer(String) делает всё за него
     
    Last edited: Mar 17, 2017
  9. iD3LSY

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

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

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

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

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

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

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

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

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

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

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

Share This Page