Ru-MaNGOS

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

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.05.2010, 15:07   #1
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию Пушка Скверны Дверей Смерти[39219]

При использовании итема с данным спеллом получаем сообщение об ошибке, не проходим условие:
Spell.cpp
Код:
case SPELL_AURA_MOD_CHARM:
...
                if(m_targets.getUnitTarget() == m_caster)
                    return SPELL_FAILED_BAD_TARGETS;
Для данного спелла можно добавить запись в `spell_script_target`, цель находится и добавляется:
Spell.cpp
Код:
AddUnitTarget(creatureScriptTarget, SpellEffectIndex(j));
Как я понимаю, изначально игрок добавляется в список целей:
SpellHandler.cpp
Код:
    SpellCastTargets targets;

    recvPacket >> targets.ReadForCaster(pUser);

    targets.Update(pUser);
Если исключить добавление игрока в список целей для таких спеллов, то получаем сообщение об ошибке:
Spell.cpp
Код:
case SPELL_AURA_MOD_CHARM:
...
                if(!m_targets.getUnitTarget())
                    return SPELL_FAILED_BAD_IMPLICIT_TARGETS;
Не встречал спеллов, которые были бы с привязкой, и чтобы их можно было кастовать на игрока.

Может, для спеллов, для которых цели можно занести в `spell_script_target`, исключать игрока в качестве цели?
virusav вне форума   Ответить с цитированием
Старый 11.05.2010, 15:34   #2
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Не понял логики... Если спелл имеет цель spell_script_target и он кастуется (при наличии записи) нормально, зачем кого-то исключать из целей?
KiriX вне форума   Ответить с цитированием
Старый 11.05.2010, 15:37   #3
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Потому что на первой же проверке if(m_targets.getUnitTarget() == m_caster) получаем ошибку, т.к. в m_targets указан игрок.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
KiriX (11.05.2010)
Старый 04.11.2010, 18:34   #4
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Где лучше в данном случае делать проверку, чтобы каст прошел успешно?
virusav вне форума   Ответить с цитированием
Старый 04.11.2010, 21:09   #5
evilstar
Супер-модератор
 
Аватар для evilstar
 
Регистрация: 07.04.2010
Адрес: Москва
Сообщений: 221
Сказал(а) спасибо: 101
Поблагодарили 27 раз(а) в 17 сообщениях
evilstar Скоро придёт к известностиevilstar Скоро придёт к известности
Отправить сообщение для evilstar с помощью ICQ
По умолчанию

Там пушка становится питомцем Игрока, то есть не дает пушку под контроль?
__________________

Теперь и в Бете Warlords of Draenor & HotS !
evilstar вне форума   Ответить с цитированием
Старый 04.11.2010, 21:59   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Не дает кастануть на пушку.

Если войти в режим ГМ, выделить пушку и кастануть командой .cast, то все отработает, как надо.
В обычном режиме каст не проходит.

В `spell_script_target` записи есть.
virusav вне форума   Ответить с цитированием
Старый 06.11.2010, 19:11   #7
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Всего 3 спелла с SPELL_AURA_MOD_CHARM и TARGET_SCRIPT.
Проверил 2 из них - один и тот же косяк.
В третьем есть SPELL_AURA_CONTROL_VEHICLE, патча на транспорт нет, поэтому не проверял.

Исключил спеллы из if(m_targets.getUnitTarget() == m_caster) для теста - нпц берутся под контроль.

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

Возможно, это уже другая проблема.

Что скажут знатоки по поводу указанных проблем?
virusav вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Восстановление Стража Скверны virusav Баг-репорты 26 15.01.2011 23:00
Fel Synergy / Узы Скверны virusav Баг-репорты 2 26.08.2010 21:01
Поиск патча — Хватка Смерти Гари Флудильня 5 31.07.2010 22:59
[patch] Хватка смерти (Death Grip) zergtmn Патчи на рассмотрении 3 11.06.2010 04:06


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


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