Jump to content

Recommended Posts

Posted (edited)

Hello Folks.
Here is a code for items that bestow augment skills by double click. Code is for L2jfrozen but is very easy to adapt everywhere.
Credits: Gabrieljdb.

+ Some Features and fixed from Yo_Sarada and me.

Java Part:

Spoiler

config/head/other.properties
==========================================================

+
+# ----------------------
+# Augment Custom Items -
+# ----------------------
+# Augment weapon with active or passive skill.
+# True = Enable / False = Disable
+AugmentCustomItem = True
+
+# Augment Active Items:
+ActCheerItemID = 13001
+ActBlessBodyItemID = 13002
+ActBlessSoulItemID = 13003
+ActMightItemID = 13004
+ActEmpowerItemID = 13005
+ActDuelMightItemID = 13006
+ActShieldItemID = 13007
+ActMagicBarrierItemID = 13008
+ActAgilityItemID = 13009
+ActGuidanceItemID = 13010
+ActFocusItemID = 13011
+ActWildMagicItemID = 13012
+
+ActRecallItemID = 13013
+ActUnlockItemID = 13014
+ActCelestShieldItemID = 13015
+ActHealItemID = 13016
+
+# Augment Passive Items:
+PasMightItemID = 13021
+PasEmpowerItemID = 13022
+PasDuelMightItemID = 13023
+PasShieldItemID = 13024
+PasMagicBarrierItemID = 13025
+PasAgilityItemID = 13026
+PasGuidanceItemID = 13027
+PasFocusItemID = 13028
+PasWildMagicItemID = 13029
+


head-src/com/l2jfrozen/Config.java
==========================================================

     public static String CHAT_FILTER_CHARS;
     public static String CHAT_FILTER_PUNISHMENT;
     public static ArrayList<String> FILTER_LIST = new ArrayList<>();
+    //AugmentCustomItem
+    public static boolean AUGMENT_CUSTOM_ITEM;
+    public static int AUGMENT_ACTIVE_CHEER_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_BLESS_BODY_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_BLESS_SOUL_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_MIGHT_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_EMPOWER_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_DUEL_MIGHT_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_SHIELD_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_AGILITY_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_GUIDANCE_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_FOCUS_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_WILD_MAGIC_CUSTOM_ITEM_ID;
     
+    public static int AUGMENT_ACTIVE_RECALL_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_UNLOCK_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_CELEST_SHIELD_CUSTOM_ITEM_ID;
+    public static int AUGMENT_ACTIVE_HEAL_CUSTOM_ITEM_ID;
+    
+    public static int AUGMENT_PASSIVE_MIGHT_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_EMPOWER_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_DUEL_MIGHT_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_SHIELD_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_AGILITY_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_GUIDANCE_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_FOCUS_CUSTOM_ITEM_ID;
+    public static int AUGMENT_PASSIVE_WILD_MAGIC_CUSTOM_ITEM_ID;
     public static int FS_TIME_ATTACK;
     public static int FS_TIME_COOLDOWN;
     public static int FS_TIME_ENTRY;
@@ -1857,7 +1885,33 @@
             final InputStream is = new FileInputStream(new File(OTHER));
             otherSettings.load(is);
             is.close();
