Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Новичкам

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

Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь

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

Есть команда SCRIPT_COMMAND_DESPAWN_SELF, которая позволяет деспавнить нпц, но если нпц заспавнен мертвым, то ничего не происходит.
Проходим такую цепочку:
Код:
pCreature->ForcedDespawn(step.script->despawn.despawnDelay);
void Creature::ForcedDespawn(uint32 timeMSToDespawn)
void Creature::RemoveCorpse()
В последней функции не проходим первое же условие:
Код:
if ((getDeathState() != CORPSE && !m_isDeadByDefault) || (getDeathState() != ALIVE && m_isDeadByDefault))
1. Если нпц заспавнен в мертвом состоянии, то команда все равно должна деспавнить его, т.к. в противном случае все квесты на каст на подобных трупах будут выполняться на одном нпц. Можно извращаться флагами, но это не совсем хороший вариант.
Через определенное время деспавненный труп снова должен появиться в мире, поэтому проблем быть не должно.

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

Есть ли в этом смысл, и какой из вариантов правильнее?
2. Данная команда также необходима для го, т.к. в случаях со спеллами с активацией можно кастовать на одном и том же го, т.к. состояние активации не сохраняется.
Как лучше реализовать деспавн го?

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

Если в первом случае !m_isDeadByDefault заменить на m_isDeadByDefault, что потеряем?
Хотя... Всё равно не понимаю, почему проверка не проходится...
KiriX вне форума   Ответить с цитированием
Старый 08.11.2010, 01:54   #3
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Не проходим вторую проверку:
Код:
getDeathState() != ALIVE && m_isDeadByDefault
virusav вне форума   Ответить с цитированием
Старый 08.11.2010, 08:14   #4
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от virusav Посмотреть сообщение
Не проходим вторую проверку:
Код:
getDeathState() != ALIVE && m_isDeadByDefault
И каким образом??? НПС в базу поставлен уже трупом, первоей уловие второй проверки выполняется.
m_isDeadByDefault - по умолчанию мёртвый, я думал, это и осзначает, что он спавнится мёртвым - тоже проходит значит.
В любом случае копать под m_isDeadByDefault надо...
KiriX вне форума   Ответить с цитированием
Старый 08.11.2010, 11:19   #5
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию

Вопрос - заспавнен мертвым, вы имеете ввиду колонку DeathState ?)
NeatElves вне форума   Ответить с цитированием
Старый 08.11.2010, 18:12   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Да, `DeathState`=1.
virusav вне форума   Ответить с цитированием
Старый 08.11.2010, 19:05   #7
NeatElves
YTDB Dev
 
Аватар для NeatElves
 
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
NeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранитаNeatElves Как самоцвет среди гранита
По умолчанию

Колонка в базе осталась как память, не нужна она более, не нужна.) Разобрались уже, все через аддоны идет, видимо раньше в эту механику не сильно углублялись и ввели эту колонку, а теперь она как память...))))

Может и правда, убрать ее пора ?)

Последний раз редактировалось NeatElves; 08.11.2010 в 19:18.
NeatElves вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[9577] Implement SCRIPT_COMMAND_DESPAWN_SELF (self = creature in this context) newsbot CMaNGOS Commits 0 12.03.2010 18:40


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


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