Good evening everyone, Good tried to create a Feanor to acis using drope system for NPCs but do not have much knowledge of java if one could help me thank you do not know where to post this so if I'm wrong I apologize I use google translator if the wrong word descupe me !!!
### Eclipse Workspace Patch 1.0
#P aCis_datapack
Index: data/xml/feanor.xml
===================================================================
--- data/xml/feanor.xml (revision 0)
+++ data/xml/feanor.xml (working copy)
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='utf-8'?>
+<list>
+ <template itemid="3470" min="5" max="10" chance="550000"/>
+</list>
\ No newline at end of file
Index: data/html/admin/server_menu.htm
===================================================================
--- data/html/admin/server_menu.htm (revision 332)
+++ data/html/admin/server_menu.htm (working copy)
@@ -11,7 +11,7 @@
Reload
<table width=240>
<tr>
- <td><combobox width=120 height=21 var="cb" list=acar;config;crest;cw;door;htm;item;multisell;npc;npcwalker;scripts;skill;teleport;zone;></td>
+ <td><combobox width=120 height=21 var="cb" list=acar;config;crest;cw;door;htm;feanor;item;multisell;npc;npcwalker;scripts;skill;teleport;zone;></td>
<td><button value="Reload" action="bypass -h admin_reload $cb" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
</tr>
</table><br>
#P aCis_gameserver
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java (revision 332)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java (working copy)
@@ -30,6 +30,7 @@
import net.sf.l2j.gameserver.datatables.NpcTable;
import net.sf.l2j.gameserver.datatables.NpcWalkerRoutesTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
+import net.sf.l2j.gameserver.datatables.SkipTable;
import net.sf.l2j.gameserver.datatables.TeleportLocationTable;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
import net.sf.l2j.gameserver.instancemanager.CursedWeaponsManager;
@@ -227,6 +228,11 @@
ItemTable.getInstance().reload();
activeChar.sendMessage("Items' templates have been reloaded.");
}
+ else if (type.startsWith("feanor"))
+ {
+ FeanorTable.getInstance();
+ activeChar.sendMessage("Feanor list have been reloaded.");
+ }
else if (type.equals("multisell"))
{
MultisellData.getInstance().reload();
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java (revision 332)
+++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
@@ -56,6 +56,7 @@
import net.sf.l2j.gameserver.datatables.RecipeTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.datatables.SkillTreeTable;
+import net.sf.l2j.gameserver.datatables.FeanorTable;
import net.sf.l2j.gameserver.datatables.SoulCrystalsTable;
import net.sf.l2j.gameserver.datatables.SpawnTable;
import net.sf.l2j.gameserver.datatables.SpellbookTable;
@@ -194,6 +195,7 @@
HennaTable.getInstance();
HelperBuffTable.getInstance();
CursedWeaponsManager.getInstance();
+ FeanorTable.getInstance();
Util.printSection("Clans");
ClanTable.getInstance();
Index: java/net/sf/l2j/gameserver/datatables/NpcTable.java
===================================================================
--- java/net/sf/l2j/gameserver/datatables/NpcTable.java (revision 332)
+++ java/net/sf/l2j/gameserver/datatables/NpcTable.java (working copy)
@@ -23,6 +23,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.L2MinionData;
import net.sf.l2j.gameserver.model.L2NpcAIData;
import net.sf.l2j.gameserver.model.L2Skill;
@@ -201,6 +202,10 @@
_log.warning("Droplist data for undefined itemId: " + data.getItemId());
continue;
}
+
+ if (Config.ENABLE_FEANOR && FeanorTable.isFeanor(data.getItemId()))
+ continue;
+
template.addDropData(dropDat, category);
}
}
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java (revision 332)
+++ java/net/sf/l2j/Config.java (working copy)
@@ -374,6 +374,9 @@
public static int GRID_NEIGHBOR_TURNON_TIME;
public static int GRID_NEIGHBOR_TURNOFF_TIME;
+ /** Feanor Drop */
+ public static boolean ENABLE_FEANOR;
+
// --------------------------------------------------
// Players
// --------------------------------------------------
@@ -995,6 +998,8 @@
GRID_NEIGHBOR_TURNON_TIME = npcs.getProperty("GridNeighborTurnOnTime", 1);
GRID_NEIGHBOR_TURNOFF_TIME = npcs.getProperty("GridNeighborTurnOffTime", 90);
+ ENABLE_FEANOR = npcs.getProperty("EnableFeanorList", false);
+
// players
ExProperties players = load(PLAYERS_FILE);
STARTING_ADENA = players.getProperty("StartingAdena", 100);
Index: config/npcs.properties
===================================================================
--- config/npcs.properties (revision 332)
+++ config/npcs.properties (working copy)
@@ -263,4 +263,12 @@
# The always on option allows to ignore all this and let all grids be active at all times
GridsAlwaysOn = False
GridNeighborTurnOnTime = 1
-GridNeighborTurnOffTime = 90
\ No newline at end of file
+GridNeighborTurnOffTime = 90
+
+#=============================================================
+# Feanor Settings
+#=============================================================
+
+# Enable skip all items from feanor.xml out from droplist of all monsters.
+# Default: False
+EnableFeanorList = False
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/datatables/FeanorTable.java
===================================================================
--- java/net/sf/l2j/gameserver/datatables/FeanorTable.java (revision 0)
+++ java/net/sf/l2j/gameserver/datatables/FeanorTable.java (working copy)
+/*
+ * 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.datatables;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import net.sf.l2j.gameserver.templates.StatsSet;
+import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * @author Williams
+ *
+ */
+public class FeanorTable
+{
+ protected static final Logger _log = Logger.getLogger(FeanorTable.class.getName());
+
+ private static List<Feanor> _feanor;
+
+ public static FeanorTable getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final FeanorTable _instance = new FeanorTable();
+ }
+
+ protected FeanorTable()
+ {
+ _feanor = new ArrayList<>();
+ loadFeanor();
+ }
+
+ public void reload()
+ {
+ _feanor.clear();
+ loadFeanor();
+ }
+
+ private void loadFeanor()
+ {
+ try
+ {
+ File f = new File("./data/xml/feanor.xml");
+ Document doc = XMLDocumentFactory.getInstance().loadDocument(f);
+
+ Node n = doc.getFirstChild();
+ for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
+ {
+ if (d.getNodeName().equalsIgnoreCase("template"))
+ {
+ NamedNodeMap attrs = d.getAttributes();
+
+ int itemId = Integer.valueOf(attrs.getNamedItem("itemId").getNodeValue());
+ int min = Integer.parseInt(attrs.getNamedItem("min").getNodeValue());
+ int max = Integer.parseInt(attrs.getNamedItem("max").getNodeValue());
+ int chance = Integer.parseInt(attrs.getNamedItem("chance").getNodeValue());
+
+ StatsSet set = new StatsSet();
+ set.set("itemId", itemId);
+ set.set("min", min);
+ set.set("max", max);
+ set.set("chance", chance);
+
+ _feanor.add(new Feanor(set));
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ _log.warning("Exception: FeanorTable loadFeanor: " + e);
+ }
+
+ _log.info("FeanorTable: Loaded " + _feanor.size() + " item's template(s).");
+ }
+
+ public static boolean isFeanor(int itemId)
+ {
+ return _feanor.contains(itemId);
+ }
+
+ public class Feanor
+ {
+ private int _itemId;
+ private int _chance;
+ private int _min;
+ private int _max;
+
+ public Feanor(StatsSet set)
+ {
+ _itemId = set.getInteger("itemId");
+ _chance = set.getInteger("chance");
+ _min = set.getInteger("min");
+ _max = set.getInteger("max");
+ }
+
+ public int getItemId()
+ {
+ return _itemId;
+ }
+
+ public int getChance()
+ {
+ return _chance;
+ }
+
+ public int getMax()
+ {
+ return _max;
+ }
+
+ public int getMin()
+ {
+ return _min;
+ }
+ }
+}
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.
To celebrate the update to Chronicle 5 on the Teon server, which will take place at 11th of January, we’ve prepared special bonuses to help new players get started easily in the world of Lineage II!
What’s included?
- Starter gear for a smooth beginning — talk to Miss Queen to receive coupons that can be exchanged for equipment.
- Runes to speed up your character’s progression — usable up to level 49.
- Newbie buffs are now available up to level 39.
- Newbie guides have been added to the towns of Heine, Oren, Giran, and Dion.
Start: January 11 at 09:00 (GMT +1)
End: February 1 at 04:00 (GMT +1)
This offer is available for a limited time, so don’t miss your chance to start with an advantage!
Registration
Download Teon client
Contact us:
>Discord
>Telegram
Question
l2jkain
Good evening everyone, Good tried to create a Feanor to acis using drope system for NPCs but do not have much knowledge of java if one could help me thank you do not know where to post this so if I'm wrong I apologize I use google translator if the wrong word descupe me !!!
http://pastebin.com/2mgUAQVe
Edited by l2jkain2 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.