Ir para conteúdo
  • Cadastre-se

L2J Mega Corrigido


Posts recomendados


3 minutos atrás, ~Danilo Nascimento~ disse:

Isso você tem que editar na xml do Npc, em “data/xml/npcs”, procura o id do NPC igual aparece ali e edita, aCis não da pra fazer isso pelo shift + click igual algumas packs.

Esse pack é Frozen, aCis não é igual !

ok  entendi  grato 🥰

Editado por valquiria
Link para o comentário
Compartilhar em outros sites

Agora, Arthur-cma disse:

Esse L2JMega ainda possui aquele bug da multisell da acis 😟

Se alguém souber como corrigir, por favor, poste aqui.

Sim, Acabei de testar, vo ve a  correção! Obrigado!

Link para o comentário
Compartilhar em outros sites

Source Versão Atual(Corrigido o bug de multisell com adena!)

Spoiler

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Pack Versão Atual(Corrigido o bug de multisell com adena!)

Spoiler

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Oque foi corrigido ? Bug de adena feito pelo multisell.

Video Mostrando o Bug

 

 

Video mostrando a correção!

 

Para aqueles que já tem a source e adicionaram outros mods e modificaram o core, para não perde tudo , toma a correção individual. Procure A Class MultiSellChoose.java e mude todo o arquivo !

Spoiler

/*
 * This program 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.
 * 
 * This program 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 net.sf.l2j.gameserver.network.clientpackets;

import java.util.ArrayList;
import java.util.List;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.L2Augmentation;
import net.sf.l2j.gameserver.model.actor.Npc;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.model.itemcontainer.PcInventory;
import net.sf.l2j.gameserver.model.multisell.Entry;
import net.sf.l2j.gameserver.model.multisell.Ingredient;
import net.sf.l2j.gameserver.model.multisell.PreparedListContainer;
import net.sf.l2j.gameserver.network.FloodProtectors;
import net.sf.l2j.gameserver.network.FloodProtectors.Action;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;


public class MultiSellChoose extends L2GameClientPacket
{
    // Special IDs.
    private static final int CLAN_REPUTATION = 65336;
    // private static final int PC_BANG_POINTS = 65436;
    
    private int _listId;
    private int _entryId;
    private int _amount;
    private int _transactionTax; // local handling of taxation
    
    @Override
    protected void readImpl()
    {
        _listId = readD();
        _entryId = readD();
        _amount = readD();
        _transactionTax = 0;
    }
    
    @Override
    public void runImpl()
    {
        final Player player = getClient().getActiveChar();
        if (player == null)
            return;
        
        if (!FloodProtectors.performAction(getClient(), Action.MULTISELL))
        {
            player.setMultiSell(null);
            return;
        }
        
        if (_amount < 1 || _amount > 9999)
        {
            player.setMultiSell(null);
            return;
        }
        
        final PreparedListContainer list = player.getMultiSell();
        if (list == null || list.getId() != _listId)
        {
            player.setMultiSell(null);
            return;
        }
        
        final Npc npc = player.getCurrentFolkNPC();
        if ((npc != null && !list.isNpcAllowed(npc.getNpcId())) || (npc == null && list.isNpcOnly()))
        {
            player.setMultiSell(null);
            return;
        }
        
        if (npc != null && !npc.canInteract(player))
        {
            player.setMultiSell(null);
            return;
        }
        
        final PcInventory inv = player.getInventory();
        
        for (Entry entry : list.getEntries())
        {
            if (entry.getId() == _entryId)
            {
                if (!entry.isStackable() && _amount > 1)
                {
                    player.setMultiSell(null);
                    return;
                }
                
                int slots = 0;
                long weight = 0;
                for (Ingredient e : entry.getProducts())
                {
                    if (e.getItemId() < 0)
                        continue;
                    
                    if (!e.isStackable())
                        slots += e.getItemCount() * _amount;
                    else if (player.getInventory().getItemByItemId(e.getItemId()) == null)
                        slots++;
                    
                    weight += (long)e.getItemCount() * _amount * e.getWeight();
                }
                
                if (!inv.validateCapacity(slots))
                {
                    player.sendPacket(SystemMessageId.SLOTS_FULL);
                    return;
                }
                
                if (weight > Integer.MAX_VALUE || weight < 0 || !inv.validateWeight((int)weight))
                {
                    player.sendPacket(SystemMessageId.WEIGHT_LIMIT_EXCEEDED);
                    return;
                }
                
                // Generate a list of distinct ingredients and counts in order to check if the correct item-counts are possessed by the player
                List<Ingredient> ingredientsList = new ArrayList<>(entry.getIngredients().size());
                boolean newIng;
                
                for (Ingredient e : entry.getIngredients())
                {
                    newIng = true;
                    
                    // at this point, the template has already been modified so that enchantments are properly included
                    // whenever they need to be applied. Uniqueness of items is thus judged by item id AND enchantment level
                    for (int i = ingredientsList.size(); --i >= 0;)
                    {
                        Ingredient ex = ingredientsList.get(i);
                        
                        // if the item was already added in the list, merely increment the count
                        // this happens if 1 list entry has the same ingredient twice (example 2 swords = 1 dual)
                        if (ex.getItemId() == e.getItemId() && ex.getEnchantLevel() == e.getEnchantLevel())
                        {
                            long totalCount = (long)ex.getItemCount() + e.getItemCount();
                            if (totalCount > Integer.MAX_VALUE || totalCount < 0)
                            {
                                player.sendPacket(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
                                return;
                            }
                            
                            // two same ingredients, merge into one and replace old
                            final Ingredient ing = ex.getCopy();
                            ing.setItemCount((int)totalCount);
                            ingredientsList.set(i, ing);
                            
                            newIng = false;
                            break;
                        }
                    }
                    
                    // if it's a new ingredient, just store its info directly (item id, count, enchantment)
                    if (newIng)
                        ingredientsList.add(e);
                }
                
                // now check if the player has sufficient items in the inventory to cover the ingredients' expences
                for (Ingredient e : ingredientsList)
                {
                    if (Integer.MAX_VALUE / e.getItemCount() < _amount)
                    {
                        player.sendPacket(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
                        return;
                    }
                    
                    if (e.getItemId() == CLAN_REPUTATION)
                    {
                        if (player.getClan() == null)
                        {
                            player.sendPacket(SystemMessageId.YOU_ARE_NOT_A_CLAN_MEMBER);
                            return;
                        }
                        
                        if (!player.isClanLeader())
                        {
                            player.sendPacket(SystemMessageId.ONLY_THE_CLAN_LEADER_IS_ENABLED);
                            return;
                        }
                        
                        if (player.getClan().getReputationScore() < e.getItemCount() * _amount)
                        {
                            player.sendPacket(SystemMessageId.THE_CLAN_REPUTATION_SCORE_IS_TOO_LOW);
                            return;
                        }
                    }
                    else
                    {
                        // if this is not a list that maintains enchantment, check the count of all items that have the given id.
                        // otherwise, check only the count of items with exactly the needed enchantment level
                        if (inv.getInventoryItemCount(e.getItemId(), list.getMaintainEnchantment() ? e.getEnchantLevel() : -1, false) < ((Config.ALT_BLACKSMITH_USE_RECIPES || !e.getMaintainIngredient()) ? e.getItemCount() * _amount : e.getItemCount()))
                        {
                            player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
                            return;
                        }
                    }
                }
                
                List<L2Augmentation> augmentation = new ArrayList<>();
                
                for (Ingredient e : entry.getIngredients())
                {
                    if (e.getItemId() == CLAN_REPUTATION)
                    {
                        final int amount = e.getItemCount() * _amount;
                        
                        player.getClan().takeReputationScore(amount);
                        player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_DEDUCTED_FROM_CLAN_REP).addNumber(amount));
                    }
                    else
                    {
                        ItemInstance itemToTake = inv.getItemByItemId(e.getItemId());
                        if (itemToTake == null)
                        {
                            player.setMultiSell(null);
                            return;
                        }
                        
                        if (Config.ALT_BLACKSMITH_USE_RECIPES || !e.getMaintainIngredient())
                        {
                            // if it's a stackable item, just reduce the amount from the first (only) instance that is found in the inventory
                            if (itemToTake.isStackable())
                            {
                                if (!player.destroyItem("Multisell", itemToTake.getObjectId(), (e.getItemCount() * _amount), player.getTarget(), true))
                                {
                                    player.setMultiSell(null);
                                    return;
                                }
                            }
                            else
                            {
                                // for non-stackable items, one of two scenaria are possible:
                                // a) list maintains enchantment: get the instances that exactly match the requested enchantment level
                                // b) list does not maintain enchantment: get the instances with the LOWEST enchantment level
                                
                                // a) if enchantment is maintained, then get a list of items that exactly match this enchantment
                                if (list.getMaintainEnchantment())
                                {
                                    // loop through this list and remove (one by one) each item until the required amount is taken.
                                    ItemInstance[] inventoryContents = inv.getAllItemsByItemId(e.getItemId(), e.getEnchantLevel(), false);
                                    for (int i = 0; i < (e.getItemCount() * _amount); i++)
                                    {
                                        if (inventoryContents.isAugmented())
                                            augmentation.add(inventoryContents.getAugmentation());
                                        
                                        if (!player.destroyItem("Multisell", inventoryContents.getObjectId(), 1, player.getTarget(), true))
                                        {
                                            player.setMultiSell(null);
                                            return;
                                        }
                                    }
                                }
                                else
                                // b) enchantment is not maintained. Get the instances with the LOWEST enchantment level
                                {
                                    for (int i = 1; i <= (e.getItemCount() * _amount); i++)
                                    {
                                        ItemInstance[] inventoryContents = inv.getAllItemsByItemId(e.getItemId(), false);
                                        
                                        itemToTake = inventoryContents[0];
                                        // get item with the LOWEST enchantment level from the inventory (0 is the lowest)
                                        if (itemToTake.getEnchantLevel() > 0)
                                        {
                                            for (ItemInstance item : inventoryContents)
                                            {
                                                if (item.getEnchantLevel() < itemToTake.getEnchantLevel())
                                                {
                                                    itemToTake = item;
                                                    
                                                    // nothing will have enchantment less than 0. If a zero-enchanted item is found, just take it
                                                    if (itemToTake.getEnchantLevel() == 0)
                                                        break;
                                                }
                                            }
                                        }
                                        
                                        if (!player.destroyItem("Multisell", itemToTake.getObjectId(), 1, player.getTarget(), true))
                                        {
                                            player.setMultiSell(null);
                                            return;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                
                // Generate the appropriate items
                for (Ingredient e : entry.getProducts())
                {
                    if (e.getItemId() == CLAN_REPUTATION)
                        player.getClan().addReputationScore(e.getItemCount() * _amount);
                    else
                    {
                        if (e.isStackable())
                            inv.addItem("Multisell", e.getItemId(), e.getItemCount() * _amount, player, player.getTarget());
                        else
                        {
                            for (int i = 0; i < (e.getItemCount() * _amount); i++)
                            {
                                ItemInstance product = inv.addItem("Multisell", e.getItemId(), 1, player, player.getTarget());
                                if (product != null && list.getMaintainEnchantment())
                                {
                                    if (i < augmentation.size())
                                        product.setAugmentation(new L2Augmentation(augmentation.get(i).getAugmentationId(), augmentation.get(i).getSkill()));
                                    
                                    product.setEnchantLevel(e.getEnchantLevel());
                                    product.updateDatabase();
                                }
                            }
                        }
                        
                        // msg part
                        SystemMessage sm;
                        
                        if (e.getItemCount() * _amount > 1)
                            sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S).addItemName(e.getItemId()).addNumber(e.getItemCount() * _amount);
                        else
                        {
                            if (list.getMaintainEnchantment() && e.getEnchantLevel() > 0)
                                sm = SystemMessage.getSystemMessage(SystemMessageId.ACQUIRED_S1_S2).addNumber(e.getEnchantLevel()).addItemName(e.getItemId());
                            else
                                sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_ITEM_S1).addItemName(e.getItemId());
                        }
                        player.sendPacket(sm);
                    }
                }
                player.sendPacket(new ItemList(player, false));
                
                // All ok, send success message, remove items and add final product
                player.sendPacket(SystemMessageId.SUCCESSFULLY_TRADED_WITH_NPC);
                
                StatusUpdate su = new StatusUpdate(player);
                su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
                player.sendPacket(su);
                
                // finally, give the tax to the castle...
                if (npc != null && entry.getTaxAmount() > 0)
                    npc.getCastle().addToTreasury(_transactionTax * _amount);
                
                break;
            }
        }
    }
}

Galera, muito obrigado a todos, por testarem a pack, realmente a pack é boa, mas vou dizer a todos, nossa nunca vi tanto bug numa pack assim, parece que quanto mais eles atualizam, pior fica, Continuem com os testes e reportem! Abraço!

  • Gostei 1
  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

Agora, valquiria disse:

obs: amiga ta  🥰   (((((((link  pliss!!!!)))))))))

O conteúdo está oculto, favor efetuar login ou se cadastrar!
 Source

O conteúdo está oculto, favor efetuar login ou se cadastrar!
 Pack, 

Galera nao posta nada alem de erros pq vai sumi daqui apouco a correção de tanto flood

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Christian-SDM disse:

Source Versão Atual(Corrigido o bug de multisell com adena!)

  Mostrar conteúdo oculto

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Pack Versão Atual(Corrigido o bug de multisell com adena!)

  Mostrar conteúdo oculto

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Oque foi corrigido ? Bug de adena feito pelo multisell.

Video Mostrando o Bug

 

 

Video mostrando a correção!

 

Para aqueles que já tem a source e adicionaram outros mods e modificaram o core, para não perde tudo , toma a correção individual. Procure A Class MultiSellChoose.java e mude todo o arquivo !

  Mostrar conteúdo oculto

/*
 * This program 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.
 * 
 * This program 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 net.sf.l2j.gameserver.network.clientpackets;

import java.util.ArrayList;
import java.util.List;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.L2Augmentation;
import net.sf.l2j.gameserver.model.actor.Npc;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.model.itemcontainer.PcInventory;
import net.sf.l2j.gameserver.model.multisell.Entry;
import net.sf.l2j.gameserver.model.multisell.Ingredient;
import net.sf.l2j.gameserver.model.multisell.PreparedListContainer;
import net.sf.l2j.gameserver.network.FloodProtectors;
import net.sf.l2j.gameserver.network.FloodProtectors.Action;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;


public class MultiSellChoose extends L2GameClientPacket
{
    // Special IDs.
    private static final int CLAN_REPUTATION = 65336;
    // private static final int PC_BANG_POINTS = 65436;
    
    private int _listId;
    private int _entryId;
    private int _amount;
    private int _transactionTax; // local handling of taxation
    
    @Override
    protected void readImpl()
    {
        _listId = readD();
        _entryId = readD();
        _amount = readD();
        _transactionTax = 0;
    }
    
    @Override
    public void runImpl()
    {
        final Player player = getClient().getActiveChar();
        if (player == null)
            return;
        
        if (!FloodProtectors.performAction(getClient(), Action.MULTISELL))
        {
            player.setMultiSell(null);
            return;
        }
        
        if (_amount < 1 || _amount > 9999)
        {
            player.setMultiSell(null);
            return;
        }
        
        final PreparedListContainer list = player.getMultiSell();
        if (list == null || list.getId() != _listId)
        {
            player.setMultiSell(null);
            return;
        }
        
        final Npc npc = player.getCurrentFolkNPC();
        if ((npc != null && !list.isNpcAllowed(npc.getNpcId())) || (npc == null && list.isNpcOnly()))
        {
            player.setMultiSell(null);
            return;
        }
        
        if (npc != null && !npc.canInteract(player))
        {
            player.setMultiSell(null);
            return;
        }
        
        final PcInventory inv = player.getInventory();
        
        for (Entry entry : list.getEntries())
        {
            if (entry.getId() == _entryId)
            {
                if (!entry.isStackable() && _amount > 1)
                {
                    player.setMultiSell(null);
                    return;
                }
                
                int slots = 0;
                long weight = 0;
                for (Ingredient e : entry.getProducts())
                {
                    if (e.getItemId() < 0)
                        continue;
                    
                    if (!e.isStackable())
                        slots += e.getItemCount() * _amount;
                    else if (player.getInventory().getItemByItemId(e.getItemId()) == null)
                        slots++;
                    
                    weight += (long)e.getItemCount() * _amount * e.getWeight();
                }
                
                if (!inv.validateCapacity(slots))
                {
                    player.sendPacket(SystemMessageId.SLOTS_FULL);
                    return;
                }
                
                if (weight > Integer.MAX_VALUE || weight < 0 || !inv.validateWeight((int)weight))
                {
                    player.sendPacket(SystemMessageId.WEIGHT_LIMIT_EXCEEDED);
                    return;
                }
                
                // Generate a list of distinct ingredients and counts in order to check if the correct item-counts are possessed by the player
                List<Ingredient> ingredientsList = new ArrayList<>(entry.getIngredients().size());
                boolean newIng;
                
                for (Ingredient e : entry.getIngredients())
                {
                    newIng = true;
                    
                    // at this point, the template has already been modified so that enchantments are properly included
                    // whenever they need to be applied. Uniqueness of items is thus judged by item id AND enchantment level
                    for (int i = ingredientsList.size(); --i >= 0;)
                    {
                        Ingredient ex = ingredientsList.get(i);
                        
                        // if the item was already added in the list, merely increment the count
                        // this happens if 1 list entry has the same ingredient twice (example 2 swords = 1 dual)
                        if (ex.getItemId() == e.getItemId() && ex.getEnchantLevel() == e.getEnchantLevel())
                        {
                            long totalCount = (long)ex.getItemCount() + e.getItemCount();
                            if (totalCount > Integer.MAX_VALUE || totalCount < 0)
                            {
                                player.sendPacket(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
                                return;
                            }
                            
                            // two same ingredients, merge into one and replace old
                            final Ingredient ing = ex.getCopy();
                            ing.setItemCount((int)totalCount);
                            ingredientsList.set(i, ing);
                            
                            newIng = false;
                            break;
                        }
                    }
                    
                    // if it's a new ingredient, just store its info directly (item id, count, enchantment)
                    if (newIng)
                        ingredientsList.add(e);
                }
                
                // now check if the player has sufficient items in the inventory to cover the ingredients' expences
                for (Ingredient e : ingredientsList)
                {
                    if (Integer.MAX_VALUE / e.getItemCount() < _amount)
                    {
                        player.sendPacket(SystemMessageId.YOU_HAVE_EXCEEDED_QUANTITY_THAT_CAN_BE_INPUTTED);
                        return;
                    }
                    
                    if (e.getItemId() == CLAN_REPUTATION)
                    {
                        if (player.getClan() == null)
                        {
                            player.sendPacket(SystemMessageId.YOU_ARE_NOT_A_CLAN_MEMBER);
                            return;
                        }
                        
                        if (!player.isClanLeader())
                        {
                            player.sendPacket(SystemMessageId.ONLY_THE_CLAN_LEADER_IS_ENABLED);
                            return;
                        }
                        
                        if (player.getClan().getReputationScore() < e.getItemCount() * _amount)
                        {
                            player.sendPacket(SystemMessageId.THE_CLAN_REPUTATION_SCORE_IS_TOO_LOW);
                            return;
                        }
                    }
                    else
                    {
                        // if this is not a list that maintains enchantment, check the count of all items that have the given id.
                        // otherwise, check only the count of items with exactly the needed enchantment level
                        if (inv.getInventoryItemCount(e.getItemId(), list.getMaintainEnchantment() ? e.getEnchantLevel() : -1, false) < ((Config.ALT_BLACKSMITH_USE_RECIPES || !e.getMaintainIngredient()) ? e.getItemCount() * _amount : e.getItemCount()))
                        {
                            player.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS);
                            return;
                        }
                    }
                }
                
                List<L2Augmentation> augmentation = new ArrayList<>();
                
                for (Ingredient e : entry.getIngredients())
                {
                    if (e.getItemId() == CLAN_REPUTATION)
                    {
                        final int amount = e.getItemCount() * _amount;
                        
                        player.getClan().takeReputationScore(amount);
                        player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_DEDUCTED_FROM_CLAN_REP).addNumber(amount));
                    }
                    else
                    {
                        ItemInstance itemToTake = inv.getItemByItemId(e.getItemId());
                        if (itemToTake == null)
                        {
                            player.setMultiSell(null);
                            return;
                        }
                        
                        if (Config.ALT_BLACKSMITH_USE_RECIPES || !e.getMaintainIngredient())
                        {
                            // if it's a stackable item, just reduce the amount from the first (only) instance that is found in the inventory
                            if (itemToTake.isStackable())
                            {
                                if (!player.destroyItem("Multisell", itemToTake.getObjectId(), (e.getItemCount() * _amount), player.getTarget(), true))
                                {
                                    player.setMultiSell(null);
                                    return;
                                }
                            }
                            else
                            {
                                // for non-stackable items, one of two scenaria are possible:
                                // a) list maintains enchantment: get the instances that exactly match the requested enchantment level
                                // b) list does not maintain enchantment: get the instances with the LOWEST enchantment level
                                
                                // a) if enchantment is maintained, then get a list of items that exactly match this enchantment
                                if (list.getMaintainEnchantment())
                                {
                                    // loop through this list and remove (one by one) each item until the required amount is taken.
                                    ItemInstance[] inventoryContents = inv.getAllItemsByItemId(e.getItemId(), e.getEnchantLevel(), false);
                                    for (int i = 0; i < (e.getItemCount() * _amount); i++)
                                    {
                                        if (inventoryContents.isAugmented())
                                            augmentation.add(inventoryContents.getAugmentation());
                                        
                                        if (!player.destroyItem("Multisell", inventoryContents.getObjectId(), 1, player.getTarget(), true))
                                        {
                                            player.setMultiSell(null);
                                            return;
                                        }
                                    }
                                }
                                else
                                // b) enchantment is not maintained. Get the instances with the LOWEST enchantment level
                                {
                                    for (int i = 1; i <= (e.getItemCount() * _amount); i++)
                                    {
                                        ItemInstance[] inventoryContents = inv.getAllItemsByItemId(e.getItemId(), false);
                                        
                                        itemToTake = inventoryContents[0];
                                        // get item with the LOWEST enchantment level from the inventory (0 is the lowest)
                                        if (itemToTake.getEnchantLevel() > 0)
                                        {
                                            for (ItemInstance item : inventoryContents)
                                            {
                                                if (item.getEnchantLevel() < itemToTake.getEnchantLevel())
                                                {
                                                    itemToTake = item;
                                                    
                                                    // nothing will have enchantment less than 0. If a zero-enchanted item is found, just take it
                                                    if (itemToTake.getEnchantLevel() == 0)
                                                        break;
                                                }
                                            }
                                        }
                                        
                                        if (!player.destroyItem("Multisell", itemToTake.getObjectId(), 1, player.getTarget(), true))
                                        {
                                            player.setMultiSell(null);
                                            return;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                
                // Generate the appropriate items
                for (Ingredient e : entry.getProducts())
                {
                    if (e.getItemId() == CLAN_REPUTATION)
                        player.getClan().addReputationScore(e.getItemCount() * _amount);
                    else
                    {
                        if (e.isStackable())
                            inv.addItem("Multisell", e.getItemId(), e.getItemCount() * _amount, player, player.getTarget());
                        else
                        {
                            for (int i = 0; i < (e.getItemCount() * _amount); i++)
                            {
                                ItemInstance product = inv.addItem("Multisell", e.getItemId(), 1, player, player.getTarget());
                                if (product != null && list.getMaintainEnchantment())
                                {
                                    if (i < augmentation.size())
                                        product.setAugmentation(new L2Augmentation(augmentation.get(i).getAugmentationId(), augmentation.get(i).getSkill()));
                                    
                                    product.setEnchantLevel(e.getEnchantLevel());
                                    product.updateDatabase();
                                }
                            }
                        }
                        
                        // msg part
                        SystemMessage sm;
                        
                        if (e.getItemCount() * _amount > 1)
                            sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S).addItemName(e.getItemId()).addNumber(e.getItemCount() * _amount);
                        else
                        {
                            if (list.getMaintainEnchantment() && e.getEnchantLevel() > 0)
                                sm = SystemMessage.getSystemMessage(SystemMessageId.ACQUIRED_S1_S2).addNumber(e.getEnchantLevel()).addItemName(e.getItemId());
                            else
                                sm = SystemMessage.getSystemMessage(SystemMessageId.EARNED_ITEM_S1).addItemName(e.getItemId());
                        }
                        player.sendPacket(sm);
                    }
                }
                player.sendPacket(new ItemList(player, false));
                
                // All ok, send success message, remove items and add final product
                player.sendPacket(SystemMessageId.SUCCESSFULLY_TRADED_WITH_NPC);
                
                StatusUpdate su = new StatusUpdate(player);
                su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
                player.sendPacket(su);
                
                // finally, give the tax to the castle...
                if (npc != null && entry.getTaxAmount() > 0)
                    npc.getCastle().addToTreasury(_transactionTax * _amount);
                
                break;
            }
        }
    }
}

Galera, muito obrigado a todos, por testarem a pack, realmente a pack é boa, mas vou dizer a todos, nossa nunca vi tanto bug numa pack assim, parece que quanto mais eles atualizam, pior fica, Continuem com os testes e reportem! Abraço!

Top demais cara! E parabéns pela agilidade na resposta e resolução do problema!

Estou indo trabalhar agora, mas assim que retornar irei fazer o teste. Valeu!

 

Link para o comentário
Compartilhar em outros sites

Galera , a Class que eu botei no spoiler, MultiSellChoose, eu botei a que eu tava modificando.... Aqui a correta, Membro no facebook me chamou e me alertou ^^  a da source já ta corrigida! Essa diff é só para aqueles q usam a versão anterior e editaram ao seu gosto! (pra lembrar, quem adicionou a config do pc bang no multisellchoose, tera que adicionar novamente ^^)

Spoiler

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Editado por Christian-SDM
Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Christian-SDM disse:

Galera , a Class que eu botei no spoiler, MultiSellChoose, eu botei a que eu tava modificando.... Aqui a correta, Membro no facebook me chamou e me alertou ^^  a da source já ta corrigida! Essa diff é só para aqueles q usam a versão anterior e editaram ao seu gosto! (pra lembrar, quem adicionou a config do pc bang no multisellchoose, tera que adicionar novamente ^^)

  Ocultar conteúdo

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Mano fiz o teste não tem esse bug da adena, sendo que não estou usando a multisell consumables que veio no gm shop com o pack, estou usando a multisell do buylist (Source v4 ainda) 

Editado por Albeci Nogueira

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Agora, Albeci Nogueira disse:

Mano fiz o teste não tem esse bug da adena, sendo que não estou usando a multisell consumables que veio no gm shop com o pack, estou usando a multisell do buylist (Pack 4 ainda) 

Buylist não é multisell

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Christian-SDM disse:

Buylist não é multisell

é como se fosse uma multisell.. uso no gmshop pra comprar os itens por adenas. e não tem esse bug por ele, depois vou testar usando a multisell

Editado por Albeci Nogueira

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Agora, Albeci Nogueira disse:

é como se fosse uma multisell.. uso no gmshop pra comprar os itens por adenas. e não tem esse bug por ele, depois vou testar usando a multisell

amigo, não é mesma coisa buylist para multisell, buylist é  o sistema padrão do servidor, que vc clica 2 vez no item aparece quantidade e o valor, multisell, é xml, é outro tipo de formato, o bug é feito pelo multisell, olha video que vc vai entende amigo, não confuda multisell com buylist ^^ e não vamos floodar por nada xD

Link para o comentário
Compartilhar em outros sites

Amigos disculpen otra vez es que hasta ahora no puedo arreglar mi problema, trate de hacerlo solo pero ya me di por vencido.

 

Necesito un PARCHE para poder entrar al server. Utilizo en Parche "Dev versión 2.7" y se me queda en el gameserver, no pasa de allí.

Luego descargue un "system100%funcional qualquer nome" y si llego a entrar con este parche pero veo en los custom ítems ICONOS NEGROS.

Por favor amigos ayúdenme.

utilizo en Windows 10 por si este tiene la culpa. Muchas gracias a todos.

Link para o comentário
Compartilhar em outros sites

Source Atualizada 31/01/2019 as 12:20

Spoiler

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Pack Atualizada 31/01/2019 as 12:20

Spoiler

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Arquivo individual para quem ja modificou o core para uso proprío. Procure por Attackable.java e troque todo arquivo.

Spoiler

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Oque foi modificado? XP VIP, O Personagem, não estava recebendo xp

Reportado por @Ar4gorn Obrigado!

 

Editado por Christian-SDM
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Christian-SDM disse:

Source Atualizada 31/01/2019 as 12:20

  Mostrar conteúdo oculto

Pack Atualizada 31/01/2019 as 12:20

  Mostrar conteúdo oculto

Arquivo individual para quem ja modificou o core para uso proprío. Procure por Attackable.java e troque todo arquivo.

  Mostrar conteúdo oculto

Oque foi modificado? XP VIP, O Personagem, não estava recebendo xp

Reportado por @Ar4gorn Obrigado!

 

Atualizo o post principal ou vai fazer mais alguma alteração?

mace2.png

Link para o comentário
Compartilhar em outros sites

15 minutos atrás, Christian-SDM disse:

por enquanto não ha mais nada reportado @NetinhOO é só isso por enquanto obrigado!

Mano, percebi também que quando vc ativa a opção para o user ver o doplist dos mobs, ai o player vai lá Shift+Clique aparece as informações normais do mob, mas quando clica no botão pra mostrar os drop não aparece nada e janela fecha.

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Christian-SDM disse:

por enquanto não ha mais nada reportado @NetinhOO é só isso por enquanto obrigado!

Mano, percebi também que quando vc ativa a opção para o user ver o doplist dos mobs, ai o player vai lá Shift+Clique aparece as informações normais do mob, mas quando clica no botão pra mostrar os drop não aparece nada e janela fecha.

Outras coisa que vi tbm, meu char adm paralisou não andava mais, não fazia nada, fui ver o console:

image.png.0b7d812279156cd23562536c313b8cd8.png

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Agora, Albeci Nogueira disse:

Mano, percebi também que quando vc ativa a opção para o user ver o doplist dos mobs, ai o player vai lá Shift+Clique aparece as informações normais do mob, mas quando clica no botão pra mostrar os drop não aparece nada e janela fecha.

Outras coisa que vi tbm, meu char adm paralisou não andava mais, não fazia nada, fui ver o console:

image.png.0b7d812279156cd23562536c313b8cd8.png

isso coisa do range e ultrapassou o limite por fazer alguma ação, testo com admin faz tempo, nunca deu esse problema, e shift clique com char normal ? isso nem divia te na pack. Se tem, deve ta incompleto o mod

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Christian-SDM disse:

isso coisa do range e ultrapassou o limite por fazer alguma ação, testo com admin faz tempo, nunca deu esse problema, e shift clique com char normal ? isso nem divia te na pack. Se tem, deve ta incompleto o mod

muitos servidores tem essa opção, para o player ver os drops que o mob tem.

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Agora, Albeci Nogueira disse:

muitos servidores tem essa opção, para o player ver os drops que o mob tem.

isso é mod, se quer o mod amigo, tem q adicionar, ate mesmo eu não sabia disso, ja falei, vou cuidar dos bugs da pack somente, só arrumei o vip, porque eu adicionei.  Mas ve se não é a system q vc usa, tenta outra system, mas me diz, onde ativa isso? vou ve aqui

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.






×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.