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

Проблема с multisell

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

Прикручиваю кб к сборке lostworld. Настроил html страниц и пути к мультиселлам. Все корректно открывается, но при нажатии на "Купить" ничего не происходит, погуглил, узнал что надо убрать привязку к нпц. Но как это сделать? В конфигах не нашел, в самих мульитселлах нет привязки. Подскажите, пожалуйста, где искать?

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


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

Прикручиваю кб к сборке lostworld. Настроил html страниц и пути к мультиселлам. Все корректно открывается, но при нажатии на "Купить" ничего не происходит, погуглил, узнал что надо убрать привязку к нпц. Но как это сделать? В конфигах не нашел, в самих мульитселлах нет привязки. Подскажите, пожалуйста, где искать?

 Возможно вы неправильно прописали путь  или нету реализации покупки через комьюнити. Но если открывает мультисел это уже хорошо. Может еще где-то запрет на покупку с бара. 

 

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

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


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

 Возможно вы неправильно прописали путь  или нету реализации покупки через комьюнити. Но если открывает мультисел это уже хорошо. Может еще где-то запрет на покупку с бара. 

 

А можно поподробнее про реализацию покупки?)

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


Ссылка на сообщение
Поделиться на другие сайты
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)
    {}
}
 

 

Изменено пользователем Smowk
Дополнил

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


Ссылка на сообщение
Поделиться на другие сайты
В 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'ки, проблема такая же: все открывается, но купить невозможно

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


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

во-первых нету не каких привязки к нпс 

во-всторых вот пример 

<?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"/>

  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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