×
Меню
Индекс

MSFD использование точки для управление значением переменных

Это способ изменения локальных переменных не посредственно не объявленных в текущем скрипте.
Т.е. позволяет воздействовать из одного (глобального) скрипта, на другой (объект) локальный скрипт.
 
Подобную конструкцию (ОбъектID.ЗначениеПеременной в Х) можно вызывать, как из скриптов, так и прямо из диалогов.
В целом, использование точки (.) удобный способ сократить кол-во условий в некоем скрипте, перенеся таковые вычисления в другой.
 
По видимости, требуется наличие "физического" объекта которому присвоена переменная.
Т.е. переменная вызывает не сам скрипт в котором она указана, но ID объекта на который назначен этот скрипт.
 
В ванили, подобное можно видеть в скрипте:
 
Begin StrongSoulCheck
 
short counter
 
;in Greeting for HT_Stronghold (phase 1)
 
Set "llunela hleran".hasSoul to 0
Set counter to 0
 
if ( Player->HasSoulGem "atronach_storm" > 1 )
     Set counter to ( counter + 2 )
elseif ( Player->HasSoulGem "atronach_storm" > 0 )
     Set counter to ( counter + 1 )
endif
 
и далее (где идет перебор возможных вариантов камней с сильными душами)...
 
Сама же (локальная) переменная находится в скрипте прикрепленном на llunela Hleran.
 
 Begin llunelaHleranScript
 
short hasSoul
 
End
 
Что "забавно" скрипт проверяющий наличие правильных камней душ, запускается всякий раз при разговоре с этим НПС.
Т.е. он прописан в стартовом диалоге, но не в основном диалоге посвященному строительству крепости, что было бы логично ожидать.
Возможно, это избавляет от лишних реплик, когда НПС вызывает скрипт и только потом получает измененное состояние переменной.
Т.е. (технически) ничто не мешает менять состояние переменной, как из поля result, так и вызывать отдельный скрипт.