![]() CATEGORIES: BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism |
Get/Mod/Set ИИ для Боя: Fight, Flee, Alarm 4 pageУправление и тестирование заклинаний GetSpell, "Spell_ID" (returns Boolean/short)
If ( Player -> GetSpell, "heal companion" == 1 )
Возвращает «истину», если у объекта есть Spell_ID в инвентаре. Тем не менее, это, похоже, работает не для всех типов заклинаний. Способности и другие заклинания, относящиеся к расе/знаку рождения, не регистрируются этой функцией, а только те, что располагаются в главной части окна заклинаний. Пример смотри ниже.
GetSpellEffects, "Spell_ID" (returns Boolean/short)
if ( Player -> GetSpellEffects, "flame" == 1 )
Возвращает «истину», если 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 ; удалите эту строку, чтобы увидеть, что происходит ; обычно
set var_3 to 1 else set var_3 to 0 endif
MessageBox "GetSpell: %.0f GetSpellEffects, %.0f GetEffect: %.0f ", var_1, var_2, var_3
End
Тестирование болезней GetBlightDisease (returns Boolean/short) GetCommonDisease (returns Boolean/short)
If ( Actor -> GetBlightDisease == 1 )
Обе функции возвращают 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", "Вот нужное место. Направляйтесь в док и вам покажут как пройти в Канцелярию." set state to 10 endif ;all other times after first else set timer to timer + GetSecondsPassed if ( timer > 6 ) set timer to 0 say, "vo\Misc\CharGenBoat2.mp3", "Пошли. Шевели костями." endif endif endif endif
end CharGenBoatNPC
Проигрывание музыки [no fix] StreamMusic, “filename.ext”
Проигрывает звуковой файл "имя_файла.ext", обычно файл mp3, как текущий музыкальный файл. Он должен находится в папке data files/music/. Можно также проигрывать файлы MIDI (JOG). Date: 2015-12-17; view: 962
|