Portal SAMP
[Ajuda] Ajuda com Dialogo - 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 com Dialogo (/showthread.php?tid=2993)



Ajuda com Dialogo - Zoiao - 16/11/2022

Galera estou criando a profissão de motorista de onibus e o player tem que ir nos pontos de onibus e pegar passageiros, e eu tive uma ideia de criar varios pontos que só um player consegue ir, e gostaria de saber como eu coloco no dialogo o status do ponto se esta ocupado ou aberto.

Esse dialogo que eu estou usando


Código:
if(dialogid == D_PONIBUS)
    {
        if(response)
        {
        switch(listitem)
        {
          case 0:
            {
    ShowPlayerDialog(playerid, D_1PONTO, DIALOG_STYLE_LIST, "{FFFFFF}Primeiro pontos de onibus",
"Começo: Prefeitura - Final: Hotel [ Status: aqui ]\nComeço: Praia - Final: Hotel [ Status: aqui ]\nComeço: Roda Gigante - Final: Hotel [ Status: aqui ]\nComeço: Aeroporto - Final: Hotel [ Status: aqui ]\n{4995CC}Voltar", "OK", "Voltar");
            }
            case 1:
            {
    ShowPlayerDialog(playerid, D_2PONTO, DIALOG_STYLE_LIST, "{FFFFFF}Segundo pontos de onibus",
"Começo: Prefeitura - Final: Hotel [ Status: aqui ]\nComeço: Praia - Final: Hotel [ Status: aqui ]\nComeço: Roda Gigante - Final: Hotel [ Status: aqui ]\nComeço: Aeroporto - Final: Hotel [ Status: aqui ]\n{4995CC}Voltar", "OK", "Voltar");
            }
            case 2:
            {
    ShowPlayerDialog(playerid, D_3PONTO, DIALOG_STYLE_LIST, "{FFFFFF}Terceiro pontos de onibus",
"Começo: Prefeitura - Final: Hotel [ Status: aqui ]\nComeço: Praia - Final: Hotel [ Status: aqui ]\nComeço: Roda Gigante - Final: Hotel [ Status: aqui ]\nComeço: Aeroporto - Final: Hotel [ Status: aqui ]\n{4995CC}Voltar", "OK", "Voltar");
            }
        case 3:
            {
    ShowPlayerDialog(playerid, D_4PONTO, DIALOG_STYLE_LIST, "{FFFFFF}Quarto pontos de onibus",
"Começo: Prefeitura - Final: Hotel [ Status: aqui ]\nComeço: Praia - Final: Hotel [ Status: aqui ]\nComeço: Roda Gigante - Final: Hotel [ Status: aqui ]\nComeço: Aeroporto - Final: Hotel [ Status: aqui ]\n{4995CC}Voltar", "OK", "Voltar");
            }
            case 4:
            {
    ShowPlayerDialog(playerid, D_5PONTO, DIALOG_STYLE_LIST, "{FFFFFF}Quinto pontos de onibus",
"Começo: Prefeitura - Final: Hotel [ Status: aqui ]\nComeço: Praia - Final: Hotel [ Status: aqui ]\nComeço: Roda Gigante - Final: Hotel [ Status: aqui ]\nComeço: Aeroporto - Final: Hotel [ Status: aqui ]\n{4995CC}Voltar", "OK", "Voltar");
            }
}
}
}



RE: Ajuda com Dialogo - White_Blue - 16/11/2022

Código PHP:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[]) {
new 
status "Disponivel"str[128]; // Para teste

    
if(dialogid == D_PONIBUS)
    {
        if(response)
        {
        switch(listitem)
        {
          case 0:
          {
            
format(strsizeof(str), "Ponto de ônibus Los Santos\t[Status: %s]"status);
           
ShowPlayerDialog(playerid0DIALOG_STYLE_LIST "Ônibus"str"Ok""");
          }
        return 
1;

forward MudarStat();
public 
MudarStat() {
         if(
status == "Disponivel") {
        
status "Indisponivel";
        }
      else if(
status == "Indisponivel") {
     
status  "Disponivel";
     }
    return 
1;

public 
OnGameModeInit() {
    
SetTimer("MudarStat"10000true); // Muda o status a cada 10 segundos.
    
return 1


Espero que isso te dê uma base.


RE: Ajuda com Dialogo - Mateus Lima - 16/11/2022

(16/11/2022 15:12)White_Blue Escreveu:
Código PHP:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[]) {
new 
status "Disponivel"str[128]; // Para teste

    if(dialogid == D_PONIBUS)
    {
        if(response)
        {
        switch(listitem)
        {
          case 0:
          {
            format(strsizeof(str), "Ponto de ônibus Los Santos\t[Status: %s]"status);
           ShowPlayerDialog(playerid0DIALOG_STYLE_LIST "Ônibus"str"Ok""");
          }
        return 1;

forward MudarStat();
public 
MudarStat() {
         if(status == "Disponivel") {
        status "Indisponivel";
        }
      else if(status == "Indisponivel") {
     status  "Disponivel";
     }
    return 1;

public 
OnGameModeInit() {
    SetTimer("MudarStat"10000true); // Muda o status a cada 10 segundos.
    return 1


Espero que isso te dê uma base.


[Imagem: Conditional-or-Ternary-Operator-__-in-C_C.jpg]


Citar:variable = Expression1 ? Expression2 : Expression3

portanto: 
Citar:(status == 1 ? "Disponivel" : "Indisponivel")

Citar:printf("status=%s", (status == true ? "Disponivel" : "Indisponivel"))



RE: Ajuda com Dialogo - Carlos Victor - 17/11/2022

Pra você inserir algum retorno na string, é necessário que use a função format.

Recomendo também que otimize o sistema, visualmente parece que não é automatizado, com um conhecimento em array's você pode criar algo mais eficaz e menos trabalhoso usando simples loops e manipulação de variável, eu fiz um exemplo agora, se quiser que eu te passo ou te ajude a fazer me chama no Discord hoje estou disponível.

[Imagem: image.png]