Buypass через интерфейс.

BadStealth

Величайший
Местный
Победитель в номинации 2023
Победитель в номинации 2022
Победитель в номинации 2021
Победитель в номинации 2020
Просветитель
Клиент разработчик
Старожил I степени
Преподаватель
За веру и верность форуму
Победитель в номинации 2019
Сообщения
309
Розыгрыши
0
Репутация
429
Реакции
601
Баллы
1 573
Всех приветствую. Встал вопрос. Как сделать вызов простых байпасов через интерфейс?
Все перепробовал но понимает только если шлются байпасы на комунку.
К примеру: RequestBypassToServer("bypass admin_admin");
Ничего не дает.
RequestBypassToServer("bypass _bbshome");
Вызывает комунку. Мне нужно к примеру вызвать админ панель, но как я только не пробовал ее вызвать с кнопки, никак не выходит. Можно к примеру пользоваться командами с чата, но если мне к примеру нужно вызвать байпас такого содержания npc_%objectId%_multisell 002?
Вот и сижу голову ломаю. И как в интерфейсе узнать objectId? Можно через таргет, а если нет в таргете этого НПЦ. Получается его надо брать в таргет и потом с таргета читать ID и вставлять. Но опять загвоздка. Байпасы не срабатывают.
 
чтобы работало такое в кб к примеру _bbsuser надо просто делат отдельный запрос для _bbsuser в кб
Код:
      if (bypass.startsWith("_bbsuser"))
      {
        String command = bypass.substring(9).trim();
        String[] words = command.split("\\s+");
        String[] word_split = words[0].split(";");
        String word = word_split[0];
        String args = command.substring(word.length()).trim();
        if (word_split.length == 1) {
          onBypassCommand(player, "_bbshome");
        } else {
          Util.communityNextPage(player, word_split[1]);
        }
        IVoicedCommandHandler vch = VoicedCommandHandler.getInstance().getVoicedCommandHandler(word);
        if (vch != null)
        {
          vch.useVoicedCommand(word, player, args);
        }
        else
        {
          player.sendMessage("Oops, cannot find command!");
          _log.warn("Unknow voiced command '" + word + "'");
        }
        return;
      }
что на подобие этого если только так можно и в пакетах делать
 
Я про интерфейс клиента говорю, а не серверная часть.
 
  • Мне нравится
Реакции: kick
Вроде как для админ команд используется другой пакет? Или я ошибаюсь?
И если я прав - этот пакет не доступен из интерфейса вроде как (не смотрел лично).

Java:
package org.mmocore.gameserver.network.l2.c2s;

import org.mmocore.gameserver.handler.admincommands.AdminCommandHandler;
import org.mmocore.gameserver.model.Player;

public class SendBypassBuildCmd extends L2GameClientPacket
{
    private String _command;

    @Override
    protected void readImpl()
    {
        _command = readS();

        if(_command != null)
            _command = _command.trim();
    }

    @Override
    protected void runImpl()
    {
        Player activeChar = getClient().getActiveChar();

        if(activeChar == null)
            return;

        String cmd = _command;

        if(!cmd.contains("admin_"))
            cmd = "admin_" + cmd;

        AdminCommandHandler.getInstance().useAdminCommandHandler(activeChar, cmd);
    }
}

но если мне к примеру нужно вызвать байпас такого содержания npc_%objectId%_multisell 002?
Такие байпасы на хф отрабатывают без проблем.. не помню точно в таком виде ли, но точно то, что RequestBypassToServer("bypass _bbshome"); у меня не работал, а RequestBypassToServer("_bbshome"); работал.
 
Всех приветствую. Встал вопрос. Как сделать вызов простых байпасов через интерфейс?
Все перепробовал но понимает только если шлются байпасы на комунку.
К примеру: RequestBypassToServer("bypass admin_admin");
Ничего не дает.
RequestBypassToServer("bypass _bbshome");
Вызывает комунку. Мне нужно к примеру вызвать админ панель, но как я только не пробовал ее вызвать с кнопки, никак не выходит. Можно к примеру пользоваться командами с чата, но если мне к примеру нужно вызвать байпас такого содержания npc_%objectId%_multisell 002?
Вот и сижу голову ломаю. И как в интерфейсе узнать objectId? Можно через таргет, а если нет в таргете этого НПЦ. Получается его надо брать в таргет и потом с таргета читать ID и вставлять. Но опять загвоздка. Байпасы не срабатывают.

RequestBypassToServer("то что будет здесь должно быть в кеше байпасов сервера"); смотреть класс RequestBypassToServer

ExecuteCommand("//admin"); это откроет админку
если админом хоть раз открыть админку начнет работать RequestBypassToServer("admin_admin") до релога.
 
Я в саму админку поставил кнопку. И прописал в нее команду. Не работает, даже в самой админке.
 
Дело не в админке. Я не могу ни один байпас заставить сработать. Даже от НПЦ. К примеру в диалогах чтобы перейти на другую страницу.
Прописывая напрямую %objectId% не срабатывает. Ноль- никаких движений. Если прописываю в сам диалог сразу %objectId% - то все нормально, а вот через интерфейс не хочет зараза.
 
Всех приветствую. Встал вопрос. Как сделать вызов простых байпасов через интерфейс?
Все перепробовал но понимает только если шлются байпасы на комунку.
К примеру: RequestBypassToServer("bypass admin_admin");
Ничего не дает.
RequestBypassToServer("bypass _bbshome");
Вызывает комунку. Мне нужно к примеру вызвать админ панель, но как я только не пробовал ее вызвать с кнопки, никак не выходит. Можно к примеру пользоваться командами с чата, но если мне к примеру нужно вызвать байпас такого содержания npc_%objectId%_multisell 002?
Вот и сижу голову ломаю. И как в интерфейсе узнать objectId? Можно через таргет, а если нет в таргете этого НПЦ. Получается его надо брать в таргет и потом с таргета читать ID и вставлять. Но опять загвоздка. Байпасы не срабатывают.
Потому что когда ты меняешь в interface.xdat "байпас на админку",оно ссылается на interface.u где собственно этот байпас и должен быть.(По типу Кб,или любого другого сделай).Просто так оно тебе не сработает,оно ищет путь в .u которого нету.
 
Потому что когда ты меняешь в interface.xdat "байпас на админку",оно ссылается на interface.u где собственно этот байпас и должен быть.(По типу Кб,или любого другого сделай).Просто так оно тебе не сработает,оно ищет путь в .u которого нету.
Ничего не понял. Я в xdat только кнопку создал. А дальше в u идет обработчик нажатия на эту кнопку. И что я должен сделать по типу КБ?
Я просто пытаюсь чтобы сработал байпас с диалога- вот и все.
Есть еще такое применения байпасов EControlReturnType ControllerExecution( string strBypass );
Но и так не срабатывает. Это я так понял обработчик черз сам HTML к примеру я вывожу страницу с диалогом НПЦ, там я сделал кнопку - но при нажатии на нее ---> 0. Срабатывают только байпасы КБ. Остальные никак. А мне к примеру нужно по нажатия на кнопку открыть какой-то диалог или выполнить другой какой-то байпас.
 
Ничего не понял. Я в xdat только кнопку создал. А дальше в u идет обработчик нажатия на эту кнопку. И что я должен сделать по типу КБ?
Я просто пытаюсь чтобы сработал байпас с диалога- вот и все.
Есть еще такое применения байпасов EControlReturnType ControllerExecution( string strBypass );
Но и так не срабатывает. Это я так понял обработчик черз сам HTML к примеру я вывожу страницу с диалогом НПЦ, там я сделал кнопку - но при нажатии на нее ---> 0. Срабатывают только байпасы КБ. Остальные никак. А мне к примеру нужно по нажатия на кнопку открыть какой-то диалог или выполнить другой какой-то байпас.
Ну потому что кб изначально прописано в .u,а то что ты пытаешься сделать нет.
 
Бред какой-то. Я тоже пытаюсь сделать в окне NPCDialogWnd. Оно тоже прописано и что-то не срабатывает. Так еще оно самое главное в обработке всех диалогов и байпасов в них- судя вашей логике оно вообще должно схватывать все сразу.
 
Бред какой-то. Я тоже пытаюсь сделать в окне NPCDialogWnd. Оно тоже прописано и что-то не срабатывает. Так еще оно самое главное в обработке всех диалогов и байпасов в них- судя вашей логике оно вообще должно схватывать все сразу.
в текстовом блоке название должно 100% совпадать с баттоном.Вниматльно проверьте,я когда делал 1 букву пропустил,и тоже не работало.
 

Вложения

  • 1.png
    1.png
    25,7 КБ · Просмотры: 45
  • Screenshot_1.png
    Screenshot_1.png
    30,9 КБ · Просмотры: 45
в текстовом блоке название должно 100% совпадать с баттоном.Вниматльно проверьте,я когда делал 1 букву пропустил,и тоже не работало.
У вас не сработало скорее всего потому, что в u в обработчике было прописано другое название кнопки. А я имею ввиду сам байпас. Кнопка срабатывает и команду выполняет, но байпас не срабатывает. Вот что я пытаюсь сказать. В плане кнопок все нормально, все дело в байпасах НПЦ диалогов.
 
У вас не сработало скорее всего потому, что в u в обработчике было прописано другое название кнопки. А я имею ввиду сам байпас. Кнопка срабатывает и команду выполняет, но байпас не срабатывает. Вот что я пытаюсь сказать. В плане кнопок все нормально, все дело в байпасах НПЦ диалогов.
Я написал почему у меня не сработало,не нужно изобретать велосипед.Ладно,извините нету времени.
 
Дело не в админке. Я не могу ни один байпас заставить сработать. Даже от НПЦ. К примеру в диалогах чтобы перейти на другую страницу.
Прописывая напрямую %objectId% не срабатывает. Ноль- никаких движений. Если прописываю в сам диалог сразу %objectId% - то все нормально, а вот через интерфейс не хочет зараза.
повторюсь еще раз! вам нужно на сервере редачить пакет RequestBypassToServer

так как без его изменения просто так байпасы не попадут туда куда нужно!(при условии нормальной реализации)

когда сервер отправляете клиенту нтм %objectId% заменяется на объект ид нпц
 
повторюсь еще раз! вам нужно на сервере редачить пакет RequestBypassToServer

так как без его изменения просто так байпасы не попадут туда куда нужно!(при условии нормальной реализации)

когда сервер отправляете клиенту нтм %objectId% заменяется на объект ид нпц
Спасибо. Запустил другой сервер и посмотрел в нем все срабатывает- а в этом сервере у меня идет encrypt байпасов в BypassManager.
Так и не понял как он кодирует чтобы запустить байпас.
 
повторюсь еще раз! вам нужно на сервере редачить пакет RequestBypassToServer

так как без его изменения просто так байпасы не попадут туда куда нужно!(при условии нормальной реализации)

когда сервер отправляете клиенту нтм %objectId% заменяется на объект ид нпц
почему не дойдёт?

я делал смену языка хтмлок в интерфейсе (на адвексте),обошелся лишь:
RequestBypassToServer("set_localization?country=8"); //ru

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