• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по редактору СК, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Без понятия... Я совсем не по этой части... Все эти экспортеры и конвертеры точно именно для скайрима? Там формат ниф меняется от игры к игре. Ну и было бы полезно определить, после какого именно шага возникают проблемы. Если просто смоделировать в максе кубик и экспорировать в ниф, проблема есть? А если с зеркалом?
Dsion, Программы заточены под Скайрим. При установке ниф-плагина в макс указал импорт\экспорт Скайрим. Пробовал даже брать модель, конвертировать в максе в ниф, ставил этот ниф в игру, потом снова прогонял этот ниф через макс, чтобы выставить свои настройки при экспорте. Вообщем перепробовал практически всё (редактировал в максе - убрал родные текстуры, в ниф-скопе пробовал менять BSLiightingShaderProperty на другой из скайримовской модели (статик). Один раз правда получилось, но модель оказалась огромной, больше самого дома. И даже в Ките не смог уменьшить до нужных размеров, доходит до определённого размера и дальше ни в какую. А как делал в тот раз не могу вспомнить, потому что всё методом тыка. Попробую действительно кубик впихнуть.
Добавлено (22 Апреля 2016, 18:35) --------------------------------------------- Dsion, Добрый вечер! Кажется нашёл проблему. Похоже всё было в самом Ките. Переустановил. И вообще левая модель без всякой конвертации появилась. Но вот проблема: у неё огромные размеры, даже в Ките не могу уменьшить на сколько нужно. Не подскажите как уменьшить модель в нифскопе и какие параметры выставить, чтобы у неё в Ките были нормальные размеры?
Лично я, как уже говорил, не по этой части. Помню, что в нифскопе есть какие-то трансформации, с помощью которых можно изменить размеры модели или разворот. Помню, что когда-то давно делал и было не сложно. А вот как именно - уже забыл. Но это уже вопрос понятный. Сейчас кто-то расчехлится и отпишет, может.
Не подскажите как уменьшить модель в нифскопе и какие параметры выставить, чтобы у неё в Ките были нормальные размеры?
Уменьшить модель можно и в Максе или Блендере - масштабированием, а потом надо уничтожить следы трансформации (типа она такая и была). В Максе это решается или перезагрузкой масштаба в 3-й вкладке боковой панели, или я вот так люблю - создаю какой-нибудь объект (с ним не трогаю масштаб), приаттачиваю к нему отмасштабированную модель, а потом все лишнее удаляю, оставляю тот элемент, который и должен быть моим объектом (метод сам признаю, что дурацкий, но иногда за дефицитом времени быстрее сделать так).
В НИфскопе тоже можно отредактировать (выделить нужный меш и правой кнопкой transform - edit, появится менюшка, где есть в том числе и масштаб).
Доброго времени суток, нужна помощь. Наверное, стоит начать с появления проблемы: Поставил на лицензию несколько модов которые меняют интерьеры и положения домов, соответственно, пересекающихся друг с другом, а так же плагины на НПС и прочее. Суть в том, что вроде всё работает, даже без всяких баш патчей (bash патч делать не вариант, так как знаком с проблемами вылетов из-за них), но выглядит очень коряво. Также появилась основная проблема - исчезло большинство навмешей в деревнях типа Ривервуда, что делает НПС просто стоячими истуканами. Вторая проблема - это проблема интерьеров,типа сундуков висящих в воздухе. Как я понял, всё можно подкорректировать в Creation Kit'e, однако, я столкнулся с рядом проблем: - Моды для их открытия требуют DLC, и при подгрузке этих DLC появляется ошибка, после которой вырубается КК
- Вторая ошибка была при попытке открытия мода, не требующего DLC (допустим ETaC): при открытии на панели рендера любая деревня и город выглядели произвольными, без добавленных домов от мода, хотя целью было установить навмеши между новыми местами. Без этих корректировок немного проблематично играть. Кто знает как решить проблему или какие-нибудь мануалы пожалуйста помогите. Заранее благодарен. :unsure: И ещё вопрос, если мне в итоге удастся открыть несколько модов сразу и переправить всё, то это будет являться другим esp файлом (т.е. патчем/плагином) или это как-то затронет файлы тех модов, что я использую?
Добавлено (09 Мая 2016, 01:02) --------------------------------------------- Ну, в общем, не дождался я помощи, решил искать все ошибки сам, рыскать иностранные сайты, но ошибка была наипростейшая... Короче, если при запуске в КК Skyrim.esm совместно с Update.esm у кого-нибудь выскакивает ошибки, из-за которых крашит КК - решением является поставить русский язык в [General], в папке SkyrimEditor.ini Надо ставить, как я понял сразу после этой строки: [General]sLanguage=RUSSIAN Если проблемы в DLC, то в конце этого раздела надо иметь 2 строки: bAllowMultipleMasterFiles=1 bAllowMultipleMasterLoads=1
Здравствуйте. Помогите пожалуйста: сделал компаньона добавил ему собственное озвучивание с помощью квестов, настроил скрипты к фразам и все работает вот только постоянно бегает за мной как только загружусь, без найма. И у него работают все диалоги которые имеет обычный спутник: расстаться, показать инвентарь и прочее. В чем может быть проблема?
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1209
написано: 14 мая 2016, 07:54
| Отредактировано: Multigone - 14 мая 2016, 07:54
Multigone, нет с фракцией все правильно. Это плавный намек на недостаток информации? Что надо показать или скинуть чтобы было более понятно в чем проблема?
GlobalVariable Property pPlayerFollowerCount Auto ReferenceAlias Property pFollowerAlias Auto Faction Property pDismissedFollower Auto Message Property FollowerDismissMessage Auto Message Property FollowerDismissMessageWedding Auto Message Property FollowerDismissMessageCompanions Auto Message Property FollowerDismissMessageCompanionsMale Auto Message Property FollowerDismissMessageCompanionsFemale Auto Message Property FollowerDismissMessageWait Auto
;Property to tell follower to say dismissal line Int Property iFollowerDismiss Auto Conditional
; PATCH 1.9: 77615: remove unplayable hunting bow when follower is dismissed Weapon Property FollowerHuntingBow Auto Ammo Property FollowerIronArrow Auto
Function SetFollower(ObjectReference FollowerRef)
actor FollowerActor = FollowerRef as Actor FollowerActor.RemoveFromFaction(pDismissedFollower) If FollowerActor.GetRelationshipRank(Game.GetPlayer()) < 3 && FollowerActor.GetRelationshipRank(Game.GetPlayer()) >= 0 FollowerActor.SetRelationshipRank(Game.GetPlayer(), 3) EndIf FollowerActor.SetPlayerTeammate() ;FollowerActor.SetAV("Morality", 0) pFollowerAlias.ForceRefTo(FollowerActor) pPlayerFollowerCount.SetValue(1)
EndFunction
Function FollowerWait()
actor FollowerActor = pFollowerAlias.GetActorRef() as Actor FollowerActor.SetAv("WaitingForPlayer", 1) ;SetObjectiveDisplayed(10, abforce = true) ;follower will wait 3 days pFollowerAlias.RegisterForUpdateGameTime(72)
EndFunction
Function FollowerFollow()
actor FollowerActor = pFollowerAlias.GetActorRef() as Actor FollowerActor.SetAv("WaitingForPlayer", 0) SetObjectiveDisplayed(10, abdisplayed = false)
EndFunction
Function DismissFollower(Int iMessage = 0, Int iSayLine = 1)
; PATCH 1.9: 77615: remove unplayable hunting bow when follower is dismissed DismissedFollowerActor.RemoveItem(FollowerHuntingBow, 999, true) DismissedFollowerActor.RemoveItem(FollowerIronArrow, 999, true) ; END Patch 1.9 fix
If iSayLine == 1 iFollowerDismiss = 1 DismissedFollowerActor.EvaluatePackage() ;Wait for follower to say line Utility.Wait(2) EndIf pFollowerAlias.Clear() iFollowerDismiss = 0 ;don't set count to 0 if Companions have replaced follower If iMessage == 2 ;do nothing Else pPlayerFollowerCount.SetValue(0) EndIf EndIf
EndFunction
Дальше скрипт который находится на вкладке Quest Aliases у персонажа которого я добавил:
DialogueFollowerScript Property DialogueFollower Auto
Event OnUpdateGameTime()
;kill the update if the follower isn't waiting anymore If Self.GetActorRef().GetAv("WaitingforPlayer") == 0 UnRegisterForUpdateGameTime() Else ; debug.trace(self + "Dismissing the follower because he is waiting and 3 days have passed.") DialogueFollower.DismissFollower(5) UnRegisterForUpdateGameTime() EndIf
EndEvent
Event OnUnload()
;if follower unloads while waiting for the player, wait three days then dismiss him. If Self.GetActorRef().GetAv("WaitingforPlayer") == 1 (GetOwningQuest() as DialogueFollowerScript).FollowerWait() EndIf
EndEvent
Event OnCombatStateChanged(Actor akTarget, int aeCombatState)
If (akTarget == Game.GetPlayer()) ; debug.trace(self + "Dismissing follower because he is now attacking the player") (GetOwningQuest() as DialogueFollowerScript).DismissFollower(0, 0) EndIf
EndEvent
Event OnDeath(Actor akKiller)
; debug.trace(self + "Clearing the follower because the player killed him.") PlayerFollowerCount.SetValue(0) Self.Clear()
EndEvent GlobalVariable Property PlayerFollowerCount Auto
Далее я приложу скрипты и условия которые находятся на ветках диалога:
_0RossenDilogueDismiss Скрипт: ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__0200537C Extends TopicInfo Hidden
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE If !(akspeaker.IsInFaction(DismissedFollowerFaction)) (p_0RossenFollower as _0RossenFollowerScript).DismissFollower(0, 0) EndIf ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
Quest Property p_0RossenFollower Auto
Faction Property DismissedFollowerFaction Auto
Условия: GetInFaction CurrentFollowerFaction == 1
_0RossenDialogueTrade Скрипт: ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__02005379 Extends TopicInfo Hidden
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE akspeaker.OpenInventory() ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
Условия: GetInFaction CurrentFollowerFaction == 1
_0RossenDialogueRecruit Скрипт: ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__02005385 Extends TopicInfo Hidden
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE (p_0RossenFollower as _0RossenFollowerScript).SetFollower(akspeaker) ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
_0RossenDialogueWait Скрипт: ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__02005376 Extends TopicInfo Hidden
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE (GetOwningQuest() as _0RossenFollowerScript).FollowerWait() ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
_0RossenDialogueFollow Скрипт: ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__0200537F Extends TopicInfo Hidden
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE (GetOwningQuest() as _0RossenFollowerScript).FollowerFollow() ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
_0RossenDialogueFavorState Скрипт: ;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment ;NEXT FRAGMENT INDEX 1 Scriptname TIF__02005382 Extends TopicInfo Hidden
;BEGIN FRAGMENT Fragment_0 Function Fragment_0(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE akspeaker.SetDoingFavor() ;END CODE EndFunction ;END FRAGMENT
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
Условия: GetInFaction CurrentFollowerFaction == 1
_0RossenDialogueDoingFavorBlocking писать наверное не буду, потому что там все работает.
Изначально в Quest Data в окошке Quest Dialogue Conditions прописаны: GetIsID Actor: '_0Rossen' == 1 GetIsVoiceType VoiceType: '_0RossenVoice' == 1 (на всякий случай)
Внимание: язык скриптов папируса я вообще не понимаю, все это было получено путем Ctrl +C Ctrl + V из ванильных квестов диалогов, и интуитивном редактировании при переводе гугл переводчком. И еще я так понимаю в скриптах все что под ; это комментирование и можно смело убирать?
Забыл добавить, что сегодня выяснилось, что работают только 2 диалога: на выполнение приказов и на ожидание игрока. Все остальное как об стенку горох.
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1213
написано: 14 мая 2016, 11:19
| Отредактировано: Multigone - 14 мая 2016, 15:13
Neell, хм-хм-хммм... Интересно. Если ты говоришь, что актер следует за игроком сразу после подключения .esp, значит, он изначально имеет пакет Follow. Если пакет не указан у актера во вкладке AI, значит, актер сразу попадает в алиас квеста, где этот пакет есть. Остается узнать, что является причиной попадания туда. Как заполняется алиас? Он имеет такие же настройки, как в квесте DialogueFollower?
Кстати, хотелось бы знать, заполнял ли ты Property своих скриптов, а если да, то какими формами. Везде, где в Property указывается квест DialogueFollower или его алиас, вместо них нужно указывать свой квест / алиас.
; это комментирование и можно смело убирать?
Да. Можно не убирать, в скомпилированный скрипт эти строки не попадут.
Еще, если делать стандартного компаньона, то свой квест можно не создавать. Тогда он будет подчиняться общим правилам рекрутирования / найма, которые могут изменяться в зависимости от установленных модов у пользователя.
Когда я делал своего, создал квест только ради 2 строчек диалога ("открыть меню тренировки навыка", "навык слишком высок").
Если под алиасом ты имеешь в виду персонажа в вкладке Quest Aliases то там все точно также как и в DialogueFollower за исключением скрипта и галочки в Fill Type (вместо Specific Reference у меня Unique Actor и ID компаньона)
Насчет Property:
После того как прочитал сообщение проверил все скрипты и оказалось, что в первом (_0RossenAliasScript который используется в вкладке Quest Aliases) некоторые строчки ссылались (или что они там делают) на DialogueFollower и DialogueFollowerScript, я их заменил на свои и все скомпилировалось без проблем. После зашел в Property этого файла, и там одна настройка типа GlobalVariable ссылалась на PlayerFollowerCount который я решил не трогать, т. к. про него ты ничего не говорил.
_0RossenDialogue - это квест где я делаю диалоги. _0RossenAliasScript - это скрипт который используется в вкладке Quest Aliases. _0RossenFollowerScript - это скрипт который используется в вкладке Scripts.
Далее скидываю список Property этих двух скриптов ибо это мне проще.
DialogueFollowerScript Property DialogueFollower Auto
Event OnUpdateGameTime()
;kill the update if the follower isn't waiting anymore If Self.GetActorRef().GetAv("WaitingforPlayer") == 0 UnRegisterForUpdateGameTime() Else ; debug.trace(self + "Dismissing the follower because he is waiting and 3 days have passed.") DialogueFollower.DismissFollower(5) UnRegisterForUpdateGameTime() EndIf
EndEvent
Event OnUnload()
;if follower unloads while waiting for the player, wait three days then dismiss him. If Self.GetActorRef().GetAv("WaitingforPlayer") == 1 (GetOwningQuest() as DialogueFollowerScript).FollowerWait() EndIf
EndEvent
Event OnCombatStateChanged(Actor akTarget, int aeCombatState)
If (akTarget == Game.GetPlayer()) ; debug.trace(self + "Dismissing follower because he is now attacking the player") (GetOwningQuest() as DialogueFollowerScript).DismissFollower(0, 0) EndIf
EndEvent
Event OnDeath(Actor akKiller)
; debug.trace(self + "Clearing the follower because the player killed him.") PlayerFollowerCount.SetValue(0) Self.Clear()
EndEvent GlobalVariable Property PlayerFollowerCount Auto
_0RossenFollowerScript Property _0RossenDialogue Auto
Event OnUpdateGameTime()
;kill the update if the follower isn't waiting anymore If Self.GetActorRef().GetAv("WaitingforPlayer") == 0 UnRegisterForUpdateGameTime() Else ; debug.trace(self + "Dismissing the follower because he is waiting and 3 days have passed.") _0RossenDialogue.DismissFollower(5) UnRegisterForUpdateGameTime() EndIf
EndEvent
Event OnUnload()
;if follower unloads while waiting for the player, wait three days then dismiss him. If Self.GetActorRef().GetAv("WaitingforPlayer") == 1 (GetOwningQuest() as _0RossenFollowerScript).FollowerWait() EndIf
EndEvent
Event OnCombatStateChanged(Actor akTarget, int aeCombatState)
If (akTarget == Game.GetPlayer()) ; debug.trace(self + "Dismissing follower because he is now attacking the player") (GetOwningQuest() as _0RossenFollowerScript).DismissFollower(0, 0) EndIf
EndEvent
Event OnDeath(Actor akKiller)
; debug.trace(self + "Clearing the follower because the player killed him.") PlayerFollowerCount.SetValue(0) Self.Clear()
EndEvent GlobalVariable Property PlayerFollowerCount Auto
Изменение репутации для пользователя Multigone
MultigoneOffline
Сообщение №1215
написано: 14 мая 2016, 16:42
| Отредактировано: Multigone - 14 мая 2016, 17:01
и галочки в Fill Type (вместо Specific Reference у меня Unique Actor и ID компаньона)
Понятно. В DialogueFollower алиас изначально пуст. Предположим, НПС подходит по условиям для диалога его найма в компаньоны. Тогда, в конце фразы, алиас квеста DialogueFollower скриптом заполняется этим НПС, ему добавляются необходимые пакеты (следование) и фракции. А у тебя актер изначально обладает ими. В общем, я к тому, что все настройки алиаса нужно сделать такими же, как в оригинале.
Еще, вот это вот:
Код
_0RossenFollowerScript Property _0RossenDialogue Auto _0RossenDialogue.DismissFollower(5)
... эквивалентно этому:
Код
(GetOwningQuest() as _0RossenFollowerScript).DismissFollower(5)
Изменение репутации для пользователя Neell
NeellOffline
Сообщение №1216
написано: 14 мая 2016, 18:26
| Отредактировано: Neell - 14 мая 2016, 18:34
Multigone, спасибо большое, помогло. Поначалу конечно она не реагировала на нажатие клавиши Е, но с добавлением самого обычного активатора в основной скрипт все изменилось. Остался последний вопрос. SEQ файлы это что-то вроде архива для скриптов? Если да, то как скрипты туда запихнуть?
Neell, если о файле, который появляется после архивации контента в .bsa, то это мусор. Скрипты добавляются в архив точно так же, как и все остальное. Исходники можно не ложить.
Нет, я о файлах расширения SEQ, просто я заметил что в некоторых модах на спутников помимо bsa архивов имеется папка SEQ. И я почему-то подумал, что для скриптов нужен отдельный архиватор. Обознался немного.
Изменение репутации для пользователя Lexo
LexoOffline
Сообщение №1219
написано: 15 мая 2016, 15:53
| Отредактировано: Lexo - 15 мая 2016, 15:54
Слушайте, народ, а в СК есть Conditions или скриптовая команда, которая проверяет, идёт сейчас дождь или нет (ну или какое-нибудь событие, которое срабатывает только во время гроз)?
А ещё, можно на каст с двух рук какого-нибудь заклинания поставить особенный эффект?
Есть условие IsRaining, есть функция GetCurrentWeather() для получения текущей погоды и метод на погоде GetClassification(), которым можно проверить, дождливая ли она.
Lexo, можно так, как это сделано для эффекта PerkImpactStaggerPushFFAimed.
Еще можно сделать абсолютно разное действие в зависимости от того, с левой руки творится заклинание, с правой или с обеих. Для этого понадобится алиас игрока, SKSE-событие OnActorAction() и проверка GetAnimationVariableBool("IsCastingDual") для левой руки. Будет работать только для игрока.
Здрасти скажите пожалуйста как называется условие в диалогах при котором будет появляться диалог при боевой стойки у NPC, у меня есть дремора которая стоит и не даёт пройти к нужному месту - указал при помощи агро радиуса когда дремора будет атаковать гг - нужно добавить ей реплику - но какое условие использовать? я о таких условиях как GetIsID и так далее.
Изменение репутации для пользователя Lexo
LexoOffline
Сообщение №1224
написано: 16 мая 2016, 16:51
| Отредактировано: Lexo - 16 мая 2016, 16:54
Точно... совсем уже загнался со всеми этими скриптами и эффектами, что про элементарное забывать начинаю... спасибо!
А тогда другой вопрос (ух и достал я вас, наверное): Есть мод на добычу руд из залежь магией. Как работает этот магический эффект я понял даже тогда, когда только начинал в СК разбираться... но можно ли сделать добычу руды телекинезом (учитывая то, что он на себя кастуется)?
Lexo, там скрипт отслеживает OnHit() от допустимых источников. Чтобы заклинание проходило проверку, его нужно добавить в mineOreToolsList. Как сделать, чтобы заклинание с Self могло творить другое заклинание, я уже говорил.
Aksyonov, IsInCombat - если конкретно в бою, т.е. дерётся. IsWeaponOut - оружие в руках, а не в ножнах. Не учитывает магию! Как определить, что непись подготовил закл - хз.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Доброго времени суток! Подскажите пожалуйста, как в скриптах управлять взглядом игрока? В самом начале игры его взгляд меняется не раз и когда он вылазит из повозки и смотрит на имперцев и когда его ведут к плахе и т.д.
Я пытался перемещать игрока через TranslateToRef и все бы хорошо, но вот его взгляд никак не удается направить в нужную сторону, подскажите, что нужно использовать?
Идея достаточно простая, я хочу направить взгляд игрока на открывающуюся дверь, которую он же только что активировал.
Gnostic, если не ошибаюсь, это делается анимационными пакетами. Но я в них полный ноль, придётся ждать спецов.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)