[AJUDA] Dialog com campo de preenchimento
#1

Pessoal, eu tenho um comando que й assim:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])

(...TEM UNS CODIGOS AQUI ANTES...)

else if (strcmp(param, "/kills", true) == 0)
    {
        if (pDataInfo[playerid][Logado] == true && pDataInfo[playerid][Level] >= 4)
        {
            ShowPlayerDialog(playerid, 2693, DIALOG_STYLE_INPUT,"Team SA:MP [DM] v2.10 - EDITAR KILLS", "Para editar os kills de um jogador vocк\ndeve inserir a ID no campo abaixo e apertar selecionar.\nDeixe em branco para cancelar.\n\nInsira a ID do jogador para editar:", "Selecionar", "Cancelar");
            return PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
        } else return SendClientMessage(playerid, COR_VERMELHA, "| Й necessбrio ser no mнnimo administrador para usar este comando.");
    }

(...TEM UNS CODIGOS AQUI DEPOIS...)
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{

if(dialogid == 2693) // Comando Editar Kills
 {
        if (strlen(inputtext) == 0)                     return 1;
        if (ValidaComando(playerid, inputtext) == 0)    return 1;
        if (!IsNumeric(inputtext))                      return 1;
        new PlayerReset = strval(inputtext);
        if (IsPlayerConnected(PlayerReset))
        {
            if (pDataInfo[PlayerReset][Logado] == false)        return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб logado no servidor");
            if (pDataInfo[PlayerReset][Registrado] == false)    return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб registrado no servidor");
            if (response)
            {
                pDataInfo[PlayerReset][Matou] = 10;  bd_escrever_int(pName(PlayerReset),"MatouGeral",10);
                format(strres, 128, "| Kills do jogador %s(%d) foram editados com sucesso.", pName(PlayerReset), PlayerReset); SendClientMessage(playerid, COR_VERDE, strres);
                format(strres, 128, "| Seus Kills foram editados com sucesso pelo administrador %s(%d).", pName(playerid), playerid); SendClientMessage(PlayerReset, COR_VERDE, strres);

            }
        } else return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб conectado no servidor.");
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0); return 1;
    }
}
O comando funciona certinho, ele define os kills do banco de dados do jogador escolhido pra 10 apartir do pDataInfo[PlayerReset][Matou] = 10; bd_escrever_int(pName(PlayerReset),"MatouGeral",10 );

Porem eu quero que nao seja um numero certo e ao eu usar o comando /kills me aparece o dialog que ja aparece, pedindo o id do player, e depois um dialog pedindo o numero pelo qual eu devo definir o pDataInfo[PlayerReset][Matou] = X; bd_escrever_int(pName(PlayerReset),"MatouGeral",X) ;

Resumindo: O adm utiliza /kills, o dialog pede a id do jogador, aparece outro dialog pedindo o numero de kills que serб modificado para o player (numero que substituirб o X no cуdigo)

Aguardo por respostas.
Reply
#2

й sу vc criar outro dialog com outro numero pra ele digitar o numero de kills, c foi vc q fez esse cmd, й facil vc fazer o resto.

eu ate faria c esse seu comando n tivesse tao desorganizado...
pawn Код:
if(isplayerconected(PlayerReset)
{
ShowPlayerDialog(playerid, 2694, DIALOG_STYLE_INPUT,"Digite o numero de kills do player", "Selecionar", "Cancelar");
}

if(dialogid == 2694) // Comando Editar Kills
 {
      pDataInfo[PlayerReset][Matou] = inputtext;
  }
Reply
#3

nao й meu, estou sу editando... nao acho tao desorganizado... й que nao sei fazer o correlacionamento entre o numero sendo posto no dialog e o X e por um dialog depois do outro...
Reply
#4

vou fazer do 0 pra vc pq vendo seu codigo parece mto incoerente... guenta ai ja edito esse post...

Kills й uma string? tpo Matou Geral fica como a kills do player ou um numero? o_O
Reply
#5

Tipo cara... nao tem muito o que entender... deve sу ser criado um outro dialog apos o dialog pedindo a id do jogador. Este outro dialog terб um campo onde serб posta um numero e esse numero substituirб aquela incуgnita no codigo, no caso o X
Reply
#6

Olha eu tentei fazendo assim apуs a utilizaзгo do comando /kills:

pawn Код:
if(dialogid == 2693) // Comando Editar Kills
 {
        if (strlen(inputtext) == 0)                     return 1;
        if (ValidaComando(playerid, inputtext) == 0)    return 1;
        if (!IsNumeric(inputtext))                      return 1;
        new PlayerReset = strval(inputtext);
        if (IsPlayerConnected(PlayerReset))
        {
            if (pDataInfo[PlayerReset][Logado] == false)        return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб logado no servidor");
            if (pDataInfo[PlayerReset][Registrado] == false)    return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб registrado no servidor");
            if (response)
            {
                ShowPlayerDialog(playerid, 2694, DIALOG_STYLE_INPUT,"Team SA:MP [DM] v2.10 - EDITAR KILLS", "Insira uma quantidade de kills para o jogador:", "Selecionar", "Cancelar");
                if(dialogid == 2694) // Comando Editar Kills
                  {
                  if (strlen(inputtext) == 0)                       return 1;
                  if (ValidaComando(playerid, inputtext) == 0)      return 1;
                  if (!IsNumeric(inputtext))                        return 1;
                  new PlayerKills = strval(inputtext);
                  {
                pDataInfo[PlayerReset][Matou] = PlayerKills;  bd_escrever_int(pName(PlayerReset),"MatouGeral",PlayerKills);
                format(strres, 128, "| Kills do jogador %s(%d) foram editados com sucesso.", pName(PlayerReset), PlayerReset); SendClientMessage(playerid, COR_VERDE, strres);
                format(strres, 128, "| Seus Kills foram editados com sucesso pelo administrador %s(%d).", pName(playerid), playerid); SendClientMessage(PlayerReset, COR_VERDE, strres);
                  }
                  }
            }
        } else return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб conectado no servidor.");
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0); return 1;
    }
O segundo dialog apaerceu certinho para ser colocado o valor que irб redefinir os kills do player porem apуs apertar selecionar, nada ocorre.
Reply
#7

pawn Код:
if(dialogid == 2693) // Comando Editar Kills
 {
        if (strlen(inputtext) == 0)                     return 1;
        if (ValidaComando(playerid, inputtext) == 0)    return 1;
        if (!IsNumeric(inputtext))                      return 1;
        new PlayerReset = strval(inputtext);
        if (IsPlayerConnected(PlayerReset))
        {
            if (pDataInfo[PlayerReset][Logado] == false)        return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб logado no servidor");
            if (pDataInfo[PlayerReset][Registrado] == false)    return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб registrado no servidor");
            if (response)
            {
                ShowPlayerDialog(playerid, 2694, DIALOG_STYLE_INPUT,"Team SA:MP [DM] v2.10 - EDITAR KILLS", "Insira uma quantidade de kills para o jogador:", "Selecionar", "Cancelar");
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
            }
        }
        else return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб conectado no servidor.");
    return 1;}
    if(dialogid == 2694) // Comando Editar Kills
    {
        if (strlen(inputtext) == 0)                     return 1;
        if (ValidaComando(playerid, inputtext) == 0)        return 1;
        if (!IsNumeric(inputtext))                      return 1;
        new PlayerKills = strval(inputtext);
        pDataInfo[PlayerReset][Matou] = PlayerKills;  bd_escrever_int(pName(PlayerReset),"MatouGeral",PlayerKills);
        format(strres, 128, "| Kills do jogador %s(%d) foram editados com sucesso.", pName(PlayerReset), PlayerReset); SendClientMessage(playerid, COR_VERDE, strres);
        format(strres, 128, "| Seus Kills foram editados com sucesso pelo administrador %s(%d).", pName(playerid), playerid); SendClientMessage(PlayerReset, COR_VERDE, strres);
    }
Reply
#8

Isso que vc fez nao deu certo... Bom infelizmente tive de apelar pro comando em texto e deu certo fiz assim:

pawn Код:
if (strcmp(param, "/kills", true) == 0)
    {
        if (pDataInfo[playerid][Logado] == true && pDataInfo[playerid][Level] >= 3)
        {
            param = strtok(cmdtext, idcmd);
            new tmppk[128]; tmppk = strtok(cmdtext, idcmd);
            if (!strlen(param) || !IsNumeric(param))        return SendClientMessage(playerid, COR_VERMELHA, "| /kills [playerid][Quantidade]");
            if (!strlen(tmppk) || !IsNumeric(tmppk))        return SendClientMessage(playerid, COR_VERMELHA, "| /kills playerid [Quantidade]");
            new player1 = strval(param), PlayerKills = strval(tmppk);
            if (IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
            {
                if (pDataInfo[player1][Logado] == false)    return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб logado no servidor");
                if (pDataInfo[player1][Spawned] == false)   return SendClientMessage(playerid, COR_VERMELHA, "| O jogador ainda nгo deu spawn, aguarde.");
                if (pDataInfo[player1][pASK] >= 1)          return SendClientMessage(playerid, COR_VERMELHA, "| Administrador BOT: Este jogador estб em tempo de spawn.");
                pDataInfo[player1][Matou] = PlayerKills;  bd_escrever_int(pName(player1),"MatouGeral",PlayerKills);
                return PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
            } else return SendClientMessage(playerid, COR_VERMELHA, "| O jogador nгo estб conectado no servidor.");
        } else return SendClientMessage(playerid, COR_VERMELHA, "| Й necessбrio ser no mнnimo sub-administrador para usar este comando.");
    }
Obrigado por tentar ajudar
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)