• Страница 1 из 1
  • 1
Creation Kit и работа в нем.

MarcArnchold 

Конский слесарь во славу Шеогората
Почётный житель
Сообщений715
Награды7
Репутация46
ПолМужчина
1 Июля 2013 в 17:19. Сообщение # 1
По просьбе трудящихся вести обсуждение структурировано и подальше от чата  wink ,  открываем для обсуждения отдельную тему.

Итак: в продолжение разговора о скриптах, - нарыл скрипт кольца Хирсина

Код
Spell Property HircinesRingPower auto
Quest Property CompanionsCentralQuest auto

Event OnEquipped(Actor akActor)
if (akActor == Game.GetPlayer() && (CompanionsCentralQuest as CompanionsHousekeepingScript).PlayerHasBeastBlood)
Game.GetPlayer().AddSpell(HircinesRingPower, false)
endif
EndEvent

Event OnUnEquipped(Actor akActor)
if (akActor == Game.GetPlayer() && (CompanionsCentralQuest as CompanionsHousekeepingScript).PlayerHasBeastBlood)
Game.GetPlayer().RemoveSpell(HircinesRingPower)
endif
EndEvent

Теперь бы разобрать его структуру - какая строка за что отвечает.
Из внутриигровых эффектов как мы помним, идет добавление возможности дополнительного превращения в Вервольфа для больных ликантропией (а когда то давало возможность обратиться раз в сутки здоровым cry ). Так или иначе - является показательным примером добавления заклинания при использовании предмета.

Не совсем понятна ситуация с текстом в скобках, - это коментарии или условия? Если условия, то где прописаны значения фраз "HircinesRingPower" и "Actor akActor"?

"HircinesRingPower" отдельно нигде нет, есть только зачарование  "DA05HircinesRingEnchantment" кольца Хирсина в Magic/Enchantment и его эффект "DA05HircinesRingMagicEffect" в  Magic/MagicEffect носящие по видимому функцию добавления описания в инвентаре.

Кольцо правильно называется "DA05HircinesRing" и несет на себе метку скрипта "DA05HircinesRingScript" приведенного выше.

К сожалению не смог залезть в скрипт "Азидалова кольца магии" из Dragonborn. Он не открывается во внешнем редакторе (покрайней мере из CK), и являлся бы наиболее кошерным примером добавления сложных заклинаний и эффектов с помощью экипировки предметов одежды.

MarcArnchold - Вторник, 02 Июля 2013, 14:17

1aa 

Почётный житель
Сообщений560
Награды13
Репутация48
ПолМужчина
1 Июля 2013 в 19:27. Сообщение # 2
Код
Event OnEquipped(Actor akActor)
if (akActor == Game.GetPlayer() && (CompanionsCentralQuest as CompanionsHousekeepingScript).PlayerHasBeastBlood)
Game.GetPlayer().AddSpell(HircinesRingPower, false)
endif
EndEvent


1) Event OnEquipped(Actor akActor)
Event(начало блока) OnEquipped(блок выполняется, если предмет, к которому привязан скрипт, одевается на персонажа)

2) if (akActor == Game.GetPlayer() && (CompanionsCentralQuest as CompanionsHousekeepingScript).PlayerHasBeastBlood)
условие, при котором выполнится строка "Game.GetPlayer().AddSpell(HircinesRingPower, false)".
Если akActor == Game.GetPlayer() akActor = персонаж игрока, &&(логическое "И"), (CompanionsCentralQuest as CompanionsHousekeepingScript).PlayerHasBeastBlood): эту часть я не догнал, но она по сути проверяет стадию квеста. по крайней мере должна.

3) Game.GetPlayer().AddSpell(HircinesRingPower, false) добавить персонажу игрока заклинание/абилку "HircinesRingPower". false для скрытия уведомления о добавлении закла/абилки(если не указывать, изначально стоит true)

4) endif конец условия

5) endevent - конец блока onequipped

MarcArnchold 

Конский слесарь во славу Шеогората
Почётный житель
Сообщений715
Награды7
Репутация46
ПолМужчина
2 Июля 2013 в 14:30. Сообщение # 3
После продолжительного колупания где только можно, вывел правильную комбинацию:
Код
Scriptname aaaTestScript extends ObjectReference

Spell Property NameTestSpell auto

Event OnEquipped(Actor akActor)
if akActor == Game.GetPlayer()
Game.GetPlayer().AddSpell(NameTestSpell, true)
endif
EndEvent

Event OnUnEquipped(Actor akActor)
if akActor == Game.GetPlayer()
Game.GetPlayer().RemoveSpell(NameTestSpell)
endif
EndEvent

Именно так должен выглядеть скрипт  aaaTestScript, добавляющий ваше заклинание (с помощью переменной NameTestSpell), привязанной к заклинанию, при экипировке предмета и убирающий его.
Привязка идет с помощью меню  Edit properties, вызываемого правым кликом по скрипту в списке papirus scripts в меню предмета или кнопкой Properties ряжом с ним. Выбирается переменная  NameTestSpell и кнопкой edit Value к ней добавляется эффект.

Это важно: список эффектов зависит от того, что вы указали во второй строке, - Spell, Perk и т.д.

Нажимаете Auto-Fill, потом "ок" и сохраняем плагин.

P.S. Если возникают какие то проблемы при выполненных выше условиях, - значит есть ошибка внутри созданных заклинаний или их эффектов. Так же столкнулся с фишкой игры, что если шмотка на которую вешаем эффект у вас уже есть в инвенторе (ну мало ли, - тестить удобнее что бы), то ее надо сперва выкинуть, подобрать, и надевать уже. Иначе - хоть заодевайтесь.  wink

P.P.S. Если решите копипастить - нажмите кнопочку исходный код, там он без циферок и строчек. Правда и выровнен по правому краю, но так его сделал не я.  smile

MarcArnchold - Среда, 03 Июля 2013, 11:55

MarcArnchold 

Конский слесарь во славу Шеогората
Почётный житель
Сообщений715
Награды7
Репутация46
ПолМужчина
11 Ноября 2013 в 18:05. Сообщение # 4
Возможно вы захотите, что бы тот предмет, на который вы вешаете заклинание, остался в игре не тронутым, и вы создали его копию или ввели свой предмет. Что бы не вызывать его консолью, надо добавить его в раздел крафта, в СК он называется Constructible Object.

В этом разделе есть два принципиально различающихся вида файлов. Один включает в себя слово Recipe и отвечает за параметры создания вещи. Другой содержит слово Temper, отвечая за ее улучшение.

Рассмотрим подробнее.
Файлы Recipe


Под именем предмета мы видим поля Created Object Count означающий количество создаваемых предметов (не надо извращаться читерством и ставить 100500  :wink:, хоть и можно).
Далее идет поле Worcbench Keyword отвечающее за то, где будет крафтится вещь. Здесь много параметров, но вас должны интересовать только следующие:



Далее идет поле Object, ниже в графе Count  ставите количество данного требуемого ресурса. Подразумевается, что если вы дошли до этого этапа модостроя, то сопоставить английские буквы значений Editor ID вещам вы сможете.
Еще ниже широкая таблица Match Conditions, в которой вы задаете требования к созданию вещи. На скрине выше типичная комбинация требующая перка даэдрической ковки. Для большинства предметов вам потребуется либо он, либо другой подобный перк. Название соответствующего перка можно посмотреть в любом справочнике консольных команд. Для предпочитающих попроще, список кузнечных перков:


Вы так же можете поставить, в условие любой перк, выполнение определенных квестов, пол и расу персонажа (ну вдруг вы двемера отыгрываете biggrin )


Файлы Temper

Общая структура та же. Единственное отличие, на первом месте в условиях у вас всегда должно стоять точно такое же, как на следующем изображении.


Именно оно отвечает за то, что все, что вы делаете применяется для улучшения. Если не можете повторить сами в новом файле, - сделайте дубль любого файла Temper  и измените его под себя.

В поле Worcbench Keyword нас интересуют следующие строки:

MarcArnchold - Понедельник, 11 Ноября 2013, 18:23

Hangman 

Злопупындрый кефирный дед
Почётный житель
Сообщений4046
Награды97
Репутация264
ПолМужчина
11 Ноября 2013 в 18:21. Сообщение # 5
Меня просили тут написать что-нить матерное для разделения сообщений, но я постеснялся.

Hangman - Понедельник, 11 Ноября 2013, 18:27

MarcArnchold 

Конский слесарь во славу Шеогората
Почётный житель
Сообщений715
Награды7
Репутация46
ПолМужчина
11 Ноября 2013 в 18:24. Сообщение # 6
И снова чешем репу - скрипт улучшенного арбалета на 50 % пробития:

Код
Scriptname DLC1EnhancedCrossBowAddPerkScript extends ObjectReference
   {Adds the perk needed to work with the enhance crossbow to an actor who equips it.}

   Perk Property DLC1EnchancedCrossbowArmorPiercingPerk Auto

   Event OnEquipped(Actor akActor)
   akActor.AddPerk(DLC1EnchancedCrossbowArmorPiercingPerk)
   EndEvent

Та же фигня что и с заклинанием, только теперь скрипт вешает на нас перк при экипировке оружия. Основная проблема в том, что сам перк DLC1EnchancedCrossbowArmorPiercingPerk фиг знает где лежит. ID его 0х00399B и есть такое подозрение, что это один из багов правленых неофициальным патчем. Но его у меня нет - так что не проверю.

Просьба поделиться информацией, кто что знает.

MarcArnchold 

Конский слесарь во славу Шеогората
Почётный житель
Сообщений715
Награды7
Репутация46
ПолМужчина
26 Сентября 2015 в 17:46. Сообщение # 7
После долгого застоя вспомнил навыки скриптинга и осилил нанесение дамага при экипировке предмета.

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



Сам скрипт стандартен для добавляющих эффекты, но есть особенности: отключение эффекта не через изъятие (RemoveSpell), а через развеивание (DispelSpell):



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

MarcArnchold - Суббота, 26 Сентября 2015, 19:03

  • Страница 1 из 1
  • 1
Поиск:

© 2008—2024 Bethplanet.ru