Hello , ive found on forum this code and added it to my project , i am using it for shift + click and lucky chest feature , so that when you open a chest an htm window appears and tells you what item you obtained , count and adds the icon of the item.
Problem is that everytime shift + click is requested or opening chest , all 10k icons loads and i get this message on gs log:
IconsTable: Succesfully loaded 9209 icons, in 17.0 Milliseconds.
the code im using is this:
package net.sf.l2j.gameserver.datatables;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import net.sf.l2j.gameserver.GameServer;
import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
public class IconsTable
{
public static final Map<Integer, String> Icons = new HashMap<>();
private static int count;
private static long t0;
private static double t;
private static final Logger _log = Logger.getLogger(GameServer.class.getName());
public void reload()
{
Icons.clear();
parseData();
}
public static void parseData()
{
count=0;
t0 = System.currentTimeMillis();
try
{
File f = new File("./data/xml/icons.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 (d.getNodeName().equalsIgnoreCase("icon"))
{
count++;
NamedNodeMap attrs = d.getAttributes();
Node att = attrs.getNamedItem("Id");
Node att2 = attrs.getNamedItem("value");
Icons.put(Integer.valueOf(att.getNodeValue()), String.valueOf(att2.getNodeValue()));
}
}
}
}
t = System.currentTimeMillis() - t0;
_log.config("IconsTable: Succesfully loaded "+count+" icons, in "+t+" Milliseconds.");
}
catch (Exception e)
{
_log.config("IconsTable: Failed loading IconsTable. Possible error: "+e.getMessage());
}
}
public static String getIcon(int id)
{
if (Icons.get(id)==null)
{
_log.config("IconsTable: Invalid Icon request: "+id+", or it doesn't exist, Ignoring ...");
return "null";
}
return Icons.get(id);
}
public static final IconsTable getInstance()
{
parseData();
return SingletonHolder._instance;
}
private static class SingletonHolder
{
protected static final IconsTable _instance = new IconsTable();
}
}
and when i want to get the icon i use this
IconsTable.getInstance().getIcon(ITEMID)) , what i need to know is that if there isn't any way to store all this 10k icons , and load them only once , not for every request to get icon..
EDIT: PROBLEM SOLVED , HERE IS THE FIX
public static String getIcon(int id)
{
if (Icons.get(id)==null)
{
parseData();
_log.config("IconsTable: Invalid Icon request: "+id+", or it doesn't exist, Ignoring ...");
return "null";
}
return Icons.get(id);
}
public static final IconsTable getInstance()
{
return SingletonHolder._instance;
}
i had to remove parsedata(); from the getInstance() and add it after if(icons.get(id)==null) , hope that this won't slowdown server much
what do u mean i want to change the normal weapons some weapons are working perftect some not getting th effect and the arcana has the effect above the weapons as u see ... i dont what is the probkenm
Stop paying for files that are already public and free.
Here you can download a fully working Interlude server with C4-like gameplay, including source code so you can compile it yourself and verify everything.
People will try to convince you that free releases are “broken”, “full of backdoors”, etc.
That’s exactly why I’m also providing the SVN with the full source – so you can:
Review the code yourself
Remove / modify whatever you don’t like
Compile your own binaries
What’s included
GX-EXT Interlude server (C4-style gameplay) – L2Off
Client Interlude tweaked for C4 gameplay
Public SVN with source code
Downloads:
Server GX-EXT:
https://www.mediafire.com/file/q5ipkjd36tnhfxv/L2OFF_C4_C4_ACU_GXEXT.rar/file
Client Interlude C4 Gameplay:
https://www.mediafire.com/file/rdkfc8wwau042oh/Cliente_Interlude_Jugabilidad_C4.rar/file
SVN (source code, delayed a couple of months to avoid reselling fresh work):
https://svn.l2servers.com.ar/!/#GX-EXT_INTERLUDE
User: gx
Pass: gx
How to compile
To compile the source you will need:
Visual Studio 2005 (x64 toolset)
(Classic L2Off toolchain – yes, it’s old, but that’s what the original server uses.)
Use this as you want: learn, test, open your own server, or just audit the code.
But please, stop buying the same leaked/resold files over and over when you can get them here for free, with source, and actually know what you’re running.
hello guys im facing a problem with the weapons .. i want to add hero glow on s weapons arcana ,dragonic bow etc.. some weapons are work peftect .. some not for example i add the line
LineageEffect.e_u092_h for fists and didnt work didnt even get the hero glow.. and the arcana the glow is on the top of weapon not down side like hero zeus mace any ideas?.. or does anybody has the weapongrp.dat file ready ?
Question
arm4729
Hello , ive found on forum this code and added it to my project , i am using it for shift + click and lucky chest feature , so that when you open a chest an htm window appears and tells you what item you obtained , count and adds the icon of the item.
Problem is that everytime shift + click is requested or opening chest , all 10k icons loads and i get this message on gs log:
IconsTable: Succesfully loaded 9209 icons, in 17.0 Milliseconds.
the code im using is this:
and when i want to get the icon i use this
IconsTable.getInstance().getIcon(ITEMID)) , what i need to know is that if there isn't any way to store all this 10k icons , and load them only once , not for every request to get icon..
EDIT: PROBLEM SOLVED , HERE IS THE FIX
public static String getIcon(int id) { if (Icons.get(id)==null) { parseData(); _log.config("IconsTable: Invalid Icon request: "+id+", or it doesn't exist, Ignoring ..."); return "null"; } return Icons.get(id); } public static final IconsTable getInstance() { return SingletonHolder._instance; }i had to remove parsedata(); from the getInstance() and add it after if(icons.get(id)==null) , hope that this won't slowdown server much
Edited by arm47292 answers to this question
Recommended Posts