123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- /*
- * 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 handlers.admincommandhandlers;
- import java.util.List;
- import java.util.StringTokenizer;
- import com.l2jserver.gameserver.handler.IAdminCommandHandler;
- import com.l2jserver.gameserver.instancemanager.CastleManager;
- import com.l2jserver.gameserver.instancemanager.CastleManorManager;
- import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
- import com.l2jserver.gameserver.model.entity.Castle;
- import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
- import com.l2jserver.util.StringUtil;
- /**
- * Admin comand handler for Manor System
- * This class handles following admin commands:
- * - manor_info = shows info about current manor state
- * - manor_approve = approves settings for the next manor period
- * - manor_setnext = changes manor settings to the next day's
- * - manor_reset castle = resets all manor data for specified castle (or all)
- * - manor_setmaintenance = sets manor system under maintenance mode
- * - manor_save = saves all manor data into database
- * - manor_disable = disables manor system
- *
- * @author l3x
- */
- public class AdminManor implements IAdminCommandHandler
- {
- private static final String[] _adminCommands =
- {
- "admin_manor",
- "admin_manor_approve",
- "admin_manor_setnext",
- "admin_manor_reset",
- "admin_manor_setmaintenance",
- "admin_manor_save",
- "admin_manor_disable"
- };
-
- public boolean useAdminCommand(String command, L2PcInstance activeChar)
- {
- StringTokenizer st = new StringTokenizer(command);
- command = st.nextToken();
-
- if (command.equals("admin_manor"))
- {
- showMainPage(activeChar);
- }
- else if (command.equals("admin_manor_setnext"))
- {
- CastleManorManager.getInstance().setNextPeriod();
- CastleManorManager.getInstance().setNewManorRefresh();
- CastleManorManager.getInstance().updateManorRefresh();
- activeChar.sendMessage("Manor System: set to next period");
- showMainPage(activeChar);
- }
- else if (command.equals("admin_manor_approve"))
- {
- CastleManorManager.getInstance().approveNextPeriod();
- CastleManorManager.getInstance().setNewPeriodApprove();
- CastleManorManager.getInstance().updatePeriodApprove();
- activeChar.sendMessage("Manor System: next period approved");
- showMainPage(activeChar);
- }
- else if (command.equals("admin_manor_reset"))
- {
- int castleId = 0;
- try
- {
- castleId = Integer.parseInt(st.nextToken());
- }
- catch (Exception e)
- {
- }
-
- if (castleId > 0)
- {
- Castle castle = CastleManager.getInstance().getCastleById(castleId);
- castle.resetManor();
- activeChar.sendMessage("Manor data for " + castle.getName() + " was nulled");
- }
- else
- {
- for (Castle castle : CastleManager.getInstance().getCastles())
- {
- castle.resetManor();
- }
- activeChar.sendMessage("Manor data was nulled");
- }
- showMainPage(activeChar);
- }
- else if (command.equals("admin_manor_setmaintenance"))
- {
- boolean mode = CastleManorManager.getInstance().isUnderMaintenance();
- CastleManorManager.getInstance().setUnderMaintenance(!mode);
- if (mode)
- activeChar.sendMessage("Manor System: not under maintenance");
- else
- activeChar.sendMessage("Manor System: under maintenance");
- showMainPage(activeChar);
- }
- else if (command.equals("admin_manor_save"))
- {
- CastleManorManager.getInstance().save();
- activeChar.sendMessage("Manor System: all data saved");
- showMainPage(activeChar);
- }
- else if (command.equals("admin_manor_disable"))
- {
- boolean mode = CastleManorManager.getInstance().isDisabled();
- CastleManorManager.getInstance().setDisabled(!mode);
- if (mode)
- activeChar.sendMessage("Manor System: enabled");
- else
- activeChar.sendMessage("Manor System: disabled");
- showMainPage(activeChar);
- }
-
- return true;
- }
-
- public String[] getAdminCommandList()
- {
- return _adminCommands;
- }
-
- private String formatTime(long millis)
- {
- String s = "";
- int secs = (int) millis / 1000;
- int mins = secs / 60;
- secs -= mins * 60;
- int hours = mins / 60;
- mins -= hours * 60;
-
- if (hours > 0)
- s += hours + ":";
- s += mins + ":";
- s += secs;
- return s;
- }
-
- private void showMainPage(L2PcInstance activeChar)
- {
- NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
- final List<Castle> castles = CastleManager.getInstance().getCastles();
- final StringBuilder replyMSG = StringUtil.startAppend(
- 1000 + castles.size() * 50,
- "<html><body>" +
- "<center><table width=270><tr>"+
- "<td width=45><button value=\"Main\" action=\"bypass -h admin_admin\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"+
- "<td width=180><center>Manor Info</center></td>"+
- "<td width=45><button value=\"Back\" action=\"bypass -h admin_admin2\" width=45 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>"+
- "</tr></table><font color=\"LEVEL\"> [Manor System] </font></center><br>"+
- "<table width=\"100%\"><tr><td>" +
- "Disabled: ",
- CastleManorManager.getInstance().isDisabled() ? "yes" : "no",
- "</td><td>" +
- "Under Maintenance: ",
- CastleManorManager.getInstance().isUnderMaintenance() ? "yes" : "no",
- "</td></tr><tr><td>" +
- "Time to refresh: ",
- formatTime(CastleManorManager.getInstance().getMillisToManorRefresh()),
- "</td><td>" +
- "Time to approve: ",
- formatTime(CastleManorManager.getInstance().getMillisToNextPeriodApprove()),
- "</td></tr>" +
- "</table>" +
- "<center><table><tr><td>" +
- "<button value=\"Set Next\" action=\"bypass -h admin_manor_setnext\" width=110 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td>" +
- "<button value=\"Approve Next\" action=\"bypass -h admin_manor_approve\" width=110 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr><tr><td>" +
- "<button value=\"",
- CastleManorManager.getInstance().isUnderMaintenance() ? "Set normal" : "Set mainteance",
- "\" action=\"bypass -h admin_manor_setmaintenance\" width=110 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td>" +
- "<button value=\"",
- CastleManorManager.getInstance().isDisabled() ? "Enable" : "Disable",
- "\" action=\"bypass -h admin_manor_disable\" width=110 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr><tr><td>" +
- "<button value=\"Refresh\" action=\"bypass -h admin_manor\" width=110 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td><td>" +
- "<button value=\"Back\" action=\"bypass -h admin_admin\" width=110 height=21 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr>" +
- "</table></center>" +
- "<br><center>Castle Information:<table width=\"100%\">" +
- "<tr><td></td><td>Current Period</td><td>Next Period</td></tr>"
- );
-
- for (Castle c : CastleManager.getInstance().getCastles()) {
- StringUtil.append(replyMSG,
- "<tr><td>",
- c.getName(),
- "</td>" +
- "<td>",
- String.valueOf(c.getManorCost(CastleManorManager.PERIOD_CURRENT)),
- "a</td>" +
- "<td>",
- String.valueOf(c.getManorCost(CastleManorManager.PERIOD_NEXT)),
- "a</td>" +
- "</tr>");
- }
-
- replyMSG.append(
- "</table><br>" +
- "</body></html>");
-
- adminReply.setHtml(replyMSG.toString());
- activeChar.sendPacket(adminReply);
- }
- }
|