PDA

Просмотр полной версии : Дуэли


Vinolentus
18.03.2011, 01:12
https://gist.github.com/875295 - использовал для сброса холдеров

https://gist.github.com/875296
а) игроки должны быть в бою на протяжении всей дуэли. Рестелс&еда отправляются далеко и надолго xD
б) игрок не должен быть добит тикающей аурой, которую повесил контролируемый оппонентом юнит
в) игрок не должен быть добит тикающей аурой, которую оппонент срефлектил на игрока. Кстати, я не уверен, что тут мы уберем _все_ возможные. Но так лучше, чем никак )

zergtmn
18.03.2011, 10:42
Лямбда-функции не поддерживаются в VC++ 2005, 2008.
if (!duel->opponent)
{
MANGOS_ASSERT(duel->opponent);
return;
}
Как-то странно выглядит этот фрагмент. Ассерт подразумевает немедленное завершение работы программы, если проверяемое условие не выполнено. Следовательно if и return тут совсем не нужны.

Vinolentus
18.03.2011, 12:16
Ассерт подразумевает немедленное завершение работы программы
Если компилировали без NDEBUG

rsa
18.03.2011, 12:16
if (!duel->opponent)
{
MANGOS_ASSERT(duel->opponent);
return;
}
Как-то странно выглядит этот фрагмент. Ассерт подразумевает немедленное завершение работы программы, если проверяемое условие не выполнено. Следовательно if и return тут совсем не нужны.

это не совсем так. сейчас при сборке с cmake по умолчанию ассерт только плюется в лог и никакого завершения нет (-DNDEBUG).

zergtmn
18.03.2011, 14:41
В любом случае, так городить не нужно.
MANGOS_ASSERT(duel->opponent);
и все.

Vinolentus
18.03.2011, 16:34
В этом конкретном случае ассерт вообще не нужен. Я поставил просто потому, что в коде функции дальше было что-то типа
if (duel->opponent)
duel->opponent-DoSomething();, хотя тут в принципе не может быть (duel && !duel->opponent)
А в общем... Игроки бегают на сборке с NDEBUG-оптимизацией-разворотом инлайнов, ее дебажить мало удовольствия. MANGOS_ASSERT распечатает stack trace с условием, процесс-то не положит. Давать им падать дальше на неверном указателе/чем-то еще смысла не вижу, если мы можем этого избежать - проблема крашем сервера не решится же %)
А для того, чтобы потом найти причину, обычно только стак трэйса хватает.

Amaru
18.04.2011, 11:31
игроки должны быть в бою на протяжении всей дуэли. Рестелс&еда отправляются далеко и надолго xDБред, роги в дуэлях свободно рестелсят, даже под дотами варов. Насколько я понял, эта инфа взята из патча 1.х.х, этому вряд ли можно верить.

Madmunus
20.04.2011, 09:09
Бред, роги в дуэлях свободно рестелсят, даже под дотами варов. Насколько я понял, эта инфа взята из патча 1.х.х, этому вряд ли можно верить.

Роги рестельсят ванишем, а не обычной абилкой...

Йоха
20.04.2011, 10:43
Роги рестельсят ванишем, а не обычной абилкой...

ваниш не сбрасывает доты

Deamon
20.04.2011, 14:02
ваниш не сбрасывает доты

http://www.wowhead.com/spell=1856
For the first 3 sec after vanishing, damage and harmful effects received will not break stealth

При чем тут ваниш и доты?

Йоха
20.04.2011, 16:57
а при чем тут вообще ваниш ?

Madmunus
20.04.2011, 17:36
боже ты мой, я цитировал рестелс в бою, а не доты, че не понятного-то?

Йоха
20.04.2011, 17:39
там чуть выше написано было :
Бред, роги в дуэлях свободно рестелсят, даже под дотами варов.

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