Jump to content
  • 0

I Need Help To Fix This Java Code. L2Jserver Hi5 Stable(Trunk).


Question

Posted (edited)

I have this community board class master code, I tried to adapt it to my L2j Server and for some reason it doesn't work. I tried many different things to fix it and make it work but nothing. I got it to show the html on the community board but all it does is tell players that their class and witch level they can change classes. It is supposed to show buttons with the class available to then  when they reach the proper level to change class.

Can anyone take a look on it and see if you can help me fix it. I appreciate if anyone help.

Thank you.

 

Obs: No errors on Eclipse.

/*
 * 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://l2jpsproject.eu/>.
 */
package com.l2jserver.gameserver.communitybbs.Managers;

import java.util.StringTokenizer;

import javolution.text.TextBuilder;

import com.l2jserver.Config;
import com.l2jserver.gameserver.communitybbs.Manager.BaseBBSManager;
import com.l2jserver.gameserver.datatables.ItemTable;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.base.ClassId;
import com.l2jserver.gameserver.model.items.L2Item;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.util.Util;

public class ClassBBSManager extends BaseBBSManager
{
    private static ClassBBSManager _Instance = null;
    
    public static ClassBBSManager getInstance()
    {
        if (_Instance == null)
        {
            _Instance = new ClassBBSManager();
        }
        return _Instance;
    }
    
    @Override
    public void parsecmd(String command, L2PcInstance activeChar)
    {
        ClassId classId = activeChar.getClassId();
        int jobLevel = classId.level();
        int level = activeChar.getLevel();
        TextBuilder html = new TextBuilder("");
        html.append("<br>");
        html.append("<center>");
        if (Config.ALLOW_CLASS_MASTERS_LISTCB.isEmpty() || !Config.ALLOW_CLASS_MASTERS_LISTCB.contains(jobLevel))
        {
            jobLevel = 3;
        }
        if ((((level >= 20) && (jobLevel == 0)) || ((level >= 40) && (jobLevel == 1)) || ((level >= 76) && (jobLevel == 2))) && Config.ALLOW_CLASS_MASTERS_LISTCB.contains(jobLevel))
        {
            L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEMCB);
            html.append("Price for class is: <font color=\"LEVEL\">");
            html.append(Util.formatAdena(Config.CLASS_MASTERS_PRICE_LISTCB[jobLevel])).append("</font> <font color=\"LEVEL\">").append(item.getName()).append("</font> Really want one click class?<br>");
            for (ClassId cid : ClassId.values())
            {
                if (cid == ClassId.inspector)
                {
                    continue;
                }
                if (cid.childOf(classId) && (cid.level() == (classId.level() + 1)))
                {
                    html.append("<br><center><button value=\"").append(cid.name()).append("\" action=\"bypass -h _bbsclass;change_class;").append(cid.getId()).append(";").append(Config.CLASS_MASTERS_PRICE_LISTCB[jobLevel]).append("\" width=250 height=25 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_CT1.Button_DF\"></center>");
                }
            }
            html.append("</center>");
        }
        else
        {
            switch (jobLevel)
            {
                case 0:
                    html.append("Greetings " + activeChar.getName() + "! Your current class is <font color=F2C202>" + activeChar.getClassId().name() + "</font>.<br>");
                    html.append("Class level at: <font color=F2C202>20 level.</font><br>");
                    html.append("Class level at: <font color=F2C202>40 level.</font><br>");
                    html.append("Class level at:  <font color=F2C202>76 level.</font><br>");
                    break;
                case 1:
                    html.append("Congratulation " + activeChar.getName() + "! you are <font color=F2C202>" + activeChar.getClassId().name() + "</font>now.<br>");
                    break;
                case 2:
                    html.append("Greetings " + activeChar.getName() + "! Your current class is <font color=F2C202>" + activeChar.getClassId().name() + "</font>.<br>");
                    html.append("Class level at: <font color=F2C202>20 level.</font><br>");
                    html.append("Class level at:<font color=F2C202>40 level.</font><br>");
                    html.append("Class level at: <font color=F2C202>76 level.</font><br>");
                    break;
                case 3:
                    html.append("Greetings " + activeChar.getName() + "! Your current class is <font color=F2C202>" + activeChar.getClassId().name() + "</font>.<br>");
                    html.append("Congratulation !.<br>");
                    if (level >= 76)
                    {
                        html.append("Your level is over <font color=F2C202>76</font>! There is no more classes available to you.<br>");
                    }
                    break;
            }
        }
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
        adminReply.setFile(activeChar.getLang(), "data/html/CommunityBoard/5.htm");
        adminReply.replace("%classmaster%", html.toString());
        separateAndSend(adminReply.getHtm(), activeChar);
        
