Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kostra en Noviembre 12, 2015, 04:57:03 PM

Título: [Vamos a decir que "Solucionado"] Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 04:57:03 PM
Wenas, como estoy aprendiendo cosas nuevas, pues solo copio y pego pero no logro entender bien las cosas, bueno más o menos... pero me está fallando a veces una cosa y es que no logro entender cuándo o cada cuánto se ejecuta el evento HTTP... y entonces me pasa esto...

create:
https://gyazo.com/5ccc9fea3390f908b360a31ea2abf933
HTTP:
https://gyazo.com/8ac27158fbc5d82ed3dc022dcf37506d

en el HTTP, hay una linea de show message que puse para testear.. y pasa que a veces me lee bien el archivo y me sale "10" que es actualmente el numero que hay en ese archivo hosteado, pero en algunas ocasiones me sale un mensaje totalmente en blanco... a qué se debe??
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 12, 2015, 05:58:34 PM
[spoiler]viendo rapidamente tu evento http lo unico que no entiendo es el case switch con la variable evid que aparentemente en algun momento tu le das el valor de la variable urlx, te lo digo porque en caso de que no le des ese valor este no creara el archivo ini con los datos, solo creara un archivo vacio en el momento en que abras el ini.(despues del case)

en conclusion: a mi parecer tu error esta en el case switch, se deberia de solucionar o quitando case switch y dejandolo como un proceso continuo, que si no tienes mas eventos http aparte de este no deberia de dar problemas, o asegurarte de darle el valor a la variable avid de la variable urlx para que ejecute el case correctamente.[/spoiler]

ok, corrijo, estoy leyendo tu codigo otravez y ya veo que si le estas dando el valor de urlx al valor avid por la la ds_map_list del async_event atravez de la id, si embargo esto me da a entender que tienes varios eventos http que se ejecutan y por eso aveces te devuelve un valor errado o blanco(esto es porque todos los http_get o http_get_string o cualquier http ejecuta el evento async http y este evento es global), te recomiendo meter la parte de lectura del ini dentro del case para asegurarte que solo se ejecute eso con el evento http para descargar el archivo ini
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 06:17:46 PM
no sé por qué es exactamente, pero en otros objetos, el mismo "engine" me funciona correctamente para lectura online de archivos ini... seguí este tuto: https://www.youtube.com/watch?v=6erhvsbBr-o

EDITO: acabo de leer por pura suerte tu edición xDD, voy a probar lo que dices xD
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 06:51:27 PM
hago otro post porque no te avisa si edito jaja
y cómo puedo poner dentro del case esa linea, si en el switch está comparando la misma variable urlx??? :S :S :S
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 12, 2015, 07:05:36 PM
pues deberia de bastar con mover la llave de la linea 15 a la linea 21, de esa manera cada que se ejecute un evento http solo abrira el archivo cuando se cumpla la condicion que descarga el archivo.

edito: otra cosa, no olvides colocar al final de un bloque case el break, de todas maneras aqui te dejo un link con la informacion para construir un switch http://docs.yoyogames.com/source/dadiospice/002_reference/001_gml%20language%20overview/401_12_switch.html
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 07:13:17 PM
me sigue pasando lo mismo... osea, no se ejecuta, es decir, ahora como está el mensaje dentro de ese switch, ya ni siquiera muestra mensaje... lo que me interesa es que SIEMPRE lea el ini y no me falle, que SIEMPRE se ejecute ese switch T_T
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 12, 2015, 07:30:03 PM
Cita de: kostra en Noviembre 12, 2015, 07:13:17 PM
me sigue pasando lo mismo... osea, no se ejecuta, es decir, ahora como está el mensaje dentro de ese switch, ya ni siquiera muestra mensaje... lo que me interesa es que SIEMPRE lea el ini y no me falle, que SIEMPRE se ejecute ese switch T_T
eso quiere decir que no se esta cumpliendo la condicion, es decir avid no es igual a urlx, te voy a preguntar algo, el evento http se esta ejecutando en el mismo obj en el que se le asigna un valor a urlx?

si el evento se ejecuta en el mismo objeto de la variable entonces quisas el problema no esta en el case, sino en el la comparacion de avid con urlx, has lo siguiente si el evento se ejecuta en el mismo objeto entonces pon un show_message con urlx y avid al final del evento http, fuera de las llaves y dinos que te sale.

ahora bien en caso contrario puedes colocar la variable avid y urlx como global asi todos los objetos tendran acceso a ellas
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 07:48:08 PM
como se ve en el primer post, urlx se le asigna en el create. TODO está en el mismo objeto.
Voy a probar lo del mensaje urlx y evid...

bueno, tras miles de pruebas xD, veo que en urlx y evid, los mensajes son numeros que ni entiendo, por ejemplo evid = 7, urlx = 7, siempre el mismo numero, reinicio y evid = 10 urlx = 10, y así, cada vez que reinicio sale el numero anterior +3, cosa que ni entiendo, pero sale bien, osea se lee bien el http, pero en ocasiones, simplemente no salen ningún mensaje... alguna rara ocasión me ha salido, por ejemplo, evid = 16 urlx = 15, osea urlx un numero menos que evid, pero luego se ha repetido el evento y se ha puesto bien, los dos iguales...
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 08:15:18 PM
mi extremo aburrimiento me ha obligado a hacerte un video explicando mejor lo que tengo y me sale jejejeje
https://youtu.be/RNM8FEXI5K0
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 12, 2015, 10:39:51 PM
ok, ya te vi tu video, disculpa que te confundiera con mujer pero eso pone debajo de tu nick, bueno con respecto a tu problema me parece mas bien un error de servidor, aunque realmente no es un error, es que haces muchas peticiones en un corto espacio de tiempo por lo que el servidor bloquea momentaneamente tu ip.

eso lo descubri cuando intente hacer un servidor multiplayer a base de mysql y php para html5, a 7 peticiones por segundo iba bien los primeros segundos como 30 o 45, pero luego dejaba de funcionar y si intentaba acceder al servidor manualmente con la direccion url atravez de un explorador me salia que la pagina no respondia, no estoy seguro de que ese sea tu problema pero me parece que eso es, ya que estas realizando muchas peticiones al servidor en un corto espacio de tiempo.

si quieres eliminar completamente esta posibilidad prueba instalando xamp en tu pc prueba otravez (xampp es un servidor web, la direccion ip seria tu ip o 127.0.0.1)
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 12, 2015, 10:50:36 PM
eso es lo que yo he pensado, que podría ser, en especial el ping o algo así, sugieres alguna solución? porque en mi proyecto, según la "fama" que pille habrán muchas peticiones todo el rato :/ ya que para jugar a este juego se necesita si o si conexión a internet, si no hay conexión, no hay niveles, me explico? Porfavor, espero que alguien sepa una solución o algún servidor en que no haga esto y probaré, solo tendría que cambiar la global url (por eso lo acomodé así, para futuras mudanzas de servidor :B )

PD: ahora que saben que no soy mujer ya no me ayudan no? JAJAJA es broma :B en el fondo lo soy :*
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 12, 2015, 10:59:55 PM
ok, te digo el bloqueo lo hace por ip, no por pagina, en otras palabras si entran 100 personas en un segundo no se les bloqueara a nadie(mientras no se consuma todo el hancho de banda que te da tu hosting) pero si una persona entra 100 veces en un segundo se bloquea porque lo consideraria un ataque ddos o algo asi, si te fijas hay hosting que tienen cloudflare, precisamente eso hace, evitar estos ataques.
Título: Re:Errorcito con evento HTTP
Publicado por: Markus en Noviembre 13, 2015, 12:51:45 AM
Es que no sólo debes analizar el eventid, sino también el status que te devuelve el evento HTTP.

Cita del manual:
Citar
"status": Returns a value of less than 0 for an error, 1 if content is being downloaded, and a value greater than 1 for any other successful event.

O sea que debes poner algo asi dentro de lo que ya tienes:


status = ds_map_find_value(async_load, "status");
if (status < 0)
{
//Error
}
else if (status > 1)
{
//Exito. poner codigos aqui.
}
else
{
//Nada aun, porque aun esta descargando...
}
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 01:30:22 AM
Cita de: Markus en Noviembre 13, 2015, 12:51:45 AM
Es que no sólo debes analizar el eventid, sino también el status que te devuelve el evento HTTP.

Cita del manual:
Citar
"status": Returns a value of less than 0 for an error, 1 if content is being downloaded, and a value greater than 1 for any other successful event.

O sea que debes poner algo asi dentro de lo que ya tienes:


status = ds_map_find_value(async_load, "status");
if (status < 0)
{
//Error
}
else if (status > 1)
{
//Exito. poner codigos aqui.
}
else
{
//Nada aun, porque aun esta descargando...
}

el esta abriendo un archivo de texto desde el servidor, solo esta abriendo texto, no un archivo realmente, por eso no deberia de darle ese problema, pero de todas maneras voy a buscar informacion acerca de si esto afecta al abrir una pagina tambien o solo a la descarga de archivos

CitarIf there are multiple packets being returned to your game, the callback "status" key will return 1, in which case the ds_map will have the following additional keys:

        "contentLength": This is the size of file that the web server has said you should expect to receive (may be -1 if the server does not return this data).

        "sizeDownloaded": The size of the data that has already been downloaded.


hay dice que si hay varios paquetes ocurre lo que tu dices, pero en realidad el esta abriendo un archivo de texto, copia el texto plano, lo guarda en una variable y lo mete en un archivo de texto con extension ini, de todas maneras yo no sabia que se podia descargar un archivo con el http_get, creia que solo se podia con el http_get_file http://docs.yoyogames.com/source/dadiospice/002_reference/asynchronous%20functions/http_get_file.html
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 01:35:06 AM
no me funciona eso de status, ni lo entiendo :/ disculpa
edito: hmmm get_file?... veamos qué tal :B
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 01:47:45 AM
sabes, acabo de probar lo que el dice y tiene razon, cuando no abre la pagina, por x o y razon, eso te coloca en el status -1, seria util para comprobar si te cargo o no, y si no cargo, es decir si status = -1 volver a enviar la peticion, sí cargo, continuas con el proceso normalmente.

esto solo es para que, por ejemplo, siga enviando peticiones hasta que reciba una respuesta del servidor

lo que podrias hacer es que todo tu evento http lo pongas dentro de un if con la condicion de que el estatus sea 0 o mayor, sino envias otravez el http_get
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 02:46:54 AM
definitivamente, markus me has dicho una buena función que no sabía, me facilita muchísimo, ahora nisiquiera necesito usar el evento HTTP :D

Pero igual me sigue fallando en ocasiones y pone los datos el ini predeterminados... pero una pregunta, porque creo que no será un problema, por eso que dice jmbs de "por ip"... explico... ahora solo estoy probando por eso reinicio y envio hago las cosas bien rápido pero... la idea es poner que mientras el player está en una room fija del juego, se descargue el archivo para el siguiente nivel, entonces en la siguiente room, se descarga el nivel en sí que le toca, según previamente se descargó el dato en la room anterior, me explico?, hay un tiempo entre petición y petición por así decirlo... creen que así no me dará problema nunca? (de todos modos voy a explotar testeando esa posibilidad)

EDITO: pordiossh, lo he separado de rooms y ahora me pasa más aun :S T_T

VUELVO A EDITAR: Mira.. voy a leerme con detenimiento estas funciones en el manual para entender todo mejor, porque voy muy a ciegas...
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 03:33:05 AM
Cita de: kostra en Noviembre 13, 2015, 02:46:54 AM
definitivamente, markus me has dicho una buena función que no sabía, me facilita muchísimo, ahora nisiquiera necesito usar el evento HTTP :D

Pero igual me sigue fallando en ocasiones y pone los datos el ini predeterminados... pero una pregunta, porque creo que no será un problema, por eso que dice jmbs de "por ip"... explico... ahora solo estoy probando por eso reinicio y envio hago las cosas bien rápido pero... la idea es poner que mientras el player está en una room fija del juego, se descargue el archivo para el siguiente nivel, entonces en la siguiente room, se descarga el nivel en sí que le toca, según previamente se descargó el dato en la room anterior, me explico?, hay un tiempo entre petición y petición por así decirlo... creen que así no me dará problema nunca? (de todos modos voy a explotar testeando esa posibilidad)

EDITO: pordiossh, lo he separado de rooms y ahora me pasa más aun :S T_T

VUELVO A EDITAR: Mira.. voy a leerme con detenimiento estas funciones en el manual para entender todo mejor, porque voy muy a ciegas...
mira, pon un show_message con ds_map_find_value(async_load,"status") y dinos que te sale cuando te carga el mapa de defecto, si no te carga la pagina deberia de ser -1, si la cargo 0 o mas, otra cosa mira que pasa si haces esto con tu evento http


estatus = ds_map_find_value(async_load,"status")
if estatus >=0
{
//todo el codigo que tienes hay
}
else
{
//el codigo para hacer un nuevo pedido, el que era urlx = http_get(tu url)
}


deberia de seguir enviando peticiones hasta que le reciba un archivo, incluso puedes poner un contador para que si se le va el internet no este todo el rato trantando de conectarse y que envie un mensaje como "no hay conexion en este momento, trate mas tarde"
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 01:26:44 PM
mira, he hecho esto... ahora que he leido eso del asincrónico, el por qué del async_load y sus cosicas...
create:
file = http_get_file(url+"data/maps.ini","maps.ini");
show_message(string(file))


en HTTP:
if ds_map_find_value(async_load, "id") == file
{
    var status = ds_map_find_value(async_load, "status");
    if status == 0
    {
        show_message("ha leido bien");
        var path = ds_map_find_value(async_load, "result");
        show_message(path);
        ini_open(path);
        mapnum = ini_read_string('num','num',"666");
        ini_close();
        mapnum = real(mapnum)-1;
        randomize();
        middown = irandom(mapnum);
        mid = midname+string(middown)+midext;
    }
    else
    {
        show_message("fail");
        instance_create(x,y,object_index);
        instance_destroy();
    }
}
else
{
    show_message("super fail");
    instance_create(x,y,object_index);
    instance_destroy();
}


Digamos, que en caso de fallo, crea de nuevo otra instancia para que vuelva a hacer el envio...

En el testeo...
parece que el message de file me devuelve lo de antes, un numero que según voy reiniciando va subiendo, pero ahora son dos, me he dado cuenta que eso es, digamos las peticiones hechas, porque antes hacía 3 llamadas y me subia de 3 en 3, ahora hago 2 llamadas y mesube de 2 en 2... y bueno, va llendo bien, hasta más o menos 33 llamada.

por diosssh, no me sé explicar... ahí va otro video JAJA XD
https://youtu.be/H91rttgOPzk con toa la voz de sueño xD

PD: respondeme plis, el evento HTTP funciona en bucle como el step, cierto? o de otra manera, porque es que no me queda claro del todo xD
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 05:18:01 PM
aparte de eso el evento http no es un bucle, solo se ejecuta una vez en el momento en que alguna función http da algún resultado, a ti se te queda en bucle por decirlo así, porque así está hecho el código, si no logra descargar el mapa lo intenta otra vez, si todavía no lo logra lo vuelve a hacer y así hasta que logre descargarlo.

recomendaciones:
1) no entiendo por qué tener dos objetos, creo que sería preferible colocar esto en vez de crear otra instancia y destruir esta: donde están los
instance_create(x,y,object_index);
instance_destroy();

pon
file = http_get_file(url+"data/maps.ini","maps.ini");
show_message(string(file))

2) descárgate el xampp, y has pruebas en local, de esta manera se descartaría o corroboraría que el problema es el código
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 05:42:05 PM
Si ya sé que lo que puse hace bucle, pero claro, pasa que desde que falla, yafalla todo el rato :/

Vale, no sabía si tenía bucle o no, soy nuevo con este evento y estas funciones y bueno... voy aprendiendo xD
probaré eso que dices y ahora me bajo el... wampp va a ser xD

EDITO: ah vale, ya hay xampp para windows xD
Título: Re:Errorcito con evento HTTP
Publicado por: Guacusio en Noviembre 13, 2015, 05:59:43 PM
Me gustaría poder ayudarte, pero aún no entiendo cuál es el problema. ¿Es que no recibes el archivo solicitado? Para empezar, que el valor de la variable status no sea 0 no significa que haya un error; puede que estén llegando paquetes del archivo aún (en cuyo caso valdría 1), así que deberías cambiar la primera condición else a:

else if status<0//sólo valores negativos significan error

Si el valor de status es efectivamente negativo, significa que hubo un error en la descarga del archivo. En ese caso, puede ser que el servidor no acepte peticiones de descarga o que la ruta del archivo en el servidor no coincida con la que le entregas en el argumento de http_get_file.

Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 06:08:33 PM
Cita de: Guacusio en Noviembre 13, 2015, 05:59:43 PM
Me gustaría poder ayudarte, pero aún no entiendo cuál es el problema. ¿Es que no recibes el archivo solicitado? Para empezar, que el valor de la variable status no sea 0 no significa que haya un error; puede que estén llegando paquetes del archivo aún (en cuyo caso valdría 1), así que deberías cambiar la primera condición else a:

else if status<0//sólo valores negativos significan error

Si el valor de status es efectivamente negativo, significa que hubo un error en la descarga del archivo. En ese caso, puede ser que el servidor no acepte peticiones de descarga o que la ruta del archivo en el servidor no coincida con la que le entregas en el argumento de http_get_file.

guacusio su problema no es que de plano no le funcione, el problema es que funciona, pero al cabo de unas cuantas peticiones(entre 25 y 33) deja de abrirle la pagina, a mi parecer no es un error de codigo, sino del hosting, esto lo digo porque le esta enviando el error de que no cargo osea status=-1, hay hostings que si tienen muchas peticiones desde una misma ip la bloquea, tambien puede ser que consume todo el ancho de banda que su hosting le da. por ejemplo un hosting te da un ancho de banda de 100gb al mes, pero con una velocidad maxima de 10mbps entonces yo no se cuanto pesa su archivo, pero si hace muchas peticiones en unos pocos segundos puede acabarse o sobrepasar la velocidad maxima que le dan.
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 06:44:02 PM
subiendo nuevo video xDD atento, editaré este mensaje, de mientras... pos leo lo que habéis dicho y a ver...

EDITO 1: Guacusio, así ta bien?
if ds_map_find_value(async_load, "id") == file
{
    var status = ds_map_find_value(async_load, "status");
    if status == 0
    {
        //show_message("leido");
        var path = ds_map_find_value(async_load, "result");
        //show_message("path: "+string(path));
        ini_open(path)
        mapnum = ini_read_string('num','num',"666");
        ini_close();
        mapnum = real(mapnum)-1;
        randomize();
        middown = irandom(mapnum);
        mid = midname+string(middown)+midext;
    }
    else if status < 0
    {
        show_message("fail (-1)");
        file = http_get_file(url+"data/maps.ini","maps.ini");
    }
    else
        show_message("fail (+1)");
        file = http_get_file(url+"data/maps.ini","maps.ini");
}
else
{
    show_message("superfail");
        file = http_get_file(url+"data/maps.ini","maps.ini");
}


EDITO 2: https://youtu.be/0Il_Iqsvo-I procesado.

EDITO 3: video procesado... esto... he leido Guacusio, eso de que puede que no coincida la ruta con el http_get_file,  entonces he puesto messages en el error de ahi, una que muestre el ds_map_find_value y luego el file, y efectivamente, no coincide, file tiene un numero más que la id de async_load, siempre... a qué se debe?

EDITO 4: FAIL! EL VIDEO ES DEMASIADO LARGO XDDD
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 07:58:32 PM
vale porfin!
https://youtu.be/vS9be55kJlA

nota: mirad lo que edité en el mensaje anterior pliss :B
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 08:33:58 PM
pues mira a estas alturas solo te diria dos cosas, ya sabemos que por un lado el problema era el servidor, por el otro quiero preguntarte si hay algun otro evento http que se ejecute cuando este objeto exista

en caso de que no y como este es eliminado apenas se ejecuta que tal si eliminas la condicional del id y dejas solo la del result
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 08:51:59 PM
1- pero como ves, esto pasa tambien con xampp :S
2- no, por eso separe en 2 objetos
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 09:06:55 PM
Cita de: kostra en Noviembre 13, 2015, 08:51:59 PM
1- pero como ves, esto pasa tambien con xampp :S
2- no, por eso separe en 2 objetos

si, pero porque se desfaso la peticion con la condicion, ademas si te fijas ya no da el segundo problema, el del result que daba error como a los 30 niveles.

