Radio for steam clients
Hello, is it possible to rewrite this plugin, what would he worked on new builds in steam players?
When you try to call MOTD, steam player folds game and the plugin itself does not make music well as Linux users the same problem. Suggested that can be rewritten in HTML5, but it seems that MOTD does not support the audio tag
Code:
#include <amxmodx>
new name_receiver[33], receivers[256], user_fm[33],count
static buffer[4096], buffer_off[2048]
new const fm_id[][][] =
{
{"",""}, /*Не удалять.*/
{"DubStep", "http://ru1.101.ru:8000/c15_24?tok=29862838lrwChN8DGbAdTsFClN5EPg20140622D20140622D6&setst=0072339001352700917" },
{"Drum & Bass", "http://ru1.101.ru:8000/c12_3?tok=29862838lrwChN8DGbAdTsFClN5EPg20140622D20140622D6&setst=0072339001352700917" },
{"Trap", "http://ru1.101.ru:8000/c7_28?tok=29862838lrwChN8DGbB7QCOwKTwHCw20140622D20140622D9&setst=0072339001352700917" },
{"ENERGY", "http://ru1.101.ru:8000/v1_1?tok=29862838lrwChN8DGbCG9RqaUFndxw20140622D20140622D9&setst=0072339001352700917" },
{"House", "http://ru1.101.ru:8000/c6_5?tok=29862838lrwChN8DGbCo8OxSL0V0Tw20140622D20140622D6&setst=0072339001352700917" },
{"Deep House", "http://ru1.101.ru:8000/c18_2?tok=29862838lrwChN8DGbBZK5yiiXlvFg20140622D20140622D15&setst=0072339001352700917" },
{"Club Dance", "http://ru1.101.ru:8000/c4_2?tok=29862838lrwChN8DGbBZK5yiiXlvFg20140622D20140622D9&setst=0072339001352700917" },
{"Modern Rock", "http://ru1.101.ru:8000/c11_1?tok=29862838lrwChN8DGbCG9RqaUFndxw20140622D20140622D3&setst=0072339001352700917" },
{"R'n'B", "http://ru1.101.ru:8000/c4_3?tok=29862838lrwChN8DGbCG9RqaUFndxw20140622D20140622D15&setst=0072339001352700917" },
{"Русский Рок", "http://ru1.101.ru:8000/c1_2?tok=29862838lrwChN8DGbB7QCOwKTwHCw20140622D20140622D3&setst=0072339001352700917" },
{"Русский Рэп", "http://ru1.101.ru:8000/c1_3?tok=29862838lrwChN8DGbA5bpSSuorgew20140622D20140622D3&setst=0072339001352700917" }
}
public who()
{
set_hudmessage(205, 150, 205, 0.85, 0.31, 2, 0.04, 20.0, 0.03, 0.02, 1)
if(!name_receiver[0])
show_hudmessage(0, "Играй с музыкой! =)^nНапиши /fm в чат.")
else
show_hudmessage(0, "Играй с музыкой! =)^nНапиши /fm в чат.^nСлушатели:^n%s", receivers)
}
public fm(id)
{
new i_Menu = menu_create("\yRadio", "radio")
new item[3], form[64]
for(new i=1; i<=count; i++)
{
num_to_str(i, item, 3)
if(i==user_fm[id])
{
formatex(form, charsmax(form), "\d%s (now)", fm_id[i][0])
menu_additem(i_Menu, form, item,0)
}
else
menu_additem(i_Menu, fm_id[i][0], item)
}
menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее")
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
menu_setprop(i_Menu, MPROP_EXITNAME, "Гл. меню")
menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public client_disconnect(id)
{
if(user_fm[id])
{
user_fm[id] = 0
hudradio();
}
}
public hudradio()
{
name_receiver[0] = '^0';
receivers[0] = '^0';
new num=get_maxplayers()
for(new id = 1; id <= num; id++)
{
if(!is_user_connected(id) || !user_fm[id])
continue;
get_user_name(id, name_receiver, 31)
formatex(receivers, 255, "%s %s (%s)^n", receivers, name_receiver, fm_id[user_fm[id]][0])
}
}
public fm_menu(id)
{
new i_Menu
if(user_fm[id] > 0)
{
i_Menu = menu_create_format("\yRadio^n\wВы слушаете: \y%s", "radiod", fm_id[user_fm[id]][0])
menu_additem(i_Menu, "\yОтключить" , "1", 0)
menu_additem(i_Menu, "Случайная станция", "3", 0)
menu_additem(i_Menu, "\wСписок станций", "2", 0)
}
else
{
i_Menu = menu_create("\yRadio", "radiod")
menu_additem(i_Menu, "\yСлучайная станция", "1", 0)
menu_additem(i_Menu, "\wСписок станций", "2", 0)
}
menu_additem(i_Menu, "Слушатели", "4", 0)
menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее")
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
menu_setprop(i_Menu, MPROP_EXITNAME, "Выйти")
menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public radiod(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
if(user_fm[id] > 0)
{
user_fm[id] = 0
hudradio();Play(id)
}
else
random_fm(id)
}
case 2:fm(id)
case 3:random_fm(id)
case 4:
{
set_hudmessage(205, 150, 205, 0.85, 0.31, 2, 0.04, 20.0, 0.03, 0.02, 1)
if(!name_receiver[0])
show_hudmessage(id, "Слушателей нет :'(")
else
show_hudmessage(id, "Слушатели:^n%s", receivers)
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Play(id)
{
static motd_show[4096]
if(!user_fm[id]) show_motd(id, buffer_off, "OFF")
else
{
formatex(motd_show, charsmax(motd_show), buffer, fm_id[user_fm[id]][0], fm_id[user_fm[id]][1])
show_motd(id, motd_show, "Radio")
}
}
public radio(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
fm_menu(id)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
user_fm[id] = str_to_num(s_Data)
Play(id);hudradio()
menu_destroy(menu)
return PLUGIN_HANDLED
}
public random_fm(id)
{
new random_int = random_num(1, count);
if(random_int == user_fm[id])
{
random_fm(id); return PLUGIN_HANDLED
}
user_fm[id] = random_int;
Play(id);hudradio();
return PLUGIN_HANDLED
}
public plugin_init()
{
register_plugin("Radio", "2.0", "501")
register_clcmd("say /fm", "fm_menu")
register_clcmd("say /radio", "fm_menu")
new cvar = register_cvar("amx_miniradio_showtime", "0")
count = sizeof(fm_id)-1
add(buffer, charsmax(buffer), "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'><p align='center'><body bgcolor='black'>")
add(buffer, charsmax(buffer), "<big><b><font color='yellow'>Radio</br><font color='red'>Воспроизводится: <font color='lawngreen'>%s</b></big></font><br><p align='left'>")
add(buffer, charsmax(buffer), "<font color='orange'><b>Идет буферизация... Вы можете закрыть окно.</b></font><br>")
add(buffer, charsmax(buffer), "<font color='red'>(Если воспроизведение не началось - попробуйте включить эту станцию снова.)</font><br>")
add(buffer, charsmax(buffer), "<DIV align=center><EMBED style='WIDTH: 298px; HEIGHT: 100px' height=500 type=application/x-mplayer2 pluginspage=http://www.microsoft.com/Windows/MediaPlayer/ width=500 src='%s' ShowStatusBar='1' showtracker='0'")
add(buffer, charsmax(buffer), "displaysize='0' autosize='1' showcontrols='true' Volume='10' animationatstart='0' transparentatstart='0' autostart='true'></DIV><p align='center'><font color='grey' size='1'>vk.com/ukraine_knife</font></p></body>")
add(buffer_off, charsmax(buffer_off), "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'><title>play</title></head><body bgcolor='black'><p align='center'>")
add(buffer_off, charsmax(buffer_off) , "<big><b><font color='yellow'>Radio:</br><font color='red'>Воспроизведение отключено.</font></b></big></br></br><font color='grey' size='1'>vk.com/ukraine_knife</font></p></body>")
if(get_pcvar_float(cvar)>0.0)
set_task(get_pcvar_float(cvar),"who", random_num(100, 900), _, _,"b")
}
stock menu_create_format(const title[], const handler[], any:...)
{
new menu_title[256]
vformat(menu_title, charsmax(menu_title), title, 3)
return menu_create(menu_title, handler);
}
|