/*
* 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 net.sf.l2j.gameserver.communitybbs.Manager;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import javolution.text.TextBuilder;
import javolution.util.FastList;
import javolution.util.FastMap;
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.GameServer;
import net.sf.l2j.gameserver.clientpackets.Say2;
import net.sf.l2j.gameserver.model.BlockList;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.base.Experience;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.serverpackets.CreatureSay;
import net.sf.l2j.gameserver.serverpackets.ShowBoard;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
public class RegionBBSManager extends BaseBBSManager
{
private static Logger _logChat = Logger.getLogger("chat");
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.communitybbs.Manager.BaseBBSManager#parsecmd(java.lang.String, net.sf.l2j.gameserver.model.actor.instance.L2PcInstance)
*/
@Override
public void parsecmd(String command, L2PcInstance activeChar)
{
if (command.equals("_bbsloc"))
{
showOldCommunity(activeChar, 1);
}
else if (command.startsWith("_bbsloc;page;"))
{
StringTokenizer st = new StringTokenizer(command, ";");
st.nextToken();
st.nextToken();
int page = 0;
try
{
page = Integer.parseInt(st.nextToken());
} catch (NumberFormatException nfe) {}
showOldCommunity(activeChar, page);
}
else if (command.startsWith("_bbsloc;playerinfo;"))
{
StringTokenizer st = new StringTokenizer(command, ";");
st.nextToken();
st.nextToken();
String name = st.nextToken();
showOldCommunityPI(activeChar, name);
}
else
{
if(Config.COMMUNITY_TYPE.equals("old"))
{
showOldCommunity(activeChar, 1);
}
else
{
ShowBoard sb = new ShowBoard("
");
if (activeChar != null && (activeChar.isGM() || player.getObjectId() == activeChar.getObjectId()
|| Config.SHOW_LEVEL_COMMUNITYBOARD))
{
long nextLevelExp = 0;
long nextLevelExpNeeded = 0;
if (player.getLevel() < (Experience.MAX_LEVEL - 1))
{
nextLevelExp = Experience.LEVEL[player.getLevel() + 1];
nextLevelExpNeeded = nextLevelExp-player.getExp();
}
htmlCode.append("
Level: "+player.getLevel()+"
");
htmlCode.append("
Experience: "+player.getExp()+"/"+nextLevelExp+"
");
htmlCode.append("
Experience needed for level up: "+nextLevelExpNeeded+"
");
htmlCode.append("
");
}
int uptime = (int)player.getUptime()/1000;
int h = uptime/3600;
int m = (uptime-(h*3600))/60;
int s = ((uptime-(h*3600))-(m*60));
htmlCode.append("
Uptime: "+h+"h "+m+"m "+s+"s
");
htmlCode.append("
");
if (player.getClan() != null)
{
htmlCode.append("
");
try
{
L2PcInstance receiver = L2World.getInstance().getPlayer(ar2);
if (receiver == null)
{
htmlCode.append("Player not found!
");
separateAndSend(htmlCode.toString(),activeChar);
return;
}
if (Config.JAIL_DISABLE_CHAT && receiver.isInJail())
{
activeChar.sendMessage("Player is in jail.");
return;
}
if (receiver.isChatBanned())
{
activeChar.sendMessage("Player is chat banned.");
return;
}
if (activeChar.isInJail() && Config.JAIL_DISABLE_CHAT)
{
activeChar.sendMessage("You can not chat while in jail.");
return;
}
if (Config.LOG_CHAT)
{
LogRecord record = new LogRecord(Level.INFO, ar3);
record.setLoggerName("chat");
record.setParameters(new Object[]{"TELL", "[" + activeChar.getName() + " to "+receiver.getName()+"]"});
_logChat.log(record);
}
CreatureSay cs = new CreatureSay(activeChar.getObjectId(), Say2.TELL, activeChar.getName(), ar3);
if (receiver != null &&
!BlockList.isBlocked(receiver, activeChar))
{
if (!receiver.getMessageRefusal())
{
receiver.sendPacket(cs);
activeChar.sendPacket(new CreatureSay(activeChar.getObjectId(), Say2.TELL, "->" + receiver.getName(), ar3));
htmlCode.append("Message Sent