Os explico. Esta línea no me funciona:
if(!collision(type objetos) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,0,0) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,5,0))
Esta otra, sin embargo, sí:
if(!collision(type objetos) && !collision(type objetos) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,0,0) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,5,0))
¿Por qué?
A mi me parece que estás tratando de comparar valores con map_get_pixel, en posiciones que, si es con un solo proceso, me imagino que no se pueden comprobar todas al mismo tiempo, y parece que guardas los mapas en una tabla, pero me pregunto ¿están cargados en memoria para hacer la comprobación?... (yo como soy medio básico las comparaciones las hago con "==" "not" etc, dado que me resulta más fácil de leer)
A mi "!=" me resulta más sencillo y visual que "not =". De todas formas, creo que no has visto lo extraño. Los map_get_pixel funcionan fetén. Te lo marcaré:
Línea que funciona
Quoteif(!collision(type objetos) && !collision(type objetos) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,0,0) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,5,0))
revisate las prioridades de los operadores ??
Pero, porqué tengo que ponerlo dos veces??
Porque la segunda comprobación de colisión te da otro proceso distinto que no colisiona, o te devuelve directamente cero porque no hay más procesos de ese tipo que colisionen.
En estos casos recomiendo usar SAY antes del IF para ver si el resto de los valores son correctos: en este caso, ver los colores que devuelve de cada mapa, y si coinciden o no.
También comprobar si se cargaron los mapas y, por supuesto, si tienen la misma profundidad de color (256 colores o 16 bits).