Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
19.04.2018 20:55:55, werr сказал(-а):
Кажется у меня почти стандартный файл посветки, ток несколько цветов менял. А как им поделиться, где должен лежать, что за формат (xml что ли)??

У меня оно тут (C:\Users\%UserName%\AppData\Roaming\Notepad++\userDefineLang.xml) если у тебя Papyrus определён как пользовательский язык. Иначе хз где оно может быть, не парься тогда.

pre_1454504183__logo.png.webp.png Kortex Mod Manager: Discord | GitHub | Web-site
  • Ответов 840
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано
19.04.2018 20:42:17, werr сказал(-а):

 Следить за аккуратностью кода - признак хорошего тона в программировании. Поэтому только правильные и естественные названия функций и команд, комментарии, а также отступы. А еще лучше - табуляция. Более того, если будешь изучать какой-нибудь Питон, то там знаки табуляции являются не просто декоративным разграничителем, но несут и практический смысл: открывают/закрывают циклы. Поэтому учись грамоте с малых лет, чтобы потом не было мучительно больно.

 

А поскольку речь у нас исключительно о Скайримомоддинге, и исходники мы никому не раздаем, то всё это становится совершенно не обязательной фигней. (особенно идеальная табуляция, когда для просто визуального разграничения и хватает 1-2 таба максимум) А кому надо учить питоны гадюки ужи - те и сами всё познают, если нужно будет. Всему своё время. Забивать голову людям не стоит. Те кто никогда не позиционировал себя как программист и не пытается им подражать будут делать как им удобно и где им удобно, а не как принято в обществе, к которому они отношения не имею и иметь не хотят 

Опубликовано

Не, табуляция нужна. Более наглядно всякие if-elseif выглядят, особенно когда один в другой вкладывается. Помогает не запутаться.

Но вот регистрозависимость - это уже излишества, как по мне.

Опубликовано
19.04.2018 20:42:17, werr сказал(-а):

Ты дядю Диму не слушай. Вернее, слушай, но пропускай все через призму реальности. Он модмейкер, но не программист. Кербер - программист, тут он дело говорит. Следить за аккуратностью кода - признак хорошего тона в программировании. Поэтому только правильные и естественные названия функций и команд, комментарии, а также отступы. А еще лучше - табуляция. Более того, если будешь изучать какой-нибудь Питон, то там знаки табуляции являются не просто декоративным разграничителем, но несут и практический смысл: открывают/закрывают циклы. Поэтому учись грамоте с малых лет, чтобы потом не было мучительно больно.

Так я сам эти все отступы, комментарии, да "правильные" названия делаю, т.е с "аккуратностью кода" у меня всё нормально.

По поводу подсвечивания

Ага, сейчас недавно как раз поставил на свой Notepad
Опубликовано
19.04.2018 22:36:27, Dimonoider сказал(-а):

А поскольку речь у нас исключительно о Скайримомоддинге, и исходники мы никому не раздаем, то всё это становится совершенно не обязательной фигней. (особенно идеальная табуляция, когда для просто визуального разграничения и хватает 1-2 таба максимум) А кому надо учить питоны гадюки ужи - те и сами всё познают, если нужно будет. Всему своё время. Забивать голову людям не стоит. Те кто никогда не позиционировал себя как программист и не пытается им подражать будут делать как им удобно и где им удобно, а не как принято в обществе, к которому они отношения не имею и иметь не хотят 

Я согласен, что на функциональность это не влияет. Но, знаешь, можно много чего не делать или делать не так, если уж на то пошло. Можно и задницу пальцем вытирать, а не бумагой. Эт я все к чему – не учи парня плохому. Когда человек изучает что-то, папЫрус в нашем случае, для него нет разницы: учить форматирование кое-как, лишь бы было, либо учить нормально сразу. Поэтому пусть учит нормально. Голова этим не забивается.

Опубликовано
20.04.2018 09:56:37, werr сказал(-а):

 

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

Опубликовано
19.04.2018 21:03:56, Кербер сказал(-а):

 

У меня он не определен, судя по всему. В нотпаде отображается последним в списке языков, судя по всему вот в этом stylers.xml после Search result, самый последний абзац.
stylers.7z

Опубликовано (изменено)
Посоветуйте пожалуйста хорошие статьи по скриптам. Изменено пользователем Learoy
  • 3 недели спустя...
Опубликовано
Вопрос: как мне отключить управление персонажем у игрока и переключить ему "зрение" на вид от третьего лица? Просто я решил добавить некоторую анимацию к определённому действию, а анимации, как известно, от первого лица не показываются.
Опубликовано
08.05.2018 05:00:23, mr Jyggalag сказал(-а):

Вопрос: как мне отключить управление персонажем у игрока и переключить ему "зрение" на вид от третьего лица? Просто я решил добавить некоторую анимацию к определённому действию, а анимации, как известно, от первого лица не показываются.

DisablePlayerControls

ForceThirdPerson

 

Включить контроль обратно только не забудь потом.

Опубликовано (изменено)
Два маленьких вопроса:
1) как сделать так, чтобы экран на некоторое время затемнялся? Пока искал в интернете, нашёл, что это делают либо через .ApplyCrossFade(), либо через Game.FadeOutGame(). Как понимаю, лучше ведь использовать второе, да?
2) если я телепортирую игрока/NPC с помощью скрипта .MoveTo(), а игрок/NPC совершал какую-нибудь анимацию (например, сидел "по-турецки"), то он продолжит совершать эту же анимацию после телепортации? Иными словами, мне не надо заново игрока/NPC принуждать выполнять подобную "бесконечную" анимацию? Изменено пользователем mr Jyggalag
Опубликовано
10.05.2018 21:03:03, mr Jyggalag сказал(-а):

Два маленьких вопроса:
1) как сделать так, чтобы экран на некоторое время затемнялся? Пока искал в интернете, нашёл, что это делают либо через .ApplyCrossFade(), либо через Game.FadeOutGame(). Как понимаю, лучше ведь использовать второе, да?
2) если я телепортирую игрока/NPC с помощью скрипта .MoveTo(), а игрок/NPC совершал какую-нибудь анимацию (например, сидел "по-турецки"), то он продолжит совершать эту же анимацию после телепортации? Иными словами, мне не надо заново игрока/NPC принуждать выполнять подобную "бесконечную" анимацию?

1) Открой квест Темного Братства, где в гроб к Матери Ночи залазишь (ну или где убежище братства рушится), и посмотри, как там сделано.

Вообще, оба юзать можно. Но ImageSpac'ы иногда фигово с ЕНБ дружат.

2) Протестируй сам, чо =) В Вайтране на лавочках почти всегда кто-то сидит, а в вулканической тундре есть лагерь купающихся охотников - там есть лежащие и сидящие НПСы. Попробуй их через консоль "дернуть".

Но вообще, если непись с тобой не в одной ячейке, то он факт появится в "стоящем" положении.

Опубликовано
11.05.2018 05:28:46, Azazellz сказал(-а):

2) Протестируй сам, чо =) В Вайтране на лавочках почти всегда кто-то сидит, а в вулканической тундре есть лагерь купающихся охотников - там есть лежащие и сидящие НПСы. Попробуй их через консоль "дернуть".
Но вообще, если непись с тобой не в одной ячейке, то он факт появится в "стоящем" положении.

Просто хотелось, по идее, сделать так, чтобы игрок присаживался перед активатором на колени, экран затемнялся, игрок телепортировался и затем вставал с колен - по видимому тут остаётся только тестить, останется ли он (игрок) на коленях после телепортации, или нет.
В любом случае, благодарю за ответ.
Опубликовано
10.05.2018 21:03:03, mr Jyggalag сказал(-а):

Два маленьких вопроса:
1) как сделать так, чтобы экран на некоторое время затемнялся? Пока искал в интернете, нашёл, что это делают либо через .ApplyCrossFade(), либо через Game.FadeOutGame(). Как понимаю, лучше ведь использовать второе, да?
2) если я телепортирую игрока/NPC с помощью скрипта .MoveTo(), а игрок/NPC совершал какую-нибудь анимацию (например, сидел "по-турецки"), то он продолжит совершать эту же анимацию после телепортации? Иными словами, мне не надо заново игрока/NPC принуждать выполнять подобную "бесконечную" анимацию?

1. Лучше использовать первое. Создай себе в моде ISM в виде простого черного экрана и вперед, через ApplyCrossFade(). Можешь взять уже существующий из квеста Гильдии Воров, TG05BlackFrame что-то там... Кажется так называется (года 3 не открывал CK скайрима). В отличии от FadeOutGame(), Image Space Modifier, запученный через ApplyCrossFade(), не пропадает с экрана. То есть твой черный фрейм будет держаться на экране, пока ты не уберешь его командой ImageSpaceModifier.RemoveCrossFade(float ftime). Не пропадет даже при телепортации игрока в другую ячейку. В то время как первая команда использовалась разрабами лишь единожды во вступительной части игры и не сохранит тебе затемнение экрана.

 

2. При вызове команды MoveTo(), если точка назначения находится дальше 800 a.u. от старта, игра перезагружает игровой мир/ячейку. Иными словами, чтобы сохранить воспроизведение игроком или НПС какого-то пакета, либо анимации, их надо запустить еще раз скриптом. Что весьма гладко проходит, если дать НПС новый пакет в новой ячейке, и игрока заставить делать что-нибудь, не убирая черный кадр ISM с экрана. Таким образом, при загрузки новой локации, 3D модель НПС прогрузится заново и к моменту, когда ты телепортируешь в локацию игрока, он уже будет выполнять свой пакет (ну либо же заспаунится в мебели). Затем надо приказать игроку выполнять сценку/пакет, ну и после пары секунд можно сдирать покровы черного экрана и возвращать управление игроку.

Опубликовано (изменено)
11.05.2018 12:48:30, werr сказал(-а):

1. Лучше использовать первое. Создай себе в моде ISM в виде простого черного экрана и вперед, через ApplyCrossFade(). Можешь взять уже существующий из квеста Гильдии Воров, TG05BlackFrame что-то там... Кажется так называется (года 3 не открывал CK скайрима). В отличии от FadeOutGame(), Image Space Modifier, запученный через ApplyCrossFade(), не пропадает с экрана. То есть твой черный фрейм будет держаться на экране, пока ты не уберешь его командой ImageSpaceModifier.RemoveCrossFade(float ftime). Не пропадет даже при телепортации игрока в другую ячейку. В то время как первая команда использовалась разрабами лишь единожды во вступительной части игры и не сохранит тебе затемнение экрана.

Сделал через просто Apply(), а не ApplyCrossFade(), задействовав в качестве ISM "ванильные" FadeToBlackImod и FadeToBlackHoldImod, использовавшиеся в транспортной системе Скайрима (через них и сделано это самое затемнение экрана, когда игрок садиться в повозку). Осталось понять, как точно так же "высветлять" экран.
Благодарю за помощь Изменено пользователем mr Jyggalag
Опубликовано (изменено)
Пытаюсь "привязать" свою функцию к стадии квеста: прикрепляю к квесту сам скрипт (он успешно компилируется), назначаю в стадии квеста в kmyquest свой скрипт, пишу фрагмент кода kmyquest.TPMenu() и тут мне выдаёт уже ошибку:
Вот лог:
Starting 1 compile threads for 1 files... 
Compiling "QF_SC_BonfireTPmenu_0302A972"... 
C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\QF_SC_BonfireTPmenu_0302A972.psc(9,43): cannot cast a quest to a bonfireteleportationmenu, types are incompatible 
No output generated for QF_SC_BonfireTPmenu_0302A972, compilation failed. 
 
Batch compile of 1 files finished. 0 succeeded, 1 failed. 
Failed on QF_SC_BonfireTPmenu_0302A972

Какого чёрта компилятор он ругается, если до этого всё скомпилировалось успешно?

Код скрипта
Scriptname BonfireTeleportationMenu   Conditional

Quest Property QuestBonfireTeleportationMenu  Auto  
Message Property BonfireTpMenu  Auto
Message Property MenuNone  Auto 
Actor Property PlayerREF Auto
GlobalVariable Property BonfireMarkers  Auto
ImageSpaceModifier Property FadeToBlackImod  Auto
ImageSpaceModifier Property FadeToBlackBackImod  Auto
ImageSpaceModifier Property FadeToBlackHoldImod  Auto


;Bonfires
ObjectReference Property Bonfire00  Auto
ObjectReference Property Bonfire01  Auto
ObjectReference Property Bonfire02  Auto
ObjectReference Property Bonfire03  Auto
ObjectReference Property Bonfire04  Auto
ObjectReference Property Bonfire05  Auto


Function TPMenu(int close = 1)
if BonfireMarkers.GetValue() >= 2
    While close != 0
        int button = BonfireTpMenu.Show()
        if button == 0
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire00)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 1
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire01)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 2
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire02)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 3
            close = 1
        elseif button == 4
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire03)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 5
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire04)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 6
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire05)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        endif
    EndWhile
	QuestBonfireTeleportationMenu.SetStage(0)
