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)

CurtisTea 11.11.2020 06:35

Есть же команда citymusic_on/off. Или я неправильно понял вопрос?


Цитата:

Сообщение от KlassenAS (Сообщение 13102)
но глюки из-за сохранения потоков и отсутствие функции для определения длительности трека ставят на этом крест

А что именно у тебя не выходит сохранить? И можно было бы все треки в один свести и запоминать/восстанавливать его позицию (хотя раньше кто-то писал вроде что оно в память трек целиком выгружает, извините, я очень быстро тред пролистывал). Та и на самом деле зачем тебе функция определения длительности трека если ты эти длительности изначально и так знаешь (ну если пользователь свои личные не закинул конечно)?

KlassenAS 11.11.2020 11:12

Цитата:

Сообщение от Abradox (Сообщение 13118)
Как отделить городскую музыку от миссионной?
Нужно чтобы при выходе из машины городская музыка не играла, а миссионная в миссиях играла.

Ну так городская выключается в начале скрипта командой CityMusic_Off.
А миссионная создаётся в игровых скриптах потоками, как и наше радио.
Ты что, ещё какой-то конфликт нашёл?

Цитата:

Сообщение от CurtisTea (Сообщение 13120)
А что именно у тебя не выходит сохранить?

Скорее наоборот, проблема в том, что сохраняется то, что нам сохранять нафиг не нужно.
Если во время сохранения играет поток, то игра его сохраняет.
А после загрузки из сохранения, если нажать ESC, начинает их воспроизводить.
Баг такой в игре, при нажатии на ESC.
Четыре "радиостанции" - четыре сохранённых потока, и все могут начать играть одновременно, когда это нафиг не надо.
Такая вот засада из-за особенностей сохранения и игровых багов.
Из-за этого я при выключении радио вынужден запоминать позиции треков, уничтожать все потоки, и потом создавать их заново и восстанавливать позиции. Это вносит в скрипт дополнительную сложность.
Ты сам скрипт почитай, тебе понравится )

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

Код:

//Radio Script Ver. 2.1 09-11-2020 By KlassenAS For Abradox

Dim_Act 13
Dim_Flt 30
GetActivePlayer 0
FindActor 10
FindActor 11
FindActor 12
//Акторы 1-9 - для запоминания машин
//Актор 10 - для текущей машины
//Актор 11 - для прошлой машины
//Актор 12 - данный скрипт

Human_GetProperty 0,4,Energy
If Flt[4]=0,-1,dan_on
Act_SetState 100,Off
Label dan_on

CityMusic_Off

//ПЕРЕМЕННЫЕ:
//0-3 - идентификаторы потоков
//4 - Логика
//5 - Нажатие клавиш вперёд1 и назад1
//6 - Последний активный поток
//7 - Сиденье/Время с начала игры/текущее время потока/
//8 - Прошлое время с начала игры
//Номер радиостанции
//9 - Номер играющей радиостанции
//10 - Рандом для radio/разница во времени игры
//11-14 - Номера треков на радиостанциях 0 - 3
//15-18 - для позиций потоков 0-3
//19 - Логика запоминания тачек
//20 - Для перехода к меткам треков
//21-29 - Номера радиостанций в запомненных тачках 1-9
Let Flt[4]=0
Vect_Set 9,-1,-1,-1
Vect_Set 21,-1,-1,-1
Vect_Set 24,-1,-1,-1
Vect_Set 27,-1,-1,-1

Rnd 11,23
Rnd 12,24
Rnd 13,24
Rnd 14,27

Rnd 15,300000
Rnd 16,300000
Rnd 17,300000
Rnd 18,300000

GoTo CHECK



Label RADIOCREATE
        GoSub RADIO00CREATE
        GoSub RADIO01CREATE
        GoSub RADIO02CREATE
        GoSub RADIO03CREATE
Return



Label RADIO00CREATE
CommandBlock 1
Let Flt[20]=Flt[11]+100000
GoTo Flt[20]

        Label 100000
        Stream_Create 0,"sounds\03_music.wav"
        GoTo RADIO00CREATED

        Label 100001
        Stream_Create 0,"sounds\13b_music.wav"
        GoTo RADIO00CREATED

        Label 100002
        Stream_Create 0,"sounds\14_Coucou.wav"
        GoTo RADIO00CREATED

        Label 100003
        Stream_Create 0,"sounds\18_radio.wav"
        GoTo RADIO00CREATED

        Label 100004
        Stream_Create 0,"sounds\s_music1.wav"
        GoTo RADIO00CREATED

        Label 100005
        Stream_Create 0,"sounds\s_music3.wav"
        GoTo RADIO00CREATED

        Label 100006
        Stream_Create 0,"sounds\s_music5.wav"
        GoTo RADIO00CREATED

        Label 100007
        Stream_Create 0,"sounds\music\city_music_01.ogg"
        GoTo RADIO00CREATED

        Label 100008
        Stream_Create 0,"sounds\music\city_music_02.ogg"
        GoTo RADIO00CREATED

        Label 100009
        Stream_Create 0,"sounds\music\city_music_03.ogg"
        GoTo RADIO00CREATED

        Label 100010
        Stream_Create 0,"sounds\music\city_music_04.ogg"
        GoTo RADIO00CREATED

        Label 100011
        Stream_Create 0,"sounds\music\city_music_05.ogg"
        GoTo RADIO00CREATED

        Label 100012
        Stream_Create 0,"sounds\music\city_music_06.ogg"
        GoTo RADIO00CREATED

        Label 100013
        Stream_Create 0,"sounds\music\city_music_07.ogg"
        GoTo RADIO00CREATED

        Label 100014
        Stream_Create 0,"sounds\music\city_music_08.ogg"
        GoTo RADIO00CREATED

        Label 100015
        Stream_Create 0,"sounds\music\city_music_09.ogg"
        GoTo RADIO00CREATED

        Label 100016
        Stream_Create 0,"sounds\music\city_music_10.ogg"
        GoTo RADIO00CREATED

        Label 100017
        Stream_Create 0,"sounds\music\city_music_11.ogg"
        GoTo RADIO00CREATED

        Label 100018
        Stream_Create 0,"sounds\music\city_music_12.ogg"
        GoTo RADIO00CREATED

        Label 100019
        Stream_Create 0,"sounds\music\city_music_13.ogg"
        GoTo RADIO00CREATED

        Label 100020
        Stream_Create 0,"sounds\music\city_music_15.ogg"
        GoTo RADIO00CREATED

        Label 100021
        Stream_Create 0,"sounds\music\12_scene music.ogg"
        GoTo RADIO00CREATED

        Label 100022
        Stream_Create 0,"sounds\music\mise02-ulicka.ogg"
        GoTo RADIO00CREATED

Label RADIO00CREATED
Stream_SetPos 0,15
If Flt[9]=0,-1,CREATED00
Let Flt[6]=Flt[0]
Label CREATED00
CommandBlock 0
Return


Label RADIO01CREATE
CommandBlock 1
Let Flt[20]=Flt[12]+100100
GoTo Flt[20]

        Label 100100
        Stream_Create 1,"radio\radio01-00.ogg"
        GoTo RADIO01CREATED

        Label 100101
        Stream_Create 1,"radio\radio01-01.ogg"
        GoTo RADIO01CREATED

        Label 100102
        Stream_Create 1,"radio\radio01-02.ogg"
        GoTo RADIO01CREATED       

        Label 100103
        Stream_Create 1,"radio\radio01-03.ogg"
        GoTo RADIO01CREATED

        Label 100104
        Stream_Create 1,"radio\radio01-04.ogg"
        GoTo RADIO01CREATED

        Label 100105
        Stream_Create 1,"radio\radio01-05.ogg"
        GoTo RADIO01CREATED

        Label 100106
        Stream_Create 1,"radio\radio01-06.ogg"
        GoTo RADIO01CREATED

        Label 100107
        Stream_Create 1,"radio\radio01-07.ogg"
        GoTo RADIO01CREATED

        Label 100108
        Stream_Create 1,"radio\radio01-08.ogg"
        GoTo RADIO01CREATED
       
        Label 100109
        Stream_Create 1,"radio\radio01-09.ogg"
        GoTo RADIO01CREATED

        Label 100110
        Stream_Create 1,"radio\radio01-10.ogg"
        GoTo RADIO01CREATED

        Label 100111
        Stream_Create 1,"radio\radio01-11.ogg"
        GoTo RADIO01CREATED

        Label 100112
        Stream_Create 1,"radio\radio01-12.ogg"
        GoTo RADIO01CREATED       
       
        Label 100113
        Stream_Create 1,"radio\radio01-13.ogg"
        GoTo RADIO01CREATED

        Label 100114
        Stream_Create 1,"radio\radio01-14.ogg"
        GoTo RADIO01CREATED

        Label 100115
        Stream_Create 1,"radio\radio01-15.ogg"
        GoTo RADIO01CREATED

        Label 100116
        Stream_Create 1,"radio\radio01-16.ogg"
        GoTo RADIO01CREATED       
       
        Label 100117
        Stream_Create 1,"radio\radio01-17.ogg"
        GoTo RADIO01CREATED

        Label 100118
        Stream_Create 1,"radio\radio01-18.ogg"
        GoTo RADIO01CREATED

        Label 100119
        Stream_Create 1,"radio\radio01-19.ogg"
        GoTo RADIO01CREATED

        Label 100120
        Stream_Create 1,"radio\radio01-20.ogg"
        GoTo RADIO01CREATED       
       
        Label 100121
        Stream_Create 1,"radio\radio01-21.ogg"
        GoTo RADIO01CREATED

        Label 100122
        Stream_Create 1,"radio\radio01-22.ogg"
        GoTo RADIO01CREATED

        Label 100123
        Stream_Create 1,"radio\radio01-23.ogg"
        GoTo RADIO01CREATED

Label RADIO01CREATED
Stream_SetPos 1,16
If Flt[9]=1,-1,CREATED01
Let Flt[6]=Flt[1]
Label CREATED01
CommandBlock 0
Return


Label RADIO02CREATE
CommandBlock 1
Let Flt[20]=Flt[13]+100200
GoTo Flt[20]

        Label 100200
        Stream_Create 2,"radio\radio02-00.ogg"
        GoTo RADIO02CREATED

        Label 100201
        Stream_Create 2,"radio\radio02-01.ogg"
        GoTo RADIO02CREATED

        Label 100202
        Stream_Create 2,"radio\radio02-02.ogg"
        GoTo RADIO02CREATED

        Label 100203
        Stream_Create 2,"radio\radio02-03.ogg"
        GoTo RADIO02CREATED

        Label 100204
        Stream_Create 2,"radio\radio02-04.ogg"
        GoTo RADIO02CREATED

        Label 100205
        Stream_Create 2,"radio\radio02-05.ogg"
        GoTo RADIO02CREATED

        Label 100206
        Stream_Create 2,"radio\radio02-06.ogg"
        GoTo RADIO02CREATED

        Label 100207
        Stream_Create 2,"radio\radio02-07.ogg"
        GoTo RADIO02CREATED

        Label 100208
        Stream_Create 2,"radio\radio02-08.ogg"
        GoTo RADIO02CREATED

        Label 100209
        Stream_Create 2,"radio\radio02-09.ogg"
        GoTo RADIO02CREATED

        Label 100210
        Stream_Create 2,"radio\radio02-10.ogg"
        GoTo RADIO02CREATED

        Label 100211
        Stream_Create 2,"radio\radio02-11.ogg"
        GoTo RADIO02CREATED

        Label 100212
        Stream_Create 2,"radio\radio02-12.ogg"
        GoTo RADIO02CREATED

        Label 100213
        Stream_Create 2,"radio\radio02-13.ogg"
        GoTo RADIO02CREATED

        Label 100214
        Stream_Create 2,"radio\radio02-14.ogg"
        GoTo RADIO02CREATED

        Label 100215
        Stream_Create 2,"radio\radio02-15.ogg"
        GoTo RADIO02CREATED

        Label 100216
        Stream_Create 2,"radio\radio02-16.ogg"
        GoTo RADIO02CREATED

        Label 100217
        Stream_Create 2,"radio\radio02-17.ogg"
        GoTo RADIO02CREATED

        Label 100218
        Stream_Create 2,"radio\radio02-18.ogg"
        GoTo RADIO02CREATED

        Label 100219
        Stream_Create 2,"radio\radio02-19.ogg"
        GoTo RADIO02CREATED

        Label 100220
        Stream_Create 2,"radio\radio02-20.ogg"
        GoTo RADIO02CREATED

        Label 100221
        Stream_Create 2,"radio\radio02-21.ogg"
        GoTo RADIO02CREATED

        Label 100222
        Stream_Create 2,"radio\radio02-22.ogg"
        GoTo RADIO02CREATED

        Label 100223
        Stream_Create 2,"radio\radio02-23.ogg"
        GoTo RADIO02CREATED

Label RADIO02CREATED
Stream_SetPos 2,17
If Flt[9]=2,-1,CREATED02
Let Flt[6]=Flt[2]
Label CREATED02
CommandBlock 0
Return


Label RADIO03CREATE
CommandBlock 1
Let Flt[20]=Flt[14]+100300
GoTo Flt[20]

        Label 100300
        Stream_Create 3,"radio\radio03-00.mp3"
        GoTo RADIO03CREATED

        Label 100301
        Stream_Create 3,"radio\radio03-01.mp3"
        GoTo RADIO03CREATED

        Label 100302
        Stream_Create 3,"radio\radio03-02.mp3"
        GoTo RADIO03CREATED

        Label 100303
        Stream_Create 3,"radio\radio03-03.mp3"
        GoTo RADIO03CREATED

        Label 100304
        Stream_Create 3,"radio\radio03-04.mp3"
        GoTo RADIO03CREATED

        Label 100305
        Stream_Create 3,"radio\radio03-05.mp3"
        GoTo RADIO03CREATED

        Label 100306
        Stream_Create 3,"radio\radio03-06.mp3"
        GoTo RADIO03CREATED

        Label 100307
        Stream_Create 3,"radio\radio03-07.mp3"
        GoTo RADIO03CREATED

        Label 100308
        Stream_Create 3,"radio\radio03-08.mp3"
        GoTo RADIO03CREATED

        Label 100309
        Stream_Create 3,"radio\radio03-09.mp3"
        GoTo RADIO03CREATED

        Label 100310
        Stream_Create 3,"radio\radio03-10.mp3"
        GoTo RADIO03CREATED

        Label 100311
        Stream_Create 3,"radio\radio03-11.mp3"
        GoTo RADIO03CREATED

        Label 100312
        Stream_Create 3,"radio\radio03-12.mp3"
        GoTo RADIO03CREATED

        Label 100313
        Stream_Create 3,"radio\radio03-13.mp3"
        GoTo RADIO03CREATED

        Label 100314
        Stream_Create 3,"radio\radio03-14.mp3"
        GoTo RADIO03CREATED

        Label 100315
        Stream_Create 3,"radio\radio03-15.mp3"
        GoTo RADIO03CREATED

        Label 100316
        Stream_Create 3,"radio\radio03-16.mp3"
        GoTo RADIO03CREATED

        Label 100317
        Stream_Create 3,"radio\radio03-17.mp3"
        GoTo RADIO03CREATED

        Label 100318
        Stream_Create 3,"radio\radio03-18.mp3"
        GoTo RADIO03CREATED

        Label 100319
        Stream_Create 3,"radio\radio03-19.mp3"
        GoTo RADIO03CREATED
       
        Label 100320
        Stream_Create 3,"radio\radio03-20.mp3"
        GoTo RADIO03CREATED

        Label 100321
        Stream_Create 3,"radio\radio03-21.mp3"
        GoTo RADIO03CREATED

        Label 100322
        Stream_Create 3,"radio\radio03-22.mp3"
        GoTo RADIO03CREATED

        Label 100323
        Stream_Create 3,"radio\radio03-23.mp3"
        GoTo RADIO03CREATED

        Label 100324
        Stream_Create 3,"radio\radio03-24.mp3"
        GoTo RADIO03CREATED

        Label 100325
        Stream_Create 3,"radio\radio03-25.mp3"
        GoTo RADIO03CREATED

        Label 100326
        Stream_Create 3,"radio\radio03-26.mp3"
        GoTo RADIO03CREATED

Label RADIO03CREATED
Stream_SetPos 3,18
If Flt[9]=3,-1,CREATED03
Let Flt[6]=Flt[3]
Label CREATED03
CommandBlock 0
Return


Label CHECK
CommandBlock 1
GoSub POSITION
CommandBlock 0
Human_GetSeatIdx 0,7
If Flt[7]=-1,CAR_OUT,CAR_IN



Label CAR_IN
        Ctrl_Read 5,JUMP1
        If Flt[5]=0,-1,RADIO_UP
        Label READ_DOWN
        Ctrl_Read 5,CROUCH1
        If Flt[5]=0,-1,RADIO_DOWN
Label CHECKPLAY

If Flt[4]=0,-,CHECK
Wait 500
GoSub RADIO_READ
If Flt[9]>-1,-1,RADIO_OFF
GoSub RADIOCREATE
GoSub RADIO_PLAY
Let Flt[20]=Flt[9]+2000
GoSub Flt[20]
Label RADIO_OFF
If Flt[9]=-1,-1,ADIRDA
Console_AddText 90000000
Label ADIRDA
Let Flt[4]=1
GoTo CHECK



Label CAR_OUT
If Flt[4]=1,-1,CHECK
CommandBlock 1
If Flt[9]>-1,-1,NO_DESTROY
GoSub RADIO_DESTROY
Label NO_DESTROY
Let Flt[4]=0
GoSub RADIO_SAVE
CommandBlock 0
GoTo CHECK



Label RADIO_UP
CommandBlock 1
If Flt[9]=-1,-1,CHANGEUP
GoSub RADIOCREATE
GoSub RADIO_PLAY
Label CHANGEUP
Stream_Fadevol 6,1,0,0
Let Flt[9]=Flt[9]+1
If Flt[9]>3,-1,CHANGEDUP
Let Flt[9]=-1
Label CHANGEDUP
Let Flt[20]=Flt[9]+2000
GoSub Flt[20]
CommandBlock 0

Let Flt[7]=0
Label 3333
Ctrl_Read 5,JUMP1
If Flt[5]=1,-1,READ_DOWN
Wait 200
Let Flt[7]=Flt[7]+1
If Flt[7]<5,3333,-1
GoTo READ_DOWN



Label RADIO_DOWN
CommandBlock 1
If Flt[9]=-1,-1,CHANGEDOWN
GoSub RADIOCREATE
GoSub RADIO_PLAY
Label CHANGEDOWN
Stream_Fadevol 6,1,0,0
Let Flt[9]=Flt[9]-1
If Flt[9]<-1,-1,CHANGEDDOWN
Let Flt[9]=3
Label CHANGEDDOWN
Let Flt[20]=Flt[9]+2000
GoSub Flt[20]
CommandBlock 0

Let Flt[7]=0
Label 2222
Ctrl_Read 5,CROUCH1
If Flt[5]=1,-1,CHECKPLAY
Wait 200
Let Flt[7]=Flt[7]+1
If Flt[7]<5,2222,-1
GoTo CHECKPLAY


Label 1999
GoSub RADIO_DESTROY
Console_AddText 90000000
Return

Label 2000
Let Flt[6]=Flt[0]
Stream_Fadevol 6,1,1,1
Console_AddText 90000001
Return

Label 2001
Let Flt[6]=Flt[1]
Stream_Fadevol 6,1,1,1
Console_AddText 90000002
Return

Label 2002
Let Flt[6]=Flt[2]
Stream_Fadevol 6,1,1,1
Console_AddText 90000003
Return

Label 2003
Let Flt[6]=Flt[3]
Stream_Fadevol 6,1,1,1
Console_AddText 90000004
Return



Label RADIO_PLAY
CommandBlock 1
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
CommandBlock 0
Return



Label RADIO_DESTROY
CommandBlock 1
Stream_GetPos 0,15
Stream_Fadevol 0,1,0,0
Stream_Pause 0
Stream_Destroy 0

Stream_GetPos 1,16
Stream_Fadevol 1,1,0,0
Stream_Pause 1
Stream_Destroy 1

Stream_GetPos 2,17
Stream_Fadevol 2,1,0,0
Stream_Pause 2
Stream_Destroy 2

Stream_GetPos 3,18
Stream_Fadevol 3,1,0,0
Stream_Pause 3
Stream_Destroy 3
CommandBlock 0
Return



Label POSITION
If Flt[4]=0,POSITION_END,-1
If Flt[9]=-1,POSITION_END,-1
GetGameTime 7
Let Flt[10]=Flt[7]-Flt[8]
If Flt[10]<500,POSITION_END,-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
        Label RAND0
        Rnd 10,23
        If Flt[11]=Flt[10],RAND0,-1
        Let Flt[11]=Flt[10]
        Let Flt[19]=1
        Let Flt[15]=0
        GoSub RADIO00CREATE
        CommandBlock 1
        Stream_Fadevol 0,1,0,0
        Stream_Play 0
        Let Flt[19]=0
        CommandBlock 0
        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
        Label RAND1
        Rnd 10,24
        If Flt[12]=Flt[10],RAND1,-1
        Let Flt[12]=Flt[10]
        Let Flt[19]=1
        Let Flt[16]=0
        GoSub RADIO01CREATE
        CommandBlock 1
        Stream_Fadevol 1,1,0,0
        Stream_Play 1
        Let Flt[19]=0
        CommandBlock 0
        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
        Label RAND2
        Rnd 10,24
        If Flt[13]=Flt[10],RAND2,-1
        Let Flt[13]=Flt[10]
        Let Flt[19]=1
        Let Flt[17]=0
        GoSub RADIO02CREATE
        CommandBlock 1
        Stream_Fadevol 2,1,0,0
        Stream_Play 2
        Let Flt[19]=0
        CommandBlock 0
        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 POSITION_END
        Label RADIO3END
        Stream_Fadevol 3,1,0,0
        Stream_Pause 3
        Stream_Destroy 3
        Label RAND3
        Rnd 10,27
        If Flt[14]=Flt[10],RAND3,-1
        Let Flt[14]=Flt[10]
        Let Flt[19]=1
        Let Flt[18]=0
        GoSub RADIO03CREATE
        CommandBlock 1
        Stream_Fadevol 3,1,0,0
        Stream_Play 3
        Let Flt[19]=0
        CommandBlock 0
        If Flt[9]=3,-1,POSITION_END
        Let Flt[6]=Flt[3]
        Stream_Fadevol 3,1,1,1

Label POSITION_END
Return



Label RADIO_READ
CommandBlock 1
Let Flt[19]=0
FindNearActor 0,10,Car

CompareActors 11,12,7
If Flt[7]=0,-1,NORANDOMRADIO
CompareActors 10,11,7
If Flt[7]=0,-1,NORANDOMRADIO
Rnd 9,5
Let Flt[9]=Flt[9]-1
Label NORANDOMRADIO

CompareActors 10,11,7
Set_Remote_Actor 10,12,11
If Flt[7]=0,-1,RADIO_READED

        Label COMPARE_ENT1
        CompareActors 10,1,7
        If Flt[7]=1,-1,COMPARE_ENT2
        Let Flt[9]=Flt[21]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT2
        CompareActors 10,2,7
        If Flt[7]=1,-1,COMPARE_ENT3
        Let Flt[9]=Flt[22]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT3
        CompareActors 10,3,7
        If Flt[7]=1,-1,COMPARE_ENT4
        Let Flt[9]=Flt[23]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT4
        CompareActors 10,4,7
        If Flt[7]=1,-1,COMPARE_ENT5
        Let Flt[9]=Flt[24]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT5
        CompareActors 10,5,7
        If Flt[7]=1,-1,COMPARE_ENT6
        Let Flt[9]=Flt[25]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT6
        CompareActors 10,6,7
        If Flt[7]=1,-1,COMPARE_ENT7
        Let Flt[9]=Flt[26]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT7
        CompareActors 10,7,7
        If Flt[7]=1,-1,COMPARE_ENT8
        Let Flt[9]=Flt[27]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT8
        CompareActors 10,8,7
        If Flt[7]=1,-1,COMPARE_ENT9
        Let Flt[9]=Flt[28]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

        Label COMPARE_ENT9
        CompareActors 10,9,7
        If Flt[7]=1,-1,COMPARE_ENT0
        Let Flt[9]=Flt[29]
        Let Flt[19]=1
        GoTo COMPARE_ENT0

