Portal SAMP
[Ajuda] Sistema de DJ - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Sistema de DJ (/showthread.php?tid=283)



Sistema de DJ - [MV]LeleziN.Dr - 06/11/2020

Bom fiz esse sistema de DJ  basiado em um que vim na net ok.
Ele funciona da seguinte forma o Admin que esta logado na Rcon, utiliza do comandos /TocarMusica e /PMusicaTodos. E tem dois comandos para os players /PedirMusica e / PMusica.

Bom quando utiliso do comando /TocarMusica aparece uma Dialog para eu inserir algum link do youtube ou para mim escrever um nome do cantor e o nome da musica, mais quando confirmo o link ou o nomes aparece uma msg dizendo q pois a musica tal para tocar, mais não aparece nenhuma musica tocando e buga o servidor, pq fica aparecendo a Dialog para Logar no Servidor, mais quando logo não desbuga, poderiam mim ajuda??

Código:
#include <a_samp>

#define D_MUSICA        1
#define D_AJUDA         2
#define D_PEDIRMUSICA   3

#define COR_ERRO        0xFF0000FF
#define COR_INFO        0x00FF00FF
#define COR_DICA        0x0000FFFF

new pname[MAX_PLAYER_NAME];
new bool:PediuMusica[MAX_PLAYERS];

public OnFilterScriptInit()
{
    print("\n   [FS] Música carregado by [TSVR]LeleziN.Dr   ");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    PediuMusica[playerid] = false;
    return 1;
}

public OnPlayerSpawn(playerid)
{
    static nomedoserver[64], str[128];
    //GetConsoleVarAsString("hostname", nomedoserver, sizeof(nomedoserver));
    format(str, sizeof(str), "O %s contém um sistema de música feito por [TSVR]LeleziN.Dr | CMD: /amusica ", nomedoserver);
    SendClientMessage(playerid, COR_DICA, str);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == D_MUSICA)
    {
        if(!response)
        {
            SendClientMessage(playerid, COR_INFO, "DICA: Comandos do Sistema de Música: ( /amusica )");
        }
        else
        {
            if(strlen(inputtext) < 1)
            {
                SendClientMessage(playerid, COR_ERRO, "ERRO: Insira alguma música!");
                ShowPlayerDialog(playerid, D_MUSICA, 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");
            }
            else
            {
            static i, str[128], str2[104+MAX_PLAYER_NAME];
            GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
            for( i = GetMaxPlayers() - 1; i > -1; --i)
            {
                if(IsPlayerConnected(i))
                {
                format(str, sizeof(str), "https://6t.pe/?song=%s", inputtext);
                PlayAudioStreamForPlayer(i, str);
                format(str2, sizeof(str2), "[ADMIN] %s colocou a música %s, digite /pmusica se quiser parar!", pname, inputtext);
                }
                }
            SendClientMessageToAll(COR_INFO, str2);
            }
        }
        return 1;
    }
    if(dialogid == D_PEDIRMUSICA)
    {
        if(!response)
        {
            SendClientMessage(playerid, COR_DICA, "DICA: Comandos do Sistema de Música: ( /amusica )");
        }
        else
        {
            if(strlen(inputtext) < 1)
            {
                SendClientMessage(playerid, COR_ERRO, "ERRO: Insira alguma música!");
                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");
            }
            else
            {
            SendClientMessage(playerid, COR_DICA, "AVISO: Música enviada com sucesso aos ADMINS!");
               PediuMusica[playerid] = true;
            SetTimerEx("PedidoDeMusica", 120000, false, "d", playerid);
            static i, str2[104+MAX_PLAYER_NAME];
            GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
            for( i = GetMaxPlayers() - 1; i > -1; --i)
            {
                if(IsPlayerAdmin(i))
                {
                format(str2, sizeof(str2), "ATENÇÃO ADMINS: %s está pedindo a música %s", pname, inputtext);
                SendClientMessage(i, COR_INFO, str2);
                }
                }
            }
        }
        return 1;
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/tocarmusica", true)==0)
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_ERRO, "ERRO: Comando disponível apenas para admins RCON!");
    ShowPlayerDialog(playerid, D_MUSICA, 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");
    return 1;
}
if (strcmp(cmdtext, "/pmusicatodos", true)==0)
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR_ERRO, "ERRO: Comando disponível apenas para admins RCON!");
    static i,str[104+MAX_PLAYER_NAME];
      GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    for( i = GetMaxPlayers() - 1; i > -1; --i)
    {
    if(IsPlayerConnected(i))
    {
    StopAudioStreamForPlayer(i);
    }
    }
    format(str, sizeof(str), "[ADMIN] %s parou a música atual!", pname);
    SendClientMessageToAll(COR_INFO, str);
    return 1;
}
if (strcmp(cmdtext, "/pmusica", true)==0)
{
    StopAudioStreamForPlayer(playerid);
    SendClientMessage(playerid, COR_INFO, "INFO: A reprodução de sons foi parada!");
    return 1;
}
if (strcmp(cmdtext, "/pedirmusica", true)==0)
{
    if(PediuMusica[playerid] == false)
    {
    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");
    }
    else
    {
    SendClientMessage(playerid, COR_ERRO, "ERRO: Aguarde 2 Minutos para pedir outra música!");
    }
    return 1;
}
if (strcmp(cmdtext, "/amusica", true)==0)
{
    if(IsPlayerAdmin(playerid))
    {
    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", "");
    }
    else
    {
    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", "");
    }
    return 1;
}
return 1;
}

//Funções
forward PedidoDeMusica(playerid);
public PedidoDeMusica(playerid)
{
    PediuMusica[playerid] = false;
    return 1;
}
//Comandos



[img]file:///C:/Users/usuario/Documents/GTA%20San%20Andreas%20User%20Files/SAMP/screens/sa-mp-001.png[/img]


                                                                    > Servidor em Construção <
                                             • TSVR Brasil RPG 
                                                         - Em breve -


RE: Sistema de DJ - Levi.M - 06/11/2020

Os links do Youtube não funcionam no SA-MP, precisará upar suas músicas usando algum site, recomendo Mediafire ou Dropbox. Relação no bug da Dialog, é conflito de ID, troque os ids das #defines


EDIT:

Essa aqui é uma música que coloquei no Dropbox, toca no meu servidor corretamente, apenas colocar um "=1" no final do link das suas músicas.

Exemplo: https://www.dropbox.com/s/1n2ueyv3zg3knrj/Travis%20Scott%20ft.%20Quavo%20Moon%20Rock%20%28Music%20Video%29.mp3?dl=1


RE: Sistema de DJ - xbruno1000x - 07/11/2020

1° problema:
o samp não reproduz links diretos do youtube, você deve upar em sites como dropbox, ou usar o https://www.mp3juices.cc/.
2° problema:
Os ID's das defines estão em conflito com as de login do Gamemode.