All pastes #23343 Raw Edit

Something

public text v1 · immutable
#23343 ·published 2005-09-19 13:50 UTC
rendered paste body
package net.sf.l2j.gameserver.model;

import java.util.StringTokenizer;
import java.util.logging.Logger;

import net.sf.l2j.gameserver.ItemTable;
import net.sf.l2j.gameserver.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;

public class L2CastleChamberlainInstance extends L2NpcInstance
{
    private static Logger _log = Logger.getLogger(L2CastleChamberlainInstance.class.getName());
    private static int _castle = -1;    // chamberlain castle

    public L2CastleChamberlainInstance(int objectId, L2NpcTemplate template)
    {
        super(objectId, template);
        
        switch(template.npcId)
        {
            case 12255:
                _castle = 5;    // aden
                break;
            case 12252:
                _castle = 2;    // gludio
            default:
        }
    }
    
    public void onBypassFeedback(L2PcInstance player, String command)
    {
        // normally, we shouldn't recive 'bypass' if talker != castle owner
        // only castle owner allowed to talk with chamberlain
        if(player.getClan().getHasCastle() != _castle)
        {
            _log.info("Player "+player.getName()+" trying to exploit castle chamberlain, ban this player!");
            return;
        }

        //TODO: remove 'chat' handler, not requires overriding 
        if (command.startsWith("Chat"))
        {
            int val = Integer.parseInt(command.substring(5));
            showChatWindow(player, val);
        }
        else if(command.startsWith("manor")) // manor control
        {
            StringTokenizer st = new StringTokenizer(command);
            int val = Integer.parseInt(st.nextToken().substring(6));
            switch(val)
            {
                case 1: // view/edit manor stats
                    //showChatWindow(player,L2Manor.getInstance().getCropReward(_castle));
                    NpcHtmlMessage msg = new NpcHtmlMessage(1);
                    msg.setHtml(L2World.getInstance().getCastle(_castle).getRewards().replace("%objectId%",String.valueOf(getObjectId())));
                    player.sendPacket(msg);
                    player.sendPacket(new ActionFailed());
                    break;
                case 2: // set reward type
                    int cropId = Integer.parseInt(st.nextToken());
                    int reward = Integer.parseInt(st.nextToken());
                    L2World.getInstance().getCastle(_castle).setRewardType(cropId,reward);
                    break;
                case 3: // edit reward
                    int crop = Integer.parseInt(st.nextToken());
                    int currentReward = Integer.parseInt(st.nextToken());
                    msg = new NpcHtmlMessage(1);
                    msg.setHtml(pageEditManor(crop,currentReward));
                    player.sendPacket(msg);
                    player.sendPacket(new ActionFailed());
                    break;
                default:
                    _log.info("Invalid bypass "+command+" by "+player.getName()+", hack?");
            }
        }
        else if(command.startsWith("tax")) // tax rates control
        {
            StringTokenizer st = new StringTokenizer(command);
            int val = Integer.parseInt(st.nextToken().substring(4));
            switch(val)
            {
                case 1:     // show current tax rates
                    int currentRate = L2World.getInstance().getCastle(_castle).getTaxRate();
                    NpcHtmlMessage msg = new NpcHtmlMessage(1);
                    msg.setHtml("<html><body><font color=\"LEVEL\">Current tax rate:</font> "+currentRate+"</body></html>");
                    player.sendPacket(msg);
                    player.sendPacket(new ActionFailed());
                    break;
                case 2:     // adjust tax rates
                    int newRate = Integer.parseInt(st.nextToken());
                    L2World.getInstance().getCastle(_castle).setTaxRate(newRate);
                    break;
                default:
                    _log.info("Invalid bypass "+command+" by "+player.getName()+", hack?");
            }
        }
        else if(command.startsWith("move_out")) // move guests out of castle
        {
            
        }
    }
    
    public String getHtmlPath(int npcId, int val)
    {
        if(val !=0 )
            return "data/html/chamberlain/" + npcId + "-" + val + ".htm";
        else
            return "data/html/chamberlain/" + npcId + ".htm";
    }
    
    public String pageEditManor(int crop, int current)
    {
        String text = "<html><body><table width=270 bgcolor=\"111111\">";
        text += "<tr><td>Crop</td><td>Type I reward</td><td>Type II reward</td></tr>";
        text += "</table><table width=270>";
        
        String cropName = ItemTable.getInstance().getTemplate(crop).getName();
        String reward1Name = ItemTable.getInstance().getTemplate(L2Manor.getInstance().getRewardItem(crop,1)).getName();
        String reward2Name = ItemTable.getInstance().getTemplate(L2Manor.getInstance().getRewardItem(crop,2)).getName();
        int reward1Amount = L2Manor.getInstance().getRewardAmount(crop,1);
        int reward2Amount = L2Manor.getInstance().getRewardAmount(crop,2);
        
        text += "<tr><td><font color=\"LEVEL\">"+cropName+"</font></td><td><a action=\"bypass -h npc_"+getObjectId()+"_manor_2 "+crop+" 1\">"+reward1Name+"/"+reward1Amount+"</a></td><td><a action=\"bypass -h npc_"+getObjectId()+"_manor_2 "+crop+" 2\">"+reward2Name+"/"+reward2Amount+"</a></td></tr>";
        
        text += "</table></body></html>";
        return text;
    }
}