Label COMPARE_ENT0
If Flt[19]=1,RADIO_READED,-1
GoSub RADIO_WRITE
Label RADIO_READED
CommandBlock 0
Return



Label RADIO_SAVE
CommandBlock 1

        Label COMPARE_EXIT1
        CompareActors 10,1,7
        If Flt[7]=1,-1,COMPARE_EXIT2
        Let Flt[21]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT2
        CompareActors 10,2,7
        If Flt[7]=1,-1,COMPARE_EXIT3
        Let Flt[22]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT3
        CompareActors 10,3,7
        If Flt[7]=1,-1,COMPARE_EXIT4
        Let Flt[23]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT4
        CompareActors 10,4,7
        If Flt[7]=1,-1,COMPARE_EXIT5
        Let Flt[24]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT5
        CompareActors 10,5,7
        If Flt[7]=1,-1,COMPARE_EXIT6
        Let Flt[25]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT6
        CompareActors 10,6,7
        If Flt[7]=1,-1,COMPARE_EXIT7
        Let Flt[26]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT7
        CompareActors 10,7,7
        If Flt[7]=1,-1,COMPARE_EXIT8
        Let Flt[27]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT8
        CompareActors 10,8,7
        If Flt[7]=1,-1,COMPARE_EXIT9
        Let Flt[28]=Flt[9]
        GoTo COMPARE_EXIT0

        Label COMPARE_EXIT9
        CompareActors 10,9,7
        If Flt[7]=1,-1,COMPARE_EXIT0
        Let Flt[29]=Flt[9]
        GoTo COMPARE_EXIT0

Label COMPARE_EXIT0
CommandBlock 0
Return



Label RADIO_WRITE
CommandBlock 1
Set_Remote_Actor 8,12,9
Let Flt[29]=Flt[28]
Set_Remote_Actor 7,12,8
Let Flt[28]=Flt[27]
Set_Remote_Actor 6,12,7
Let Flt[27]=Flt[26]
Set_Remote_Actor 5,12,6
Let Flt[26]=Flt[25]
Set_Remote_Actor 4,12,5
Let Flt[25]=Flt[24]
Set_Remote_Actor 3,12,4
Let Flt[24]=Flt[23]
Set_Remote_Actor 2,12,3
Let Flt[23]=Flt[22]
Set_Remote_Actor 1,12,2
Let Flt[22]=Flt[21]
Set_Remote_Actor 10,12,1
Let Flt[21]=Flt[9]
CommandBlock 0
Return

[свернуть]


Цитата:

Сообщение от CurtisTea (Сообщение 13120)
раньше кто-то писал вроде что оно в память трек целиком выгружает, извините, я очень быстро тред пролистывал

Совершенно верно.
У нас и так со сборкой модов движок большой объём памяти использует, а тут ещё четыре двухчасовых аудиозаписи в памяти.
Оно нам надо? Лучше отдельными треками.
А ещё FreeRide Extended тоже память жрёт как бегемот)

Цитата:

Сообщение от CurtisTea (Сообщение 13120)
Та и на самом деле зачем тебе функция определения длительности трека если ты эти длительности изначально и так знаешь (ну если пользователь свои личные не закинул конечно)?

То-то и оно, я вынужден учитывать возможность того, что пользователь заменит треки на свои.
Плюс, порядок воспроизведения треков рандомизирован.

Abradox 11.11.2020 14:20

Цитата:

Сообщение от KlassenAS (Сообщение 13122)
Ты что, ещё какой-то конфликт нашёл?

не, если найду, то напишу.

GOLOD55 14.11.2020 01:54

...переложить радиво со скрипта в asi?
Теоретичски, гутт, ибо может убрать опр. сложности и ограничения, ога.
Но, сдается мине, енто непросто. компилить скрипт в ассемблер_код - архисложно и малоосмысленно, но вот если логику писать свою в длл и на, напр, с++, то может быть все намного проще: тада всю кухню с потоками можно иметь свою(а также хнопичное управление ею в игре), а от игры требуется совсем немного - лишь несколько фильтров а-ля "is Tommy in car"(с подобным я могу помочь).

KlassenAS 14.11.2020 12:02

Цитата:

Сообщение от GOLOD55 (Сообщение 13176)
если логику писать свою в длл и на, напр, с++, то может быть все намного проще: тада всю кухню с потоками можно иметь свою(а также хнопичное управление ею в игре), а от игры требуется совсем немного - лишь несколько фильтров а-ля "is Tommy in car"(с подобным я могу помочь).

Именно это я и имел в виду - mp3 плеер в виде dll, имитирующий радио
Правда, я только в Delphi умею.
Для меня основная загвоздка именно в том, что я не имею ни малейшего понятия о том, как из своей dll к акторам доступ получить. Чтобы, например, последние несколько машин запоминать, как я это в скрипте сделал, и проверять нахождение Томми в машине. CityMusic_Off, опять же.
А так-то всё, что связано с воспроизведением музыки сделать легче лёгкого.
Дефолтных функций Delphi хватит за глаза.

UPD: погуглил, на C++ тоже вроде не сложно )

Firefox3860 14.11.2020 14:46

Если скрипт пока не будет меняться, хочу опубликовать мод 2.1 на одном популярном англоязычном ресурсе (описание переведу сам). И, может быть, на mafiascene потом. Ты не против?

mp3-проигрыватель на с++ это интересно, хотел бы посмотреть :)

KlassenAS 14.11.2020 15:59

Цитата:

Сообщение от Firefox3860 (Сообщение 13180)
Если скрипт пока не будет меняться, хочу опубликовать мод 2.1 на одном популярном англоязычном ресурсе (описание переведу сам). И, может быть, на mafiascene потом. Ты не против?

Неужто на Нексусе?
Валяй, публикуй, только благодарен буду!

Цитата:

Сообщение от Firefox3860 (Сообщение 13180)
mp3-проигрыватель на с++ это интересно, хотел бы посмотреть :)

Да хоть на С++, хоть на Delphi, есть дефолтные виндовские библиотеки и функции, к которым можно обратиться, чтобы это реализовать.

Firefox3860 14.11.2020 16:53

Цитата:

Сообщение от KlassenAS (Сообщение 13181)
Неужто на Нексусе?

Не, (кто такой етот ваш нексус?) в дискорде сервер MafiaHub, мож кто знает, там многим зайдёт, думаю.

Цитата:

Сообщение от KlassenAS (Сообщение 13181)
Да хоть на С++, хоть на Delphi, есть дефолтные виндовские библиотеки и функции, к которым можно обратиться, чтобы это реализовать.

Ну да. А ведь сама Мафия это и есть mp3-проигрыватель на с++ :D

KlassenAS 15.11.2020 13:39

Товарищи, нужен совет!
Начал писать asi плагин для нашего радио.
Писать начал на своём родном Delphi, т. к. его я знаю лучше, чем С++
Оказался перед выбором )

Вариант 1, более простой - использовать для воспроизведения музыки стандартный компонент Delphi.
Но тогда можно будет использовать только MP3.

Вариант 2 - использовать библиотеку bass.dll, можно будет играть любой формат, и не сказать, чтобы это слишком сложно.
Но тогда вместе с asi придётся ещё bass.dll использовать.
Писать dll, чтобы из неё обращаться к другой dll это довольно забавно )

Так с обработкой нажатий клавиш уже разобрался, сейчас мой несчастный asi включает/выключает музыку по нажатию клавиши.

Ну и да, как-то нужно определять, находится ли Томми в тачке, и как-то вырубать CityMusic.
Без этого создание плагина лишено смысла.
Задумки по этому плагину у меня монументальные, но для начала надо, чтобы он, в принципе, работал.

Abradox 15.11.2020 14:16

Вариант 2 предпочтительнее конечно, но если не получится значит будет только mp3


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

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