• Добро пожаловать, Гость. Войдите или зарегистрируйтесь.

Автор Тема: Помогите создать нужный скрипт!  (Прочитано 1199 раз)

Описание:

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Помогите создать нужный скрипт!
« : 12 Февраль, 2012, 16:30:12 »
0
Приветствую всех зашедших в эту тему! У меня не особо большой опыт в написании скриптов, поэтому скромно прошу помощи людей знающих. Для личных целей я создал коротенький скрипт, воспроизводящий мелодию через функцию playsound. Скриптом наделил игровой объект - тестовая метла в тестовой комнате. Подхожу к метле, активирую ее, играет мелодия, все отлично, вот тока играет она лишь в игровом режиме, а стоит войти в инвентарь или нажать эскейп, как звук прекращается. Есть ли возможность заставить аудио воспроизводиться дальше вне зависимости от смен игрового и меню режимов?

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #1 : 12 Февраль, 2012, 16:46:41 »
0
Есть ли возможность заставить аудио воспроизводиться дальше вне зависимости от смен игрового и меню режимов?
Замени PlaySound на StreamMusic "Data\...\AAA.mp3"
Будьте осторожны в своих желаниях, они могут исполниться!
Награды За огромные знания и желание делиться ими с форумчанами

Оффлайн defmotion3

  • *
  • Сообщений: 165
  • Репутация: 0.1
  • Пол: Мужской
    • Просмотр профиля
Re: Помогите создать нужный скрипт!
« Ответ #2 : 12 Февраль, 2012, 17:14:40 »
0
Смысл такой надо создать квест с высоким приоритетом

навесить на него скрипт игрового режима:
(в этом скрипте поставите условия для музыки, например играть если в определенной локации и контроль по времени - длительност музыки),

еще надо проверять игровые меню - инвентарь, загрузка

например
begin MenuMode 1007
.......

Вот как это выглядит в ДоА (скрипт повешен на дверь вместо квеста, но лучше сделать квест)
scn aa2DoorOutTavernScr
float timer

begin onActivate
if IsActionRef Player == 1
set aaaInn7WaysRank.MusicInPir to 0
StreamMusic "data\music\7roads\0.mp3"
StreamMusic Public
endif
activate
end

begin gameMode
if aaaInn7WaysRank.MusicInPir == 1   
   if aaaInn7WaysRank.init == 0
   set timer to 257
   set aaaInn7WaysRank.init to 1
StreamMusic "data\music\7roads\1.mp3"
     else

      if timer > 0
         set timer to timer - getSecondsPassed
    else

             set aaaInn7WaysRank.init to 0
      endif
   endif
endif
end


begin onLoad
if Player.GetInCell aaaPiratesTavernTSS01 == 1
if Player.IsInInterior == 1
   set aaaInn7WaysRank.init to 0
endif
endif
end

begin MenuMode 1007
   set aaaInn7WaysRank.init to 0
end

begin MenuMode 1
   set aaaInn7WaysRank.init to 0
end

begin MenuMode 1013
   set aaaInn7WaysRank.init to 0
end
« Последнее редактирование: 12 Февраль, 2012, 17:18:42 от defmotion3 »

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #3 : 12 Февраль, 2012, 17:25:12 »
0
А с функцией streammusic все будет в порядке? Просто я слыхал, что эту самую фунцию многоуважаемые создатели из Бетесда как раз не доработали. Ладно опробую и напишу потом.

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #4 : 12 Февраль, 2012, 21:14:56 »
0
defmotion3, этот скрипт будет работать весьма некорректно, да и у человека совсем другие условия звучания музыки.
Вся проблема в том, что StreamMusic не выключается ни какой командой, вызов же команды StreamMusic Public только лиш перезапустит звучавшую музыку до того, которая была вызвана предыдущей командой StreamMusic. Т.е. пока трек, вызванный этой командой, сам не закончится, любое действие всего лиш заново перезапустит этот трек.
Единственно, что может прервать эту команду - музыка боя или смена локации с типом музыки не дефолт. Если есть необходимость принудительно прервать музыку, вызванную командой StreamMusic, надо на 5-6 фреймов вызвать бой актёра с игроком. Т.е. местного или призванного/перемещённого актёра заставить напасть на ГГ, а через 5-6 фреймов прервать бой (призванного/перемещённого актёра отправить назад). Это вообще не заметишь в игре, даже музыка боя звучать не начнёт, но запущенный трек выключится.

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

Оффлайн defmotion3

  • *
  • Сообщений: 165
  • Репутация: 0.1
  • Пол: Мужской
    • Просмотр профиля
Re: Помогите создать нужный скрипт!
« Ответ #5 : 12 Февраль, 2012, 21:51:41 »
0
Естественно я не знаю всех тонкостей того , что человек там делает, пример для наглядности синтаксиса, т.е. как оно бывает.

А для смены музыки там достаточно четко прописать условия и вызвать какое -нибудь меню.
В ДоА все четко работает - для своей локации , своя музыка, там как раз специально боролись, с назойливостью дефолтных музыкальных тем, а не авторских...

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #6 : 12 Февраль, 2012, 22:57:27 »
0
Я опробовал совет AleksTirex как самый простой. Но, увы, не поимел желанного результата. Замена функции на streammusic привела лишь к повторному проигрыванию того трека, который играл только что. Прописывал путь чётко - в этом косяка быть не может. Ради теста пробовал прописывать просто streammusic dungeon, но даже это не сработало. Моя тестовая комната (zClothesTest) видимо имеет параметр проигрывания музыки default, при котором данная ф-ция не робит. Там как-то можно исправить положение при помощи прописывания streammusic random перед всем остальным. А как - чёрт его знает.

В свете последнего сообщения от defmotion3 хочу раскрыть причины написания нужного мне скрипта. Я преследую ту же самую цель - поместить в локации уникальные треки, которые проигрывались бы в режиме меню, не сбивались и заканчивались при сбрасывании ячейки. Хочу узнать что это за "ДоА" и как можно увидеть эту работу воочию!

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #7 : 12 Февраль, 2012, 23:00:00 »
0
Этот скрипт имитирует функцию PlaySound, но с выключением фоновой музыки Обливиона. При вызове основных меню, трек перезапускается с самого начала, как при PlaySound.

Цитировать (выделенное)
Есть ли возможность заставить аудио воспроизводиться дальше вне зависимости от смен игрового и меню режимов?
Для этого данный принцип не подойдёт, надо наоборот сделать, например:

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

begin onActivate
if IsActionRef Player
StreamMusic "data\...\0.mp3"
endif
activate
end
********************

Для простого циклического воспроизведения, при котором вместо обливионовкой музыки будет играть своя:

float timer

begin menuMode
if IsPlayerMovingIntoNewSpace || menuMode 1007
set timer to 0
return
elseif timer > 0
set timer to timer - GetSecondsPassed
endif
end

begin gameMode
if getInSameCell player
if timer <= 0
set timer to 420 ; время звучания данного трека
StreamMusic "Data\...\0.mp3"
else
set timer to timer - GetSecondsPassed
endIf
endif
end
*********************

Для циклического звучания своей музыки со стартовым включением (активация метлы):

short flag
float timer

begin menuMode
if IsPlayerMovingIntoNewSpace || menuMode 1007
set timer to 0
set flag to 0
return
elseif timer > 0
set timer to timer - GetSecondsPassed
endif
end

begin onActivate
if IsActionRef Player && flag < 1
set flag to 1
set timer to 0
endif
activate
end

begin gameMode
if getInSameCell player && flag == 1
if timer <= 0
set timer to 420 ; время звучания данного трека
StreamMusic "Data\...\0.mp3"
else
set timer to timer - GetSecondsPassed
endIf
endif
end
**************************************

Во всех вариантах звучит своя музыка вместо обливионовкой, в любом режиме. Чтобы всё работало, достаточно поменять тип музыки в этой локации на Public (в настройках этой локации).

Цитировать (выделенное)
Там как-то можно исправить положение при помощи прописывания streammusic random перед всем остальным
Никак, не будет работать! При типе музыки default данная команда не работает вообще. Проще сменить тип музыки, ведь локация твоя, ты ничего не испортишь этим.

Цитировать (выделенное)
и заканчивались при сбрасывании ячейки
Для этого надо знать: куда выходят двери из этой ячейки? Если в другие ячейки (интерьер/экстерьер) с типом музыки не дефолт, то ничего не надо делать, само сбросится. Если выходят в ячейки с типом музыки дефолт, то надо принудительно сбрасывать. Для этог надо... (смотри пост немного выше).
« Последнее редактирование: 12 Февраль, 2012, 23:19:35 от AleksTirex »
Будьте осторожны в своих желаниях, они могут исполниться!
Награды За огромные знания и желание делиться ими с форумчанами

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #8 : 25 Февраль, 2012, 15:02:48 »
0
Попробовал скрипт для простого циклического воспроизведения. Создал дверь из своей комнаты в другую и поставил заскриптованые мётлы в разные комнаты с двумя скриптами и разной музыкой. Сменил дефаулт на паблик. Получилось! Вот тока, когда я возвращаюсь из второй комнаты обратно в первую, то музон повторно не играет. Начинает играть просто случайный паблик :( Для меня такие скрипты слижком сложные, поэтому я самостоятельно править не стал. Нужно постоянное проигрывание приписываемой к ячейке мелодии такое, чтобы при очередной загрузке этой ячейки музыка играла снова. Как это сделать, что поменять?

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #9 : 01 Март, 2012, 16:55:50 »
0
Попробовал скрипт для простого циклического воспроизведения. Создал дверь из своей комнаты в другую и поставил заскриптованые мётлы в разные комнаты с двумя скриптами и разной музыкой. Сменил дефаулт на паблик. Получилось! Вот тока, когда я возвращаюсь из второй комнаты обратно в первую, то музон повторно не играет. Начинает играть просто случайный паблик :( Для меня такие скрипты слижком сложные, поэтому я самостоятельно править не стал. Нужно постоянное проигрывание приписываемой к ячейке мелодии такое, чтобы при очередной загрузке этой ячейки музыка играла снова. Как это сделать, что поменять?
Тогда повесь этот скрипт не на метлу, а на дверь в другую комнату (в другой комнате сделай так же, и не забудь, что дверь должна быть со своим ID):

float timer

begin onActivate
    If IsActionRef player
        set timer to 1
    endif
    activate
end

begin menuMode
    if IsPlayerMovingIntoNewSpace || menuMode 1007
        set timer to 1
        return
    elseif timer > 0
        set timer to timer - GetSecondsPassed
    endif
end

begin gameMode
    if getInSameCell player
        if timer <= 0
            set timer to 420 ; время звучания данного трека
            StreamMusic "Data\...\0.mp3"
        else
            set timer to timer - GetSecondsPassed
        endIf
    endif
end
Будьте осторожны в своих желаниях, они могут исполниться!
Награды За огромные знания и желание делиться ими с форумчанами

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #10 : 01 Март, 2012, 19:51:24 »
0
Отлично! Работает! Остался только один маленький штрих. Нужно сделать так, чтоб при выходе в экстериор из локации с заскриптованной дверью мелодия прекращалась. И это пожалуй все, что мне нужно для полного счастья.

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #11 : 02 Март, 2012, 04:12:30 »
0
Отлично! Работает! Остался только один маленький штрих. Нужно сделать так, чтоб при выходе в экстериор из локации с заскриптованной дверью мелодия прекращалась. И это пожалуй все, что мне нужно для полного счастья.
Да нет, не маленький штришок. Как я уже говорил, музыку можно выключить только режимом боя или сменой локации с типом музыки не дефолт.
Если в экстерьере тип музыки дефолт, то надо сделать так:
1. сделать непися, который всегда будет сидеть в этом помещении и повесить на него референс (ID_NPC_Ref)
2. на дверь с музыкальным скриптом повесить референс (ID_Door_Ref), чтобы сбрасывать таймер.
3. сделать свою дверь (со своим ID), которая выходит на улицу и повесить на неё скрипт.
************************
scn имя_скрипта
short next

begin onActivate
    If IsActionRef player
        set next to 1
    else
       activate
    endif
end

begin gameMode
    if next
        if next == 1
            set ID_Door_Ref.timer to 1
            ID_NPC_Ref.StartCombat player
            set next to 2
        elseif next > 1 && next < 5
            set next to next + 1
        elseif next == 5
            ID_NPC_Ref.SCAOnActor
            ID_NPC_Ref.StopCombat
            set next to 6
        elseif next == 6
            set next to 0
            activate player
        endIf
    endif
end
********************

ID_Door_Ref - референс двери, на которой висит скрипт музыки.
ID_NPC_Ref - референс актёра (нрс/животное)

Весь процесс происходит за 6 фреймов, поэтому это совсем незаметно.
Будьте осторожны в своих желаниях, они могут исполниться!
Награды За огромные знания и желание делиться ими с форумчанами

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #12 : 29 Май, 2012, 23:52:24 »
0
После длительного отсутствия решил продолжить тему. Вариант с остановкой музыки из предыдущего сообщения решил пока опустить. Теперь задача состоит в том, чтобы вставленные мелодии играли в независимости от активации врага. Я так полагаю, что это скорее всего невозможно, а если боевая музыка будет блокировать вписанные треки, да еще если и взять в расчет то, что после битвы вписанная мелодия не возвращается, то смысл создания подобного проекта пропадает напрочь :cray: Когда-то давно я вставлял в локации обыкновенные лууп-саунды, которые проигрывали те или иные треки, а оригинальное музыкальное сопровождение просто сводил на нуль в опциях. Было здорово и предельно просто, но я так и не смирился с мыслью, что всякие контейнеры, диалоги и меню будут постоянно срывать трек и при возврате в игру он будет проигрываться заного. Может есть способ сделать что-нибудь через звуковые файлы, закинутые прямо в ячейку?

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #13 : 30 Май, 2012, 17:55:55 »
0
чтобы вставленные мелодии играли в независимости от активации врага
Это невозможно, боевая музыка в Обливионе приоритетная, при начале боя однозначно она включится и заменит твою вставленную.
Но можно её "заменить", например заткнуть вообще (зациклить команду StreamMusic ), а в это время запустить свою музыку боя через PlaySound. Тогда не будет дефолтной музыки боя и будет звучать своя боевая музыка.

Цитировать (выделенное)
но я так и не смирился с мыслью, что всякие контейнеры, диалоги и меню будут постоянно срывать трек и при возврате в игру он будет проигрываться заного
Если музыка запущена через команду StreamMusic, то она не будет прерываться в режиме меню, т.е. при активации контейнера и т.п.
Будьте осторожны в своих желаниях, они могут исполниться!
Награды За огромные знания и желание делиться ими с форумчанами

Оффлайн DaoS

  • *
  • Сообщений: 8
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #14 : 30 Май, 2012, 19:39:16 »
0
Хорошо, оставим дефолтную музыку боя. Тогда, как должен выглядеть скрипт, который будет возвращать трек от стрим мюзик после завершения поединка? Это самое главное.

Оффлайн AleksTirex

  • *
  • *
  • Сообщений: 529
  • Репутация: 57.3
  • Пол: Мужской
    • Просмотр профиля
    • Email
Re: Помогите создать нужный скрипт!
« Ответ #15 : 30 Май, 2012, 20:15:14 »
0
Хорошо, оставим дефолтную музыку боя. Тогда, как должен выглядеть скрипт, который будет возвращать трек от стрим мюзик после завершения поединка? Это самое главное.
Точно так же, как было написано выше (в предыдущих постах). Чтобы музыка после боя опять продолжала звучать, можно в скрипт "Для циклического звучания своей музыки со стартовым включением (активация метлы) " надо добавить:

begin gameMode
if getInSameCell player && flag == 1
if player.IsInCombat && ID_NPC_Ref.IsInCombat != 1
set timer to 0
return
endif

if timer <= 0
set timer to 420 ; время звучания данного трека
StreamMusic "Data\...\0.mp3"
else
set timer to timer - GetSecondsPassed
endIf
endif
end

Где ID_NPC_Ref референс того актёра (непись или кричер), который работает на выключение музыки. (ID_NPC_Ref из скрипта двери , которая выходит на улицу.

В таком варианте музыка опять начнётся после завершения боя.
Будьте осторожны в своих желаниях, они могут исполниться!
Награды За огромные знания и желание делиться ими с форумчанами

Теги:
 

Помогите плиииз написать скрипт отключающий свет

Автор VintРаздел Скриптинг под TES IV

Ответов: 3
Просмотров: 2565
Последний ответ 06 Март, 2008, 19:09:58
от LiLu
Помогите написать скрипт для кольца!!!!!!

Автор GanibalSSVРаздел Скриптинг под TES IV

Ответов: 1
Просмотров: 2392
Последний ответ 31 Май, 2008, 23:49:20
от GanibalSSV
Ребят помогите написать скрипт!

Автор onizukaРаздел Мастерская TES IV

Ответов: 2
Просмотров: 1493
Последний ответ 21 Февраль, 2009, 15:32:06
от onizuka
Помогите скомпилировать скрипт

Автор TheGreenРаздел Мастерская TES IV

Ответов: 0
Просмотров: 822
Последний ответ 17 Октябрь, 2010, 01:39:19
от TheGreen
Помогите создать мир

Автор Romas BondРаздел Мастерская TES IV

Ответов: 6
Просмотров: 845
Последний ответ 28 Август, 2012, 12:56:05
от Romas Bond
Помогите написать скрипт

Автор gloomdaemonРаздел Скриптинг под TES V

Ответов: 6
Просмотров: 476
Последний ответ 06 Март, 2015, 21:42:17
от gloomdaemon
Помогите разобраться

Автор GARRETTРаздел TES III: Morrowind, Tribunal, Bloodmoon

Ответов: 1
Просмотров: 3339
Последний ответ 19 Август, 2005, 14:51:39
от GL.Sam
Помогите! Не могу молот разыскать

Автор КсенияРаздел TES III: Morrowind, Tribunal, Bloodmoon

Ответов: 5
Просмотров: 3934
Последний ответ 07 Январь, 2007, 15:44:48
от GL.Sam
Скрипт Заклинания На Misc-объекте

Автор GL.SamРаздел Архив готовых скриптовых решений

Ответов: 0
Просмотров: 2057
Последний ответ 08 Январь, 2007, 03:58:49
от GL.Sam
Скрипт Сна.

Автор NarzavesРаздел Скриптинг под TES IV

Ответов: 0
Просмотров: 2616
Последний ответ 08 Апрель, 2007, 22:17:59
от Narzaves

Поиск

 
Top
SimplePortal 2.3.5 © 2008-2012, SimplePortal