prueba esto, quita la condicional que verifica la id del file con la id del get
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 09:11:21 PM
hmm,,, disculpa no entiendo lo que me estás diciendo xD
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 09:22:46 PM
te muestro

[gml]
/*if ds_map_find_value(async_load, "id") == file
{*/
    var status = ds_map_find_value(async_load, "status");
    if status == 0//cambia esto a if status >=0
    {
        //show_message("leido");
        var path = ds_map_find_value(async_load, "result");
        //show_message("path: "+string(path));
        ini_open(path)
        mapnum = ini_read_string('num','num',"666");
        ini_close();
        mapnum = real(mapnum)-1;
        randomize();
        middown = irandom(mapnum);
        mid = midname+string(middown)+midext;
    }
    else if status < 0
    {
        show_message("fail (-1)");
        file = http_get_file(url+"data/maps.ini","maps.ini");
    }
    /*else
        show_message("fail (+1)");
        file = http_get_file(url+"data/maps.ini","maps.ini");
}*/
/*else
{
    show_message("superfail");
        file = http_get_file(url+"data/maps.ini","maps.ini");
}*/[/gml]

quitale lo que le puse como anotacion o ponlo como anotacion tambien
Título: Re:Errorcito con evento HTTP
Publicado por: Markus en Noviembre 13, 2015, 10:01:40 PM
El código está mal, no están poniendo como les dije:

1. Si status es menor que cero hubo un error. En esta situación puedes volver a solicitar el archivo.
2. Si status es mayor que cero, el evento resultó exitoso y sólo en este caso debes poner tu código para cargar el nivel.
3. Si status es mayor que -1 y menor que 1 (en el caso del código lo puse como ELSE) no hay que hacer nada, ya que aún no llegan todos los paquetes. Por lo que no debes poner nada.

A mí me pasó lo mismo que a ti, por eso leí bien el manual y entendí mi error. De ese modo funciona bien.

Saludos
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 10:07:12 PM
por el momento parece no fallar, obvio si le quito la verificación, no me avisará nada xD, pero eswtoy probando y probando y por el momento no me salió ninguno por defecto, igual, continuaré explotando esta posibilidad hasta que me canse... y después lo probaré con el hosting... mi pregunta es... cómo sé qué pasará en el caso hipotético de que mucha gente juegue y hayan varias peticiones simultaneas? (pero por cada uno, llama 2 o 3 veces máximo, por orden, cada X tiempo, según lo que tarden en pasarse el nivel) ??

EDITO: ok markus, tomo nota, pero qué ocurre con la linea que jmbs me hizo quitar?, la primera comparación?
Título: Re:Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 13, 2015, 10:38:46 PM
Cita de: Markus en Noviembre 13, 2015, 10:01:40 PM
El código está mal, no están poniendo como les dije:

1. Si status es menor que cero hubo un error. En esta situación puedes volver a solicitar el archivo.
2. Si status es mayor que cero, el evento resultó exitoso y sólo en este caso debes poner tu código para cargar el nivel.
3. Si status es mayor que -1 y menor que 1 (en el caso del código lo puse como ELSE) no hay que hacer nada, ya que aún no llegan todos los paquetes. Por lo que no debes poner nada.

A mí me pasó lo mismo que a ti, por eso leí bien el manual y entendí mi error. De ese modo funciona bien.

Saludos
marcus e testeado muchas veces y abriendo una pagina en mi propio codigo de pruebas y status solo era 1 cuando todavia estaba descargando la pagina, pero cuando terminaba se colocaba en 0, entonces status solo es 0 cuando termino de descargar los archivos, te adjunto imagenes.
Título: Re:Errorcito con evento HTTP
Publicado por: Markus en Noviembre 13, 2015, 10:43:42 PM
Mira, edito el código que pusiste antes para que me entiendas:


if ds_map_find_value(async_load, "id") == file
{
    var status = ds_map_find_value(async_load, "status");
    if (status > 1) //EXITO
    {
        //show_message("leido");
        var path = ds_map_find_value(async_load, "result");
        //show_message("path: "+string(path));
        ini_open(path);
        mapnum = ini_read_string('num','num',"666");
        ini_close();
        mapnum = real(mapnum)-1;
        randomize();
        middown = irandom(mapnum);
        mid = midname+string(middown)+midext;
    }
    else if (status < 0) //ERROR
    {
        show_message("fail (-1)");
        file = http_get_file(url+"data/maps.ini","maps.ini");
    }
    else //AUN DESCARGANDO DATOS
   {
        //show_message("waiting...");
       //AQUI NO TIENES QUE PONER NADA PORQUE AUN NADA OCURRE.
    }
}
else //La llamada no corresponde
{
    //AQUI TAMPOCO TIENES QUE PONER NADA PORQUE SI LLEGA A ESTE PUNTO
   //EL ID DEL EVENTO NO ES EL MISMO QUE EL DE TU OBJETO.
}


y jmbs19, se pone cero cuando es exitoso pero aún no termina, es decir, vas a tener datos incompletos.
Título: Re:Errorcito con evento HTTP
Publicado por: Markus en Noviembre 13, 2015, 10:53:56 PM
jmbs19 te pido disculpas porque me confundí y tienes razón.

El código quedaría así:


if ds_map_find_value(async_load, "id") == file
{
    var status = ds_map_find_value(async_load, "status");
    if (status < 0) //ERROR
    {
        show_message("fail (-1)");
        file = http_get_file(url+"data/maps.ini","maps.ini");
    }
    else if (status == 1) //AUN DESCARGANDO DATOS
   {
        //show_message("waiting...");
       //AQUI NO TIENES QUE PONER NADA PORQUE AUN NADA OCURRE.
    }
    else //EXITO
    {
        //show_message("leido");
        var path = ds_map_find_value(async_load, "result");
        //show_message("path: "+string(path));
        ini_open(path);
        mapnum = ini_read_string('num','num',"666");
        ini_close();
        mapnum = real(mapnum)-1;
        randomize();
        middown = irandom(mapnum);
        mid = midname+string(middown)+midext;
    }
}
else //La llamada no corresponde
{
    //AQUI TAMPOCO TIENES QUE PONER NADA PORQUE SI LLEGA A ESTE PUNTO
   //EL ID DEL EVENTO NO ES EL MISMO QUE EL DE TU OBJETO.
}
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 13, 2015, 11:33:15 PM
disculpen mi demora por si estabais atentos al tema... hoy me tocaba a mi ir por la comida xD


https://gyazo.com/5941533f7243cafd021a7bb762464193
El problema no es que si falla haga algo o me avise o no o lo que sea, el problema es que no quiero que falle nunca, jugar al juego depende EXCLUSIVAMENTE de que todo funciones bien en esta fase, es el pilar central de absolutamente todo mi proyecto T_T
PD: miren el titulo que pone FAILNAME by FAILAUTHOR eso es que lo cambié, significa que es predeterminado, osea FAIL
Título: Re:Errorcito con evento HTTP
Publicado por: Markus en Noviembre 14, 2015, 12:19:53 AM
Pero cuéntanos qué agregaste en tu código y qué resultados te dan.

La idea es que cuando falle, lo reintente o sea que avises al jugador que aún está cargando (una barra de loading o un circulo de carga). Y si después de varios fallidos no lo logra, avisar al jugador que hubo un problema, revise su conexión e intente más tarde.
Título: Re:Errorcito con evento HTTP
Publicado por: kostra en Noviembre 14, 2015, 12:44:52 AM
Bueno, muchas gracias a todos, confiaré en que no me de problemas, y bueno, se me ha ocurrido de que en caso de que pase eso... puedo poner los datos predeterminados, con un código de nivel bonus, o incluso meterle random :D

Continuo con mi proyecto, un abrazo! :B
Título: Re:[Vamos a decir que "Solucionado"] Errorcito con evento HTTP
Publicado por: jmbs19 en Noviembre 14, 2015, 12:56:18 AM
pero dinos, el problema se soluciono con lo de verificar el status?
Título: Re:[Vamos a decir que "Solucionado"] Errorcito con evento HTTP
Publicado por: kostra en Noviembre 14, 2015, 01:56:47 AM
probando lo último, por el momento, solo me falla si le meto un bucle impresionante de reinicios de room, pero no falla siempre, reinicio de nuevo y todo bien, tiene muuucha pinta de que esté todo bien.