lost81 Опубликовано 2 ноября, 2005 Жалоба Поделиться Опубликовано 2 ноября, 2005 Есть такая трабла: при задании пакета анимации AITravel непись идет только до первой точке, а дальше идти категоричеси отказывается! Сложилось такое впечатление, что некорректно работает проверка GetAIPackegeDone так как при ударе данного непися он пытается ударить плейера в ответ, но этот пакет анимации обрывается, и непись продолжает движение ко второй точке, но не достигая ее, останавливается и приходится бить его еще раз, и так до тех пор пока он не достигнет конечной точки! Причем, если плейер инициирует с неписем диалог после того как тот остановился, то непись отвечает как будто плейер и не бил его ранее! В чем косяки? Скипт прилагаю: begin 1_YourGirl_Script short OnceMeeting short OnceGreeting short StartMove float timeout if ( GetDisabled == 1 ) return endif if ( GetJournalIndex "11_A1_MyBaby" < 20 ) Disable endif if ( GetJournalIndex "11_A1_MyBaby" == 20 ) if ( GetDistance Player <= 250 ) if ( OnceGreeting == 0 ) ForceGreeting set OnceGreeting to 1 endif endif endif if ( StartMove == 1 ) if ( MenuMode == 1 ) set StartMove to -1 elseif ( MenuMode == 0 ) set StartMove to 10 endif endif If ( 1_YourGirl -> GetDistance, Player < 5000 ) if (GetCurrentAIPackage == -1) set timeout to ( timeout + GetSecondsPassed ) if ( timeout >= 3) set StartMove to ( StartMove - 10 ) set timeout to 0 endif else set timeout to 0 endif endif if ( StartMove == -1 ) return elseif ( StartMove == 10 ) SetHello 0 AITravel 554, -1038, 270 set StartMove to 20 endif if ( StartMove == 20 ) if ( GetAIPackageDone == 1 ) set StartMove to 30 endif elseif ( StartMove == 30 ) AITravel -467, -1053, 270 set StartMove to 40 elseif ( StartMove == 40 ) if ( GetAIPackageDone == 1 ) set StartMove to 50 endif elseif ( StartMove == 50 ) AITravel -511, -789, 270 set StartMove to 60 elseif ( StartMove == 60 ) if ( GetAIPackageDone == 1 ) set StartMove to 70 endif elseif ( StartMove == 70 ) AITravel -663, -859, 270 Set StartMove to 80 elseif ( StartMove == 80 ) if ( GetAIPackageDone == 1 ) set StartMove to 90 endif elseif ( StartMove == 90 ) if ( GetDistance Player <= 150 ) if ( OnceGreeting == 1 ) ForceGreeting set OnceGreeting to 2 endif endif endif end P.S Пробовал конструкцию не только if-elseif-endif, но и if-endif, в последнем случае при достижении первой точки непись сразу же инициинует диалог с плейером 2-й раз, который должен выводиться ТОЛЬКО при достижении конечной точке назначения! Ссылка на комментарий Поделиться на другие сайты Поделиться
Олег Барс Опубликовано 2 ноября, 2005 Жалоба Поделиться Опубликовано 2 ноября, 2005 Только по тексту, в игре не проверял. 1) После set StartMove to ХХ желательно поставить return, т.к. у тебя в том же кадре срабатывает следующий if, что может привести к ошибкам.2) Это зачем: set StartMove to ( StartMove - 10 ) ? Может получится StartMove = 0, а такой случай в скрипте вообще не предусмотрен. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 3 ноября, 2005 Автор Жалоба Поделиться Опубликовано 3 ноября, 2005 (изменено) Oleg Bars сказал: Только по тексту, в игре не проверял. 1) После set StartMove to ХХ желательно поставить return, т.к. у тебя в том же кадре срабатывает следующий if, что может привести к ошибкам.2) Это зачем: set StartMove to ( StartMove - 10 ) ? Может получится StartMove = 0, а такой случай в скрипте вообще не предусмотрен. Спасибо, учел, пошел тестить... PS Результаты теста неутешительны, непись по прежнему отказывается идти до 2-й и последующих точек, при достижении 1-й точки инициирует диалог! косяки однако! :1anim_al: какие-нибудь еще предложения будут? :1anim_be: Цитата какие-нибудь еще предложения будут? :1anim_be: пробовал такой вариант: begin 1_YourGirl_Script short OnceMeeting short OnceGreeting short OneMess short StatusMove short StartMove float timeout if ( GetDisabled == 1 ) return endif if ( GetJournalIndex "11_A1_MyBaby" < 20 ) Disable endif if ( GetJournalIndex "11_A1_MyBaby" == 20 ) if ( GetDistance Player <= 250 ) if ( OnceGreeting == 0 ) ForceGreeting set OnceGreeting to 1 endif endif endif if ( StartMove == 1 ) if ( MenuMode == 1 ) set StartMove to -1 elseif ( MenuMode == 0 ) set StartMove to 10 endif endif If ( 1_YourGirl -> GetDistance, Player < 5000 ) if (GetCurrentAIPackage == -1) set timeout to ( timeout + GetSecondsPassed ) if ( timeout >= 3) set StartMove to ( StartMove - 10 ) set timeout to 0 endif else set timeout to 0 endif endif if ( StatusMove == 1 ) if ( GetAIPackageDone == 1 ) set StartMove to 30 if ( OneMess == 0 ) MessageBox "Сейчас StartMove имеет значение %.0f", StartMove set OneMess to 1 endif endif elseif ( StatusMove == 2 ) if ( GetAIPackageDone == 1 ) set StartMove to 50 if ( OneMess == 1 ) MessageBox "Сейчас StartMove имеет значение %.0f", StartMove set OneMess to 2 endif endif elseif ( StatusMove == 3 ) if ( GetAIPackageDone == 1 ) set StartMove to 70 if ( OneMess == 2 ) MessageBox "Сейчас StartMove имеет значение %.0f", StartMove set OneMess to 3 endif endif elseif ( StatusMove == 4 ) if ( GetAIPackageDone == 1 ) set StartMove to 90 if ( OneMess == 3 ) MessageBox "Сейчас StartMove имеет значение %.0f", StartMove set OneMess to 4 endif endif endif if ( StartMove == -1 ) return elseif ( StartMove == 10 ) SetHello 0 AITravel 554, -1038, 270 set StatusMove to 1 elseif ( StartMove == 30 ) AITravel -467, -1053, 270 set StatusMove to 2 elseif ( StartMove == 50 ) AITravel -476.77, -796.27, 270 set StatusMove to 3 elseif ( StartMove == 70 ) AITravel -687.46, -863.55, 270 set StatusMove to 4 elseif ( StartMove == 90 ) if ( GetDistance Player <= 150 ) if ( OnceGreeting == 1 ) ForceGreeting set OnceGreeting to 2 endif endif endif end непись отказывается идти даже до первой точки, мессаджбокс не выводится! пробовал вставлять MessageBox в первый вариант.... Все результаты выводились один за другим с интервалом в 1 фрейм при достижении непися 1-ой точки... Я вот тут подумал, мжет таймер воткнуть какой-нибудь перед проверкой GetAIPackageDone? Изменено 3 ноября, 2005 пользователем lost81 Ссылка на комментарий Поделиться на другие сайты Поделиться
Олег Барс Опубликовано 3 ноября, 2005 Жалоба Поделиться Опубликовано 3 ноября, 2005 Проверил я в игре, все работает.Проблема может быть в следующем: если непись не может выполнить AiTravel (не идет) он считает что пакет выполнен. Проверь может ли от второй точки к третьей дойти непись. Поставь его во вторую точку и через консоль задай ему AiTravel в третью точку, если не пойдет в этом ошибка. На всякий случай плужик: В консоли coc aitest и подойди к тетеньке. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 3 ноября, 2005 Автор Жалоба Поделиться Опубликовано 3 ноября, 2005 Oleg Bars сказал: Проверил я в игре, все работает.Проблема может быть в следующем: если непись не может выполнить AiTravel (не идет) он считает что пакет выполнен. Проверь может ли от второй точки к третьей дойти непись. Поставь его во вторую точку и через консоль задай ему AiTravel в третью точку, если не пойдет в этом ошибка. На всякий случай плужик: В консоли coc aitest и подойди к тетеньке. Спасибо, ща проверю! :thank_you: Еще раз спасибо! Все дело было в большом расстоянии между точками! Добавив еще 7 дополнительных точек довел таки своего непися до точки назначения! :thank_you: Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 7 ноября, 2005 Автор Жалоба Поделиться Опубликовано 7 ноября, 2005 Майк, тему по ходу, убить можно... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти