Закусочная У семи дорог: (OFFLINE) Уголок скриптолога - Закусочная У семи дорог

Перейти к содержимому

  • 19 Страниц +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Уголок скриптолога Скрипты для TES4 CS: что, где, почем

#1 User offline   Volodimer Icon

  • Патриарх Закусочной
  • PipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 823
  • Регистрация: 28 Апрель 06

  Отправлено 23 Декабрь 2006 - 18:22

Решил создать такую тему - здесь буду выкладывать, что мне удалось накопать по поводу скриптования. Единственный доступный пока источник по скриптам находится здесь - http://cs.elderscrolls.com/constwiki/index...egory:Scripting . Но он на английском языке. Ко всему прочему там не так просто разобраться в примерах (что, когда и как применять). Есть еще проект OSFM, цель которого - создание русского учебника по CS и скриптам. Правда пока результатов не видно, хотя по словам лидера команды проект будет доведен до конца. Вопрос в том - когда.
Соответственно здесь я буду выкладывать свои наработки. Начну я с азов.
1. Инструментарий. В первую очередь - это сам CS. Кроме того, есть программа TES Script Master, но она не доработана (причем нет некоторых элементарных возможностей - например, нет возможности скопировать скрипт или его кусок в буфер, если бы кто из моих студентов такое позволил, плохо бы ему было). Но на безрыбье и рак рыба. Можно использовать и постой блокнот (хотя я пользуюсь программой Notepad++, ней есть возможность включить подсветку кода).
2. Скрипты - что этот такое и как с ними бороться.
В редакторе CS TES4 для того, чтобы работали квесты и диалоги (которые ВСЕ являются частью квестов), необходимо использовать различные скриптовые функции. Причем используются они двумя способами. Первый - в теле самого квеста. Это могут быть условия, при которых доступен тот или иной диалог, стадия квеста, пакет AI и т.п. Кроме того, результатом какого-то диалога или стадии квеста могут быть какие-то скриптовые функции.
Второй - скрипт, привязанный к квесту или объекту. Он создается в специальном редакторе и сохраняется в моде. Далее он привязывается к квесту или объекту. Далее я попробую проиллюстрировать все на примере создания мода.
Начну я с первого способа.
0

#2 User offline   Volodimer Icon

  • Патриарх Закусочной
  • PipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 823
  • Регистрация: 28 Апрель 06

Отправлено 23 Декабрь 2006 - 20:20

1. Создание квеста.
Для этого в CS выбирается пункт меню Character|Quest. Появляется окно квестов.
Прикрепленное изображение: q1.jpg
Что есть на этом окне. Слева - панель идентификаторов квестов. Чтобы не запутаться, рекомендуется давать значащие имена. В них лучше включать категории (например, MG01 - 1-й квест гильдии магов). Когда создается свой собственный квест, то чтобы его не искать, можно начат его как aaa... Я буду приводить примеры из мода, над которым работаю. Для него требовалось создать квест "Сокровища Змеиной Тропы". Соответственно, в окне нажимаем правой кнопкой мыши в любое место панели идентификаторов и в появившемся окне выбираем New. Далее задаем идентификатор (в нашем случае - aaaInn7ways01).

Теперь рассмотрим другие части окна. Вверху располагаются закладки - можно, выбирая их, получаем доступ к различным настройкам квеста. Начнем с закладки Quest Data.
Quest Name - отображаемое название квеста. Оно будет появляться во время игры в журнале игрока. В нашем случае - Сокровища Змеиной Тропы. Внизу находится поле Priority - приоритет квеста. Он определяет, насколько данный квест важен. Рекомендуется следующие приоритеты:
Priority Type
1 Tutorials
5 Generic Activities quests
10 Non-quest Dialogue
20 House & Horse quests
40 Training & Vampire quests
50 Miscellaneous quests
60 Guild quests
85 Main story quest
90 Crime & Character Gen quests

Поле Script - в нем выбирается из списка скрипт, привязанный к данному квесту. Про скрипты поговорим позже.
Теперь 3 флажка.
Start Game Enabled - если флажок установлен, то квест стартует вместе с новой игрой (или сразу при подключении мода). Если не установлен, то его нужно запускать.
Allow Repeated Conversation Topics - доступны все темы для разговора
Allow Repeated Stages - разрешать повторения в журнале.

Quest Conditions - условия, при которых становится доступным данный квест. О том, как настраивать условия, поговорим позже.
Кроме того, можно подгрузить изображение, которое будет привязано к данному квесту. Оно должно быть в формате dds. Все изображения должны быть помещены в папку data игры. Путь указывается после нажатия на кнопку.

Следующая закладка - Quest Stages.
Прикрепленное изображение: q2.jpg
В ней устанавливаются все стадии текущего квеста. Стадии нумеруются от 0 до 255. Они располагаются в левой панели. Для создания новой стадии нужно щелкнуть ПКМ и выбрать New. Далее вводится номер. Далее в Quest Stage Items нужно щелкнуть ПКМ и выбрать New. Если необходимо, чтобы в журнале для этой стадии появлялась запись, то она вводится в Log Entry (если оставить ее пустой, то в журнале ничего не будет). Если в результате должен быть выполнен какой-нибудь скрипт, он помещается в Result Script (для того, чтобы он был сохранен, нужно нажать на кнопку Compile Result). В Conditions устанавливаются условия, при выполнении которых будет установлена данная стадия. Ну и для последней стадии должен быть установлен флажок Complete Quest.


Следующая закладка - Quest Targets.
Прикрепленное изображение: q3.jpg
На данной закладке содержатся маркеры целей, которые появляются на карте во время выполнения стадий квеста. Дя создания маркера в верхнем окне нужно щелкнуть ПКМ и выбрать New. Далее нужно выбрать ячейку (Cell), в которой находится цель стадии квеста. И саму цель - Ref (npc, предмет или маркер). Во время игры к этой цели будет привязан зеленый или красный маркер на карте. Кроме того, нужно в Conditions прописать условия появления маркера (обычно используют функцию GetStage).

Следующая закладка - Topics.
Прикрепленное изображение: q4.jpg
Здесь прописываются темы и тексты диалогов. Во многом именно здесь проходит основная работа по созданию квеста. Для начала нужно выбрать тему - нужно в панели идентификаторов тем нужно щелкнуть ПКМ и выбрать Add Topics.
Прикрепленное изображение: q5.jpg
В появившемся окне выбирается существующая тема или создается новая (нужно щелкнуть ПКМ и выбрать New) и далее нужно нажать Ok.
Далее создается заголовок темы. Для каждой темы создаются конкретные диалоги. Подробно об этом я говорить здесь не буду, это достаточно объемная тема. Но для каждого диалога настраиваются условия, добавляются результирующие скрипты.
Прикрепленное изображение: q6.jpg
Для того, чтобы данная тема была доступна, ее нужно добавить. Можно сделать это двумя способами. Либо выбрать ее в Add Topic другого диалога, либо в результирующий скрипт темы или стадии квеста добавить строку AddTopic <имя темы>.

Пока все. Дальше я рассмотрю собственно скрипты.
0

#3 User offline   Simon-86 Icon

  • Заходила
  • PipPip
  • Группа: Пользователи
  • Сообщений: 46
  • Регистрация: 05 Август 07

Отправлено 08 Август 2007 - 03:50

Спасибо за инфу! С созданием квестов у меня напряг. 2 мода сделал (вроде как с квестами) - люди говорят, что хорошо бы задания в журнал добавлялись и маркеры были. А я в Character|Quest зашел и растерялся :laugh: Я все задания в записках писал, а потом их ф трупы или сундуки прятал. Теперь может эти моды смогу исправить :shock:

Сообщение отредактировал Simon-86: 09 Август 2007 - 06:38

0

#4 User offline   Julianos Icon

  • Глава проекта "Живые и Мертвые"
  • Группа: Главные администраторы
  • Сообщений: 6 379
  • Регистрация: 03 Май 06

Отправлено 09 Август 2007 - 00:12

View PostSimon-86 (8.8.2007, 3:50) писал:

Спасибо за инфу! С созданием квестов у меня напряг. 2 мода сделал (вроде как с квестами) - люди говорят, что хорошо бы задания в журнал добавлялись и маркеры были. А я в Character|Quest зашел и растерялся :laugh: Я все задания в записках писал, а потом их ф трупы Attachment attachment или сундуки Attachment attachment прятал. Теперь может эти моды смогу исправить :shock: Если не в напряг, посмотри моды. Может советом поможеш. (В C monkeys - Чтобы начать - прочитайте записку лежащую у ворот города Анвил)

Это элементарно.
1. В меню квестов (кнопка Q) создай свой квест с уникальным ID. Потом набросай пару стадий с их описаниями для дневника (Log Entry). Последняя стадия должна быть с пометкой Complete Quest. И в результирующем скрипте (Resul Script) команда StopQuest <ID квеста>. В итоге при дстижении этой стадии квест будет считаться пройденным (завершенным), и его скрипты не будут работать (т.е. напрягать комп).
2. Приоритет квеста - это приоритет при выборе топиков у перса. Чем выше приоритет квеста, тем скорее непись выберет для общения его топики. Кстати, топики квеста начинают "срабатывать",если квест уже начат, но не закончен.
3. Начать квест можно командой StartQuest <ID квеста>, а лучше setstage <ID квеста> <# стадии квеста>. Стадия может быть и без записи в дневнике.
Этой же командой продвигайся по всему квесту, меняя стадии. Эту и другие команды можно вызывать везде - и в скриптах, и в конце топиков, и как результирующую команду в скрипте стадии квеста.
4. Если нужно, чтобы квест начинался сразу после загрузки мода, то ставь галочку Start Game Enable.
5. Если в квесте предусмотрены переговоры с повторением топиков, то отметь галочкой Allow Repeated Conversation Topic. (аналогчино и с повторяющимися стадиями)
6. Цели квеста прописываются в соотвествующей закладке - Quest targets.
Там делай новую, выбирай цель и пиши условие, когда эта цель появится на компасе. Типа, getStage <ID квеста> <# стадии квеста> == 30. Т.е. эта цель будет на 30 стадии.
0

#5 User offline   Niazan Icon

  • Бармен
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 483
  • Регистрация: 10 Февраль 07

Отправлено 21 Август 2007 - 18:47

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

#6 User offline   nVirus Icon

  • Постоялец
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 237
  • Регистрация: 31 Август 07

Отправлено 22 Сентябрь 2007 - 23:55

Возможно кому то будет интересно
http://сайт-который-...а.ru/cs/tes4cs/
Если это уже есть на этом сайте пост можно удалить.

Тут есть полезные программы для тех кто хочет делать квесты:
http://сайт-который-...cles/util.shtml
0

#7 User offline   M@D Icon

  • Великий МАД!
  • PipPipPipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 000
  • Регистрация: 26 Ноябрь 07

Отправлено 27 Ноябрь 2007 - 14:13

Cам делаю скрипты по OSFM, ссылок здесь нигде не видел : http://forum.rumor.r...hp?topic=1201.0
здесь наиболее читабельная версия. Где-то там же в формате .rtf
0

#8 User offline   LEVIATHAN Icon

  • Бывалый
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 24 Январь 08

Отправлено 25 Январь 2008 - 17:54

У меня туту возник вопрос. Сам создаю свой первый мод, уже настрогал кучу локаций, и вот вопрос как, каким скриптом заставить НПС танцевать возле одной точки ( маркера ) по типу танцовщицы из таверны "3 пираньи" мода Закусочной. Сколько изучал эту танцорку в конструкторе, так и ничего не получилось :) .

Сообщение отредактировал LEVIATHAN: 25 Январь 2008 - 17:58

0

#9 User offline   Alexander Icon

  • Проживающий
  • PipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 394
  • Регистрация: 02 Апрель 07

  Отправлено 25 Январь 2008 - 18:41

По поводу "Quest Conditions" замечу, что, по моим наблюдениям, эти условия не относятся к доступности квеста вообще, а скорее всегда автоматом добавляются как условия ко всем топикам из этого квеста. Например, если указать, как во многих квестах, GetIsPlayableRace == 1, то, даже при отсутствии для какого-то топика из данного квеста условий вообще, система будет предлагать сгенерить звуковые файлы только для играбельных рас. Такие вещи могут оказаться полезными, если Вы добавляете "общую" фразу - слухи, приветствия, т.п. Потом при экспорте диалогов мода в файл (кстати, работает внятно только на CS 1.2) не будет лишних записей (для дремор и прочих неиграбельных рас).

View PostLEVIATHAN (25.1.2008, 16:54) писал:

У меня туту возник вопрос. Сам создаю свой первый мод, уже настрогал кучу локаций, и вот вопрос как, каким скриптом заставить НПС танцевать возле одной точки ( маркера ) по типу танцовщицы из таверны "3 пираньи" мода Закусочной. Сколько изучал эту танцорку в конструкторе, так и ничего не получилось :) .

Заставить скриптом выполнить подобную анимацию невозможно (по крайней мере, я не знаю). Делается же подобное так:
1. Надо найти файл анимации *.kf, которую Вы хотите, чтобы НПЦ исполнял
2. Поместить этого нпц в игровой мир (если он еще не там)
3. Убедиться, что у него есть время для "тусовки", т.е. рано или поздно в его пакетах поведения наступит пакет Wander (или, если пакетов нет вообще, добавить таковой).
4. Добавить idle-анимацию (тут описывать не буду, как делать, есть на Wiki), указав в её условиях, например,
GetIsID == этот персонаж
Можно еще указать GetCurrentAIProcedure != 4 - чтобы персонаж не дергался во время разговора. Если он (она) ничего особо кроме танцев делать не будет, то таких условий достаточно. Если будет - ставь свою анимацию как можно ниже в дереве, чтобы она не перекрывала другие (сидение, падение, прочие).
Если персонаж что-то делает, а после этого надо перейти сразу на анимацию бездействия (которую мы тут и заносили), вызови для него процедуру PickIdle - он (она) сразу перейдет на нужную анимацию, а не будет ждать несколько секунд. Это будет единственное место, где анимации можно помочь скриптом.
0

#10 User offline   LEVIATHAN Icon

  • Бывалый
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 24 Январь 08

Отправлено 26 Январь 2008 - 17:15

Цитата

Заставить скриптом выполнить подобную анимацию невозможно (по крайней мере, я не знаю). Делается же подобное так:
1. Надо найти файл анимации *.kf, которую Вы хотите, чтобы НПЦ исполнял
2. Поместить этого нпц в игровой мир (если он еще не там)
3. Убедиться, что у него есть время для "тусовки", т.е. рано или поздно в его пакетах поведения наступит пакет Wander (или, если пакетов нет вообще, добавить таковой).
4. Добавить idle-анимацию (тут описывать не буду, как делать, есть на Wiki), указав в её условиях, например,
GetIsID == этот персонаж
Можно еще указать GetCurrentAIProcedure != 4 - чтобы персонаж не дергался во время разговора. Если он (она) ничего особо кроме танцев делать не будет, то таких условий достаточно. Если будет - ставь свою анимацию как можно ниже в дереве, чтобы она не перекрывала другие (сидение, падение, прочие).
Если персонаж что-то делает, а после этого надо перейти сразу на анимацию бездействия (которую мы тут и заносили), вызови для него процедуру PickIdle - он (она) сразу перейдет на нужную анимацию, а не будет ждать несколько секунд. Это будет единственное место, где анимации можно помочь скриптом.



Спасибо помогло, теперь танцует как миленькая.


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

scn MusicBoxScript
short button
begin onactivate
MessageBox ”Какую песню желаете?”, ”n1”, ”n2”, ”n3”
Set button to getbuttonpressed
If button == 0
MessageBox ”Good”
Streammusic ”Data\Music\Special\a.mp3”
Endif
If button == 1
MessageBox ”Good”
Streammusic ”Data\Music\Special\b.mp3”
Endif
If button == 2
MessageBox ”Good”
Streammusic ”Data\Music\Special\c.mp3”
Endif
End

У кого нибудь есть какие соображения?

Сообщение отредактировал LEVIATHAN: 26 Январь 2008 - 17:17

0

#11 User offline   M@D Icon

  • Великий МАД!
  • PipPipPipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 000
  • Регистрация: 26 Ноябрь 07

Отправлено 26 Январь 2008 - 18:58

Функция getbuttonpressed, насколько я знаю, возвращает значение не сразу, а через несколько фреймов.
Т.е. надо сделать ещё блок OnActivate, где это и прописать...
0

#12 User offline   LEVIATHAN Icon

  • Бывалый
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 24 Январь 08

Отправлено 27 Январь 2008 - 20:49

Цитата

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

scn MusicBoxScript
short button
begin onactivate
MessageBox ”Какую песню желаете?”, ”n1”, ”n2”, ”n3”
Set button to getbuttonpressed
If button == 0
MessageBox ”Good”
Streammusic ”Data\Music\Special\a.mp3”
Endif
If button == 1
MessageBox ”Good”
Streammusic ”Data\Music\Special\b.mp3”
Endif
If button == 2
MessageBox ”Good”
Streammusic ”Data\Music\Special\c.mp3”
Endif
End

У кого нибудь есть какие соображения?





Цитата

Функция getbuttonpressed, насколько я знаю, возвращает значение не сразу, а через несколько фреймов.
Т.е. надо сделать ещё блок OnActivate, где это и прописать...



Не могу догнать :) . Ребят может отредактируем скрипт до играбельного состояния? :laugh:
0

#13 User offline   M@D Icon

  • Великий МАД!
  • PipPipPipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 000
  • Регистрация: 26 Ноябрь 07

Отправлено 27 Январь 2008 - 22:26

Цитата

Т.е. надо сделать ещё блок OnActivate, где это и прописать...

Упс! Натупил и не заметил. Я имел в виду сделать ещё блок GameMode, где и будет находиться getbuttonpressed.

скрипт, вроде бы, должен выглядеть как-то так:
scn MusicBoxScript
short button
short p

begin onactivate
if p==0
MessageBox ”Какую песню желаете?”, ”n1”, ”n2”, ”n3”
Set p to 1
endif
end

begin gameMode

if p==1
set button to getbuttonpressed
set p to 2
endif

if p==2

If button == 0
MessageBox ”Good”
Streammusic ”Data\Music\Special\a.mp3”
set p to 3
Endif
If button == 1
MessageBox ”Good”
Streammusic ”Data\Music\Special\b.mp3”
set p to 3
Endif
If button == 2
MessageBox ”Good”
Streammusic ”Data\Music\Special\c.mp3”
set p to 3
Endif

endif

End

Писал спонтанно, так что, если не сработает, пиши.
Если сам отладишь, все равно отпишись, чтоб я хоть знал, где я мыслю не так..
0

#14 User offline   LEVIATHAN Icon

  • Бывалый
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 24 Январь 08

Отправлено 28 Январь 2008 - 01:22

Цитата

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


Тэкс... В ходе тестирования выяснилось, что скрипт срабатывает только один раз, и музыка все равно не играет :laugh: . Сообщение "Хорошо" не появляется :) .

Скрипт в моде выглядит так;

scn MusicBoxScript
short button
short p

begin onactivate
if p==0
MessageBox ”Какую песню желаете?”, ”Эмоция”, ”Блюз”, ”От заката до рассвета”, “Майорка”, “Остров сокровищ”, “Урманга”
Set p to 1
endif
end

begin gameMode

if p==1
set button to getbuttonpressed
set p to 2
endif

if p==2

If button == 0
MessageBox ”Хорошо”
Streammusic ”Data\Music\Special\a.mp3”
set p to 3
Endif
If button == 1
MessageBox ”Ладно”
Streammusic ”Data\Music\Special\b.mp3”
set p to 3
Endif
If button == 2
MessageBox ”Уговорил”
Streammusic ”Data\Music\Special\c.mp3”
set p to 3
Endif
If button == 3
MessageBox ”Договорились”
Streammusic ”Data\Music\Special\d.mp3”
set p to 3
Endif
If button == 4
MessageBox ”Слушаюсь”
Streammusic ”Data\Music\Special\i.mp3”
set p to 3
Endif
If button == 5
MessageBox ”Так точно!”
Streammusic ”Data\Music\Special\f.mp3”
set p to 3
Endif

endif

End

Интересно почему MessageBox "Хорошо" не появляется?
0

#15 User offline   M@D Icon

  • Великий МАД!
  • PipPipPipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 000
  • Регистрация: 26 Ноябрь 07

Отправлено 28 Январь 2008 - 06:14

Значит, функция getbuttonpressed не возвращает значение, точнее, возвращает -1, т.е. кнопка не нажата... Скрипт и должен работать 1 раз, условием начала работы является p==0.

попробуй добавить блок:

if button == -1
set button to getbuttonpressed
set p to 2
endif

в то место, где идут схожие по условию блоки...
0

#16 User offline   LEVIATHAN Icon

  • Бывалый
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 24 Январь 08

Отправлено 28 Январь 2008 - 20:22

Теперь скрипт выглядит так;


scn MusicBoxScript
short button
short p

begin onactivate
if p==0
MessageBox ”Какую песню желаете?”, ”Эмоция”, ”Блюз”, ”От заката до рассвета”, “Майорка”, “Остров сокровищ”, “Урманга”
Set p to 1
endif
end

begin gameMode
if button == -1
set button to getbuttonpressed
set p to 2
endif
if p==1
set button to getbuttonpressed
set p to 2
endif

if p==2

If button == 0
MessageBox ”Хорошо”
Streammusic ”Data\Music\Special\a.mp3”
set p to 3
Endif
If button == 1
MessageBox ”Ладно”
Streammusic ”Data\Music\Special\b.mp3”
set p to 3
Endif
If button == 2
MessageBox ”Уговорил”
Streammusic ”Data\Music\Special\c.mp3”
set p to 3
Endif
If button == 3
MessageBox ”Договорились”
Streammusic ”Data\Music\Special\d.mp3”
set p to 3
Endif
If button == 4
MessageBox ”Слушаюсь”
Streammusic ”Data\Music\Special\i.mp3”
set p to 3
Endif
If button == 5
MessageBox ”Так точно!”
Streammusic ”Data\Music\Special\f.mp3”
set p to 3
Endif

endif

End


В игре скрипт ведет себя следующим образом:

При активации срабатывает любая музыка выбранная по условию скрипта :) , в процессе игры активатор больше не реагирует :laugh: , ( скрипт одноразовый, p == 0, а как это исправить? :e: )

В процессе игры выбранной композиции, быстрая загрузка срабатывает через раз, первый раз играет та же композицию, второй вылет в О.С. :)

В общем скрипт работает как надо, только его второй раз уже не используешь, и в процессе воспроизведения одной композиции, другая музыка незапустится ( p == 0 ?).

Но все равно равно что то же получилось :laugh: !!!
0

#17 User offline   M@D Icon

  • Великий МАД!
  • PipPipPipPipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 000
  • Регистрация: 26 Ноябрь 07

Отправлено 28 Январь 2008 - 22:18

Заработало? Замечательно..
С загрузками у меня и так проблемы, без всяких скриптовых тестов, в повседневной "жизни". Через раз вылетает..
Чтобы можно было запустить музыку ещё раз - просто исправь все фрагменты:

Цитата

set p to 3
на

Цитата

