Возвращает «истину», если у объекта есть Spell_ID в инвентаре. Тем не менее, это, похоже, работает не для всех типов заклинаний. Способности и другие заклинания, относящиеся к расе/знаку рождения, не регистрируются этой функцией, а только те, что располагаются в главной части окна заклинаний. Пример смотри ниже.
Возвращает «истину», если Spell_ID наложен на вызывающий объект[39]. Следующее может быть добавлено в скрипт "trap_script", обсуждавшийся в главе "Кастование заклинаний" выше:
if ( Player -> GetSpellEffects, "flame" == 1 )
MessageBox "Вас подожгли."
endif
Это любимая возможность добавлять новые эффекты ("spell effects"). Создается простенькое заклинание, дающее минимальный эффект, например поднимающее удачу на 1 пункт в секунду. Функция GetSpellEffects используется, чтобы определить, наложено ли заклинание на игрока, и скрипт берет на себя все остальное. Смотри пример ниже.
Управление и тестирование эффектов заклинаний
GetEffect, Effect_ID (returns short)
If ( GetEffect, sEffectRestoreHealth == 1)
Эта функция возвращает ИСТИНУ, если вызывающий актер «поражен» эффектом. Внимание: эффекты, это не заклинания, а их составная часть. В Приложении вы найдете спиок всех эффектов.
RemoveEffects, Effect_ID#_enum
Player -> RemoveEffects, 75
Удаляет все заклинания с актера, которые включают этот Эффект. Для этой функции вам нужен номер ID-эффекта, в отличие от функции GetEffect, где вам нужен сам ID-эффекта (Браво, Bethesda!). И то, и то вы найдете в Приложении.
Важно: Эффекты, это не заклинания, а их составные элементы. В Приложении вы найдете список всех эффектов.
Пример: Это демонстрационный скрипт, позволяющий вам проверить, есть ли заклинание у игрока в списке, активно ли оно на игроке, действует ли оно на игрока эффектом и тогда убирает этот эффект. Запустите его, набрав в консоли "StartScript Magicscript".
Begin Magictest
short var_1
short var_2
short var_3
if ( Player -> GetSpell, "hearth heal" )
set var_1 to 1
else
set var_1 to 0
endif
if ( Player -> GetSpellEffects, "hearth heal" )
set var_2 to 1
else
set var_2 to 0
endif
if ( Player -> GetEffect, sEffectRestoreHealth )
Player -> RemoveEffects, 75 ; удалите эту строку, чтобы увидеть, что происходит
Обе функции возвращают 1, если вызывающий актер поражен либо Моровой болезнью, либо обычной, иначе возвращают 0[40]. Они используются в скриптах болезни, которые дают больным или моровым животным их болезни:
Пример:
Begin diseaseBlackHeart
DontSaveObject
if ( CellChanged == 0 )
return
endif
if ( GetBlightDisease == 0 )
AddSpell "black-heart blight"
endif
End
Взрыв
ExplodeSpell“spellName”
ExplodeSpell "proj_trap_spell"
ExplodeSpell заставляет копию кастовать данное заклинание с дальностью касание на себя. Если при этом у заклинания есть зона поражение, то заклинание «взорвется». См TrapProjScript в секции Советов и Трюков.
Функции Get/Mod/Set для магии:
Большинство из этих функций применяются к определенным эффектам, которые можно получить от заклинаний. Эти эффекты можно сделать постоянными или изменить их. Часть функций использует значения от –100 до 100 (%), хотя и примут любое число, другие только 1 или 0. Так что можно сделать существо, снимающее 100% ResistBlight с Нереварина – хороший сюрприз для него?
Get/Mod/SetResistMagicka
Get/Mod/SetResistFire
Get/Mod/SetResistFrost
Get/Mod/SetResistShock
Get/Mod/SetResistDisease
Get/Mod/SetResistBlight
Get/Mod/SetResistCorprus
Get/Mod/SetResistPoison
Get/Mod/SetResistParalysis)
Get/Mod/SetChameleon
Get/Mod/SetResistNormalWeapons
Get/Mod/SetWaterBreathing
Установка в 1 позволяет дышать под водой.
Get/Mod/SetWaterWalking
Установка в 1 позволяет ходить по воде.
Get/Mod/SetSwimSpeed
Get/Mod/SetSuperJump
Это относится к эффектам Быстрый пловец и Прыгать, они обычно находятся в пределе 0-100, но могут принимать отрицательные значения и значения больше 100.
Get/Mod/SetFlying
Я нашел эту инфу на UESP: игрок может летать. Этот чит заработает, когда игрок наберет команду, а затем скастует заклинание Левитации. Эффект должен пропасть, когда вы отключите команду в консоли (Спасибо Dave Humphrey).
Get/Mod/SetArmorBonus
относится к эффекту щита
Get/Mod/SetCastPenalty
относится к эффекту Звук? (<0 – кастовать труднее, >0 – легче?)
Get/Mod/SetSilence
Get/Mod/SetBlindness
Get/Mod/SetParalysis
Каждый эффект паралича увеличивает счетчик на один. Когда вы его снимаете, счетчик уменьшается на один. Если он равен 0, то актер может двигаться. Так что можно парализовать отдельных актеров в скрипте, как если бы вы кастовали на них заклинание. Такая парализация длится до тех пор, пока не сброшена в 0, или вы не были в ячейке с актером более 3 дней (Информация с форумов / Cortex).
Get/Mod/SetInvisibile
(Оригинальный Морр: sic! Не invisible!)
Get/Mod/SetInvisible
(Поздние версии Морра, частично написание было исправлено (Информация с форумов / Cortex))
Get/Mod/SetAttackBonus
относится к эффекту Увеличить атаку
Get/Mod/SetDefendBonus
относится к эффекту Светоч
Звук
Пусть актеры говорят
Say, “file name”, “text”
Actor -> say, "vo\Misc\CharGenBoat1.wav", "This is where they want you."
Заставляет субъекта "сказать" звуковой файл, работает только на анимированных объектах. Голосовые звуковые файлы формата .mp3 находятся в папке "Data files\Sound\Vo\" и упорядочены в подпапках по расам и полу. Вы также можете просмотреть их все по команде Dialogue/voice. Текст — это то, что отображается как субтитры во время проигрывания файла[41].
SayDone
Возвращает истину, если объект больше ничего не говорит.
Пример: из создания персонажа.
begin CharGenBoatNPC
;это страж с лодки который говорит «проходите»
short state
float timer
if ( menumode == 1)
return
endif
if ( GetDisabled == 1 )
return
endif
if ( OnActivate == 1 )
return
endif
if ( GetDistance, Player < 180 )
if ( SayDone == 1)
;first greeting
if ( state == 0 )
if ( timer == 0 ) ;используем таймер, чтобы он не говорил все время
say, "vo\Misc\CharGenBoat1.mp3", "Вот нужное место. Направляйтесь в док и вам покажут как пройти в Канцелярию."
Проигрывает звуковой файл "имя_файла.ext", обычно файл mp3, как текущий музыкальный файл. Он должен находится в папке data files/music/. Можно также проигрывать файлы MIDI (JOG).