-            
+            /**AugmentCustomItem **/
+            AUGMENT_CUSTOM_ITEM = Boolean.parseBoolean(otherSettings.getProperty("AugmentCustomItem", "true"));
+            AUGMENT_ACTIVE_CHEER_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActCheerItemID", "13001"));
+            AUGMENT_ACTIVE_BLESS_BODY_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActBlessBodyItemID", "13002"));
+            AUGMENT_ACTIVE_BLESS_SOUL_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActBlessSoulItemID", "13003"));
+            AUGMENT_ACTIVE_MIGHT_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActMightItemID", "13004"));
+            AUGMENT_ACTIVE_EMPOWER_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActEmpowerItemID", "13005"));
+            AUGMENT_ACTIVE_DUEL_MIGHT_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActDuelMightItemID", "13006"));
+            AUGMENT_ACTIVE_SHIELD_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActShieldItemID", "13007"));
+            AUGMENT_ACTIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActMagicBarrierItemID", "13008"));
+            AUGMENT_ACTIVE_AGILITY_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActAgilityItemID", "13009"));
+            AUGMENT_ACTIVE_GUIDANCE_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActGuidanceItemID", "13010"));
+            AUGMENT_ACTIVE_FOCUS_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActFocusItemID", "13011"));
+            AUGMENT_ACTIVE_WILD_MAGIC_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActWildMagicItemID", "13012"));
+            AUGMENT_ACTIVE_RECALL_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActRecallItemID", "13013"));
+            AUGMENT_ACTIVE_UNLOCK_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActUnlockItemID", "13014"));
+            AUGMENT_ACTIVE_CELEST_SHIELD_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActCelestShieldItemID", "13015"));
+            AUGMENT_ACTIVE_HEAL_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("ActHealItemID", "13016"));
+            AUGMENT_PASSIVE_MIGHT_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasMightItemID", "13021"));
+            AUGMENT_PASSIVE_EMPOWER_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasEmpowerItemID", "13022"));
+            AUGMENT_PASSIVE_DUEL_MIGHT_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasDuelMightItemID", "13023"));
+            AUGMENT_PASSIVE_SHIELD_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasShieldItemID", "13024"));
+            AUGMENT_PASSIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasMagicBarrierItemID", "13025"));
+            AUGMENT_PASSIVE_AGILITY_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasAgilityItemID", "13026"));
+            AUGMENT_PASSIVE_GUIDANCE_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasGuidanceItemID", "13027"));
+            AUGMENT_PASSIVE_FOCUS_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasFocusItemID", "13028"));
+            AUGMENT_PASSIVE_WILD_MAGIC_CUSTOM_ITEM_ID = Integer.parseInt(otherSettings.getProperty("PasWildMagicItemID", "13029"));
             DEEPBLUE_DROP_RULES = Boolean.parseBoolean(otherSettings.getProperty("UseDeepBlueDropRules", "True"));
             ALLOW_GUARDS = Boolean.valueOf(otherSettings.getProperty("AllowGuards", "False"));
             EFFECT_CANCELING = Boolean.valueOf(otherSettings.getProperty("CancelLesserEffect", "True"));

 

 

 

head-src/com/l2jfrozen/gameserver/handler/ItemHandler.java
==========================================================
 
 import org.apache.log4j.Logger;
 
+import com.l2jfrozen.Config;
 import com.l2jfrozen.gameserver.GameServer;
 import com.l2jfrozen.gameserver.handler.itemhandlers.AioItem;
+import com.l2jfrozen.gameserver.handler.itemhandlers.AugmentActiveCustomItem;
+import com.l2jfrozen.gameserver.handler.itemhandlers.AugmentPassiveCustomItem;
 import com.l2jfrozen.gameserver.handler.itemhandlers.BeastSoulShot;
 import com.l2jfrozen.gameserver.handler.itemhandlers.BeastSpice;
 import com.l2jfrozen.gameserver.handler.itemhandlers.BeastSpiritShot;
@@ -138,6 +141,16 @@
     private ItemHandler()
     {
         _datatable = new TreeMap<>();
+        if(Config.AUGMENT_CUSTOM_ITEM) 
+        {
+            registerItemHandler(new AugmentActiveCustomItem());
+            registerItemHandler(new AugmentPassiveCustomItem());
+            LOGGER.info("ItemHandler: AugmentCustomItem is Enable.");
+        }
+        else
+        {
+            LOGGER.info("ItemHandler: AugmentCustomItem is Disable.");
+        }
         registerItemHandler(new NewbieRenewal());
         registerItemHandler(new CleanPk());
         registerItemHandler(new Skin1());

 

 

 

head-src/com/l2jfrozen/gameserver/handler/itemhandlers/+AugmentActiveCustomItem.java
==========================================================
+package com.l2jfrozen.gameserver.handler.itemhandlers;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+
+import org.apache.log4j.Logger;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.handler.IItemHandler;
+import com.l2jfrozen.gameserver.model.Inventory;
+import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
+import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
+import com.l2jfrozen.gameserver.network.serverpackets.ExShowScreenMessage;
+import com.l2jfrozen.gameserver.network.serverpackets.SocialAction;
+import com.l2jfrozen.util.CloseUtil;
+import com.l2jfrozen.util.database.L2DatabaseFactory;
+
+/**
+ * @author Gabriel Fleck
+ */
+public class AugmentActiveCustomItem implements IItemHandler
+{
+    private static final Logger LOGGER = Logger.getLogger(AugmentActiveCustomItem.class);
+    private static final int ITEM_IDS[] =
+    {
+         Config.AUGMENT_ACTIVE_CHEER_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_BLESS_BODY_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_BLESS_SOUL_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_MIGHT_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_EMPOWER_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_DUEL_MIGHT_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_SHIELD_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_AGILITY_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_GUIDANCE_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_FOCUS_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_WILD_MAGIC_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_RECALL_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_UNLOCK_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_CELEST_SHIELD_CUSTOM_ITEM_ID,
+         Config.AUGMENT_ACTIVE_HEAL_CUSTOM_ITEM_ID
+    };
+    
+    @Override
+    public void useItem(L2PlayableInstance playable, L2ItemInstance item)
+    {
+    if (!(playable instanceof L2PcInstance))
+            return;
+        
+        final int itemId = item.getItemId();
+        L2PcInstance activeChar = (L2PcInstance) playable;
+        
+        if (activeChar.isInCombat() && activeChar.isInDuel())
+        {
+            activeChar.sendMessage("This item cannot be used in combat or duel mode.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.isRegisteredInCTFEvent() && activeChar.isRegisteredInDMEvent() 
+            && activeChar.isRegisteredInFunEvent() && activeChar.isRegisteredInTVTEvent() 
+            && activeChar.isInFunEvent() && activeChar.isInOlympiadMode() && activeChar.isinTownWar())
+        {
+            activeChar.sendMessage("This item cannot be used in Events.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.isRunning() && activeChar.isSitting() && activeChar.isFlying())
+        {
+            activeChar.sendMessage("This item cannot be used while running, sitting or flying.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.isCastingNow() && activeChar.isAway()
+            && activeChar.isConfused() && activeChar.isStunned()
+            && activeChar.isDead() && activeChar.isAlikeDead())
+        {
+            activeChar.sendMessage("This item cannot be used at this time.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null)
+        {
+            activeChar.sendMessage("You have to equip a weapon.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented())
+        {
+            activeChar.sendMessage("The weapon is already augmented, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isHeroItem())
+        {
+            activeChar.sendMessage("This weapon is hero, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isShadowItem())
+        {
+            activeChar.sendMessage("This weapon is Shadow, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isCupidBow())
+        {
+            activeChar.sendMessage("This weapon is Cupid Bow, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        
+        
+        if (itemId == Config.AUGMENT_ACTIVE_CHEER_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16197,3131,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_CHEER_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_BLESS_BODY_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16199,3124,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_BLESS_BODY_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_BLESS_SOUL_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16200,3128,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_BLESS_SOUL_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_MIGHT_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16206,3132,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_MIGHT_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_EMPOWER_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16196,3133,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_EMPOWER_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_DUEL_MIGHT_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16211,3134,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_DUEL_MIGHT_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_SHIELD_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16208,3135,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_SHIELD_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16201,3136,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_AGILITY_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16181,3139,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_AGILITY_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_GUIDANCE_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16190,3140,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_GUIDANCE_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_FOCUS_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16289,3241,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_FOCUS_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_WILD_MAGIC_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16294,3142,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_WILD_MAGIC_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_RECALL_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16292,3147,1);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_RECALL_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_UNLOCK_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16234,3155,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_UNLOCK_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_CELEST_SHIELD_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16293,3158,1);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_CELEST_SHIELD_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_ACTIVE_HEAL_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16195,3123,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_ACTIVE_HEAL_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        
+    }
+    
+    private static void Augment(L2PcInstance player, int attributes, int skill, int level)
+    {
+        L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+        L2Augmentation augmentation = new L2Augmentation(item,attributes * 65536 + 1, skill, level,false);
+        augmentation.applyBoni(player);
+        item.setAugmentation(augmentation);
+        Connection con = null;
+        try
+        {
+            con = L2DatabaseFactory.getInstance().getConnection();
+            PreparedStatement statement = con.prepareStatement("REPLACE INTO augmentations VALUES(?,?,?,?)");
+            statement.setInt(1, item.getObjectId());
+            statement.setInt(2, attributes*65536+1);
+            statement.setInt(3, skill);
+            statement.setInt(4, level);
+            InventoryUpdate iu = new InventoryUpdate();
+            player.sendPacket(iu);
+            statement.executeUpdate();
+            statement.close();
+        }
+        catch (final Exception e)
+        {
+            if (Config.ENABLE_ALL_EXCEPTIONS)
+                e.printStackTrace();
+            
+            LOGGER.info("Could not augment item: "+item.getObjectId()+" ", e);
+        }
+        finally
+        {
+            CloseUtil.close(con);
+        }
+    }
+    
+    @Override
+    public int[] getItemIds()
+    {
+        return ITEM_IDS;
+    }
+}

 

 


head-src/com/l2jfrozen/gameserver/handler/itemhandlers/AugmentPassiveCustomItem.java
==========================================================
+package com.l2jfrozen.gameserver.handler.itemhandlers;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+
+import org.apache.log4j.Logger;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.handler.IItemHandler;
+import com.l2jfrozen.gameserver.model.Inventory;
+import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PlayableInstance;
+import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
+import com.l2jfrozen.gameserver.network.serverpackets.ExShowScreenMessage;
+import com.l2jfrozen.gameserver.network.serverpackets.SocialAction;
+import com.l2jfrozen.util.CloseUtil;
+import com.l2jfrozen.util.database.L2DatabaseFactory;
+
+/**
+ * @author Gabriel Fleck
+ */
+public class AugmentPassiveCustomItem implements IItemHandler
+{
+    private static final Logger LOGGER = Logger.getLogger(AugmentPassiveCustomItem.class);
+    private static final int ITEM_IDS[] =
+    {
+        Config.AUGMENT_PASSIVE_MIGHT_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_EMPOWER_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_DUEL_MIGHT_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_SHIELD_CUSTOM_ITEM_ID,

+        Config.AUGMENT_PASSIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_AGILITY_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_GUIDANCE_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_FOCUS_CUSTOM_ITEM_ID,
+        Config.AUGMENT_PASSIVE_WILD_MAGIC_CUSTOM_ITEM_ID
+    };
+    
+    @Override
+    public void useItem(L2PlayableInstance playable, L2ItemInstance item)
+    {
+    if (!(playable instanceof L2PcInstance))
+            return;
+        
+        final int itemId = item.getItemId();
+        L2PcInstance activeChar = (L2PcInstance) playable;
+        
+        if (activeChar.isInCombat() && activeChar.isInDuel())
+        {
+            activeChar.sendMessage("This item cannot be used in combat or duel mode.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.isRegisteredInCTFEvent() && activeChar.isRegisteredInDMEvent() 
+            && activeChar.isRegisteredInFunEvent() && activeChar.isRegisteredInTVTEvent() 
+            && activeChar.isInFunEvent() && activeChar.isInOlympiadMode() && activeChar.isinTownWar())
+        {
+            activeChar.sendMessage("This item cannot be used in Events.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.isRunning() && activeChar.isSitting() && activeChar.isFlying())
+        {
+            activeChar.sendMessage("This item cannot be used while running, sitting or flying.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.isCastingNow() && activeChar.isAway()
+            && activeChar.isConfused() && activeChar.isStunned()
+            && activeChar.isDead() && activeChar.isAlikeDead())
+        {
+            activeChar.sendMessage("This item cannot be used at this time.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null)
+        {
+            activeChar.sendMessage("You have to equip a weapon.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isAugmented())
+        {
+            activeChar.sendMessage("The weapon is already augmented, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isHeroItem())
+        {
+            activeChar.sendMessage("This weapon is hero, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isShadowItem())
+        {
+            activeChar.sendMessage("This weapon is Shadow, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        if (activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).isCupidBow())
+        {
+            activeChar.sendMessage("This weapon is Cupid Bow, change it.");
+            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
+            return;
+        }
+        
+        
+        if (itemId == Config.AUGMENT_PASSIVE_MIGHT_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16283,3240,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_MIGHT_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_EMPOWER_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16281,3241,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_EMPOWER_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_DUEL_MIGHT_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16285,3243,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_DUEL_MIGHT_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_SHIELD_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16284,3244,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_SHIELD_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16282,3245,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_MAGIC_BARRIER_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_AGILITY_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16332,3247,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_AGILITY_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_GUIDANCE_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16335,3248,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_GUIDANCE_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_FOCUS_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16333,3249,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_FOCUS_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        else if (itemId == Config.AUGMENT_PASSIVE_WILD_MAGIC_CUSTOM_ITEM_ID)
+        {
+            Augment(activeChar,16336,3250,10);
+            playable.destroyItemByItemId("Consume", Config.AUGMENT_PASSIVE_WILD_MAGIC_CUSTOM_ITEM_ID, 1, activeChar, true);
+        }
+        
+    }
+    
+    private static void Augment(L2PcInstance player, int attributes, int skill, int level)
+    {
+        L2ItemInstance item = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+        L2Augmentation augmentation = new L2Augmentation(item,attributes * 65536 + 1, skill, level,false);
+        augmentation.applyBoni(player);
+        item.setAugmentation(augmentation);
+        Connection con = null;
+        try
+        {
+            con = L2DatabaseFactory.getInstance().getConnection();
+            PreparedStatement statement = con.prepareStatement("REPLACE INTO augmentations VALUES(?,?,?,?)");
+            statement.setInt(1, item.getObjectId());
+            statement.setInt(2, attributes*65536+1);
+            statement.setInt(3, skill);
+            statement.setInt(4, level);
+            InventoryUpdate iu = new InventoryUpdate();
+            player.sendPacket(iu);
+            statement.executeUpdate();
+            statement.close();
+        }
+        catch (final Exception e)
+        {
+            if (Config.ENABLE_ALL_EXCEPTIONS)
+                e.printStackTrace();
+            
+            LOGGER.info("Could not augment item: "+item.getObjectId()+" ", e);
+        }
+        finally
+        {
+            CloseUtil.close(con);
+        }
+    }
+    
+    @Override
+    public int[] getItemIds()
+    {
+        return ITEM_IDS;
+    }
+}


\ No newline at end of file
 



Client Part:

Spoiler

============================================================
etcitemgrp.dat:
============================================================


2    13001    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13002    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13003    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13004    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13005    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13006    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13007    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13008    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13009    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13010    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13011    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13012    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13013    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13014    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13015    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13016    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13021    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13022    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13023    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13024    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13025    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13026    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13027    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13028    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0
2    13029    0    3    2    5    0    dropitems.drop_sack_m00            dropitemstex.drop_sack_t00            icon.skill3123                    0    0    18    0    0    1        1        ItemSound.itemdrop_sack        2    0    0


============================================================
itemname-e.dat:
============================================================


13001    Augment Active - Cheer            -1                    0    0    0    
13002    Augment Active - Blessed Body            -1                    0    0    0    
13003    Augment Active - Blessed Soul            -1                    0    0    0    
13004    Augment Active - Might            -1                    0    0    0    
13005    Augment Active - Empower            -1                    0    0    0    
13006    Augment Active - Duel Might            -1                    0    0    0    
13007    Augment Active - Shield            -1                    0    0    0    
13008    Augment Active - Magic Barrier            -1                    0    0    0    
13009    Augment Active - Agility            -1                    0    0    0    
13010    Augment Active - Guidance            -1                    0    0    0    
13011    Augment Active - Focus            -1                    0    0    0    
13012    Augment Active - Wild Magic            -1                    0    0    0    
13013    Augment Active - Recall            -1                    0    0    0    
13014    Augment Active - Unlock            -1                    0    0    0    
13015    Augment Active - Celestial Shield            -1                    0    0    0    
13016    Augment Active - Heal            -1                    0    0    0    
13021    Augment Passive - Might            -1                    0    0    0    
13022    Augment Passive - Empower            -1                    0    0    0    
13023    Augment Passive - Duel Might            -1                    0    0    0    
13024    Augment Passive - Shield            -1                    0    0    0    
13025    Augment Passive - Magic Barrier            -1                    0    0    0    
13026    Augment Passive - Agility            -1                    0    0    0    
13027    Augment Passive - Guidance            -1                    0    0    0    
13028    Augment Passive - Focus            -1                    0    0    0    
13029    Augment Passive - Wild Magic            -1                    0    0    0    
 



Sql Query:

Spoiler

INSERT INTO `custom_etcitem` VALUES (13001, 'Augment Active - Cheer', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13002, 'Augment Active - Blessed Body', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13003, 'Augment Active - Blessed Soul', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13004, 'Augment Active - Might', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13005, 'Augment Active - Empower', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13006, 'Augment Active - Duel Might', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13007, 'Augment Active - Shield', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13008, 'Augment Active - Magic Barrier', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13009, 'Augment Active - Agility', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13010, 'Augment Active - Guidance', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13011, 'Augment Active - Focus', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13012, 'Augment Active - Wild Magic', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13013, 'Augment Active - Recall', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13014, 'Augment Active - Unlock', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13015, 'Augment Active - Celestial Shield', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13016, 'Augment Active - Heal', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_active_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13021, 'Augment Passive - Might', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13022, 'Augment Passive - Empower', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13023, 'Augment Passive - Duel Might', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13024, 'Augment Passive - Shield', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13025, 'Augment Passive - Magic Barrier', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13026, 'Augment Passive - Agility', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13027, 'Augment Passive - Guidance', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13028, 'Augment Passive - Focus', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
INSERT INTO `custom_etcitem` VALUES (13029, 'Augment Passive - Wild Magic', 'false', 'none', 0, 'stackable', 'none', -1, 10000, 0, 'true', 'true', 'true', 'true', 'augment_passive_custom_item', 'none');
 

 

Edited by Irrelevant
  • Like 1
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...