Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Баг-репорты

Важная информация

Баг-репорты Описываем проблемы и ошибки работы ядра

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2010, 22:44   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию player on mount use teleport

Есть вот такой маленький недочёт:
Если персонаж на маунте , то он не может использовать портал (городские и маговские порталы) а должен.
Вот оно самое:

Код:
if (m_caster->IsMounted() && m_caster->GetTypeId()==TYPEID_PLAYER && !m_IsTriggeredSpell &&
        !IsPassiveSpell(m_spellInfo) && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_MOUNTED))
    {
        if (m_caster->IsTaxiFlying())
            return SPELL_FAILED_NOT_ON_TAXI;
        else
            return SPELL_FAILED_NOT_MOUNTED;
    }
Если закоммитить - проблеммы нет. Не могу допереть... что тогда ломается то?
А да, проверка была добавлена в 3089-й ревизии.
Den вне форума   Ответить с цитированием
Старый 07.12.2010, 03:38   #2
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Код:
m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_MOUNTED
Куча спелов не должна кастаться на маунте. Клинет это проверяет, но если не будет проверки в ядре будет возможет читинг.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Den (07.12.2010)
Старый 07.12.2010, 13:00   #3
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

А если сделать вот так ? (для примера порталы не все)

Код:
// not let players cast spells at mount (and let do it to creatures)
    if (m_caster->IsMounted() && m_caster->GetTypeId()==TYPEID_PLAYER && !m_IsTriggeredSpell &&
        !IsPassiveSpell(m_spellInfo) && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_MOUNTED) &&
		// for players on mount use portal 
        !(m_spellInfo->Id == 17609 || m_spellInfo->Id == 17610 || m_spellInfo->Id == 17611 || m_spellInfo->Id == 32270 ||	// Orgrimmar, Thunder Bluff, Undercity, Silvermoon City
        m_spellInfo->Id == 17607 || m_spellInfo->Id == 17608 || m_spellInfo->Id == 17334 || m_spellInfo->Id == 32268))      // Ironforge, Darnassus, Stormwind City, The Exodar 		
    {
        if (m_caster->IsTaxiFlying())
            return SPELL_FAILED_NOT_ON_TAXI;
        else
            return SPELL_FAILED_NOT_MOUNTED;
    }
Или есть более лучший подход к этому делу ?
Den вне форума   Ответить с цитированием
Старый 07.12.2010, 14:08   #4
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Лучший подход - посмотреть на используемый атрибут и может быть найти более адекватно подходящий под проверку - т.е имеющийся, и для тех случаев, когда надо, как и данный, но неимеющийся для неадеквтных случаев.
Возможно аттрибут подобран неудачно.

Использовать списки спелов - это последнее что может быть рассмотрено как удачное решение. Когда тотально нет альтернатив.
__________________
Так как устал объяснять знайте ICQ не пользуюсь

Последний раз редактировалось Vladimir; 07.12.2010 в 14:10.
Vladimir вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Den (08.12.2010)
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10839] At far teleport fail retunr player to source point instead homebind. newsbot CMaNGOS Commits 0 08.12.2010 06:21
[10491] Search player in player list in update fields data prepare is bad idea. newsbot CMaNGOS Commits 0 16.09.2010 22:10
Send SMSG_CORPSE_NOT_IN_INSTANCE if player in ghost form tries to enter an instance without player's newsbot CMaNGOS Commits 0 27.05.2010 22:00
[9901] Implement 71342 mount selection newsbot CMaNGOS Commits 0 15.05.2010 16:50
[9805] Fixed lost flight mount/form for GM in old contentes. newsbot CMaNGOS Commits 0 29.04.2010 15:11


Текущее время: 12:04. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot