Jump to content
  • 0

Don't know how to adapt this


Question

Posted

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

6 answers to this question

Recommended Posts

  • 0
Posted

 

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

  • 0
Posted

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.

  • 0
Posted

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 !

  • 0
Posted
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

Guest
This topic is now closed to further replies.


  • Posts

    • Vesper Noble heavy set (RAR) 1800 att - 150e Eternal Core Dualsword +6 300 att 130e Ring of Baium 130e AQ ring 100e Antharas Earring 200e   Paypal payments only DM in discord narttu123
    • L2REBORN x10 - 1gb - 4.2$ l2reborn x1 ( signature ) - 1kk - 1.3$ LU4 - 1kk - 2.3$ MASTERWORRK - 1kk - 3.8kk  discord - adver745645
    • Hello, Skill Activation: The activation options from the Alt+K window work perfectly. However, when activating them from the skill bar, there is still a delay of approximately 1 second. I need to remove that delay
    • --- Interlude Faction/GvE PvP grand opening 2025-11-15 19:00 GMT+2 ---   Gameplay: Chronicle: Interlude Type: Faction/GvE (Angels vs Nature vs Demons) GM Shop: B-S grade Buff slots: 20+4 Starting level: 74 + rebirth system   New Features: Client: Modern interface based on Essence Balance: New class skills for better balance Achievement Rewards: Daily, Weekly, One-time TOP rankings: PvP, Event PvP, Map PvP, Clan PvP, Event MvP, Map MvP Zones: 70 different PvP zones,  18 different events (8 map events | 10 main events) 12 Grand/raid bosses. Castle siege Olympiad Clan Hall challenge Custom Enchant System: Dynamic success chance (greater enchant level or item grade less enchanting success chance) Enchant rate: Blessed scrolls dynamic from 100% to 25%. Crystal Scrolls: 100%; Max enchant weapon +12 Max enchant armor +8 Safe point enchant system Extra Features: PvP items with level upgrade Weapon/Armor upgrade (from B grade to S) system Attributes system   Website: https://l2cygnus.com Community: Discord Facebook: https://www.facebook.com/l2cygnus Youtube:   
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock