Community board l2j Interlude - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 13.11.2010, 19:02   #1
Аватар для pacifica
Пользователь

Автор темы (Топик Стартер) Community board l2j Interlude

Товарищи, кто-нибудь знает, как, вообще, заставить работать вкладки mail и friends. Чтобы они были способны хотя бы что-нибудь отображать. В самом коде _bbsmail и _bbsfrieds задаются, но толку от них ноль. Прошу Вас о помощи а заранее спасибо!
Мне кажется проблема в этом куске кода
Код:
/*
 * 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 2, 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package net.sf.l2j.gameserver.serverpackets;

import java.util.List;

public class ShowBoard extends L2GameServerPacket
{
	private static final String _S__6E_SHOWBOARD = "[S] 6e ShowBoard";

	private String _htmlCode;
	private String _id;
	private List<String> _arg;

	public ShowBoard(String htmlCode, String id)
	{
		_id = id;
		_htmlCode = htmlCode; // html code must not exceed 8192 bytes
	}

	public ShowBoard(List<String> arg)
	{
		_id = "1002";
		_htmlCode = null;
		_arg = arg;

	}

	private byte[] get1002()
	{
		int len = _id.getBytes().length * 2 + 2;
		for (String arg : _arg)
		{
			len += (arg.getBytes().length + 4) * 2;
		}
		byte data[] = new byte[len];
		int i = 0;
		for (int j = 0; j < _id.getBytes().length; j++, i += 2)
		{
			data[i] = _id.getBytes()[j];
			data[i + 1] = 0;
		}
		data[i] = 8;
		i++;
		data[i] = 0;
		i++;
		for (String arg : _arg)
		{
			for (int j = 0; j < arg.getBytes().length; j++, i += 2)
			{
				data[i] = arg.getBytes()[j];
				data[i + 1] = 0;
			}
			data[i] = 0x20;
			i++;
			data[i] = 0x0;
			i++;
			data[i] = 0x8;
			i++;
			data[i] = 0x0;
			i++;
		}
		return data;
	}

	@Override
	protected final void writeImpl()
	{
		writeC(0x6e);
		writeC(0x01); //c4 1 to show community 00 to hide
		writeS("bypass _bbshome"); // top
		writeS("bypass _bbsgetfav"); // favorite
		writeS("bypass _bbsloc"); // region
		writeS("bypass _bbsclan"); // clan
		writeS("bypass _bbsmemo"); // memo
		writeS("bypass _bbsmail"); // mail
		writeS("bypass _bbsfriends"); // friends
		writeS("bypass _bbs_add_fav"); // add fav.
		if (!_id.equals("1002"))
		{
			// getBytes is a very costy operation, and should only be called once
			byte htmlBytes[] = null;
			if (_htmlCode != null)
				htmlBytes = _htmlCode.getBytes();
			byte data[] = new byte[2 + 2 + 2 + _id.getBytes().length * 2 + 2
				* ((_htmlCode != null) ? htmlBytes.length : 0)];
			int i = 0;
			for (int j = 0; j < _id.getBytes().length; j++, i += 2)
			{
				data[i] = _id.getBytes()[j];
				data[i + 1] = 0;
			}
			data[i] = 8;
			i++;
			data[i] = 0;
			i++;
			if (_htmlCode == null)
			{

			}
			else
			{
				for (int j = 0; j < htmlBytes.length; i += 2, j++)
				{
					data[i] = htmlBytes[j];
					data[i + 1] = 0;
				}
			}
			data[i] = 0;
			i++;
			data[i] = 0;
			writeS(_htmlCode); // current page
			writeB(data);
		}
		else
		{
			writeB(get1002());
		}
	}

	/* (non-Javadoc)
	 * @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
	 */
	@Override
	public String getType()
	{
		return _S__6E_SHOWBOARD;
	}
}

Последний раз редактировалось pacifica; 13.11.2010 в 19:35.
pacifica вне форума Отправить сообщение для pacifica с помощью ICQ Ответить с цитированием
Непрочитано 13.11.2010, 20:04   #2
Аватар для Navvy
Супергерой

По умолчанию Re: Community board l2j Interlude

Если в сборке это не реализовано то соответсвенно не работает. Вам надо писать класс который будет обрабатывать команды _bbsmail и _bbsfrieds. Иначе никак.

И кстати, не трогайте код который привели в своем посте. Там все Ок.

Копать нужно здесь: net.sf.l2j.gameserver.communityboard
Navvy вне форума Отправить сообщение для Navvy с помощью ICQ Ответить с цитированием
Непрочитано 13.11.2010, 20:33   #3
Аватар для pacifica
Пользователь

Автор темы (Топик Стартер) Re: Community board l2j Interlude

Там я уже заправил в принципе. Вот пример кода
Код:
/*
 * 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 2, 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package net.sf.l2j.gameserver.communitybbs;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.communitybbs.tables.AddFav;
import net.sf.l2j.gameserver.communitybbs.tables.Clan;
import net.sf.l2j.gameserver.communitybbs.tables.Fav;
import net.sf.l2j.gameserver.communitybbs.tables.Fr;
import net.sf.l2j.gameserver.communitybbs.tables.Home;
import net.sf.l2j.gameserver.communitybbs.tables.Loc;
import net.sf.l2j.gameserver.communitybbs.tables.Mail;
import net.sf.l2j.gameserver.communitybbs.tables.Memo;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.network.L2GameClient;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.serverpackets.ShowBoard;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;

public class CommunityBoard
{
	private static CommunityBoard _instance;

	public CommunityBoard()
	{
	}

	public static CommunityBoard getInstance()
	{
		if (_instance == null)
		{
			_instance = new CommunityBoard();
		}

		return _instance;
	}

	public void handleCommands(L2GameClient client, String command)
	{
		L2PcInstance activeChar = client.getActiveChar();
        if(activeChar == null)
            return;

        if(Config.COMMUNITY_TYPE.equals("full"))
        {
        	if (command.startsWith("_bbshome"))
        	{
        		Home.getInstance().parsecmd(command,activeChar);
        	}
        	else if(command.startsWith("_bbsgetfav"))
        	{
        		Fav.getInstance().parsecmd(command,activeChar);
        	}
        	else if(command.startsWith("_bbsloc"))
        	{
        		Loc.getInstance().parsecmd(command,activeChar);
        	}
        	else if(command.startsWith("_bbsclan"))
        	{
        		Clan.getInstance().parsecmd(command,activeChar);
        	}
        	else if(command.startsWith("_bbsmemo"))
        	{
        		Memo.getInstance().parsecmd(command,activeChar);
        	}
        	else if(command.startsWith("_bbsmail"))
        	{
        		Mail.getInstance().parsecmd(command,activeChar);
        	}
        	else if(command.startsWith("_bbsfriends"))
        	{
        		Fr.getInstance().parsecmd(command,activeChar);
        	}
            else if(command.startsWith("_bbs_add_fav"))
            {
            	AddFav.getInstance().parsecmd(command,activeChar);
            } 
            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"));
        	}
        }
        else  if(Config.COMMUNITY_TYPE.equals("old"))
        {
        	Loc.getInstance().parsecmd(command,activeChar);
        }
        else
        {
			activeChar.sendPacket(new SystemMessage(SystemMessageId.CB_OFFLINE));
        }
	}
	/**
	 * @param client
	 * @param url
	 * @param arg1
	 * @param arg2
	 * @param arg3
	 * @param arg4
	 * @param arg5
	 */
	public void handleWriteCommands(L2GameClient client, String url, String arg1, String arg2, String arg3, String arg4, String arg5)
	{
		L2PcInstance activeChar = client.getActiveChar();
        if(activeChar == null)
            return;

		if (Config.COMMUNITY_TYPE.equals("full"))
		{
			if (url.equals("Topic"))
			{
				Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
			} else if (url.equals("Post"))
			{
				Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
			} else if (url.equals("Region"))
			{
				Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
			} else
			{
				ShowBoard sb = new ShowBoard("<html><body><br><br><center>the command: " + url + " 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"));
			}
		} else if (Config.COMMUNITY_TYPE.equals("old"))
		{
			Loc.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar);
		} else
		{
			ShowBoard sb = new ShowBoard("<html><body><br><br><center>The Community board is currently disable</center><br><br></body></html>", "101");
			activeChar.sendPacket(sb);
			activeChar.sendPacket(new ShowBoard(null, "102"));
			activeChar.sendPacket(new ShowBoard(null, "103"));
		}
	}
}
pacifica вне форума Отправить сообщение для pacifica с помощью ICQ Ответить с цитированием
Непрочитано 13.11.2010, 20:41   #4
Пользователь

По умолчанию Re: Community board l2j Interlude

работает так. пишите класс (примеры в пакете manager помоему, в грации точно), этот класс будет обрабатывать пришедшую команду (handler), добавляете в CommunityBoard активацию этого хендлера (если пришла соответствующая команда), ну и собсно все будет работать. можешь в скайп вопросы задавать, если реал будет желание разобраться, а не чтоб за тебя сделали, я помогу
noith вне форума Отправить сообщение для noith с помощью ICQ Отправить сообщение для noith с помощью Skype™ Ответить с цитированием
Непрочитано 13.11.2010, 20:44   #5
Аватар для pacifica
Пользователь

Автор темы (Топик Стартер) Re: Community board l2j Interlude

Так я и так сам всё пытаюсь сделать) Просто почему работают все, кроме mail и friends...
pacifica вне форума Отправить сообщение для pacifica с помощью ICQ Ответить с цитированием
Непрочитано 13.12.2010, 17:33   #6
Аватар для pacifica
Пользователь

Автор темы (Топик Стартер) Re: Community board l2j Interlude

Неожиданно нашёл решение этой задачи! Если кому-то интересно прошу в пм всё довольно легко решается.
pacifica вне форума Отправить сообщение для pacifica с помощью ICQ Ответить с цитированием
Непрочитано 04.09.2011, 20:19   #7
Пользователь

По умолчанию Re: Community board l2j Interlude

И как же их включить?
den01101 вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить Community Board tolik5190 Lineage II 2 29.10.2010 17:57
[Продам] PvP Community Board Navvy Рынок / Marketplace 41 07.09.2010 21:43
Community Board NooboAdm Lineage II 3 11.08.2010 13:38
Community board ВОРОН Lineage II 5 27.07.2010 18:46
Community Board battle Lineage II 1 11.03.2009 18:41


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 13:19. Часовой пояс GMT +3.

Вверх