Цитата:
Сообщение от DarkEvil90 link=board=gothic&t=1105030050&start=925#934 date=09/24/05, в 14:04:18
2marazmus: Не помогло.
|
Посмотрел я твой файл (исправленный тобой B_AssessEnemy.d)
Ошибка - элементарна.
У тебя:
[pre] };
B_Attack(self,other,AR_GuildEnemy,0);
return TRUE;
};
// Вот здесь кончается тело основной функции// а ты засунул свой скрипт просто наружу тела функции, естественно, что компилятор ругается на это - твоя конструкция не находится внутри функции if (Player_Equipped_ShadowRing == True)
{
return;
};[/pre]
А нужно так:
[pre] };
B_Attack(self,other,AR_GuildEnemy,0);
return TRUE;
if (Player_Equipped_ShadowRing == True)
{
return TRUE;
};
};[/pre]
Добавление от 09/25/05, в 10:04:38
Кстати, если уж залез в такие "глубины" скриптов как обработчики восприятий, нужно обработать "головой" логику самой функции B_AssessEnemy.
Что это значит:
Нужно четко представлять себе, куда "засунуть" проверку на то, одето ли кольцо - если это глобально (кольцо действует для всех) - то твое условие должно стоять как можно выше в иерархии возвратов.
Выше я ошибся, написав
[pre]
if (Player_Equipped_ShadowRing == True)
{
return TRUE;
};
[/pre]
должно быть
[pre]
if (Player_Equipped_ShadowRing == True)
{
return
FALSE;
};
[/pre]
return FALSE здесь "выкидывает" из функции сразу после проверки, не проверяя остальные условия, "лежащие ниже" по коду.
То есть, логика такая:
Если нужно, чтобы монстр тебя не замечал/ не атаковал, свое условие на кольцо ставь как можно "выше" по тексту функции - чем раньше твое условие встретится и вернет FALSE, тем выше вероятность того, что ты получишь именно то, что хотел.
В любом случае, прочитай уроки Vam'а хотя бы раз, там все крайне понятно расписано.