Portal SAMP
[Ajuda] Ajuda Verificação || 2 - 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] Ajuda Verificação || 2 (/showthread.php?tid=2346)



Ajuda Verificação || 2 - agi.exe - 30/04/2022

Eae blz, Too querendo verificar se oque o player digitar na DIALOG_STYLE_IMPUT e igual a um nome de algum player conectado no servidor


RE: Ajuda Verificação || 2 - Carlos Victor - 30/04/2022

Código PHP:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == dialogid)
    {
        if(
response)
        {
            if(!
strlen(inputtext))
                return 
ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUT"Titulo""ERRO: Voce deve digitar algo.\n\nDigite o nome do jogador abaixo""Confirmar""Cancelar");

            for(new 
0MAX_PLAYERSi++)
            {
                if(
IsPlayerConnected(i) && != INVALID_PLAYER_ID)
                {
                    if(!
strcmp(GetPlayerNameEx(i), inputtexttrue))
                    {
                        
SendClientMessage(playerid, -1"Jogador conectado.");
                        return 
1;
                    }
                    else
                    {
                        
SendClientMessage(playerid, -1"Jogador nao conectado.");
                        return 
1;
                    }
                }
            }
        }
    }
    return 
1;
}

CMD:test(playerid)
{
    
ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUT"Titulo""Digite o nome do jogador abaixo""Confirmar""Cancelar");
    return 
1;
}

GetPlayerNameEx(playerid)
{
    new var[
MAX_PLAYER_NAME];
    
GetPlayerName(playerid, var, sizeof(var));
    return var;


Talvez com isso você consiga algo, eu acredito que dê pra otimizar, porém atualmente oque me vem na mente é isso.


RE: Ajuda Verificação || 2 - Dr Editor - 01/05/2022

(30/04/2022 19:26)Carlos Victor Escreveu:
Código PHP:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == dialogid)
    {
        if(
response)
        {
            if(!
strlen(inputtext))
                return 
ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUT"Titulo""ERRO: Voce deve digitar algo.\n\nDigite o nome do jogador abaixo""Confirmar""Cancelar");

            for(new 
0MAX_PLAYERSi++)
            {
                if(
IsPlayerConnected(i) && != INVALID_PLAYER_ID)
                {
                    if(!
strcmp(GetPlayerNameEx(i), inputtexttrue))
                    {
                        
SendClientMessage(playerid, -1"Jogador conectado.");
                        return 
1;
                    }
                    else
                    {
                        
SendClientMessage(playerid, -1"Jogador nao conectado.");
                        return 
1;
                    }
                }
            }
        }
    }
    return 
1;
}

CMD:test(playerid)
{
    
ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUT"Titulo""Digite o nome do jogador abaixo""Confirmar""Cancelar");
    return 
1;
}

GetPlayerNameEx(playerid)
{
    new var[
MAX_PLAYER_NAME];
    
GetPlayerName(playerid, var, sizeof(var));
    return var;


Talvez com isso você consiga algo, eu acredito que dê pra otimizar, porém atualmente oque me vem na mente é isso.

Isso vai dar problema, pois vai parar na primeira volta do loop.
A condição "i != INVALID_PLAYER_ID" é desnecessária, pois sempre vai retornar true.
A lógica da construção está correta, o código não.


Código:
    new bool:jogadorOnline;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(!strcmp(GetPlayerNameEx(i), inputtext, true))
            {
                jogadorOnline = true;
                break;
            }
        }
    }
    
    if(jogadorOnline)
        SendClientMessage(playerid, -1, "Jogador conectado.");
    else
        SendClientMessage(playerid, -1, "Jogador nao conectado.");



RE: Ajuda Verificação || 2 - Carlos Victor - 01/05/2022

Corretíssimo! Agradeço pela correção.