Jump to content

Question

Posted

Hello, I'm trying to create a custom drop system, does anyone give me an idea? That's how it looks! Even registering in Gameserve.java is not running the drops

 

 

 

/*
 * 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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
import net.sf.l2j.gameserver.model.item.DropCategory;
import net.sf.l2j.gameserver.model.item.DropData;
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
{
private static Logger _log = Logger.getLogger(FeanorTable.class.getName());
 
private final Map<Integer, NpcTemplate> _feanor = new HashMap<>();
 
protected FeanorTable()
{
loadFeanorTable();
}
 
public void reloadAllNpc()
{
_feanor.clear();
loadFeanorTable();
}
 
private void loadFeanorTable()
{
try
{
final File dir = new File("./data/xml/feanorTable");
final StatsSet set = new StatsSet();
 
for (File file : dir.listFiles())
{
final Document doc = XMLDocumentFactory.getInstance().loadDocument(file);
 
Node list = doc.getFirstChild();
for (Node npc = list.getFirstChild(); npc != null; npc = npc.getNextSibling())
{
NamedNodeMap attrs = npc.getAttributes();
 
for (Node cat = npc.getFirstChild(); cat != null; cat = cat.getNextSibling())
 
if ("drops".equalsIgnoreCase(cat.getNodeName()))
{
final List<DropCategory> drops = new ArrayList<>();
 
for (Node dropCat = cat.getFirstChild(); dropCat != null; dropCat = dropCat.getNextSibling())
{
if ("category".equalsIgnoreCase(dropCat.getNodeName()))
{
attrs = dropCat.getAttributes();
 
final DropCategory category = new DropCategory(Integer.parseInt(attrs.getNamedItem("id").getNodeValue()));
 
for (Node item = dropCat.getFirstChild(); item != null; item = item.getNextSibling())
{
if ("drop".equalsIgnoreCase(item.getNodeName()))
{
attrs = item.getAttributes();
 
final DropData data = new DropData();
data.setItemId(Integer.parseInt(attrs.getNamedItem("itemid").getNodeValue()));
data.setMinDrop(Integer.parseInt(attrs.getNamedItem("min").getNodeValue()));
data.setMaxDrop(Integer.parseInt(attrs.getNamedItem("max").getNodeValue()));
data.setChance(Integer.parseInt(attrs.getNamedItem("chance").getNodeValue()));
 
if (ItemTable.getInstance().getTemplate(data.getItemId()) == null)
{
_log.warning("Droplist data for undefined itemId: " + data.getItemId());
continue;
}
category.addDropData(data, true);
}
}
drops.add(category);
}
}
set.set("drops", drops);
}
 
else if ("set".equalsIgnoreCase(cat.getNodeName()))
{
attrs = cat.getAttributes();
 
set.set(attrs.getNamedItem("name").getNodeValue(), attrs.getNamedItem("val").getNodeValue());
}
 
else if ("teachTo".equalsIgnoreCase(cat.getNodeName()))
set.set("teachTo", cat.getAttributes().getNamedItem("classes").getNodeValue());
} 
}
set.clear(); 
}
catch (Exception e)
{
_log.log(Level.SEVERE, "NpcTable: Error parsing NPC templates : ", e);
}
_log.info("NpcTable: Loaded " + _feanor.size() + " NPC templates.");
}
 
public NpcTemplate getTemplate(int id)
{
return _feanor.get(id);
}
 
/**
* @param name to search.
* @return the template list of NPCs for a given name.
*/
public NpcTemplate getTemplateByName(String name)
{
for (NpcTemplate npcTemplate : _feanor.values())
{
if (npcTemplate.getName().equalsIgnoreCase(name))
return npcTemplate;
}
return null;
}
 
public static FeanorTable getInstance()
{
return SingletonHolder._instance;
}
 
private static class SingletonHolder
{
protected static final FeanorTable _instance = new FeanorTable();
}
}

1 answer to this question

Recommended Posts

  • 0
Posted

 

Hello, I'm trying to create a custom drop system, does anyone give me an idea? That's how it looks! Even registering in Gameserve.java is not running the drops

 

trying more :) :) :) :) :) :)

 

gl  8)

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