Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Multisell запросы из CB
#1
Добрый день.
Не могу разобраться с запросом в ядро из коммунити.
Есть ГМ магазин, в нем есть функции маммона.
В этих самых функциях интересует 2 вещи
1. Убрать СА
2. Вставить СА

допустим стандартный байпас к мультиселлу идет вида " bypass -h _bbsshop_multisell 10000 "
все бы хорошо, но мультиселл номер 4002 зашифрован "hardcoded" в ядре, и генерируется из него же. в ядре ничего полезного не нашел.

Вопрос соответственно такой.
- Как сделать байпас к мультиселу 4002?

Цитата:есть конечно другой вариант, обойти это способом банального написания своего мультисела, но тогда при открытии диалога, будет показыватся весь арсенал L2 weapon, а не то что лежит у тебя в инвентаре.
Хотя если можно сделать иначе, советуйте как.

Сборка Voron Dev Epilogue(на основах Shaitan,Pheonix)
Ответ
#2
Извращенцы что ли?
Вообщем для начала: какая есть задача? На птс вообще идет перечисление и параметр: показывать только оружие, которое имеется в инвентаре, только и всего.
Ответ
#3
На сколько я вижу в ядре за генерацию мультиселлов отвечает L2 Multisell.java
структура генерации такова
PHP код:
<?php 
private void loadHardcoded()
{
// 4000 - Enchance Weapon - C, B (Insert SA)
MultiSellListContainer list = new MultiSellListContainer();
list.
setListId(4000);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generateSAInsertion(Grade.C, Grade.B, list);
entries.put(list.getListId(), list);
// 4001 - Enchance Weapon - A (Insert SA)
list = new MultiSellListContainer();
list.
setListId(4001);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generateSAInsertion(Grade.A, Grade.A, list);
entries.put(list.getListId(), list);
// 40011 - Enchance Weapon - S (Insert SA)
list = new MultiSellListContainer();
list.
setListId(40011);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generateSAInsertion(Grade.S, Grade.S, list);
entries.put(list.getListId(), list);
// 326150002 - Enchance Weapon - S80/S84 (Insert SA)
list = new MultiSellListContainer();
list.
setListId(326150002);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generateSAInsertion(Grade.S80, Grade.S84, list);
entries.put(list.getListId(), list);
// 4002 - Remove SA
list = new MultiSellListContainer();
list.
setListId(4002);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generateSARemove(list);
entries.put(list.getListId(), list);
// 311262517 - Finish Masterwork
list = new MultiSellListContainer();
list.
setListId(311262517);
list.
setShowAll(true);
list.
setKeepEnchant(true);
list.
setNoTax(true);
list.
setNoKey(true);
generateFinishMastetrwork(list);
entries.put(list.getListId(), list);
// 364790006 - PvP weapon add
list = new MultiSellListContainer();
list.
setListId(364790006);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generatePvPAdd(list);
entries.put(list.getListId(), list);
// 364790007 - PvP weapon remove
list = new MultiSellListContainer();
list.
setListId(364790007);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generatePvPRemove(list);
entries.put(list.getListId(), list);
// 1002 - unseal B
list = new MultiSellListContainer();
list.
setListId(1002);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateUnseal(Grade.B, Grade.B, list);
entries.put(list.getListId(), list);
// 1003 - reseal B
list = new MultiSellListContainer();
list.
setListId(1003);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateReseal(Grade.B, Grade.B, list);
entries.put(list.getListId(), list);
// 1005 - unseal A
list = new MultiSellListContainer();
list.
setListId(1005);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateUnseal(Grade.A, Grade.A, list);
entries.put(list.getListId(), list);
// 1007 - reseal A
list = new MultiSellListContainer();
list.
setListId(1007);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateReseal(Grade.A, Grade.A, list);
entries.put(list.getListId(), list);
// 1008 - unseal S
list = new MultiSellListContainer();
list.
setListId(1008);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateUnseal(Grade.S, Grade.S, list);
entries.put(list.getListId(), list);
// 1009 - unseal S80
list = new MultiSellListContainer();
list.
setListId(1009);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateUnseal(Grade.S80, Grade.S80, list);
entries.put(list.getListId(), list);
// 1010 - unseal S84
list = new MultiSellListContainer();
list.
setListId(1010);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateUnseal(Grade.S84, Grade.S84, list);
entries.put(list.getListId(), list);
// 1011 - unseal S80/S84 using adena
list = new MultiSellListContainer();
list.
setListId(1011);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(false);
generateUnseal(Grade.S80, Grade.S84, list, 57, 5);
entries.put(list.getListId(), list);
}
следственно мультиселл 4002 генерируется так:
PHP код:
<?php 
// 4002 - Remove SA
list = new MultiSellListContainer();
list.
setListId(4002);
list.
setShowAll(false);
list.
setKeepEnchant(true);
list.
setNoTax(true);
generateSARemove(list);
entries.put(list.getListId(), list);

Так вот я не знаю как написать отдельный мультиселл, что бы он показывал только то оружие что в инвентаре.
Или как сделать запрос на генерацию.

Задача ясна.
Сделать запрос на генерацию, или мультисел с функцией отбора.

Добавлено через 1 минуту
Кстате на генерации мультиселов не только фениксы но nextgen работает.
Это только то что я виде своими глазами в ядре
Ответ
#4
[SRC="java"] list.setListId(1011);
list.setShowAll(false);[/SRC]
Вот 2 строчки.
Что мешает вызывать такой мультиселл через линк?
Ответ
#5
мешает моя неграмотность.
Я с таким не сталкивался.
подскажи пожалуйста как написать байпас правильно в стиле
action="bypass -h _bbsshop_multisell 4002"

байпасы стиля
Код:
bypass -h _bbsshop_multisell 4002
bypass -h _bbsmultisell 4002
bypass npc_bbsshop_multisell 4002
bypass npc_%objectid%_multisell 4002
bypass _bbsmultisell 4002
bypass -h _multisell 4002
не дают никакой реакции
Ответ
#6
Итак берем поиск нотпада и вводим 4002. Поиск по файлам *.htm
Думаю далее знаете, что делать.
Ответ
#7
Zubastic Написал:Итак берем поиск нотпада и вводим 4002. Поиск по файлам *.htm
Думаю далее знаете, что делать.

Делалось, делалось в первую очередь. был найден нпс с таким мультиселом, и виден его запрос.
Код:
npc_%objectId%_Multisell 4002|Удалить особое умение из оружия

но копипаст в файл с Community Board ничего не дал, сам байпас выглядел так.


Код:
<button value="Убрать СА" action="bypass -h npc_%objectId%_Multisell 4002" width=200 height=26 back="L2UI_ct1.button_df_down" fore="L2UI_ct1.button_df"/>

При нажатии на кнопку, ничего не происходит, ГС ошибок даже не выдает о неправильно байпасе.
Ответ
#8
КБ - это не НПС. Для нее пишутся отдельные обработчики ссылок (Если у Вас их попросту нет, то мы Вам наванговать их не смогем. Ищите подобную сборку, смотрите их КБ. Личьте себе, их наработки)
Ответ
#9
и без "-h" тоже пробовал

Добавлено через 7 минут
KilRoy Написал:КБ - это не НПС. Для нее пишутся отдельные обработчики ссылок (Если у Вас их попросту нет, то мы Вам наванговать их не смогем. Ищите подобную сборку, смотрите их КБ. Личьте себе, их наработки)

подобная сборка NextGen Epilogue, там байпас идет вида
Код:
bypass -h _bbsshop_multisell craft 4002
но я пока не могу наковырять в ядре где эта craft функция(

Добавлено через 9 минут
я не силен во всех этих фичах, я не знаком с явой и т.д.
мне известен только банальный html код, а работаю я методом тыка и подбора.
метод работает 100%, но вот такие поиски нужной инфы уже начинают напрягать.
с разрабами тоже уже не свяжешься, проект закрыт давным давно(
Ответ
#10
Повторяю - у каждого из разрабов, свои тараканы в голове. Отсюда - свои обработчики ссылок.
Если мне не изменяет память, то "что бы он показывал только то оружие что в инвентаре." - у фениксов это было в стиле <config showall="false" />, в описании XML файла мультиселла, хотя может ошибаюсь...
Все что нужно - найти/научить свою КБ понимать выданную ей инфу в ссылке.


---
Пример реализованного обработчика, в классе Комьюнити Боард:
Код:
        else if(Config.BBS_PVP_ALLOW_SELL && 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)
            {
                ICommunityBoardHandler handler = CommunityBoardManager.getInstance().getCommunityHandler(pBypass);
                if(handler != null)
                    handler.onBypassCommand(player, pBypass);
            }

            int listId = Integer.parseInt(mBypass[1]);
            MultiSellHolder.getInstance().SeparateAndSend(listId, player, 0);
            return;
        }

Вызывается такой обработчик ссылкой "_bbsmultisell:100500", где 100500-ID мультиселла.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Зависают запросы MySQL Zhelnar 12 4,189 08-08-2014, 01:58 PM
Последний пост: SouthBridge
  SQL запросы doDie 0 849 08-10-2013, 12:01 PM
Последний пост: doDie
  Multisell Manager Stringfellow 6 2,435 02-23-2013, 09:29 AM
Последний пост: Stringfellow
  Multisell Lucera MaT 1 1,590 10-30-2012, 11:33 AM
Последний пост: GOODPower
  Multisell (буквами) Sisi 7 2,016 06-03-2012, 07:49 PM
Последний пост: femida4me
  Запросы в XML по типу как в SQL ALF. 12 4,108 02-01-2012, 02:28 PM
Последний пост: zag
  Multisell lolpwnz 5 3,144 07-13-2011, 12:25 AM
Последний пост: lolpwnz
  multisell c заточкой vlad364 0 1,270 07-09-2011, 08:55 PM
Последний пост: vlad364
  [Помогите]Multisell в Community Bumerok 6 2,065 04-11-2011, 09:41 PM
Последний пост: Bumerok
  [Вопрос]Multisell MsKira 7 8,495 04-10-2011, 10:24 PM
Последний пост: Ro_0TT

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)