Hola Amakast,
te paso el primer ejemplo empaquetado donde en este caso se bloquea... a raiz de la linea 238 una vez que pulsas la tecla down...
IF(falla==100)falla=200;end ///linea que bloquea divgo ..debes de borrarla para que funcione... si la quitas y pulsas tecla down baja el scroll.
Si encuentras el motivo ,te agradezco el esfuerzo por encontrarlo ,pues no puedo poner condiciones y si las acepta sin que se quede bloqueado los incrementos ..por ejemplo x++; los hace mal
Un saludo
/*
Program's Name: <My Program Name>
Author's Name: <My Name>
Company's Name: <My Company or Group>
*/
program Motor2d;
global
resolucionx=128;
resoluciony=128;
fichero1;
T_tx=96;//tamaño de la tablax
T_ty=96;//tamño de la tablay
T_sizex=8;//tamaño del tile
T_sizey=8;//tamalo del tile
Casilla_Iniy=1;
Casilla_Inix=2;
jota1;
jota2;
jota3;
jota4;
jota5;
Celda_x;
Celda_y;
Tiles_nx=resolucionx/8;//numero de tiles x;
Tiles_ny=resolucionx/8;//numero de tiles y;
T_tiles[96*96];
begin
set_title("Motor 2d");
//set_icon("graficos/009.png");
set_mode(resolucionx+16,resoluciony+16,2);
screen_color(rgb(255,0,0));
set_color(rgb(0,0,0));
set_fps(60, 0);
screen_smooth(false);
// call a process
write_int(0,0,0,0, offset jota1);
write_int(0,0,20,0,offset jota2);
write_int(0,0,40,0,offset jota3);
write_int(0,0,60,0,offset jota4);
write_int(0,0,80,0,offset jota5);
fichero1=load_fpg("graficos/motor2d/");
// my_process(240, 160);
Inicializa_tabla();
loop
if (key(_esc)) exit("Text Exit", 1); end
frame;
end
end
process my_process(x, y);
private
//declared private variables
energy = 100;
life = 3;
begin
file=fichero1;
graph = 1;
size = 100;
z = 10;
loop
frame;
end
end
//_______________________________________________________________________________________________________________________________________________________--
//_______________________________________________________________________________________________________________________________________________________--
Process Inicializa_Tabla()
private
valor,tile;
BEGIN
file=fichero1;
for (y=0;y<T_ty;y++)
for (x=0;x<T_tx;x++)
valor=map_get_pixel(fichero1, 100, x, y, "r");
if (valor==151) tile=201;end
if (valor==0) tile=200;end
if (valor==44) tile=202;end
T_tiles[x+y*T_tx]=tile;
end
end
Pinta_Fondo();
END
//__________________________________________________________________________________________________________________________________________________________________________________-
//__________________________________________________________________________________________________________________________________________________________________________________-
Process Pinta_Fondo()
private
x_destino,y_destino,x_origen,y_origen,map_ancho,map_alto;
c_x,c_y,i,j,valor;
n_tilex,n_tiley;//numero de tiles en la horizontal y vertical de la resolucion 128/8=16...
casillax,casillay;
scrolx,scroly,sy;
lineay,lineax;
anteriory,anteriorx;
sentidoy;
actualy;
kx,ky;
scroll_sentido;
incremento_y;
ku,kd;//sube ..kd=baja
ii;
v_sentido;
falla;
BEGIN
file=fichero1;
//graph=101;
n_tilex=resolucionx/T_sizex;////128/8=16;
n_tiley=resoluciony/T_sizey;
map_ancho = 1;
map_alto = 1;
c_x=Casilla_Inix*(n_tilex);//128/8=16 casillas..4
c_y=Casilla_Iniy*(n_tiley);//128/8=16 casillas..2
casillax=Casilla_Inix*n_tilex;//16
casillay=(Casilla_Iniy)*(T_ty)*(n_tiley);//2*96*16...fila 1== 1*96*16...
//casillay=(Casilla_Iniy)*(T_ty)*(16);//2*96*16...fila 1== 1*96*16...
Celda_x=Casilla_Inix*n_tilex;
Celda_y=Casilla_Iniy*n_tiley;
x=(T_sizex*2+resolucionx)/2;
y=(T_sizey*2+resoluciony)/2;
valor=201;
for(i=0;i<resoluciony/T_sizey;i++)//128/8=16....
for(j=0;j<resolucionx/T_sizex;j++)//128/8=16....
valor=T_tiles[((Casillax+j)+(Casillay+96*i))];//(casilla Inicial*16+j)+i*96...
x_origen=0;
y_origen=0;
x_destino=T_sizex+T_sizex/2+j*T_sizex;//8+4=12
y_destino=T_sizey+T_sizey/2+i*T_sizey;
map_block_copy(fichero1, 101, x_destino,y_destino,valor , x_origen,y_origen, 8,8);//dibuja un punto en el centro...
end
end
i=0;
for(j=0;j<(resolucionx/T_sizex)+8*2;j++)//128/8=16....
valor=T_tiles[((Casillax+j-1)+(Casillay+96*i)-96)];//(casilla Inicial*16+j)+i*96...
x_origen=0;
y_origen=0;
x_destino=4+j*8;
y_destino=4;
///...............ARRIBA....................................................................
if(Celda_y<>0)
map_block_copy(fichero1, 101, x_destino,y_destino,valor , x_origen,y_origen, 8,8);//dibuja un punto en el centro...
end
valor=T_tiles[((Casillax+j-1)+(Casillay+96*i)+96*16)];//(casilla Inicial*16+j)+i*96...
x_origen=0;
y_origen=0;
x_destino=4+j*8;
y_destino=4+8*17;
///...............ABAJO....................................................................
map_block_copy(fichero1, 101, x_destino,y_destino,valor , x_origen,y_origen, 8,8);//dibuja un punto en el centro...
end
start_scroll(0, fichero1, 101, 201, 0, 15);
scroll.front.alpha = 100;
scroll.back.alpha = 0;
y_destino=0;
anteriory=0;
sentidoy=0;
// map_block_copy(fichero1,101, 144/2, 144/2 , 4,0,0, 144,144);//dibuja un punto en el centro...
// refresh_scroll(0);
LOOP
if(key(_down) )
ii++;
IF(ii>6)
scroll.front.y += 8;
scroll.back.y += 8;
ii=0;
scroll_sentido = 1;
else
scroll_sentido= 0;
END
end
if(key(_up) )
ii++;
IF(ii>6)
scroll.front.y -= 8;
scroll.back.y -= 8;
ii=0;
scroll_sentido =-1;
else
scroll_sentido = 0;
END
end
if(not key(_up) and not key(_down))
scroll_sentido = 0;
end
If(scroll_sentido<>0 and (abs(scroll.back.y) % 8 )== 0 ) //si me muevo 8 pixeles hacia arriba o hacia abajo...
IF(falla==100)falla=200;end ///linea que bloquea divgo ..debes de borrarla para que funcione...
i=0;j=0;
i=0;
//______________________________________________________________________________________________________________________________________________________________________________________________________________-
IF(scroll_sentido == 1)
// IF(falla==100)falla=200;end ///linea que hace dibujar mal el scroll si pongo todo el motor completo XD;que gracioso..
// incremento_y = (Celda_y + Casilla_Iniy*2) mod 18;
Celda_y=Celda_y+1;
FOR(j=0;j<(resolucionx/T_sizex)+8*2;j++)//128/8=16....
valor=T_tiles[(Celda_x+j-1 + (96*Celda_y))+96*16];
x_origen=0;
y_origen=0;
x_destino=4+j*8;
y_destino=4+8*(incremento_y);
map_block_copy(fichero1, 101, x_destino,y_destino,valor , x_origen,y_origen, 8,8);//dibuja un punto en el centro...
END
incremento_y++;
IF(incremento_y==18) incremento_y=0;END
v_sentido=1;
refresh_scroll(0);
END
END
jota1=Celda_x;
jota2=Celda_y;
jota3=incremento_y;
//jota4=incremento_y;
FRAME;
END
END
No entiendo por que quitando ese if de la linea 238,divgo no se bloquea y baja el scroll si ese if no hace nada.