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

Вопросы по TES Construction Set


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

После подмены ниф файла, меню анимации у активаторов типа "банер" перестает быть активным. В чем причина? Можно ли его разблокировать и повесить анимацию на такой активатор?

post-15977-0-22351100-1551638245_thumb.jpg

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

  • Ответов 2.7 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

После подмены ниф файла, меню анимации у активаторов типа "банер" перестает быть активным. В чем причина? Можно ли его разблокировать и повесить анимацию на такой активатор?

Ну так анимация нужна. Ниф с анимацией.

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

Ну так анимация нужна. Ниф с анимацией.

Семкей, так он с анимацией. Я беру ниф который от банера. Переименовую его закидываю в активаторы, и анимация становится неактивной.. При том что в нифскопе я могу ее проиграть, она работает.

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

Семкей, так он с анимацией. Я беру ниф который от банера. Переименовую его закидываю в активаторы, и анимация становится неактивной.. При том что в нифскопе я могу ее проиграть, она работает.

А без этого не вставить в игру?

Нужны еще два сопутствующие файла. С тем же именем, но в начале стоит x xИмяФайла.nif и xИмяФайла.kf. Их тоже надо скопировать и соответственно переименовать.

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

А без этого не вставить в игру?

Нужны еще два сопутствующие файла. С тем же именем, но в начале стоит x xИмяФайла.nif и xИмяФайла.kf. Их тоже надо скопировать и соответственно переименовать.

Я правильно понял? 1)Блабла.nif 2)xБлабла.nif 3)xБлабла.kf

 

Так?

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

Угу.

