hola amigos mios,
estoy realizando un proyecto de juego de plataformas, y estoy muy perdido con las colisiones.
primero pongo un cmap, pero no se si lo he implantado mal o no uso bien las colisiones o simplemente que no entiendo nada XD.
uso un cmap de 2048 * 256
un sprite de 32*32
un fondo de 2048 * 256
y un fondo de decoracion de 512*512
para empezar al provar las colisiones me colisiona donde no quiero....
si es necesario os paso el codigo fuente
PD: CON LIBRERIAS NF_LIB
me sale un error
me va funcionando pero es como si tubiese que eliminar memoria de los tiles....
me sale el siguiente error en ejecución:
Tile Y id is out of range(32 max).
error code 106
Eso es que has intentado leer
Eso es que has intentado leer un tile fuera del mapa (diria), sin ver la funcion que llamas cuando te da el error, poco mas puedo decirte...
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.
como se a que funcion llama el programa?
bueno pues....
creo que va con la gravedad de mi codigo(el que he publicado antes) con algunas modificaciones
// Includes c/c++
#include <stdio.h>
#include <stdlib.h>
// Includes propietaris NDS
#include <nds.h>
#include <maxmod9.h>
#include <nf_lib.h>
// Includes de libreries nostres
#include "Soini.h"
typedef struct{
s32 x; //Posició X
s32 y; //Posició Y
bool moviment; //Si es mou
u8 tresors; //seran les "monedes" que recull
} Jugador;
void moureJugador(s32 *posiciox,s32 *posicioy, u8 colisio);
void iniciarTilejatN1(Jugador j);
void presentacio1();
void iniciar();
void splash();
void soInicial(u8 *sound);
void inici(u8 *sound);
void joc();
void nivell1();
void reiniciarsp();
void gravetat(s32 *alsada);
void main()
{
//inicialitzem variable de so
u8 Sound_id;
Jugador jug;
iniciar();
soInicial(&Sound_id);
splash();
inici(&Sound_id);
// Bucle (es repeteix per sempre)
while(1)
{
scanKeys();//mirem si teclejem alguna cosa
if(keysDown() & KEY_TOUCH)//si toquem la pantalla inferior
{
joc(jug);//iniciem el joc
}
swiWaitForVBlank(); // Espera el sincronisme vertical
}
}
void iniciar()
{
consoleDemoInit(); // Inicialitza la consola
consoleClear(); // Esborra la pantalla
NF_SetRootFolder("NITROFS");//Escollim nitrofiles com a carpeta inicial
NF_Set2D(1, 0);//Inici del sistema 2D inferior
NF_Set2D(0, 0);//Inici del sistema 2D superior
NF_InitTiledBgBuffers();//Iniciem els bufers dels fons tilejats
NF_InitTiledBgSys(1);//Inici del sistema del fons inferior
NF_InitTiledBgSys(0);//Inici del sistema del fons superior
NF_InitSpriteBuffers();//Iniciem els buffers dels sprites
NF_InitSpriteSys(0);//Iniciem el sistema d'sprites inferior
NF_InitSpriteSys(1);//Iniciem el sistema d'sprites superior
NF_ResetSpriteBuffers();//Resetejem els Sprites
NF_ResetTiledBgBuffers();//Resetejem els fons
}
void splash()
{
setBrightness(3, 0); // Restaura l'enlluernament
NF_LoadTiledBg("splashes/nfl", "nf", 256, 256); // Carrega el fons per la capa 3, pantalla superior
NF_CreateTiledBg(0, 3, "nf");
NF_LoadTiledBg("splashes/devkitpro", "dev", 256, 256); // Carrega el fons per la capa 3, pantalla inferior
NF_CreateTiledBg(1, 3, "dev");
reiniciarsp();
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(0,3);
NF_DeleteTiledBg(1,3);
NF_LoadTiledBg("splashes/logo-cepnet", "cep", 256, 256); // Carrega el fons per la capa 3, pantalla superior
NF_CreateTiledBg(1, 3, "cep");
NF_LoadTiledBg("splashes/Sasieta", "sasi", 256, 256); // Carrega el fons per la capa 3, pantalla inferior
NF_CreateTiledBg(0, 3, "sasi");
reiniciarsp();
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(0,3);
NF_DeleteTiledBg(1,3);
setBrightness(3, 0); // Restaura l'enlluernament
}
void soInicial(u8 *Sound)
{
// Inicialitza l'engine d'audio de la DS
soundEnable();
// Inicialitza els buffers de so
NF_InitRawSoundBuffers();
// Carega els samples de so en format RAW
NF_LoadRawSound("sfx/music", 1, 22050, 0);
// Inicia la musica de fons
//amb el seguent atribut
*Sound = NF_PlayRawSound(1, 127, 64, false, 0);
}
void reiniciarsp()
{
s8 caux = 0, iluminacio = -16; // iniciem valors
while(!(iluminacio==0))
{//cuan iluminacio no siga 0:
caux++;
if(caux==11)
{
caux= 0;
iluminacio++;
}
setBrightness(3, iluminacio);//Cambia l'enlluernament
swiWaitForVBlank();
}
while(!(iluminacio==-16))
{
caux++;
if(caux==11)
{
caux = 0;
iluminacio--;
}
setBrightness(3, iluminacio);//Cambia l'enlluernament
swiWaitForVBlank();//Espera el sincronisme vertical
}
}
void inici(u8 *Sound)
{
NF_UnloadRawSound(1); // esborrem la musica inicial de la memoria
*Sound = 0;
mmInitDefault("audio/ini.bin");
mmLoad(MOD_LEYENDADELBESO);
mmStart(MOD_LEYENDADELBESO,MM_PLAY_LOOP);
NF_InitTiledBgBuffers();//Iniciem els bufers dels fons tilejats
NF_InitTextSys(1);//Iniciem el sistema de text inferior
NF_InitTiledBgSys(0);//Inici del sistema del fons superior
NF_InitTiledBgSys(1);//Inici del sistema del fons superior
NF_LoadTiledBg("splashes/Gosters", "gosters", 256, 256); // Carrega el fons per la capa 3, pantalla superior
NF_CreateTiledBg(0, 3, "gosters");
NF_LoadTextFont16("fnt/font16", "normal", 256, 256, 0);//Carregem la font
NF_CreateTextLayer16(1, 0, 0,"normal");//Paso la font a la pantalla inferior
NF_DefineTextColor(1, 0, 1, 31, 0, 0);
NF_WriteText16(1, 0, 1, 1, "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Polseu la pantalla tactil per iniciar el joc\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Centre d'estudis politecnics curs 2012-13");
NF_SetTextColor(1, 0, 1);
NF_UpdateTextLayers();
}
void joc(Jugador j)
{
memset(&j, 0, sizeof(Jugador));
nivell1(j);
}
void nivell1(Jugador j)
{
bool bo = true;
mmStop();
mmUnload(MOD_LEYENDADELBESO);
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(0,3);
NF_DeleteTiledBg(1,0);
presentacio1();
while(bo == true)
{
scanKeys();
if(keysDown() & KEY_A)
{
bo = false;
}
}
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(1,0);
j.x = 0;
j.y = 0;
u16 colisio;
iniciarTilejatN1(j);
while(1)
{
NF_SpriteOamSet(1);
oamUpdate(&oamSub);
swiWaitForVBlank();
colisio = NF_GetTileOfMap(1,2,j.x*8,j.y*8);
moureJugador(&j.x,&j.y,colisio);
}
}
void presentacio1()
{
NF_InitTiledBgBuffers();//Iniciem els bufers dels fons tilejats
NF_InitTextSys(1);//Iniciem el sistema de text inferior
NF_InitTiledBgSys(0);//Inici del sistema del fons superior
NF_InitTiledBgSys(1);//Inici del sistema del fons superior
NF_LoadTextFont16("fnt/font16", "normal", 256, 256, 0);//Carregem la segona font
NF_CreateTextLayer16(1, 0, 0,"normal");//Paso la font a la pantalla inferior
NF_DefineTextColor(1, 0, 1, 31, 0, 0);
NF_WriteText16(1, 0, 1, 1, "A una terra imaginaria hi ha un\'noi\' que viu molt felic en un lloc extrany, pero no sap quines aventures li esperen...");
NF_SetTextColor(1, 0, 1);
NF_UpdateTextLayers();
}
void iniciarTilejatN1(Jugador j)
{
NF_InitTiledBgBuffers();
NF_InitTiledBgSys(1);
NF_InitSpriteBuffers();
NF_InitSpriteSys(1);
NF_InitCmapBuffers();
//Carreguem els fons
NF_LoadTiledBg("bgs/level1", "2", 2048, 256);
NF_LoadTiledBg("bgs/nuvols", "3", 256, 256);
//el planol de colisions
NF_LoadColisionMap("cmaps/level1collision", 0, 2048,256);
//ara els Sprites
NF_LoadSpriteGfx("sprites/player",0,32,32);
//Carrega els sprites a la RAM,asignant-li un id(0-255) i l'ampada i l'alçada.
NF_LoadSpritePal("sprites/player",0);
//el mateix pero per la paleta. Aquest id anirà de 0 a 65.
NF_VramSpriteGfx(1,0,0, false);//carreguem l'sprite a la ram
NF_VramSpritePal(1,0,0);// el mateix amb la paleta
NF_CreateSprite(1,0,0,0, j.x, j.y);
NF_CreateTiledBg(1, 2, "2");
NF_CreateTiledBg(1, 3, "3");
}
void gravetat(s32 *alsada)
{
*alsada = *alsada + 1;
}
void moureJugador(s32 *posiciox,s32 *posicioy, u8 colisio)
{
scanKeys();
if((keysDown() & KEY_LEFT) || (keysHeld() & KEY_LEFT))
{
*posiciox-=1;
}
if((keysDown() & KEY_RIGHT) || (keysHeld() & KEY_RIGHT))
{
*posiciox+=1;
}
if(colisio == NF_GetTileOfMap(1,2,0,1))
{
gravetat(*&posicioy);
}
if(keysDown() & KEY_A)
{
*posicioy-= 50;
}
NF_ScrollBg(1,2, *posiciox,*posicioy);
NF_ScrollBg(1,3, *posiciox,*posicioy);
}
porfavor
Alomejor no me he explicado bien... o quizas no doy toda la info posible pero...
al menos que alguien me diga algo ;(
En la libreria tienes varios
En la libreria tienes varios ejemplos de colision. Ademas, con la info que das, poco se te puede ayudar...
OFFTOPIC: Nightfox creo que
OFFTOPIC:
Nightfox creo que la bola de crital la has dejado en el taller, XD.
ONTOPIC:
Como te ha dicho Nightfox tienes ejemplos de coliciones en la nflib, auqnue yo prefiero un sistema de tiles y un pequeño array con un for, pero si quieres usar decoracion y cmaps, entonces echale un ojo, y de todas formas deberias darnos algo de code para saber si es un error de programación.
Salu2
Be Libre my Friend.
vale
pues entonces...
pongo mi codigo fuente
// Includes c/c++
#include <stdio.h>
#include <stdlib.h>
// Includes propietaris NDS
#include <nds.h>
#include <maxmod9.h>
#include <nf_lib.h>
// Includes libreries nostres
#include "Soini.h"
typedef struct{
s32 x; //Posició X
s32 y; //Posició Y
bool moviment; //Si es mou
u8 tresors; //seran les "monedes" que recull
} Jugador;
void moureJugador(s32 *posiciox,s32 *posicioy, u8 colisio);
void iniciarTilejatN1(Jugador j);
void presentacio1();
void iniciar();
void splash();
void soInicial(u8 *sound);
void inici(u8 *sound);
void joc();
void nivell1();
void reiniciarsp();
void gravetat(s32 *alsada);
void main()
{
//inicialitzem variable de so
u8 Sound_id;
Jugador jug;
iniciar();
soInicial(&Sound_id);
splash();
inici(&Sound_id);
// Bucle (es repeteix per sempre)
while(1)
{
scanKeys();//mirem si teclejem alguna cosa
if(keysDown() & KEY_TOUCH)//si toquem la pantalla inferior
{
joc(jug);//iniciem el joc
}
swiWaitForVBlank(); // Espera el sincronisme vertical
}
}
void iniciar()
{
consoleDemoInit(); // Inicialitza la consola
consoleClear(); // Esborra la pantalla
NF_SetRootFolder("NITROFS");//Escollim nitrofiles com a carpeta inicial
NF_Set2D(1, 0);//Inici del sistema 2D inferior
NF_Set2D(0, 0);//Inici del sistema 2D superior
NF_InitTiledBgBuffers();//Iniciem els bufers dels fons tilejats
NF_InitTiledBgSys(1);//Inici del sistema del fons inferior
NF_InitTiledBgSys(0);//Inici del sistema del fons superior
NF_InitSpriteBuffers();//Iniciem els buffers dels sprites
NF_InitSpriteSys(0);//Iniciem el sistema d'sprites inferior
NF_InitSpriteSys(1);//Iniciem el sistema d'sprites superior
NF_ResetSpriteBuffers();//Resetejem els Sprites
NF_ResetTiledBgBuffers();//Resetejem els fons
}
void splash()
{
setBrightness(3, 0); // Restaura l'enlluernament
NF_LoadTiledBg("splashes/nfl", "nf", 256, 256); // Carrega el fons per la capa 3, pantalla superior
NF_CreateTiledBg(0, 3, "nf");
NF_LoadTiledBg("splashes/devkitpro", "dev", 256, 256); // Carrega el fons per la capa 3, pantalla inferior
NF_CreateTiledBg(1, 3, "dev");
reiniciarsp();
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(0,3);
NF_DeleteTiledBg(1,3);
NF_LoadTiledBg("splashes/logo-cepnet", "cep", 256, 256); // Carrega el fons per la capa 3, pantalla superior
NF_CreateTiledBg(1, 3, "cep");
NF_LoadTiledBg("splashes/Sasieta", "sasi", 256, 256); // Carrega el fons per la capa 3, pantalla inferior
NF_CreateTiledBg(0, 3, "sasi");
reiniciarsp();
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(0,3);
NF_DeleteTiledBg(1,3);
setBrightness(3, 0); // Restaura l'enlluernament
}
void soInicial(u8 *Sound)
{
// Inicialitza l'engine d'audio de la DS
soundEnable();
// Inicialitza els buffers de so
NF_InitRawSoundBuffers();
// Carega els samples de so en format RAW
NF_LoadRawSound("sfx/music", 1, 22050, 0);
// Inicia la musica de fons
//amb el seguent atribut
*Sound = NF_PlayRawSound(1, 127, 64, false, 0);
}
void reiniciarsp()
{
s8 caux = 0, iluminacio = -16; // iniciem valors
while(!(iluminacio==0))
{//cuan iluminacio no siga 0:
caux++;
if(caux==11)
{
caux= 0;
iluminacio++;
}
setBrightness(3, iluminacio);//Cambia l'enlluernament
swiWaitForVBlank();
}
while(!(iluminacio==-16))
{
caux++;
if(caux==11)
{
caux = 0;
iluminacio--;
}
setBrightness(3, iluminacio);//Cambia l'enlluernament
swiWaitForVBlank();//Espera el sincronisme vertical
}
}
void inici(u8 *Sound)
{
NF_UnloadRawSound(1); // esborrem la musica inicial de la memoria
*Sound = 0;
mmInitDefault("audio/ini.bin");
mmLoad(MOD_LEYENDADELBESO);
mmStart(MOD_LEYENDADELBESO,MM_PLAY_LOOP);
NF_InitTiledBgBuffers();//Iniciem els bufers dels fons tilejats
NF_InitTextSys(1);//Iniciem el sistema de text inferior
NF_InitTiledBgSys(0);//Inici del sistema del fons superior
NF_InitTiledBgSys(1);//Inici del sistema del fons superior
NF_LoadTiledBg("splashes/Gosters", "gosters", 256, 256); // Carrega el fons per la capa 3, pantalla superior
NF_CreateTiledBg(0, 3, "gosters");
NF_LoadTextFont16("fnt/font16", "normal", 256, 256, 0);//Carregem la font
NF_CreateTextLayer16(1, 0, 0,"normal");//Paso la font a la pantalla inferior
NF_DefineTextColor(1, 0, 1, 31, 0, 0);
NF_WriteText16(1, 0, 1, 1, "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Polseu la pantalla tactil per iniciar el joc\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Centre d'estudis politecnics curs 2012-13");
NF_SetTextColor(1, 0, 1);
NF_UpdateTextLayers();
}
void joc(Jugador j)
{
memset(&j, 0, sizeof(Jugador));
nivell1(j);
}
void nivell1(Jugador j)
{
bool bo = true;
mmStop();
mmUnload(MOD_LEYENDADELBESO);
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(0,3);
NF_DeleteTiledBg(1,0);
presentacio1();
while(bo == true)
{
scanKeys();
if(keysDown() & KEY_A)
{
bo = false;
}
}
NF_ResetTiledBgBuffers();
NF_DeleteTiledBg(1,0);
j.x = 110;
j.y = 10;
u8 colisio;
iniciarTilejatN1(j);
while(1)
{
NF_SpriteOamSet(1);
oamUpdate(&oamSub);
swiWaitForVBlank();
colisio = NF_GetTile(0,1,0);
moureJugador(&j.x,&j.y,colisio);
}
}
void presentacio1()
{
NF_InitTiledBgBuffers();//Iniciem els bufers dels fons tilejats
NF_InitTextSys(1);//Iniciem el sistema de text inferior
NF_InitTiledBgSys(0);//Inici del sistema del fons superior
NF_InitTiledBgSys(1);//Inici del sistema del fons superior
NF_LoadTextFont16("fnt/font16", "normal", 256, 256, 0);//Carregem la segona font
NF_CreateTextLayer16(1, 0, 0,"normal");//Paso la font a la pantalla inferior
NF_DefineTextColor(1, 0, 1, 31, 0, 0);
NF_WriteText16(1, 0, 1, 1, "A una terra imaginaria hi ha un\'noi\' que viu molt felic en un lloc extrany, pero no sap quines aventures li esperen...");
NF_SetTextColor(1, 0, 1);
NF_UpdateTextLayers();
}
void iniciarTilejatN1(Jugador j)
{
NF_InitTiledBgBuffers();
NF_InitTiledBgSys(1);
NF_InitSpriteBuffers();
NF_InitSpriteSys(1);
NF_InitCmapBuffers();
//Carreguem els fons
NF_LoadTiledBg("bgs/level1", "2", 512, 512);
NF_LoadTiledBg("bgs/nuvols", "3", 256, 256);
//el planol de colisions
NF_LoadColisionMap("cmaps/level1collision", 0, 512,512);
//ara els Sprites
NF_LoadSpriteGfx("sprites/player",0,32,32);
//Carrega els sprites a la RAM,asignant-li un id(0-255) i l'ampada i l'alçada.
NF_LoadSpritePal("sprites/player",0);
//el mateix pero per la paleta. Aquest id anirà de 0 a 65.
NF_VramSpriteGfx(1,0,0, false);//carreguem l'sprite a la ram
NF_VramSpritePal(1,0,0);// el mateix amb la paleta
NF_CreateSprite(1,0,0,0, j.x, j.y);
NF_CreateTiledBg(1, 2, "2");
NF_CreateTiledBg(1, 3, "3");
NF_LoadColisionBg("cmaps/level1collision",1,512,512);
}
void gravetat(s32 *alsada)
{
*alsada = *alsada + 20;
}
void moureJugador(s32 *posiciox,s32 *posicioy, u8 colisio)
{
scanKeys();
if((keysDown() & KEY_LEFT) || (keysHeld() & KEY_LEFT))
{
*posiciox-=1;
}
if((keysDown() & KEY_RIGHT) || (keysHeld() & KEY_RIGHT))
{
*posiciox+=1;
}
if(colisio == NF_GetTile(0,*posiciox,*posicioy))
{
gravetat(*&posicioy);
}
if(keysDown() & KEY_A)
{
*posicioy-= 50;
}
NF_ScrollBg(1,2, *posiciox,*posicioy);
NF_ScrollBg(1,3, *posiciox,*posicioy);
}
PD: perdon por mi mania con las funciones y por los comentarios en catalán xd
has intentado a usar la
has intentado a usar la consola de debug del desmume para sacar los valores del GetTile(); a ver si realmente esta leyendo donde toca?. Sospecho que usas punteros en las funciones para ahorrarte variables globales, es una manera de hacerlo, pero como al compilador se le crucen o tu te despiestes, vas a sufrir, mucho...
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.
Gracias
el problema era en el tile... que cordenadas le tengo que passar?
sobre lo de los punteros es como me ensenyaron a hacerlo, pasando parametros por referencia mediante punteros...
si usas variables glovales no las puedes modificar ;)
Como que no se pueden
Como que no se pueden modificar? XDDDDDDDDDDDDDDDDDDDDDDD
La libreria usa variables globales apatadas y todas son modificables...
Repasa ese C....
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.
pense que te referias a los define
a vale quieres decir como los atributos no?
es que quizas he confundido el nombre de los paramentros
pero en resumen
como localizo el tile? i como lo comparo? que hago mal?
u8 NF_GetPoint( u8
u8 NF_GetPoint( u8 slot, // nº de slot (0 – 31)
s32 x, // Coordenada
X en pixeles
s32 y // Coordenada Y en pixeles
);
Devuelve el nº de color (0 – 255) del pixel dado del fondo de
colisiones especificado.
Si se especifica una coordenada fuera del mapa, devuelve 0.
u16
NF_GetTileOfMap( u8 screen, // Pantalla (0 –
1)
u8 layer, // Capa (0 – 3)
u16 tile_x, // Posicion X (en
tiles)
u16 tile_y // Posicion Y (en
tiles)
);
Obtiene el valor del tile que se encuentra el las coordenadas
del mapa cargado en la pantalla y capa especificadas.
Ejemplo:
u16 mytile = NF_GetTileOfMap(0, 2, 10, 20);
Obtiene el valor del tile de las coordenadas x:10 y:20 del
mapa cargado en la pantalla 0, capa 2.
Si usas un mapa de colisiones y GetTile, las coordenadas en TILES (pixel/8).
Si usas un fondo de colisiones y colision pixelperfect (por puntos), las coordenadas en pixeles directamente.
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.
muchas gracias
gracias por todo....
si tengo mas dudas acudire al foro :)
No me deja editar el
No me deja editar el comentario anterior (cosas del foro)
Si usas GetTile o GetPoint, las coordenadas en PIXELES
Si usas GetTileofMap, las coordenadas en TILES (PIXEL / 8)
Nuestra web oficial:
http://www.nightfoxandco.com/
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.