Segundo botгo da Dialog faz a mesma coisa que o primeiro -
OverKiller - 02.06.2016
Quando digita comando aparece o menu com as armas disponнveis certinho. em baixo o comando.
Quote:
if(strcmp("/menu",cmdtext, true, 10)==0)
{
IsPlayerInRangeOfPoint(playerid, 1.0,295.7499,-80.3011,1001.5156);
{
SendClientMessage(playerid, -1, "[SERVE] - Outros tipos de armas sу й possivel de adquirir com um traficante de armas!");
ShowPlayerDialog(playerid,ammulvv,DIALOG_STYLE_LIS T,"Menu","\nM9 com silenciador - R$250\nDesert Eagle - R$ 600\nEscopeta - R$500\nEscopeta de Combate - R$800\nMP5 - R$450\nM4 - R$1800\nSniper - R$2000","Confirmar", "Sair");
}
return 1;
}
|
Ae quando vou responder a dialog na public public OnDialogResponse, fiz o seguinte.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Quote:
{
if(dialogid == 2)
{
if(listitem == 0)
{
GivePlayerWeapon(playerid, 23, 50);
GivePlayerMoney(playerid, -250);
SendClientMessage(playerid, verdemarinho,"|INFO| Vocк comprou uma M9 com silenciador 50 ballas por: R$250");
return 1;
}}
else{
SendClientMessage(playerid, -1, "Vocк nгo comprou nada");
}
return 1;
}
|
Ae na dialog tem o botгo confirmar e sair, quando clico em confirmar compra certinho, mas quando nгo quero comprar( e clico em sair) invйs de aparecer aquele string que coloquei no else faz й comprar a arma.
PRINT:
http://imgur.com/a/tmYqG
Se alguйm pode me ajudar por favor, isso jб estar me deixando de cabelos em pйs.
Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
Ermanhaut - 02.06.2016
Faz assim:
Код:
if(!response) return -1; //Se a resposta for apertar Esc ou o segundo botгo, ele vai fechar a dialog
Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
klap - 02.06.2016
Код:
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
so coloca depois do dialog:
Код:
if (dialogid == 2)
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
Se vc deseja que o 2є botaгo nao faзa nada , e simples feche... use o codigo que o Ermanhaut deu... й mais simples
Sу coloca logo depois da condiзгo de escolha do dialogid
Код:
if (dialogid == 2) {
if (!response) return 1;
// SEU CODIGO AQUI
}
ps: porfavor nгo faзa "return -1", tente sempre fazer return de boolean (1 = true / positivo) (0 = false / negativo) , vamos seguir um standart blz?
(pelo menos em situaзхes como essa)
ps2: neste caso o correcto seria return 1, pois o dialog foi tratado correctamente... return 0 a MEU ver, deveria ficar no fundo do OnDialogResponse , pois sу iria chegar lб caso nгo encontrasse a funзгo para o dialogid correspondente.
espero ter conseguido ajudar
Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
moura98 - 02.06.2016
Quote:
Originally Posted by klap
so coloca depois do dialog:
Код:
if(dialogid == 2)
if(response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
|
faltou so essas chaves aqui:
Код:
if(dialogid == 2)
{ // <=
if(response) { // FUNЗГO DO PRIMEIRO BOTГO
} else { // FUNЗГO DO SEGUNDO BOTГO }
}// <=
Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
klap - 02.06.2016
Quote:
Originally Posted by moura98
faltou so os parenteses aqui:
Код:
if(dialogid == 2)
{ // <=
if(response) { // FUNЗГO DO PRIMEIRO BOTГO
} else { // FUNЗГO DO SEGUNDO BOTГO }
}// <=
|
na verdade nao faltou ... eles nao sгo necessarios... todo o if com apenas 1 instruзгo nao necessita parenteses....
exemplo : if(!valid) return 1;
isso й um if sem parenteses , visto que sу tem uma instruзгo...
igual o if que mandei....
sу tem 1 instruзгo (o 2є if) , dai nao necessita parenteses...
as restantes instruзхes , jб sгo instruзхes dependentes do 2є if, dai necessitam o {}
essa estrutura ainda por cima nгo tem else's nem nada do tipo... dai precisa ficar sujando o codigo com parenteses
a meu ver, a unica utilidade de colocar parentes nesse bloco de codigo... seria apenas para colocar um return 1;
Код:
if (dialogid == 2) {
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
return 1;
}
e referente ao edit que fez:
Код:
if(response) { // FUNЗГO DO PRIMEIRO BOTГO
} else { // FUNЗГO DO SEGUNDO BOTГO }
em colocar tudo inline...
num standart de programaзгo... condiзхes apenas sгo inline a funзхes quando apenas existe 1 , e apenas 1 delas.
quando existe mais do que um comando / operaзгo... nao faзa in line porfavor '-'
Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
moura98 - 02.06.2016
eu quis dizer chaves, digitei errado, qnt ao q vc falou sobre nao precisar chaves com uma instruзгo acho q eh verdade, qnd estudava pascal era assim tbm, vou testar dps qnd tiver tempo
Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
klap - 02.06.2016
Quote:
Originally Posted by moura98
eu quis dizer chaves, digitei errado, qnt ao q vc falou sobre nao precisar chaves com uma instruзгo acho q eh verdade, qnd estudava pascal era assim tbm, vou testar dps qnd tiver tempo
|
isso, chaves, eu falei parenteses pq vc falou hue... tb fiquei com brain freeze xD
fico feliz em ter ajudado
Respuesta: Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
OverKiller - 02.06.2016
Quote:
Originally Posted by klap
Код:
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
so coloca depois do dialog:
Код:
if (dialogid == 2)
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
Se vc deseja que o 2є botaгo nao faзa nada , e simples feche... use o codigo que o Ermanhaut deu... й mais simples
Sу coloca logo depois da condiзгo de escolha do dialogid
Код:
if (dialogid == 2) {
if (!response) return 1;
// SEU CODIGO AQUI
}
ps: porfavor nгo faзa "return -1", tente sempre fazer return de boolean (1 = true / positivo) (0 = false / negativo) , vamos seguir um standart blz?
(pelo menos em situaзхes como essa)
ps2: neste caso o correcto seria return 1, pois o dialog foi tratado correctamente... return 0 a MEU ver, deveria ficar no fundo do OnDialogResponse , pois sу iria chegar lб caso nгo encontrasse a funзгo para o dialogid correspondente.
espero ter conseguido ajudar
|
Mano vocк й lezado? vocк nгo viu o codigo que eu usei? e exatamente oque vc disse -_-
Re: Respuesta: Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
Ermanhaut - 02.06.2016
Vocк conseguiu resolver seu problema Overkiller?
Re: Respuesta: Re: Segundo botгo da Dialog faz a mesma coisa que o primeiro -
zSuYaNw - 03.06.2016
Quote:
Originally Posted by Ermanhaut
Faz assim:
Код:
if(!response) return -1; //Se a resposta for apertar Esc ou o segundo botгo, ele vai fechar a dialog
|
return -1;
A Funзгo return nada mais й do que um simples retorno para a callback. Ele geralmente й usada para enviar instruзхes de comportamento do cуdigo. No caso do tуpico, seria muito errado utilizar esse seu mйtodo de retorno pois a Callback contйm uma simples bool (true/false)(
referencia). E que pode influenciar no andamento de todo o script, Pois se alguma requisiзгo na callback OnDialogResponse precisar de retorno, encontrarб erro.
Quote:
Originally Posted by klap
Код:
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
so coloca depois do dialog:
Код:
if (dialogid == 2)
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
Se vc deseja que o 2є botaгo nao faзa nada , e simples feche... use o codigo que o Ermanhaut deu... й mais simples
Sу coloca logo depois da condiзгo de escolha do dialogid
Код:
if (dialogid == 2) {
if (!response) return 1;
// SEU CODIGO AQUI
}
ps: porfavor nгo faзa "return -1", tente sempre fazer return de boolean (1 = true / positivo) (0 = false / negativo) , vamos seguir um standart blz?
(pelo menos em situaзхes como essa)
ps2: neste caso o correcto seria return 1, pois o dialog foi tratado correctamente... return 0 a MEU ver, deveria ficar no fundo do OnDialogResponse , pois sу iria chegar lб caso nгo encontrasse a funзгo para o dialogid correspondente.
espero ter conseguido ajudar
|
Код:
if (dialogid == 2)
if (response) {
// FUNЗГO DO PRIMEIRO BOTГO
} else {
// FUNЗГO DO SEGUNDO BOTГO
}
Seu mйtodo de organizaзгo й pouco estranho, e isso deixarб mais difнcil na leitura caso houver algum erro de
{ } no cуdigo (mas nгo deixa de estar correto).