[c5] Herbs

Теги:
 

a4n

новичок
Добрый день девелоперы :)
Пытаюсь сейчас прикрутить хербы С5 к серверу SF. Всё вроде получилось, но есть одно НО. Для начала немного поясню... Суть в этих хербах - они падают с мобов в ньюбских локациях, такие баночки манны и hp и когда игрок подбирает их они сразу юзаються. Их 4 вида: HP,MP восстанавливающие и добавляющие к атаке п. или м. на пару минут. Так вот.. когда включен автолут всё работает отлично, но когда они падают на землю и потом подобрать то они просто сразу изчезают и еффекта нету. Вот код L2Attackable.java:
if (Rnd.get() < Config.HERB_OF_LIFE_DROP_RATE)
{
RewardItem item = new RewardItem(8154, 1);
if (Config.AUTO_LOOT_HERBS) player.doAutoLoot(this, item); // Give this or these Item(s) to the L2PcInstance that has killed the L2Attackable
else DropItem(player, item);
}
 

Т.е как видим тут если включен автолут, то выполняется player.doAutoLoot(this, item);, а если нет, то DropItem(player, item);.
Далее в L2PcInstance.java:
/**
* Adds item to inventory and send a Server->Client InventoryUpdate packet to the L2PcInstance.
* @param process : String Identifier of process triggering this action
* @param item : L2ItemInstance to be added
* @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation
* @param sendMessage : boolean Specifies whether to send message to Client about this action
/
public void addItem(String process, L2ItemInstance item, L2Object reference, boolean sendMessage)
{
...................................
if (item.getItemId()<= 8157 && item.getItemId() >= 8154)
{
IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getItemId());

if (handler == null)
_log.fine("No item handler registered for item ID " + item.getItemId() + ".");
else
handler.useItem(this, item);
}
..................................
/*

* Adds item to Inventory and send a Server->Client InventoryUpdate packet to the L2PcInstance.
* @param process : String Identifier of process triggering this action
* @param itemId : int Item Identifier of the item to be added
* @param count : int Quantity of items to be added
* @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation
* @param sendMessage : boolean Specifies whether to send message to Client about this action
*/
public void addItem(String process, int itemId, int count, L2Object reference, boolean sendMessage)
{
..................................
if (item.getItemId()<= 8157 && item.getItemId() >= 8154)
{
IItemHandler handler = ItemHandler.getInstance().getItemHandler(item.getItemId());

if (handler == null)
_log.fine("No item handler registered for item ID " + item.getItemId() + ".");
else
handler.useItem(this, item);
}

// If over capacity, trop the item
if (!isGM() && !_inventory.validateCapacity(0)) dropItem("InvDrop", item, null, true);
}
 

Вот собственно вопрос - Почему когда хербы падают на землю и потом поднять ничего не происходит, а если автолутом player.doAutoLoot(this, item); то всё работает ?
Как это исправить ?
 
+
-
edit
 
Дебаг тебе поможет... Отлаживай пошагово, найдешь ошибку. У нас принципиально иначе работает хендлер бутылок. Могу посоветовать проверить а вызывается ли хендлер вообще при подьеме с земли.
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  

a4n

новичок
Дебажить тяжело, там ничего полезного не пишется
 
+
-
edit
 
Ну так добавь вывод. А вообще существует эклипс...
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  
+
-
edit
 

mrSteam

втянувшийся
Здесь отсуствуют всякие Rewarditem, в отличии от той версии которую я видел на забугорном сайте.
Мб я туплю, но кажись проблема в этом, тут я вижу только
RewardItem item = new RewardItem(8154, 1);

А где она используется - не вижу )

Да и код тут не полный, стоилобы убрать коменты в коде и побольше выложить.

Также присоединюсь к советам Abaddon'а, стоит продебажить сервер итд итп.
Добавлю от себя, отпишись о своей проблеме там, где ты взял этот код.
Баги для читера это средство выживания Баги для админа это веревка и мыло  

a4n

новичок
Код я брал отсюда - 404 Not Found
Так же брал у Hero и КИда. Но везде оно работает только, если автопикапом, но эт лажа.
Реварды есть, они в L2Attackble.java. Хербы падают, проблема именно в паднятие и автоиспользовании.
Если doAutoLoot оно работает, а если drop(player,item) а потом dopikup который в свою очередь один фиг вызывает тот же additem то не работает =(
 

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