public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext,"/addmensagens",true) == 0)
{
ShowPlayerDialog(playerid, MENSAGENS, DIALOG_STYLE_MSGBOX , "ADD MENSAGENS", "Digite as tres mensagens a seguir.", "Continuar", "Cancelar");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0); return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new mensagens[900], mensagem1[300], mensagem2[300], mensagem3[300];
if(dialogid == MENSAGENS)
{
if (response)
{
ShowPlayerDialog(playerid, MENSAGENS+1, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a primeira mensagem:", "Continuar", "Cancelar");
}
}
if(dialogid == MENSAGENS+1)
{
if (response)
{
format(mensagem1, 100, "%s", inputtext);
ShowPlayerDialog(playerid, MENSAGENS+2, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a segunda mensagem:", "Continuar", "Cancelar");
}
}
if(dialogid == MENSAGENS+2)
{
if (response)
{
format(mensagem2, 100, "%s", inputtext);
ShowPlayerDialog(playerid, MENSAGENS+3, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a terceira mensagem:", "Finalizar", "Cancelar");
}
}
if(dialogid == MENSAGENS+3)
{
if (response)
{
format(mensagem3, 800, "%s", inputtext);
SendClientMessage(playerid, -1, "Mensagens adicionadas com sucesso!");
format (mensagens, sizeof(mensagens), "%s,%s,%s", mensagem1, mensagem2, mensagem3);
new File:ArqMensagens; ArqMensagens = fopen("controle/mensagens.reg", io_append);
fwrite(ArqMensagens, mensagens); fwrite(ArqMensagens, "\r\n"); fclose(ArqMensagens);
}
}
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new mensagens[900], mensagem1[300], mensagem2[300], mensagem3[300];
if(dialogid == MENSAGENS)
{
if (response)
{
ShowPlayerDialog(playerid, MENSAGENS+1, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a primeira mensagem:", "Continuar", "Cancelar");
}
}
if(dialogid == MENSAGENS+1)
{
if (response)
{
strmid(mensagem1, (inputtext), 0, strlen(inputtext), 100);
ShowPlayerDialog(playerid, MENSAGENS+2, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a segunda mensagem:", "Continuar", "Cancelar");
}
}
if(dialogid == MENSAGENS+2)
{
if (response)
{
strmid(mensagem2, (inputtext), 0, strlen(inputtext), 100);
ShowPlayerDialog(playerid, MENSAGENS+3, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a terceira mensagem:", "Finalizar", "Cancelar");
}
}
if(dialogid == MENSAGENS+3)
{
if (response)
{
strmid(mensagem3, (inputtext), 0, strlen(inputtext), 100);
SendClientMessage(playerid, -1, "Mensagens adicionadas com sucesso!");
format(mensagens, sizeof(mensagens), "%s,%s,%s\r\n", mensagem1, mensagem2, mensagem3);
new File:ArqMensagens = fopen("controle/mensagens.reg", io_append);
fwrite(ArqMensagens, mensagens);
fclose(ArqMensagens);
}
}
}
static mensagens[900], mensagem1[300], mensagem2[300], mensagem3[300];
Quando vocк usa o comando /addmensagens o dialog й mostrado e a callback OnDialogResponse й chamada .
O problema й que quando um cуdigo dessa callback referente a um dialog de determinado ID й processado, ela й finalizada (todos as outras condiзхes de ifs sгo consideradas falsas atй acabar o cуdigo) e chamada mais uma vez para a leitura de outro dialog. Por isso as variбveis criadas no comeзo daquela sгo destruнdas ao tйrmino da funзгo e criadas novamente quando outro dialog й lido, fazendo com que elas nunca "resistam" atй o ъltimo dialog ser trabalhado . Para resolver o seu problema, basta declarar suas variбveis usando static ao invйs de new, para que elas nгo sejam destruнdas no fim da leitura da funзгo : pawn Код:
Ou crie variбveis globais . Espero ter ajudado . |
//Topo
new
mensagens[ 900 ],
mensagem1[ 300 ],
mensagem2[ 300 ],
mensagem3[ 300 ];
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == MENSAGENS)
{
if (response)
{
ShowPlayerDialog(playerid, MENSAGENS+1, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a primeira mensagem:", "Continuar", "Cancelar");
}
}
if(dialogid == MENSAGENS+1)
{
if (response)
{
strmid(mensagem1, (inputtext), 0, strlen(inputtext), 100);
ShowPlayerDialog(playerid, MENSAGENS+2, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a segunda mensagem:", "Continuar", "Cancelar");
}
}
if(dialogid == MENSAGENS+2)
{
if (response)
{
strmid(mensagem2, (inputtext), 0, strlen(inputtext), 100);
ShowPlayerDialog(playerid, MENSAGENS+3, DIALOG_STYLE_INPUT, "ADD MENSAGENS", "Digite a terceira mensagem:", "Finalizar", "Cancelar");
}
}
if(dialogid == MENSAGENS+3)
{
if (response)
{
strmid(mensagem3, (inputtext), 0, strlen(inputtext), 100);
SendClientMessage(playerid, -1, "Mensagens adicionadas com sucesso!");
format(mensagens, sizeof(mensagens), "%s,%s,%s\r\n", mensagem1, mensagem2, mensagem3);
new File:ArqMensagens = fopen("controle/mensagens.reg", io_append);
fwrite(ArqMensagens, mensagens);
fclose(ArqMensagens);
}
}
}
Isto deve resolver o seu problema : |
mensagem1,mensagem2,mensagem3 oi,tchau,olб teste,testando,teste