#15 Noviembre 13, 2015, 01:47:45 AM Ultima modificación: Noviembre 13, 2015, 01:50:52 AM por jmbs19
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
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

#16 Noviembre 13, 2015, 02:46:54 AM Ultima modificación: Noviembre 13, 2015, 03:17:04 AM por kostra
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...
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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"
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

#18 Noviembre 13, 2015, 01:26:44 PM Ultima modificación: Noviembre 13, 2015, 01:37:18 PM por kostra
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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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.



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.
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

#23 Noviembre 13, 2015, 06:44:02 PM Ultima modificación: Noviembre 13, 2015, 06:59:43 PM por kostra
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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

vale porfin!
https://youtu.be/vS9be55kJlA

nota: mirad lo que edité en el mensaje anterior pliss :B
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#25 Noviembre 13, 2015, 08:33:58 PM Ultima modificación: Noviembre 13, 2015, 08:50:45 PM por jmbs19
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
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

1- pero como ves, esto pasa tambien con xampp :S
2- no, por eso separe en 2 objetos
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

hmm,,, disculpa no entiendo lo que me estás diciendo xD
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien