Показать сообщение отдельно
Старый 25.09.2005, 09:44   #944
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

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

Цитата:
Сообщение от 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'а хотя бы раз, там все крайне понятно расписано.
Отправить личное сообщение для Ответить с цитированием