else
    MenuNone.Show()
endif
EndFunction
Изменено пользователем mr Jyggalag
Опубликовано
12.05.2018 19:55:03, mr Jyggalag сказал(-а):

Осталось понять, как точно так же "высветлять" экран.Благодарю за помощь


11.05.2018 12:48:30, werr сказал(-а):

ImageSpaceModifier.RemoveCrossFade(float ftime)

Опубликовано
12.05.2018 21:21:17, mr Jyggalag сказал(-а):

Пытаюсь "привязать" свою функцию к стадии квеста: прикрепляю к квесту сам скрипт (он успешно компилируется), назначаю в стадии квеста в kmyquest свой скрипт, пишу фрагмент кода kmyquest.TPMenu() и тут мне выдаёт уже ошибку:

Вот лог:
Starting 1 compile threads for 1 files... 
Compiling "QF_SC_BonfireTPmenu_0302A972"... 
C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\QF_SC_BonfireTPmenu_0302A972.psc(9,43): cannot cast a quest to a bonfireteleportationmenu, types are incompatible 
No output generated for QF_SC_BonfireTPmenu_0302A972, compilation failed. 
 
Batch compile of 1 files finished. 0 succeeded, 1 failed. 
Failed on QF_SC_BonfireTPmenu_0302A972

Какого чёрта компилятор он ругается, если до этого всё скомпилировалось успешно?
Код скрипта
Scriptname BonfireTeleportationMenu   Conditional

Quest Property QuestBonfireTeleportationMenu  Auto  
Message Property BonfireTpMenu  Auto
Message Property MenuNone  Auto 
Actor Property PlayerREF Auto
GlobalVariable Property BonfireMarkers  Auto
ImageSpaceModifier Property FadeToBlackImod  Auto
ImageSpaceModifier Property FadeToBlackBackImod  Auto
ImageSpaceModifier Property FadeToBlackHoldImod  Auto


;Bonfires
ObjectReference Property Bonfire00  Auto
ObjectReference Property Bonfire01  Auto
ObjectReference Property Bonfire02  Auto
ObjectReference Property Bonfire03  Auto
ObjectReference Property Bonfire04  Auto
ObjectReference Property Bonfire05  Auto


Function TPMenu(int close = 1)
if BonfireMarkers.GetValue() >= 2
    While close != 0
        int button = BonfireTpMenu.Show()
        if button == 0
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire00)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 1
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire01)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 2
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire02)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 3
            close = 1
        elseif button == 4
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire03)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 5
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire04)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        elseif button == 6
            FadeToBlackImod.Apply()
            Utility.Wait(1.0)
            PlayerREF.MoveTo(Bonfire05)
            FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
            FadeToBlackHoldImod.Remove()
        endif
    EndWhile
	QuestBonfireTeleportationMenu.SetStage(0)
else
    MenuNone.Show()
endif
EndFunction
Scriptname BonfireTeleportationMenu Conditional

Сделай:
Scriptname BonfireTeleportationMenu extends Quest Conditional

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

Появилась новая партия вопросов:
1) в чём заключается разница между вызовом собственной анимации (созданной через назначение определенного Anim Event) и анимации, исконно существующей? Попробовал сделать вызвать существующую анимацию (IdleSitCrossLegged) и ничего не произошло, вызвал свою анимацию (в ней было указана IdleSitCrossLegged как Anim Event) - всё заработало.
 
2) UPD - решил вопрос

Вопрос:
В своём скрипте я использую связку двух ISM, которые сначала идут друг за другом, а потом плавно исчезают:
FadeToBlackImod.Apply()
BonfireOn.Enable(true)
BonfireOnLight.Enable(true)
Utility.wait(2)
FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
Utility.Wait(2)
BonfireMessageOn.Show()
BonfireOff.Disable(true)
ImageSpaceModifier.RemoveCrossFade(1)

При первом "прогоне" скрипта всё работает нормально - экран затемняется, а затем, спустя 4 секунды, высветляется в течении 1 секунды. Однако, когда я запускаю скрипт ещё раз (у меня стоят два активатора, на каждом из них висит скрипт), между периодом "кромешной тьмы" и "высветления" проходит маленький промежуток времени, когда экран становится полностью светлым. Почему это может происходить?

Скрипт полностью:
Scriptname BonfireSoulCairnActivate extends ObjectReference  

;========Variable========
ObjectReference Property BonfireOff  Auto  
ObjectReference Property BonfireOn  Auto
ObjectReference Property BonfireOnLight  Auto
ObjectReference Property Bonfire  Auto 
Message Property BonfireMessageOn  Auto
Message Property BonfireMessageBlock00  Auto
Message Property BonfireMessageBlock01  Auto 
Ingredient Property FireSalts  Auto
GlobalVariable Property BonfireMarker  Auto
GlobalVariable Property BonfireMarkers  Auto
Actor Property PlayerREF Auto

;========Image Space Modifiers========
ImageSpaceModifier Property FadeToBlackImod  Auto
ImageSpaceModifier Property FadeToBlackBackImod  Auto
ImageSpaceModifier Property FadeToBlackHoldImod  Auto

;========Setting Variables========
GlobalVariable Property FireSaltsCount  Auto
GlobalVariable Property FireSaltsNeed  Auto
GlobalVariable Property AnimationNeed  Auto
;анимация для активации костра
Idle property ActivateIdle auto


Event OnActivate(ObjectReference akActionRef)
    if akActionRef==PlayerREF
    if BonfireMarker.GetValue()!=1
        if FireSaltsNeed.GetValue()==1
            if (PlayerREF.GetItemCount(FireSalts)>=FireSaltsCount.GetValue())
                PlayerREF.RemoveItem(FireSalts, FireSaltsCount.GetValue() as int)
                if AnimationNeed.GetValue() != 0
                    Game.DisablePlayerControls()
                    Game.ForceThirdPerson()
                    ;PlayerREF.PlayIdle(ActivateIdle)
					PlayerREF.PlayIdleWithTarget(ActivateIdle, Bonfire)
                endif
                Utility.Wait(1.5)
                FadeToBlackImod.Apply()
                BonfireOn.Enable(true)
                BonfireOnLight.Enable(true)
                Utility.wait(2)
                FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
                Utility.Wait(2)
                BonfireMessageOn.Show()
                BonfireOff.Disable(true)
                ImageSpaceModifier.RemoveCrossFade(1)
                BonfireMarker.SetValue(1)
                BonfireMarkers.SetValue(BonfireMarkers.GetValue()+1)
                if AnimationNeed.GetValue() != 0
                    Game.ForceFirstPerson()
                    Game.EnablePlayerControls()
                endif
            else
                BonfireMessageBlock00.Show(FireSaltsCount.GetValue() as int)
                Utility.Wait(2.9)
                BonfireMessageBlock01.Show(PlayerREF.GetItemCount(FireSalts) as int)
            endif
        endif
    endif
    endif
endEvent


Всего-лишь надо было добавить в нужное место пару .Remove()  :)  Изменено пользователем mr Jyggalag
  • 2 недели спустя...
Опубликовано

Вопрос - функция .Show() может вызывать Месседжи только с числовыми значениями, да? Мне никак ведь не "всунуть" в Месседж строковое значение?

  • 2 недели спустя...
Опубликовано

Добрый день, уважаемые модмейкеры. Я новичок в модостроительстве и только недавно открыл для себя скрипты. Проблема у меня следующая. Хочу создать себе противника-Довакина, чтоб и крики использовал и чтобы душа дракона была, которую ГГ сможет поглотить после победы над противником. Только вот незадача - не знаю как сделать чтобы поглащалась душа противника.может кто-то подсказать как быть?

Опубликовано (изменено)
04.06.2018 15:12:21, Dova0512 сказал(-а):

Добрый день, уважаемые модмейкеры. Я новичок в модостроительстве и только недавно открыл для себя скрипты. Проблема у меня следующая. Хочу создать себе противника-Довакина, чтоб и крики использовал и чтобы душа дракона была, которую ГГ сможет поглотить после победы над противником. Только вот незадача - не знаю как сделать чтобы поглащалась душа противника.может кто-то подсказать как быть?

Копать надо в то, как сделаны драконы.

Смотреть скрипты, с ними связанные. Квесты.

Есть целая куча способов, как запустить это самое "поглощение души" - начиная со скрипта, который будет прикреплен индивидуально к каждому дракону, и заканчивая квестами (которые могут стартовать через StoryManager, с ивента на убийство, в котором дракон прописан, например).

Изменено пользователем Azazellz

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...