|
|||||||||||||||||
|
|||||||||||||||||
|
|
Ответ |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
![]() |
#1 | ||
Mafia Modding Crew Сообщений: 229
Репутация: 241
![]() ![]() ![]()
Judge
|
Ребята! Коллеги! Друзья!
Помогите разобраться со скриптом пожалуйста. Намедни мне Фаерфокс прислал один скрипт, который к сожалению, нормально отказался работать. И мы не можем понять почему. На деле происходит следующее: 1. Я сажусь в авто, городская музыка выключается и включается радио. 2. Я выхожу из авто, радио продолжает играть, хотя должно выключаться. 3. Я снова сажусь в авто и радио начинает играть сначала. Фактически, радио должно включаться при посадке в авто и выключаться при выходе из него. Развернуть для просмотраdim_act 2 dim_frm 1 dim_flt 5 findactor 0, "Tommy" findactor 1, "fire" let flt[0]=0 label 1 wait 100 compareownerwithex 0, 1, 101, 102 label 101 if flt[0]=1,-,1 citymusic_off stream_create 0, "sounds\music\fireradio.ogg" stream_play 0 wait 2000 let flt[0]=0 goto 1 label 102 if flt[0]=0,-,1 stream_stop 0 citymusic_on wait 2000 let flt[0]=1 goto 1 [свернуть]
__________________
Моя моддинговая страничка: https://vk.com/kaiser_edition |
||
цитата |
![]() |
#2 | ||
Senior Member Сообщений: 341
Репутация: 285
![]() ![]() ![]()
Enforcer
|
У тебя проблема с присвоением значения переменой flt[0]
Проследи логику: Переменная равна 0 Далее проверяем наличие Тома в машине. И смотрим значение переменной. 1 Томми в машине: Если переменная 0 - музыка не играет, включить и присвоить ей 1 если переменная 1 - музыка уже играет, ничего делать не нужно 2 Томми не в машине Если переменная 0 - музыка не играет, ничего делать не нужно Если переменная 1 - выключить музыку и присвоить переменной 0 И вот в этом присвоении переменных, вроде, путаница затесалась. Во-первых, если я не ошибаюсь, номер аудиопотока может быть одновременно и переменной. Тогда stream_create 0 и stream_play 0 обращаются к переменной flt[0], используемой для логики включения/выключения. Возникает конфликт, ведь значение переменной меняется и ты пытаешься остановить не тот аудиопоток, который запустил. Попробуй использовать вторую переменную: let flt[1]=0 И через неё упралять аудиопотоком: stream_create 1 stream_play 1 stream_stop 1 Должно помочь, вроде. Также стоит проверить сравнение условий включения/выключения Под лабелом 101 сделай if flt[0]=0,-,1 let flt[0]=1 Под лабелом 102 сделай if flt[0]=1,-,1 let flt[0]=0 Так больше будет соответствовать логике скрипта. Вместо findactor nn, "Tommy" лучше использовать getactiveplayer nn, эта команда универсальна и не привязана к используемой модели персонажа. И ещё я не понял, что это за актор "fire"? У тебя радио будет включатся только если Томми садится в одну конкретную машину? Почему бы, в принципе, не проверить его нахождение в любой машине? Используешь ещё одну переменную. Присваиваешь ей вначале скрипта let flt[2]=-1 И запрашиваешь у игры номер сиденья в машине, на котором сидит Томми: Human_GetSeatidx 0,2 (актор чела, переменная с номером сиденья) И дальше проверяешь значение переменной: If Flt[2]=-1,102,101 Если переменная осталась равна -1, чел не в машине, идём на метку 102 Если переменная изменилась, чел в машине, идём на метку 101. Ладно, я тебе щас по-своему скрипт напишу, и всё ) И фреймы в скрипте не используются, их можно не объявлять Развернуть для просмотраDim_Act 2 //Два актора Dim_Flt 3 //Три переменных GetActivePlayer 0 //Получаем актора игрока Let Flt[0]=0 //Переменная для логики вкл/выкл Let Flt[1]=0 //Переменная для аудиопотока Let Flt[2]=-1 //Переменная для сидения в машине Label CHECK Wait 100 Human_GetSeatIdx 0,2 //Запрашиваем номер сиденья If Flt[2]=-1,CAR_OUT,-1 //Если получили, идём дальше, если не получили, идём к метке CAR_OUT If Flt[0]=0,-,CHECK //Если музыка не играет, идём дальше, иначе возвращаемся к проверке CityMusic_Off Stream_Create 1, "sounds\music\fireradio.ogg" Stream_Play 1 Let Flt[0]=1 //Запоминаем, что музыка играет Wait 2000 //Ждём GoTo CHECK //Возвращаемся к проверке Label CAR_OUT //Если не в машине If Flt[0]=1,-,CHECK //Если музыка играет, идём дальше, иначе возвращаемся к проверке Stream_Stop 1 CityMusic_On Let Flt[0]=0 //Запоминаем, что музыка не играет Wait 2000 //Ждём GoTo CHECK //Возвращаемся к проверке [свернуть] Вроде, всё верно, проверяй ) А ещё можно расширить скрипт и рандомно воспроизводить одну из нескольких аудиозаписей. Хоть сто песен можно в скрипт воткнуть. Только затрахаешься строки кода копипастить и имена файлов прописывать ) Последний раз редактировалось KlassenAS; 04.10.2020 в 14:02. |
||
цитата |
Поблагодарили: 2 |
Firefox3860 (04.10.2020),
Kaiser (04.10.2020)
|
![]() |
#3 | ||
Mafia Modding Crew Сообщений: 680
Репутация: 755
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Priest
|
KlassenAS, Спасибо за хороший разбор логики. Видимо, основная проблема была в конфликте переменной потока с логической переменной. Я этого не заметил.
Ещё круто, что ты показал команду Human_GetSeatidx. Наверное, это лучший способ отслеживания сидения чела в любой машине ![]() Последний раз редактировалось Firefox3860; 04.10.2020 в 15:19. |
||
цитата |
![]() |
#4 | |||
Senior Member Сообщений: 341
Репутация: 285
![]() ![]() ![]()
Enforcer
|
Цитата:
А подсказал мне этот способ GOLOD55, за что ему огромное спасибо! ) Последний раз редактировалось KlassenAS; 04.10.2020 в 15:33. |
|||
цитата |
Поблагодарил: |
Kaiser (04.10.2020)
|
![]() |
#5 | ||
Senior Member Сообщений: 341
Репутация: 285
![]() ![]() ![]()
Enforcer
|
Так.
Кажется, я встал на путь истинный ![]() До этого я все потоки только мютил. А сейчас стал ставить на паузу. Удивительно, но больше у меня баг с воспроизведением после загрузки не появляется. Хотя, может быть, я плохо старался? У меня сложилось впечатление, что игра сохраняет и восстанавливает при загрузки только те потоки, которые были активны на момент сохранения. А те, что были на паузе - игнорирует. Но на самом деле я знаю, что я ничего не знаю. Слишком часто за время разработки этих скриптов у меня складывалось ложное впечатление. в любом случае, баг не даёт о себе знать. Так что на подходе 4 версии скрипта ) И ещё, если кто знает хорошие интернет-радиостанции, ориентированные на классику, джаз, блюз, рок-н-ролл или рок, скиньте мне ссылки на их аудиопоток, типа того, что Firefox3860 скидывал:"http://airtime.joyradio.cc:8000/airtime_192.mp3" Я их вставлю в один из скриптов ) |
||
цитата |
Поблагодарил: |
Firefox3860 (10.10.2020)
|
![]() |
#6 | ||
Mafia Modding Crew Сообщений: 680
Репутация: 755
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Priest
|
KlassenAS, Чё, всё таки паузы нужны, как сначала было?
|
||
цитата |
![]() |
#7 | ||
Senior Member Сообщений: 341
Репутация: 285
![]() ![]() ![]()
Enforcer
|
Ага, похоже на то. Но и мютить тоже надо, чтобы запаузенный поток от ESC не заиграл.
UPD: Ну, что, друзья, вот вам! По моим ощущениям - багов нет. Кто найдёт - тот молодец ) Ver. 1.0 Развернуть для просмотраКод:
//Radio Script Ver. 1.0 11-10-2020 By KlassenAS For Kaiser //Одна радиостанция с одним треком. //Поле окончания трек сбрасывается на начало. //Этот скрипт хорош, если у Вас файл с длиннющей записью реального либо фейкового радиоэфира. Dim_Act 1 Dim_Flt 6 GetActivePlayer 0 //Удалить для использования в scene2.bin //Оставить для использования с патчем от GOLOD55 //Начало удаления Human_GetProperty 0,0,Energy If Flt[0]=0,-1,dan_on Act_SetState 100,Off Label dan_on //Конец удаления Let Flt[0]=0 //поток 00 Let Flt[1]=0 //логика Let Flt[2]=-1 //сиденье/Время с начала игры/текущее время потока/ Let Flt[3]=0 //Прошлое время с начала игры Let Flt[4]=-1 //разница во времени игры Let Flt[5]=-1 //прошлое время потока CommandBlock 1 Stream_Create 0,"radio\radio00.mp3" Stream_FadeVol 0,1,0,0 CommandBlock 0 Label CHECK CommandBlock 1 GoTo POSITION Label CHECK_IN_CAR CommandBlock 0 Human_GetSeatIdx 0,2 If Flt[2]=-1,CAR_OUT,CAR_IN Label CAR_IN If Flt[1]=0,-,CHECK CityMusic_Off Wait 500 Stream_Play 0 Stream_FadeVol 0,1,1,1 Let Flt[1]=1 GoTo CHECK Label CAR_OUT If Flt[1]=1,-1,CHECK Stream_FadeVol 0,1,0,0 Stream_Pause 0 CityMusic_On Let Flt[1]=0 GoTo CHECK Label POSITION If Flt[1]=0,CHECK_IN_CAR,-1 GetGameTime 2 Let Flt[4]=Flt[2]-Flt[3] If Flt[4]<1000,CHECK_IN_CAR,-1 Let Flt[3]=Flt[2] Stream_GetPos 0,2 If Flt[2]=Flt[5],RADIOEND,-1 Let Flt[5]=Flt[2] GoTo CHECK_IN_CAR Label RADIOEND Let Flt[2]=0 Stream_SetPos 0,2 Let Flt[5]=-1 If Flt[1]=0,CHECK_IN_CAR,-1 Stream_Play 0 GoTo CHECK_IN_CAR [свернуть] Ver. 1.1 Развернуть для просмотраКод:
//Radio Script Ver. 1.1 11-10-2020 By KlassenAS //Три радиостанции, на каждой один трек. //Радиостанции переключаются. Также радио можно выключить. //Поле окончания трек сбрасывается на начало. //Этот скрипт хорош, если у Вас файл с длиннющей записью реального либо фейкового радиоэфира. Dim_Act 1 Dim_Flt 13 GetActivePlayer 0 //Удалить для использования в scene2.bin, //Оставить для использования с патчем от GOLOD55 //Начало удаления Human_GetProperty 0,4,Energy If Flt[4]=0,-1,dan_on Act_SetState 100,Off Label dan_on //Конец удаления Let Flt[0]=0 //поток 00 Let Flt[1]=0 //поток 01 Let Flt[2]=0 //поток 02 Let Flt[3]=0 //номер радиостанции 0-2 Let Flt[4]=0 //логика Let Flt[5]=0 //Нажатие клавиш вперёд1 и назад1 Let Flt[6]=0 //Последний активный поток Let Flt[7]=0 //сиденье/Время с начала игры/текущее время потока/ Let Flt[8]=0 //Прошлое время с начала игры Let Flt[9]=0 //разница во времени игры Let Flt[10]=-1 //прошлое время потока 0 Let Flt[11]=-1 //прошлое время потока 1 Let Flt[12]=-1 //прошлое время потока 2 CommandBlock 1 Stream_Create 0,"radio\radio00.mp3" Stream_Fadevol 0,1,0,0 Stream_Create 1,"radio\radio01.mp3" Stream_Fadevol 1,1,0,0 Stream_Create 2,"radio\radio02.mp3" Stream_Fadevol 2,1,0,0 Let Flt[6]=Flt[0] CommandBlock 0 Label CHECK CommandBlock 1 GoTo POSITION Label CHECK_IN_CAR CommandBlock 0 Human_GetSeatIdx 0,7 If Flt[7]=-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 If Flt[4]=0,-,CHECK CityMusic_Off Let Flt[4]=1 Wait 500 CommandBlock 1 If Flt[3]>-1,-1,RADIO_OFF Stream_Fadevol 0,1,0,0 Stream_Play 0 Stream_Fadevol 1,1,0,0 Stream_Play 1 Stream_Fadevol 2,1,0,0 Stream_Play 2 Stream_Fadevol 6,1,1,1 Label RADIO_OFF CommandBlock 0 GoTo CHECK Label CAR_OUT If Flt[4]=1,-1,CHECK Stream_Fadevol 6,1,0,0 Stream_Pause 0 Stream_Pause 1 Stream_Pause 2 Let Flt[4]=0 CityMusic_On GoTo CHECK Label RADIO_UP CommandBlock 1 Stream_Fadevol 6,1,0,0 Label CHNGUPTO_1 If Flt[3]=0,-1,CHNGUPTO_2 Let Flt[6]=Flt[1] GoTo RADIOPLUS Label CHNGUPTO_2 If Flt[3]=1,-1,CHNGUPTO_0 Let Flt[6]=Flt[2] GoTo RADIOPLUS Label CHNGUPTO_0 If Flt[3]=2,-1,RADIOPLUS Let Flt[6]=Flt[0] Label RADIOPLUS Let Flt[3]=Flt[3]+1 If Flt[3]>2,-1,CHANGEDUP Let Flt[3]=-1 GoTo RADIO_OFF_UP Label CHANGEDUP Stream_Fadevol 6,1,1,1 Label RADIO_OFF_UP CommandBlock 0 Let Flt[7]=0 Label 3333 Ctrl_Read 5,UP1 If Flt[5]=1,-1,READ_DOWN Wait 200 Let Flt[7]=Flt[7]+1 If Flt[7]<10,3333,-1 GoTo READ_DOWN Label RADIO_DOWN CommandBlock 1 Stream_Fadevol 6,1,0,0 Label CHNGDWNTO_2 If Flt[3]=-1,-1,CHNGDWNTO_1 Let Flt[6]=Flt[2] GoTo RADIOMINUS Label CHNGDWNTO_1 If Flt[3]=2,-1,CHNGDWNTO_0 Let Flt[6]=Flt[1] GoTo RADIOMINUS Label CHNGDWNTO_0 If Flt[3]=1,-1,RADIOMINUS Let Flt[6]=Flt[0] Label RADIOMINUS Let Flt[3]=Flt[3]-1 If Flt[3]=-1,RADIO_OFF_DOWN,-1 If Flt[3]<-1,-1,CHANGEDDOWN Let Flt[3]=2 Label CHANGEDDOWN Stream_Fadevol 6,1,1,1 Label RADIO_OFF_DOWN CommandBlock 0 Let Flt[7]=0 Label 2222 Ctrl_Read 5,DOWN1 If Flt[5]=1,-1,CHECKPLAY Wait 200 Let Flt[7]=Flt[7]+1 If Flt[7]<10,2222,-1 GoTo CHECKPLAY Label POSITION If Flt[4]=0,CHECK_IN_CAR,-1 GetGameTime 7 Let Flt[9]=Flt[7]-Flt[8] If Flt[9]<1000,CHECK_IN_CAR,-1 Let Flt[8]=Flt[7] Label GETPOS0 Stream_GetPos 0,7 If Flt[7]=Flt[10],RADIO0END,-1 Let Flt[10]=Flt[7] GoTo GETPOS1 Label RADIO0END Let Flt[7]=0 Stream_SetPos 0,7 Stream_Fadevol 0,1,0,0 Let Flt[10]=-1 Stream_Play 0 If Flt[3]=0,-1,GETPOS1 Stream_Fadevol 0,1,1,1 Label GETPOS1 Stream_GetPos 1,7 If Flt[7]=Flt[11],RADIO1END,-1 Let Flt[11]=Flt[7] GoTo GETPOS2 Label RADIO1END Let Flt[7]=0 Stream_SetPos 1,7 Stream_Fadevol 1,1,0,0 Let Flt[11]=-1 Stream_Play 1 If Flt[3]=1,-1,GETPOS2 Stream_Fadevol 1,1,1,1 Label GETPOS2 Stream_GetPos 2,7 If Flt[7]=Flt[12],RADIO2END,-1 Let Flt[12]=Flt[7] GoTo CHECK_IN_CAR Label RADIO2END Let Flt[7]=0 Stream_SetPos 2,7 Stream_Fadevol 2,1,0,0 Let Flt[12]=-1 Stream_Play 2 If Flt[3]=2,-1,CHECK_IN_CAR Stream_Fadevol 2,1,1,1 GoTo CHECK_IN_CAR [свернуть] Ver. 1.2 Развернуть для просмотраКод:
//Radio Script Ver. 1.2 11-10-2020 By KlassenAS //Три радиостанции, каждой можно присвоить ссылку на поток реального интернет-радио. //При старте миссии игра зависнет нанесколько секунд //Это нормально, т. к. игра лезет в интернет, чтобы загрузить аудиопоток. //Радиостанции переключаются. Также радио можно выключить. Dim_Act 1 Dim_Flt 8 GetActivePlayer 0 //Удалить для использования в scene2.bin, //Оставить для использования с патчем от GOLOD55 //Начало удаления Human_GetProperty 0,4,Energy If Flt[4]=0,-1,dan_on Act_SetState 100,Off Label dan_on //Конец удаления Let Flt[0]=0 //поток 00 Let Flt[1]=0 //поток 01 Let Flt[2]=0 //поток 02 Let Flt[3]=0 //номер радиостанции 0-2 Let Flt[4]=0 //логика Let Flt[5]=0 //Нажатие клавиш вперёд1 и назад1 Let Flt[6]=0 //Последний активный поток Let Flt[7]=0 //сиденье Stream_Create 0,"http://airtime.joyradio.cc:8000/airtime_192.mp3" Stream_Fadevol 0,1,0,0 Stream_Create 1,"radio\radio01.mp3" Stream_Fadevol 1,1,0,0 Stream_Create 2,"radio\radio02.mp3" Stream_Fadevol 2,1,0,0 Let Flt[6]=Flt[0] Label CHECK Human_GetSeatIdx 0,7 If Flt[7]=-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 If Flt[4]=0,-,CHECK CityMusic_Off Let Flt[4]=1 Wait 500 CommandBlock 1 If Flt[3]>-1,-1,RADIO_OFF Stream_Fadevol 0,1,0,0 Stream_Play 0 Stream_Fadevol 1,1,0,0 Stream_Play 1 Stream_Fadevol 2,1,0,0 Stream_Play 2 Stream_Fadevol 6,1,1,1 Label RADIO_OFF CommandBlock 0 GoTo CHECK Label CAR_OUT If Flt[4]=1,-1,CHECK Stream_Fadevol 6,1,0,0 Stream_Pause 0 Stream_Pause 1 Stream_Pause 2 Let Flt[4]=0 CityMusic_On GoTo CHECK Label RADIO_UP CommandBlock 1 Stream_Fadevol 6,1,0,0 Label CHNGUPTO_1 If Flt[3]=0,-1,CHNGUPTO_2 Let Flt[6]=Flt[1] GoTo RADIOPLUS Label CHNGUPTO_2 If Flt[3]=1,-1,CHNGUPTO_0 Let Flt[6]=Flt[2] GoTo RADIOPLUS Label CHNGUPTO_0 If Flt[3]=2,-1,RADIOPLUS Let Flt[6]=Flt[0] Label RADIOPLUS Let Flt[3]=Flt[3]+1 If Flt[3]>2,-1,CHANGEDUP Let Flt[3]=-1 GoTo RADIO_OFF_UP Label CHANGEDUP Stream_Fadevol 6,1,1,1 Label RADIO_OFF_UP CommandBlock 0 Let Flt[7]=0 Label 3333 Ctrl_Read 5,UP1 If Flt[5]=1,-1,READ_DOWN Wait 200 Let Flt[7]=Flt[7]+1 If Flt[7]<10,3333,-1 GoTo READ_DOWN Label RADIO_DOWN CommandBlock 1 Stream_Fadevol 6,1,0,0 Label CHNGDWNTO_2 If Flt[3]=-1,-1,CHNGDWNTO_1 Let Flt[6]=Flt[2] GoTo RADIOMINUS Label CHNGDWNTO_1 If Flt[3]=2,-1,CHNGDWNTO_0 Let Flt[6]=Flt[1] GoTo RADIOMINUS Label CHNGDWNTO_0 If Flt[3]=1,-1,RADIOMINUS Let Flt[6]=Flt[0] Label RADIOMINUS Let Flt[3]=Flt[3]-1 If Flt[3]=-1,RADIO_OFF_DOWN,-1 If Flt[3]<-1,-1,CHANGEDDOWN Let Flt[3]=2 Label CHANGEDDOWN Stream_Fadevol 6,1,1,1 Label RADIO_OFF_DOWN CommandBlock 0 Let Flt[7]=0 Label 2222 Ctrl_Read 5,DOWN1 If Flt[5]=1,-1,CHECKPLAY Wait 200 Let Flt[7]=Flt[7]+1 If Flt[7]<10,2222,-1 GoTo CHECKPLAY [свернуть] Ver. 2.0 Развернуть для просмотраКод:
//Radio Script Ver. 2.0 11-10-2020 By KlassenAS //Четыре радиостанции, по 10 треков на каждой //Радиостанции переключаются. Также радио можно выключить. //При старте на каждой радиостанции случайным образом //начинает играть один из 10 треков. //По окончании трека, следующий выбирается так же, случайным образом. Dim_Act 1 Dim_Flt 19 GetActivePlayer 0 //Удалить для использования в scene2.bin, //Оставить для использования с патчем от GOLOD55 //Начало удаления Human_GetProperty 0,4,Energy If Flt[4]=0,-1,dan_on Act_SetState 100,Off Label dan_on //Конец удаления Let Flt[0]=0 //поток 00 Let Flt[1]=0 //поток 01 Let Flt[2]=0 //поток 02 Let Flt[3]=0 //поток 03 Let Flt[4]=0 //логика Let Flt[5]=0 //Нажатие клавиш вперёд1 и назад1 Let Flt[6]=0 //Последний активный поток Let Flt[7]=0 //сиденье/Время с начала игры/текущее время потока/ Let Flt[8]=0 //Прошлое время с начала игры Let Flt[9]=0 //номер радиостанции 0-3 Let Flt[10]=-1 //рандом для radio/разница во времени игры Let Flt[11]=-1 //чтоб на radio00 не повторялись дважды Let Flt[12]=-1 //чтоб на radio01 не повторялись дважды Let Flt[13]=-1 //чтоб на radio02 не повторялись дважды Let Flt[14]=-1 //чтоб на radio03 не повторялись дважды Let Flt[15]=-1 //прошлое время потока 0 Let Flt[16]=-1 //прошлое время потока 1 Let Flt[17]=-1 //прошлое время потока 2 Let Flt[18]=-1 //прошлое время потока 3 CommandBlock 1 Label RADIO00CREATE Rnd 10,10 If Flt[11]=Flt[10],RADIO00CREATE,-1 Let Flt[11]=Flt[10] Label TRCK0000 If Flt[10]=0,-1,TRCK0001 Stream_Create 0,"radio\radio 00 - 00.mp3" GoTo RADIO00CREATED Label TRCK0001 If Flt[10]=1,-1,TRCK0002 Stream_Create 0,"radio\radio 00 - 01.mp3" GoTo RADIO00CREATED Label TRCK0002 If Flt[10]=2,-1,TRCK0003 Stream_Create 0,"radio\radio 00 - 02.mp3" GoTo RADIO00CREATED Label TRCK0003 If Flt[10]=3,-1,TRCK0004 Stream_Create 0,"radio\radio 00 - 03.mp3" GoTo RADIO00CREATED Label TRCK0004 If Flt[10]=4,-1,TRCK0005 Stream_Create 0,"radio\radio 00 - 04.mp3" GoTo RADIO00CREATED Label TRCK0005 If Flt[10]=5,-1,TRCK0006 Stream_Create 0,"radio\radio 00 - 05.mp3" GoTo RADIO00CREATED Label TRCK0006 If Flt[10]=6,-1,TRCK0007 Stream_Create 0,"radio\radio 00 - 06.mp3" GoTo RADIO00CREATED Label TRCK0007 If Flt[10]=7,-1,TRCK0008 Stream_Create 0,"radio\radio 00 - 07.mp3" GoTo RADIO00CREATED Label TRCK0008 If Flt[10]=8,-1,TRCK0009 Stream_Create 0,"radio\radio 00 - 08.mp3" GoTo RADIO00CREATED Label TRCK0009 If Flt[10]=9,-1,RADIO00CREATED Stream_Create 0,"radio\radio 00 - 09.mp3" GoTo RADIO00CREATED Label RADIO00CREATED Stream_Fadevol 0,1,0,0 If Flt[15]>0,REPLAY0,-1 Label RADIO01CREATE Rnd 10,10 If Flt[12]=Flt[10],RADIO01CREATE,-1 Let Flt[12]=Flt[10] Label TRCK0100 If Flt[10]=0,-1,TRCK0101 Stream_Create 1,"radio\radio 01 - 00.mp3" GoTo RADIO01CREATED Label TRCK0101 If Flt[10]=1,-1,TRCK0102 Stream_Create 1,"radio\radio 01 - 01.mp3" GoTo RADIO01CREATED Label TRCK0102 If Flt[10]=2,-1,TRCK0103 Stream_Create 1,"radio\radio 01 - 02.mp3" GoTo RADIO01CREATED Label TRCK0103 If Flt[10]=3,-1,TRCK0104 Stream_Create 1,"radio\radio 01 - 03.mp3" GoTo RADIO01CREATED Label TRCK0104 If Flt[10]=4,-1,TRCK0105 Stream_Create 1,"radio\radio 01 - 04.mp3" GoTo RADIO01CREATED Label TRCK0105 If Flt[10]=5,-1,TRCK0106 Stream_Create 1,"radio\radio 01 - 05.mp3" GoTo RADIO01CREATED Label TRCK0106 If Flt[10]=6,-1,TRCK0107 Stream_Create 1,"radio\radio 01 - 06.mp3" GoTo RADIO01CREATED Label TRCK0107 If Flt[10]=7,-1,TRCK0108 Stream_Create 1,"radio\radio 01 - 07.mp3" GoTo RADIO01CREATED Label TRCK0108 If Flt[10]=8,-1,TRCK0109 Stream_Create 1,"radio\radio 01 - 08.mp3" GoTo RADIO01CREATED Label TRCK0109 If Flt[10]=9,-1,RADIO01CREATED Stream_Create 1,"radio\radio 01 - 09.mp3" GoTo RADIO01CREATED Label RADIO01CREATED Stream_Fadevol 1,1,0,0 If Flt[16]>0,REPLAY1,-1 Label RADIO02CREATE Rnd 10,10 If Flt[13]=Flt[10],RADIO02CREATE,-1 Let Flt[13]=Flt[10] Label TRCK0200 If Flt[10]=0,-1,TRCK0201 Stream_Create 2,"radio\radio 02 - 00.mp3" GoTo RADIO02CREATED Label TRCK0201 If Flt[10]=1,-1,TRCK0202 Stream_Create 2,"radio\radio 02 - 01.mp3" GoTo RADIO02CREATED Label TRCK0202 If Flt[10]=2,-1,TRCK0203 Stream_Create 2,"radio\radio 02 - 02.mp3" GoTo RADIO02CREATED Label TRCK0203 If Flt[10]=3,-1,TRCK0204 Stream_Create 2,"radio\radio 02 - 03.mp3" GoTo RADIO02CREATED Label TRCK0204 If Flt[10]=4,-1,TRCK0205 Stream_Create 2,"radio\radio 02 - 04.mp3" GoTo RADIO02CREATED Label TRCK0205 If Flt[10]=5,-1,TRCK0206 Stream_Create 2,"radio\radio 02 - 05.mp3" GoTo RADIO02CREATED Label TRCK0206 If Flt[10]=6,-1,TRCK0207 Stream_Create 2,"radio\radio 02 - 06.mp3" GoTo RADIO02CREATED Label TRCK0207 If Flt[10]=7,-1,TRCK0208 Stream_Create 2,"radio\radio 02 - 07.mp3" GoTo RADIO02CREATED Label TRCK0208 If Flt[10]=8,-1,TRCK0209 Stream_Create 2,"radio\radio 02 - 08.mp3" GoTo RADIO02CREATED Label TRCK0209 If Flt[10]=9,-1,RADIO02CREATED Stream_Create 2,"radio\radio 02 - 09.mp3" GoTo RADIO02CREATED Label RADIO02CREATED Stream_Fadevol 2,1,0,0 If Flt[17]>0,REPLAY2,-1 Label RADIO03CREATE Rnd 10,10 If Flt[14]=Flt[10],RADIO03CREATE,-1 Let Flt[14]=Flt[10] Label TRCK0300 If Flt[10]=0,-1,TRCK0301 Stream_Create 3,"radio\radio 03 - 00.mp3" GoTo RADIO03CREATED Label TRCK0301 If Flt[10]=1,-1,TRCK0302 Stream_Create 3,"radio\radio 03 - 01.mp3" GoTo RADIO03CREATED Label TRCK0302 If Flt[10]=2,-1,TRCK0303 Stream_Create 3,"radio\radio 03 - 02.mp3" GoTo RADIO03CREATED Label TRCK0303 If Flt[10]=3,-1,TRCK0304 Stream_Create 3,"radio\radio 03 - 03.mp3" GoTo RADIO03CREATED Label TRCK0304 If Flt[10]=4,-1,TRCK0305 Stream_Create 3,"radio\radio 03 - 04.mp3" GoTo RADIO03CREATED Label TRCK0305 If Flt[10]=5,-1,TRCK0306 Stream_Create 3,"radio\radio 03 - 05.mp3" GoTo RADIO03CREATED Label TRCK0306 If Flt[10]=6,-1,TRCK0307 Stream_Create 3,"radio\radio 03 - 06.mp3" GoTo RADIO03CREATED Label TRCK0307 If Flt[10]=7,-1,TRCK0308 Stream_Create 3,"radio\radio 03 - 07.mp3" GoTo RADIO03CREATED Label TRCK0308 If Flt[10]=8,-1,TRCK0309 Stream_Create 3,"radio\radio 03 - 08.mp3" GoTo RADIO03CREATED Label TRCK0309 If Flt[10]=9,-1,RADIO03CREATED Stream_Create 3,"radio\radio 03 - 09.mp3" GoTo RADIO03CREATED Label RADIO03CREATED Stream_Fadevol 3,1,0,0 If Flt[18]>0,REPLAY3,-1 Let Flt[6]=Flt[0] CommandBlock 0 Label CHECK CommandBlock 1 GoTo POSITION Label CHECK_IN_CAR CommandBlock 0 Human_GetSeatIdx 0,7 If Flt[7]=-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 If Flt[4]=0,-,CHECK CityMusic_Off Let Flt[4]=1 Wait 500 CommandBlock 1 If Flt[9]>-1,-1,RADIO_OFF Stream_FadeVol 0,1,0,0 Stream_Play 0 Stream_FadeVol 1,1,0,0 Stream_Play 1 Stream_FadeVol 2,1,0,0 Stream_Play 2 Stream_FadeVol 3,1,0,0 Stream_Play 3 Stream_FadeVol 6,1,1,1 Label RADIO_OFF CommandBlock 0 GoTo CHECK Label CAR_OUT If Flt[4]=1,-1,CHECK Stream_Fadevol 6,1,0,0 Stream_Pause 0 Stream_Pause 1 Stream_Pause 2 Stream_Pause 3 Let Flt[4]=0 CityMusic_On GoTo CHECK Label RADIO_UP CommandBlock 1 Stream_Fadevol 6,1,0,0 Label CHNGUPTO_1 If Flt[9]=0,-1,CHNGUPTO_2 Let Flt[6]=Flt[1] GoTo RADIOPLUS Label CHNGUPTO_2 If Flt[9]=1,-1,CHNGUPTO_3 Let Flt[6]=Flt[2] GoTo RADIOPLUS Label CHNGUPTO_3 If Flt[9]=2,-1,CHNGUPTO_0 Let Flt[6]=Flt[3] GoTo RADIOPLUS Label CHNGUPTO_0 If Flt[9]=3,-1,RADIOPLUS Let Flt[6]=Flt[0] Label RADIOPLUS Let Flt[9]=Flt[9]+1 If Flt[9]>3,-1,CHANGEDUP Let Flt[9]=-1 GoTo RADIO_OFF_UP Label CHANGEDUP Stream_Fadevol 6,1,1,1 Label RADIO_OFF_UP CommandBlock 0 Let Flt[7]=0 Label 3333 Ctrl_Read 5,UP1 If Flt[5]=1,-1,READ_DOWN Wait 200 Let Flt[7]=Flt[7]+1 If Flt[7]<10,3333,-1 GoTo READ_DOWN Label RADIO_DOWN CommandBlock 1 Stream_Fadevol 6,1,0,0 Label CHNGDWNTO_3 If Flt[9]=-1,-1,CHNGDWNTO_2 Let Flt[6]=Flt[3] GoTo RADIOMINUS Label CHNGDWNTO_2 If Flt[9]=3,-1,CHNGDWNTO_1 Let Flt[6]=Flt[2] GoTo RADIOMINUS Label CHNGDWNTO_1 If Flt[9]=2,-1,CHNGDWNTO_0 Let Flt[6]=Flt[1] GoTo RADIOMINUS Label CHNGDWNTO_0 If Flt[9]=1,-1,RADIOMINUS Let Flt[6]=Flt[0] Label RADIOMINUS Let Flt[9]=Flt[9]-1 If Flt[9]=-1,RADIO_OFF_DOWN,-1 If Flt[9]<-1,-1,CHANGEDDOWN Let Flt[9]=3 Label CHANGEDDOWN Stream_Fadevol 6,1,1,1 Label RADIO_OFF_DOWN CommandBlock 0 Let Flt[7]=0 Label 2222 Ctrl_Read 5,DOWN1 If Flt[5]=1,-1,CHECKPLAY Wait 200 Let Flt[7]=Flt[7]+1 If Flt[7]<10,2222,-1 GoTo CHECKPLAY Label POSITION If Flt[4]=0,CHECK_IN_CAR,-1 GetGameTime 7 Let Flt[10]=Flt[7]-Flt[8] If Flt[10]<1000,CHECK_IN_CAR,-1 Let Flt[8]=Flt[7] Label GETPOS0 Stream_GetPos 0,7 If Flt[7]=Flt[15],RADIO0END,-1 Let Flt[15]=Flt[7] GoTo GETPOS1 Label RADIO0END Stream_Fadevol 0,1,0,0 Stream_Pause 0 Stream_Destroy 0 GoTo RADIO00CREATE Label REPLAY0 Stream_Play 0 Let Flt[15]=-1 If Flt[9]=0,-1,GETPOS1 Let Flt[6]=Flt[0] Stream_Fadevol 0,1,1,1 Label GETPOS1 Stream_GetPos 1,7 If Flt[7]=Flt[16],RADIO1END,-1 Let Flt[16]=Flt[7] GoTo GETPOS2 Label RADIO1END Stream_Fadevol 1,1,0,0 Stream_Pause 1 Stream_Destroy 1 GoTo RADIO01CREATE Label REPLAY1 Stream_Play 1 Let Flt[16]=-1 If Flt[9]=1,-1,GETPOS2 Let Flt[6]=Flt[1] Stream_Fadevol 1,1,1,1 Label GETPOS2 Stream_GetPos 2,7 If Flt[7]=Flt[17],RADIO2END,-1 Let Flt[17]=Flt[7] GoTo GETPOS3 Label RADIO2END Stream_Fadevol 2,1,0,0 Stream_Pause 2 Stream_Destroy 2 GoTo RADIO02CREATE Label REPLAY2 Stream_Play 2 Let Flt[17]=-1 If Flt[9]=2,-1,GETPOS3 Let Flt[6]=Flt[2] Stream_Fadevol 2,1,1,1 Label GETPOS3 Stream_GetPos 3,7 If Flt[7]=Flt[18],RADIO3END,-1 Let Flt[18]=Flt[7] GoTo CHECK_IN_CAR Label RADIO3END Stream_Fadevol 3,1,0,0 Stream_Pause 3 Stream_Destroy 3 GoTo RADIO03CREATE Label REPLAY3 Stream_Play 3 Let Flt[18]=-1 If Flt[9]=3,-1,CHECK_IN_CAR Let Flt[6]=Flt[3] Stream_Fadevol 3,1,1,1 GoTo CHECK_IN_CAR [свернуть] Единственное, что меня сейчас смущает: при выходе из машины, когда треки ставятся на паузу, не всегда срабатывает команда CityMusic_On. Причём, чаще не срабатывает. Хз, почему. В логике скрипта ошибки нет. Все потоки ставятся на паузу. Капризничает ) Если кто знает, как с этим быть, расскажите, пожалуйста. Осталось дело за малым. Ту версию, что рассчитана на 4 станции по 10 треков, адаптировать для реализации идеи, которую предложил Abradox. Да, кстати, Firefox3860, я нашёл прямые ссылки на mp3 десяти радиостанций, транслирующих джаз и блюз. Самое то для "Мафии". Но все они намертво вешают игру. В игре нормально аботает только та ссылка на джойрадио, которую ты мне скинул. Не знаешь, почему? Последний раз редактировалось KlassenAS; 11.10.2020 в 17:40. |
||
цитата |
Поблагодарили: 4 |
![]() |
#8 | |||
Mafia Modding Crew Сообщений: 680
Репутация: 755
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Priest
|
KlassenAS, Круто ты постарался, далеко не каждый смог бы такое на mafiascript'е сделать
![]() Цитата:
Все сразу или по отдельности? Та ссылка, что я кинул, тоже вешает, но не надолго. Я думал, что в это время игра пытается подключиться к сайту через интернет и начать прогрузку. Возможно, в случаях с другими ссылками она не может сделать подключение или действительно с форматом у них что-то не то. |
|||
цитата |
![]() |
#9 | |||
Senior Member Сообщений: 341
Репутация: 285
![]() ![]() ![]()
Enforcer
|
Ядрёна вошь! Опять этот баг после сохранения появился!
Почему до этого весь день не было?! Вообще не понимаю, что происходит. Реально, что-ли, при каждом выходе из машины все потоки уничтожать надо? И что это будет? Каждый раз, как садишься в машину, всё заново? Цитата:
По отдельности. Достаточно одной. Abradox, родную мафиозную музыку я в скрипт вписал. Первая радиостанция будет. Какие планы у нас дальше? UPD: Поздравьте меня, друзья, я идиот! Я же сам использовал команды Stream_GetPos и Stream_SetPos для определения окончания трека и для его перезапуска, если нужно. Я же могу, при выходе из машины, запоминать позицию каждого потока, уничтожать потоки, а при возвращении в машину всё восстанавливать! Похоже, мне предстоит снова хорошенько перелопатить все версии скрипта... Последний раз редактировалось KlassenAS; 11.10.2020 в 23:16. |
|||
цитата |
Поблагодарили: 4 |
![]() |
#10 | ||
Modding Crew Сообщений: 2,719
Репутация: 1281
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Councilor
|
|||
цитата |
Ответ |
|
|
|
Регистрация × |