Jump to content

Recommended Posts

Posted

Well, I saw that in a few servers and wrote it..

It's simple..

When the player presses .info an html window pops up and shows the infos of the server.

ofc the server's admin sets the proper information at the ServerInfos.htm file.

 

Idea came first from L2jArchid!

Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/ServerInfos.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/ServerInfos.java	(revision 0)
+++ java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/ServerInfos.java	(revision 0)
@@ -0,0 +1,56 @@
+/*
+ * 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.handler.voicedcommandhandlers;
+
+import java.util.logging.Logger;
+
+import net.sf.l2j.gameserver.GameServer;
+import net.sf.l2j.gameserver.cache.HtmCache;
+import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
+
+public class ServerInfos implements IVoicedCommandHandler
+{
+	private static final String[] VOICED_COMMANDS = {"info"};
+
+	private static final Logger _log = Logger.getLogger(GameServer.class.getName());
+	
+	public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
+	{
+		if (command.equalsIgnoreCase("info"))
+		{
+			String htmFile = "data/html/ServerInfos.htm";
+			String htmContent = HtmCache.getInstance().getHtm(htmFile);
+			if (htmContent != null)
+			{
+				NpcHtmlMessage infoHtml = new NpcHtmlMessage(1);
+				infoHtml.setHtml(htmContent);
+				activeChar.sendPacket(infoHtml);
+			}
+			else
+			{
+				activeChar.sendMessage("Function temporary disabled.");
+				_log.info("Failed to load ServerInfos file!");
+			}
+			return true;
+		}
+		return false;
+	}
+	
+	public String[] getVoicedCommandList()
+	{
+		return VOICED_COMMANDS;
+	}
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java	(revision 251)
+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -236,6 +236,7 @@
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.res;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.stat;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.stats;
+import net.sf.l2j.gameserver.handler.voicedcommandhandlers.ServerInfos;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.status;
import net.sf.l2j.gameserver.handler.voicedcommandhandlers.tradeoff;
import net.sf.l2j.gameserver.idfactory.IdFactory;
@@ -714,6 +715,9 @@
		if(Config.L2JMOD_ALLOW_WEDDING)
			_voicedCommandHandler.registerVoicedCommandHandler(new Wedding());

+		if(Config.ENABLE_INFOS_VC)
+			_voicedCommandHandler.registerVoicedCommandHandler(new ServerInfos());
+		
		if(Config.BANKING_SYSTEM_ENABLED)
		 	_voicedCommandHandler.registerVoicedCommandHandler(new Banking());

Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java	(revision 252)
+++ java/net/sf/l2j/Config.java	(working copy)
@@ -405,6 +405,7 @@
    public static int WAREHOUSE_SLOTS_DWARF;
    public static int WAREHOUSE_SLOTS_CLAN;
    public static int FREIGHT_SLOTS;
+ 	public static boolean		ENABLE_INFOS_VC;
    public static int     KARMA_MIN_KARMA;
    public static int     KARMA_MAX_KARMA;
    public static int     KARMA_XP_DIVIDER;
@@ -1219,6 +1220,7 @@
                EFFECT_CANCELING    = Boolean.valueOf(otherSettings.getProperty("CancelLesserEffect", "True"));
                WYVERN_SPEED        = Integer.parseInt(otherSettings.getProperty("WyvernSpeed", "100"));
                STRIDER_SPEED       = Integer.parseInt(otherSettings.getProperty("StriderSpeed", "80"));
+                ENABLE_INFOS_VC     = Boolean.parseBoolean(otherSettings.getProperty("InfosVoicedCommand", "False"));
                ALLOW_WYVERN_UPGRADER     = Boolean.valueOf(otherSettings.getProperty("AllowWyvernUpgrader", "False"));

                /* Inventory slots limits */
Index: java/config/Main/other.properties
===================================================================
--- java/config/Main/other.properties	(revision 245)
+++ java/config/Main/other.properties	(working copy)
@@ -164,3 +164,9 @@
# If yes, then leave is as True
# If not, then change it to False
AllowToHitNPCs = True
+
+# Allo the use of .info command?
+# An html window pops up and shows infos to the player
+# the admin sets what the html window will show from
+# the file at data/html/ServerInfos.htm
+InfosVoicedCommand = False
\ No newline at end of file
#P dp_development
Index: data/html/ServerInfos.htm
===================================================================
--- data/html/ServerInfos.htm	(revision 0)
+++ data/html/ServerInfos.htm	(revision 0)
@@ -0,0 +1,9 @@
+<html>
+<body>
+<center>
+Hello dear L2 player!
+</center>
+<br>
+Admin sets the infos here!
+</body>
+</html>

 

It is configurable.

 

PS: For gracia register the command at MasterHandler.java

PS2: The log warning and the message to the player can be skipped.. They will just inform the admin that something is wrong with the file..

 

Regards.

Posted

Why You Make Config?

 

Why not?

They can disable it whenever they want.

 

Plus that projects can copy/paste it without spending hours to set the configuration xDD

Posted

If anyone has tested it, inform me, since I just wrote it.

I am almost sure that it works, although having tested it isn't bad.

 

forget it i make a mistake

 

=P

Posted

I think it's already shared as an example in matim's guide.

 

Anyway , keep it up.

 

nop, I didn't find something like that at the stickied guide.

But still, it's such an easy code.

I actually combined the two things I showed in my last guide, to use it as an example.

Posted

Why i think is the same and you just put more useless lines... as this

 

}

+ return true;

+ }

+ return false;

 

You return true but also false? is necesary to add a _log info in your gameserver? if all characters press it and will make full of logs all your gs console...

 

 

 

http://www.maxcheaters.com/forum/index.php?topic=27544.0

 

 

Posted

Why i think is the same and you just put more useless lines... as this

 

}

+ return true;

+ }

+ return false;

 

You return true but also false? is necesary to add a _log info in your gameserver? if all characters press it and will make full of logs all your gs console...

 

 

 

http://www.maxcheaters.com/forum/index.php?topic=27544.0

 

 

 

1) There are two return values: One for action and one for the whole shit. About the console spamming, it's better to be warned and act, than w8 to realise that it's not working, after some weeks. Plus that fixing an html is less than 5 minutes work, so you won't be spammed for much time.

2) Just saw the topic, it was on English Dev section, so I didn't notice it. You can lock the topic, if you are willing to, though.

Let me remind you that I showed people the result of this.

Posted

Hmmm, nice. But please give credits.

 

Credits?

Do you think that I find any difficulities setting an html windows that pops up, so that I'll need to leech the code?

I am not anyone professional, but that's rediculous.

lol.

Posted

Credits?

Do you think that I find any difficulities setting an html windows that pops up, so that I'll need to leech the code?

I am not anyone professional, but that's rediculous.

lol.

You might codded this, I don't doubt it. But give credits to one who made it first.

Posted

You might codded this, I don't doubt it. But give credits to one who made it first.

 

I dunno which project made it first.

Skylancer talked about dot, if this is sure, then I'll do so.

Posted

I dunno which project made it first.

Skylancer talked about dot, if this is sure, then I'll do so.

 

Archid made it first... dot is c/p of archid must of il project are c/p of archid...

 

Exept L2J,L2JFree emu, umbrela ;]

Guest
This topic is now closed to further replies.


  • Posts

    • 🔥 L2Pride Interlude by DVP is NOW LIVE! 🔥 📅 Opened on June 10, 2026 at 21:00 GMT+2 ⚔️ The server is currently in the Tier 1 stage, giving everyone a fair chance to gear up and compete. 🔓 Tier 2 Items will be unlocked on June 27, 2026! ✅ Active players ✅ Stable server ✅ Competitive PvP ✅ Growing community Whether you're a solo player, clan leader, or PvP enthusiast, now is the perfect time to join and prepare for the next stage of progression. See you in-game, warriors! ⚔️ WEB: www.l2pride.ddns.net DISCORD: https://discord.gg/JVdpESC5Ry
    • Stock updates constantly. Only top items are posted on the forum. For current availability and ordering, message us on Telegram.   G2G Business 🇪🇺 EU Fully verified seller's account.   Revolut Business 🇪🇺 EU | Multi-currency IBAN, Virtual & physical cards, Instant SEPA transfers, ₿ Crypto exchange & settlements.   SumUp Business 🇬🇧 GB | POS, 1 physical card, 2 virtual cards. Payouts time: 1 day even on weekends and bank holidays, Multi-user access.   Vivid Business | Merchant POS, DE IBAN, up to 50 IBANs, SEPA Instant, unlimited transfers, up to 25 virtual and 3 physical cards.
    • 🔎 Find us: 👉🏼 Website: L2Dexter.eu 👉🏼 Discord: discord.gg/dttX9FE23W 👉🏼 Facebook: facebook.com/L2Dexter
    • G Support: https://t.me/buyingproxysup | Channel: https://t.me/buyingproxycom Discord support: #buyingproxy | Server: Join the BuyingProxy Discord Server!  Create your free account here
    • REAL PHOTOS ALWAYS «BREAK» ▪ Think a high-quality photo should be perfect? Think again. In real shots, something is almost always “off”: ▪ Noise in the shadows — especially noticeable in low light ▪ Local overexposures on highlights and glossy surfaces ▪ Loss of fine details in the brightest and darkest areas ▪ Overall “dirt” and unevenness that no editor can fully remove ▪  It’s exactly these imperfections that make the frame look alive. Algorithms already know well: a sterile clean image without these “flaws” is almost always a fake. Reality is never perfect. A fake tries to be.  Want photos that look genuinely “broken,” like they were taken on a real phone? Write to us — we’ll make even the flaws work in your favor. › TG: @mustang_service_ms ( https:// t.me/ mustang_service_ms ) › Channel: Mustang Service ( https:// t.me/ +JPpJCETg-xM1NjNl ) #documents #drawing #photoshop #verication #fake
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..