Jump to content
  • 0

[HELP] Extractable quest items bug


Question

Posted

hello,

Does any1 know how to change settings for quest item to open it with 100% chance ? because now i get system message - There was nothing inside and only 1 quest item out of all every time when i try to open extractable item. I have this problem almost with every quest.... reagent pounches, ancient tome of the demon ect.ect . atm im using l2jinfinity freya server pack

 

here is an example how my setup looks like for Ancient Parchment's

 

 

<item id="5944" type="EtcItem" name="Ancient Parchment">

<set name="icon" val="icon.etc_roll_of_paper_black_i00" />

<set name="default_action" val="capsule" />

<set name="immediate_effect" val="1" />

<set name="material" val="liquid" />

<set name="is_stackable" val="true" />

<set name="item_skill" val="2172-1" />

<skill id="2172" levels="1" name="Scroll of Giants">

<!--

Last Modify: 03.03.2011

Confirmed: CT2.5

Comments:

Description:

-->

<table name="#extractableItems">

5922,1,2.5;5923,1,2.5;5924,1,2.5;5925,1,2.5;5926,1,2.5;5927,1,2.5;5928,1,2.5;5929,1,2.5;5930,1,2.5;5931,1,2.5;5932,1,2.5;5933,1,2.5;5934,1,2.5;5935,1,2.5;5936,1,2.5;5937,1,2.5;5938,1,2.5;5939,1,2.5;5940,1,2.5;5941,1,2.5;5942,1,25;5943,1,25

</table>

<set name="capsuled_items_skill" val="#extractableItems" />

<set name="itemConsumeCount" val="1" />

<set name="operateType" val="OP_ACTIVE" />

<set name="skillType" val="EXTRACTABLE" />

<set name="target" val="TARGET_SELF" />

<cond msgId="129">

<and>

<player invSize="10" />

<player weight="80" />

</and>

</cond>

</skill>

 

 

thanks in advance

 

4 answers to this question

Recommended Posts

  • 0
Posted

I am pretty sure that problem is somewhere in Extractable.Java or ExtractableItems.Java but if i change something masterhandler doesnt load so maybe some1 would have a solution for it, here is my java files.

 

Extractable.Java

 

package handlers.skillhandlers;

 

import l2.universe.Config;

import l2.universe.gameserver.datatables.ItemTable;

import l2.universe.gameserver.handler.ISkillHandler;

import l2.universe.gameserver.model.L2ExtractableProductItem;

import l2.universe.gameserver.model.L2ExtractableSkill;

import l2.universe.gameserver.model.L2Object;

import l2.universe.gameserver.model.L2Skill;

import l2.universe.gameserver.model.actor.L2Character;

import l2.universe.gameserver.model.actor.instance.L2PcInstance;

import l2.universe.gameserver.network.SystemMessageId;

import l2.universe.gameserver.network.serverpackets.SystemMessage;

import l2.universe.gameserver.templates.skills.L2SkillType;

import l2.universe.util.Rnd;

 

/**

* @author Zoey76, based on previous version.

*/

public class Extractable implements ISkillHandler

{

private static final L2SkillType[] SKILL_IDS =

{

L2SkillType.EXTRACTABLE,

L2SkillType.EXTRACTABLE_FISH

};

 

public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)

{

if (!(activeChar instanceof L2PcInstance))

{

return;

}

 

L2ExtractableSkill exItem = skill.getExtractableSkill();

 

if (exItem == null)

{

return;

}

 

if (exItem.getProductItemsArray().length == 0)

{

_log.warning("Extractable Item Skill with no data, probably wrong/empty table with Skill Id: " + skill.getId());

return;

}

 

double rndNum = 100 * Rnd.nextDouble();

double chanceFrom = 0;

int[] createItemID = new int[20];

int[] createAmount = new int[20];

 

// calculate extraction

for (L2ExtractableProductItem expi : exItem.getProductItemsArray())

{

double chanceTo = expi.getChance();

chanceTo += chanceFrom;

if ((rndNum >= chanceFrom) && (rndNum <= chanceTo))

{

for (int i = 0; i < expi.getId().length; i++)

{

createItemID = expi.getId();

 

if (skill.getSkillType() == L2SkillType.EXTRACTABLE_FISH)

createAmount = (int) (expi.getAmmount() * Config.RATE_EXTR_FISH);

else

createAmount = expi.getAmmount();

}

break;

}

chanceFrom = chanceTo;

}

 

L2PcInstance player = (L2PcInstance) activeChar;

 

//FIXME: remove this once skill reuse will be global for main/subclass

if (player.isSubClassActive() && (skill.getReuseDelay() > 0))

{

player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.MAIN_CLASS_SKILL_ONLY));

player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED).addSkillName(skill));

return;

}

 

if ((createItemID[0] <= 0) || (createItemID.length == 0))

{

if (exItem.useMessage())

player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOTHING_INSIDE_THAT));

return;

}

else

{

for (int i = 0; i < createItemID.length; i++)

{

if (createItemID <= 0)

{

continue;

}

 

if (ItemTable.getInstance().createDummyItem(createItemID) == null)

{

_log.warning("Extractable Item Skill Id:" + skill.getId() + " createItemID " + createItemID + " doesn't have a template!");

player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOTHING_INSIDE_THAT));

return;

}

 

if (ItemTable.getInstance().createDummyItem(createItemID).isStackable())

{

player.addItem("Extract", createItemID, createAmount, targets[0], false);

}

else

{

for (int j = 0; j < createAmount; j++)

{

player.addItem("Extract", createItemID, 1, targets[0], false);

}

}

 

if (createItemID == 57)

{

SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S1_ADENA);;

sm.addNumber(createAmount);

player.sendPacket(sm);

}

else

{

SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S);;

sm.addItemName(createItemID);

if (createAmount > 1)

{

sm.addNumber(createAmount);

}

player.sendPacket(sm);

}

}

}

}

 

public L2SkillType[] getSkillIds()

{

return SKILL_IDS;

}

}

 

ExtractableItems.Java

 

package handlers.itemhandlers;

 

import java.util.List;

import java.util.logging.Logger;

 

import l2.universe.Config;

import l2.universe.gameserver.datatables.ItemTable;

import l2.universe.gameserver.handler.IItemHandler;

import l2.universe.gameserver.model.L2ExtractableProduct;

import l2.universe.gameserver.model.L2ItemInstance;

import l2.universe.gameserver.model.actor.L2Playable;

import l2.universe.gameserver.model.actor.instance.L2PcInstance;

import l2.universe.gameserver.network.SystemMessageId;

import l2.universe.gameserver.network.serverpackets.SystemMessage;

import l2.universe.gameserver.templates.item.L2EtcItem;

import l2.universe.util.Rnd;

 

 

/**

*

* @author FBIagent 11/12/2006

*

*/

 

public class ExtractableItems implements IItemHandler

{

private static Logger _log = Logger.getLogger(ItemTable.class.getName());

 

public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)

{

if (!(playable instanceof L2PcInstance))

return;

 

L2PcInstance activeChar = (L2PcInstance) playable;

 

int itemID = item.getItemId();

L2EtcItem etcitem = (L2EtcItem) item.getItem();

List<L2ExtractableProduct> exitem = etcitem.getExtractableItems();

 

if (exitem == null)

{

_log.info("No extractable data defined for "+etcitem);

return;

}

 

//destroy item

if (!activeChar.destroyItem("Extract", item.getObjectId(), 1, activeChar, true))

return;

 

boolean created= false;

 

// calculate extraction

for (L2ExtractableProduct expi : exitem)

{

if (Rnd.get(100) <= expi.getChance())

{

int min = expi.getMin();

int max = expi.getMax();

int createItemID = expi.getId();

 

if ((itemID >= 6411 && itemID <= 6518) || (itemID >= 7726 && itemID <= 7860) || (itemID >= 8403 && itemID <= 8483))

{

min *= Config.RATE_EXTR_FISH;

max *= Config.RATE_EXTR_FISH;

}

 

int createitemAmount = 0;

if (max == min)

createitemAmount = min;

else

createitemAmount = Rnd.get(max-min+1) + min;

activeChar.addItem("Extract", createItemID, createitemAmount, activeChar, true);

created = true;

}

}

 

if (!created)

{

activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOTHING_INSIDE_THAT));

}

}

}

 

 

 

  • 0
Posted

so many devs and no1 have a clue about this ? :D

 

This is like the last file ppl have to touch/touch, so don't expect too much. Plus you use a fork of L2J, and they have perhaps modify something.

 

As you said yourself, if (Rnd.get(100) <= expi.getChance()) is the place where the check is made.

 

L2ExtractableProduct is supposed to give the good chance, according to the item registered. So except if the code is (really) messed, which should make something "tilt" in your brain (like : change of fork), it's a datapack problem.

 

It takes in consideration you search in the good place too, lol.

 

I would like to give more infos, but for the moment, I didn't update my pack with that and didn't bother about to know "what's going on".

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • ⚔️ The Grand Opening Has Arrived! ⚔️ In just a few hours the gate to the eternal battlefield will be open and the war between Order and Chaos will be set once again ! Its time to claim your destiny 🔥 👉 Register now and join the fight today! 🌐 https://l2ovc.com
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock