L2DevsAdmins

L2 Java => [ES]Dudas / [EN]Questions => Mensaje iniciado por: lordofcaos en Junio 15, 2019, 05:57:32 pm

Título: Solicitud de Codigo para actualizar el inventario
Publicado por: lordofcaos en Junio 15, 2019, 05:57:32 pm
Buenas tardes acabo de agregar un código para que una caja me pidiera un ítem para poderla abrir ahora por lo que estoy viendo me hace falta luego de mi linea decirle al sistema que se actualice el inventario una ves consumido el ítem.
Alguien tendrá algún código para eso?
dejo el java para que lo vean


Código: [Seleccionar]
/*
 * Copyright © 2004-2019 L2J DataPack
 *
 * This file is part of L2J DataPack.
 *
 * L2J DataPack is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * L2J DataPack is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package handlers.itemhandlers;

import java.util.List;

import org.l2jdevs.Config;
import org.l2jdevs.gameserver.handler.IItemHandler;
import org.l2jdevs.gameserver.model.L2ExtractableProduct;
import org.l2jdevs.gameserver.model.actor.L2Playable;
import org.l2jdevs.gameserver.model.actor.instance.L2PcInstance;
import org.l2jdevs.gameserver.model.items.L2EtcItem;
import org.l2jdevs.gameserver.model.items.instance.L2ItemInstance;
import org.l2jdevs.gameserver.network.SystemMessageId;
import org.l2jdevs.util.Rnd;

/**
 * Extractable Items handler.
 * @author HorridoJoho
 */
public class ExtractableItems implements IItemHandler
{
@Override
public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse)
{
if (!playable.isPlayer())
{
playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS);
return false;
}

final L2PcInstance activeChar = playable.getActingPlayer();
if(activeChar.getInventory().getInventoryItemCount(57, -10) < 10)
{
activeChar.sendMessage("Necesitas 10 de ADENA para abrir esta cofre");
return false;
}

final L2EtcItem etcitem = (L2EtcItem) item.getItem();
final List<L2ExtractableProduct> exitem = etcitem.getExtractableItems();
if (exitem == null)
{
_log.info("No extractable data defined for " + etcitem);
return false;
}

// destroy item
if (!activeChar.destroyItem("Extract", item.getObjectId(), 1, activeChar, true))
{
return false;
}

boolean created = false;
for (L2ExtractableProduct expi : exitem)
{
if (Rnd.get(100000) <= expi.getChance())
{
final int min = (int) (expi.getMin() * Config.RATE_EXTRACTABLE);
final int max = (int) (expi.getMax() * Config.RATE_EXTRACTABLE);

int createItemAmount = (max == min) ? min : (Rnd.get((max - min) + 1) + min);
if (createItemAmount == 0)
{
continue;
}

if (item.isStackable() || (createItemAmount == 1))
{
activeChar.addItem("Extract", expi.getId(), createItemAmount, activeChar, true);
}
else
{
while (createItemAmount > 0)
{
activeChar.addItem("Extract", expi.getId(), 1, activeChar, true);
createItemAmount--;
}
}
created = true;

activeChar.getInventory().destroyItemByItemId("Extractable used", 25000, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25001, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25002, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25003, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25004, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25005, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25006, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25007, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25008, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25009, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25010, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25011, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25012, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 25013, 1, activeChar, true);
activeChar.getInventory().destroyItemByItemId("Extractable used", 57, 10, activeChar, true);

}
}

if (!created)
{
activeChar.sendPacket(SystemMessageId.NOTHING_INSIDE_THAT);
}
return true;
}
}
Título: Re:Solicitud de Codigo para actualizar el inventario
Publicado por: Fissban en Junio 15, 2019, 07:09:02 pm

Código: [Seleccionar]
player.sendPacket(new InventoryUpdate((player.getObjectId()));
Título: Re:Solicitud de Codigo para actualizar el inventario
Publicado por: lordofcaos en Junio 15, 2019, 08:07:13 pm
tendre que ver como adaptarlo porque me salta error
Título: Re:Solicitud de Codigo para actualizar el inventario
Publicado por: Dagger en Junio 15, 2019, 10:54:17 pm
Muestra imagen del error que te arroja por lo que deduzco a simple vista debes modificar la respuesta de fissban

player.sendPacket(new InventoryUpdate((player.getObjectId()));

 por

activeChar.sendPacket(new InventoryUpdate((activeChar.getObjectId()));