|
Форум Программирование C++/C Программирование [mod_sa] Радио в s0beit |
[mod_sa] Радио в s0beit |
Offline
Всем привет, это урок по добавлению Shoutcast isecast потоковых радио в s0beit Для начала качаем архив приложенный к теме. Все из этого архива кидаем в папку src Далее заходим в main.h И ко всем include добавим Код: #include "bass.h" #pragma comment(lib, "bass.lib") Далее идем в cheat.h Там найдем Код: struct cheat_state_generic И после этого добавим Код: int play; Теперь идем в samp.cpp Найдем Код: // start chatbox logging И перед ним добавим Код: if (cheat_state->_generic.play == 1) { HSTREAM chan; BASS_StreamFree(chan); DWORD r; chan=BASS_StreamCreateURL("http://online.radiorecord.ru:8102/club_64",0,BASS_STREAM_BLOCK|BASS_STREAM_STATUS|BASS_STREAM_AUTOFREE,StatusProc,(void*)r); // open URL BASS_ChannelPlay(chan,FALSE); cheat_state->_generic.play = 0; } Доступно только для пользователей вот это можно сделать через setting Далее там же найдем Код: void cmd_pickup ( char *params ) И перед ним добавим Код: void CALLBACK StatusProc(const void *buffer, DWORD length, void *user) { if (buffer && !length && (DWORD)user==0) // got HTTP/ICY tags, and this is still the current request addMessageToChatWindow( "loading.." ); } Далее идем в new_menu.cpp Ко всем меню добавим Код: TwAddButton(twBar_SPCheats, "Play", play, NULL, ""); И еще там же найдем Код: // MENU FUNCTIONS И после добавим Код: void TW_CALL play(void *) { cheat_state->_generic.play ^= 1; } Вот и все. Мне было лень придумать как выключать. Можно еще вывести на худ название радио станции. Битрейт, название трека, год выпуска. Но мне было лень это делать. Вот выкладываю свой полный код Код: if (KEY_DOWN('R') && KEY_PRESSED('Y')) { BASS_Start(); HSTREAM chan; BASS_StreamFree(chan); DWORD r; chan = BASS_StreamCreateURL("http://online.radiorecord.ru:8102/club_64", NULL, BASS_STREAM_BLOCK|BASS_STREAM_STATUS|BASS_STREAM_AUTOFREE,StatusProc,(void*)r); BASS_ChannelPlay(chan,FALSE); addMessageToChatWindow( "Radio started" ); } if (KEY_DOWN('R') && KEY_PRESSED('U')) { BASS_Stop(); } if (KEY_DOWN('R') && KEY_PRESSED('N')) { HSTREAM chan; BASS_StreamFree(chan); DWORD r; chan = BASS_StreamCreateURL("http://online.radiorecord.ru:8102/club_64", NULL, BASS_STREAM_BLOCK|BASS_STREAM_STATUS|BASS_STREAM_AUTOFREE,StatusProc,(void*)r); const char *meta=BASS_ChannelGetTags(chan,BASS_TAG_META); if (meta) { const char *p=strstr(meta,"StreamTitle='"); if (p) { const char *p2=strstr(p,"';"); if (p2) { char *t=strdup(p+13); t[p2-(p+13)]=0; addMessageToChatWindow( "%s",t); } } } else { meta=BASS_ChannelGetTags(chan,BASS_TAG_OGG); if (meta) { const char *artist=NULL,*title=NULL,*p=meta; for (;*p;p+=strlen(p)+1) { if (!strnicmp(p,"artist=",7)) artist=p+7; if (!strnicmp(p,"title=",6)) title=p+6; } if (title) { if (artist) { char text[100]; _snprintf(text,sizeof(text),"%s - %s",artist,title); addMessageToChatWindow( "%s",text); } else { addMessageToChatWindow( "%s",title); } } } } } |
| |||
| |||