inact1ve 0 Опубликовано 16 апреля, 2020 Прикручиваю кб к сборке lostworld. Настроил html страниц и пути к мультиселлам. Все корректно открывается, но при нажатии на "Купить" ничего не происходит, погуглил, узнал что надо убрать привязку к нпц. Но как это сделать? В конфигах не нашел, в самих мульитселлах нет привязки. Подскажите, пожалуйста, где искать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Smowk 46 Опубликовано 16 апреля, 2020 (изменено) 37 минут назад, inact1ve сказал: Прикручиваю кб к сборке lostworld. Настроил html страниц и пути к мультиселлам. Все корректно открывается, но при нажатии на "Купить" ничего не происходит, погуглил, узнал что надо убрать привязку к нпц. Но как это сделать? В конфигах не нашел, в самих мульитселлах нет привязки. Подскажите, пожалуйста, где искать? Возможно вы неправильно прописали путь или нету реализации покупки через комьюнити. Но если открывает мультисел это уже хорошо. Может еще где-то запрет на покупку с бара. Изменено 16 апреля, 2020 пользователем Smowk Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
inact1ve 0 Опубликовано 16 апреля, 2020 Только что, Smowk сказал: Возможно вы неправильно прописали путь или нету реализации покупки через комьюнити. Но если открывает мультисел это уже хорошо. Может еще где-то запрет на покупку с бара. А можно поподробнее про реализацию покупки?) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Smowk 46 Опубликовано 16 апреля, 2020 (изменено) 2 часа назад, inact1ve сказал: А можно поподробнее про реализацию покупки?) Это ядро нужно смотреть, это ядро нужно смотреть. Там вы искали, настроек бара нету не-где ? И вообще же там должна быть комунити, в конфигах только включить нужно. Смотрел Ластов. Там комунити с кастомными сервисами. Только включить ее нужно. Смотри найди конфиг server там почти в самом низу будет настройка комунити #------------------------------------------------------------- # Community board configuration #------------------------------------------------------------- AllowCommunityBoard = True BBSDefault = _bbshome <<<<-------- пропробуй сюда поставить ---->>>> _bbspage:index Спойлер 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) {} } Изменено 16 апреля, 2020 пользователем Smowk Дополнил Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
inact1ve 0 Опубликовано 19 апреля, 2020 В 16.04.2020 в 12:58, Smowk сказал: Это ядро нужно смотреть, это ядро нужно смотреть. Там вы искали, настроек бара нету не-где ? И вообще же там должна быть комунити, в конфигах только включить нужно. Смотрел Ластов. Там комунити с кастомными сервисами. Только включить ее нужно. Смотри найди конфиг server там почти в самом низу будет настройка комунити #------------------------------------------------------------- # Community board configuration #------------------------------------------------------------- AllowCommunityBoard = True BBSDefault = _bbshome <<<<-------- пропробуй сюда поставить ---->>>> _bbspage:index класс (Показать контент) 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) {} } Не помогло, переставил все html'ки, проблема такая же: все открывается, но купить невозможно Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
PrizraKZN2000 21 Опубликовано 19 апреля, 2020 во-первых нету не каких привязки к нпс во-всторых вот пример <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE list SYSTEM "multisell.dtd"> <list> <config bbsallowed="true" /> <item> <ingredient id="57" count="32971650"/> <production id="13687" count="1"/> </item> </list> <config bbsallowed="true" /> хтм диалог <button action="bypass _bbsmultisell:ххххх" value="Открыть" width=68 height=18 back="L2UI_CT1.ListCTRL_DF_Title_Down" fore="L2UI_CT1.ListCTRL_DF_Title"/> 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты