Noviembre 09, 2015, 07:22:45 AM Ultima modificación: Noviembre 09, 2015, 07:28:45 PM por kostra
no he dormido hoy... llevo absolutamente toda la noche buscando sin parar, en español, en ingles, en chino (okno xD)... en mi proyecto necesito dos cosas importantísimas... 1-Leer archivo online... LO HE CONSEGUIDO :'D
2-...
Necesito poder subir archivos al hosting en el que estoy registrado, ya sea por ftp, ssl o lo que sea que se pueda... archivo ini

He encontrado millones de dll, pero según he leido, eso solo funciona para windows y no para apps android que es lo que hago.
He visto GMechanism, pero veo que aloja en su propio servidor y no el mio..
He buscado por aqui en el foro y todos los temas similares que encontré están... sin responder... espero que no me pase a mi eso... pues absolutamente todo mi proyecto se irá directamente a la basura T_T

[spoiler]DIOS CLAMUD, YO TE INVOCO!! okno es broma tengo demasiado sueño xD CAFÉEE!!![/spoiler]
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#1 Noviembre 09, 2015, 10:15:43 AM Ultima modificación: Noviembre 09, 2015, 10:29:58 AM por penumbra
Una manera, sin recurrir a dlls ni GMechanism, sería crear un script PHP que correría en el servidor a la espera de la llegada del archivo,  por ejemplo usando fopen en modo escritura. El script debería devolver un valor para saber si se ha recibido correctamente el archivo, y se debería emplear el evento asíncrono HTTP (En GM:S) para comprobar si el archivo se recibió correctamente, revisando si llegó ese valor.

El archivo ini puede enviarse mediante la función http_post_string(), pero si se manda así tal cual, probablemente todo el proceso falle, porque la URL no sería válida, entonces se necesita usar codificación de URL para que el envío sea correcto
http://help.yoyogames.com/entries/26963528-Encoding-URLs


NOTA: Existiría la posibilidad (quizás remota, quizás no tanto) de que alguien más podría aprovechar el script para subir archivos al servidor.

#2 Noviembre 09, 2015, 12:54:45 PM Ultima modificación: Noviembre 09, 2015, 01:20:28 PM por kostra
he seguido este tuto, creo que es lo que dices, y me sale upload failed todo el rato:
http://gmc.yoyogames.com/index.php?showtopic=635244&p=4639387

te refieres a algo asi?


EDITO: PD: cabe destacar que necesito que en el envio se CREE un nuevo archivo, trato de subir códigos de "niveles" en el cual se subirá en plan "mapa1.ini", "mapa2.ini", etc... que controlaré con un ciclo.
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

¿es muy necesario subir el archivo al hosting? si lo que necesitas es subir informacion al hosting, como highscore o un save, pudieras usar php y mysql, guardas la informacion atraves de una consulta insert y la sacas atravez de una select, esto lo puedes hacer con php para que despues interprete los datos y los sacas por un http_get como string, luego en el evento async http guardas el result en una variable y despues puedes hacer lo que quieras con esa informacion, ya sea explotarla si son varias cosas y cosas asi.
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

Cita de: penumbra en Noviembre 09, 2015, 10:15:43 AM
El archivo ini puede enviarse mediante la función http_post_string(), pero si se manda así tal cual, probablemente todo el proceso falle, porque la URL no sería válida, entonces se necesita usar codificación de URL para que el envío sea correcto
http://help.yoyogames.com/entries/26963528-Encoding-URLs

Hice una prueba con http_post_string para transmitir un string con espacios y acentos y fue recibido correctamente. Al parecer, esta función ya incluye la codificación necesaria para enviar información.


jmbs, sí más que necesario es la BASE del juego.

Guacusio.. pues no sé que hago mal... O_o

ahora vuelvo a hacerlo y edito el post con imágenes de lo que hice, hasta un rato, espero que estés T_T vaya diita tengo hoy, encima peleándome con clavos que no paran de torcerse siempre, en una habitación repleta de fibra de vidrio que me pica todo el cuerpo,  a eso le sumas el no dormir y los cafés.... xDDDD (me aburro y me gusta contar mi vida, no es pa dar pena, sino pa reir un rato xD)
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#6 Noviembre 09, 2015, 06:25:55 PM Ultima modificación: Noviembre 09, 2015, 06:28:09 PM por Guacusio
Cita de: kostra en Noviembre 09, 2015, 12:54:45 PM
he seguido este tuto, creo que es lo que dices, y me sale upload failed todo el rato:
http://gmc.yoyogames.com/index.php?showtopic=635244&p=4639387

te refieres a algo asi?


EDITO: PD: cabe destacar que necesito que en el envio se CREE un nuevo archivo, trato de subir códigos de "niveles" en el cual se subirá en plan "mapa1.ini", "mapa2.ini", etc... que controlaré con un ciclo.

Si te aparece upload failed, significa que deberías recibir el string FAIL, lo cual implica que la página PHP no pudo abrir el archivo en modo escritura, que sería bastante improbable (exista el archivo o no). Indica qué es lo que devuelve la página PHP en el evento asíncrono HTTP, por ejemplo con un show_message:

if (async_load[? 'id'] == ah_upload) {
  show_message(async_load[? 'result']);
  if (string_copy(async_load[? 'result'], 1, 2) == "OK") {
    show_message_async("Upload OK.");
  }
  else {
    show_message_async("Upload failed.");
  }
}


Otra cosa: ¿creaste la carpeta uploads en el mismo directorio donde se encuentra la página PHP?


me plasma un mensaje en blanco

una pregunta... la última parte del tuto ese, lo de:
var url_upload = "http://www.gamegeisha.net/gms_upload.php";
var fname = "myini.ini";
var f = file_text_open_read(fname);
var fcont = "";
while (!file_text_eof(f)) {
  fcont += file_text_read_string(f) + chr(13) + chr(10);
  file_text_readln(f);
}
file_text_close(f);
   
ah_upload = http_post_string(url_upload, 'fname=' + url_encode(filename_name(fname)) + '&fcont=' + url_encode(fcont));


en qué evento va? porque no dice nada o no lo veo y no me queda claro, entonces he probado tanto en HTTP como en una tecla como digamos, para "llamarlo"
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

todos los pasos que he hecho, lo que tengo...

1-El archivo gms_upload.php en el directorio /uploads/
https://gyazo.com/012b2b7fd1073e2e640effef94c7b22f

2-el script del url_encode
https://gyazo.com/e79513ff1168c422fd1eb5342e523ea5

3-evento create
https://gyazo.com/164e75f0a04ddf0fa1d167e9fcdac01c

4-Evento HTTP
https://gyazo.com/b6688258bc6c9fe464d231b2e6da9d54

5-Evento tecla cntrl (también lo he probado en el HTTP, pero de esa manera nisiquiera me aparece lo del failed)
https://gyazo.com/cf63a70b1758d75fb2639adeae3c0913

6-el resultado al pulsar la tecla cntrl
https://gyazo.com/9d82ea5a0c60733b8dd7fe271c20a356
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#9 Noviembre 09, 2015, 07:10:57 PM Ultima modificación: Noviembre 09, 2015, 07:16:04 PM por jmbs19
Cita de: kostra en Noviembre 09, 2015, 06:30:50 PM
me plasma un mensaje en blanco

una pregunta... la última parte del tuto ese, lo de:
var url_upload = "http://www.gamegeisha.net/gms_upload.php";
var fname = "myini.ini";
var f = file_text_open_read(fname);
var fcont = "";
while (!file_text_eof(f)) {
  fcont += file_text_read_string(f) + chr(13) + chr(10);
  file_text_readln(f);
}
file_text_close(f);
   
ah_upload = http_post_string(url_upload, 'fname=' + url_encode(filename_name(fname)) + '&fcont=' + url_encode(fcont));


en qué evento va? porque no dice nada o no lo veo y no me queda claro, entonces he probado tanto en HTTP como en una tecla como digamos, para "llamarlo"

si te fijas ese codigo es un ejemplo completo(te le puse anotaciones en español)


var url_upload = "http://www.gamegeisha.net/gms_upload.php"; //url a la que se subira el archivo
var fname = "myini.ini"; //el nombre del archivo
var f = file_text_open_read(fname); //se abre el archivo a subir para leerlo
var fcont = ""; //se crea la variable donde se guardara el contenido del mismo
//desde aqui
while (!file_text_eof(f)) {
  fcont += file_text_read_string(f) + chr(13) + chr(10);
  file_text_readln(f);
}
file_text_close(f);
//hasta aqui se va leyendo cada linea del archivo y se cierra el archivo   
ah_upload = http_post_string(url_upload, 'fname=' + url_encode(filename_name(fname)) + '&fcont=' + url_encode(fcont)); //esto sube el archivo a tu php con las dos variables que este toma
/*
a url_upload(http://www.gamegeisha.net/gms_upload.php)
sube o envia la siguiente informacion como variables superglobales en post(la informacion no se ve en el link):
fname = nombre del archivo codificado
fcont= el contenido del archivo codificado
*/


entonces este codigo esta completo, y es el que deberias de colocar dentro de tu ejecutor sin absolutamente mas nada dentro del codigo de game maker.

esto va dentro de tu php
<?php
  
//CORS header
  
header("Access-Control-Allow-Origin: *");

  
//Capture parameter
  
$fname $_POST['fname']; //nombre del archivo que recibira como variable superglobal en modo post
  
$fcont $_POST['fcont']; // contenido del archivo

  
//Write the file
  
if ($f fopen("uploads/$fname"'w')) {
    
fwrite($f$fcont);
    
fclose($f);
    echo 
"OK";
  }
//esto basicamente crea el archivo con el nombre que le diste, luego lo escribe y al final lo cierra
  
else {
    echo 
"FAIL";//esto solo ocurre si el archivo no tiene nombre, o la informacion se envia incorrectamente
  
}
?>


entonces con solo estas dos cosas deberia de funcionar, el primero en el gatillador de la accion y el segundo en tu php, esto es para subir el archivo, para descargarlo tendrias que usar el http_get_file

se me olvidaba, en el mensaje que te mostrara no coloques directamente el mensaje a mostrar, ponle que muestre el result para saber exactamente que te sale, otra cosa si usas 000webhost, que me parece eso por el editor de php que mostraste, ellos creo que no permiten ni subir ni descargar archivos a sus servidores, solo te permite abrir paginas y ya, te lo digo porque ya yo lo intente.
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

#10 Noviembre 09, 2015, 07:28:04 PM Ultima modificación: Noviembre 09, 2015, 07:30:45 PM por kostra
https://gyazo.com/a63a5acfef797579a0e598e400251a68

[spoiler]Me has salvado la vida, no te imaginas lo inmensamente agradecido que estoy, de todos, seguro que ya me dieron antes respuesta buena pero no entendí, esto es nuevo para mi... acabo de completar la fase más dificil e importante de todo mi proyecto!! OS HAMO!!!!!!!![/spoiler]
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Hola, perdón por la molestia, y más que el tema está resuelto...pero...
no logro comprender del todo cómo funciona y cómo se hace este mecanismo para subir archivos... si no es mucha molestia, agradecería me explicaran algunas cosas:

1)-
Citar(...)otra cosa si usas 000webhost, que me parece eso por el editor de php que mostraste, ellos creo que no permiten ni subir ni descargar archivos a sus servidores, solo te permite abrir paginas y ya, te lo digo porque ya yo lo intente.
¿Qué servidor online debo usar para que pueda guardar los datos? ¿Cuál me recomiendan? ¿son gratuitos?

2)- ¿Cuántos scripts PHP debo tener, y dónde?

3)- ¿Qué significa y dónde va este código? :
Citarvar url_upload = "http://www.gamegeisha.net/gms_upload.php"; //url a la que se subira el archivo
var fname = "myini.ini"; //el nombre del archivo
var f = file_text_open_read(fname); //se abre el archivo a subir para leerlo
var fcont = ""; //se crea la variable donde se guardara el contenido del mismo
//desde aqui
while (!file_text_eof(f)) {
  fcont += file_text_read_string(f) + chr(13) + chr(10);
  file_text_readln(f);
}
file_text_close(f);
//hasta aqui se va leyendo cada linea del archivo y se cierra el archivo   
ah_upload = http_post_string(url_upload, 'fname=' + url_encode(filename_name(fname)) + '&fcont=' + url_encode(fcont)); //esto sube el archivo a tu php con las dos variables que este toma
/*
a url_upload(http://www.gamegeisha.net/gms_upload.php)
sube o envia la siguiente informacion como variables superglobales en post(la informacion no se ve en el link):
fname = nombre del archivo codificado
fcont= el contenido del archivo codificado
*/

3)- Realmente no entendí este tema. ¿Podrían explicarme resumidamente los pasos a seguir para poder subir archivos al hosting?

Si no es mucho pedir, agradecería eternamente si me respondieran esto...GRACIAS :'( :'( :'( :'( :D :D
alaberga regué el café.

BA:STFW&RTFM

Cita de: NiuWeb en Noviembre 17, 2015, 06:26:56 PM
Hola, perdón por la molestia, y más que el tema está resuelto...pero...
no logro comprender del todo cómo funciona y cómo se hace este mecanismo para subir archivos... si no es mucha molestia, agradecería me explicaran algunas cosas:

1)-
Citar(...)otra cosa si usas 000webhost, que me parece eso por el editor de php que mostraste, ellos creo que no permiten ni subir ni descargar archivos a sus servidores, solo te permite abrir paginas y ya, te lo digo porque ya yo lo intente.
¿Qué servidor online debo usar para que pueda guardar los datos? ¿Cuál me recomiendan? ¿son gratuitos?

2)- ¿Cuántos scripts PHP debo tener, y dónde?

3)- ¿Qué significa y dónde va este código? :
Citarvar url_upload = "http://www.gamegeisha.net/gms_upload.php"; //url a la que se subira el archivo
var fname = "myini.ini"; //el nombre del archivo
var f = file_text_open_read(fname); //se abre el archivo a subir para leerlo
var fcont = ""; //se crea la variable donde se guardara el contenido del mismo
//desde aqui
while (!file_text_eof(f)) {
  fcont += file_text_read_string(f) + chr(13) + chr(10);
  file_text_readln(f);
}
file_text_close(f);
//hasta aqui se va leyendo cada linea del archivo y se cierra el archivo   
ah_upload = http_post_string(url_upload, 'fname=' + url_encode(filename_name(fname)) + '&fcont=' + url_encode(fcont)); //esto sube el archivo a tu php con las dos variables que este toma
/*
a url_upload(http://www.gamegeisha.net/gms_upload.php)
sube o envia la siguiente informacion como variables superglobales en post(la informacion no se ve en el link):
fname = nombre del archivo codificado
fcont= el contenido del archivo codificado
*/

3)- Realmente no entendí este tema. ¿Podrían explicarme resumidamente los pasos a seguir para poder subir archivos al hosting?

Si no es mucho pedir, agradecería eternamente si me respondieran esto...GRACIAS :'( :'( :'( :'( :D :D

1. Yo usé 000webhost y hace muy poco sufrieron un ataque y estuvieron inutilizables por cerca de una semana. Como no sabía cuánto tiempo seguirían así y al ver pasar los días sin que lo solucionaran, me cambié a hostinger y hasta ahora no me arrepiento: no tiene publicidad ni le agrega basura a las respuestas de las solicitudes http. Aún no he probado las funciones php para crear y editar archivos ya que guardo la información subida en una base de datos MySQL, así que no puedo opinar sobre eso.

2. basta con uno, y su ubicación es la misma que le das en la url cuando haces el post:

http://www.gamegeisha.net/gms_upload.php

3. El código que indicas va donde tú quieras hacer la subida del archivo. Lo que hace es leer línea por línea el texto del archivo en tu equipo y lo almacena en una variable string (fcont). Luego hace una petición post para enviarle a la página php 2 variables: una con el nombre del archivo que debe crear en el servidor (fname), y otra con el contenido (fcont).

El archivo php lo que debe hacer es tomar el contenido de la variable fcont que acaba de recibir y luego escribir ese string en un nuevo archivo de texto con el nombre fname.

En resumen:

-Crea una cuenta en un hosting
-Obtén la url de tu carpeta (normalmente se llama public_html) y dentro de ella crea un archivo llamado gms_upload.php
-Te sugiero que en vez de trabajar con el editor online del host, lo hagas con notepad++ y que subas el archivo mediante un cliente ftp, como filezilla. Eso es debido a que si usas caracteres con acentos el archivo php debe estar formateado en utf-8, cosa que sí puede hacer notepad++ pero no necesariamente el editor del host. Yo ya perdí varios días peleando con eso hasta que me di cuenta.
-Escribe el código que recibe los datos de GMS y que crea el archivo en el server
-En GMS, escribe el código que envía la información (el que tienes arriba) en el evento donde quieres enviarlo. Puede ser un create, una alarma, un mouse press, etc. pero la idea es hacerlo una sola vez (es decir, no uses step)
-En el evento HTTP puedes recibir la respuesta del servidor (si la hay). Por ejemplo, un string "ok" que signifique que el archivo fue correctamente guardado en el server. Para hacerlo, tienes que agregar un código en el php que devuelva ese string "ok".
-De acuerdo a mi experiencia, la función url_encode que tienes en el código no se necesita ya que GMS convierte automáticamente los caracteres especiales a su codificación url.
-Si tienes dudas sobre el código php, este es un buen tutorial que encontré para principiantes:

http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193


Me aparecen estor errores:
############################################################################################
ERROR in
action number 1
of Key Press Event for <Ctrl> Key
for object oPublish:

File is not opened for reading.
at gml_Object_oPublish_KeyPressed_CTRL_1 (line 6) - while (!file_text_eof(f)) {
############################################################################################

___________________________________________
############################################################################################
ERROR in
action number 1
of Key Press Event for <Ctrl> Key
for object oPublish:

File is not opened for reading.
at gml_Object_oPublish_KeyPressed_CTRL_1 (line 7) -   fcont += file_text_read_string(f) + chr(13) + chr(10);
############################################################################################

___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Key Press Event for <Ctrl> Key
for object oPublish:

DoAdd :: Execution Error
at gml_Object_oPublish_KeyPressed_CTRL_1 (line 7) -   fcont += file_text_read_string(f) + chr(13) + chr(10);
############################################################################################


Qué hago? :'( :'( :'(
PD: tengo los códigos iguales a como están en el tema, sólo que, claramente, cambie la URL por la mía
alaberga regué el café.

BA:STFW&RTFM

Cita de: NiuWeb en Noviembre 18, 2015, 02:26:32 AM
PD: tengo los códigos iguales a como están en el tema, sólo que, claramente, cambie la URL por la mía
Si sólo cambiaste el URL, ¿tu ini tiene el mismo nombre que el del ejemplo?