Foreigner Опубликовано 4 сентября, 2007 Жалоба Поделиться Опубликовано 4 сентября, 2007 (изменено) Уважаемые жители форума, пожалуйста помогите. :1anim_bc: Нужна скриптовая функция, которая устанавливается в 1, когда игрока никто не видит. Если такой нет, предложите, пожалуйста, альтернативу.Заранее благодарю за беспокойство. Изменено 4 сентября, 2007 пользователем Ultimate Tatarin Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 4 сентября, 2007 Жалоба Поделиться Опубликовано 4 сентября, 2007 такой переменно нетуно есть функции на проверку видимости (по хелпу очень медленные, нельзя вызывать в каждом фрейме и для всех сразу) 1. GetDetected, "Actor ID"float timer Set timer to ( timer + GetSecondsPassed ) if ( timer < 5 ); обеспечмвает вызов GetDetected раз в 5 сек. Return endif Set timer to 0 if ( GetDistance Player <= 1024 ) if ( player->GetDistance "com_chest_02 " <=128 ) if ( GetDetected Player == 1 ) ForceGreeting; Игрок схвачен и будет наказан Journal EB_Bone 50 endif endif endif 2. GetLOS, ObjectIDfloat timer Set timer to ( timer + GetSecondsPassed ) if ( timer < 5 ); Таймер, чтобы не тестировать слишком часто (улучшает производительность) Return endif Set timer to 0 if ( doOnce == 0 ) if ( GetDistance Player <= 1024 ) if ( player->GetDistance "hlaalu_loaddoor_ 02_balyn" <= 256 ) if ( GetLOS Player == 1 ) ForceGreeting endif endif endif endif если актер под хамелеоном или в невидимости или удачно крадется - функции вернут 0 и условие не сработает Ссылка на комментарий Поделиться на другие сайты Поделиться
Foreigner Опубликовано 5 сентября, 2007 Автор Жалоба Поделиться Опубликовано 5 сентября, 2007 А нельзя в ОДНОМ скрипте проверить, видит ли игрока вообще кто нибудь?А то я вообще отчаялся, даже if ( Player -> GetDetected, Player ) == 0 пробовал( типа я думал, что если я сам себя не вижу, то никто не видит. ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 5 сентября, 2007 Жалоба Поделиться Опубликовано 5 сентября, 2007 импосибл, это не сплинтерсел Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 5 сентября, 2007 Жалоба Поделиться Опубликовано 5 сентября, 2007 (изменено) GetDetected, "Actor ID" (returns Boolean/short)Возвращает ”истину”, если любой вызывающий актер может обнаружить "Actor ID" (спасибо ThePal за это исправление!). Эта функция возвращает 0, если актер скрыт каким-нибудь образом, например, удачно крадется или на нем заклинание невидимости или хамелеона. В соответствии с файлом справки это медленная функция, не вызывайте ее часто (напр. создайте счетчик для вызова ее раз в 3 секунды). Если я правильно понял эта функция показывает: может ли кто-то видеть Игрока (в данном случае) в определенный момент времени. Прикрепи скрипт №1, который дал Майк к какому-либо объекту в том месте, где Игроку нужно будет осуществить какое-то действие..Либо если цели иные сделай глобальный скрипт. Изменено 5 сентября, 2007 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
Foreigner Опубликовано 6 сентября, 2007 Автор Жалоба Поделиться Опубликовано 6 сентября, 2007 импосибл, это не сплинтерселЖаль, я что-то вроде SC сделать и собирался. Ну, как бы то ни было, всем спасибо за помощь. Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 6 сентября, 2007 Жалоба Поделиться Опубликовано 6 сентября, 2007 (изменено) А в чем проблема собственно? Создай новую глобальную переменную, скажем, Ne_videl типа short с исходным значением 0. Затем пишется скрипт со строчками if ( GetDetected == 0 ) ; или как там? давно не пользовалась этой функцией. короче, смысл в том, что "никто не видит". set Ne_videl to 1 endifЭтот скрипт нужно прицепить на ключевого для квеста непися, который не должен видеть игрока.Если вешать не на непися, а на какой-нибудь другой объект, то стоит обойтись проверкой на дистанцию: if ( GetDistance, player >= 700 )set Ne_videl to 1elseset Ne_videl to 0endifНо тогда смысл в том, чтобы игроку не подойти слишком близко к "обнаружителю". Глобальная переменная - это такая хорошая штука, которую можно использовать во всех скриптах. Изменено 6 сентября, 2007 пользователем LofZ Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 6 сентября, 2007 Жалоба Поделиться Опубликовано 6 сентября, 2007 когда игрока никто не видитесли локация самодельная - можно и сделать на тех конкретных НПС что могут толкатся в нужном месте или активатор или еще какая-нить приблуда, а вот чтоб ВСЕХ учитывать, случайных, из других модов, стандартных - вот именно эта ситуация нереал Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 6 сентября, 2007 Жалоба Поделиться Опубликовано 6 сентября, 2007 если локация самодельнаяДа ладно. И в самоельной и в стандартной локации эта фишка будет работать. а вот чтоб ВСЕХ учитывать, случайных, из других модов, стандартных - вот именно эта ситуация нереалХм, а это точно. Но вообще такого можно добиться, если перепрограммировать движок игры. :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Foreigner Опубликовано 7 сентября, 2007 Автор Жалоба Поделиться Опубликовано 7 сентября, 2007 Но вообще такого можно добиться, если перепрограммировать движок игры.Как это я сам не догадался... Так, люди, давайте разберемся точно: можно ли в ОДНОМ скрипте определить, замечен ли игрок вообще хоть кем-нибудь? Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 7 сентября, 2007 Жалоба Поделиться Опубликовано 7 сентября, 2007 в ОДНОМ, хоть КЕМ-НИБУДЬ - анрил Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 8 сентября, 2007 Жалоба Поделиться Опубликовано 8 сентября, 2007 в ОДНОМ, хоть КЕМ-НИБУДЬ - анрилДа. Зато определить виден ли игрок в одном скрипте кем-то конкретным - можно. Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 29 мая, 2012 Жалоба Поделиться Опубликовано 29 мая, 2012 (изменено) Вполне рил. Определить можно всё. Я для этого создавал активатор, помещал его в интерьер и вешал на него следующий скрипт: if ( GetDetected player == 1 ) ; выполняется если игрока видит ХОТЬ КТО-ТО endif Не спрашиваете почему, это ведомо только Шигорату и Беседке, но if тогда срабатывает не в случае когда игрока "видит" активатор, а в случае, когда игрока видит любой NPC.Правда GetDetected угол обзора не учитывает, то есть они и спиной "увидят". Изменено 29 мая, 2012 пользователем z-Hunter Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти