Главная Форум Файлы
Справка Сообщество Календарь Сообщения за день Поиск

Вернуться   Mafia-Game Forum > Mafia: The City Of Lost Heaven > Скриптинг
Расширенный поиск

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2020, 01:44   #41
Melhior вне форума Melhior
Аватар для Melhior
Mafia Modding Crew
Сообщений: 143
Репутация: 160
Melhior has a spectacular aura about Melhior has a spectacular aura about
Judge
Информация о репутации (Melhior)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Melhior / 160
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Когда-то делалось для СССР мода. Правда не помню рабочий ли это вариант.
Скрипт рассчитан на 4 радиостанции. Но это не точно.

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

Код:
dim_act 3

dim_flt 14

findactor 0,"Tommy"

findactor 1,"NULL"

citymusic_off

let flt[9]=0 // toggle fade1

let flt[10]=0 // toggle fade2

let flt[11]=0 // toggle fade3

let flt[12]=-1 // last radio

let flt[13]=0 //toggle stopped radio

label NotInCar

commandblock 0

//stream_getpos 0,5

//stream_destroy 0

//stream_getpos 1,6

//stream_destroy 1

//stream_getpos 2,7

//stream_destroy 2

//findnearactor 0,2,Car

getactorsdist 0,2,8

freeride_scoreset flt[11]

if flt[8]<5,-1,vol1

if flt[10]=0,-1,subvol1

if flt[9]=0,-1,vol1

stream_fadevol 0,1000,1,0.5

stream_fadevol 1,1000,1,0.5

stream_fadevol 2,1000,1,0.5

let flt[9]=1

goto vol4

label subvol1

stream_fadevol 0,1000,0.25,0.5

stream_fadevol 1,1000,0.25,0.5

stream_fadevol 2,1000,0.25,0.5

let flt[10]=0

goto vol4

label vol1

if flt[8]<15,-1,vol2

if flt[8]>5,-1,vol2

if flt[11]=0,-1,subvol2

if flt[10]=0,-1,vol2

stream_fadevol 0,1000,0.5,0.25

stream_fadevol 1,1000,0.5,0.25

stream_fadevol 2,1000,0.5,0.25

let flt[10]=1

goto vol4

label subvol2

stream_fadevol 0,1000,0,0.25

stream_fadevol 1,1000,0,0.25

stream_fadevol 2,1000,0,0.25

let flt[11]=0

goto vol4

label vol2

if flt[8]<30,-1,vol4

if flt[8]>15,-1,vol4

if flt[11]=0,-1,vol4

stream_fadevol 0,1000,0.25,0.01

stream_fadevol 1,1000,0.25,0.01

stream_fadevol 2,1000,0.25,0.01

let flt[11]=1

goto vol4

label vol4

if flt[8]>50,-1,gb

if flt[13]=0,-1,gb

stream_getpos 0,5

stream_destroy 0

stream_getpos 1,6

stream_destroy 1

stream_getpos 2,7

stream_destroy 2

let flt[13]=1

label gb

if flt[8]<50,-1,gb1

if flt[13]=1,-1,gb1

if flt[12]=0,-1,rad1

stream_create 0,"sounds/MUSIC/opr04KOJ.mp3"

stream_setloop 0, 1000

stream_setpos 0,5

stream_play 0

stream_fadevol 0,1,0.01,0.01

let flt[13]=0

label rad1

if flt[12]=1,-1,rad2

stream_create 1,"sounds/MUSIC/opr04UR3.mp3"

stream_setloop 1, 1000

stream_setpos 1,6

stream_play 1

stream_fadevol 1,1,0.01,0.01

let flt[13]=0

label rad2

if flt[12]=2,-1,gb1

stream_create 2,"sounds/MUSIC/opr04FYZ.mp3"

stream_setloop 2, 1000

stream_setpos 2,7

stream_play 2

stream_fadevol 2,1,0.01,0.01

let flt[13]=0

label gb1

compareownerwithex 0,1,NotInCar,-1

human_getowner 0,2

let flt[9]=0

let flt[10]=0

let flt[11]=0

if flt[12]=-1,-1,manualselect

stream_getpos 0,5

stream_destroy 0

stream_getpos 1,6

stream_destroy 1

stream_getpos 2,7

stream_destroy 2

rnd 4,3

if flt[4]=0,PreMusic1,-1

if flt[4]=1,PreMusic2,-1

if flt[4]=2,PreMusic3,-1

goto NoRadio

label manualselect

if flt[12]=0,Music1,-1

if flt[12]=1,Music2,-1

if flt[12]=2,Music3,-1

label NoRadio

commandblock 0

commandblock 1

let flt[12]=-1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,NoRadio

label PreMusic1

console_addtext 99970011

stream_create 0,"sounds/MUSIC/opr04KOJ.mp3"

stream_setloop 0, 1000

stream_setpos 0,5

stream_play 0

let flt[12]=0

commandblock 0

wait 100

label Music1

commandblock 0

commandblock 1

stream_fadevol 0,1,1,1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,Music1

stream_getpos 0,5

stream_destroy 0

label PreMusic2

console_addtext 99970012

stream_create 1,"sounds/MUSIC/opr04UR3.mp3"

stream_setloop 1, 1000

stream_setpos 1,6

stream_play 1

let flt[12]=1

commandblock 0

wait 100

label Music2

commandblock 0

commandblock 1

stream_fadevol 1,1,1,1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,Music2

stream_getpos 1,6

stream_destroy 1

label PreMusic3

console_addtext 99970013

stream_create 2,"sounds/MUSIC/opr04FYZ.mp3"

stream_setloop 2, 1000

stream_setpos 2,7

stream_play 2

let flt[12]=2

commandblock 0

wait 100

label Music3

commandblock 0

commandblock 1

stream_fadevol 2,1,1,1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,Music3

stream_getpos 2,7

stream_destroy 2

console_addtext 99970014

commandblock 0

wait 100

goto NoRadio
[свернуть]
__________________
Группа модостроя в ВК
https://vk.com/mafia_and_mafia2_modding
цитата
Поблагодарили: 3
Abradox (22.10.2020), Kaiser (06.10.2020), KlassenAS (06.10.2020)
Старый 06.10.2020, 06:52   #42
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от Abradox Посмотреть сообщение
это хорошо, но почему .ogg ? Можно сделать чтобы любые аудио-файлы в этой папке воспроизводились .mp3 .wav?

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

еще надо исключить работу скрипта в главном меню.
С ogg как-то само получилось )
Просто такой формат был в исходном скрипте, от которого я отталкивался, и я, в первую очередь, думал над тем, чтобы всё правильно работало, не до форматов было.
Надо глянуть, по-моему для city bars +, когда делал пианисту скрипт с заказом музыки, использовал mp3.
Но, кажется, игра понимала файлы не с любым битрейтом, были нюансы. А ogg в скрипте заиграл без вопросов.

Да, выбор трека можно рандомизировать.
Но учти, что все имена файлов прописываются в скрипте. Поэтому желательно знать, сколько треков будет, и дать им универсальные имена, типа radio01, radio02, radio ga-ga, radio goo-goo

Работа скрипта в главном меню исключена.
За этим следит та часть кода, которую дал GOLOD55

Цитата:
Сообщение от Melhior Посмотреть сообщение
Когда-то делалось для СССР мода. Правда не помню рабочий ли это вариант.
Скрипт рассчитан на 4 радиостанции. Но это не точно.

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

Код:
dim_act 3

dim_flt 14

findactor 0,"Tommy"

findactor 1,"NULL"

citymusic_off

let flt[9]=0 // toggle fade1

let flt[10]=0 // toggle fade2

let flt[11]=0 // toggle fade3

let flt[12]=-1 // last radio

let flt[13]=0 //toggle stopped radio

label NotInCar

commandblock 0

//stream_getpos 0,5

//stream_destroy 0

//stream_getpos 1,6

//stream_destroy 1

//stream_getpos 2,7

//stream_destroy 2

//findnearactor 0,2,Car

getactorsdist 0,2,8

freeride_scoreset flt[11]

if flt[8]<5,-1,vol1

if flt[10]=0,-1,subvol1

if flt[9]=0,-1,vol1

stream_fadevol 0,1000,1,0.5

stream_fadevol 1,1000,1,0.5

stream_fadevol 2,1000,1,0.5

let flt[9]=1

goto vol4

label subvol1

stream_fadevol 0,1000,0.25,0.5

stream_fadevol 1,1000,0.25,0.5

stream_fadevol 2,1000,0.25,0.5

let flt[10]=0

goto vol4

label vol1

if flt[8]<15,-1,vol2

if flt[8]>5,-1,vol2

if flt[11]=0,-1,subvol2

if flt[10]=0,-1,vol2

stream_fadevol 0,1000,0.5,0.25

stream_fadevol 1,1000,0.5,0.25

stream_fadevol 2,1000,0.5,0.25

let flt[10]=1

goto vol4

label subvol2

stream_fadevol 0,1000,0,0.25

stream_fadevol 1,1000,0,0.25

stream_fadevol 2,1000,0,0.25

let flt[11]=0

goto vol4

label vol2

if flt[8]<30,-1,vol4

if flt[8]>15,-1,vol4

if flt[11]=0,-1,vol4

stream_fadevol 0,1000,0.25,0.01

stream_fadevol 1,1000,0.25,0.01

stream_fadevol 2,1000,0.25,0.01

let flt[11]=1

goto vol4

label vol4

if flt[8]>50,-1,gb

if flt[13]=0,-1,gb

stream_getpos 0,5

stream_destroy 0

stream_getpos 1,6

stream_destroy 1

stream_getpos 2,7

stream_destroy 2

let flt[13]=1

label gb

if flt[8]<50,-1,gb1

if flt[13]=1,-1,gb1

if flt[12]=0,-1,rad1

stream_create 0,"sounds/MUSIC/opr04KOJ.mp3"

stream_setloop 0, 1000

stream_setpos 0,5

stream_play 0

stream_fadevol 0,1,0.01,0.01

let flt[13]=0

label rad1

if flt[12]=1,-1,rad2

stream_create 1,"sounds/MUSIC/opr04UR3.mp3"

stream_setloop 1, 1000

stream_setpos 1,6

stream_play 1

stream_fadevol 1,1,0.01,0.01

let flt[13]=0

label rad2

if flt[12]=2,-1,gb1

stream_create 2,"sounds/MUSIC/opr04FYZ.mp3"

stream_setloop 2, 1000

stream_setpos 2,7

stream_play 2

stream_fadevol 2,1,0.01,0.01

let flt[13]=0

label gb1

compareownerwithex 0,1,NotInCar,-1

human_getowner 0,2

let flt[9]=0

let flt[10]=0

let flt[11]=0

if flt[12]=-1,-1,manualselect

stream_getpos 0,5

stream_destroy 0

stream_getpos 1,6

stream_destroy 1

stream_getpos 2,7

stream_destroy 2

rnd 4,3

if flt[4]=0,PreMusic1,-1

if flt[4]=1,PreMusic2,-1

if flt[4]=2,PreMusic3,-1

goto NoRadio

label manualselect

if flt[12]=0,Music1,-1

if flt[12]=1,Music2,-1

if flt[12]=2,Music3,-1

label NoRadio

commandblock 0

commandblock 1

let flt[12]=-1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,NoRadio

label PreMusic1

console_addtext 99970011

stream_create 0,"sounds/MUSIC/opr04KOJ.mp3"

stream_setloop 0, 1000

stream_setpos 0,5

stream_play 0

let flt[12]=0

commandblock 0

wait 100

label Music1

commandblock 0

commandblock 1

stream_fadevol 0,1,1,1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,Music1

stream_getpos 0,5

stream_destroy 0

label PreMusic2

console_addtext 99970012

stream_create 1,"sounds/MUSIC/opr04UR3.mp3"

stream_setloop 1, 1000

stream_setpos 1,6

stream_play 1

let flt[12]=1

commandblock 0

wait 100

label Music2

commandblock 0

commandblock 1

stream_fadevol 1,1,1,1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,Music2

stream_getpos 1,6

stream_destroy 1

label PreMusic3

console_addtext 99970013

stream_create 2,"sounds/MUSIC/opr04FYZ.mp3"

stream_setloop 2, 1000

stream_setpos 2,7

stream_play 2

let flt[12]=2

commandblock 0

wait 100

label Music3

commandblock 0

commandblock 1

stream_fadevol 2,1,1,1

compareownerwithex 0,1,NotInCar,-1

ctrl_read 3,FIRE1

if flt[3]>0,-1,Music3

stream_getpos 2,7

stream_destroy 2

console_addtext 99970014

commandblock 0

wait 100

goto NoRadio
[свернуть]
О!, Спасибо, вечером я в нём покопаюсь.
Интересно, реализован здесь выбор радиостанции через выбор трека, в одном аудиопотоке, или через несколько параллельных потоков.
По идее, идеально будет сделать несколько параллельных аудиопотоков для радиостанций, с несколькими рандомизированными треками для каждой.
И надо будет выбор радиостанции к клавишам привязать.
Насколько я помню, пять лет назад приходилось довольствоваться только клавишами из тех, что в настройках дополнительного управления.
Сейчас появилось средство считывать в скрипте нажатие любой клавиши, или всё как раньше?

Ещё вопрос, пока я тут занимаюсь скриптописанием, кто-нибудь извлекает записи радио из Дефинитив эдишн?
Когда я буду делать выбор радиостанции и рандомизацию треков, мне желательно знать, сколько этих радиостанций и треков будет, чтобы не переписывать по 100500 раз.

UPD: Глянул, в SityBars+ я использовал вообще wav. B исключительно 22Khz, потому, что 44,1 или 48 KHz игра не воспроизводила. Почему я тогда не использовал mp3 - честно, хз. Но это не критично, с форматами можно и потом поиграться.
Сейчас главное алгоритм отладить, чтоб скрипт работал точно, как швейцарские часы.

UPD2: В скрипте, который дал Melhior, три радиостанции реализованы тремя параллельными аудиопотоками, по одному mp3 на каждый. Переключение осуществляется посредством того, что в одних потоках громкость убирается, в других прибавляется.

Последний раз редактировалось KlassenAS; 06.10.2020 в 14:08.
цитата
Поблагодарили: 2
Abradox (06.10.2020), EmptyBowl (07.10.2020)
Старый 06.10.2020, 15:10   #43
GOLOD55 вне форума GOLOD55
VIP
Сообщений: 100
Репутация: 152
GOLOD55 has a spectacular aura about GOLOD55 has a spectacular aura about
Thug
Информация о репутации (GOLOD55)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
GOLOD55 / 152
Thug
100
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
имейте в виду, что аудио_потоки запрошенные грузятся в память и занимают ее.
если счет пойдет на гигабайты то мб проблема.
цитата
Поблагодарили: 3
Abradox (22.10.2020), Kaiser (06.10.2020), KlassenAS (06.10.2020)
Старый 06.10.2020, 15:36   #44
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от GOLOD55 Посмотреть сообщение
имейте в виду, что аудио_потоки запрошенные грузятся в память и занимают ее.
если счет пойдет на гигабайты то мб проблема.
Ну, если у нас 3-4 радиостанции, то мы имеем 3-4 потока, размер каждого равен размеру загруженной аудиозаписи.
Если для каждой радиостанции у нас несколько записей с рандомной подгрузкой, то, чтобы начать воспроизведение другого трека пересоздаём поток командой Stream_Create. По идее, предыдущий трек при этом из памяти должен выгрузиться.
Если гигабайтные аудиозаписи не использовать, то и памяти должно расходоваться ровно столько, сколько весят эти 3 -4 трека.
Или я в чём-то ошибаюсь?
И ещё, изобретён ли за последние пять лет, способ считывать скриптом любые клавиши, а не только те, что прописаны в настройках упрвления?

Abradox
1 На какие клавиши будем назначать переключение радиостанций?
Я прям сейчас занимаюсь реализацией этого дела.
Предлагаю на W и S, при настройке управления по умолчанию. Т. е. Эти клавиши назначены как дополнительные при управлении персонажем.
2 Сколько радиостанций у нас будет?

Последний раз редактировалось KlassenAS; 06.10.2020 в 16:06.
цитата
Старый 06.10.2020, 16:18   #45
Firefox3860 вне форума Firefox3860
Аватар для Firefox3860
Mafia Modding Crew
Сообщений: 687
Репутация: 771
Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold
Priest
Информация о репутации (Firefox3860)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
Enforcer
260
Firefox3860 / 771
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Лучше назначать на те кнопки, которые не используются в управлении машиной - прыжок, приседание и т.д.
Насколько я знаю, способ считывания любых клавиш скриптом не изобретён.
цитата
Старый 06.10.2020, 18:13   #46
GOLOD55 вне форума GOLOD55
VIP
Сообщений: 100
Репутация: 152
GOLOD55 has a spectacular aura about GOLOD55 has a spectacular aura about
Thug
Информация о репутации (GOLOD55)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
GOLOD55 / 152
Thug
100
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Полагаю, стрим делетается из памяти при его дестрое.
Мда, команду для хнопичек че-то мы упустили из виду с Асмом в mse сделать.
цитата
Поблагодарил:
KlassenAS (06.10.2020)
Старый 06.10.2020, 19:46   #47
Abradox вне форума Abradox
Аватар для Abradox
Modding Crew
Сообщений: 2,758
Репутация: 1311
Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of Abradox has much to be proud of
Councilor
Информация о репутации (Abradox)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Abradox / 1311
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
W и S не надо! Нужно что-то типа F3 и F4
цитата
Старый 06.10.2020, 20:36   #48
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от Abradox Посмотреть сообщение
W и S не надо! Нужно что-то типа F3 и F4
Ну, если в настройках игры назначишь F3 и F4 в качестве дополнительных, для управления персонажем, то будут тебе F3 и F4.
Повторюсь: если в настройках игры клавиша не назначена ни на одну из функций, то скрипты её не видят.
Я использовал дополнительные вперёд и назад. При управлении машиной они не используются. У меня им соответствуют W и S. А у тебя может быть что угодно.

Цитата:
Сообщение от GOLOD55 Посмотреть сообщение
Полагаю, стрим делетается из памяти при его дестрое
Да, всё верно. Я проверил. Переменная, используемая в команде Stream_Create 1, не указывает команде, с каким идентификатором надо делать поток, а лишь хранит идентификатор этого потока. То есть, если мы два раза подряд напишем в скрипте:
Stream_Create 1
Stream_Create 1
То будет создан новый поток, его идентификатор сохранится в переменной, и идентификатор предыдущего потока мы потеряем, а сам поток в памяти останется.
Так что, если мы хотим один поток поменять на другой, старый поток дестроить надо обязательно.

Так же я выяснил, что если создать подряд несколько потоков, то их номера будут просто идти друг за другом, например, 132, 133, 134. Следовательно, мы можем через одну и ту же переменную отдавать команды разным потокам, меняя её значение. Для этого понадобятся ещё две, в которых мы запомним номера первого и последнего потока.

Благодаря этому у меня получилось сделать скрипт, легко изменяемый под любое количество потоков-радиостанций.
Пока переключение оставил W и S, при настройках, как на скринах.
Поменять можно и потом, в любой момент.
Неактивные "радиостанции" пока находятся просто на паузе. Потом их можно будет мютить, убирая громкость.
Так же, пока что, одной радиостанции соответствует один аудиофайл.

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

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

Затестил его, вроде работает без сбоев.
Собственно, сам скрипт:

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

Dim_Act 1
Dim_Flt 10
GetActivePlayer 0
Human_GetProperty 0,0,Energy
If Flt[0]=0,-1,dan_on
Act_SetState 100,Off
Label dan_on

Let Flt[0]=0 //логика
Let Flt[1]=0 //поток 00
Let Flt[2]=-1 //сиденье
Let Flt[3]=0 //ещё пригодится )
Let Flt[4]=0 //ещё пригодится )
Let Flt[5]=0 //Нажатие клавиши вперёд 1
Let Flt[6]=0 //Запоминаем последний поток
Let Flt[7]=0 //Запоминаем первый поток
Let Flt[8]=0 //ещё пригодится )
Let Flt[9]=0 //номер радиостанции 0-3

CommandBlock 1
Stream_Create 1,"radio\radio00.ogg"
Let Flt[7]=Flt[1]
Stream_Create 1,"radio\radio01.ogg"
Stream_Create 1,"radio\radio02.ogg"
Stream_Create 1,"radio\radio03.ogg"
Let Flt[6]=Flt[1]
Let Flt[1]=Flt[1]-3
CommandBlock 0

Label CHECK
CommandBlock 0
Wait 350
Human_GetSeatIdx 0,2
If Flt[2]=-1,CAR_OUT,CAR_IN

Label CAR_IN
Ctrl_Read 5,UP1
If Flt[5]=0,-1,RADIO_UP
Label READ_DOWN
Ctrl_Read 5,DOWN1
If Flt[5]=0,-1,RADIO_DOWN
Label CHECKPLAY
CommandBlock 1
If Flt[0]=0,-,CHECK
CityMusic_Off
Stream_Play 1
Let Flt[0]=1
CommandBlock 0
Wait 500
GoTo CHECK

Label CAR_OUT
CommandBlock 1
If Flt[0]=1,-,CHECK
Stream_Pause 1
CityMusic_On
Let Flt[0]=0
CommandBlock 0
Wait 500
GoTo CHECK

Label RADIO_UP
CommandBlock 1
Let Flt[5]=0
Stream_Pause 1
Let Flt[1]=Flt[1]+1
If Flt[1]>Flt[6],-1,CHANGEDUP
Let Flt[1]=Flt[1]-4
Label CHANGEDUP
Stream_Play 1
CommandBlock 0
GoTo READ_DOWN

Label RADIO_DOWN
CommandBlock 1
Let Flt[5]=0
Stream_Pause 1
Let Flt[1]=Flt[1]-1
If Flt[1]<Flt[7],-1,CHANGEDDOWN
Let Flt[1]=Flt[1]+4
Label CHANGEDDOWN
Stream_Play 1
CommandBlock 0
GoTo CHECKPLAY
[свернуть]

Тестим, находим баги, ругаемся на меня матом )
Позже проверю, любой ли mp3 может быть воспроизведён игрой.

UPD: Проверил, действительно, воспроизводит любой mp3, независимо от битрейта и частоты дискретизации. Так что я теперь хз, почему пять лет назад использовал wav. Наверное, потому, что тогда знал меньше )
Миниатюры
Нажмите на изображение для увеличения
Название: Game.exe Screenshot 2020.10.06 - 23.22.16.59.jpg
Просмотров: 623
Размер:	724.6 Кб
ID:	1373   Нажмите на изображение для увеличения
Название: Game.exe Screenshot 2020.10.06 - 22.26.55.95.jpg
Просмотров: 590
Размер:	746.2 Кб
ID:	1374  

Последний раз редактировалось KlassenAS; 06.10.2020 в 21:14.
цитата
Поблагодарили: 2
EmptyBowl (07.10.2020), Firefox3860 (06.10.2020)
Старый 06.10.2020, 21:25   #49
grandshot вне форума grandshot
Аватар для grandshot
#667e34
Сообщений: 1,247
Репутация: 979
grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold grandshot is a splendid one to behold
Hitman
Информация о репутации (grandshot)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
Enforcer
260
Priest
396
Snitch
780
grandshot / 979
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от KlassenAS Посмотреть сообщение
При управлении машиной они не используются. У меня им соответствуют W и S. А у тебя может быть что угодно.
Они используются при игре с контроллером, если на них назначить курки. Лучше назначить переключение на доп. клавишу Run \ Walk, тогда точно не будет коллизий.

Последний раз редактировалось grandshot; 06.10.2020 в 21:26.
цитата
Поблагодарил:
KlassenAS (06.10.2020)
Старый 06.10.2020, 21:52   #50
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от grandshot Посмотреть сообщение
Они используются при игре с контроллером, если на них назначить курки. Лучше назначить переключение на доп. клавишу Run \ Walk, тогда точно не будет коллизий.
Да, но использоваться по назначению они, при этом, будут только, если персонаж передвигается пешком. В машине они не используются, и переключение радио работает только в машине. Так что и так пересечений не будет.

Почему-то вдруг появился баг с непрошеным воспроизведением потоков при нажатии ESC, о котором упоминал GOLOD55.
Видать, придётся, всё-таки, мютить потоки, убирая громкость, а не ставить на паузу.
Щас попробую, посмотрю, что из этого выйдет.
цитата
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Регистрация
×
Чтобы оставлять на форуме Mafia-Game Forum сообщения, необходимо сначала зарегистрироваться.
Пожалуйста, укажите ваше имя пользователя, адрес электронной почты и прочую обязательную информацию о себе в форме ниже.
Имя:
Пароль / Адрес электронной почты
Пароль:
Подтвердите пароль:
Адрес электронной почты:
Подтвердите адрес:
Реферер
Если вы пришли на этот форум по совету одного из участников, то, пожалуйста, введите его имя пользователя.
Реферер:
Время на форуме может быть выставлено в соответствии с тем, где вы находитесь. Выберите свой часовой пояс из списка ниже.
Учитывать переход на летнее или зимнее время (DST).
Получать электронные письма
Время от времени администрация может посылать вам сообщения по электронной почте.

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

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

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