z-Hunter Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 Написал на основе скрипта из плагина "Better Vaults" скрипт для охраниика на складе Имперской Канцелярии, который если видит игрока, то ловит и штрафует. Всё работало, но я решил несколько усовершенствовать скрипт, чтобы охранник охранял помещение только если игрок заходит в зону действия специального активатора. Для этого создал активатор с ID zH_vaultmaker0, поместил его экземпляр на склад и в начале висящего на охраннике скрипта my_imperial_vault_script добавил: if ( GetDistance, player -> zH_vaultmaker0 => 8000 ) ; если нет маркера, то ничего не делаем returnendif НО теперь при попытке загрузить сохранёнку или начать новую игру, Морр вылетает со следующей ошибкой: "Expression Error Unable to find referenced object "zH_vaultmaker0" in script my_imperial_vault_script". В чём косяк? Почему не находит? Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 (изменено) во-первых, синтаксис: пишем >= или во-вторых, твой объект "zH_vaultmaker0" должен 1) иметь уникальный неповторяющийся ID-идентификатор 2) быть выставлен в нужной локации (иметь одну Reference). 3) Должна в свойствах объекта стоять галочка в окне "Reference persist"в-третьих, условие на проверку дистанции до игрока должно висеть на вызывающем объекте, т.е. на "zH_vaultmaker0", а не на охраннике (ты ведь не дистанцию между игроком и охранником измеряешь) Изменено 10 мая, 2009 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
GKalian Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 >2) быть выставлен в нужной локации (иметь одну Reference).А более может быть? Ну в 3 локациях например? Или?.. Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 (изменено) >2) быть выставлен в нужной локации (иметь одну Reference).А более может быть? Ну в 3 локациях например? Или?..Тогда объект перестает быть уникальным. Теоретически возможно, если в зоне обработки в одно время не могут находится 2 или более Reference этого объекта. На практике - неопревданный риск. К тому же и неудобно в работе. =) п.с.Не ленитесь заглядывать в настольную книгу каждого скриптера, Morrowind Scripting for Dummies. Открываем док, набираем в поиске "GetDistance" и читаем подробную статью с наглядными примерами. ;) Изменено 10 мая, 2009 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
Visman Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 if ( GetDistance, player -> zH_vaultmaker0 => 8000 )if ( zH_vaultmaker0 -> GetDistance Player <= 8000 )а может и такif ( "zH_vaultmaker0" -> GetDistance Player <= 8000 ) Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 10 мая, 2009 Автор Жалоба Поделиться Опубликовано 10 мая, 2009 (изменено) Спасибо что объяснили. во-вторых, твой объект "zH_vaultmaker0" должен 1) иметь уникальный неповторяющийся ID-идентификатор 2) быть выставлен в нужной локации (иметь одну Reference). Это есть. А даже если в одной ячейке будет скажем два или три таких маркера, то наверное ничего страшного не произойдёт, просто GetDistance выдаст расстояние до ближайшего. 3) Должна в свойствах объекта стоять галочка в окне "Reference persist" Вот этого я не знал. Только сейчас вычитал в MSFD. в-третьих, условие на проверку дистанции до игрока должно висеть на вызывающем объекте, т.е. на "zH_vaultmaker0", а не на охраннике (ты ведь не дистанцию между игроком и охранником измеряешь) Нет, я полагал, что измеряю дистанцию между игроком и маркером. :) Просто скрипт этот висит на охраниике. Потому что не знаю как скриптом на маркере заставить охраниика предпринять все эти действия, да и вообще мне показалось более логичным, чтоб охраниик сам принимал решения, а не маркер им управлял :) Изменено 10 мая, 2009 пользователем z-Hunter Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 10 мая, 2009 Жалоба Поделиться Опубликовано 10 мая, 2009 (изменено) Ну можно и на охранника этот блок повесить, с учетом тех правок, которые указал Visman Изменено 10 мая, 2009 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 23 марта, 2011 Автор Жалоба Поделиться Опубликовано 23 марта, 2011 (изменено) Вот отсюда и вырос впоследствии мой проект Restricted Access :) Изменено 23 марта, 2011 пользователем z-Hunter Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти