TpaMjkee 128 Опубликовано 30 апреля, 2013 Всем доброго времени суток. Вообщем решил начать изучать азы явы кодинка именно в ла2 сфере. 3-й день копаюсь над одним кодом, и мне интересно сделать просто, чтобы если есть в инвентаре вещь с идом 57, то выводилась надпись в чате (testtesttest). Но видимо что-то я не так сделал, и не могу понять, почему не выводит. Вот код: package com.l2jfrozen.gameserver.handler.itemhandlers; import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance; import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance; import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance; public class BonusItem { public void useItem(L2PlayableInstance playable, L2ItemInstance item, L2PcInstance player) { if(player.getInventory().getInventoryItemCount(57, 0) == 1) { player.sendMessage("testesttest!"); } } } Собственно файл создал в itemhandler. Помогите пожалуйста, хочу понять свою ошибку. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
byldas 22 Опубликовано 30 апреля, 2013 if(player.getInventory().getInventoryItemCount(57, 0) == 1) { player.sendMessage("testesttest!"); } строгое условие что адена должна быть в кол-ве 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TpaMjkee 128 Опубликовано 30 апреля, 2013 if(player.getInventory().getInventoryItemCount(57, 0) == 1) { player.sendMessage("testesttest!"); } строгое условие что адена должна быть в кол-ве 1 Да, в том то и дело. В инвентаре было 2ккк денег. Удалил, выдал себе 1 адену. Текста в чате всеравно не было. Даже релог сделал - не было. В чем проблема? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Anderson 36 Опубликовано 1 мая, 2013 (изменено) useItem() Эта ф-я вызывается когда ты нажимаешь на итем а не когда он лежит. И сделайте не == 1 а >= 1 Изменено 1 мая, 2013 пользователем Anderson Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TpaMjkee 128 Опубликовано 3 мая, 2013 useItem() Эта ф-я вызывается когда ты нажимаешь на итем а не когда он лежит. И сделайте не == 1 а >= 1 public void useItem - создание нового метода, не знаю о чем вы говорите. Я мог бы написать туда любое, просто для удобства взял это. Проблема решена. Спасибо. Тему клоуз. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Relvl 26 Опубликовано 14 мая, 2013 "public void useItem" это НЕ СОЗДАНИЕ нового метода, а его объявление. Учите основы языка не про серверу, а по книгам. В данном случае этот класс - реализация интерфейса, тоесть содержит реализацию определенных в интерфейсе методов. Раз класс реализует интерфейс, то в этом классе ДОЛЖНЫ БЫТЬ указанные в интерфейсе методы. Некий класс (в данном случае хендл пакета UseItem) ищет по всем хендлам используемых итемов нужный, далее дергает за указанный в интерфейсе метод useItem() Тоесть, указанный Вами код не будет срабатывать от того, что итем находится в инвентаре, а от того, что на этот итем нажали правой кнопкой (использовали). PS: не забывайте обозначить в XML итема его хендлер (в Вашем случае BonusItem), который будет использован на юзИтем... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты