Показать сообщение отдельно
Старый 29.09.2007, 19:27   #1825
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

юзал всевозможные варианты.
имеем 4 варианта входных условий. сведем все в табличку, 1 - условие выполняется, 0 - не выполняется:
[table]
[tr][td][/td][td]bb[/td][td]!bb[/td][/tr]
[tr][td]aa[/td][td]1[/td][td]0[/td][/tr]
[tr][td]!aa[/td][td]1[/td][td]1[/td][/tr]
[/table]
причем, эта табличка справедлива для обоих вариантов. как для (aa && bb) || !aa, так и для (!aa || bb)
вот это пока непонятно почему.

Добавление от 09/29/07, в 19:22:31
расшифровка:
aa - лежит, !aa - НЕ лежит
bb - близко, !bb - далеко.

Добавление от 09/29/07, в 19:44:37
в оригинале B_MM_AssessEnemy(); НЕ выполняется только в одном случае - self лежит и он далеко. при любых других комбинациях B_MM_AssessEnemy(); выполняется:
лежит далеко - нет
лежит близко - да
НЕ лежит далеко - да
НЕ лежит близко - да
для выражения (!aa || bb) НЕвыполнение условия приводит к тому же варианту, просто ф-ию тогда нужно записать несколько иначе:
if !( !aa || bb) {B_MM_AssessEnemy();};

чуствую, надо подучиться ;)

Добавление от 09/29/07, в 19:47:28
2Vam:
первым надо ставить выражение, которое реже бывает ложным ...
я добавил два PrintDebug() на обе проверки, пограю, посмотрю, что в логе чаще встречается.
Ответить с цитированием