        if (command.startsWith("_bbsclass;change_class;"))
        {
            StringTokenizer st = new StringTokenizer(command, ";");
            st.nextToken();
            st.nextToken();
            short val = Short.parseShort(st.nextToken());
            int price = Integer.parseInt(st.nextToken());
            L2Item item = ItemTable.getInstance().getTemplate(Config.CLASS_MASTERS_PRICE_ITEMCB);
            L2ItemInstance pay = activeChar.getInventory().getItemByItemId(item.getItemId());
            if ((pay != null) && (pay.getCount() >= price))
            {
                activeChar.destroyItem("ClassMaster", pay, price, activeChar, true);
                changeClass(activeChar, val);
                parsecmd("_bbsclass;", activeChar);
            }
            else if (Config.CLASS_MASTERS_PRICE_ITEMCB == 57)
            {
                activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_NOT_ENOUGH_ADENA));
            }
            else
            {
                activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_NOT_ENOUGH_ADENA));
            }
        }
    }
    
    private void changeClass(L2PcInstance activeChar, short val)
    {
        if (activeChar.getClassId().level() == ClassId.values()[val].level())
        {
            return;
        }
        
        if (activeChar.getClassId().level() == 3)
        {
            activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THIRD_CLASS_TRANSFER));
        }
        else
        {
            activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CLASS_TRANSFER));
        }
        activeChar.setClassId(val);
        
        if (activeChar.getClassId().level() == 2)
        {
            activeChar.getInventory().addItem("bbsClassManager", 6622, 1L, activeChar, null);
        }
        
        if (activeChar.isSubClassActive())
        {
            activeChar.getSubClasses().get(Integer.valueOf(activeChar.getClassIndex())).setClassId(activeChar.getActiveClass());
        }
        else
        {
            if (activeChar.getClassId().level() == 0)
            {
                activeChar.getInventory().addItem("bbsClassManager", 8869, 15L, activeChar, null);
            }
            else if (activeChar.getClassId().level() == 1)
            {
                activeChar.getInventory().addItem("bbsClassManager", 8870, 15L, activeChar, null);
            }
            
            activeChar.setBaseClass(activeChar.getActiveClass());
        }
        
        if (activeChar.getClassId().getId() == 97)
        {
            activeChar.getInventory().addItem("bbsClassManager", 15307, 1L, activeChar, null);
        }
        else if (activeChar.getClassId().getId() == 105)
        {
            activeChar.getInventory().addItem("bbsClassManager", 15308, 1L, activeChar, null);
        }
        else if (activeChar.getClassId().getId() == 112)
        {
            activeChar.getInventory().addItem("bbsClassManager", 15309, 4L, activeChar, null);
        }
        
        activeChar.broadcastUserInfo();
    }
    
    @Override
    public void parsewrite(String ar1, String ar2, String ar3, String ar4, String ar5, L2PcInstance activeChar)
    {
    }
}

<html>
	<body><br>
			<center>
			
			<center><table>
				<tr>
					<td  width="500" align="center" border="0" cellpadding="0" cellspacing="0" ><center>%classmaster%</center></td>
				</tr>
			</table><br><br><br><br>
			
			
					
	</body>
</html>
Edited by disorder25

3 answers to this question

Recommended Posts

  • 0
Posted

Are you sure that condition is reached ?

 

ALLOW_CLASS_MASTERS_LISTCB must contain allowed classes.

if ((((level >= 20) && (jobLevel == 0)) || ((level >= 40) && (jobLevel == 1)) || ((level >= 76) && (jobLevel == 2))) && Config.ALLOW_CLASS_MASTERS_LISTCB.contains(jobLevel))
Guest
This topic is now closed to further replies.


  • Posts

    • Damn there are still people that value Lineage! Great job Elfo as always!
    • Payment Methods Credit/Debit Card, PayPal, Wise, Payoneer, Binance Pay, Bybit, Crypto, and other supported payment options depending on availability. Delivery Time / TAT General delivery time: Instants to 24 hours Depended on Products. Some products may take longer depending on stock, account eligibility, product type, payment confirmation, or activation requirements. Refund & Replacement Policy If we cannot deliver the product within the confirmed delivery time and you do not want to wait, you are eligible for a refund. If the account, gift link, gift code, or activation does not work at first login/activation, please contact us within 24 hours with screen recording proof before start purchasing. If the product is successfully delivered and activated, refund is not available unless a specific warranty was mentioned for that product. Warranty period depends on the product type. Some products may include replacement support for a limited period. Please ask before ordering if warranty is important. No refund/replacement is available if the buyer shares account details, changes recovery/security settings without asking, uses VPN/proxy in a risky way, violates platform rules, fails to provide proof, or changes their mind after successful use. If a platform changes its policy, eligibility, country availability, or subscription system after delivery, we will try to help, but we cannot control third-party platform changes. Important Notes Stock may be limited for some products at klouditem. Prices may change depending on market, stock, and product availability. Some services may require your personal email/account for upgrade. Some services are ready-made accounts only. Some products may have country or account eligibility requirements. Please read the product details before ordering. We do not claim to be an official partner of any platform unless clearly stated by the platform itself. Product names and logos belong to their respective owners. Review Copies Review copies are not always available. If we open a review copy round, we will announce it in this thread and select qualified members based on account history, activity, and availability. Please do not request review copies unless we have announced them. FAQ Q: Do you deliver instantly? A: Delivery is usually Instant to 24 hours, depending on stock and payment confirmation. Q: Can I upgrade my own account? A: Some services support own account upgrade, while others are ready-made account only. Please ask before ordering. Q: Do you provide support after delivery? A: Yes, we provide support for login, activation, and basic setup issues related to the delivered product. Q: Can I check stock before payment? A: Yes, please ask before payment. We will confirm stock and delivery time first. Q: Are prices fixed? A: Some prices are fixed, and some depend on stock/package. Q: What should I do if I face an issue? A: Contact us as soon as possible with clear screenshot or screen recording proof from purchase, and we will check it.   Contact Buy Now: https://klouditem.com Telegram Support: https://t.me/Klouditem
    • https://prnt.sc/MCxO-vS1MHuA how to zoom in? and on every click ad popup.. nonsense.
    • A new template is available: https://tplbox.store/umbroria-html-template    
  • 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..