Перейти к содержанию
Авторизация  
alextt1989

о5 комьюнити. Нужна помощь

Рекомендуемые сообщения

Наконец то я прикрепил к своей сборке комьюнити. Теперь столкнулся с такой небольшой проблемой. Когда клацаешь по иконке например ГМ шопа, он открывается но после того как закроешь окошко гм шопа кнопки в камьюнити стают не активными. Приходится закрывать и открывать комьюнити заново. На ум падает решение,когда нажимаешь кнопку, открывается окошко (либо шоп либо еще что то) а само комьюнити выключается. Но пока не знаю как это решить. Может ли кто что то подсказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<tr>
<td><button value="Заколки" action="bypass _bbsmultisell:200008" width=118 height=25 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF"></td>

Ccылки в комьюнити вида.

 

CommunityBoard.java осталась LostWorld 'a без изменений

 

package handler.bbs;

import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.StringTokenizer;

import org.apache.commons.lang3.tuple.Pair;
import org.mmocore.commons.dbutils.DbUtils;
import org.mmocore.gameserver.Config;
import org.mmocore.gameserver.data.htm.HtmCache;
import org.mmocore.gameserver.data.xml.holder.MultiSellHolder;
import org.mmocore.gameserver.database.DatabaseFactory;
import org.mmocore.gameserver.handler.bbs.BbsHandlerHolder;
import org.mmocore.gameserver.handler.bypass.BypassHolder;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.network.l2.s2c.ShowBoard;
import org.mmocore.gameserver.tables.ClanTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CommunityBoard extends ScriptBbsHandler
{
	private static final Logger _log = LoggerFactory.getLogger(CommunityBoard.class);

	@Override
	public String[] getBypassCommands()
	{
		return new String[] { "_bbshome", "_bbslink", "_bbsmultisell", "_bbspage", "_bbsscripts" };
	}

	@Override
	public void onBypassCommand(Player player, String bypass)
	{
		StringTokenizer st = new StringTokenizer(bypass, "_");
		String cmd = st.nextToken();
		String html = "";
		if("bbshome".equals(cmd))
		{
			StringTokenizer p = new StringTokenizer(Config.BBS_DEFAULT, "_");
			String dafault = p.nextToken();
			if(dafault.equals(cmd))
			{
				html = HtmCache.getInstance().getHtml("scripts/services/community/bbs_top.htm", player);

				int favCount = 0;
				Connection con = null;
				PreparedStatement statement = null;
				ResultSet rset = null;
				try
				{
					con = DatabaseFactory.getInstance().getConnection();
					statement = con.prepareStatement("SELECT count(*) as cnt FROM `bbs_favorites` WHERE `object_id` = ?");
					statement.setInt(1, player.getObjectId());
					rset = statement.executeQuery();
					if(rset.next())
						favCount = rset.getInt("cnt");
				}
				catch(Exception e)
				{}
				finally
				{
					DbUtils.closeQuietly(con, statement, rset);
				}

				html = html.replace("<?fav_count?>", String.valueOf(favCount));
				html = html.replace("<?clan_count?>", String.valueOf(ClanTable.getInstance().getClans().length));
				html = html.replace("<?market_count?>", String.valueOf(BbsHandlerHolder.getInstance().getIntProperty("col_count")));
			}
			else
			{
				onBypassCommand(player, Config.BBS_DEFAULT);
				return;
			}
		}
		else if("bbslink".equals(cmd))
			html = HtmCache.getInstance().getHtml("scripts/services/community/bbs_homepage.htm", player);
		else if(bypass.startsWith("_bbspage"))
		{
			//Example: "bypass _bbspage:index".
			String[] b = bypass.split(":");
			String page = b[1];
			html = HtmCache.getInstance().getHtml("scripts/services/community/pages/" + page + ".htm", player);
			if (html == null)
				return;
		}
		else if(bypass.startsWith("_bbsmultisell"))
		{
			//Example: "_bbsmultisell:10000;_bbspage:index" or "_bbsmultisell:10000;_bbshome" or "_bbsmultisell:10000"...
			StringTokenizer st2 = new StringTokenizer(bypass, ";");
			String[] mBypass = st2.nextToken().split(":");
			String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;
			if(pBypass != null)
				onBypassCommand(player, pBypass);

			int listId = Integer.parseInt(mBypass[1]);
			MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);
			return;
		}
		else if(bypass.startsWith("_bbsscripts"))
		{
			//Example: "_bbsscripts:events.GvG.GvG:addGroup;_bbspage:index" or "_bbsscripts:events.GvG.GvG:addGroup;_bbshome" or "_bbsscripts:events.GvG.GvG:addGroup"...
			/*StringTokenizer st2 = new StringTokenizer(bypass, ";");
			String sBypass = st2.nextToken().substring(12);
			String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;
			if(pBypass != null)
				onBypassCommand(player, pBypass);

			String[] word = sBypass.split("\\s+");
			String[] args = sBypass.substring(word[0].length()).trim().split("\\s+");
			String[] path = word[0].split(":");
			if(path.length != 2)
				return;

			Scripts.getInstance().callScripts(player, path[0], path[1], word.length == 1 ? new Object[] {} : new Object[] { args });
			return;*/
			_log.error("Trying to call script bypass: " + bypass + " " + player);
		}
		else if(bypass.startsWith("_bbshtmbypass"))
		{
			StringTokenizer st2 = new StringTokenizer(bypass, ";");
			String command = st2.nextToken().substring(14);
			String pBypass = st2.hasMoreTokens() ? st2.nextToken() : null;
			if(pBypass != null)
				onBypassCommand(player, pBypass);

			String word = command.split("\\s+")[0];

			Pair<Object, Method> b = BypassHolder.getInstance().getBypass(word);
			if(b != null)
				try
				{
					b.getValue().invoke(b.getKey(), player, null, command.substring(word.length()).trim().split("\\s+"));
				}
				catch(Exception e)
				{
					_log.error("Exception: " + e, e);
				}
			return;
		}

		ShowBoard.separateAndSend(html, player);
	}

	@Override
	public void onWriteCommand(Player player, String bypass, String arg1, String arg2, String arg3, String arg4, String arg5)
	{}
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
MultiSellHolder.getInstance().SeparateAndSend(listId, player, -1, 0);

Что означают эти параметры? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно указать страницу, на которую перекинет игрока после клика: пример из кода:

_bbsmultisell:10000;_bbspage
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пишу 

_bbsmultisell:10000;_bbs_top

отображает пустую страничку :( Страничка называется bbs_top

Изменено пользователем alextt1989

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
_bbsmultisell:10000;_bbspage:bbs_top

Так же не реагирует

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, bugmenot сказал:

Нужно указать страницу, на которую перекинет игрока после клика: пример из кода:


_bbsmultisell:10000;_bbspage

Можно ли указать чтоб после клика окошко закрылось?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, alextt1989 сказал:

Можно ли указать чтоб после клика окошко закрылось?

 

В Interlude пакет HideBoard.

Изменено пользователем gvb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем в мультиселах хорошо сработало ;_bbshome

В сервисах когда дописываю: action="bypass htmbypass_services.NickColor:list;_bbshome" то скрипт не срабатывает и сервис не открывается ((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 hours ago, alextt1989 said:

Еще актуально

Quote

action="bypass_bbshtmbypass:services.NickColor:list;_bbshome"

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...