The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » Редактор Creation Kit » Вопросы по скиптовому языку Папирус


Вопросы по скиптовому языку Папирус

Сообщений 1 страница 30 из 75

1

В этой теме задаем вопросы/обсуждаем скриптовый язык Скайрима - Папирус.

После первого ознакомления хочу сказать, что структура языка кажется практически идентичной Обливионскому. Добавилось больше атрибутов, блоки заменены на события (event). Но в целом пока что похожего больше, чем отличий.

Перечень материалов на русском:

Папирус. Туториал 1. Привет, мир!
http://modder.ucoz.ru/load/10-1-0-157
перевод первой части серии туториалов о Папирусе. Никаких откровений, но мало ли кому поможет...

Папирус. Туториал 2. Переменные и условия
http://modder.ucoz.ru/load/10-1-0-158
Перевод второго туториала из серии туториалов о скриптовом языке Папирус (Papyrus) редактора Creation Kit. Рассматриваются элементарные понятия связанные с переменными и операторами условий.

Папирус. Туториал 3. Введение в свойства и функции
http://modder.ucoz.ru/load/10-1-0-160
Перевод третьего туториала из серии туториалов о скриптовом языке Папирус (Papyrus) редактора Creation Kit. Введение в свойства и функции.

Настройка текстового редактора Notepad++ для работы с Папирусом
http://modder.ucoz.ru/load/10-1-0-161
Для работы со скриптами Папируса можно использовать сторонние текстовые редакторы - скрипты хранятся сейчас уже не в есп-файлах, а отдельно. Один из широко распространенных текстовых редакторов это Notepad++. В данном туториале расписано, как настроить Notepad++ для работы с Папирусом.
ЗЫ: перевод и дополнение статьи выложенной на английской ВИКИ.

Введение в Papyrus (тут много ценных мелочей, в общем о языке)
Состояния (тоже показалось интересным)
О типах переменных
Об операторах
Идентификаторы EditorID в языке Papyrus
Структура файла скрипта (Script File Structure)
Papyrus: базовая информация (очень большая и познавательная статья)

0

2

Есть полный список команд и функций? Если есть, выложите.

0

3

Вовочка написал(а):

Есть полный список команд и функций? Если есть, выложите.

Здесь все, что есть поскриптам и Папирусу. Но там по-моему информация не в полном объеме.

0

4

В общем, такая вещь - анимации в Скайриме есть обыкновенные, а есть "havok animation" - и для последних команда playgroup  не подходит.

В связи с чем я не пойму, как написать скрипт, который бы запускал анимацию, допустим, двемерского телескопического коридора, который по квесту Хермеуса Моры открывается в камеру с Огмой Инфиниумом.

Я поглядел на объекты, на сам квест - и не увидел в скриптах ни намека на это, а ведь каким-то образом объект анимируется.

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

0

5

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

Код:
scn AmuletofKingsSCRIPT

ref tempRef

begin OnEquip player
	MessageBox "The Amulet of Kings slips off as you try to fasten it around your neck."
	set tempRef to GetContainer
	tempRef.unequipitem AmuletofKings 1
end

http://s3.uploads.ru/sWhN8.jpg






пытаюсь разобраться с скриптом и у меня смутные сомнения:
scn AmuletofKingsSCRIPT(название скрипта хоть ежик в тумане. вопросов нет)

ref tempRef(задается временная метка для него? будет ли эта строка работать в скайриме?)

begin OnEquip player(если игрок в инвентаре нажал одеть. вопросов нет)
MessageBox "The Amulet of Kings slips off as you try to fasten it around your neck."(сообщение об обломе и его текст)
set tempRef to GetContainer(нужно ли создавать контейнер GetContainer? будет ли эта строчка работать в скайриме?)
tempRef.unequipitem AmuletofKings 1(ниче не ясно, но ясно что амулет вернется в инвентарь)
end

как этот скрипт должен будет выглядеть для скайрима?

тупо скопировал этот скрипт на один из амулетов в скайриме, одевается без всяких сообщений и снимается, скрипт сожрался редактором без вопросов. однако...
o.O

о да! с некоторыми доработками повторил это исчезновение шмотья на шмотках из фоллаут 3:
http://s3.uploads.ru/WeTtB.jpg

как вариант сообщения

http://s2.uploads.ru/r6n95.jpg

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

:D

скрипт не работает в скайриме ни в варианте обливиона ни в переработанном под фоллаут. обидно...
что делать? что делать?

Отредактировано 7755 (2013-04-02 10:37:45)

0

6

7755 написал(а):

скрипт не работает в скайриме ни в варианте обливиона ни в переработанном под фоллаут

Логично, что не работает. В Обливионе/Фаллауте - одн скриптовая система на двоих, в Скайриме Папирус - совсем другая скриптовая система. СХожесть конечно есть, но всё же она слишком другая.

0

7

Igor_Ra
умник да... так я и прошу указать как этот ПРОСТЕНЬКИЙ скрипт на папирусе будет выглядеть. я тут 6 часов страдаю блин...
%-)

главное что в скайриме подобного скрипта нету(ну скока пропутешествовал не встречал подобного). не за что ухватиться. а мануалы по папирусу читать. ну представь что тебе в лицо дует ветер, а ты поворачиваешься к нему боком, в одно ухо влетает, из другого вылетает... бодрит! хорррррррошо!!!! только толку ноль.
:D

0

8

7755 написал(а):

scn AmuletofKingsSCRIPT(название скрипта хоть ежик в тумане. вопросов нет)

ref tempRef(задается временная метка для него? будет ли эта строка работать в скайриме?)

begin OnEquip player(если игрок в инвентаре нажал одеть. вопросов нет)

MessageBox "The Amulet of Kings slips off as you try to fasten it around your neck."(сообщение об обломе и его текст)

set tempRef to GetContainer(нужно ли создавать контейнер GetContainer? будет ли эта строчка работать в скайриме?)

tempRef.unequipitem AmuletofKings 1(ниче не ясно, но ясно что амулет вернется в инвентарь)

end


Разбираем:

scn AmuletofKingsSCRIPT ;Скрипт имени AmuletofKingsSCRIPT

ref tempRef ;Переменная tempRef типа ссылка

begin OnEquip player ;начать выполнение когда игрок одевает амулет

MessageBox "The Amulet of Kings slips off as you try to fasten it around your neck." ;Вывести сообщение "х"

set tempRef to GetContainer ;присвоить переменной tempRef значение ссылки того объекта в инвентаре которого лежит заскриптованный амулет.

tempRef.unequipitem AmuletofKings 1 ;снять AmuletofKings с референс ссылки и поместить в инвентарь.

end ;закончить выполнение скрипта.

Учтите что готовый вам никто давать не будет) Развивайтесь. Могу только пояснить как это все работает.

0

9

7755 написал(а):

нормально редактор и этот пашет. у меня активирован скайрим(легендарный патч) текстур пак и неофициальный патч к скайриму. багов - море!скрин глючных квестов(выделил красным):дети неба - маркер на сундук, а книги там нетуперегонный куб - один раз после патча активируется(или после взятия квеста у толдира или после взятия перегонного куба) и больше не исчезает из списка заданийколлегия бардов - все время наведено на главного мужика в коллегии(все задания всех бардов выполнены, все книги в библиотеке просмотрены, все диалоги с этим мужиком проговорены, воровать у него нечего. хз че с ним делать...)
            и это не считая неубиваемых птичек, окруженных теперь прозрачной сферой, в которую впиваются стрелы и ледяные шипы и птички так и летают аки ежики.
            а до этого был один из патчей, повозки(которые из города в город возят) не работали, во я намучился с матюками перегруженным чапать...
            и самое поганое я ни в квестах ни в скриптах ни бум-бум...

Хороший репак залог успеха. Да и ставить английский патч на русскую версию несколько опрометчиво...

0

10

Bitnik, огромное спасибо. Туториал помог, хотя еще не все разобрал в нем. А не подскажете где можно все аспекты диалогов разобрать? Желательно на русском)

0

11

Netico написал(а):

Учтите что готовый вам никто давать не будет) Развивайтесь. Могу только пояснить как это все работает.

Человек как бы и так в курсе что и к чему в Обливионе :) Ему это добро нужно переснести на язык Папируса Скайрима :)

Netico написал(а):

А не подскажете где можно все аспекты диалогов разобрать? Желательно на русском)

Как вариант смотреть туторы для Фаллаута 3. Чисто для Скайрима на русском я не встречал.

0

12

Netico написал(а):

Хороший репак залог успеха. Да и ставить английский патч на русскую версию несколько опрометчиво...

каталисты и феникс как бэ. каку не кушаем. а стим - кака.

Igor_Ra написал(а):

Человек как бы и так в курсе что и к чему в Обливионе

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

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

0

13

Igor_Ra написал(а):

Человек как бы и так в курсе что и к чему в Обливионе  Ему это добро нужно переснести на язык Папируса Скайрима

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

Igor_Ra написал(а):

Как вариант смотреть туторы для Фаллаута 3. Чисто для Скайрима на русском я не встречал.

Обливион, фолл, скай - лишь бы было чисто про диалоги и все их функции/возможности. Есть такие?

0

14

7755
видео не смотрел из-за скорости соединения, а вот сообщение прочитал. Из него и сделал вывод что со скриптами плоховато. Только без обид:)

Вот по этому: "нужно ли создавать контейнер GetContainer? будет ли эта строчка работать в скайриме?"

0

15

а в скриптах и квестах я вообще не разбираюсь. потому и прошу совета на форуме. да и людей которые пишут в ответ на вопрос - "учись сам", "лентяй", "я знаю но не скажу" и прочее тут нету.
вроде все логично. я этот пост писал часа три. в процессе отписывал что сделал:
1.нашел скрипт обливиона на амулете королей и вставил его в произвольную шмотку скайрима без изменений, шмотка в скайриме все равно одевалась\снималась
2.меня смутило это и я решил что какая то из записей в скрипте является переменной или функцией, но почему тогда скайрим сожрал скрипт и не выдал ошибку? я написал цветной разбор скрипта с целью уточнить у товарищей.
3.товарищи где то лазиют, а творческий зуд заставляет действовать, я переношу скрипт обливиона в фолл3, нахожу инфу о эволюции скриптового языка в фоллауте по сравнению с обливионом(messagebox) и вношу нужные правки. скрипт работает!
4.уточняю что скрипт работает АБСОЛЮТНО также как и в обливионе(сообщение о невозможности одеть предмет и ненадевание после сообщения предыдущего одетого предмета обратно)
5.прошу разъяснений почему скрипт работает в обливионе, и в фоллауте 3, но не работает в скайриме.

все эти пять пунктов уместил в один пост и писал я его долго. да. но последовательно вроде...

потом я получаю объяснение на тему того что скрипт и не будет работать, бетесда перешла на папирус.

и прошу написать мне пример скрипта из папируса, который будет точно повторять скрипт обливиона.

зачем мне пример? естественно я смогу проанализировать скрипт. я уже проследил эволюцию скриптового языка обливион-фоллаут. на примере этого конкретного скрипта. теперь будет очень классно если у меня будет связка обливион-фоллаут-скайрим

ну это для тех кто любит писать эпичные фразы вроде "учи скрипты", "разбирайся", "включи мозги"... мне скрипт нужен вобщем. :whistle:

0

16

7755 написал(а):

а где туторы по папирусу(переводы)? или сам не вникал пока в него?

Три штуки за прошлую весну на сайте. А нет, три плюс один. Четвертый лежит немного недопереведенный. Это официальные. Тогда, когда переводил, немного пытался вникать. По идее ничего сильно сложного, но нужно влезать разбираться.

Netico написал(а):

Вот по этому: "нужно ли создавать контейнер GetContainer? будет ли эта строчка работать в скайриме?"

Да лень просто ему было функцию посмотреть :) Наверное Таки не знает :)

Netico написал(а):

Обливион, фолл, скай - лишь бы было чисто про диалоги и все их функции/возможности. Есть такие?

Здесь надо смотреть (все скопом ибо категорий почему-то не нашел):
Руководства по Обливиону
Руководства по Фаллауту 3

0

17

7755
не злись) Я по твоему откуда успел новый язык выучить?) Вот что могу сказать: "Беседка сволочи!" XD и "Верните язык облы!!"

Вот смотри что получается:

Теперь у нас нельзя написать "scn" - ругается на неизвестную команду. Подавай только "ScriptName". Причем далее, после имени, ты уточняешь какой из базовых скриптов ты моделируешь - "extends". В нашем случае это "ObjectReference". Имеем на выходе такую строку:

Scriptname aaAmuletScript extends ObjectReference

