Перейти к содержанию

Пакет AITravel


Рекомендуемые сообщения

Есть такая трабла: при задании пакета анимации 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-й раз, который должен выводиться ТОЛЬКО при достижении конечной точке назначения!

Ссылка на комментарий
Поделиться на другие сайты

Только по тексту, в игре не проверял.

 

1) После set StartMove to ХХ желательно поставить return, т.к. у тебя в том же кадре срабатывает следующий if, что может привести к ошибкам.

2) Это зачем: set StartMove to ( StartMove - 10 ) ? Может получится StartMove = 0, а такой случай в скрипте вообще не предусмотрен.

Ссылка на комментарий
Поделиться на другие сайты

Только по тексту, в игре не проверял.

 

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?

Изменено пользователем lost81
Ссылка на комментарий
Поделиться на другие сайты

Проверил я в игре, все работает.

Проблема может быть в следующем: если непись не может выполнить AiTravel (не идет) он считает что пакет выполнен. Проверь может ли от второй точки к третьей дойти непись. Поставь его во вторую точку и через консоль задай ему AiTravel в третью точку, если не пойдет в этом ошибка.

 

На всякий случай плужик: post-2714-1192203731_thumb.jpg

В консоли coc aitest и подойди к тетеньке.

Ссылка на комментарий
Поделиться на другие сайты

Проверил я в игре, все работает.

Проблема может быть в следующем: если непись не может выполнить AiTravel (не идет) он считает что пакет выполнен. Проверь может ли от второй точки к третьей дойти непись. Поставь его во вторую точку и через консоль задай ему AiTravel в третью точку, если не пойдет в этом ошибка.

 

На всякий случай плужик: post-2714-1192203731_thumb.jpg

В консоли coc aitest и подойди к тетеньке.

 

Спасибо, ща проверю! :thank_you:

 

Еще раз спасибо! Все дело было в большом расстоянии между точками! Добавив еще 7 дополнительных точек довел таки своего непися до точки назначения! :thank_you:

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...