Mafia-Game Forum

Mafia-Game Forum (https://mafia-game.ru/forum/index.php)
-   Скриптинг (https://mafia-game.ru/forum/forumdisplay.php?f=10)
-   -   Скрипт автомобильного радио (https://mafia-game.ru/forum/showthread.php?t=1047)

Firefox3860 04.10.2020 20:24

Kaiser, пробелы убрал

Kaiser 04.10.2020 20:28

2 KlassenAS

На самом деле очень круто получилось, все прекрасно работает. Проверил неоднократно. Спасибо тебе большое, с твоего разрешения, использую этот скрипт в своем дополнении к Angel Pine Mod.

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

KlassenAS 04.10.2020 20:29

Цитата:

Сообщение от Firefox3860 (Сообщение 12211)
Kaiser, пробелы убрал

Это у меня со второй вышки привычка осталась, когда Delphi изучал. С пробелами и заглавными буквами читаемость кода улучшается, переменные и операторы не сливаются в единый поток. Delphi к пробелам лоялен, а вот движок Мафии закапризничал )

Цитата:

Сообщение от Kaiser (Сообщение 12213)
п.с.Плохо только то, что скрипт постоянно сначала начинается, при каждой очередной посадке в автомобиль. Так наверное никогда радио до конца не дослушать))).

По идее, есть ещё команда Stream_Pause
Так что, можно заморочиться и при выходе из машины паузить скрипт. Ввести дополнительные переменные для отслеживания проигрываемого стрима на паузе, чтобы не создавать заново и не дестроить его лишний раз. Отслеживать окончание воспроизведения и перезапускать.
Но тогда возникает вопрос: не появится ли баг с ненужным воспроизведением при нажатии ESC, о котором упомянул GOLOD55?

Firefox3860 04.10.2020 20:36

Цитата:

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

Ага, а я привык без пробелов лепить :) Мне кажется, в выражениях Flt[х] не прокатил пробел.

Цитата:

Сообщение от Kaiser (Сообщение 12213)
Плохо только то, что скрипт постоянно сначала начинается, при каждой очередной посадке в автомобиль. Так наверное никогда радио до конца не дослушать))).

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

KlassenAS 04.10.2020 20:40

Цитата:

Сообщение от Firefox3860 (Сообщение 12215)
А может кто-нибудь знает, можно ли такой стрим на паузу ставить или вообще отключать звук на время?

Только что предыдущее сообщение отредактировал, ответив на этот вопрос )

Ну-ка, попробуй такой вариант:

Развернуть для просмотра

Dim_Act 2
Dim_Flt 3
GetActivePlayer 0
FindActor 1, "fire"

Let Flt[0]=0
Let Flt[1]=0
Let Flt[2]=0 //Для паузы

Label CHECK
Wait 100
CompareOwnerWithEx 0,1,-,CAR_OUT

If Flt[0]=0,-,CHECK
CityMusic_Off
If Flt[2]=0,-1,ALREADYCREATED //Проверяем, создан ли уже поток, вдруг он на паузе
Stream_Create 1, "sounds\music\fireradio.ogg"
Label ALREADYCREATED //Поток уже создан
Stream_Play 1
Let Flt[0]=1
Let Flt[2]=0
Wait 2000
GoTo CHECK

Label CAR_OUT
If Flt[0]=1,-,CHECK
Stream_Pause 1
Let Flt[2]=1 //Запоминаем, что на паузе
CityMusic_On
Let Flt[0]=0
Wait 2000
GoTo CHECK
[свернуть]


Теперь он должен ставить на паузу и возобновлять воспроизведение.
Проверь, нет ли бага с клавишей ESC, когда аудиопоток на паузе.
Пока простой вариант, без проверки окончания воспроизведения.

Kaiser 04.10.2020 21:08

2 KlassenAS

Я проверил. Все работает!!! Спасибо тебе огромное, теперь у меня в дополнение будет прям идеальное радио. Все отлично! Выходишь из машины, радио выключается, садишься в машину, продолжается с того момента, когда ты вышел из автомобиля. Я как раз не успел радио запихнуть в ЭП. Теперь выпущу в виде дополнения, в РидМи укажу, что скрипт твой.

KlassenAS 04.10.2020 21:11

Цитата:

Сообщение от Kaiser (Сообщение 12217)
2 KlassenAS

Я проверил. Все работает!!!

1 А проверил, нет ли бага с ESC?
2 Если работает без багов, то его ещё доделать надо ) Чтобы по окончании мелодии начинал воспроизведение заново. Он, по логике, не должен сам понимать, что песня закончилась. Доиграл, - и всё )
3 И вообще, тебе что, хватает одной мелодии? Давай, заморочимся, чтобы несколько было, с рандомным воспроизведением )

Kaiser 04.10.2020 21:17

1. Нет. Сейчас проверю. (Все работает нормально).
2. А ты можешь зациклить воспроизведение?
3. Там не одна песня. Там на час музыки и болтовни. Как выйдет дополнение, зацени)))

KlassenAS 04.10.2020 21:23

Цитата:

Сообщение от Kaiser (Сообщение 12220)
2. А ты можешь зациклить воспроизведение?

Для этого тоже команда есть ) Stream_SetLoop x,y

Цитата:

Сообщение от Kaiser (Сообщение 12220)
3. Там не одна песня. Там на час музыки и болтовни. Как выйдет дополнение, зацени)))

А, ну если там целый радиоэфир, то это ж совсем другой калинкор )

Вот тебе с зацикливанием, всего одну команду дописал:

Развернуть для просмотра

Dim_Act 2
Dim_Flt 3
GetActivePlayer 0
FindActor 1, "fire"

Let Flt[0]=0
Let Flt[1]=0
Let Flt[2]=0 //Для паузы

Label CHECK
Wait 100
CompareOwnerWithEx 0,1,-,CAR_OUT

If Flt[0]=0,-,CHECK
CityMusic_Off
If Flt[2]=0,-1,ALREADYCREATED //Проверяем, создан ли уже поток, вдруг он на паузе
Stream_Create 1, "sounds\music\fireradio.ogg"
Stream_SetLoop 1,1 //Зацикливаем
Label ALREADYCREATED //Поток уже создан
Stream_Play 1
Let Flt[0]=1
Let Flt[2]=0
Wait 2000
GoTo CHECK

Label CAR_OUT
If Flt[0]=1,-,CHECK
Stream_Pause 1
Let Flt[2]=1 //Запоминаем, что на паузе
CityMusic_On
Let Flt[0]=0
Wait 2000
GoTo CHECK
[свернуть]

Kaiser 04.10.2020 21:26

Блин, ну теперь надо час играть, чтобы посмотреть, работает ли воспроизведение)) Сегодня точно тебе не дам ответ)


Текущее время: 13:11. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot