Вношу некоторые поправки к переменным:
func void use_scavhorn()\\Описание функции использования
{
if((Npc_GetDistToWP(self,"SEE_VOR_STADT_12") <= 1000) && (DC_1_TOWER != 3) && !SCAVHORNUSED)\\Здесь яно видно, что функуция выполняется, если не определена переменная SCAVHORNUSED (!SCAVHORNUSED)
{
Wld_SetGuildAttitude(GIL_WOLF,ATT_ANGRY,GIL_SCAVE NGER);\\Волки вдруг стали врагами падальщиков
Wld_InsertNpc(v_scav1,"SEE_VOR_STADT_06");\\Появл яются сами падальщики
Wld_InsertNpc(v_scav2,"SEE_VOR_STADT_06");
Wld_InsertNpc(v_scav3,"SEE_VOR_STADT_06");
Wld_InsertNpc(v_scav4,"SEE_VOR_STADT_06");
SCAVHORNUSED = TRUE;\\А вот тут она и определяется как TRUE. Т.е. выполнение функции вторично уже неозможно.
Wld_SendTrigger("TS_CAMERA_HOCHSTAND");\\Подключа ется камера
}
func void
hochstandwoelfe()
{
if(HOCHSTANDAKTIVIERT == 0)\\Тут условие выполняется если HOCHSTANDAKTIVIERT равно 0.
{
HOCHSTANDAKTIVIERT = HOCHSTANDAKTIVIERT + 1;\\HOCHSTANDAKTIVIERT + 1 уже не рано 0. поэтому вторично функция не выполняется.
if(Npc_GetDistToWP(sld_b,"AM_HOCHSTAND_00") < 800))\\ если дистанция до варпоинта меньше 800
func void vor_hochstand()
{
if(STARTDIALOGGESPROCHEN == 0)\\Всё тоже самое.
{
STARTDIALOGGESPROCHEN = 1;\\STARTDIALOGGESPROCHEN уже не рана 0 поэтому вторично функция не вызывается.
};
Но я всё-равно не пойму - ЗАЧЕМ??? Все переменные выполняют одну функцию - не дать вторично запустить функцию. Но в первром случае всё достаточно просто и грамматно, а востальных... по-карсацки... наверно скрипты писали два разных человека со своим пониманием и своими тараканими. Другого объяснения у меня нет...
Добавление от 07/09/05, в 16:24:56
2Vam:
Данная функция повешена на триггер TS_VOR_HOSHSTAND, при каком условии он срабатывает надо смотреть zen файл. Таких триггеров в файле даже четыре.
|
Где ты их нашол??? :dead:
Вот эти параметры camTrjFOR и targetTrjFOR камеры зацикливают её движение (имхо), параметров у камеры очень много, нужно разбираться.
|
Ща проверю...
Добавление от 07/09/05, в 18:53:42
Так, блин, теперь одно всаёт на своиё место, но появляются новые вопросы!!!
Короче вот как этоо выглядет в игре:
Когда Ардарик забирается на башню, попадает в поле действия триггера
TS_HOCHSTAND, срабатывает его скриптфункция
HOCHSTANDWOELFEfunc void
hochstandwoelfe()
{
if(HOCHSTANDAKTIVIERT == 0)\\??? Вроде условие если камера включена...
{
HOCHSTANDAKTIVIERT = HOCHSTANDAKTIVIERT + 1;\\Вопросы, кругом вопросы ::)
if(Npc_GetDistToWP(sld_b,"AM_HOCHSTAND_00") < 800))\\ если дистанция до варпоинта меньше 800
{
Npc_ExchangeRoutine(sld_b,"RALF");\\Убежали неписи, которые ГГ подставили
Npc_ExchangeRoutine(sld_a,"RAL");
AI_ContinueRoutine(sld_b);
AI_ContinueRoutine(sld_a);
};
AI_OutputSVM_Overlay(hero,hero,"TurmGefangen_15_0 0");");//Это реплика Ардарика, когда приходят волки. «Откуда взялись эти волки...» говорит он
AI_StandupQuick(hero);\\Перевод ГГ в стоячее состояние
Wld_SendTrigger("TS_CAMERA_HOCHSTAND");\\
bh_wolfspawn();\\Функция такая. Приведена в отдельном одноимённом файле
};
};
Который врубает другой триггер
TS_CAMERA_HOCHSTAND, а тот в свою очередь выполняет свою скриптфункцию
START_CAMERA_HOCHSTAND и врубает камеру в первый раз(да-да, именно в первый, так как она включается два раза - сначала при появлении волков, потом при появлении падальщиков. Но в первый раз камеру включает триггер, а во второй скрипт рога)
Потом чтобы избавиться от волков ГГ использует рог, который снова активирует триггер
TS_CAMERA_HOCHSTAND, который активирует во второй раз функцию
START_CAMERA_HOCHSTAND.
Но я никак не могу отследить каким образом триггер реагирует на появление ГГ в своём фокусе! Единственное что приходит в голову свойство триггера
reapondToPC(дословно переводится как отзыв на Player Characters - игровой характер). Думаю это и есть реакция на ГГ. Но вот проблема - этот параметр выставлен на TRUE у всех триггеров! То есть они все должны реагировать на ГГ, даже если несут другую функцию. На мой взгляд объясняется это тем, что эти триггеры точечные и не должны функционировать при приближении к ним главного героя. Чёрт, я сам запутался!
Короче триггер
TS_HOCHSTAND отличается от остальных тем, что не реагирует ни на объекты, ни на НПС. Только на ГГ.
Вношу ещё несколько поправок:
Я ошибся. Мне стыдно. Камера начала Диккурика не зациклина. Она Просто не выключается, когда пройдёт цикл, а смотрит на ГГ в точке своей последней остановки. ГГ поварачивается к камере и продолжает свой монолог.
И ещё я ошибся на счёт того, что она включается сразу сначала игры. Нет, сначала мы видим ГГ. Нужно сделать один шаг в любую сторону, чтобы камера активировалась. Но я всё-таки не нашол ни одного триггера, привязанного к ней!
Vam триггера TS_vor_hochstand не существует! Более того нет ни одного триггера со скриптфункцией vor_hochstand.
Так как же разрабы Диккурика включили камеру?
Так как же отследить в триггере появление ГГ?
Добавление от 07/09/05, в 19:14:55
А может быть камера реагирует на ГГ не триггером, а скриптом? Вот этой функциейif
(Npc_GetDistToWP(sld_b,"AM_HOCHSTAND_00") < 800))