ViDa_LoKa

Sistema de Tocar Músicas Para Todos

Jan 16th, 2018
670
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     __             _    ___ ____           __          __ __
  3.    / /_  __  __   | |  / (_) __ \____ _   / /   ____  / //_/___ _
  4.   / __ \/ / / /   | | / / / / / / __ `/  / /   / __ \/ ,< / __ `/
  5.  / /_/ / /_/ /    | |/ / / /_/ / /_/ /  / /___/ /_/ / /| / /_/ /
  6. /_.___/\__, /     |___/_/_____/\__,_/  /_____/\____/_/ |_\__,_/
  7.       /____/
  8.  
  9. Não Retire os Créditos!!!
  10. */
  11.  
  12. #include <a_samp> //by SA-MP Team
  13. #include <Pawn.CMD> //by UrShadow
  14. //Também compatível com ZCMD
  15. //#include <zcmd> //by Zeex
  16.  
  17. #define VERSAO "v1.1"
  18.  
  19. #define minutos(%0) (1000 * %0 * 60)
  20.  
  21. #define V   "{FF0000}"
  22. #define B   "{FFFFFF}"
  23. #define A   "{0000FF}"
  24.  
  25. enum
  26. {
  27.     D_TIPOMUSICA = 22000,//Veja se não há outras dialogs com o mesmo id em seus FS/GM se tiver mude!
  28.     D_MUSICADIR,
  29.     D_MUSICANOME,
  30.     D_MUSICAYTB,
  31.     D_AJUDA,
  32.     D_PEDIRMUSICA
  33. };
  34.  
  35. enum Player_Data
  36. {
  37.     Nick[MAX_PLAYER_NAME]
  38. };
  39. new Player_Info[MAX_PLAYERS][Player_Data];
  40.  
  41. static bool: PediuMusica[MAX_PLAYERS char];
  42.  
  43. public OnFilterScriptInit()
  44. {
  45.     print("\n   [FS] Música "VERSAO" carregado by ViDa_LoKa");
  46.     print("        Não Retire os Créditos!!!       \n");
  47.     return true;
  48. }
  49.  
  50. public OnPlayerConnect(playerid)
  51. {
  52.     GetPlayerName(playerid, Player_Info[playerid][Nick], MAX_PLAYER_NAME);
  53.     PediuMusica{playerid} = false;
  54.     return true;
  55. }
  56.  
  57. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  58. {
  59.     switch(dialogid)
  60.     {
  61.         case D_TIPOMUSICA:
  62.         {
  63.             if !response *then
  64.             {
  65.                 SendClientMessage(playerid, -1, ""A"DICA: "B"Comandos do Sistema de Música: "V"( /amusica )");
  66.             }
  67.             else
  68.             {
  69.                 switch(listitem)
  70.                 {
  71.                     case 0: ShowPlayerDialog(playerid, D_MUSICADIR, DIALOG_STYLE_INPUT, "Música para todos", ""B"Insira o link direto da Música desejada!\n"A"[AVISO]: "B"Funcional apenas para o link de download da Música\n", "Tocar", "Fechar");
  72.                     case 1: ShowPlayerDialog(playerid, D_MUSICANOME, DIALOG_STYLE_INPUT, "Música para todos", ""B"Insira o nome da Música desejada!\n"A"[AVISO]: "B"Coloque o cantor e o nome da Música ou o link do youtube para melhores resultados\n", "Tocar", "Fechar");
  73.                     case 2: ShowPlayerDialog(playerid, D_MUSICAYTB, DIALOG_STYLE_INPUT, "Música para todos", ""B"Insira o id do youtube da Música desejada!\n"A"[EXEMPLO]: "B"https://www.youtube.com/watch?v="V"GbI7QLCpO70 "B"nesse link o ID é este: "V"\"GbI7QLCpO70\"\n", "Tocar", "Fechar");
  74.                 }
  75.             }
  76.         }
  77.         case D_MUSICADIR:
  78.         {
  79.             if !response *then
  80.             {
  81.                 SendClientMessage(playerid, -1, ""A"DICA: "B"Comandos do Sistema de Música: "V"( /amusica )");
  82.             }
  83.             else
  84.             {
  85.                 if strlen(inputtext) < 1 *then
  86.                 {
  87.                     SendClientMessage(playerid, -1, ""V"ERRO: "B"Insira alguma Música!");
  88.                     ShowPlayerDialog(playerid, D_MUSICADIR, DIALOG_STYLE_INPUT, "Música para todos", ""B"Insira o link direto da Música desejada!\n"A"[AVISO]: "B"Funcional apenas para link de stream (link de download) da Música\n", "Tocar", "Fechar");
  89.                 }
  90.                 else
  91.                 {
  92.                     static str[128], str2[104];
  93.  
  94.                     for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  95.                     {
  96.                         format(str, sizeof(str), "%s", inputtext);
  97.                         PlayAudioStreamForPlayer(i, str);
  98.                         format(str2, sizeof(str2), ""A"[ADMIN] "V"%s "B"colocou uma Música, digite /pmusica se quiser parar!", Player_Info[playerid][Nick]);
  99.                     }
  100.                     SendClientMessageToAll(-1, str2);
  101.                 }
  102.             }
  103.         }
  104.  
  105.         case D_MUSICANOME:
  106.         {
  107.             if !response *then
  108.             {
  109.                 SendClientMessage(playerid, -1, ""A"DICA: "B"Comandos do Sistema de Música: "V"( /amusica )");
  110.             }
  111.             else
  112.             {
  113.                 if strlen(inputtext) < 1 *then
  114.                 {
  115.                     SendClientMessage(playerid, -1, ""V"ERRO: "B"Insira alguma Música!");
  116.                     ShowPlayerDialog(playerid, D_MUSICAYTB, DIALOG_STYLE_INPUT, "Música para todos", ""B"Insira o id do youtube da Música desejada!\n"A"[EXEMPLO]: "B"https://www.youtube.com/watch?v="V"GbI7QLCpO70 "B"nesse link o ID é este: "V"\"GbI7QLCpO70\"\n", "Tocar", "Fechar");
  117.                 }
  118.                 else
  119.                 {
  120.                     static str[128], str2[104];
  121.  
  122.                     for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  123.                     {
  124.                         format(str, sizeof(str), "https://up-m.ga/?cancion=%s", inputtext);
  125.                         PlayAudioStreamForPlayer(i, str);
  126.                         format(str2, sizeof(str2), ""A"[ADMIN] "V"%s "B"colocou a Música "V"%s, "B"digite /pmusica se quiser parar!", Player_Info[playerid][Nick], inputtext);
  127.                     }
  128.                     SendClientMessageToAll(-1, str2);
  129.                 }
  130.             }
  131.         }
  132.  
  133.         case D_MUSICAYTB:
  134.         {
  135.             if !response *then
  136.             {
  137.                 SendClientMessage(playerid, -1, ""A"DICA: "B"Comandos do Sistema de Música: "V"( /amusica )");
  138.             }
  139.             else
  140.             {
  141.                 if strlen(inputtext) < 1 *then
  142.                 {
  143.                     SendClientMessage(playerid, -1, ""V"ERRO: "B"Insira alguma Música!");
  144.                     ShowPlayerDialog(playerid, D_MUSICANOME, DIALOG_STYLE_INPUT, "Música para todos", "Insira o nome da Música desejada!\n(AVISO): Coloque o cantor e o nome da Música ou o link do youtube para melhores resultados\n", "Tocar", "Cancelar");
  145.                 }
  146.                 else
  147.                 {
  148.                     static str[128], str2[104];
  149.  
  150.                     for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  151.                     {
  152.                         format(str, sizeof(str), "http://ultramendoza-mp3.herokuapp.com/download?v=%s", inputtext);
  153.                         PlayAudioStreamForPlayer(i, str);
  154.                         format(str2, sizeof(str2), ""A"[ADMIN] "V"%s "B"colocou uma Música, "B"digite /pmusica se quiser parar!", Player_Info[playerid][Nick]);
  155.                     }
  156.                     SendClientMessageToAll(-1, str2);
  157.                 }
  158.             }
  159.         }
  160.  
  161.         case D_PEDIRMUSICA:
  162.         {
  163.             if !response *then
  164.             {
  165.                 SendClientMessage(playerid, -1, ""A"DICA: "B"Comandos do Sistema de Música: "V"( /amusica )");
  166.             }
  167.             else
  168.             {
  169.                 if strlen(inputtext) < 1 *then
  170.                 {
  171.                     SendClientMessage(playerid, -1, ""V"ERRO: "B"Insira alguma Música!");
  172.                     ShowPlayerDialog(playerid, D_PEDIRMUSICA, DIALOG_STYLE_INPUT, "Pedir uma Música", "Insira o nome da Música desejada!\n[AVISO]: Coloque o cantor e o nome da Música ou o link do youtube para melhores resultados\n", "Pedir", "Cancelar");
  173.                 }
  174.                 else
  175.                 {
  176.                     SendClientMessage(playerid, -1, ""A"AVISO: "B"Música enviada com sucesso aos "A"ADMINS!");
  177.                     PediuMusica{playerid} = true;
  178.                     SetTimerEx("ResetarPedidoDeMusica", minutos(2), false, "d", playerid);
  179.                     static str2[104];
  180.  
  181.                     for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  182.                     {
  183.                         if IsPlayerAdmin(i) *then
  184.                         {
  185.                             format(str2, sizeof(str2), ""A"ATENÇÃO ADMINS: "V"%s "B"está pedindo a Música "A"%s", Player_Info[playerid][Nick], inputtext);
  186.                             SendClientMessage(i, -1, str2);
  187.                         }
  188.                     }
  189.                 }
  190.             }
  191.         }
  192.     }
  193.     return false;
  194. }
  195.  
  196. forward ResetarPedidoDeMusica(playerid);
  197. public ResetarPedidoDeMusica(playerid)
  198. {
  199.     PediuMusica{playerid} = false;
  200.     return true;
  201. }
  202. //Comandos
  203. CMD:tocarmusica(playerid, params[])
  204. {
  205.     if !IsPlayerAdmin(playerid) *then
  206.     return SendClientMessage(playerid, -1, ""V"ERRO: "B"Comando disponível apenas para admins RCON!");
  207.  
  208.     ShowPlayerDialog(playerid, D_TIPOMUSICA, DIALOG_STYLE_LIST, "Tipo de Música", "Música pelo link direto\nMúsica pelo nome\nMúsica pelo link do Youtube", "Ok", "Fechar");
  209.     return true;
  210. }
  211.  
  212. CMD:pmusicatodos(playerid, params[])
  213. {
  214.     if !IsPlayerAdmin(playerid) *then
  215.     return SendClientMessage(playerid, -1, ""V"ERRO: "B"Comando disponível apenas para admins RCON!");
  216.  
  217.     for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
  218.     {
  219.         if IsPlayerConnected(i) *then
  220.         {
  221.             StopAudioStreamForPlayer(i);
  222.         }
  223.     }
  224.     static str[128];
  225.     format(str, sizeof(str), "[ADMIN] %s parou a Música atual!", Player_Info[playerid][Nick]);
  226.     SendClientMessageToAll(-1, str);
  227.     return true;
  228. }
  229.  
  230. CMD:pmusica(playerid, params[])
  231. {
  232.     StopAudioStreamForPlayer(playerid);
  233.     SendClientMessage(playerid, -1, ""A"INFO: "B"A reprodução de sons foi parada!");
  234.     return true;
  235. }
  236.  
  237. CMD:pedirmusica(playerid, params[])
  238. {
  239.     if !PediuMusica{playerid} *then
  240.     {
  241.         ShowPlayerDialog(playerid, D_PEDIRMUSICA, DIALOG_STYLE_INPUT, "Pedir uma Música", "Insira o nome da Música desejada!\n[AVISO]: Coloque o cantor e o nome da Música ou o link do youtube para melhores resultados\n", "Pedir", "Cancelar");
  242.     }
  243.     else
  244.     {
  245.         SendClientMessage(playerid, -1, ""V"ERRO: "B"Aguarde 2 Minutos para pedir outra Música!");
  246.     }
  247.     return true;
  248. }
  249.  
  250. CMD:amusica(playerid, params[])
  251. {
  252.     if !IsPlayerAdmin(playerid) *then
  253.     {
  254.         ShowPlayerDialog(playerid, D_AJUDA, DIALOG_STYLE_MSGBOX, "Comandos de Música", "/pmusica - Para a Música atual\n/pedirmusica - Envia a Música desejada para os admins online\n", "Ok", "");
  255.     }
  256.     else
  257.     {
  258.         ShowPlayerDialog(playerid, D_AJUDA, DIALOG_STYLE_MSGBOX, "Comandos de Música", "COMANDOS ADM: \n\n/tocarmusica - Toca uma Música para todos pelo nome ou link do youtube\n/pmusicatodos - Para a Música de todos\n\nCOMANDOS PLAYER: \n\n/pmusica - Para a Música atual\n/pedirmusica - Envia a Música desejada para os admins online\n", "Ok", "");
  259.     }
  260.     return true;
  261. }
RAW Paste Data