Jump to content
  • 0

Don't know how to adapt this


lyrien

Question

Hi to everyone. i'm making this thread to find any help

 

Im new on the world of l2 servers, im using free source of acis (rev 382) and cannot ad this code to my project 

 

/*
 * 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.data.xml;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

import net.sf.l2j.gameserver.enums.items.CrystalType;
import net.sf.l2j.gameserver.model.L2EnchantScroll;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

/**
 * @author Thug
 *
 */
public class EnchantData
{
       private static Logger _log = Logger.getLogger(EnchantData.class.getName());
      
       private static final Map<Integer, L2EnchantScroll> _map = new HashMap<>();
      
       public static EnchantData getInstance()
       {
               return SingletonHolder._instance;
       }
      
       protected EnchantData()
       {
               try
               {
                       File f = new File("./data/xml/enchants.xml");
                       Document doc = XMLDocumentFactory.getInstance().loadDocument(f);
                      
                       for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
                       {
                               if ("list".equalsIgnoreCase(n.getNodeName()))
                               {
                                       for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
                                       {
                                               if ("enchant".equalsIgnoreCase(d.getNodeName()))
                                               {
                                                       NamedNodeMap attrs = d.getAttributes();
                                                      
                                                       int id = Integer.valueOf(attrs.getNamedItem("id").getNodeValue());
                                                       byte grade = Byte.valueOf(attrs.getNamedItem("grade").getNodeValue());
                                                       boolean weapon = Boolean.valueOf(attrs.getNamedItem("weapon").getNodeValue());
                                                       boolean breaks = Boolean.valueOf(attrs.getNamedItem("break").getNodeValue());
                                                       boolean maintain = Boolean.valueOf(attrs.getNamedItem("maintain").getNodeValue());
                                                      
                                                       String[] list = attrs.getNamedItem("chance").getNodeValue().split(";");
                                                       byte[] chance = new byte[list.length];
                                                       for (int i = 0; i < list.length; i++)
                                                               chance[i] = Byte.valueOf(list[i]);
                                                      
                                                       CrystalType grade_test = CrystalType.NONE;
                                                       switch (grade)
                                                       {
                                                               case 1:
                                                                       grade_test = CrystalType.D;
                                                                       break;
                                                               case 2:
                                                                       grade_test = CrystalType.C;
                                                                       break;
                                                               case 3:
                                                                       grade_test = CrystalType.B;
                                                                       break;
                                                               case 4:
                                                                       grade_test = CrystalType.A;
                                                                       break;
                                                               case 5:
                                                                       grade_test = CrystalType.S;
                                                                       break;
                                                       }                                                      
                                                      
                                                       _map.put(id, new L2EnchantScroll(grade_test, weapon, breaks, maintain, chance));
                                               }
                                       }
                               }
                       }
                              
                       _log.info("EnchantTable: Loaded " + _map.size() + " enchants.");
               }
               catch (Exception e)
               {
                       _log.warning("EnchantTable: Error while loading enchant table: " + e);
               }
       }
      
       public L2EnchantScroll getEnchantScroll(ItemInstance item)
       {
               return _map.get(item.getItemId());
       }
      
       private static class SingletonHolder
       {
               protected static final EnchantData _instance = new EnchantData();
       }
}

 

i have errors in the lines:

// -> import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory;


// -> Document doc = XMLDocumentFactory.getInstance().loadDocument(f);

 

i will be so grateful if someone could help me

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

 

Hey thanks for your reply ... I try to copy the way what i found at class (MultisellData.java) and did this:

 

public class EnchantData implements IXmlReader
{
	private static Logger _log = Logger.getLogger(EnchantData.class.getName());
	private static final Map<Integer, L2EnchantScroll> _map = new HashMap<>();
	
	public EnchantData()
	{
		load();
	}

	@Override
	public void load()
	{
		parseFile("data/xml/enchants.xml");
	}

