MSFD Заставляем Актеров переключать оружие
Так как функция Equip не работает, единственный способ сделать это – убрать предметы у Актера или модифицировать его навыки во время игры.
Вот пример, который я использовал, чтобы охранник переключался между луком и мечом:
Begin HBCaravanGuardAI
; Этот скрипт делает ИИ охранника более опасным, заставляя его менять лук на меч, когда игрок вблизи
short currentarrows
short storearrows
short doonce
set currentarrows to GetItemCount "arrow of wasting flame"
if ( doonce == 0 )
set storearrows to currentarrows
endif
if ( GetDistance, Player < 120 )
set currentarrows to GetItemCount "arrow of wasting flame"
if ( currentarrows > 0 )
RemoveItem "arrow of wasting flame", 1
set doonce to 1
endif
elseif ( GetDistance, Player >= 120 )
if ( currentarrows < storearrows )
AddItem "arrow of wasting flame", 1
else
set doonce to 0
endif
endif
End
Следующий пример, сделанный Bethesda, который делает то же самое, используя метод изменения навыков (предположительно более элегантный чем мой ):
begin marksmanToggle
short counter
short myMarksman
if ( MenuMode == 1 )
return
endif
if ( counter < 20 )
Set counter to counter + 1
Return
endif
if ( myMarksman == 0 )
set myMarksman to GetMarksman
endif
if ( GetMarksman > 0 )
if ( GetDistance Player < 400 )
SetMarksman 0
endif
else
if ( GetDistance Player > 600 )
SetMarksman myMarksman
endif
endif
; для дизайнеров уровней... заставляет ИИ делать то, что должен делать
;вблизи они используют холодное оружие
;издалека они используют стрелы
;проверка идет каждый 20 кадр для скорости
;Примечание: не влияет на ИИ, использующих магию
End
Вопрос в другом, этот скрипт понижает навык стрелковки до нуля, но если бой закончился "миром" она так и остается?
Или игрок внезапно решил отбежать обратно за 400ед...
Т.е. не лучше ли использовать MOD?
if ( GetDistance Player < 400 )
ModMarksman 0
else
ModMarksman 255
примерно так, как-то так.
И еще.
Если цель боя не игрок, но Гуар, или НЁХа?
Т.е. если цель явно не обозначена (здесь Игрок), то скрипт не будет работать на другую цель (стражник видит Шормата вблизи, но все одно пользует стрелы).
Поскольку беседка не завезла опцию "абстракцию" getTarget, в скриптовые опции, как таковую.
Отчего, тут либо МВСЕ 2.х пользовать, либо придется ограничится списком "квестовых" целей.