Jump to content

Recommended Posts

Posted (edited)

there a lot of posts like this but anyway ;D

u use .castle command and it shows up a html with all the castles so u can join in a siege

 

gameserver/handler/voicedcommandhandlers

 

create this

package com.l2jfrozen.gameserver.handler.voicedcommandhandlers;

import javolution.text.TextBuilder;

import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;

/**
 * @author te0x
 */
public class CastleManagersVCmd implements IVoicedCommandHandler
{
       private static final String[] VOICED_COMMANDS =
       {
               "castle",
       };
      
       @Override
       public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
       {
               if (command.startsWith("castle")) {
                       sendHtml(activeChar);
               }
               return true;
       }
      
       private void sendHtml(L2PcInstance activeChar)
       {
TextBuilder tb = new TextBuilder();
NpcHtmlMessage html = new NpcHtmlMessage(1);

tb.append("<html><head><title>Castle Manager</title></head>");
tb.append("<body>");      
tb.append("<center>");
tb.append("<table width=\"250\" cellpadding=\"5\" bgcolor=\"999999\">");
tb.append("<tr>");
tb.append("<td align=\"center\"><font color=\"FF4400\">Castles Panel</font>");
tb.append("<br1><font color=\"333333\">An easy way to participate in a castle siege</font>");
tb.append("<br1><font color=\"333333\">Be the Ruler!</font></td>");
tb.append("</tr>");
tb.append("</table>");
tb.append("</center>");
tb.append("<br>");
tb.append("<img src=\"l2ui.squaregray\" width=\"300\" height=\"1\">");
tb.append("<br>");
tb.append("<center>");
tb.append("<button value=\"Giran\" action=\"bypass -h giran\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\">");
tb.append("<table>");
tb.append("<tr><td><button value=\"Aden\" action=\"bypass -h aden\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td><td><button value=\"Rune\" action=\"bypass -h rune\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td></tr>");
tb.append("<tr><td><button value=\"Goddard\" action=\"bypass -h goddard\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td><td><button value=\"Schuttgart\" action=\"bypass -h schuttgart\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td></tr>");
tb.append("<tr><td><button value=\"Oren\" action=\"bypass -h oren\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td><td><button value=\"Innadril\" action=\"bypass -h innadril\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td></tr>");
tb.append("<tr><td><button value=\"Dion\" action=\"bypass -h dion\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td><td><button value=\"Gludio\" action=\"bypass -h gludio\" width=75 height=21 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td></tr>");
tb.append("</table>");
tb.append("</center>");
tb.append("<br>");
tb.append("<center>");
tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32><br>");
tb.append("</center>");
tb.append("<center>");
tb.append("</center>");
tb.append("</body></html>");

html.setHtml(tb.toString());
activeChar.sendPacket(html);
       }
      
       @Override
       public String[] getVoicedCommandList()
       {
               return VOICED_COMMANDS;
       }
} 

now network/clientpackets/RequestBypassToServer.java

put the import 


import com.l2jfrozen.gameserver.network.serverpackets.SiegeInfo;

import com.l2jfrozen.gameserver.managers.CastleManager;

import com.l2jfrozen.gameserver.model.entity.siege.Castle;

 

find this

			else if (_command.startsWith("OlympiadArenaChange"))
			{
				Olympiad.bypassChangeArena(_command, activeChar);
			}

below add these

			else if (_command.startsWith("gludio"))
			{
				int castleId = 1;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("dion"))
			{
				int castleId = 2;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("giran"))
			{
				int castleId = 3;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("oren"))
			{
				int castleId = 4;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("aden"))
			{
				int castleId = 5;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("innadril"))
			{
				int castleId = 6;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("goddard"))
			{
				int castleId = 7;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("rune"))
			{
				int castleId = 8;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}
			else if (_command.startsWith("schuttgart"))
			{
				int castleId = 9;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
			}

propably there is a better way to do this but this works also ^^

 

dont forget to register the voicedcommand. thats all ;D

Edited by te0x
Posted (edited)

here gave the error would not have to create a method in pcinstance?

int castleId = 9;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));
Edited by Wallisteer
Posted

 

here gave the error would not have to create a method in pcinstance?

int castleId = 9;
                Castle castle = CastleManager.getInstance().getCastleById(castleId);
                activeChar.sendPacket(new SiegeInfo(castle));

show our error here

Posted (edited)
the import error is thus lacking 
bele has created the most import error in this line here 
 
getCastleById 
 
 
 
unable to fix the error, with the help of eclipse 
 
compiled usual but then when I the command opens the window html 
 
al when I click the error in the console looks
 
eeefe.png

 

 

idiomta'm sorry the brasilheiro

Edited by Wallisteer
Posted

You do not need 10 times Castle castle = CastleManager.getInstance().getCastleById(castleId); .. only one line is enough..

Posted (edited)

well i forgot the imports

 

import com.l2jfrozen.gameserver.network.serverpackets.SiegeInfo;

import com.l2jfrozen.gameserver.managers.CastleManager;

import com.l2jfrozen.gameserver.model.entity.siege.Castle;

 

well try it and tell me

Edited by te0x
Posted (edited)

You do not need 10 times Castle castle = CastleManager.getInstance().getCastleById(castleId); .. only one line is enough..

actually now i am learning.. thats why they are badly coded ;D

thanks btw

Edited by te0x
Posted

You do not need 10 times Castle castle = CastleManager.getInstance().getCastleById(castleId); .. only one line is enough..

 

did not quite understand ... 
 

I got this error

 

eeefe.png

Posted

 

did not quite understand ... 
 

I got this error

 

eeefe.png

 

try to use the imports 

import com.l2jfrozen.gameserver.network.serverpackets.SiegeInfo;

import com.l2jfrozen.gameserver.managers.CastleManager;

import com.l2jfrozen.gameserver.model.entity.siege.Castle;

  • 2 weeks later...
Posted

1. convert the method to static
2. WTF is this?

tb.append("</center>");
tb.append("<center>");
tb.append("</center>");
tb.append("</body></html>");

3. you're supposed to use StringBuilder instead of TextBuilder

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • No complicated KYC, instant setup after purchase!  Boost your connection speed and secure your privacy today!  Official Website: https://novproxy.com?kwd=tt-max
    • I don't know this guy and I don't care about him or the server. What I want to say I already do it. And yes, it does seem like he has some mental problems to make up these stories. 
    • L2JForge Edition Update Revision: V1.0.119  Update: 15 June – 1 July 2026  Fixes & Improvements Fixed PawnShop pagination and inactive Community Board actions. Added thread-safe caching to the PawnShop system. Fixed MMOTopVote vote tracking. Fixed PvP Event participant cleanup. Restored the missing PvP Ranking broadcast. Improved CTF flag handling and zone validation. Added Try Skin / Hat Preview handlers to the Community Board. Improved character skin appearance refreshes without requiring a restart. Improved NPC positioning to reduce train and collision abuse. Fixed Seal of Ruler casting from invalid artifact positions. Added stricter castle artifact, range and height validation. Fixed character restoration stability during Enter World. Reworked Community Board Home, Shop, Bosses and Events sections. Added live Raid/Epic Boss status and respawn information. Added upcoming PvP and GvG event schedules. Integrated character services, settings and statistics into the Community Board. Moved Vote Rewards from a voiced command into the Character Menu in Community Board. Removed the obsolete Achievements / .rewards system.  Removed unused multilingual resources and simplified datapack loading. Improved datapack startup and HTML cache stability. Added automatic build revision and build-date metadata. Reorganized runtime libraries and standardized generated server jars. Refined the Player, Creature, GameClient, Clan and Frintezza systems. Performed extensive source cleanup and reliability improvements. Updated build configuration and repository exclusions.  Work in Progress Development continues with additional gameplay fixes, performance improvements, system cleanup and more upgrades already in progress..
    • this is how i feel about a 1 post acc clearly a friend of the scammers trying to defend it LOL anyways... i wish this wasnt real. i cant make this up.  
    • 𝐈𝐌𝐏𝐑𝐎𝐕𝐄𝐃 𝐂𝐋𝐀𝐒𝐒𝐈𝐂 𝟐.𝟓 - 𝐋𝐈𝐍𝐄𝐀𝐆𝐄 𝐈𝐈 𝐄𝐈𝐍𝐇𝐎𝐕𝐀𝐍𝐓 - Opening Date: 10th July 2026 - Time: 20:00 GMT+3 - Mid Rate x3 - Adena x3 - 100% Drop Rate - Quest Reward Adena x3 - Vitality System - Classic Zaken 2.5 Based - Improved Classic Gameplay - Improved Buff System - No Dual Box - No Pay to Win - 7 Members Party System - Dynamic Stages Progression - Reworked Support Classes - Reworked Skills & New Skills - New Skill Visual Effects - Improved Quests & Better Rewards - Daily Missions & Daily Quests - Weekly Solo Instances - In-Game Wiki with .wiki Command - Olympiad Rework - Castle Siege Improvements - Grand Boss & Raid Boss Progression ⚔ Designed to deliver a competitive, rewarding, and long-term Classic experience without destroying the original Lineage II feeling.   Don't forget to check the in-game wiki and discover all the unique features and gameplay improvements we prepared for you! Website: https://l2einhovant.net/en Discord: https://discord.gg/VfNngPrzaf Instagram: https://www.instagram.com/l2einhovant_classic/ Youtube: https://www.youtube.com/@L2Einhovant TikTok: https://www.tiktok.com/@vedi2300
  • 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..