/* * 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 . */ package com.l2jserver.gameserver.communitybbs.Manager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import com.l2jserver.L2DatabaseFactory; import com.l2jserver.gameserver.cache.HtmCache; import com.l2jserver.gameserver.communitybbs.CastleStatus; import com.l2jserver.gameserver.communitybbs.PlayerList; import com.l2jserver.gameserver.communitybbs.ServerStats; import com.l2jserver.gameserver.communitybbs.TopAdena; import com.l2jserver.gameserver.datatables.ClanTable; import com.l2jserver.gameserver.instancemanager.GrandBossManager; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; /** * * */ public class TopBBSManager extends BaseBBSManager { private TopBBSManager() { } @Override public void parsecmd(String command, L2PcInstance activeChar) { String fileName = ""; if (command.equals("_bbstop") || command.equals("_bbshome")) { fileName = "data/html/CommunityBoard/index.htm"; } if (command.startsWith("_bbstop;")) { StringTokenizer st = new StringTokenizer(command, ";"); st.nextToken(); int idp = Integer.parseInt(st.nextToken()); fileName = "data/html/CommunityBoard/" + idp + ".htm"; } if(fileName.length() == 0) { return; } String content = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), fileName); String ip = "N/A"; String account = "N/A"; try { String clientInfo = activeChar.getClient().toString(); account = clientInfo.substring(clientInfo.indexOf("Account: ") + 9, clientInfo.indexOf(" - IP: ")); ip = clientInfo.substring(clientInfo.indexOf(" - IP: ") + 7, clientInfo.lastIndexOf("]")); } catch (Exception e) { } if (fileName.equals("data/html/CommunityBoard/3.htm")); { // Top 15 PvP List PlayerList pvp = new PlayerList(1); content = content.replaceAll("%pvplist%", pvp.loadPlayerList()); } if (fileName.equals("data/html/CommunityBoard/5.htm")); { CastleStatus status = new CastleStatus(); content = content.replaceAll("%castle%", status.loadCastleList()); } if (fileName.equals("data/html/CommunityBoard/6.htm")); { // Top 15 Pk List PlayerList pk = new PlayerList(0); content = content.replaceAll("%pklist%", pk.loadPlayerList()); } if (fileName.equals("data/html/CommunityBoard/53.htm")); { // Char Info content = content.replaceAll("%name%", activeChar.getName()); content = content.replaceAll("%level%", String.valueOf(activeChar.getLevel())); content = content.replaceAll("%clan%", String.valueOf(ClanTable.getInstance().getClan(activeChar.getClanId()))); content = content.replaceAll("%xp%", String.valueOf(activeChar.getExp())); content = content.replaceAll("%sp%", String.valueOf(activeChar.getSp())); content = content.replaceAll("%class%", activeChar.getTemplate().className); content = content.replaceAll("%classid%", String.valueOf(activeChar.getClassId())); content = content.replaceAll("%currenthp%", String.valueOf((int) activeChar.getCurrentHp())); content = content.replaceAll("%maxhp%", String.valueOf(activeChar.getMaxHp())); content = content.replaceAll("%currentmp%", String.valueOf((int) activeChar.getCurrentMp())); content = content.replaceAll("%maxmp%", String.valueOf(activeChar.getMaxMp())); content = content.replaceAll("%currentcp%", String.valueOf((int) activeChar.getCurrentCp())); content = content.replaceAll("%maxcp%", String.valueOf(activeChar.getMaxCp())); content = content.replaceAll("%currentload%", String.valueOf(activeChar.getCurrentLoad())); content = content.replaceAll("%maxload%", String.valueOf(activeChar.getMaxLoad())); content = content.replaceAll("%access%", String.valueOf(activeChar.getAccessLevel().getLevel())); content = content.replaceAll("%account%", account); content = content.replaceAll("%ip%", ip); } if (fileName.equals("data/html/CommunityBoard/4.htm")); { // Top 20 Adena Owners TopAdena topAdena = new TopAdena(); content = content.replaceAll("%topadena%", topAdena.loadPlayerList()); } if (fileName.equals("data/html/CommunityBoard/54.htm")); { // Online Gamemasters content = content.replaceAll("%gmlist%", getOnlineGMs()); } if (fileName.equals("data/html/CommunityBoard/56.htm")); { // Raid Status content = content.replaceAll("%antharas%", bossStatus(29019)); content = content.replaceAll("%valakas%", bossStatus(29028)); content = content.replaceAll("%baium%", bossStatus(29001)); content = content.replaceAll("%antqueen%", bossStatus(29020)); content = content.replaceAll("%core%", bossStatus(29006)); content = content.replaceAll("%zaken%", bossStatus(29022)); content = content.replaceAll("%frintezza%", bossStatus(29045)); } if (fileName.equals("data/html/CommunityBoard/57.htm")); { // Character Repair content = content.replaceAll("%acc_chars%", getCharList(activeChar)); } if (fileName.equals("data/html/CommunityBoard/55.htm")); { // Server Stats ServerStats stats = new ServerStats(); content = content.replaceAll("%stats%", stats.getServerStats()); content = content.replaceAll("%online%", stats.getOnlineCount()); } if (content == null) { //sendError404(activeChar, fileName); } else { separateAndSend(content, activeChar); } } @Override public void parsewrite(String ar1, String ar2, String ar3, String ar4, String ar5, L2PcInstance activeChar) { } private String getOnlineGMs() { String msg = "
"; if (L2World.getInstance().getAllGMs().isEmpty()) { msg = "There are not Online GMs at this moment!"; } else { for (L2PcInstance player: L2World.getInstance().getAllGMs()) { msg += player.getName(); msg += "
"; } } return msg; } /** * @param bossId * @return */ private static String bossStatus(int bossId) { long delay = GrandBossManager.getInstance().getStatsSet(bossId).getLong("respawn_time"); if (delay <= System.currentTimeMillis()) { return "Alive"; } else { return "Dead"; } } /** * @param activeChar * @return */ private String getCharList(L2PcInstance activeChar) { String result=""; String repCharAcc=activeChar.getAccountName(); Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT char_name FROM characters WHERE account_name=?"); statement.setString(1, repCharAcc); ResultSet rset = statement.executeQuery(); while (rset.next()) { if (activeChar.getName().compareTo(rset.getString(1)) != 0) result += rset.getString(1)+";"; } rset.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); return result; } finally { try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } } return result; } public static TopBBSManager getInstance() { return SingletonHolder.INSTANCE; } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final TopBBSManager INSTANCE = new TopBBSManager(); } }