[Ajuda] Como pegar o ID do admin no dialog.
#1

Pessoal criei um comando /admins.

E irб aparecer um dialog mostrando so admins online e os botхes abaixo "Fechar" , Particular

Quando clicar em particular irб aparecer um dialogo imput para o jogador colocar o texto e eu gostaria que esse texto que o jogador coloca-se envia-se ao administrador que ele clicou no dialog anterior.

O foda й que eu nгo sei pegar o ID do admin que ele clicou.

pawn Code:
new
MP_relatorio[MAX_PLAYERS];

CMD:admins(playerid)
{
    new StatusOnline[30],
    StringCat[1000],
    ContarAdmins;
    foreach(Player, i)
    {
        if(JogadorLogado[i] == true)
        {
            if(INFO_P[i][Nivel_Admin_P] > 0)
            {

                if(Verificar_Modo_ADM[i] == 0) StatusOnline = "{FF2121}Jogando";
                if(Verificar_Modo_ADM[i] == 1) StatusOnline = "{43FF21}Trabalhando";
                if(Verificar_Modo_ADM[i] == 2) StatusOnline = "{FF5521}AFK / AUSENTE";

                format(String, sizeof(String), "id\tnome\tcargo\tstatus\t\n%d\t%s\t%s\t%s", i, Nome_Conta[i], CargoADM(i), StatusOnline);
                strcat(StringCat, String);
                MP_relatorio[playerid] = i;
                ContarAdmins++;
            }
        }
    }
    if(ContarAdmins == 0)
    {
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_MSGBOX, "{FFFFFF}({43FF21}0{FFFFFF}) Membro da staff online.", "\n"Vermelho"[!] "Branco"Todos os Membros da equipe estгo offiline no momento.", "X", "");
    }
    else if(ContarAdmins == 1)
    {
        format(String, sizeof(String), "{FFFFFF}({43FF21}1{FFFFFF}) Membro da staff online.");
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_TABLIST_HEADERS, String, StringCat, "X", "Particular");
    }
    else
    {
        format(String, sizeof(String), "{FFFFFF}({43FF21}%s{FFFFFF}) Membros da staff online.", ContarAdmins);
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_TABLIST_HEADERS, String, StringCat, "X", "Particular");
    }
    return 1;
}

    if(dialogid == 1018)
    {
        if(response)
        {

        }
        else
        {
            ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
        }
        return true;
    }

    if(dialogid == 47)
    {
        if(response)
        {
            if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "<<<");
            if(strlen(inputtext) < 1 || strlen(inputtext) > 40) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Coloque de 1 a 40 caracteres."), ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "<<<");
            if(!IsValidText(inputtext)) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "<<<");
            format(STG,sizeof(STG), ": Mensagem particular : {FFFFFF}MP de %s (%d): %s", Nome_Conta[playerid], playerid, inputtext);
            SendClientMessage(MP_relatorio[playerid], 0xFFE328FF , STG);
            SendClientMessage(playerid,0xFFE328FF,": Mensagem Particular : {FFFFFF}Sua mensagem particular foi enviada com sucesso, aguarde uma resposta!");  
        }
        else
        {

        }
        return true;
    }
Reply
#2

?Alguйm
Reply
#3

pawn Code:
format(String, sizeof(String), "Id:%i\tnome:%s\tcargo:%s\tstatus:%s", i, Nome_Conta[i], CargoADM(i), StatusOnline);
Reply
#4

Quote:
Originally Posted by FallweN
View Post
pawn Code:
format(String, sizeof(String), "Id:%i\tnome:%s\tcargo:%s\tstatus:%s", i, Nome_Conta[i], CargoADM(i), StatusOnline);
Cara o meu problema nгo й esse. Eu quero pegar o ID do admin que o jogador clicou na lista

Tem 3 admins online


Jumento ID: 4
Anta ID: 12
e vocк FallweN ID: 6

Ai eu clico na anta, ops vocк.

Ai quando eu clica em vc vai aparecer o dialog lб pra min te enviar uma mensagem particular
e essa mensagem vai ser enviada pra vc.

Por isso eu quero pegar o ID do admin que ele clicou na lista.
Reply
#5

Utilize new AdminList[MAX_PLAYERS][MAX_ADMINS];

OBS: Use #define MAX_ADMINS 25 // Poe a quantidade que vocк achar legal.

Daн vocк sу precisa usar AdminList[playerid][count] = i;
OBSІ: Use um count dentro do loop sempre aumentando +1 (count++).

Quando usar em OnDialogResponse, vocк usa AdminList[playerid][listitem];
Reply
#6

Armazena o ID do administrador listado em uma variбvel.

Cria a variбvel global, quando for listar armazena o ID apresentado pelo loop na variбvel.. Na callback OnDialogResponse usa a variбvel que criou para manipular o ID da forma que quiser.

@Edit Postei junto com o Wesley a mesma lуgica '-'
Reply
#7

Entгo desta forma estaria correta?

pawn Code:
foreach(Player, i)
    {
        if(JogadorLogado[i] == true)
        {
            if(INFO_P[i][Nivel_Admin_P] > 0)
            {

                if(Verificar_Modo_ADM[i] == 0) StatusOnline = "{FF2121}Jogando";
                if(Verificar_Modo_ADM[i] == 1) StatusOnline = "{43FF21}Trabalhando";
                if(Verificar_Modo_ADM[i] == 2) StatusOnline = "{FF5521}AFK / AUSENTE";

                format(String, sizeof(String), "id\tnome\tcargo\tstatus\t\n%d\t%s\t%s\t%s", i, Nome_Conta[i], CargoADM(i), StatusOnline);
                strcat(StringCat, String);
                AdminList[Maximo_Admins][ContarAdmins] = i;
                ContarAdmins++;
            }
        }
    }


            if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "<<<");
            if(strlen(inputtext) < 1 || strlen(inputtext) > 40) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Coloque de 1 a 40 caracteres."), ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "<<<");
            if(!IsValidText(inputtext)) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "<<<");
            format(STG,sizeof(STG), ": Mensagem particular : {FFFFFF}MP de %s (%d): %s", Nome_Conta[playerid], playerid, inputtext);
            SendClientMessage(AdminList[Maximo_Admins][ContarAdmins], 0xFFE328FF , STG);
            SendClientMessage(playerid,0xFFE328FF,": Mensagem Particular : {FFFFFF}Sua mensagem particular foi enviada com sucesso, aguarde uma resposta!");
Reply
#8

anta й meu pau na sua garganta
Reply
#9

Quote:
Originally Posted by BLacksKrillex
View Post
anta й meu pau na sua garganta
Sai dai cabeзa piroca raspada, teu pai й homem.
Reply
#10

Quote:
Originally Posted by Duk
View Post
Sai dai cabeзa piroca raspada, teu pai й homem.
piroca raspada ja morreu quem manda no seu cъ agora й eu!
Reply
#11

Tira esse Maximo_Admins e poe playerid que vai funcionar normalmente.
Reply
#12

Crie uma variбvel global: "AdminClicado[MAX_PLAYERS]",
depois em sua resposta de dialogo, vocк pode trabalhar com ela! junto ao comando!

Espero ter ajudado
Reply
#13

Quando eu envio a mensagem nгo acontece nada, nem a mensagem й enviada para o admin, o dialog some.

pawn Code:
new Admin_Lista[MAX_PLAYERS][Maximo_Admins];

CMD:admins(playerid)
{
    new StatusOnline[30], ContarAdmins,
    StringCat[1000];
    foreach(Player, i)
    {
        if(JogadorLogado[i] == true)
        {
            if(INFO_P[i][Nivel_Admin_P] > 0)
            {

                if(Verificar_Modo_ADM[i] == 0) StatusOnline = "{FF2121}Jogando";
                if(Verificar_Modo_ADM[i] == 1) StatusOnline = "{43FF21}Trabalhando";
                if(Verificar_Modo_ADM[i] == 2) StatusOnline = "{FF5521}AFK / AUSENTE";

                format(String, sizeof(String), "id\tnome\tcargo\tstatus\t\n%d\t%s\t%s\t%s", i, Nome_Conta[i], CargoADM(i), StatusOnline);
                strcat(StringCat, String);
                Admin_Lista[playerid][ContarAdmins] = i;
                ContarAdmins++;
            }
        }
    }
    if(ContarAdmins == 0)
    {
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_MSGBOX, "{FFFFFF}({43FF21}0{FFFFFF}) Membro da staff online.", "\n"Vermelho"[!] "Branco"Todos os Membros da equipe estгo offiline no momento.", "Particular", "X");
    }
    else if(ContarAdmins == 1)
    {
        format(String, sizeof(String), "{FFFFFF}({43FF21}1{FFFFFF}) Membro da staff online.");
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_TABLIST_HEADERS, String, StringCat, "Particular", "X");
    }
    else
    {
        format(String, sizeof(String), "{FFFFFF}({43FF21}%s{FFFFFF}) Membros da staff online.", ContarAdmins);
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_TABLIST_HEADERS, String, StringCat, "Particular", "X");
    }
    return 1;
}

   if(dialogid == 1018)
    {
        if(response)
        {
            //if(ContarAdmins == 0) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Nгo hб nenhum membro da staff online para vocк enviar uma mensagem particular!"),
            ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
        }
        else
        {
     
        }
        return true;
    }

    if(dialogid == 47)
    {
        if(response)
        {
            if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
            if(strlen(inputtext) < 1 || strlen(inputtext) > 40) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Coloque de 1 a 40 caracteres."), ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
            if(!IsValidText(inputtext)) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
            format(STG,sizeof(STG), ": MP : {FFFFFF}MP de %s (%d): %s", Nome_Conta[playerid], playerid, inputtext);
            SendClientMessage(Admin_Lista[playerid][listitem], 0xFFE328FF , STG);
            SendClientMessage(playerid, 0xFFE328FF,": MP : {FFFFFF}Sua mensagem particular foi enviada com sucesso, aguarde uma resposta!");  
        }
        else
        {

        }
        return true;
    }

Percebi que o Admin_Lista[playerid][listitem] Quando eu coloco na mensagem, ele nгo faz a mensagem proseguir
Reply
#14

pawn Code:
CMD:admins(playerid)
{
    new StatusOnline[30], ContarAdmins = 0,
    StringCat[1000];
    strcat(StringCat, "id\tnome\tcargo\tstatus\t\n");
    foreach(Player, i)
    {
        if(JogadorLogado[i] == true)
        {
            if(INFO_P[i][Nivel_Admin_P] > 0)
            {

                if(Verificar_Modo_ADM[i] == 0) StatusOnline = "{FF2121}Jogando";
                if(Verificar_Modo_ADM[i] == 1) StatusOnline = "{43FF21}Trabalhando";
                if(Verificar_Modo_ADM[i] == 2) StatusOnline = "{FF5521}AFK / AUSENTE";

                format(String, sizeof(String), "%d\t%s\t%s\t%s\n", i, Nome_Conta[i], CargoADM(i), StatusOnline);
                strcat(StringCat, String);
                Admin_Lista[playerid][ContarAdmins] = i;
                ContarAdmins++;
            }
        }
    }
    if(ContarAdmins == 0)
    {
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_MSGBOX, "{FFFFFF}({43FF21}0{FFFFFF}) Membro da staff online.", "\n"Vermelho"[!] "Branco"Todos os Membros da equipe estгo offiline no momento.", "Particular", "X");
    }
    else
    {
        format(String, sizeof(String), "{FFFFFF}({43FF21}%s{FFFFFF}) Membros da staff online.", ContarAdmins);
        ShowPlayerDialog(playerid, 1018, DIALOG_STYLE_TABLIST_HEADERS, String, StringCat, "Particular", "X");
    }
    return 1;
}
Tenta dessa maneira
Reply
#15

Nгo pegou mano.
Reply
#16

Posta prints pra eu ver o que estб acontecendo de fato.
Reply
#17

Quote:
Originally Posted by pWesley
View Post
Posta prints pra eu ver o que estб acontecendo de fato.
Cara nгo acontece nada, mensagem nгo й enviada

Se eu tirar o Admin_Lista[playerid][ContarAdmins] e colocar playerid, pega normalmente. mas a mensagem vem pra min e nгo pro admin que eu cliquei

Agr se eu colocar o Admin_Lista[playerid][ContarAdmins] nгo acontece nada a mensagem nem chega a enviar

Eu sу quero que quando eu digito a mensagem no dialog vai pro admin que eu cliquei,

Se eu clicar em uns dos meus admins a mensagem que eu digito no dialog particular vai pro admin.

http://i.imgur.com/ZdfXWKV.png
Reply
#18

Tente:
Code:
if(dialogid == 1018)
    {
    	if(response)
        {
        	//if(ContarAdmins == 0) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Nгo hб nenhum membro da staff online para vocк enviar uma mensagem particular!"),
            Admin_Lista[playerid][0] = Admin_Lista[playerid][listitem]; //id do administrador clicado ficarб na posiзгo 0 da array
			ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
		}
		return true;
    }

    if(dialogid == 47)
    {
    	if(response)
        {
	        if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
	        if(strlen(inputtext) < 1 || strlen(inputtext) > 40) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Coloque de 1 a 40 caracteres."), ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
	        if(!IsValidText(inputtext)) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
			format(STG,sizeof(STG), ": MP : {FFFFFF}MP de %s (%d): %s", Nome_Conta[playerid], playerid, inputtext);
            if(!IsPlayerConnected(Admin_Lista[playerid][0]) || INFO_P[Admin_Lista[playerid][0]][Nivel_Admin_P] < 1) //se o administrador clicado saiu do jogo
            {
                SendClientMessage(playerid, 0xFFE328FF,": MP : {FFFFFF}Sua mensagem particular nгo pфde ser enviada por causa de um erro interno!");
            }
            else
            {
				SendClientMessage(Admin_Lista[playerid][0], 0xFFE328FF , STG);
				SendClientMessage(playerid, 0xFFE328FF,": MP : {FFFFFF}Sua mensagem particular foi enviada com sucesso, aguarde uma resposta!");
			}
        }
		return true;
    }
Reply
#19

Quote:
Originally Posted by RodrigoMSR
View Post
Tente:
Code:
if(dialogid == 1018)
    {
    	if(response)
        {
        	//if(ContarAdmins == 0) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Nгo hб nenhum membro da staff online para vocк enviar uma mensagem particular!"),
            Admin_Lista[playerid][0] = Admin_Lista[playerid][listitem]; //id do administrador clicado ficarб na posiзгo 0 da array
			ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
		}
		return true;
    }

    if(dialogid == 47)
    {
    	if(response)
        {
	        if(strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
	        if(strlen(inputtext) < 1 || strlen(inputtext) > 40) return SendClientMessage(playerid, COR_ERRO, ": ERRO : {FFFFFF}Coloque de 1 a 40 caracteres."), ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
	        if(!IsValidText(inputtext)) return ShowPlayerDialog(playerid, 47, DIALOG_STYLE_INPUT, "{FF0000}Mensagem Particular", "\n{FFFFFF}Coloque abaixo o texto que vocк quer enviar a um membro da staff.\nColoque de {EEAD2D}1 {EEAD2D}a 40 {FFFFFF}caracteres.\n", ">>>", "X");
			format(STG,sizeof(STG), ": MP : {FFFFFF}MP de %s (%d): %s", Nome_Conta[playerid], playerid, inputtext);
            if(!IsPlayerConnected(Admin_Lista[playerid][0]) || INFO_P[Admin_Lista[playerid][0]][Nivel_Admin_P] < 1) //se o administrador clicado saiu do jogo
            {
                SendClientMessage(playerid, 0xFFE328FF,": MP : {FFFFFF}Sua mensagem particular nгo pфde ser enviada por causa de um erro interno!");
            }
            else
            {
				SendClientMessage(Admin_Lista[playerid][0], 0xFFE328FF , STG);
				SendClientMessage(playerid, 0xFFE328FF,": MP : {FFFFFF}Sua mensagem particular foi enviada com sucesso, aguarde uma resposta!");
			}
        }
		return true;
    }
Obrigado, funcionou, qual era o erro? e como vocк aprendeu arrumar isso?
Reply
#20

Quote:
Originally Posted by Duk
View Post
Obrigado, funcionou, qual era o erro? e como vocк aprendeu arrumar isso?
Veja a lуgica:
Abriu a lista, armazenou na variбvel o ID do admin para cada item/linha da lista.
Ao clicar em uma linha da lista, armazena o ID do admin dessa linha na posiзгo 0 da variбvel (para nгo ter que criar outra).
Ao responder o diбlogo de mensagem, utiliza o valor da posiзгo 0 da variбvel que contйm o admin clicado antes.

Exemplo com cуdigo:
Code:
//Ao abrir o primeiro diбlogo com a lista de admins
Admin_Lista[playerid][0] = 32;
Admin_Lista[playerid][1] = 33;
Admin_Lista[playerid][2] = 34;
Admin_Lista[playerid][3] = 35;

//Ao clicar na terceira linha do diбlogo
Admin_Lista[playerid][0] = Admin_Lista[playerid][2]; //Admin_Lista[playerid][0] agora vale 34, que й o ID do admin da terceira linha

//Ao clicar em enviar mensagem
A mensagem й enviada para o ID 34, da variбvel Admin_Lista[playerid][0]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)