Войти или зарегистрироваться

Помогите [Решено] Второй аргумент сообщения

  • Автор темы Автор темы Den42
  • Дата начала Дата начала

Den42

Активный участник
Пользователь
Баллы
76
Помогите пожалуйста! Возникла такая проблема: нужно, чтобы когда игрок писал в чат "магазин 2"
, совершалось действие, но я не знаю, как мне получить второй аргумент сообщения, а именно "2". Вот код:
  1. Код:
    public void onChatSend(PlayerChatEvent e){
            Player p = e.getPlayer();
            if(e.getMessage().equals("магазин") || e.getMessage().equals("!магазин") && e.getMessage().length() == 0){
                e.setCancelled(true);
                e.getPlayer().sendMessage((Object)ChatColor.BLUE + "---------" + (Object)ChatColor.YELLOW + " МАГАЗИН " + (Object)ChatColor.BLUE + "-------");(Object)ChatColor.GREEN + "магазин2");
                if(e.getMessage().length() == 1 && /*здесь нужно получить второй арг-ент,, length(2).equals "2" не работает){
               p.sendMessage((Object)ChatColor.GREEN + "Страница 2");
            }
 
Последнее редактирование:
Помогите пожалуйста! Возникла такая проблема: нужно, чтобы когда игрок писал в чат "магазин 2"
, совершалось действие, но я не знаю, как мне получить второй аргумент сообщения, а именно "2". Вот код:

@EventHandler
public void onChatSend(PlayerChatEvent e){
Player p = e.getPlayer();
if(e.getMessage().equals("магазин") || e.getMessage().equals("!магазин") && e.getMessage().length() == 0){
e.setCancelled(true);
e.getPlayer().sendMessage((Object)ChatColor.BLUE + "---------" + (Object)ChatColor.YELLOW + " МАГАЗИН " + (Object)ChatColor.BLUE + "-------");(Object)ChatColor.GREEN + "магазин2");
if(e.getMessage().length() == 1 && /*здесь нужно получить второй арг-ент,, length(2).equals "2" не работает){
p.sendMessage((Object)ChatColor.GREEN + "Страница 2");
}
Обоже. Сделай код хотя бы читабельным.
 
Пожалуйста, пользуйтесь тегами CODE=Java для кода на Java и CODE=Yaml для конфигурационных файлов .yml.
Java:
...
String[] words = e.getMessage().split("\\s+");
if(words.length >= 2 && words[0].replace("!", "").equals("магазин"))
{
   if(words[1].equals("2")
   {
      // TO DO HERE
   }
}
...
 
Пожалуйста, пользуйтесь тегами CODE=Java для кода на Java и CODE=Yaml для конфигурационных файлов .yml.
Java:
...
String[] words = e.getMessage().split("\\s+");
if(words.length >= 2 && words[0].replace("!", "").equals("магазин"))
{
   if(words[1].equals("2")
   {
      // TO DO HERE
   }
}
...
Огромное спасибо! Только немного непонятно, почему split разделяет "\\s+"
 
Только немного непонятно, почему split разделяет "\\s+"
Потому что метод split:
java.lang.String
public String[] split(String string)

Splits this string around matches of the given regular expression.
делит строку на куски, используя в качестве разделителя регулярное выражение, в которых \s представляет собой
upload_2016-2-5_11-22-44.png
— любой возможный пробельный символ. Плюс — короткая запись квантификатора {1,}, а двойной слеш, потому что нам нужно передать слеш через строку, а по правилам C-подобных языков, его нужно экранировать (слешем), иначе это будет подстановочный символ.
 
Благодарю!
Все-равно не работает. Когда просто пишу "магазин", все нормально, а когда через пробел добавляю "купить", ничего не происходит. Вот код:
JavaScript:
    @EventHandler
    public void onChatSend(PlayerChatEvent e){
        Player p = e.getPlayer();
        ItemStack is1 = new ItemStack(Material.LEATHER_BOOTS);
        ItemMeta im1 = is1.getItemMeta();
        im1.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
        is1.setItemMeta(im1);

        ItemStack is2 = new ItemStack(Material.LEATHER_CHESTPLATE);
        ItemMeta im2 = is2.getItemMeta();
        im1.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
        is1.setItemMeta(im2);

        ItemStack is3 = new ItemStack(Material.LEATHER_HELMET);
        ItemMeta im3 = is3.getItemMeta();
        im1.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
        is1.setItemMeta(im3);

        ItemStack is4 = new ItemStack(Material.LEATHER_LEGGINGS);
        ItemMeta im4 = is4.getItemMeta();
        im1.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
        is1.setItemMeta(im4);
        if(e.getMessage().equals("магазин") || e.getMessage().equals("!магазин") && e.getMessage().length() == 0){
            e.setCancelled(true);
            e.getPlayer().sendMessage((Object)ChatColor.BLUE + "---------" + (Object)ChatColor.YELLOW + " МАГАЗИН " + (Object)ChatColor.BLUE + "-------");
            p.sendMessage((Object)ChatColor.GREEN + "Кожанный сет, защита 4" + (Object)ChatColor.YELLOW + " -" + (Object)ChatColor.RED + " 7 лвл");
            p.sendMessage((Object)ChatColor.GREEN + "Кольчужный сет, защита 3" + (Object)ChatColor.YELLOW + " -" + (Object)ChatColor.RED + " 13 лвл");
            p.sendMessage((Object)ChatColor.GREEN + "Железный сет, защита 2" + (Object)ChatColor.YELLOW + " -" + (Object)ChatColor.RED + " 19 лвл");
            p.sendMessage((Object)ChatColor.GREEN + "Алмазный сет, защита 1" + (Object)ChatColor.YELLOW + " -" + (Object)ChatColor.RED + " 30 лвл");
            p.sendMessage((Object)ChatColor.GREEN + "Алмазный сет, защита 3" + (Object)ChatColor.YELLOW + " - " + (Object)ChatColor.RED + "35 лвл");
            p.sendMessage((Object)ChatColor.GREEN + "Алмазный сет, защита 4" + (Object)ChatColor.YELLOW + " - " + (Object)ChatColor.RED + "43 лвл");
            p.sendMessage((Object)ChatColor.GRAY + "-------------------------");
            p.sendMessage((Object)ChatColor.YELLOW + "Чтобы открыть страницу 2, пиши " + (Object)ChatColor.GREEN + "магазин2");
            String[] words = e.getMessage().split("\\s+");
            if(words.length >= 2 && words[0].replace("!", "").equals("магазин")){
                if(words[1].equals("купить") && words[0].replace("!", "").equals("магазин")){
                    e.setCancelled(true);
                    p.sendMessage((Object)ChatColor.RED + "Укажите номер покупки");
                }
                if(words[2].equals("1") && words[0].replace("!", "").equals("магазин") && words[1].equals("купить")){
                   p.sendMessage((Object)ChatColor.GREEN + "Успешно!")

            }
            }
        }
 
Все-равно не работает.
Тебе не нужна больше твоя (радикально неправильная) строка
Java:
if(e.getMessage().equals("магазин") || e.getMessage().equals("!магазин") && e.getMessage().length() == 0)

Сейчас разберусь в твоём бредоватом коде :)
Проверяй: http://pastebin.com/UYPBcggE
Но делать это в чате как-то стрёмно. Лучше бы зарегал свою команду (/magazin ?), фактически ничем не отличалось бы.
 
  • if(e.getMessage().equals("магазин") || e.getMessage().equals("!магазин") && e.getMessage().length() == 0){
Вы хоть понимаете, что вы пишете?
ЕСЛИ сообщение равно "магазин" ИЛИ равно "!магазин" И сообщение ПУСТОЕ

добавляю "купить"
Понятное дело, что "магазин купить" не равно "магазин" и первое условие не исполнится.
 
Случайно написал e.getMessage().length() == 0, просто начало счета java берет с нуля, и он должен быть равен единице. Сейчас уже разобрался в этом.
Тебе не нужна больше твоя (радикально неправильная) строка
Java:
if(e.getMessage().equals("магазин") || e.getMessage().equals("!магазин") && e.getMessage().length() == 0)

Сейчас разберусь в твоём бредоватом коде :)
Проверяй: http://pastebin.com/UYPBcggE
Но делать это в чате как-то стрёмно. Лучше бы зарегал свою команду (/magazin ?), фактически ничем не отличалось бы.
Спасибо! Плагин пишу для друга(его идея магазина через чат)
 
Назад
Верх