×
Меню
Индекс

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