Jump to content
  • 0

Question

Posted

hello can some help me to add this to acis?

 

### Eclipse Workspace Patch 1.0
#P elfobitch
Index: gameserver/head-src/com/l2jfrozen/gameserver/model/L2Attackable.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/model/L2Attackable.java   (revision 903)
+++ gameserver/head-src/com/l2jfrozen/gameserver/model/L2Attackable.java   (working copy)
@@ -244,12 +244,22 @@
       protected int _itemId;
       protected int _count;
 
+      private int _enchant = -1;
+      private int _chance = 0;
+      
       public RewardItem(int itemId, int count)
       {
          _itemId = itemId;
          _count = count;
       }
 
+      public RewardItem(int itemId, int count, int enchant, int chance)
+      {
+         this(itemId, count);
+         _enchant = enchant;
+         _chance = chance;
+      }
+      
       public int getItemId()
       {
          return _itemId;
@@ -259,6 +269,9 @@
       {
          return _count;
       }
+            
+      public int getEnchant() { return _enchant; }
+      public int getEnchantChance() { return _chance; }
    }
 
    /**
@@ -1560,7 +1573,7 @@
       }
 
       if(itemCount > 0)
-         return new RewardItem(drop.getItemId(), itemCount);
+         return new RewardItem(drop.getItemId(), itemCount, drop.getEnchant(), drop.getEnchantChance());
       else if(itemCount == 0 && Config.DEBUG)
       {
          _log.fine("Roll produced 0 items to drop...");
@@ -1845,7 +1858,7 @@
          }
 
          if(itemCount > 0)
-            return new RewardItem(drop.getItemId(), itemCount);
+            return new RewardItem(drop.getItemId(), itemCount, drop.getEnchant(), drop.getEnchantChance());
          else if(itemCount == 0 && Config.DEBUG)
          {
             _log.fine("Roll produced 0 items to drop...");
@@ -2503,6 +2516,16 @@
          // Init the dropped L2ItemInstance and add it in the world as a visible object at the position where mob was last
          ditem = ItemTable.getInstance().createItem("Loot", item.getItemId(), item.getCount(), mainDamageDealer, this);
          ditem.getDropProtection().protect(mainDamageDealer);
+            if(item.getEnchant() > 0)
+            {
+               if(ditem.getItem().getType1() == L2Item.TYPE1_WEAPON_RING_EARRING_NECKLACE
+                     || ditem.getItem().getType1() == L2Item.TYPE1_SHIELD_ARMOR)
+               {
+                  double chance = Rnd.get(1, 100);
+                  if(chance <= item.getEnchantChance())
+                     ditem.setEnchantLevel(item.getEnchant());
+               }
+            }
          ditem.dropMe(this, newX, newY, newZ);
 
          // Add drop to auto destroy item task
Index: gameserver/head-src/com/l2jfrozen/gameserver/datatables/sql/NpcTable.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/datatables/sql/NpcTable.java   (revision 903)
+++ gameserver/head-src/com/l2jfrozen/gameserver/datatables/sql/NpcTable.java   (working copy)
@@ -247,7 +247,7 @@
             {
                statement = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]
                {
-                     "mobId", "itemId", "min", "max", "category", "chance"
+                     "mobId", "itemId", "min", "max", "category", "chance", "enchant", "enchantChance"
                }) + " FROM custom_droplist ORDER BY mobId, chance DESC");
                ResultSet dropData = statement.executeQuery();
 
@@ -270,6 +270,8 @@
                   dropDat.setMinDrop(dropData.getInt("min"));
                   dropDat.setMaxDrop(dropData.getInt("max"));
                   dropDat.setChance(dropData.getInt("chance"));
+                  dropDat.setEnchant(dropData.getInt("enchant"));
+                  dropDat.setEnchantChance(dropData.getInt("enchantChance"));
 
                   int category = dropData.getInt("category");
 
@@ -295,7 +297,7 @@
          {
             statement = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]
             {
-                  "mobId", "itemId", "min", "max", "category", "chance"
+                  "mobId", "itemId", "min", "max", "category", "chance", "enchant", "enchantChance"
             }) + " FROM droplist ORDER BY mobId, chance DESC");
             ResultSet dropData = statement.executeQuery();
             L2DropData dropDat = null;
@@ -319,6 +321,8 @@
                dropDat.setMinDrop(dropData.getInt("min"));
                dropDat.setMaxDrop(dropData.getInt("max"));
                dropDat.setChance(dropData.getInt("chance"));
+               dropDat.setEnchant(dropData.getInt("enchant"));
+               dropDat.setEnchantChance(dropData.getInt("enchantChance"));
 
                int category = dropData.getInt("category");
 
Index: gameserver/head-src/com/l2jfrozen/gameserver/script/faenor/FaenorInterface.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/script/faenor/FaenorInterface.java   (revision 903)
+++ gameserver/head-src/com/l2jfrozen/gameserver/script/faenor/FaenorInterface.java   (working copy)
@@ -82,6 +82,27 @@
       addDrop(npc, drop, false);
    }
 
+   public void addQuestDrop(int npcID, int itemID, int min, int max, int chance, String questID, String[] states,
+         int enchant, int enchantChance)
+   {
+      L2NpcTemplate npc = npcTable.getTemplate(npcID);
+      if (npc == null)
+      {
+         _log.info("FeanorInterface: Npc "+npcID+" is null..");
+         return;
+      }
+      L2DropData drop = new L2DropData();
+      drop.setItemId(itemID);
+      drop.setMinDrop(min);
+      drop.setMaxDrop(max);
+      drop.setEnchant(enchant);
+      drop.setEnchantChance(enchantChance);
+      drop.setChance(chance);
+      drop.setQuestID(questID);
+      drop.addStates(states);
+      addDrop(npc, drop, false);
+   }
+   
    /**
     * Adds a new Drop to an NPC
     *
@@ -106,7 +127,31 @@
 
       addDrop(npc, drop, sweep);
    }
+   
+   public void addDrop(int npcID, int itemID, int min, int max, boolean sweep, int chance,
+         int enchant, int enchantChance) throws NullPointerException
+   {
+      L2NpcTemplate npc = npcTable.getTemplate(npcID);
+      if (npc == null)
+      {
+         if (Config.DEBUG)
+         {
+            _log.warning("Npc doesnt Exist");
+         }
+         throw new NullPointerException();
+      }
+      L2DropData drop = new L2DropData();
+      drop.setItemId(itemID);
+      drop.setMinDrop(min);
+      drop.setMaxDrop(max);
+      drop.setChance(chance);
+      drop.setEnchant(enchant);
+      drop.setEnchantChance(enchantChance);
+      
+      addDrop(npc, drop, sweep);
+   }
 
+   
    /**
     * Adds a new drop to an NPC. If the drop is sweep, it adds it to the NPC's Sweep category If the drop is non-sweep,
     * it creates a new category for this drop.
Index: gameserver/head-src/com/l2jfrozen/gameserver/handler/admincommandhandlers/AdminEditNpc.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/handler/admincommandhandlers/AdminEditNpc.java   (revision 903)
+++ gameserver/head-src/com/l2jfrozen/gameserver/handler/admincommandhandlers/AdminEditNpc.java   (working copy)
@@ -407,7 +407,7 @@
                      e.printStackTrace();
                }
             }
-            else if(st.countTokens() == 6)
+            else if(st.countTokens() == 8)
             {
                try
                {
@@ -417,8 +417,10 @@
                   int min = Integer.parseInt(st.nextToken());
                   int max = Integer.parseInt(st.nextToken());
                   int chance = Integer.parseInt(st.nextToken());
+                  int enchant = Integer.parseInt(st.nextToken());
+                  int enchantChance = Integer.parseInt(st.nextToken());
 
-                  updateDropData(activeChar, npcId, itemId, min, max, category, chance);
+                  updateDropData(activeChar, npcId, itemId, min, max, category, chance, enchant, enchantChance);
                }
                catch(Exception e)
                {
@@ -430,7 +432,7 @@
             }
             else
             {
-               activeChar.sendMessage("Usage: //edit_drop <npc_id> <item_id> <category> [<min> <max> <chance>]");
+               activeChar.sendMessage("Usage: //edit_drop <npc_id> <item_id> <category> [<min> <max> <chance> <enchant> <enchantChance>]");
             }
 
             st = null;
@@ -440,7 +442,7 @@
             if(Config.ENABLE_ALL_EXCEPTIONS)
                e.printStackTrace();
             
-            activeChar.sendMessage("Usage: //edit_drop <npc_id> <item_id> <category> [<min> <max> <chance>]");
+            activeChar.sendMessage("Usage: //edit_drop <npc_id> <item_id> <category> [<min> <max> <chance> <enchant> <enchantChance>]");
          }
       }
       else if(command.startsWith("admin_add_drop "))
@@ -474,7 +476,7 @@
                   npcData = null;
                }
             }
-            else if(st.countTokens() == 6)
+            else if(st.countTokens() == 8)
             {
                try
                {
@@ -484,8 +486,10 @@
                   int min = Integer.parseInt(st.nextToken());
                   int max = Integer.parseInt(st.nextToken());
                   int chance = Integer.parseInt(st.nextToken());
+                  int enchant = Integer.parseInt(st.nextToken());
+                  int enchantChance = Integer.parseInt(st.nextToken());
 
-                  addDropData(activeChar, npcId, itemId, min, max, category, chance);
+                  addDropData(activeChar, npcId, itemId, min, max, category, chance, enchant, enchantChance);
                }
                catch(Exception e)
                {
@@ -497,7 +501,7 @@
             }
             else
             {
-               activeChar.sendMessage("Usage: //add_drop <npc_id> [<item_id> <category> <min> <max> <chance>]");
+               activeChar.sendMessage("Usage: //add_drop <npc_id> [<item_id> <category> <min> <max> <chance> <enchant> <enchantChance>]");
             }
 
             st = null;
@@ -507,7 +511,7 @@
             if(Config.ENABLE_ALL_EXCEPTIONS)
                e.printStackTrace();
             
-            activeChar.sendMessage("Usage: //add_drop <npc_id> [<item_id> <category> <min> <max> <chance>]");
+            activeChar.sendMessage("Usage: //add_drop <npc_id> [<item_id> <category> <min> <max> <chance> <enchant> <enchantChance>]");
          }
       }
       else if(command.startsWith("admin_del_drop "))
@@ -1323,7 +1327,7 @@
       {
          con = L2DatabaseFactory.getInstance().getConnection(false);
 
-         PreparedStatement statement = con.prepareStatement("SELECT mobId, itemId, min, max, category, chance FROM droplist WHERE mobId=" + npcId + " AND itemId=" + itemId + " AND category=" + category);
+         PreparedStatement statement = con.prepareStatement("SELECT mobId, itemId, min, max, category, chance, enchant, enchantChance FROM droplist WHERE mobId=" + npcId + " AND itemId=" + itemId + " AND category=" + category);
          ResultSet dropData = statement.executeQuery();
 
          NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
@@ -1340,9 +1344,11 @@
             replyMSG.append("<tr><td>MIN(" + dropData.getInt("min") + ")</td><td><edit var=\"min\" width=80></td></tr>");
             replyMSG.append("<tr><td>MAX(" + dropData.getInt("max") + ")</td><td><edit var=\"max\" width=80></td></tr>");
             replyMSG.append("<tr><td>CHANCE(" + dropData.getInt("chance") + ")</td><td><edit var=\"chance\" width=80></td></tr>");
+            replyMSG.append("<tr><td>ENC-VALUE(" + dropData.getInt("enchant") + ")</td><td><edit var=\"enchant\" width=80></td></tr>");
+            replyMSG.append("<tr><td>ENC-CHANCE(" + dropData.getInt("enchantChance") + ")</td><td><edit var=\"enchantChance\" width=80></td></tr>");
             replyMSG.append("</table>");
             replyMSG.append("<center>");
-            replyMSG.append("<button value=\"Save Modify\" action=\"bypass -h admin_edit_drop " + npcId + " " + itemId + " " + category + " $min $max $chance\"  width=100 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
+            replyMSG.append("<button value=\"Save Modify\" action=\"bypass -h admin_edit_drop " + npcId + " " + itemId + " " + category + " $min $max $chance $enchant $enchantChance\"  width=100 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
             replyMSG.append("<br><button value=\"DropList\" action=\"bypass -h admin_show_droplist " + dropData.getInt("mobId") + "\"  width=100 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
             replyMSG.append("</center>");
          }
@@ -1383,9 +1389,11 @@
       replyMSG.append("<tr><td>MAX</td><td><edit var=\"max\" width=80></td></tr>");
       replyMSG.append("<tr><td>CATEGORY(sweep=-1)</td><td><edit var=\"category\" width=80></td></tr>");
       replyMSG.append("<tr><td>CHANCE(0-1000000)</td><td><edit var=\"chance\" width=80></td></tr>");
+      replyMSG.append("<tr><td>ENC-VALUE(0-65535)</td><td><edit var=\"enchant\" width=80></td></tr>");
+      replyMSG.append("<tr><td>ENC-CHANCE(0-100)</td><td><edit var=\"enchantChance\" width=80></td></tr>");
       replyMSG.append("</table>");
       replyMSG.append("<center>");
-      replyMSG.append("<button value=\"SAVE\" action=\"bypass -h admin_add_drop " + npcData.npcId + " $itemId $category $min $max $chance\"  width=100 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
+      replyMSG.append("<button value=\"SAVE\" action=\"bypass -h admin_add_drop " + npcData.npcId + " $itemId $category $min $max $chance $enchant $enchantChance\"  width=100 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
       replyMSG.append("<br><button value=\"DropList\" action=\"bypass -h admin_show_droplist " + npcData.npcId + "\"  width=100 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\">");
       replyMSG.append("</center>");
       replyMSG.append("</body></html>");
@@ -1397,7 +1405,7 @@
       replyMSG = null;
    }
 
-   private void updateDropData(L2PcInstance activeChar, int npcId, int itemId, int min, int max, int category, int chance)
+   private void updateDropData(L2PcInstance activeChar, int npcId, int itemId, int min, int max, int category, int chance, int enchant, int enchantChance)
    {
       Connection con = null;
 
@@ -1405,13 +1413,15 @@
       {
          con = L2DatabaseFactory.getInstance().getConnection(false);
 
-         PreparedStatement statement = con.prepareStatement("UPDATE droplist SET min=?, max=?, chance=? WHERE mobId=? AND itemId=? AND category=?");
+         PreparedStatement statement = con.prepareStatement("UPDATE droplist SET min=?, max=?, chance=?, enchant=?, enchantChance=? WHERE mobId=? AND itemId=? AND category=?");
          statement.setInt(1, min);
          statement.setInt(2, max);
          statement.setInt(3, chance);
          statement.setInt(4, npcId);
          statement.setInt(5, itemId);
          statement.setInt(6, category);
+         statement.setInt(7, enchant);
+         statement.setInt(8, enchantChance);
 
          statement.execute();
          statement.close();
@@ -1464,7 +1474,7 @@
       }
    }
 
-   private void addDropData(L2PcInstance activeChar, int npcId, int itemId, int min, int max, int category, int chance)
+   private void addDropData(L2PcInstance activeChar, int npcId, int itemId, int min, int max, int category, int chance, int enchant, int enchantChance)
    {
       Connection con = null;
 
@@ -1472,13 +1482,16 @@
       {
          con = L2DatabaseFactory.getInstance().getConnection(false);
 
-         PreparedStatement statement = con.prepareStatement("INSERT INTO droplist(mobId, itemId, min, max, category, chance) values(?,?,?,?,?,?)");
+         PreparedStatement statement = con.prepareStatement("INSERT INTO droplist(mobId, itemId, min, max, category, chance, enchant, enchantChance) values(?,?,?,?,?,?,?,?)");
          statement.setInt(1, npcId);
          statement.setInt(2, itemId);
          statement.setInt(3, min);
          statement.setInt(4, max);
          statement.setInt(5, category);
          statement.setInt(6, chance);
+         statement.setInt(7, enchant);
+         statement.setInt(8, enchantChance);
+         
          statement.execute();
          statement.close();
          statement = null;
@@ -1573,7 +1586,7 @@
 
          PreparedStatement statement = con.prepareStatement("SELECT " + L2DatabaseFactory.getInstance().safetyString(new String[]
          {
-               "mobId", "itemId", "min", "max", "category", "chance"
+               "mobId", "itemId", "min", "max", "category", "chance", "enchant", "enchantChance"
          }) + " FROM droplist WHERE mobId=?");
          statement.setInt(1, npcId);
          ResultSet dropDataList = statement.executeQuery();
@@ -1586,6 +1599,8 @@
             dropData.setMinDrop(dropDataList.getInt("min"));
             dropData.setMaxDrop(dropDataList.getInt("max"));
             dropData.setChance(dropDataList.getInt("chance"));
+            dropData.setEnchant(dropDataList.getInt("enchant"));
+            dropData.setEnchantChance(dropDataList.getInt("enchantChance"));
 
             int category = dropDataList.getInt("category");
 
Index: gameserver/head-src/com/l2jfrozen/gameserver/model/L2DropData.java
===================================================================
--- gameserver/head-src/com/l2jfrozen/gameserver/model/L2DropData.java   (revision 903)
+++ gameserver/head-src/com/l2jfrozen/gameserver/model/L2DropData.java   (working copy)
@@ -33,6 +33,8 @@
    private int _minDrop;
    private int _maxDrop;
    private int _chance;
+   private int _dropEnchant = -1;
+   private int _enchantChance = 0;
    private String _questID = null;
    private String[] _stateID = null;
 
@@ -55,7 +57,17 @@
    {
       _itemId = itemId;
    }
-
+   
+   public void setEnchant(final int enchant)
+   {
+      _dropEnchant = enchant;
+   }
+   
+   public void setEnchantChance(final int chance)
+   {
+      _enchantChance = chance;
+   }
+   
    /**
     * Returns the minimum quantity of items dropped
     *
@@ -86,6 +98,16 @@
       return _chance;
    }
 
+   public int getEnchant()
+   {
+      return _dropEnchant;
+   }
+   
+   public int getEnchantChance()
+   {
+      return _enchantChance;
+   }
+
    /**
     * Sets the value for minimal quantity of dropped items
     *

 


ALTER TABLE `droplist` ADD `enchant` int(5) DEFAULT -1;
ALTER TABLE `droplist` ADD `enchantChance` int(3) DEFAULT 0;
ALTER TABLE `custom_droplist` ADD `enchant` int(5) DEFAULT -1;
ALTER TABLE `custom_droplist` ADD `enchantChance` int(3) DEFAULT 0;

 

2 answers to this question

Recommended Posts

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
Answer this question...

×   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...