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

проблемы с GetDistance


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

Написал на основе скрипта из плагина "Better Vaults" скрипт для охраниика на складе Имперской Канцелярии, который если видит игрока, то ловит и штрафует. Всё работало, но я решил несколько усовершенствовать скрипт, чтобы охранник охранял помещение только если игрок заходит в зону действия специального активатора. Для этого создал активатор с ID zH_vaultmaker0, поместил его экземпляр на склад и в начале висящего на охраннике скрипта my_imperial_vault_script добавил:

 

 

if ( GetDistance, player -> zH_vaultmaker0 => 8000 ) ; если нет маркера, то ничего не делаем

return

endif

 

НО теперь при попытке загрузить сохранёнку или начать новую игру, Морр вылетает со следующей ошибкой: "Expression Error Unable to find referenced object "zH_vaultmaker0" in script my_imperial_vault_script". В чём косяк? Почему не находит?

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

во-первых, синтаксис: пишем >= или

во-вторых, твой объект "zH_vaultmaker0" должен 1) иметь уникальный неповторяющийся ID-идентификатор 2) быть выставлен в нужной локации (иметь одну Reference). 3) Должна в свойствах объекта стоять галочка в окне "Reference persist"

в-третьих, условие на проверку дистанции до игрока должно висеть на вызывающем объекте, т.е. на "zH_vaultmaker0", а не на охраннике (ты ведь не дистанцию между игроком и охранником измеряешь)

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

>2) быть выставлен в нужной локации (иметь одну Reference).

А более может быть? Ну в 3 локациях например? Или?..

Тогда объект перестает быть уникальным. Теоретически возможно, если в зоне обработки в одно время не могут находится 2 или более Reference этого объекта. На практике - неопревданный риск. К тому же и неудобно в работе. =)

 

п.с.

Не ленитесь заглядывать в настольную книгу каждого скриптера, Morrowind Scripting for Dummies. Открываем док, набираем в поиске "GetDistance" и читаем подробную статью с наглядными примерами. ;)

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

Спасибо что объяснили.

 

во-вторых, твой объект "zH_vaultmaker0" должен 1) иметь уникальный неповторяющийся ID-идентификатор 2) быть выставлен в нужной локации (иметь одну Reference).

 

Это есть. А даже если в одной ячейке будет скажем два или три таких маркера, то наверное ничего страшного не произойдёт, просто GetDistance выдаст расстояние до ближайшего.

 

3) Должна в свойствах объекта стоять галочка в окне "Reference persist"

 

Вот этого я не знал. Только сейчас вычитал в MSFD.

 

в-третьих, условие на проверку дистанции до игрока должно висеть на вызывающем объекте, т.е. на "zH_vaultmaker0", а не на охраннике (ты ведь не дистанцию между игроком и охранником измеряешь)

 

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

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

Ну можно и на охранника этот блок повесить, с учетом тех правок, которые указал Visman Изменено пользователем TJ
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
Вот отсюда и вырос впоследствии мой проект Restricted Access :) Изменено пользователем z-Hunter
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Войти

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

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

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