Вот что значит делать что то, при этом не зная элементарных вещей:( Спасибо Семкей, а можешь в двух словах объяснить для чего они?Особенно интересно про второй nif с "x" впереди.

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

второй nif с "x" впереди.

Просто модель без анимации, а .kf - это сама анимация. По сути то используются игрой эти два файла с префиксом x (как мне кажется). Почему именно такая конструкция не знаю.

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

Есть ли функция для округления чисел до целого? Например, есть 2.7398, нужно сделать из него 2

 

Если в этом языке нет функции floor, то разрабатывали ли уже простейший алгоритм такого округления?

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

целые переменные short  и long не могут быть дробными.

если присвоить им дробное значение, то остаток от бросится или округлится.

если от бросится, то для округления увеличь перед сложением дробь на 0.5

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

Добрый день. Хотел узнать, если я раздаю НПС абилку, поднимающую ему навык - будет ли это учитываться в обучении, когда он учит навыкам, или там в расчет идут только прописанные изначально в описании НПС?

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

Добрый день. Хотел узнать, если я раздаю НПС абилку, поднимающую ему навык - будет ли это учитываться в обучении, когда он учит навыкам, или там в расчет идут только прописанные изначально в описании НПС?

Будет учитываться в обучении.

Здесь повысили торговцам навыки торговли и красноречия — в итоге  те из них, кто обучал навыкам, все сплошь стали обучать торговле и красноречию вместо того, что предлагали изначально.

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

Понял, спасибо. Тогда еще вопрос. Примерно с месяц назад обращался здесь к товарищу Муун Шепард, он помог мне сделать скрипт на питье зелий НПС, за что ему спасибо . К сожалению, месяц тестов показали, что скрипт чем дальше качается игрок, тем хуже работает - частые попадания не дают нпс шансов на выпивание...нельзя ли немного сменить принцип, убрав зависимость от попаданий протагониста и тайминга боя, создав условия, равные с игроком? То есть, скриптом при снижении хп моментально делается проверка на наличие опред зелья здоровья/маны/усталости- оно удаляется, а НПС подвергается аналогичному по силе эффекту заклинания восстановления здоровья/маны/усталости? И если да - можно ли выставить тайминг, чтобы нпс скриптом таким образом не "удалил" все зелья сразу? Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

А разве скрипт зависит от попаданий? Он ведь должен активироваться в самом начале боя, когда непись кричит боевую фразу. И после работает мгновенно.

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

А разве скрипт зависит от попаданий? Он ведь должен активироваться в самом начале боя, когда непись кричит боевую фразу. И после работает мгновенно.

он активируется, но ии не хочет пить зелья в ту же секунду, как потерял хелсы-ману, он делает это только в паузы, в основном, когда в него не летят один за другим удары. Проще говоря, в затяжных поединках с частыми промахами игрока, нпс выпивает почти все, а если Нереварин не промахивается - практически ничего, не помогает даже понижение порога потери питья зелий от потерь. Мне же надо, чтобы НПС оперативно реагировал на снятие хелсов-маны - упало до 50% тут же выпил зелье, прошла пара сек, если здоровье успели сбить еще - выпил снова. Но это не работает так, увы...поэтому и пришло в голову заменить скрипт реального выпивания условным, с проверкой на наличие зелий и наложением магического эффекта, в надежде, что это будет работать мгновенно.
Ссылка на комментарий
Поделиться на другие сайты

Мда, понятно. Тогда нужно заменить каждый блок с выпиванием зелья на такой

 

removeitem "some_potion" 1
modcurrenthealth 50
Где вместо 50 подставить ожидаемый эффект от зелья. И вместо health писать fatigue/magicka соответственно.
Ссылка на комментарий
Поделиться на другие сайты

Мда, понятно. Тогда нужно заменить каждый блок с выпиванием зелья на такой

removeitem "some_potion" 1modcurrenthealth 50
Где вместо 50 подставить ожидаемый эффект от зелья. И вместо health писать fatigue/magicka соответственно.
а магический эффект как-то можно добавить? Ну чтоб звук и звездочки-аура? И как тайминг сделать, чтоб и не удалил все 3 зелья в инвентаре, например (или др ограничение). Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

И как тайминг сделать, чтоб и не удалил все 3 зелья в инвентаре, например (или др ограничение).

Добавить в начало скрипта это.

short counterHealth
short counterMagicka
short counterFatigue

if ( counterHealth > 0 )
set counterHealth to ( counterHealth - 1 )
return
endif

А в каждый блок с "выпиванием" зелья восстановления здоровья добавить

set counterHealth to 40; или такое же число, как мощность зелья

И сделать такие же блоки для counterMagicka и counterFatigue.

 

Про эффект и звездочки пока не знаю, увы.

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

А нельзя просто наложить эквивалентный зелью закл, как это делают алтари,, или скрипт это не позволит? Про 2й блок уточнить - куда именно добавить, в начало? Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

А нельзя просто наложить эквивалентный зелью закл, как это делают алтари,, или скрипт это не позволит?

Хм... а попробуйте вместо modcurrenthealth использовать explodeSpell "SpellID". Вместо SpellID подставьте какое-нибудь лечащее заклинание для теста. Если сработает, то потом нужно будет создать для каждого зелья по соответствующему заклинанию.

Про 2й блок уточнить - куда именно добавить, в начало?

В блок, в котором пьется зелье.

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

В общем, постестил. 

С заклинанием - не сработало, вместо пространного эффекта заклинания оно добавляется в арсенал НПС, после чего НПС может его скастовать (а иногда и НЕ скастовать)...

С currenthealth все получше, за исключением того, что все же не уверен, правильно ли я вписал setcounter ? Слабые НПС с большим количеством слабых дешевых склонны "выпивать" их почти сразу, в то время как более дорогие выпиваются поэтапно у более сильных НПС...хотя, как по мне, это связано с тем, что выпивание слабого зелья может не восстановить ХП у НПС выше 60%, после чего в ту же секунду наступается следующая проверка, потом идет еще удар по НПС, хп сносится почти до 0, и тут уже все зелья выпиваются залпом...но все же, проверьте, пожалуйста...может, ошибка, но если нет, можно бы как-то жестко привязать проверки на тайминг, для создания имитации питья...

 

begin AI_USING_POTION
 
short counterHealth
if ( counterHealth > 0 )
set counterHealth to ( counterHealth - 1 )
return
endif
 
if ( GetHealthGetRatio < 0.6) ; здоровье меньше 60%
if ( GetItemCount p_restore_health_b > 0 )
set counterHealth to 15
removeitem "p_restore_health_b" 1
modcurrenthealth 15
return
elseif ( GetItemCount p_restore_health_c > 0 )
set counterHealth to 25
removeitem "p_restore_health_c" 1
modcurrenthealth 25
set counterHealth to 25
return
elseif ( GetItemCount p_restore_health_s > 0 )
set counterHealth to 50
removeitem "p_restore_health_s" 1
modcurrenthealth 50
return
elseif ( GetItemCount p_restore_health_q > 0 )
set counterHealth to 100
removeitem "p_restore_health_q" 1
modcurrenthealth 100
set counterHealth to 100
return
elseif ( GetItemCount p_restore_health_e > 0 )
set counterHealth to 200
removeitem "p_restore_health_e" 1
modcurrenthealth 200
endif
endif

 

В общем, если оставить вариант с current health, и подкрутить тайминг, останется только узнать, как создать для антуража анимацию выпивания, а с ускоренным излечением, в отличие от зелья (current регенит почти в момент) можно и смириться, в конце концов, игрок читерит так на каждом углу...

 

Обидно, и непонятно, все же, почему currenthealth ИИ выполняет как часы, а вот просто зелья ИИ нормально пить не хочет...

ПС Как вариант, можно попробовать добавлять НПС не заклятиие, а характеристику (пост. эффект), но тоже нужен тайминг...то есть, эквивалентно эксклюзивному зелью добавляем "Восстановить здоровье 40П" - а через 5 сек абилка удаляется у НПС. Так можно?

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

ПС Как вариант, можно попробовать добавлять НПС не заклятиие, а характеристику (пост. эффект), но тоже нужен тайминг...то есть, эквивалентно эксклюзивному зелью добавляем "Восстановить здоровье 40П" - а через 5 сек абилка удаляется у НПС. Так можно?

В принципе, можно, но мне было бы очень лениво прописывать блоки и переменные для каждого зелья (дешевого, стандартного и т. д.). Будет выглядеть примерно так:

 

float timerHealth1; таймер для уценненных зелий
float timerHealth2; таймер для дешевых зелий
float timerHealth3; таймер для стандартных зелий
float timerHealth4; таймер для качественных зелий
float timerHealth5; таймер для экслюзивных зелий
float myX
float myY
float myZ
 
if ( GetSpell "Spell1" == 1 ); сделать такой же блок для всех пяти переменных и, соответственно, менять айди заклинания
set timerHealth1 to ( timerHealth1 + getsecondspassed )
set MyX to GetPos X
set MyY to GetPos Y
set MyZ to GetPos Z
DummyNPC->SetPos X MyX
DummyNPC->SetPos Y MyY
DummyNPC->SetPos Z MyZ
if ( timerHealth1 >= 5 ) ; 5 секунд откат
RemoveSpell "Spell1"
set timerHealth1 to 0
endif
endif

А блок с выпиванием зелья будет выглядеть так:

 

if ( GetItemCount p_restore_health_b > 0 )
if ( GetSpell "Spell1" == 0 )
removeitem "p_restore_health_b" 1
AddSpell "Spell1"
PlaceAtMe "DummyNPC1" 1,1,0; непись, который обеспечит искорки. Возможно, для разных уровней зелья стоит создать разных неписей, однако оставить одно айди для усталости/здоровья/магии, потому что искорки всегда выглядят одинаково.
endif
endif

Хм, чтобы добавить соответствующий эффект можно попробовать создать непися, на котором висит постоянная невидимость. На непися навесить скрипт

float timer
short doonce
if ( MenuMode == 1 )
return
endif
if ( doonce == 1 )
SetDelete 1
return
endif
if ( GetDisabled == 0 )
Disable
ExplodeSpell "Healing spell"; это должна быть не постоянная характеристика, а именно заклинание
endif
set timer to ( timer + getSecondsPassed )
if ( timer >= 3 )
set doonce to 1
return
endif

UPD: Поправил скрипты. Для искорок лучше создать даже не непися, а какой-нибудь очень мелкий или невидимый активатор (или не активатор, а колечко). Sound marker'ы не подойдут, на них будет постоянно выскакивать ошибка.

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

В общем, прописал, потестил...не знаю, что-то глючит, или это я косанул - на данном этапе скрипт активируется, и не прекращается совсем - т.е. нпс получает эту абилку "навсегда", и она уже не удаляется у него из инвентаря, независимо от того, ск там - зелий - тупо идет постоянная регенерация. Может, я где-то ошибся?

 

begin AI_USING_POTION
 
float timerHealth1; таймер для уценненных зелий
float timerHealth2; таймер для дешевых зелий
float timerHealth3; таймер для стандартных зелий
float timerHealth4; таймер для качественных зелий
float timerHealth5; таймер для экслюзивных зелий
 
if ( GetSpell "1_Potion_B" == 1 ); уц
set timerHealth1 to ( timerHealth1 + getsecondspassed )
if ( timerHealth1 >= 5 ) ; 5 секунд откат
RemoveSpell "1_Potion_B"
set timerHealth1 to 0
endif
endif
 
 
if ( GetSpell "1_Potion_C" == 1 ); деш
set timerHealth2 to ( timerHealth2 + getsecondspassed )
if ( timerHealth2 >= 5 ) ; 5 секунд откат
RemoveSpell "1_Potion_C"
set timerHealth2 to 0
endif
endif
 
if ( GetSpell "1_Potion_S" == 1 ); ст
set timerHealth3 to ( timerHealth3 + getsecondspassed )
if ( timerHealth3 >= 5 ) ; 5 секунд откат
RemoveSpell "1_Potion_S"
set timerHealth3 to 0
endif
endif
 
if ( GetSpell "1_Potion_Q" == 1 ); кач
set timerHealth4 to ( timerHealth4 + getsecondspassed )
if ( timerHealth4 >= 5 ) ; 5 секунд откат
RemoveSpell "1_Potion_Q"
set timerHealth4 to 0
endif
endif
 
if ( GetSpell "1_Potion_EK" == 1 ); экс
set timerHealth5 to ( timerHealth5 + getsecondspassed )
if ( timerHealth5 >= 5 ) ; 5 секунд откат
RemoveSpell "1_Potion_EK"
set timerHealth5 to 0
endif
endif
; -----------------------------------------------------------------------
if ( GetHealthGetRatio < 0.5) ; здоровье меньше 50%
if ( GetItemCount p_restore_health_b > 0 )
if ( GetSpell "1_Potion_B" == 0 )
removeitem "p_restore_health_b" 1
AddSpell "1_Potion_B"
endif
endif
elseif ( GetItemCount p_restore_health_c > 0 )
elseif ( GetSpell "1_Potion_C" == 0 )
removeitem "p_restore_health_C" 1
AddSpell "1_Potion_C"
endif
endif
elseif ( GetItemCount p_restore_health_s > 0 )
elseif ( GetSpell "1_Potion_S" == 0 )
removeitem "p_restore_health_s" 1
AddSpell "1_Potion_S"
endif
endif
elseif ( GetItemCount p_restore_health_q > 0 )
elseif ( GetSpell "1_Potion_Q" == 0 )
removeitem "p_restore_health_q" 1
AddSpell "1_Potion_Q"
endif
endif
elseif ( GetItemCount p_restore_health_e > 0 )
elseif ( GetSpell "1_Potion_EK" == 0 )
removeitem "p_restore_health_e" 1
AddSpell "1_Potion_EK"
endif
endif
 
ПС Скрипт с нпс на каст для эффекта пока не добавлял, решил поэтапно со всем разобраться
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

elseif ( GetSpell "1_Potion_EK" == 0 )

Это ни в коем случае не должен быть elseif.

 

if ( GetHealthGetRatio < 0.5) ; здоровье меньше 50%
if ( GetItemCount p_restore_health_b > 0 )
if ( GetSpell "1_Potion_B" == 0 )
removeitem "p_restore_health_b" 1
AddSpell "1_Potion_B"
endif
endif
elseif ( GetItemCount p_restore_health_c > 0 )
if ( GetSpell "1_Potion_C" == 0 )
removeitem "p_restore_health_C" 1
AddSpell "1_Potion_C"
endif
endif
elseif ( GetItemCount p_restore_health_s > 0 )
if ( GetSpell "1_Potion_S" == 0 )
removeitem "p_restore_health_s" 1
AddSpell "1_Potion_S"
endif
endif
elseif ( GetItemCount p_restore_health_q > 0 )
if ( GetSpell "1_Potion_Q" == 0 )
removeitem "p_restore_health_q" 1
AddSpell "1_Potion_Q"
endif
endif
elseif ( GetItemCount p_restore_health_e > 0 )
if ( GetSpell "1_Potion_EK" == 0 )
removeitem "p_restore_health_e" 1
AddSpell "1_Potion_EK"
endif
endif
endif
 
Жирным выделены лишние endif'ы, а курсивом -- которые нужно добавить.
Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

Зачем существуют скрипты болезней, которые висят на заражённых существах типа этого?

 

 

Begin diseaseAscended

 

DontSaveObject

 

if ( CellChanged == 0 )

return

endif

 

if ( GetBlightDisease == 0 )

AddSpell "ash woe blight"

AddSpell "black-heart blight"

AddSpell "chanthrax blight"

AddSpell "ash-chancre"

endif

 

End

 

 

Они добавляют прописанные болезни если существо не поражено болезнью. Но ведь все заражённые существа и так изначально имеют в своём списке заклианий свои болезни. Зачем тогда скрипт, висящий мёртвым грузом?
Ссылка на комментарий
Поделиться на другие сайты

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

Вы сможете оставить комментарий после входа в



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

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