Daedra: Все сообщения за 8 Июня 2007 года

 
ПнВтСрЧтПтСбВс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

Daedra

новичок

Если у игрока нету древней адены, то Priest телепортирует в катакомбы бесплатно.
Исправляется так:
Файл D:\L2Fortress\L2_Fortress\java\l2f\gameserver\model\instances\L2SignsPriestInstance.java
класс L2SignsPriestInstance
метод onBypassFeedback
Если я правильно понял строка 101
int ancientAdenaAmount = ancientAdena == null ? 0 : ancientAdena.getCount();
в переменной ancientAdenaAmount сохраняется количество древней адены в инвенторе игрока
Далее строка 394 - обработка команды телепорта в катакомбы:
 if(ancientAdenaCost > 0) { L2ItemInstance temp = player.getInventory().findItemByItemId(SevenSigns.ANCIENT_ADENA_ID); if(temp != null && ancientAdenaCost > temp.getCount()) { player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA)); break; } player.getInventory().destroyItemByItemId(SevenSigns.ANCIENT_ADENA_ID, ancientAdenaCost, true, true); } 

Ошибка кроется во втором условии, temp != null т.е. если древней нету вообще, то ничего и не забирается.
Этот код можно упростить так, одновременно исправляя ошибку бесплатного телепорта:
 if(ancientAdenaCost > 0) { if(ancientAdenaCost > ancientAdenaAmount) { player.sendPacket(new SystemMessage(SystemMessage.YOU_DO_NOT_HAVE_ENOUGH_ADENA)); break; } player.getInventory().destroyItemByItemId(SevenSigns.ANCIENT_ADENA_ID, ancientAdenaCost, true, true); } 

Т.к. правильное количество древней, с учетом ее отсутствия вообще, мы получили выше по коду.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru