SA-MP Forums Archive
[Ajuda] Dialog com players - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Dialog com players (/showthread.php?tid=498679)



Dialog com players - ChrisRock - 04.03.2014

Olб meus amiguinhos, estou querendo estudar isso e nгo achei em lugar nenhum.

Quero fazer um dialog_style_list com tais players que estejam com tais variбveis online no momento, porйm nгo sei como devo proceder no DialogResponse...

Por exemplo, quero que, quando clicar num player do diбlogo, eu possa ligar pra ele com o telefone pelo jogo...
Alguйm poderia me explicar como posso colocar nas funзхes?

Espero que dк pra entender, bjks


Re: Dialog com players - Dolby - 04.03.2014

pawn Код:
new string[400];
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i) {
        new nome[24];
        GetPlayerName(i, nome, 24);
        strcat(string, nome);
        strcat(string, "\n");
    }
}
ShowPlayerDialog(playerid, 5410, DIALOG_STYLE_LIST, "Lista de jogadores",string,"Ok","");
Essa й a lуgica de exibir os players online, aliбs, esse й o cуdigo pronto pra falar a verdade.

Agora basta modificar a condiзгo, verificando se o jogador i tem essa variбvel, e depois, armazenar o ID dele em uma variбvel secundбria, que pode ser obtida no DialogResponse.


Re: Dialog com players - ChrisRock - 04.03.2014

Quote:
Originally Posted by Dolby
Посмотреть сообщение
pawn Код:
new string[400];
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i) {
        new nome[24];
        GetPlayerName(i, nome, 24);
        strcat(string, nome);
        strcat(string, "\n");
    }
}
ShowPlayerDialog(playerid, 5410, DIALOG_STYLE_LIST, "Lista de jogadores",string,"Ok","");
Essa й a lуgica de exibir os players online, aliбs, esse й o cуdigo pronto pra falar a verdade.

Agora basta modificar a condiзгo, verificando se o jogador i tem essa variбvel, e depois, armazenar o ID dele em uma variбvel secundбria, que pode ser obtida no DialogResponse.
Isso eu consegui, o que eu nгo sei й o que eu tenho que colocar no DialogResponse...
faz pra exibir uma mensagem quando clicar no jogador, sу pra eu ter uma noзгo


Re: Dialog com players - Dolby - 04.03.2014

pawn Код:
new nListitem[MAX_PLAYERS]; //Global


new string[400];
new nLista;
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i) {
       
        new nome[24];
        nListitem[nLista++] = i;
        GetPlayerName(i, nome, 24);
        strcat(string, nome);
        strcat(string, "\n");
    }
}
ShowPlayerDialog(playerid, 5410, DIALOG_STYLE_LIST, "Lista de jogadores",string,"Ok","");

//Dialog Response:

if(dialogid == 5410)
{
    new sText[100];
    format(sText, 100, "Vocк clicou no player de ID: %d", nListitem[listitem]);
    SendClientMessage(playerid, -1, sText);
}
Nгo se esqueзa de declarar nListitem como variбvel global.


Re: Dialog com players - jovinon - 04.03.2014

Seguindo a lуgica do que foi feito pelo Dolby, a lista de jogadores exibida no dialog serб feita em ordem crescente de ID, sendo:

Primeiro jogador (listitem = 0) = ID 0 (caso conectado)
Segundo jogador (listitem = 1) = ID 1 (caso conectado)

Pode ocorrer o seguinte problema:
IDs conectado no server: 1, 2, 3, 5, 6 e 7, ou seja, temos players de ID 1 a 7 conectados, exceto o ID 4 e 0
Logo, o listitem vai mudar.

Para facilitar a sua vida, eu recomendo usar o OnPlayerClickPlayer, assim vocк escolhe o jogador pelo TAB para fazer a ligaзгo. Caso queira usar essa maneira, recomendo alterar a maneira de criar o dialog.

Uma das maneiras seria: listar os IDs conectador, ficando mais ou menos assim o DIALOG:
Quote:

ID Nick
0 jovinon
1 Neefas
2 "DESCONECTADO"
3 Admin
4 "DESCONECTADO"

Ficaria mais ou menos assim:

PHP код:
new string[400];
for(new 
0MAX_PLAYERSi++)
{
    if(
IsPlayerConnected(i
    {
        new 
nome[24], estring[40];
        
GetPlayerName(inome24);
        
format(estringsizeof(estring), "ID: %i\t\tNick: %s"inome);
        
strcat(stringestring);
        
strcat(string"\n");
    }
    else
    {
        
strcat(string"{FF0000}DESCONECTADO");
        
strcat(string"\n");
    }




Re: Dialog com players - Dolby - 04.03.2014

@jovinon: no cуdigo que fiz, ele tambйm 'pula' ID's desconectados, nгo havendo a necessidade de exibi-los no dialog.

Para isto servem as variбveis nListitem e nLista


Re: Dialog com players - ChrisRock - 04.03.2014

Obrigado, consegui aqui.
Abs, agradeci aos 2 pela ajuda!