Далее. Уже нет блоков Begin-End, во всяком случае у меня на них ругается, есть блоки "Event" и "EndEvent". Получаем:

Event OnActivate(ObjectReference akActionRef)

Прикольно?) Короче все что учил для облы и фола теперь годно процентов на 10-15.

Scriptname aaAmuletScript extends ObjectReference 
{Oh yeah}

Activator Property NewProperty  Auto 

Event OnActivate(ObjectReference akActionRef)

    Debug.MessageBox("Start work")
If akActionRef == Game.GetPlayer()
    Game.GetPlayer().UnequipItem(ClothesCirclet0003)

EndIf

EndEvent

Но ругается на одежку. Смотрю почему...

0

18

Igor_Ra, позже посмотрю туторы. Спасибо. Вы когда-то работали над OBSM. Они про скрипты Скайрима что-то знают? Не знаете?

0

19

Igor_Ra, D:\Games\Skyrim Base to Modding\Data\Scripts\Source\aaAmuletScript.psc(10,34): "variable" ClothesCirclet0003 "is undefined" --- транслит плиз)))

0

20

Netico написал(а):

Debug.MessageBox("Start work")

скорее всего, учитывая что для месседжей есть блок в редакторе, там надо использовать фоллаутовский вариант:
создать нужный месседж и вызывать его.
http://s2.uploads.ru/9mKjd.jpg
это я предыдущий скриншот из фоллаута чтоб не писать буковки по картинке, вобщем выделил красным что в скрипте заменить на то что в красной рамке на скриншоте и добавить месадж.

Scriptname aaAmuletScript extends ObjectReference 

Activator Property NewProperty  Auto
Event OnActivate(ObjectReference akActionRef)
    Debug.MessageBox("Start work")
If akActionRef == Game.GetPlayer()
    Game.GetPlayer().UnequipItem(ClothesCirclet0003)
EndIf
EndEvent

или Start work в скрипте и есть название выпадающего меседжа?

Отредактировано 7755 (2013-04-05 13:29:29)

0

21

7755, не с мессаджами все нормально. Вот так будет работать:

Scriptname aaaMyAmuletScript extends ObjectReference 
{Oh, yeahhh}

Armor Property eqCircle0003  Auto 

Event OnActivate(ObjectReference akActionRef)

    Debug.MessageBox("Start work")
If akActionRef == Game.GetPlayer()
    Game.GetPlayer().UnequipItem(eqCircle0003,1)
    Debug.MessageBox("Succsesfull")

EndIf

EndEvent

При попытке взять предмет выдаст оба сообщения, а потом добавит в инвентарь предмет. (Так как "UnequipItem(eqCircle0003,1)" = Снять предмет "х" и добавить в инвентарь.) А мессадж так пишется:

Debug.MessageBox("Текст сообщения")

0

22

7755
месаги тут только для того чтобы видеть по какую стадию работает скрипт.

0

23

7755, угадай кто мне как земля колгоспу будет должен.

Scriptname ИмяСкрипта extends ObjectReference 
{Сюда краткую инфу о скрипте}

Armor Property eqCircle0003  Auto 

Event OnEquipped(Actor akActor)

If (akActor == Game.GetPlayer())
    Game.GetPlayer().UnequipItem(eqCircle0003,1)
    Debug.MessageBox("Сюда сообщение своё")
EndIf

EndEvent

Вот это "eqCircle0003" проперти. Ты окно добавления сурипта на объект видел?

0

24

Netico написал(а):

Причем далее, после имени, ты уточняешь какой из базовых скриптов ты моделируешь - "extends". В нашем случае это "ObjectReference". Имеем на выходе такую строку:

Тут мне кажется правильнее сказать - какой скрипт ты расширяешь. То есть получается что-то типа наследования в программировании. Берем базовый скрипт и расширяем (наследуем) его. То есть берем всё уже готовое что в нем есть по умолчанию, плюс расширяем чем-то соим.

Netico написал(а):

Уже нет блоков Begin-End, во всяком случае у меня на них ругается, есть блоки "Event" и "EndEvent". Получаем:

Всё верно. События (Event) заменили собой Begin-End, хотя по сути это почти тоже самое. Почему почти? Потому что события всё же немного по другому работают. Об этом речь шла толи в третьем толи в четвертом туториале.

Netico написал(а):

