|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Баг-репорты Описываем проблемы и ошибки работы ядра |
|
Опции темы | Поиск в этой теме | Опции просмотра |
05.06.2010, 20:20 | #1 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Фильтр отображения предметов у торговца.
Вобщем это некое обсуждение перед реализацией в патче.
Возьмем к примеру этого NPC http://ru.wowhead.com/npc=32216 На оффе он не показывает те маунты которые вы не можете купить будучи другой фракцией. Вопрос вот в чем какие фильтры у торговцев на оффе есть? |
06.06.2010, 22:03 | #2 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
В смысле - по расе, по классу, по фракции?
По уровню или скилам ставить фильтр точно смысла нет.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
07.06.2010, 10:36 | #4 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 66
Сказал(а) спасибо: 120
Поблагодарили 9 раз(а) в 7 сообщениях
|
|
07.06.2010, 15:00 | #5 | |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 288
Сказал(а) спасибо: 125
Поблагодарили 97 раз(а) в 53 сообщениях
|
Цитата:
|
|
07.06.2010, 15:26 | #6 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
Задача сложнее.)
1. Берем вендора с турнира, например http://ru.wowhead.com/npc=33657, у него есть 2 маунта одинаковых http://ru.wowhead.com/item=46745 и http://ru.wowhead.com/item=46756, далал еще на 332 скрины - первый видно только своим, второй всем остальным... 2. Он же, должен продавать только чемпионам, ставим к примеру простой госсип, что вендор открыт тем, кто прошел квест, создаем нового перса дренея, варпаемся к нему не выполняя квест - вендор открыт всегда, госсип не учитывается, перса другой расы - госсип работает... Последний раз редактировалось NeatElves; 07.06.2010 в 15:28. |
Пользователь сказал cпасибо: | Lightunit (07.06.2010) |
07.06.2010, 17:57 | #7 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Вобщем я еще вот к чему.
Берем этого нпс http://ru.wowhead.com/npc=32216 Он продает к примеру http://ru.wowhead.com/item=44689 и http://ru.wowhead.com/item=44690 В "item_template" Faction стоит верно. Но в самом сервере нету ограничение на отображение этих предметов в доступных для покупки предметов. То есть сервер не фильтрует их. На стороне сервера есть только вот такой фильтр http://github.com/mangos/mangos/blob...temHandler.cpp Код:
if((pProto->AllowableClass & _player->getClassMask()) == 0 && pProto->Bonding == BIND_WHEN_PICKED_UP && !_player->isGameMaster()) continue; Но тут еще 1 маленькая проблемка с вендорами нарисовалась. Вот патч на фракцию Код:
diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index 41796a7..3d9057e 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -756,7 +756,8 @@ void WorldSession::SendListInventory(uint64 vendorguid) { if((pProto->AllowableClass & _player->getClassMask()) == 0 && pProto->Bonding == BIND_WHEN_PICKED_UP && !_player->isGameMaster()) continue; - + if((pProto->AllowableRace & _player->getRaceMask()) == 0 && pProto->Bonding == BIND_WHEN_PICKED_UP && !_player->isGameMaster()) + continue; + ++count; // reputation discount Если после применения фильтров у вендора не будет ни одного предмета который он может предложить на продажу то тогда вендор не откроет окно ) Код:
diff --git a/src/game/ItemHandler.cpp b/src/game/ItemHandler.cpp index 41796a7..ce94160 100644 --- a/src/game/ItemHandler.cpp +++ b/src/game/ItemHandler.cpp @@ -774,9 +775,11 @@ void WorldSession::SendListInventory(uint64 vendorguid) } } - if ( count == 0 || data.size() != 8 + 1 + size_t(count) * 8 * 4 ) - return; - + if(data.size() != 8 + 1 + size_t(count) * 8 * 4) + return; + if ( count == 0 ) + data << uint8(0); + data.put<uint8>(count_pos, count); SendPacket( &data ); } + data << uint8(0); тут дело вот в чем отснифил пакет с оффа получил пакет длинной 10 байт а у нас если вендор не предлогает ни одной шмотки на продажу то 9 )) Вот собственно байтик дописываем ) |
07.06.2010, 18:56 | #8 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
И вообще проверка Код:
if ( count == 0 || data.size() != 8 + 1 + size_t(count) * 8 * 4 ) return; |
|
07.06.2010, 19:15 | #9 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Да я видел что в текущем состоянии пакет не отправляется.
Но если вообще убрать if ( count == 0 || data.size() != 8 + 1 + size_t(count) * 8 * 4 ) return; то клиент небудет реагировать на пакет. Нужен дописать тот байтик. А проверку оставил так-как хрен его знает какая логика была у того человека который ее писал, и не мне решать убирать или оставлять ее. Последний раз редактировалось alien; 07.06.2010 в 19:18. |
07.06.2010, 21:48 | #11 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
|
08.06.2010, 18:47 | #12 |
Ученый
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
|
Вопрос к администрации.
Можно как-то 7 пост перенести в раздел Патчи на рассмотрении или просто от Vladimir какой-нибудь коммент услышать |
08.06.2010, 20:57 | #13 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
он увидит... И если нужно - перенесет.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
Пользователь сказал cпасибо: | alien (08.06.2010) |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[10641][hack fix] Отображение характеристик heroic предметов. | Warlord123 | Принятые патчи | 6 | 25.10.2010 15:30 |
[10046][patch] Хранение GUIDов передаваемых предметов при обмене | zergtmn | Принятые патчи | 4 | 08.06.2010 19:50 |
[fixed][bug] Дублирование предметов. | Maximus | Баг-репорты | 12 | 23.04.2010 21:52 |