Hola amigos.
Quiero poder guardar una tabla de scores en un Sitio Web, algo que me permita mostrar en una p?gina Web los 100 punteos m?s altos de mi juego para que los jugadores se emocionen al buscar si su nombre aparece all?.
La verdad nunca he usado bases de datos, no s? si Game Maker tiene funciones para esto, o si existen librer?as para poder realizar estas acciones.
Si alguien tuviera alguna otra idea de c?mo lograr esto se lo agradeceria mucho.
PD.
Tengo un sitio Web con un hosting gratuito y me dan 2 bases de datos MYSQL
Gracias de antemano.
Mira, la mannera mas facil es con un DLL de MySql, pero es muy inseguro, porque tenes que mandar las credenciales de la base cada vez que te queres conectar, y cualquiera que decompile el juego va a poder tener la contrase?a y usuario de la base de datos.
La manera mas segura y eficaz es usando Netread (http://mikederoche.com/files/dlls/NetReadDLL.zip), pero para eso tenes que aprender a usar un poco de PHP. La idea es que en el server pongas la base de datos y los .php que hacen los cambios en la base de datos, luego con el netread haces algo asi como:
[gml]netread("http://tupagina.com/mandar_puntaje.php?nombre=pepe&puntos=1500",0)[/gml]
El php hace todo el trabajo sucio (acceder a la base de datos, tomar el puntaje, la ip, buscar coincidencias, reemplazar puntajes o agregarlos si es que la ip no existe, etc)
Luego para bajar los puntajes es casi lo mismo, usas un php aparte y llamas con el netread para que te devuelva los puntajes que le pidas :)
Si necesitas mas ayuda con los php te recomiendo buscar por aca que hay un monton de topicos sobre el tema ;)
Muchas gracias manuel777.
La verdad estuve buscando en la red algo que me pudiera ayudar y solo encontr? un par de DLLs viejas y no compatibles con las ?ltimas versiones de MYSQL, adem?s se menciona tambien que es poco seguro. Aqu? encontr? tu respuesta y creo que al final voy a tener que aprender algo de PHP porque me parece que le? que es la mejor opci?n.
Solo que anoche estuve pensando y tengo otra idea que si funcionara ser?a pr?ctico aunque no s? si presente el mismo problema de inseguridad de que alguien pueda ver credenciales decompilando el programa.
No sab?a que se pudiera ver por ejemplo el valor de unas variables o constantes al decompilar el programa. Yo tengo un programa que se llama Reshacker que creo que sirve para eso y pude ver algo de texto e im?genes en un ejecutable creado con Game Maker pero no pude ver valores de variables o constantes definidas por el programador.
La idea que tengo es esta:
Como sabemos GM puede crear o editar archivos txt sin problemas aunque le cambiemos la extensi?n a .html entonces ser?a de buscar funciones para accesar a una cuenta FTP (O una librer?a que contenga estas). Entonces podr?a sencillamente leer la p?gina scores.html de mi sitio Web, hacer los cambios necesarios con algunos algoritmos, volver a escribir la p?gina con los nuevos datos y subirla para sobreescribir por ejemplo http://misitio.com/scores.html
De nuevo quisiera esperar ideas de mis amigos makeros con la esperanza de encontrar algo que me resulte m?s f?cil, y si no, entonces creo que me decidir? por la soluci?n propuesta por manuel777. 8)
Gracias de nuevo.
Ac? te dejo un ejemplo de lo que pretendes hacer, lo hice el a?o pasado y utiliza GM8, est? todo bien explicado.
http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=2171
Para que m?s o menos te des una idea de que es lo que hace esta DLL, haces una consulta en GM con el m?todo GET, a partir de eso se hace la consulta en el archivo PHP del servidor, eso ser?a en cuanto a env?o de datos, para recibir datos es lo mismo nada m?s que guarda todos los datos en un *.txt y se pueden recoger mediante las funciones de GM.
Wooow, parece que es justo lo que necesito, gracias Iros.
Voy a intentar hacer esto, aunque con el reto de que no se nada de php. XD
Aunque si aprendo, tal vez me anime a ver eso del Netread
?Saludos a todos!
La dll Netread es similar a la que uso en el ejemplo xD, y en mi ejemplo ya tenes el sistema para enviar datos y verlos desde la web, lo ?nico que tenes que hacer es subir el archivo *.php a tu servidor y enlazarlo con GM y ya.
Cita de: manuel777 en Abril 04, 2011, 10:18:46 AM
Mira, la mannera mas facil es con un DLL de MySql, pero es muy inseguro, porque tenes que mandar las credenciales de la base cada vez que te queres conectar, y cualquiera que decompile el juego va a poder tener la contrase?a y usuario de la base de datos.
La manera mas segura y eficaz es usando Netread (http://mikederoche.com/files/dlls/NetReadDLL.zip), pero para eso tenes que aprender a usar un poco de PHP. La idea es que en el server pongas la base de datos y los .php que hacen los cambios en la base de datos, luego con el netread haces algo asi como:
[gml]netread("http://tupagina.com/mandar_puntaje.php?nombre=pepe&puntos=1500",0)[/gml]
El php hace todo el trabajo sucio (acceder a la base de datos, tomar el puntaje, la ip, buscar coincidencias, reemplazar puntajes o agregarlos si es que la ip no existe, etc)
Luego para bajar los puntajes es casi lo mismo, usas un php aparte y llamas con el netread para que te devuelva los puntajes que le pidas :)
Si necesitas mas ayuda con los php te recomiendo buscar por aca que hay un monton de topicos sobre el tema ;)
Yo hac?a algo similar antes, pero como soluci?n QAD (
quick and dirty). La verdad me parece 0% seguro: cualquier persona que encuentre ese archivo PHP (que no deber?a ser para nada dif?cil) podr?a agregar todas las cosas que desee, y tal vez incluso quitar.
Aunque est? clar?simo que enviar la password tampoco es muy seguro que digamos.
As? sin esforzarme demasiado, se me ocurren al menos 5 formas de abusar de cualquiera de los dos m?todos.
Te recomendar?a una forma que considere segura de verdad, pero s?lo se me ocurren m?todos demasiado complicados, que ni siquiera s? si funcionar?an XD.
Listo, que el amigo eduardo960 venga a aclararnos las dudas de como hizo el sistema de RaceBall xD. Aunque si vamos al caso, si queremos hacer un login, nada m?s enviamos el usuario y la contrase?a, despu?s el mensaje que se recibe se guarda. Para evitar hack, en el archivo PHP se le colocar?a seguridad cosa que no es la gran cosa.
No me funcion?.
En el c?digo del archivo gmk, cambi? la url a donde sub? el archivo highscore.php
Modifiqu? los datos del archivo highscore.php que aqu? aparecen de color verde de acuerdo con los par?metros de mi base de datos de MySQL
<?php
//The way this script works is pretty easy
//To make the script put or update a player in the list call the script as: highscore.php?action=set&name=putnamehere&score=scorehere
//To make the script output the top 5 people call it either: highscore.php or highscore.php?action=top
//first connect to database
$host = "127.0.0.1";
$user = "user";
$pass = "password";
$scores_db = "db";
Lo dem?s no lo modifiqu?.
Cre? una tabla llamada "hi" en la base de datos tal y como dicen las instrucciones con los campos "name" varchar, "score" integer, quedando as?:
CREATE TABLE hi (
`name` varchar(255) NOT NULL,
`score` varchar(255) NOT NULL //Aqu? puse int en lugar de varchar
);
El archivo php descargado, o vi?ndolo desde el navegador muestra:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'everest_hanoi'@'da.guatesitios.net' (using password: YES) in /home/everest/public_html/highscore.php on line 13
I cannot connect to the database because: Access denied for user 'everest_hanoi'@'da.guatesitios.net' (using password: YES)
Aunque en la variable host, puse: everest32.com
:(
EDIT: Sigo pensando en una DLL con funciones para accesar a una cuenta FTP.
Entonces podr?a sencillamente leer una p?gina http://misitio.com/scores.html Hacer los cambios necesarios con algunos algoritmos, subir la p?gina con los nuevos datos sobreescribiendo la anterior.
Esto ocurrir?a en el ?ltimo momento antes del "Game Over"
Opiniones por favor :-[
Me permito responder ya qu etengo cierta experiencia con esto xD, tengo varios juegos que usan bases de datos en linea, incluido el de mi firma.
Usa PHP y MySQL, es lo mas seguro y utiliza la DLL llamata HTTP dll es la mejor y mas rapida, mejor qu enetread que es la que usaba yo antes, en tu codigo pon en host localhost, suele ser eso, si es otra cosa fijate en lo que te dice el sitio qu ehospeda tus paginas.
Un saludo!
El c?digo funciona a la perfecci?n, como dice el amigo PoSvA, prob? cambiando el host por localhost, o si no tambi?n fijate que no te hallan quedado espacios en el nombre de la base de datos ni el usuario y que estos no est?n invertidos, te lo digo por experiencia, llevo a?os programando en PHP y MySQL xD.
La DLL HTPP es muy buena tambi?n pero algo un poco m?s compleja, por eso te recomend? la de PHP.
Claramente es un error de acceso denegado. Esto ocurre cuando: A) el host est? mal, B) el usuario est? mal, C) el password est? mal (asumiendo que la BD est? bien configurada).
?Est?s seguro que everest32.com es el host? Prob? con localhost como te dijeron, o dejalo en 127.0.0.1 (que deber?a ser lo mismo que poner localhost, a no ser que el sitio est? mal configurado). Si no, especialmente si est?s usando un servicio gratuito, busc? bien cu?l es el servidor de la BD que te dieron.
Tambi?n, ?est?s seguro de que existe el usuario everest_hanoi en la BD? ?ya lo probaste, y funciona?
Si es el host hace esto, metete en PHPMyAdmin y a penas ingresas te tiene que decir a un costado a la derecha el nombre del host, le pones ese y tiene que andar, si no prob? instalando un servidor particular para hacer las pruebas, uno muy bueno que no consume casi nada de recursos es AppServ.
Yeeeeeehaaaaaaaaa!!!
http://everest32.com/highscore.php (http://everest32.com/highscore.php)
Wadk.
Estoy seguro de que anoche prob? con localhost, tambi?n con el IP, prov? de todo. Seguramente estaba tan cansado que no me fij? en algo.
Iros.
Muchas gracias, funciona a la perfecci?n, solo que ahora tengo que ver como hago un poco m?s atractiva la p?gina highscore.php
Definitivamente voy a estudiar un poco de php jeje.
PoSvA.
voy a provar la DLL llamada HTTP dll.
De verdad quiero felicitarte por tu juego Kill Da Ducks! No lo he probado pero vi los videos. Increhible! se ve que puedes hacer lo que quieras con Game Maker. Me gustan los efectos visuales, el cambio de iluminaci?n al disparar, etc. 8)
Estoy contento, no puedo creer esto. Estoy seguro de que este m?todo es seguro (Bueno, al menos comparado con otros) ya que ustedes me lo dijeron.
Cita de: WillyDeLeon en Abril 06, 2011, 12:11:01 AM
Yeeeeeehaaaaaaaaa!!!
http://everest32.com/highscore.php (http://everest32.com/highscore.php)
Wadk.
Estoy seguro de que anoche prob? con localhost, tambi?n con el IP, prov? de todo. Seguramente estaba tan cansado que no me fij? en algo.
Iros.
Muchas gracias, funciona a la perfecci?n, solo que ahora tengo que ver como hago un poco m?s atractiva la p?gina highscore.php
Definitivamente voy a estudiar un poco de php jeje.
PoSvA.
voy a provar la DLL llamada HTTP dll.
De verdad quiero felicitarte por tu juego Kill Da Ducks! No lo he probado pero vi los videos. Increhible! se ve que puedes hacer lo que quieras con Game Maker. Me gustan los efectos visuales, el cambio de iluminaci?n al disparar, etc. 8)
Estoy contento, no puedo creer esto. Estoy seguro de que este m?todo es seguro (Bueno, al menos comparado con otros) ya que ustedes me lo dijeron.
Muchas Gracias, pues deberias de probalo, te gustara mas aun xD. La http dll es mas eficaz, es mas compleja pero si te la descargas en GMC viene con un script netread que hace lo mismo pero mas rapido, ignoras todo lo demas y ya esta.
Lo unico que puede ser descubierto son los comandos usados para que el php meta nuevos scores xD, por eso esta bien ocultar los php que utilizas, que solo se vean en el ejecutable, mas alla de eso no se xD. Tal vez te puedan hackear la pagina, pero vamos que eso es lo mismo que se la hackean a coca-cola o otro xD. Asi que yo en t lugar tendria dos phps uno para subir scores y otro para mostrarlos, y bueno que no se pueda encontrar ese fichero, que tu website esta todo visible, a ver si con un simple wget te van a coger el fichero fuente de highscores.php y sabran los comandos!
Si necesitas ayuda en cuanto a PHP y MySQL, ya sabes, me mandas un MP que estoy dispuesto a ayudar en esos lenguajes ;)
No se ni c?mo hice esto pero la adapt? con un template, no sab?a que se pod?a meter c?digo HTML jeje. Soy un suertudo:
http://willydeleongames.co.cc/highscore.php (http://willydeleongames.co.cc/highscore.php)
Ahora voy a ver si le puedo agregar m?s campos a la tabla, de hecho estoy usando la misma base de datos que le sirve a WordPress, solo agregu? una tabla llamada "hi" que es la que usa el archivo php, pero este host es solo de prueba
?aca ?aca ?aca XD