Перейти к содержанию
Авторизация  
TpaMjkee

Что Не Так? Sendmessage.

Рекомендуемые сообщения

Всем доброго времени суток.

Вообщем решил начать изучать азы явы кодинка именно в ла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.

 

Помогите пожалуйста, хочу понять свою ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

if(player.getInventory().getInventoryItemCount(57, 0) == 1)
		    {
		    player.sendMessage("testesttest!");
		    }

строгое условие что адена должна быть в кол-ве 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

if(player.getInventory().getInventoryItemCount(57, 0) == 1)
		 {
		 player.sendMessage("testesttest!");
		 }

строгое условие что адена должна быть в кол-ве 1

 

Да, в том то и дело. В инвентаре было 2ккк денег. Удалил, выдал себе 1 адену. Текста в чате всеравно не было. Даже релог сделал - не было. В чем проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

useItem()

 

Эта ф-я вызывается когда ты нажимаешь на итем а не когда он лежит. И сделайте не == 1 а >= 1

Изменено пользователем Anderson

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

useItem()

 

Эта ф-я вызывается когда ты нажимаешь на итем а не когда он лежит. И сделайте не == 1 а >= 1

 

public void useItem - создание нового метода, не знаю о чем вы говорите. Я мог бы написать туда любое, просто для удобства взял это. Проблема решена. Спасибо. Тему клоуз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"public void useItem" это НЕ СОЗДАНИЕ нового метода, а его объявление.

Учите основы языка не про серверу, а по книгам.

 

В данном случае этот класс - реализация интерфейса, тоесть содержит реализацию определенных в интерфейсе методов.

Раз класс реализует интерфейс, то в этом классе ДОЛЖНЫ БЫТЬ указанные в интерфейсе методы.

 

Некий класс (в данном случае хендл пакета UseItem) ищет по всем хендлам используемых итемов нужный, далее дергает за указанный в интерфейсе метод useItem()

 

Тоесть, указанный Вами код не будет срабатывать от того, что итем находится в инвентаре, а от того, что на этот итем нажали правой кнопкой (использовали).

 

PS: не забывайте обозначить в XML итема его хендлер (в Вашем случае BonusItem), который будет использован на юзИтем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...