Creation Kit и работа в нем.
|
|
Конский слесарь во славу Шеогората
Почётный житель |
Сообщений | 715 |
Награды | 7 |
Репутация | 46 |
Пол | Мужчина |
|
1 Июля 2013 в 17:19. Сообщение # 1
|
По просьбе трудящихся вести обсуждение структурировано и подальше от чата , открываем для обсуждения отдельную тему.
Итак: в продолжение разговора о скриптах, - нарыл скрипт кольца Хирсина
Код 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 Теперь бы разобрать его структуру - какая строка за что отвечает. Из внутриигровых эффектов как мы помним, идет добавление возможности дополнительного превращения в Вервольфа для больных ликантропией (а когда то давало возможность обратиться раз в сутки здоровым ). Так или иначе - является показательным примером добавления заклинания при использовании предмета.
Не совсем понятна ситуация с текстом в скобках, - это коментарии или условия? Если условия, то где прописаны значения фраз "HircinesRingPower" и "Actor akActor"?
"HircinesRingPower" отдельно нигде нет, есть только зачарование "DA05HircinesRingEnchantment" кольца Хирсина в Magic/Enchantment и его эффект "DA05HircinesRingMagicEffect" в Magic/MagicEffect носящие по видимому функцию добавления описания в инвентаре.
Кольцо правильно называется "DA05HircinesRing" и несет на себе метку скрипта "DA05HircinesRingScript" приведенного выше.
К сожалению не смог залезть в скрипт "Азидалова кольца магии" из Dragonborn. Он не открывается во внешнем редакторе (покрайней мере из CK), и являлся бы наиболее кошерным примером добавления сложных заклинаний и эффектов с помощью экипировки предметов одежды.
MarcArnchold - Вторник, 02 Июля 2013, 14:17
|
|
|
Почётный житель |
Сообщений | 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
|
Проводить время в одиночестве - мой выбор, но я начал разговаривать сам с собой и из-за этого у меня появилась боль в ушах ©Доктор
*проклинает юкозовских рукоблудцев самыми страшными проклятиями*
|
|
Конский слесарь во славу Шеогората
Почётный житель |
Сообщений | 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. Если возникают какие то проблемы при выполненных выше условиях, - значит есть ошибка внутри созданных заклинаний или их эффектов. Так же столкнулся с фишкой игры, что если шмотка на которую вешаем эффект у вас уже есть в инвенторе (ну мало ли, - тестить удобнее что бы), то ее надо сперва выкинуть, подобрать, и надевать уже. Иначе - хоть заодевайтесь.
P.P.S. Если решите копипастить - нажмите кнопочку исходный код, там он без циферок и строчек. Правда и выровнен по правому краю, но так его сделал не я.
MarcArnchold - Среда, 03 Июля 2013, 11:55
|
|
|
Конский слесарь во славу Шеогората
Почётный житель |
Сообщений | 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, в которой вы задаете требования к созданию вещи. На скрине выше типичная комбинация требующая перка даэдрической ковки. Для большинства предметов вам потребуется либо он, либо другой подобный перк. Название соответствующего перка можно посмотреть в любом справочнике консольных команд. Для предпочитающих попроще, список кузнечных перков:
Вы так же можете поставить, в условие любой перк, выполнение определенных квестов, пол и расу персонажа (ну вдруг вы двемера отыгрываете )
Файлы Temper
Общая структура та же. Единственное отличие, на первом месте в условиях у вас всегда должно стоять точно такое же, как на следующем изображении.
Именно оно отвечает за то, что все, что вы делаете применяется для улучшения. Если не можете повторить сами в новом файле, - сделайте дубль любого файла Temper и измените его под себя.
В поле Worcbench Keyword нас интересуют следующие строки:
MarcArnchold - Понедельник, 11 Ноября 2013, 18:23
|
|
|
Злопупындрый кефирный дед
Почётный житель |
Сообщений | 4046 |
Награды | 97 |
Репутация | 264 |
Пол | Мужчина |
|
11 Ноября 2013 в 18:21. Сообщение # 5
|
Меня просили тут написать что-нить матерное для разделения сообщений, но я постеснялся.
Hangman - Понедельник, 11 Ноября 2013, 18:27
|
|
|
Конский слесарь во славу Шеогората
Почётный житель |
Сообщений | 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 и есть такое подозрение, что это один из багов правленых неофициальным патчем. Но его у меня нет - так что не проверю.
Просьба поделиться информацией, кто что знает.
|
|
|
Конский слесарь во славу Шеогората
Почётный житель |
Сообщений | 715 |
Награды | 7 |
Репутация | 46 |
Пол | Мужчина |
|
26 Сентября 2015 в 17:46. Сообщение # 7
|
После долгого застоя вспомнил навыки скриптинга и осилил нанесение дамага при экипировке предмета.
Для успешного результата нам важно правильное заклинание, которым мы будем наносить урон. Если урон назначить через концентрацию, то его невозможно будет отменить, назначая через каст урон отменяется при выкладывании предмета из рук.
Сам скрипт стандартен для добавляющих эффекты, но есть особенности: отключение эффекта не через изъятие (RemoveSpell), а через развеивание (DispelSpell):
Сочетая эффект и скрипт представленные под спойлерами, мы получаем своеобразное проклятие, которое при экипировке оружия (достаточно повесить на пояс) добавляет игроку урон, который исчезает при деэкипировке оружия.
MarcArnchold - Суббота, 26 Сентября 2015, 19:03
|
|
|