set p to 0
. Просто сначала не стал делать возможность повтора, т.к. у меня у самого была проблема с подобным скриптом не так давно..
Можно, кстати, сделать интереснее (может даже проще). Начинать проигрывать в любом случае "пустую" музыку, т.е. файл .mp3 без звуков. И при выборе песни включать источник звука или делать playsound3d. Так при приближении к твоей "Музыкальной коробке" музыка будет громче. Опять же, не проверял..
0

#18 User offline   Alexander Icon

  • Проживающий
  • PipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 394
  • Регистрация: 02 Апрель 07

  Отправлено 28 Январь 2008 - 22:31

View PostM@D (28.1.2008, 21:18) писал:

Заработало? Замечательно..
С загрузками у меня и так проблемы, без всяких скриптовых тестов, в повседневной "жизни". Через раз вылетает..
Чтобы можно было запустить музыку ещё раз - просто исправь все фрагменты: на . Просто сначала не стал делать возможность повтора, т.к. у меня у самого была проблема с подобным скриптом не так давно..
Можно, кстати, сделать интереснее (может даже проще). Начинать проигрывать в любом случае "пустую" музыку, т.е. файл .mp3 без звуков. И при выборе песни включать источник звука или делать playsound3d. Так при приближении к твоей "Музыкальной коробке" музыка будет громче. Опять же, не проверял..

StreamMusic функция глюкавая, даже на Вики это признают. А уж сами разработчики наверно про неё ответили бы: "Отвяжись, я её начал делать, а потом меня заставили копыта для лошадей рисовать".
Так что вылеты в ОС тут неизбежны по определению, и, если в каком-то случае их нет, значит, именно в этот раз что-то и сглючило. :)
Действительно, наверное лучше её вообще не использовать, а просто класть источник звука (Sound), если место стационарное, и включать его, когда надо. К тому же его можно спозиционировать в пространстве, и это только добавить достоверности, в отличие от StreamMusic, которая бубухает в колонках с одинаковой громкостью, независимо от перемещений игрока (вернее, ГГ).
0

#19 User offline   LEVIATHAN Icon

  • Бывалый
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 24 Январь 08

Отправлено 29 Январь 2008 - 00:15

Цитата

Заработало? Замечательно..


Мдя, спасибо сам бы не додумался :) . Скрипт работает как надо, пока одна мелодия не доиграет другая не запустится.

Я тут решил еще раз с анимацией поработать по типу танцовщицы. На этот раз жонглер Тейдил (wood elf) из Блисса. Ну в общем сделал как положено, распаковал архив островов, вставил НеПиСя в локацию, но вот загвоздка вышла. Анимация идет без шариков. Проверял 2 kf файла ( se_specialidle_juggling2, и sejuggling ) все равно без шариков. Просто как то не естественно смотрится жонглировать без шариков :laugh:
0

#20 User offline   Alexander Icon

  • Проживающий
  • PipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 394
  • Регистрация: 02 Апрель 07

  Отправлено 29 Январь 2008 - 00:31

View PostLEVIATHAN (28.1.2008, 23:15) писал:

Мдя, спасибо сам бы не додумался :) . Скрипт работает как надо, пока одна мелодия не доиграет другая не запустится.

Я тут решил еще раз с анимацией поработать по типу танцовщицы. На этот раз жонглер Тейдил (wood elf) из Блисса. Ну в общем сделал как положено, распаковал архив островов, вставил НеПиСя в локацию, но вот загвоздка вышла. Анимация идет без шариков. Проверял 2 kf файла ( se_specialidle_juggling2, и sejuggling ) все равно без шариков. Просто как то не естественно смотрится жонглировать без шариков :laugh:

Шарики надо добавить в AnimObjects (кажется, так называется эта группа в КС) и привязать их к твоей анимации. Так что ищи ещё и эти самые шарики, надо будет сделать их дубль и привязать дубль уже к твоей анимации.
0

Поделиться темой:


  • 19 Страниц +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
пользователей:0 гостей:1 скрытых пользователей:0