	@Override
	public void parseDocument(Document doc, Path path)
	{
		try
		{
			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
	        {
	                if ("list".equalsIgnoreCase(n.getNodeName()))
	                {
	                        for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
	                        {
	                                if ("enchant".equalsIgnoreCase(d.getNodeName()))
	                                {
	                                        NamedNodeMap attrs = d.getAttributes();
	                                       
	                                        int id = Integer.valueOf(attrs.getNamedItem("id").getNodeValue());
	                                        byte grade = Byte.valueOf(attrs.getNamedItem("grade").getNodeValue());
	                                        boolean weapon = Boolean.valueOf(attrs.getNamedItem("weapon").getNodeValue());
	                                        boolean breaks = Boolean.valueOf(attrs.getNamedItem("break").getNodeValue());
	                                        boolean maintain = Boolean.valueOf(attrs.getNamedItem("maintain").getNodeValue());
	                                       
	                                        String[] list = attrs.getNamedItem("chance").getNodeValue().split(";");
	                                        byte[] chance = new byte[list.length];
	                                        for (int i = 0; i < list.length; i++)
	                                                chance[i] = Byte.valueOf(list[i]);

 

well it's work fine to me because don't get erros and on live works good each enchant config...

Obviously if someone know Java more than me could say: "dude u are so wrong.." 

So if someone could say if this it's ok or i must do anything more will be so grateful

btw thanks again @Zake

Link to comment
Share on other sites

  • 0

XMLDocumentFactory was deleted on rev 382, it has been replaced by IXmlReader a while back (377). Simply check classes using IXmlReader, it produces far lesser code.

Link to comment
Share on other sites

  • 0

Well i did it if u check my second reply whit new code using the implements of IXmlReader and don't get any problem so i can say i did right...

Thanks to all, can close the topic !

Link to comment
Share on other sites

  • 0
3 hours ago, lyrien said:

Well i did it if u check my second reply whit new code using the implements of IXmlReader and don't get any problem so i can say i did right...

Thanks to all, can close the topic !

locked

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Posts

    • rename the l2.bin into l2.exe
    • L2LIVE.PRO- Dynamic Mid-rates Essence Seven Signs GRAND OPENING - July 5, 20:00 GMT+3 (EEST) TEST SERVER IS OPEN - COME AND CHECK IT OUT TODAY! Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu   Server description * EXP/SP: Dynamic (x1- x100 based on your level, *before* Sayha and EXP buffs * Adena: x50 / Item Drop: x10 / Fishing EXP increased / Attribute EXP increased * Simplified gameplay to stay in the loop while not spending hours and hours farming * Starter Pack containing very useful items for beginners * MP replenishing potions with auto-consumption * No overpowered donations L2LIVE shop * All spellbook coupons, pet spellbook coupons and master books are sold via Game Assistant * Additionally you can buy SP pouches, enchanted talismans, pet training guides and various other consumables for Adena and L-Coin * More items such as cloaks, more talismans, agathions, belts, pendants, enchantment scrolls of various grades, evolution stones, etc will be added! Shop server as a shortcut, and all retail-like ways of earning items are still here! L-Coins * Drops with small change and in random amounts from Lv60+ monsters  * All raidbosses drop random amount of L-Coin Pouches generating up to 420 Lcoin per unit. **Grand Olympiad and Events** * Grand Olympiad is held week day * Format is 1v1, unlimited weekly fights  * Heroes are declared weekly at Sunday * There are three automated events - TvT, CTF and Deathmatch, running at evenings * Orc Fortress, Battle with Balok, Keber Hunter, Archievements Box, Daily Gift Calendar provisional events are active too Custom user commands * .offlineplay command, your character will keep playing till death or server restart * .offlineshop command, keeps your shop sitting until all items are purchased * .apon / .apoff - enable/disable HP/MP autoconsume And lots of other small improvements are waiting for you!   Join our community and be part of it at: https://www.l2live.pro https://discord.gg/k3NMgR4Dmu
    • I can use this folder system for High Five offline server?   The folder does not have a l2.exe file.   Thank you very much if anyone can help me.   https://drive.google.com/file/d/13kU-g_4JJ-sP-kg2F7pqkUOVKmQdubFm/view
  • Topics

×
×
  • Create New...