im0rg
27.05.2013, 14:13
Всем привет, это урок по добавлению 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_STREA M_AUTOFREE,StatusProc,(void*)r); // open URL
BASS_ChannelPlay(chan,FALSE);
cheat_state->_generic.play = 0;
}
"http://online.radiorecord.ru:8102/club_64 (https://www.blast.hk/redirect/aHR0cDovL29ubGluZS5yYWRpb3JlY29yZC5ydTo4MTAyL2NsdW JfNjQ)" вот это можно сделать через 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_A UTOFREE,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_A UTOFREE,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);
}
}
}
}
}
С вами былJesus (http://blasthack.net/members/jesus.87/)Специально для сайта BlastHack.Net (http://blasthack.net/)При копировании указывать источникBlastHack.Net (http://blasthack.net/)
Screen
https://downloader.disk.yandex.ru/preview/3777790e6dd50281a0b2d28a37779ef4/mpfs/P9in8wKVJ80vII1meWKvBmllIoms0fZyE5-IeE3bovlDYW4WFLCOqMrpWNg8o8iqOteySWHpsMlPya8vFQIH9 Q%3D%3D?uid=0&filename=sa-mp-000.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&size=XL&crop=0
ВНИМАНИЕ: У КОГО WINDOWS 8 И VS 2012 И ВЫЛАЗИЕТ ОШИБКА SAFESEHДелаем следующее
Откройте диалоговое окно "Страницы свойств проекта".
Выберите папку Компоновщик.Выберите страницу свойств Командная строка.Введите параметр в поле Дополнительные параметры.
/SAFESEH:NO
Код:
#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_STREA M_AUTOFREE,StatusProc,(void*)r); // open URL
BASS_ChannelPlay(chan,FALSE);
cheat_state->_generic.play = 0;
}
"http://online.radiorecord.ru:8102/club_64 (https://www.blast.hk/redirect/aHR0cDovL29ubGluZS5yYWRpb3JlY29yZC5ydTo4MTAyL2NsdW JfNjQ)" вот это можно сделать через 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_A UTOFREE,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_A UTOFREE,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);
}
}
}
}
}
С вами былJesus (http://blasthack.net/members/jesus.87/)Специально для сайта BlastHack.Net (http://blasthack.net/)При копировании указывать источникBlastHack.Net (http://blasthack.net/)
Screen
https://downloader.disk.yandex.ru/preview/3777790e6dd50281a0b2d28a37779ef4/mpfs/P9in8wKVJ80vII1meWKvBmllIoms0fZyE5-IeE3bovlDYW4WFLCOqMrpWNg8o8iqOteySWHpsMlPya8vFQIH9 Q%3D%3D?uid=0&filename=sa-mp-000.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&size=XL&crop=0
ВНИМАНИЕ: У КОГО WINDOWS 8 И VS 2012 И ВЫЛАЗИЕТ ОШИБКА SAFESEHДелаем следующее
Откройте диалоговое окно "Страницы свойств проекта".
Выберите папку Компоновщик.Выберите страницу свойств Командная строка.Введите параметр в поле Дополнительные параметры.
/SAFESEH:NO