1) nadie dijo que va true
2) el codigo de ejemplo esta puesto, es imposible que no te funcione, no se cual usaste.
pero si te molestas en leer, y ves el ejemplo, en el 2do codigo tenes que hacer un init.
3) el codigo de jmp, no sirve, porque mantiene un solo status de presionado o no, y si pulsas (o soltas) varias teclas mientras otras estan pulsadas o no, a la vez vas a tener un serio problema, y ni que hablar si la llamas varias veces con la misma tecla dentro del mismo frame, y si la llamas para diferentes teclas que esten pulsadas y no, hara cualquier cosa, porque solo tiene 1 variable released y pressed (released_c y pressed_c) para todas las teclas que se pasen.
4) el codigo no es para nada y nada lioso, me extraña que digan eso, es demasiado simple y tonto, por otro lado, no necesitan entenderlo, solo necesitan usarlo.
sinceremante free deberias reveer el tema de decir que algo no funciona y no poner ejemplos, lo haces siempre y luego al ver que fue un error tuyo no lo decis.
import "mod_key";
import "mod_video";
import "mod_text";
import "mod_proc";
global
_key_use = 0;
_key_state[127][1];
end
#define _key_pressed 0
#define _key_down 1
#define _key_up 2
process _key_init()
private
i;
pid;
begin
if ( ( pid = exists( type _key_init ) ) && pid.id != id ) return; end
priority = 1000;
loop
_key_use ^= 1;
for ( i = 0; i < 127; i++ )
_key_state[ i ][ _key_use ] = key( i );
end
frame;
end
end
function _key_exit()
begin
signal( type _key_init, s_kill );
end
function int _key(int k, int ev)
begin
switch( ev )
case _key_down:
return ( _key_state[ k ][ _key_use ] && !_key_state[ k ][ _key_use ^ 1 ] );
end
case _key_up:
return ( !_key_state[ k ][ _key_use ] && _key_state[ k ][ _key_use ^ 1 ] );
end
end
return ( _key_state[ k ][ _key_use ] );
end
private
a,b,c;
begin
_key_init();
write_int(0,0,0,0,&a);
write_int(0,0,10,0,&b);
write_int(0,0,20,0,&c);
while( !_key( _ESC, _key_pressed ) )
a = _key( _5, _key_down );
b = _key( _5, _key_up );
c = _key( _5, _key_pressed );
frame;
end
_key_exit();
end
funcionar perfectamente