SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 31/05/2019, 09:45 AM   #1
binnyl
Big Clucker
 
Join Date: Aug 2017
Posts: 178
Reputation: 2
Default Como lidar com esse dialog

PHP Code:
PresosLista(playerid) {
    new 
str[100], final[512], contador 0;
    foreach(new 
Player) {
        if(
preso[i] == && GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid)) {
            if(
GetSecondsInMin(presotime[i]) > 0) {
                
format(strsizeof(str), "%s (%i min)\n"PlayerName(i), GetSecondsInMin(presotime[i]) );
                
strcat(final, str);
                
contador++;
            }
        }
    }
    if(
contador 0ShowPlayerDialog(playerid406DIALOG_STYLE_LIST"Prisoners", final, "Select""Cancel");
    else 
SendClientMessage(playerid, -1"There is no prisioners in this prision!");
    return 
1;

Nesse dialog, como detectar o ID do player que foi escolhido no ondialogresponse?
binnyl is offline   Reply With Quote
Old 31/05/2019, 11:50 AM   #2
G4M30V3R
Big Clucker
 
G4M30V3R's Avatar
 
Join Date: Jun 2016
Posts: 107
Reputation: 17
Default Re: Como lidar com esse dialog

G4M30V3R is offline   Reply With Quote
Old 31/05/2019, 12:29 PM   #3
binnyl
Big Clucker
 
Join Date: Aug 2017
Posts: 178
Reputation: 2
Default Re: Como lidar com esse dialog

Sim, mas nessa callback eu quero pegar o ID do player que mostra aqui:
format(str, sizeof(str), "%s (%i min)\n", PlayerName(i), GetSecondsInMin(presotime[i]) );

Isso pode variar de acordo com a prisão e quem tiver lá na hora
binnyl is offline   Reply With Quote
Old 31/05/2019, 12:54 PM   #4
G4M30V3R
Big Clucker
 
G4M30V3R's Avatar
 
Join Date: Jun 2016
Posts: 107
Reputation: 17
Default Re: Como lidar com esse dialog

Não compilei e não testei.

Code:
new arrPresos[MAX_PLAYERS];

PresosLista(playerid) { 
    new str[100], final[512], contador = 0; 
    foreach(new i : Player) { 
        if(preso[i] == 1 && GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid)) { 
            if(GetSecondsInMin(presotime[i]) > 0) { 
                arrPresos[i] = contador;
                format(str, sizeof(str), "%s (%i min)\n", PlayerName(i), GetSecondsInMin(presotime[i]) ); 
                strcat(final, str); 
                contador++; 
            } 
        } 
    } 
    if(contador > 0) ShowPlayerDialog(playerid, 406, DIALOG_STYLE_LIST, "Prisoners", final, "Select", "Cancel"); 
    else SendClientMessage(playerid, -1, "There is no prisioners in this prision!"); 
    return 1; 
}  

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 406)
    {
        if(response)
        {
            foreach(new i : Player)
            {
                if(arrPresos[i] == listitem)
                {
                    // codigo
                }
            }
        }
        return 1;
    }
 
    return 0;
}
G4M30V3R is offline   Reply With Quote
Old 31/05/2019, 01:04 PM   #5
weex
Big Clucker
 
Join Date: Dec 2016
Posts: 127
Reputation: 1
Default Re: Como lidar com esse dialog

Quote:
Originally Posted by G4M30V3R View Post
Não compilei e não testei.

Code:
new arrPresos[MAX_PLAYERS];

PresosLista(playerid) { 
    new str[100], final[512], contador = 0; 
    foreach(new i : Player) { 
        if(preso[i] == 1 && GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid)) { 
            if(GetSecondsInMin(presotime[i]) > 0) { 
                arrPresos[i] = contador;
                format(str, sizeof(str), "%s (%i min)\n", PlayerName(i), GetSecondsInMin(presotime[i]) ); 
                strcat(final, str); 
                contador++; 
            } 
        } 
    } 
    if(contador > 0) ShowPlayerDialog(playerid, 406, DIALOG_STYLE_LIST, "Prisoners", final, "Select", "Cancel"); 
    else SendClientMessage(playerid, -1, "There is no prisioners in this prision!"); 
    return 1; 
}  

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 406)
    {
        if(response)
        {
            foreach(new i : Player)
            {
                if(arrPresos[i] == listitem)
                {
                    // codigo
                }
            }
        }
        return 1;
    }
 
    return 0;
}

nem precisa testar
oq vc quis fazer aqui? arrPresos[i] = contador;

se alguem souber como resolver esse codigo vou usar no meu /presos, bem melhor que o padrao
weex is offline   Reply With Quote
Old 31/05/2019, 01:08 PM   #6
G4M30V3R
Big Clucker
 
G4M30V3R's Avatar
 
Join Date: Jun 2016
Posts: 107
Reputation: 17
Default Re: Como lidar com esse dialog

Quote:
Originally Posted by weex View Post
nem precisa testar
oq vc quis fazer aqui? arrPresos[i] = contador;
O ID da lista fica vinculado ao ID do jogador.
G4M30V3R is offline   Reply With Quote
Old 31/05/2019, 04:40 PM   #7
RodrigoMSR
High-roller
 
RodrigoMSR's Avatar
 
Join Date: Mar 2015
Location: Paraná - Brazil
Posts: 1,027
Reputation: 137
Default Re: Como lidar com esse dialog

PHP Code:
new dialogListItems[MAX_PLAYERS][60]; //vai suportar até 60 itens clicáveis na dialog, você pode alterar isso

PresosLista(playerid) { 
    new 
str[100], final[512], contador 0
    foreach(new 
Player) { 
        if(
preso[i] == && GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid)) { 
            if(
GetSecondsInMin(presotime[i]) > 0) { 
                
format(strsizeof(str), "%s (%i min)\n"PlayerName(i), GetSecondsInMin(presotime[i]) ); 
                
strcat(final, str);
                
dialogListItems[playerid][contador] = i;
                
contador++; 
            } 
        } 
    } 
    if(
contador 0ShowPlayerDialog(playerid406DIALOG_STYLE_LIST"Prisoners", final, "Select""Cancel"); 
    else 
SendClientMessage(playerid, -1"There is no prisioners in this prision!"); 
    return 
1
}  

//OnDialogResponse
if(listitem >= sizeof(dialogListItems[])) return 1//evitar "array index out of bounds"
new id dialogListItems[playerid][listitem]; //ID do jogador clicado 
__________________
sttserver.net

RodrigoMSR is online now   Reply With Quote
Old 10/06/2019, 02:46 AM   #8
binnyl
Big Clucker
 
Join Date: Aug 2017
Posts: 178
Reputation: 2
Default Re: Como lidar com esse dialog

Quote:
Originally Posted by RodrigoMSR View Post
PHP Code:
new dialogListItems[MAX_PLAYERS][60]; //vai suportar até 60 itens clicáveis na dialog, você pode alterar isso

PresosLista(playerid) { 
    new 
str[100], final[512], contador 0
    foreach(new 
Player) { 
        if(
preso[i] == && GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid)) { 
            if(
GetSecondsInMin(presotime[i]) > 0) { 
                
format(strsizeof(str), "%s (%i min)\n"PlayerName(i), GetSecondsInMin(presotime[i]) ); 
                
strcat(final, str);
                
dialogListItems[playerid][contador] = i;
                
contador++; 
            } 
        } 
    } 
    if(
contador 0ShowPlayerDialog(playerid406DIALOG_STYLE_LIST"Prisoners", final, "Select""Cancel"); 
    else 
SendClientMessage(playerid, -1"There is no prisioners in this prision!"); 
    return 
1
}  

//OnDialogResponse
if(listitem >= sizeof(dialogListItems[])) return 1//evitar "array index out of bounds"
new id dialogListItems[playerid][listitem]; //ID do jogador clicado 

Muito foda velho, valeu +rep
binnyl is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Pedido] Código para lidar com jogadores não sincronizados? gmstrikker Português/Portuguese 11 19/01/2019 02:52 PM
[Tutorial] Jogadores dessincronizados e como lidar com eles BrunoBM23 Lançamentos/Releases 14 25/11/2018 02:24 PM
[Ajuda] Como passo esse dialog para um comando ? eoqtrabhir Português/Portuguese 16 11/05/2018 08:47 PM
[Pedido] LIDAR COM ITENS DE MOCHILA MtPlayerZ Português/Portuguese 1 21/06/2017 02:06 PM
[Ajuda] Como Bloquear Esse Dialog Por Segundos WendeLKILL Português/Portuguese 3 30/03/2014 12:04 AM


All times are GMT. The time now is 12:20 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.