Portal SAMP
[Pedido] Dialog que detecta valor de string - 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: [Pedido] Dialog que detecta valor de string (/showthread.php?tid=1189)



Dialog que detecta valor de string - MatheuzPatoo - 15/05/2021

Vamo supor uma lista de procurados, como eu faço para detectar todos que tenham nivel de procurado e colocar em uma dialog? vi este sistema em um servidor e achei interessante, se tiver uma melhor forma deixe aqui também, vai ajudar mt!



RE: Dialog que detecta valor de string - virtuS_ - 15/05/2021

(15/05/2021 01:53)MatheuzPatoo Escreveu:
Vamo supor uma lista de procurados, como eu faço para detectar todos que tenham nivel de procurado e colocar em uma dialog? vi este sistema em um servidor e achei interessante, se tiver uma melhor forma deixe aqui também, vai ajudar mt!
Fiz um modelo aqui rápido, acho que pode lhe ajudar. 

Código:
// Este comando permite aos policiais ver todos os procurados
CMD:procurados(playerid, params[])
{
    new DialogTitle[128], DialogList[500], Wanted, CounterWanteds, pname[MAX_PLAYER_NAME];


    for(new i; i < MAX_PLAYERS; i++)
    {
        Wanted = GetPlayerWantedLevel(i);
        if(Wanted > 0)
        {
            CounterWanteds++;
            GetPlayerName(i, pname, sizeof(pname));
            format(DialogList, sizeof(DialogList), "%s%s[%i]\t%i estrelas\n", DialogList, pname, i, Wanted);
        }
    }

    if(CounterWanteds > 0)
    {
        format(DialogTitle, sizeof(DialogTitle), "Procurados (%i)", CounterWanteds);
        ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_TABLIST, DialogTitle, DialogList, "Ok", "");
    }
    else
    {
        SendClientMessage(playerid, -1, "Não há nenhum procurado no momento.");
    }

    return 1;
}



RE: Dialog que detecta valor de string - MatheuzPatoo - 15/05/2021

(15/05/2021 10:31)virtuS_ Escreveu:
(15/05/2021 01:53)MatheuzPatoo Escreveu:
Vamo supor uma lista de procurados, como eu faço para detectar todos que tenham nivel de procurado e colocar em uma dialog? vi este sistema em um servidor e achei interessante, se tiver uma melhor forma deixe aqui também, vai ajudar mt!
Fiz um modelo aqui rápido, acho que pode lhe ajudar. 

Código:
// Este comando permite aos policiais ver todos os procurados
CMD:procurados(playerid, params[])
{
    new DialogTitle[128], DialogList[500], Wanted, CounterWanteds, pname[MAX_PLAYER_NAME];


    for(new i; i < MAX_PLAYERS; i++)
    {
        Wanted = GetPlayerWantedLevel(i);
        if(Wanted > 0)
        {
            CounterWanteds++;
            GetPlayerName(i, pname, sizeof(pname));
            format(DialogList, sizeof(DialogList), "%s%s[%i]\t%i estrelas\n", DialogList, pname, i, Wanted);
        }
    }

    if(CounterWanteds > 0)
    {
        format(DialogTitle, sizeof(DialogTitle), "Procurados (%i)", CounterWanteds);
        ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_TABLIST, DialogTitle, DialogList, "Ok", "");
    }
    else
    {
        SendClientMessage(playerid, -1, "Não há nenhum procurado no momento.");
    }

    return 1;
}
Sei q é pedir muito mas para mim real aprender tem q ser explicado certinho, teria como explicar?



RE: Dialog que detecta valor de string - virtuS_ - 15/05/2021

Código:
// Este comando permite aos jogadores ver todos os procurados
CMD:procurados(playerid, params[])
{
    // Cria variáveis locais
    new DialogTitle[128], DialogList[500], Wanted, CounterWanteds, pname[MAX_PLAYER_NAME];

    // Um LOOP através de TODOS os jogadores é chamado(usando a variável "i")
    for(new i; i < MAX_PLAYERS; i++)
    {
        // Para cada jogador, armazenará na variável "Wanted" o nível de procurado dele
        Wanted = GetPlayerWantedLevel(i);
        if(Wanted > 0) // Uma condição, se o nível de procurado do jogador(que foi armazenado em "Wanted"),
        {              // for maior que 0, isso quer dizer que ele está procurado, se "Wanted" for 0, automaticamente não será contado
            CounterWanteds++; // Portanto, será adicionado mais um valor no contador "CounterWanteds" a cada vez que um procurado for achado, para no final, exibir quantos jogadores estão procurados
            GetPlayerName(i, pname, sizeof(pname)); // Aqui gera o nome de cada jogador procurado
            format(DialogList, sizeof(DialogList), "%s%s[%i]\t%i estrelas\n", DialogList, pname, i, Wanted); // E aqui com as informações pegas em cima no loop,
        }                                                                       // formatará a lista do dialog, quebrando uma linha em cada procurado
    }

    if(CounterWanteds > 0) // Com a quantidade de jogadores procurados pego no loop, essa condição irá verificar se tem mais de um procurado,
    {                      // se tiver, exibirá o dialog exibindo o "CounterWanteds"(que é a quantia de procurados) e a DialogList formata no loop
        format(DialogTitle, sizeof(DialogTitle), "Procurados (%i)", CounterWanteds);
        ShowPlayerDialog(playerid, DialogNoResponse, DIALOG_STYLE_TABLIST, DialogTitle, DialogList, "Ok", "");
    }
    else // Se a quantidade de procurados não for maior que 0(for 0), apenas mostrará uma mensagem informando
    {
        SendClientMessage(playerid, -1, "Não há nenhum procurado no momento.");
    }

    return 1;
}
Cola no vscode ou pawn p ficar mais visível para leitura