lost81 Опубликовано 26 июля, 2005 Жалоба Поделиться Опубликовано 26 июля, 2005 Скрипты исполняются КАЖДЫЙ КАДР сверху вниз пока действуют, соответственно если у тебя 35 fps, он будет выполнен 35 раз за одну секунду. В том то и проблема всех начинающих скриптеров - они не знают принцип действия.<{POST_SNAPBACK}> Хм.. не всегда логика работает там, дге она обязана работать!... Сам автор MSFD говорит о том, что: (считаем цитатой) "Казалось бы не имеет смысла выводить в отдельные блоки, но при обособлении все начинает работать! Сколько нерабочих скриптов заработало у меня только по тому, что вместо констукции if/elseif/endif Я использовал if/endif, if/endif?" (конец считаемой цитаты) Так что не всегда все гладко, хотя казалось бы, по логике вещей все обязано работать гладко!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 26 июля, 2005 Автор Жалоба Поделиться Опубликовано 26 июля, 2005 lost, раз уж исправил, вышли мне на мыло, плиз!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 27 июля, 2005 Жалоба Поделиться Опубликовано 27 июля, 2005 (изменено) lost, раз уж исправил, вышли мне на мыло, плиз!!!<{POST_SNAPBACK}> не вопрос, лови! ;) мля, поторопился постить... с почтой траблы были, ща 100-пудово выслал, так что держи, да, без темы письмо, тоже прокосячил... сорри ;) Изменено 28 июля, 2005 пользователем lost81 Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 1 августа, 2005 Автор Жалоба Поделиться Опубликовано 1 августа, 2005 Поймал, ща посмотрю... Ссылка на комментарий Поделиться на другие сайты Поделиться
Laikalasse Опубликовано 7 сентября, 2005 Жалоба Поделиться Опубликовано 7 сентября, 2005 Так-с, сэры, нужна ваша помощь. Есть два коварных скрипта, части которых не работают. Первый, переделанный из Трибунала (смерть главы ТБ в Морнхолде): Begin loranScript Short NoLore short deathbed float loranHealth if ( deathbed == -1 ) return endif if ( GetJournalIndex ANB_DaedraDet < 120 ) if ( GetDisabled == 0 ) Disable endif Return endif if ( GetJournalIndex ANB_DaedraDet >= 120 ) if ( GetDisabled == 1 ) Enable endif Return endif if ( GetDisabled == 0 ) Disable endif ; вот с этого момента и не работает. Не выскакивает гритинг, когда Лоран при смерти. set loranHealth to GetHealth if ( GetJournalIndex ANB_DaedraDet >= 170 ) if ( loranHealth <= 50 ) if ( loranHealth < 1 ) resurrect modHealth 100 endif set deathbed to 1 endif endif if ( deathbed == 1 ) ForceGreeting endif End Второй, завязан на диалоге, это переделанный из Бладмуна (квест с саблей Элберота): Begin lordFalicia short nolore short weaponout short saberout if ( MenuMode == 1 ) return endif if ( GetDistance Player < 512 ) if ( player->GetWeaponDrawn == 1 ) ; игрок обнажает оружие if ( player->HasItemEquipped "glass longsword_lord" == 1 ) set saberout to 1 ;нужное оружие - Меч Владыки else if ( player->GetWeaponType == -1 );видимо, это рукопашный бой set weaponout to 1 else set weaponout to 2 ;любое другое оружие endif endif else set saberout to 0 endif endif End Диалог же такой (строки сверху вниз, начиная с первой в самом верху, Greeting 0): Ты хочешь запугать меня?.. Меч Владыки Дома! Хорошо, вы меня убедили. (Local | saberout | = |1)Уберите оружие, или я за себя не отвечаю! (Local | weaponout | = |2)Для чего все эти позы? Вы угрожаете мне? (Local | weaponout | = |-1)Зачем вы беспокоите меня? Непись реагирует только на Меч, то есть на срабатывание переменой saberout, а вот на другое оружие или рукопашную позу отвечает "Зачем вы беспокоите меня", что не правильно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 7 сентября, 2005 Жалоба Поделиться Опубликовано 7 сентября, 2005 Даже не знаю чем помочь... мне кажется, что они должны работать, не вижу сбоев в логике...Хотя в 1 скрипте:if ( GetDisabled == 0 ) Disable endifЗачем дисеблим дяденьку при JournalIndex ANB_DaedraDet от 120 до 170 и потом не востанавливаем? А может ли задисабленный дяденька гритинги давать? И последний блок я бы изменил так:if ( deathbed == 1 ) ForceGreeting set deathbed to -1 endifЧтобы он ForceGreeting бесконечно не повторял. Ссылка на комментарий Поделиться на другие сайты Поделиться
Laikalasse Опубликовано 8 сентября, 2005 Жалоба Поделиться Опубликовано 8 сентября, 2005 Нет, не так. Дядя дизэйблится только до тех пор, пока у игрока не появляется запись со строкой 120. как только индекс равен 120 - дядя на месте и с этих пор дает квесты. Все в порядке, это работает. Я его нахожу, он дает квесты. Ты смотри дальше, когда индекс равен и больше 120, он в энейбле. ФорсГритинг взхят из оригинального скрипта. А ты попробуй на компе у себя потестить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 8 сентября, 2005 Жалоба Поделиться Опубликовано 8 сентября, 2005 Все, я понял в чем фикус-пикус, смотри:if ( GetJournalIndex ANB_DaedraDet >= 120 ) if ( GetDisabled == 1 ) Enable endif Return endifПроверяем запись и если она >=120 идет команда return!!! А 170 - это тоже, знаешь ли, больше 120. Вот дальше этой команды скрипт и не отрабатывает. Поставь не >=, а просто == - все должно заработать. И удали следующий за этим блок: if ( GetDisabled == 0 ) Disable endifИначе он постоянно будет инеблится/дисеблится... ну и те изменения, что и раньше писал, т.е. после вызова ForceGreeting нужно переменую сбрасывать, иначе он постоянно говорить будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 9 сентября, 2005 Жалоба Поделиться Опубликовано 9 сентября, 2005 Второй скрипт я бы переписал так:if ( GetDistance Player < 512 ) if ( player->GetWeaponDrawn == 1 ); игрок обнажает оружие if ( player->HasItemEquipped "glass longsword_lord" == 1 ) set saberout to 1;нужное оружие - Меч Владыки else if ( player->GetWeaponType == -1 );видимо, это рукопашный бой set saberout to 0 set weaponout to 1 else set saberout to 0 set weaponout to 2;любое другое оружие endif endif else set saberout to 0 endif endif А в диалогах фильтровал бы 2 и 3 сообщение и по saberout = 0.Кстати там же у тебя идет проверка на weaponout= -1 а скрипт устанавливает ее в 1 или 2. Можно попробовать их местами поменять, saberout вниз, но не факт, что тогда эта нужная запись глючить не будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Laikalasse Опубликовано 9 сентября, 2005 Жалоба Поделиться Опубликовано 9 сентября, 2005 Ага, попробую отфильтровать. Там и должно быть 1, а не -1, это я опечаталась. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти