[Ajuda] Atribuiзгo de response a variбvel booleana nгo funciona
#1

Entгo, tava fazendo algumas coisas por aqui e me dei conta de que se eu fizer isso no OnDialogResponse:
pawn Код:
new
    bool:lol
;

lol = response;
Dб tag mismatch. Mas se eu fizer isso:
pawn Код:
new
    bool:lol
;

lol = response ? (true) : (false);
Fica de boa.

Entгo a pergunta й: por quк?
Reply
#2

Veja na definiзгo da callback.

pawn Код:
forward OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
O parвmetro й tratado como inteiro, nгo como bool. Pawn й uma linguagem fortemente tipada, ou seja, o compilador nгo faz um type-casting implicitamente como em linguagens fracamente tipadas.

Podemos concluir que nгo podemos fazer:
pawn Код:
new bool: nTry = 1;
Pois o compilador nгo faz o type-casting, logo devemos dar um valor igual ao declarado:

pawn Код:
new bool: nTry = true;
O operador ternбrio vai retornar true ou false, satisfazendo as normas da tipagem de dados da linguagem.

Espero que tenha compreendido, abraзos.
Reply
#3

Porque voce so pode atribuir a uma booleana o valor true ou false, como ali o response nao й bool ( й inteiro ) voce vai obter valores como 0 e 1 nao aceites como resposta a booleana.
Reply
#4

Ah! Achei que o response era booleana...

Valeu!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)