Hola colegas, como estan.

Como ya muchos habran visto, he comenzado a desarrollar un que otro video juego con GM, lo pueden ver en drowsoft.com.ar pero el obejtivo final de todo esto es llegar a desarrollar videojuegos de roll masivo multiusuario, he comenzado ya varios proyectos que no pude darle una terminación profesional por falta de experiencia. Es por ello que puse los pies sobre la tierra y comence por el principio, como debe ser, para que miis proyectos no queden en vano.

Con estos juegos, por mas chicosque parezcan, voy tomando experiencia y aprendizaje sobre este mundo.

Toda esta introducción va por el objetivo de que para mi proximo proyecto necesitaba conectarme a mysql, buscando por todos lados he encontrado poco y nada para game maker, lo poco que encontre esta sin ejemplos, desactualizados y muy poco explicados o en idiomas intraducibles.

Mi amplia experiencia como programador en otros lenguajes (mi trabajo actual programador profesional) llevaron a realizar mi propia dll para conexion a mysql. El proyecto lo tengo bastante avanzado, funcionando ya en mi nuevo proyecto y con resultados satisfactorios, pero este logro quiero compartirlos con todos ustedes.

Ya que la primera version de la dll esta basada en mis necesidades, es muy seguro que no se logre adaptar a otros proyectos, es por esto que quiero habrir este hilo para ver sus necesidades y asi realizar un proyecto desde y para la comunidad GM.

La actual version posee las siguientes funciones:

mysql_conectar(usuario,clave,hosting:puerto,database) //Se conecta con el servidor de mysql
mysql_desconectar() //Se desconecta del servidor de mysql
mysql_conectado() //Devuelve 1 si esta conectado o 0 si esta desconectado
mysql_query(consulta); //Realiza una consulta, insert o update
mysql_numcol(); //Devuelve la cantidad de columnas de la consulta
mysql_numfil(); //Devuelve la cantidad de filas de la consulta
mysql_getvalor(col,fil); //Devuelve el valorde la columa y fila


Por ahora es lo que esta desarrollado, espero sus opiniones para seguir desarrollando esta herramienta que creo que nos va a resultar muy util para todos.

Saludos.

`•.¸¸.•´´¯`••._.•(Algunos se divierten jugando,)•.¸¸.•´´¯`••._.•
`•.¸¸.•´´¯`••._.•(yo me divierto creando juegos.)•.¸¸.•´´¯`••._.•

se habia dicho que el game maker no se llevaba de mano con el SQL, pero con esta Dll, bueno, un buen trabajo de tu parte y mas aun el querer compartirla con todos...

    Saludos makero noshy:


   Muchas gracias por compartir este proyecto de Dll con toda la ComunidadGM.

  Te comento que he estado con la misma preocupación últimamente. ¿Donde conseguir dll para conectar a BD? En las busquedas realizadas he encontrado algunos ejemplos, pocos. Unos para MySQL y otros para SQLite.

  Me encuentro tratando de entender el de SQLite pues ni ayuda ni documentacion tengo.

  Me gustaria ayudar en el proyecto y propongo una funciçon que devuelva los nombres de las columnas/campos de la tabla. De esta forma podriamos tratar de utilizar datos de una BD no hecha por nosotros.

  ¿En que lenguaje estas realizando la Dll? Me gusta la programación y podría ayudar.  :D 


Hola ferhand, como estas, gracias por sumarte a este proyecto, ya he aumentado la cantidad de funcines y modificado las anteriores para que sean mas genericas, muy buena tu solicitud sobre los nombres de las columnas, en breve la tendre finalizada.

Te comento que el proyecto lo estoy realizando en Delphi (Object Pascal) con librerias Zeos, por ser un lenguaje que conozco 100% y una libreria muy especifica para trabajar con MySQL, lo que me serprendio de GM es lo acotado en tipos de variables y mas aun trabajando con librerias externas, unicamente acepta retornos tipor Real y/o String, por ello todos los retornos de valores de registros son transformados en string.

Con gusto aceptare tu ayuda si conoces el lenguaje, pero si no lo concoes, tambien puedes hacer funciones en cualquiera, que yo me encargo de traducirlo a Object pascal.

En breve estare colgando la primera versión de la dll, para tester (aunque ya es muy estable).
Describo a continuación las funciones actuales:


mysql_init(); //Inicializa la dll
mysql_conectar(usuario,clave,hosting:puerto,database); //Se conecta con el servidor de mysql
mysql_desconectar(); //Se desconecta del servidor de mysql
mysql_close(); //Libera memoria utilizada por la dll
mysql_conectado(); //Devuelve 1 si esta conectado o 0 si esta desconectado
mysql_query(consulta); //Realiza una consulta select, insert o update
mysql_mensajeerror(); //Devuelve el mensaje del ultimo error
mysql_cantfilas(); //Devuelve la cantidad de filas (registros) de la consulta
mysql_cantcampos(); //Devuelve la cantidad de columnas (campos) de la consulta
mysql_getvalor(fila,columna); //Devuelve el valor de la columa y fila convertido en string
mysql_ping(); //Devuelve el ping con el servidor en milisegundos
mysql_getversion(); //Devuelve la version de la dll


Asi mismo estoy desarrollando una aplicacion en GM, que utiliza todas las funciones para que tengan como ejemplo.

Saludos

`•.¸¸.•´´¯`••._.•(Algunos se divierten jugando,)•.¸¸.•´´¯`••._.•
`•.¸¸.•´´¯`••._.•(yo me divierto creando juegos.)•.¸¸.•´´¯`••._.•

#4 Noviembre 09, 2012, 11:26:36 PM Ultima modificación: Noviembre 09, 2012, 11:34:44 PM por noshy
Edito: La función que devuelve los nombres de los campos de la tabla ya esta lista.


mysql_getnomcampos(); //Devuelve cadena string con los nombres de los campos separadaos por el caracter |


ferhand, te parece bien ese caracter para separar los nombres?? o ponemos otro??

Luego se puede desarrollar un script que pase los nombres a un array (Creo haber visto uno por esta comunidad).

`•.¸¸.•´´¯`••._.•(Algunos se divierten jugando,)•.¸¸.•´´¯`••._.•
`•.¸¸.•´´¯`••._.•(yo me divierto creando juegos.)•.¸¸.•´´¯`••._.•

Una función para devolver el tipo de dato en un campo quizás serviría si siempre devuelve string al obtenerlos. Y quizás para establecer el valor de una celda se podría usar algo parecido




Cita de: noshy en Noviembre 09, 2012, 11:26:36 PM
Edito: La función que devuelve los nombres de los campos de la tabla ya esta lista.


mysql_getnomcampos(); //Devuelve cadena string con los nombres de los campos separadaos por el caracter |


ferhand, te parece bien ese caracter para separar los nombres?? o ponemos otro??

Luego se puede desarrollar un script que pase los nombres a un array (Creo haber visto uno por esta comunidad).


  Saludos makero noshy:

  Me parece buena idea ese caracter, no tengo objeción.

   ¿Necesitas un "script" que tome una cadena de caracteres y separe las palabras que están entre "|" y las coloque en un "array"? No es difícil de hacer en lo absoluto lo que se necesita saber si el "array" será uno ya creado y conocido o se creará en el momento dinámicamente. Si será de la segunda forma deberás tener guardado en alguna variable el nombre del "array" que crees para poderlo utilizar después. 


Cita de: Texic en Noviembre 10, 2012, 07:01:39 PM
Una función para devolver el tipo de dato en un campo quizás serviría si siempre devuelve string al obtenerlos. Y quizás para establecer el valor de una celda se podría usar algo parecido

  Estoy de acuerdo con Texic, muy buena idea. ¿Por qué no lo vi antes? Es necesario al menos conocer el tipo de datos almacenado para poder trabajar con ellos despues, ya sea sumarlos, concatenarlos, etc.

  Otra cosa que veo es que la conexión es con una base de datos determinada y después todas las consultas son dentro de esa base de datos. ¿Qué pasaría si quiero conectarme a varias bases de datos al mismo tiempo? La mayoría de las funciones no reciben algún parámetro que indique a cual base de datos se ejecutarán las acciones. Sería bueno poder establecer conexión con varias bases de datos al unísono y para ello las funciones deben tener identificado a cual están dirigidas.

¿NO se de que manera más ayudar? Trabajo con C#, no se como pudiera ayudar en la elaboración de la dll. No se por donde empezar... :-[   


Muy buena idea, la verdad. Es cierto que para Game Maker hay poca cosa. Yo lo que hacía era alojar archivos PHP en mi servidor con las correspondientes funciones, y entraba a la base de datos a través de esos archivos PHP, ejecutándolos desde alguna librería tipo 39dll. Pero claro, era un método un tanto "sucio", por decirlo de alguna manera, porque debía de estar llamando a esos archivos PHP continuamente y gastaban mucho ancho de banda, y no solo eso, no era demasiado seguro.

Y ahí quería llegar. Dando por hecho que la contraseña para conectarse a la BD se debe poner tal cual, sin ningún tipo de codificación, ¿es seguro? Quiero decir, si alguien descodifica tu juego de alguna manera, sería capaz de ver los datos con los que te conectas a la BD, y podrían usarlos en contra, ¿no?, ¿no se podría hacer algún tipo de codificación, con md5, por ejemplo, para que la cosa no fuera tan sencilla de manipular?

Y, bueno, como ya he dicho, muy buena idea, me gusta mucho y seguro que más de uno le dará buen uso a ésto que estás creando (entre los que me incluyo, eh! :)), para puntuaciones on-line y demás debe venir de lujo.


Siento el tocho-post, siempre me pasa igual... no tengo remedio.
¡Saludos!
w f t g+