Вы когда-то работали над OBSM. Они про скрипты Скайрима что-то знают? Не знаете?

Команда, которая работал над учебником по скриптам Обливиона собиралась из совершенно разных людей с совершенно разных сайтов. То есть это была ситуационная команда. По сути, насколько я знаю её уже давно нету. А половину людей пожалуй даже не найти. К тому же главный организатор - Garin - сейчас, насколько я знаю, занят в реальной жизни и ему немного не до ТЕС. Так что...

Netico написал(а):

D:\Games\Skyrim Base to Modding\Data\Scripts\Source\aaAmuletScript.psc(10,34): "variable" ClothesCirclet0003 "is undefined" --- транслит плиз)))

Переменная неопределена. Не может найти ClothesCirclet0003.

0

25

IgorLutiy, проводить аналогии с программирование в этом случае излишне) (а так то да - полная аналогия с наследованием). Жаль что распалась команда.

IgorLutiy написал(а):

Переменная неопределена. Не может найти ClothesCirclet0003.

Уже вспомнил) И доделал скрипт.

0

26

Netico написал(а):

проводить аналогии с программирование в этом случае излишне

Почему? Как на мой взгляд, Папирус это ещё один шаг от скриптов к программированию. Пусть не такой уж и большой, но всё же.

Netico написал(а):

Жаль что распалась команда.

Задача команды была написать учебник. Команда была разношерстная. Учебник был написан - команда разбежалась по своим делам :) Нашелся бы сейчас толковый организатор без привязки к какому-то сайту - может быть получилось бы собрать новую команду.

0

27

IgorLutiy, чтобы не грузить человека в конкретном случае лишней инфой))

IgorLutiy написал(а):

Задача команды была написать учебник. Команда была разношерстная. Учебник был написан - команда разбежалась по своим делам  Нашелся бы сейчас толковый организатор без привязки к какому-то сайту - может быть получилось бы собрать новую команду.

А сами?) Кстати, почему так мало туториалов по Скайриму? Как же я буду в нем разбираться то?))

0

28

Netico написал(а):

чтобы не грузить человека в конкретном случае лишней инфой))

Понял :)

Netico написал(а):

А сами?) Кстати, почему так мало туториалов по Скайриму? Как же я буду в нем разбираться то?))

Мало... Что-то подходит по аналогии с Обливионом/Фаллаутом 3. По папирусу почти все что есть на английском - переведено. Я имею ввиду именно туториалы. А в целом - на мой взгляд - просто невостребованы эти туториалы. Есть хороший видеокурс от Кальяна. А заинтересованности в текстовых туториалах я банально не вижу. Кажется, что это практически никому сейчас не нужно. А вкладывать кучу времени и сил в никуда никому не хочется.

0

29

IgorLutiy, текстовые всегда нужны. У многих вечно висячий интернет) И если я еще разгребусь с папирусом, то с этими новыми введениями голосов и т.д. тьма. К примеру как делать лип файлы?)

0

30

Netico написал(а):

7755, угадай кто мне как земля колгоспу будет должен.
Scriptname ИмяСкрипта extends ObjectReference 
{Сюда краткую инфу о скрипте}
Armor Property eqCircle0003  Auto 
Event OnEquipped(Actor akActor)
If (akActor == Game.GetPlayer())
    Game.GetPlayer().UnequipItem(eqCircle0003,1)
    Debug.MessageBox("Сюда сообщение своё")
EndIf
EndEvent
Вот это "eqCircle0003" проперти.

скромнее надо быть.  :P

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

большая картинка

http://s2.uploads.ru/r6n95.jpg

Ты окно добавления сурипта на объект видел?

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

меня интересует кое что - в папке со скайримом скрипты(если распаковать родные бса или из сторонних модов глядеть) храняться в папкаигры\Data\Scripts\Source\ или папкаигры\Data\Scripts\ также есть еще инструменты для компиляции и еще чего то папируса по пути папкаигры\Papyrus Compiler\

но если скрипты(файлы *.psc) открывать в блокноте то там не весь текст и не все форматирование отображено, есть ли быстрый маленький просмотрщик\редактор для этих скриптов в виде отдельной программы, и можно ли использовать для этой цели что либо из папки папкаигры\Papyrus Compiler\    ???

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » Редактор Creation Kit » Вопросы по скиптовому языку Папирус