Hide Online Player(s) and ObjectID in RegionBBSManager

Support for the latest build of L2J Server, get help here with installations, upgrades, problems.
Do not post bugs reports here, use viewforum.php?f=77 instead.
There is no support for other server builds than the official provided by l2jserver.com
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
Nuken
Posts: 13
Joined: Wed Jun 01, 2011 11:08 pm

Hide Online Player(s) and ObjectID in RegionBBSManager

Post by Nuken »

Hi guys, how to hide Online Player(s) and in CommunityBoard Region on H5?
Need delete Online Player(s) :mrgreen:

RegionBBSManager.java

Code: Select all

/* * 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 com.l2jserver.gameserver.communitybbs.Manager; 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.util.FastList;import javolution.util.FastMap; import com.l2jserver.Config;import com.l2jserver.gameserver.GameServer;import com.l2jserver.gameserver.datatables.ExperienceTable;import com.l2jserver.gameserver.model.BlockList;import com.l2jserver.gameserver.model.L2World;import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;import com.l2jserver.gameserver.model.itemcontainer.PcInventory;import com.l2jserver.gameserver.network.SystemMessageId;import com.l2jserver.gameserver.network.clientpackets.Say2;import com.l2jserver.gameserver.network.serverpackets.CreatureSay;import com.l2jserver.gameserver.network.serverpackets.ShowBoard;import com.l2jserver.gameserver.network.serverpackets.SystemMessage;import com.l2jserver.util.StringUtil; public class RegionBBSManager extends BaseBBSManager{    private static Logger _logChat = Logger.getLogger("chat");        private RegionBBSManager()    {    }        @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 == 1)            {                showOldCommunity(activeChar, 1);            }            else            {                ShowBoard sb = new ShowBoard("<html><body><br><br><center>The command: " + command                        + " is not implemented yet</center><br><br></body></html>", "101");                activeChar.sendPacket(sb);                activeChar.sendPacket(new ShowBoard(null, "102"));                activeChar.sendPacket(new ShowBoard(null, "103"));            }        }    }        /**     * @param activeChar     * @param name     */    private void showOldCommunityPI(L2PcInstance activeChar, String name)    {        final StringBuilder htmlCode = StringUtil.startAppend(1000, "<html><body><br>"                + "<table border=0><tr><td FIXWIDTH=15></td><td align=center>***** Community Board<img src=\"sek.cbui355\" width=610 height=1></td></tr><tr><td FIXWIDTH=15></td><td>");        L2PcInstance player = L2World.getInstance().getPlayer(name);                if (player != null)        {            String sex = "Male";            if (player.getAppearance().getSex())            {                sex = "Female";            }            String levelApprox = "Low";            if (player.getLevel() >= 80)                levelApprox = "Very high";            else if (player.getLevel() >= 60)                levelApprox = "High";            else if (player.getLevel() >= 40)                levelApprox = "Medium";                        StringUtil.append(htmlCode, "<table border=0><tr><td>", player.getName(), " (", sex, " ", player.getTemplate().className, "):</td></tr>"                    + "<tr><td>Level: ", levelApprox, "</td></tr>" + "<tr><td><br></td></tr>");                        if (activeChar != null                    && (activeChar.isGM() || player.getObjectId() == activeChar.getObjectId() || Config.SHOW_LEVEL_COMMUNITYBOARD))            {                long nextLevelExp = 0;                long nextLevelExpNeeded = 0;                if (player.getLevel() < (ExperienceTable.getInstance().getMaxLevel() - 1))                {                    nextLevelExp = ExperienceTable.getInstance().getExpForLevel(player.getLevel() + 1);                    nextLevelExpNeeded = nextLevelExp - player.getExp();                }                                StringUtil.append(htmlCode, "<tr><td>Level: ", String.valueOf(player.getLevel()), "</td></tr>" + "<tr><td>Experience: ", String.valueOf(player.getExp()), "/", String.valueOf(nextLevelExp), "</td></tr>"                        + "<tr><td>Experience needed for level up: ", String.valueOf(nextLevelExpNeeded), "</td></tr>"                        + "<tr><td><br></td></tr>");            }                        int uptime = (int) player.getUptime() / 1000;            int h = uptime / 3600;            int m = (uptime - (h * 3600)) / 60;            int s = ((uptime - (h * 3600)) - (m * 60));                        StringUtil.append(htmlCode, "<tr><td>Uptime: ", String.valueOf(h), "h ", String.valueOf(m), "m ", String.valueOf(s), "s</td></tr>"                    + "<tr><td><br></td></tr>");                        if (player.getClan() != null)            {                StringUtil.append(htmlCode, "<tr><td>Clan: ", player.getClan().getName(), "</td></tr>" + "<tr><td><br></td></tr>");            }                        StringUtil.append(htmlCode, "<tr><td><multiedit var=\"pm\" width=240 height=40><button value=\"Send PM\" action=\"Write Region PM ", player.getName(), " pm pm pm\" width=110 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr><tr><td><br><button value=\"Back\" action=\"bypass _bbsloc\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td></tr></table>"                    + "</td></tr></table>" + "</body></html>");            separateAndSend(htmlCode.toString(), activeChar);        }        else        {            ShowBoard sb = new ShowBoard(StringUtil.concat("<html><body><br><br><center>No player with name ", name, "</center><br><br></body></html>"), "101");            activeChar.sendPacket(sb);            activeChar.sendPacket(new ShowBoard(null, "102"));            activeChar.sendPacket(new ShowBoard(null, "103"));        }    }        /**     * @param activeChar     * @param page      */    private void showOldCommunity(L2PcInstance activeChar, int page)    {        separateAndSend(getCommunityPage(page, activeChar.isGM() ? "gm" : "pl"), activeChar);    }        /* (non-Javadoc)     * @see com.l2jserver.gameserver.communitybbs.Manager.BaseBBSManager#parsewrite(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, com.l2jserver.gameserver.model.actor.instance.L2PcInstance)     */    @Override    public void parsewrite(String ar1, String ar2, String ar3, String ar4, String ar5, L2PcInstance activeChar)    {        if (activeChar == null)            return;                if (ar1.equals("PM"))        {            final StringBuilder htmlCode = StringUtil.startAppend(500, "<html><body><br>"                    + "<table border=0><tr><td FIXWIDTH=15></td><td align=center>***** Community Board<img src=\"sek.cbui355\" width=610 height=1></td></tr><tr><td FIXWIDTH=15></td><td>");                        try            {                                L2PcInstance receiver = L2World.getInstance().getPlayer(ar2);                if (receiver == null)                {                    StringUtil.append(htmlCode, "Player not found!<br><button value=\"Back\" action=\"bypass _bbsloc;playerinfo;", ar2, "\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"                            + "</td></tr></table></body></html>");                    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 (activeChar.isChatBanned())                {                    activeChar.sendMessage("You are banned from using chat");                    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.isSilenceMode(activeChar.getObjectId()) && !BlockList.isBlocked(receiver, activeChar) )                {                    receiver.sendPacket(cs);                    activeChar.sendPacket(new CreatureSay(activeChar.getObjectId(), Say2.TELL, "->" + receiver.getName(), ar3));                    StringUtil.append(htmlCode, "Message Sent<br><button value=\"Back\" action=\"bypass _bbsloc;playerinfo;", receiver.getName(), "\" width=40 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"                            + "</td></tr></table></body></html>");                    separateAndSend(htmlCode.toString(), activeChar);                }                else                {                    SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_PERSON_IS_IN_MESSAGE_REFUSAL_MODE);                    activeChar.sendPacket(sm);                    parsecmd("_bbsloc;playerinfo;" + receiver.getName(), activeChar);                }            }            catch (StringIndexOutOfBoundsException e)            {                // ignore            }        }        else        {            ShowBoard sb = new ShowBoard(StringUtil.concat("<html><body><br><br><center>The command: ", ar1, " is not implemented yet</center><br><br></body></html>"), "101");            activeChar.sendPacket(sb);            activeChar.sendPacket(new ShowBoard(null, "102"));            activeChar.sendPacket(new ShowBoard(null, "103"));        }            }    private int _onlineCount = 0;    private int _onlineCountGm = 0;    private static FastMap<Integer, FastList<L2PcInstance>> _onlinePlayers = new FastMap<Integer, FastList<L2PcInstance>>().shared();    private static FastMap<Integer, FastMap<String, String>> _communityPages = new FastMap<Integer, FastMap<String, String>>().shared();        /**     * @return     */    public static RegionBBSManager getInstance()    {        return SingletonHolder._instance;    }        public/*synchronized */void changeCommunityBoard()    {        FastList<L2PcInstance> sortedPlayers = new FastList<L2PcInstance>();        Collections.addAll(sortedPlayers, L2World.getInstance().getAllPlayersArray());        Collections.sort(sortedPlayers, new Comparator<L2PcInstance>()        {            @Override            public int compare(L2PcInstance p1, L2PcInstance p2)            {                return p1.getName().compareToIgnoreCase(p2.getName());            }        });                _onlinePlayers.clear();        _onlineCount = 0;        _onlineCountGm = 0;                for (L2PcInstance player : sortedPlayers)        {            addOnlinePlayer(player);        }                _communityPages.clear();        writeCommunityPages();    }     private void addOnlinePlayer(L2PcInstance player)    {        boolean added = false;                for (FastList<L2PcInstance> page : _onlinePlayers.values())        {            if (page.size() < Config.NAME_PAGE_SIZE_COMMUNITYBOARD)            {                if (!page.contains(player))                {                    page.add(player);                    if (!player.getAppearance().getInvisible())                        _onlineCount++;                    _onlineCountGm++;                }                added = true;                break;            }            else if (page.contains(player))            {                added = true;                break;            }        }                if (!added)        {            FastList<L2PcInstance> temp = new FastList<L2PcInstance>();            int page = _onlinePlayers.size() + 1;            if (temp.add(player))            {                _onlinePlayers.put(page, temp);                if (!player.getAppearance().getInvisible())                    _onlineCount++;                _onlineCountGm++;            }        }    }        private void writeCommunityPages()    {        final StringBuilder htmlCode = new StringBuilder(2000);        final String tdClose = "</td>";        final String tdOpen = "<td align=left valign=top>";        final String trClose = "</tr>";        final String trOpen = "<tr>";        final String colSpacer = "<td FIXWIDTH=15></td>";                for (int page : _onlinePlayers.keySet())        {            FastMap<String, String> communityPage = new FastMap<String, String>();            htmlCode.setLength(0);            StringUtil.append(htmlCode, "<html><body><br>" + "<table>" + trOpen + "<td align=left valign=top>Server Restarted: ", String.valueOf(GameServer.dateTimeServerStarted.getTime()), tdClose                    + trClose + "</table>" + "<table>" + trOpen + tdOpen + "XP Rate: x", String.valueOf(Config.RATE_XP), tdClose                    + colSpacer + tdOpen + "Party XP Rate: x", String.valueOf(Config.RATE_XP * Config.RATE_PARTY_XP), tdClose + colSpacer                    + tdOpen + "XP Exponent: ", String.valueOf(Config.ALT_GAME_EXPONENT_XP), tdClose + trClose + trOpen + tdOpen                    + "SP Rate: x", String.valueOf(Config.RATE_SP), tdClose + colSpacer + tdOpen + "Party SP Rate: x", String.valueOf(Config.RATE_SP                            * Config.RATE_PARTY_SP), tdClose + colSpacer + tdOpen + "SP Exponent: ", String.valueOf(Config.ALT_GAME_EXPONENT_SP), tdClose                            + trClose + trOpen + tdOpen + "Drop Rate: ", String.valueOf(Config.RATE_DROP_ITEMS), tdClose + colSpacer + tdOpen                            + "Spoil Rate: ", String.valueOf(Config.RATE_DROP_SPOIL), tdClose + colSpacer + tdOpen + "Adena Rate: ", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(PcInventory.ADENA_ID)), tdClose                            + trClose                            + "</table>"                            + "<table>"                            + trOpen                            + "<td><img src=\"sek.cbui355\" width=600 height=1><br></td>"                            + trClose                            + trOpen + tdOpen, String.valueOf(L2World.getInstance().getAllVisibleObjectsCount()), " Object count</td>" + trClose                            + trOpen + tdOpen, String.valueOf(getOnlineCount("gm")), " Player(s) Online</td>" + trClose + "</table>");                        int cell = 0;            if (Config.BBS_SHOW_PLAYERLIST)            {                htmlCode.append("<table border=0><tr><td><table border=0>");                                for (L2PcInstance player : getOnlinePlayers(page))                {                    cell++;                                        if (cell == 1)                    {                        htmlCode.append(trOpen);                    }                                        StringUtil.append(htmlCode, "<td align=left valign=top FIXWIDTH=110><a action=\"bypass _bbsloc;playerinfo;", player.getName(), "\">");                                        if (player.isGM())                    {                        StringUtil.append(htmlCode, "<font color=\"LEVEL\">", player.getName(), "</font>");                    }                    else                    {                        htmlCode.append(player.getName());                    }                                        htmlCode.append("</a></td>");                                        if (cell < Config.NAME_PER_ROW_COMMUNITYBOARD)                        htmlCode.append(colSpacer);                                        if (cell == Config.NAME_PER_ROW_COMMUNITYBOARD)                    {                        cell = 0;                        htmlCode.append(trClose);                    }                }                if (cell > 0 && cell < Config.NAME_PER_ROW_COMMUNITYBOARD)                {                    htmlCode.append(trClose);                }                                htmlCode.append("</table><br></td></tr>" + trOpen + "<td><img src=\"sek.cbui355\" width=600 height=1><br></td>" + trClose                        + "</table>");            }                        if (getOnlineCount("gm") > Config.NAME_PAGE_SIZE_COMMUNITYBOARD)            {                htmlCode.append("<table border=0 width=600><tr>");                if (page == 1)                {                    htmlCode.append("<td align=right width=190><button value=\"Prev\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                else                {                    StringUtil.append(htmlCode, "<td align=right width=190><button value=\"Prev\" action=\"bypass _bbsloc;page;", String.valueOf(page - 1), "\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                                StringUtil.append(htmlCode, "<td FIXWIDTH=10></td>" + "<td align=center valign=top width=200>Displaying ", String.valueOf(((page - 1) * Config.NAME_PAGE_SIZE_COMMUNITYBOARD) + 1), " - ", String.valueOf(((page - 1) * Config.NAME_PAGE_SIZE_COMMUNITYBOARD)                        + getOnlinePlayers(page).size()), " player(s)</td>" + "<td FIXWIDTH=10></td>");                if (getOnlineCount("gm") <= (page * Config.NAME_PAGE_SIZE_COMMUNITYBOARD))                {                    htmlCode.append("<td width=190><button value=\"Next\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                else                {                    StringUtil.append(htmlCode, "<td width=190><button value=\"Next\" action=\"bypass _bbsloc;page;", String.valueOf(page + 1), "\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                htmlCode.append("</tr></table>");            }                        htmlCode.append("</body></html>");                        communityPage.put("gm", htmlCode.toString());                        htmlCode.setLength(0);            StringUtil.append(htmlCode, "<html><body><br>" + "<table>" + trOpen + "<td align=left valign=top>Server Restarted: ", String.valueOf(GameServer.dateTimeServerStarted.getTime()), tdClose                    + trClose + "</table>" + "<table>" + trOpen + tdOpen + "XP Rate: ", String.valueOf(Config.RATE_XP), tdClose + colSpacer                    + tdOpen + "Party XP Rate: ", String.valueOf(Config.RATE_PARTY_XP), tdClose + colSpacer + tdOpen + "XP Exponent: ", String.valueOf(Config.ALT_GAME_EXPONENT_XP), tdClose                    + trClose + trOpen + tdOpen + "SP Rate: ", String.valueOf(Config.RATE_SP), tdClose + colSpacer + tdOpen                    + "Party SP Rate: ", String.valueOf(Config.RATE_PARTY_SP), tdClose + colSpacer + tdOpen + "SP Exponent: ", String.valueOf(Config.ALT_GAME_EXPONENT_SP), tdClose                    + trClose + trOpen + tdOpen + "Drop Rate: ", String.valueOf(Config.RATE_DROP_ITEMS), tdClose + colSpacer + tdOpen                    + "Spoil Rate: ", String.valueOf(Config.RATE_DROP_SPOIL), tdClose + colSpacer + tdOpen + "Adena Rate: ", String.valueOf(Config.RATE_DROP_ITEMS_ID.get(PcInventory.ADENA_ID)), tdClose                    + trClose                    + "</table>"                    + "<table>"                    + trOpen                    + "<td><img src=\"sek.cbui355\" width=600 height=1><br></td>"                    + trClose                    + trOpen + tdOpen, String.valueOf(getOnlineCount("pl")), " Player(s) Online</td>" + trClose + "</table>");                        if (Config.BBS_SHOW_PLAYERLIST)            {                htmlCode.append("<table border=0><tr><td><table border=0>");                                cell = 0;                for (L2PcInstance player : getOnlinePlayers(page))                {                    if ((player == null) || (player.getAppearance().getInvisible()))                        continue; // Go to next                                        cell++;                                        if (cell == 1)                    {                        htmlCode.append(trOpen);                    }                                        StringUtil.append(htmlCode, "<td align=left valign=top FIXWIDTH=110><a action=\"bypass _bbsloc;playerinfo;", player.getName(), "\">");                                        if (player.isGM())                    {                        StringUtil.append(htmlCode, "<font color=\"LEVEL\">", player.getName(), "</font>");                    }                    else                    {                        htmlCode.append(player.getName());                    }                                        htmlCode.append("</a></td>");                                        if (cell < Config.NAME_PER_ROW_COMMUNITYBOARD)                        htmlCode.append(colSpacer);                                        if (cell == Config.NAME_PER_ROW_COMMUNITYBOARD)                    {                        cell = 0;                        htmlCode.append(trClose);                    }                }                if (cell > 0 && cell < Config.NAME_PER_ROW_COMMUNITYBOARD)                    htmlCode.append(trClose);                                htmlCode.append("</table><br></td></tr>" + trOpen + "<td><img src=\"sek.cbui355\" width=600 height=1><br></td>" + trClose                        + "</table>");            }                        if (getOnlineCount("pl") > Config.NAME_PAGE_SIZE_COMMUNITYBOARD)            {                htmlCode.append("<table border=0 width=600><tr>");                                if (page == 1)                {                    htmlCode.append("<td align=right width=190><button value=\"Prev\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                else                {                    StringUtil.append(htmlCode, "<td align=right width=190><button value=\"Prev\" action=\"bypass _bbsloc;page;", String.valueOf(page - 1), "\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                                StringUtil.append(htmlCode, "<td FIXWIDTH=10></td>" + "<td align=center valign=top width=200>Displaying ", String.valueOf(((page - 1) * Config.NAME_PAGE_SIZE_COMMUNITYBOARD) + 1), " - ", String.valueOf(((page - 1) * Config.NAME_PAGE_SIZE_COMMUNITYBOARD)                        + getOnlinePlayers(page).size()), " player(s)</td>" + "<td FIXWIDTH=10></td>");                                if (getOnlineCount("pl") <= (page * Config.NAME_PAGE_SIZE_COMMUNITYBOARD))                {                    htmlCode.append("<td width=190><button value=\"Next\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                else                {                    StringUtil.append(htmlCode, "<td width=190><button value=\"Next\" action=\"bypass _bbsloc;page;", String.valueOf(page + 1), "\" width=50 height=15 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\"></td>");                }                                htmlCode.append("</tr></table>");            }                        htmlCode.append("</body></html>");                        communityPage.put("pl", htmlCode.toString());                        _communityPages.put(page, communityPage);        }    }        private int getOnlineCount(String type)    {        if (type.equalsIgnoreCase("gm"))            return _onlineCountGm;                return _onlineCount;    }        private FastList<L2PcInstance> getOnlinePlayers(int page)    {        return _onlinePlayers.get(page);    }        public String getCommunityPage(int page, String type)    {        if (_communityPages.get(page) != null)            return _communityPages.get(page).get(type);                return null;    }        @SuppressWarnings("synthetic-access")    private static class SingletonHolder    {        protected static final RegionBBSManager _instance = new RegionBBSManager();    }}  
Last edited by Nuken on Fri Jan 06, 2012 12:33 am, edited 1 time in total.
User avatar
MELERIX
L2j Veteran
L2j Veteran
Posts: 6667
Joined: Sat Sep 23, 2006 11:31 pm
Location: Chile
Contact:

Re: Hide Online Player(s) and ObjectID in RegionBBSManager

Post by MELERIX »

BBSShowPlayerList = False
ShowStatusOnCommunityBoard = False
Nuken
Posts: 13
Joined: Wed Jun 01, 2011 11:08 pm

Re: Hide Online Player(s) in RegionBBSManager

Post by Nuken »

not working ShowStatusOnCommunityBoard = False

Code: Select all

# Default: FalseBBSShowPlayerList = False # Default: _bbshomeBBSDefault = _bbshome # show level of character to others in Community Board# Default: FalseShowLevelOnCommunityBoard = False # Default: FalseShowStatusOnCommunityBoard = False # Default: 50NamePageSizeOnCommunityBoard = 50 # Default: 5NamePerRowOnCommunityBoard = 5
You do not have the required permissions to view the files attached to this post.
User avatar
MELERIX
L2j Veteran
L2j Veteran
Posts: 6667
Joined: Sat Sep 23, 2006 11:31 pm
Location: Chile
Contact:

Re: Hide Online Player(s) and ObjectID in RegionBBSManager

Post by MELERIX »

don't test with gm.

other way, try this: http://pastebin.com/GVTfwQia
JMD
Advanced User
Advanced User
Posts: 1440
Joined: Wed Apr 15, 2009 10:07 am

Re: Hide Online Player(s) and ObjectID in RegionBBSManager

Post by JMD »

MELERIX wrote:don't test with gm.

other way, try this: http://pastebin.com/GVTfwQia
Thanks this patch works like a charm.
Nuken
Posts: 13
Joined: Wed Jun 01, 2011 11:08 pm

Re: Hide Online Player(s) and ObjectID in RegionBBSManager

Post by Nuken »

MELERIX wrote:don't test with gm.

other way, try this: http://pastebin.com/GVTfwQia
ty
Raspoutine
Posts: 27
Joined: Sun Jan 30, 2011 3:18 pm

Re: Hide Online Player(s) and ObjectID in RegionBBSManager

Post by Raspoutine »

Should work. Solved?
blarke
Posts: 77
Joined: Thu Nov 18, 2010 7:48 am

Server hanging

Post by blarke »

Hi All,

I have downloaded and compiled the newest svn available. I have updated it as per our settings, rebuilt the database, but now we have immerse lags (1-2 minutes before any action is done sometimes...). Users get disconnected with queue overflow. Also had GooGooCache errors, but increasing mysql connection numbers in the configs fixed that one - however, still not better with the hangs. Tried java update (1.7 u2) also... There is no exception in the console, no error shown. Disabling basically anything that may take up the system resources (ie. geodata) had no impact. The previous build used ( L2jversion=5105M, L2jdpversion=8594M ) had no such problems.

Ps. while making the post, got some terminal info:

Code: Select all

jan. 22, 2012 6:30:42 DU com.l2jserver.gameserver.model.actor.instance.L2PcInstance cleanupWARNING: Exception on deleteMe() changeCommunityBoard: nulljava.lang.NullPointerException    at com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager.writeCommunityPages(RegionBBSManager.java:379)    at com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager.changeCommunityBoard(RegionBBSManager.java:293)    at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.cleanup(L2PcInstance.java:12114)    at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.deleteMe(L2PcInstance.java:11703)    at com.l2jserver.gameserver.network.L2GameClient$CleanupTask.run(L2GameClient.java:877)    at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:86)    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)    at java.util.concurrent.FutureTask.run(Unknown Source)    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)    at java.lang.Thread.run(Unknown Source) jan. 22, 2012 6:30:42 DU com.l2jserver.gameserver.model.actor.instance.L2PcInstance cleanupWARNING: Exception on deleteMe() changeCommunityBoard: nulljava.lang.NullPointerException    at com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager.writeCommunityPages(RegionBBSManager.java:379)    at com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager.changeCommunityBoard(RegionBBSManager.java:293)    at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.cleanup(L2PcInstance.java:12114)    at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.deleteMe(L2PcInstance.java:11703)    at com.l2jserver.gameserver.network.L2GameClient$CleanupTask.run(L2GameClient.java:877)    at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:86)    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)    at java.util.concurrent.FutureTask.run(Unknown Source)    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)    at java.lang.Thread.run(Unknown Source)
Anybody has any ideas what may be done?

Thank you!

Cheers,
blarke

Edit: removed obsolete error logs.
Also, this was working on my localhost (Win7 64bit) as wonders - on the server (XP, 32bit) its like a nightmare.
User avatar
Zoey76
L2j Inner Circle
L2j Inner Circle
Posts: 7008
Joined: Tue Aug 11, 2009 3:36 am

Re: Server hanging

Post by Zoey76 »

The problem is that when the synchronization was removed null checks weren't added to that method, changeCommunityBoard, I'd remove it completely if it was my call :lol:
Powered by Eclipse 4.34 🌌 | Eclipse Temurin 21 ☕ | MariaDB 11.3.2 🗃️ | L2J Server 2.6.3.0 - High Five 🚀

🔗 Join our Discord! 🎮💬
blarke
Posts: 77
Joined: Thu Nov 18, 2010 7:48 am

Re: Server hanging

Post by blarke »

Zoey76 wrote:The problem is that when the synchronization was removed null checks weren't added to that method, changeCommunityBoard, I'd remove it completely if it was my call :lol:
IIRC I had similar exceptions before, but it caused no lags. Can this be a possible reason?

Cheers,
blarke

Edit: another frequent error...

Code: Select all

2012.01.22 19:01:56,812 WARNING 9   com.mchange.v2.async.ThreadPoolAsynchronousRunner   com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@70100b -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!2012.01.22 19:02:08,703 WARNING 9   com.mchange.v2.async.ThreadPoolAsynchronousRunner   com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@70100b -- APPARENT DEADLOCK!!! Complete Status:     Managed Threads: 3    Active Threads: 0    Active Tasks:     Pending Tasks:         com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@12442eePool thread stack traces:    Thread[C3P0PooledConnectionPoolManager-Helper Thread-#1,5,main]        java.lang.Object.wait(Native Method)        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:607)    Thread[C3P0PooledConnectionPoolManager-Helper Thread-#2,5,main]        java.lang.Object.wait(Native Method)        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:607)    Thread[C3P0PooledConnectionPoolManager-Helper Thread-#0,5,main]        java.lang.Object.wait(Native Method)        com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:607)
I do not understand the reason for this since deadlockprotection was disabled...
voronius
Posts: 25
Joined: Sat Aug 04, 2007 8:25 am

Re: Server hanging

Post by voronius »

Hi admin :) !

The fastest solution would be indeed to disable the CommunityBoard.
Or to disable BBS_SHOW_PLAYERLIST somewhere in properties files.

Or ...

there's a variable

Code: Select all

L2PcInstance player
at

http://trac.l2jserver.com/browser/trunk ... .java#L370

that could be checked for null and the code skipped
(

Code: Select all

 if ( player == null )     continue;  //assuming java has the continue statement if not use equivalent  
)

and this would make most npe go away.
Even so, I think, that any access to this variable should still be synchronized or more problems will appear.
Post Reply