Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
92
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Заставляем актера бегать и прыгать: Движения в Трибунале

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

Проверка действий игрока: бежит, прыгает, крадется?

[no fix] GetPCSneaking (short)

[no fix] GetPCRunning (short)

[no fix] GetPCJumping (short)

if ( GetPCRunning )

Эти функции возвращают 1, если игрок выполняет подходящее действие, и 0 – если нет. Поскольку в Морре нет функций прямого тестирования ввода с клавиатуры, это альтернативный способ проверить, что игрок нажал определенную клавишу. Они широко используются в движущихся кораблях, лошадях или в моем моде про скалолазание.

Пример:

Когда этот скрипт помещен на NPC и игрок имеет надетый предмет scissors, появляются сообщения о действиях игрока.

Begin momscript

short warn

if ( player->HasItemEquipped "scissors" )

if ( warn != 1 )

if ( GetPCRunning )

MessageBox "Не бегай с ножницами!"

set warn to 1

endif

endif

if ( warn != 2 )

if ( GetPCJumping )

MessageBox "Не прыгай с ножницами! Ты себе глаз выколешь!"

set warn to 2

endif

endif

if ( warn != 3 )

if ( GetPCSneaking )

MessageBox "Ты не спрячешь ножницы от меня!"

set warn to 3

endif

endif

else

set warn to 0

endif

end