Multisell запросы из CB - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Описание темы:Помогите сделать запрос

Ответ
Опции темы
Непрочитано 30.01.2013, 18:49   #1
Заинтересовавшийся

Автор темы (Топик Стартер) Multisell запросы из CB

Добрый день.
Не могу разобраться с запросом в ядро из коммунити.
Есть ГМ магазин, в нем есть функции маммона.
В этих самых функциях интересует 2 вещи
1. Убрать СА
2. Вставить СА

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

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

Цитата:
есть конечно другой вариант, обойти это способом банального написания своего мультисела, но тогда при открытии диалога, будет показыватся весь арсенал L2 weapon, а не то что лежит у тебя в инвентаре.
Хотя если можно сделать иначе, советуйте как.
Сборка Voron Dev Epilogue(на основах Shaitan,Pheonix)
the2fantasy вне форума Ответить с цитированием
Непрочитано 30.01.2013, 18:55   #2
Аватар для Zubastic
ZG troll squad

По умолчанию Re: Multisell запросы из CB

Извращенцы что ли?
Вообщем для начала: какая есть задача? На птс вообще идет перечисление и параметр: показывать только оружие, которое имеется в инвентаре, только и всего.
Zubastic вне форума Ответить с цитированием
Непрочитано 30.01.2013, 19:07   #3
Заинтересовавшийся

Автор темы (Топик Стартер) Re: Multisell запросы из CB

На сколько я вижу в ядре за генерацию мультиселлов отвечает L2 Multisell.java
структура генерации такова
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.CGrade.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.AGrade.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.SGrade.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.S80Grade.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.BGrade.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.BGrade.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.AGrade.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.AGrade.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.SGrade.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.S80Grade.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.S84Grade.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.S80Grade.S84, list, 575);
        
entries.put(list.getListId(), list);
    } 
следственно мультиселл 4002 генерируется так:
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 работает.
Это только то что я виде своими глазами в ядре

Последний раз редактировалось the2fantasy; 30.01.2013 в 19:08. Причина: Добавлено сообщение
the2fantasy вне форума Ответить с цитированием
Непрочитано 30.01.2013, 19:28   #4
Аватар для Zubastic
ZG troll squad

По умолчанию Re: Multisell запросы из CB

        list.setListId(1011); 
        list.setShowAll(false);
Code: Java
Вот 2 строчки.
Что мешает вызывать такой мультиселл через линк?
Zubastic вне форума Ответить с цитированием
Непрочитано 30.01.2013, 19:32   #5
Заинтересовавшийся

Автор темы (Топик Стартер) Re: Multisell запросы из CB

мешает моя неграмотность.
Я с таким не сталкивался.
подскажи пожалуйста как написать байпас правильно в стиле
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
не дают никакой реакции

Последний раз редактировалось the2fantasy; 30.01.2013 в 19:34. Причина: дополнение
the2fantasy вне форума Ответить с цитированием
Непрочитано 30.01.2013, 19:40   #6
Аватар для Zubastic
ZG troll squad

По умолчанию Re: Multisell запросы из CB

Итак берем поиск нотпада и вводим 4002. Поиск по файлам *.htm
Думаю далее знаете, что делать.
Zubastic вне форума Ответить с цитированием
Непрочитано 30.01.2013, 19:52   #7
Заинтересовавшийся

Автор темы (Топик Стартер) Re: Multisell запросы из CB

Цитата:
Сообщение от 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"/>
При нажатии на кнопку, ничего не происходит, ГС ошибок даже не выдает о неправильно байпасе.
the2fantasy вне форума Ответить с цитированием
Непрочитано 30.01.2013, 19:55   #8
Забанен за кидаловo/обман/развод

По умолчанию Re: Multisell запросы из CB

КБ - это не НПС. Для нее пишутся отдельные обработчики ссылок (Если у Вас их попросту нет, то мы Вам наванговать их не смогем. Ищите подобную сборку, смотрите их КБ. Личьте себе, их наработки)
KilRoy вне форума Отправить сообщение для KilRoy с помощью ICQ Отправить сообщение для KilRoy с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 30.01.2013, 19:55   #9
Заинтересовавшийся

Автор темы (Топик Стартер) Re: Multisell запросы из CB

и без "-h" тоже пробовал

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

Добавлено через 9 минут
я не силен во всех этих фичах, я не знаком с явой и т.д.
мне известен только банальный html код, а работаю я методом тыка и подбора.
метод работает 100%, но вот такие поиски нужной инфы уже начинают напрягать.
с разрабами тоже уже не свяжешься, проект закрыт давным давно(

Последний раз редактировалось the2fantasy; 30.01.2013 в 20:04. Причина: Добавлено сообщение
the2fantasy вне форума Ответить с цитированием
Непрочитано 30.01.2013, 20:09   #10
Забанен за кидаловo/обман/развод

По умолчанию Re: Multisell запросы из CB

Повторяю - у каждого из разрабов, свои тараканы в голове. Отсюда - свои обработчики ссылок.
Если мне не изменяет память, то "что бы он показывал только то оружие что в инвентаре." - у фениксов это было в стиле <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 мультиселла.
KilRoy вне форума Отправить сообщение для KilRoy с помощью ICQ Отправить сообщение для KilRoy с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Ответ

Метки
bypass, epilogue, hardcoded, multisell, voron dev


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sql запросы MMd Готовые сборки 16 30.01.2012 17:40
Проблема с multisell pacifica Lineage II 5 06.12.2010 14:56
MySQL медленные запросы POPsy Рынок / Marketplace 4 14.10.2010 03:05
Заточка и Multisell Fire Работа со скриптами 0 10.03.2010 13:10
Multisell Kilsor Копия официального сервера 2 06.07.2009 11:36


© 2007–2022 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 02:50. Часовой пояс GMT +3.

Вверх