MSFD Заставляем актера бегать и прыгать
ForceRun
ClearForceRun
GetForceRun (short)
ForceJump
ClearForceJump
GetForceJump (short)
ForceMoveJump
ClearForceMoveJump
GetForceMoveJump (short)
Все эти функции управляют движением указанного NPC (и существа! Но существо должно иметь эти группы анимации! Которых (прыжок и снейк, обычно нету).
ForceRun заставляет актера всегда бежать при движении, ForceJump заставляет актера постоянно прыгать, ForceMoveJump заставляет актера постоянно прыгать при движении.
Версии функций с Get возвращают 1, если NPC был принужден войти в эти режимы, и 0 в противном случае.
Функции Clear используются для сброса эти режимов.
Каждый NPC может быть только в одном из этих режимов одновременно.
Приоритет для этих режимов: Sneak > Running > Jump > MoveJump.
Пример:
Этот скрипт позволяет объекту контролировать тип движения Athlete (Атлет), NPC, который бесконечно движется по квадрату с четырьмя точками-углами.
Begin AthleteControl
short questionAsked
short button
short isrunning
short isjumping
if ( MenuMode )
return
endif
if ( OnActivate == 1 )
set isrunning to ( Athlete->GetForceRun )
set isjumping to ( Athlete->GetForceMoveJump )
if ( questionAsked == 0 )
if ( isrunning )
MessageBox, "Атлет должен прекратить бежать? " "Да" "Нет"
else
MessageBox, "Заставить Атлета бежать? " "Да" "Нет"
endif
set questionAsked to 1
endif
endif
if ( questionAsked == 1 )
set button to GetButtonPressed
if ( button == -1 )
else
if ( isrunning == 0 )
if ( button == 0 )
Athlete->ClearForceMoveJump
Athlete->ForceRun
endif
else
if ( button == 0 )
Athlete->ClearForceRun
endif
endif
if ( isjumping )
MessageBox, "Атлет должен прекратить прыгать? " "Да" "Нет"
else
MessageBox, "Заставить Атлета прыгать? " "Да" "Нет"
endif
set questionAsked to 2
set button to –1
endif
endif
if ( questionAsked == 2 )
set button to GetButtonPressed
if ( button == -1 )
else
if ( isjumping == 0 )
if ( button == 0 )
Athlete->ClearForceRun
Athlete->ForceMoveJump
endif
else
if ( button == 0 )
Athlete->ClearForceMoveJump
endif
endif
set questionAsked to 0
set button to –1
endif
endif
end