Enero 13, 2013, 06:20:52 PM Ultima modificación: Enero 13, 2013, 08:38:49 PM por francordoba
"File is not opened for reading", me sale esto cuando intento ejecutar este código que muestra texto desde un bloc de notas.txt.  El caso es que seguía un tutorial al pie de la letra.

http://www.youtube.com/watch?v=TeIVXsuGbU0&feature=plcp   <-- el tutorial.

Mi código

En Mensaje_object:


idioma = 1;


if (idioma == 1){archivoTexto = file_text_open_read("idiomas/espanol.txt");}
if (idioma == 2){archivoTexto = file_text_open_read("idiomas/ingles.txt");}


linea1 = file_text_read_string(archivoTexto);
file_text_readln(archivoTexto);
linea2 = file_text_read_string(archivoTexto);


file_text_close(archivoTexto);


En el evento Draw del mensaje_object:

draw_text(12,400,linea1);
draw_text(12,432,linea2);



La ruta del txt:

GameMaker\Projects\testgame.gmx\idiomas

En el bloc de notas  espanol.txt   (le quite la "ñ" por si acaso).

esta es la linea 1
esta es la linea 2



No sé ya que demonios hacer porque segun el tutorial, es así. Recuerdo que por ejemplo, en "Flash, actionscrip 2.0) los bloc de notas tenían que estar guardados en formato "unicode", probe esto y de todas las maneras.

Puse las barras  "/"  ,   "\", de ambas maneras. Puse dobles comillas y comillas simples. Sinceramente no se que ocurre.


¿Alguna ayuda?

Ese error sale cuando el archivo no pudo ser abierto. Lo más seguro es que no hayas especificado la ruta correctamente.
La carpeta idiomas tiene que estár en la misma carpeta que el editable para que GM encuentre el archivo.
Vim.

La carpeta idiomas está depositada en la misma carpeta donde se encuentra el .gmx.


Acabo de poner el archivo en el directorio raiz, así pelado y mondado, sin carpeta que lo albergue y quitando de la ruta el directorio "idiomas". Tampoco lo abre.

estas seguro? prueba en el modo debug mode.
CREADOR DE JUEGOS GM.


- Como hacer preguntas inteligentes
- Reglamento General

HOLA COMUNIDAD,HOLA A TODOS




uso game maker 8 pro 8) y game maker studio Master Collection

El debug me dice:  Failed to open file:  idiomas/espanol.txt

#5 Enero 13, 2013, 07:04:56 PM Ultima modificación: Enero 13, 2013, 07:10:46 PM por brunoxzx
Pues todo parece indicar que el archivo que quieres abrir no existe o esta mal escrita la ruta intenta poner un show_message después de abrir tu archivo de texto, creo que si el numero es menor a cero significa que el archivo no se abrió correctamente.
[gml]show_message(archivoTexto);[/gml]

mm no se que mas podría ser.
Intenta usando la función get_open_filename(filter,fname).

Edit: wow me fui 2 minutos y volvi y ya escribieron un montón.

Doble edit: Yaaa. El problema es que no pusiste que estabas usando gm:studio, por algo está lo de poner el icono en el tema.

Pues lo que sucede es que el gm:studio está en un sandboxed lo que significa que no puedes abrir archivos fuera de la carpeta temporal que se crea en datos de programa, la opcion mas simple es añadir tus dos archivos de idiomas a los "include_files" del gm.

Cita de: francordoba en Enero 13, 2013, 06:55:24 PM
La carpeta idiomas está depositada en la misma carpeta donde se encuentra el .gmx.


Acabo de poner el archivo en el directorio raiz, así pelado y mondado, sin carpeta que lo albergue y quitando de la ruta el directorio "idiomas". Tampoco lo abre.
¿gmx? Si estás usando GM Studio, colocaste el ícono incorrecto...

Probá con rutas absolutas, a ver si eso funciona. (working_directory + "\archivo1.txt").
Fijate que working_directory tenga el valor correcto con un show_message.
Vim.

#7 Enero 13, 2013, 07:11:35 PM Ultima modificación: Enero 13, 2013, 07:13:34 PM por brunoxzx
Pongo lo que edite de mi otro mensaje:
Doble edit: Yaaa. El problema es que no pusiste que estabas usando gm:studio, por algo está lo de poner el icono en el tema.

Pues lo que sucede es que el gm:studio está sandboxed lo que significa que no puedes abrir archivos fuera de la carpeta temporal que se crea en datos de programa, la opcion mas simple es añadir tus dos archivos de idiomas a los "include_files" del gm.

Perdonad pero es que no me entero ni de la mitad de las cosas que me estáis poniendo. Ya cambié el icono a Gamemaker Studio.

Ahora bien. 

¿A estas alturas ya no se por donde cogerlo. Podéis ponerme un ejemplo desde 0? ¿algún tutorial?

No se como se ponen rutas absolutas, ni como funciona el working_directory, ya que estaba siguiendo un tutorial por que mi conocimiento de este programa se remonta a excasamente 2 semanas, (ya tenía conocimientos de java y actionscript), y se ve que con mi versión no va.

Solamente intento cargar en pantalla textos de un bloc de notas con strings.

Por lo tanto no me entero de nada.

Acabo de escubrir que en el directorio:

C:\Users\yo\AppData\Local\Temp\gm_ttt_35685 se encuentra el .exe (no me refiero al editable), y que si deposito allí mismo el .txt si lo abre.

Mi duda es, si termino el juego, al estar este archivo en una carpeta temporal, será eliminado cuando prepare el instalable de mi juego?

¿Es ahí realmente donde tengo que depositar los .txt?

#10 Enero 13, 2013, 08:27:16 PM Ultima modificación: Enero 13, 2013, 08:32:29 PM por Kamikaze
En el evento create pone:


idioma = 1;

if(idioma = 1 ){
    archivoTexto = file_text_open_read(working_directory + "\idiomas\espanol.txt");
}

if(idioma = 2 ){
    archivoTexto = file_text_open_read(working_directory + "\idiomas\ingles.txt");
}

linea1 = file_text_read_string(archivoTexto);
file_text_readln(archivoTexto);
linea2 = file_text_read_string(archivoTexto);


file_text_close(archivoTexto);


En el evento draw pone

draw_text(12,400,linea1);
draw_text(12,432,linea2);


Y acordate poner la carpeta idiomas donde tenes el exe del juego.

EDIT: También podes simplificar el código para cuando tengas mas lenguajes, con un simple switch

switch(idioma){
    case 1:
    archivoTexto = file_text_open_read(working_directory + "\idiomas\espanol.txt");
    break;

    case 2:
    archivoTexto = file_text_open_read(working_directory + "\idiomas\ingles.txt");
    break;

   //etc etc
}


PD: Lee el mail :P
"El diablo sabe por viejo y no por diablo"... Usuario desde el año 2006.

Te refieres al .exe y no al .gmx no?

¿Y si es así, el .exe solamente se encuentra en la carpeta temporal?

Cita de: francordoba en Enero 13, 2013, 08:33:17 PM
Te refieres al .exe y no al .gmx no?

¿Y si es así, el .exe solamente se encuentra en la carpeta temporal?

Mira para testear si funciona, copia el código que te puse anteriormente luego crea el ejecutable en modo zip (Compressed Aplications Zip), extrae toda la carpeta y ahí donde esta el exe del juego pega la carpeta de idiomas, abrí el ejecutable y tendría que funcionar... Hace eso para ver si esta funcionando.
"El diablo sabe por viejo y no por diablo"... Usuario desde el año 2006.

comprobado, el único error. EL directorio debe estar en la carpeta temporal. (Algo totalmente incomprensible para mi).

Gracias a todos y espero que esto, sin lugar a dudas, le sirva a alguien.

La verdad no te recomiendo el método que te menciona kamikaze.
Hace unos meses lo usaba pero era muy incomodo tener que poner los archivos en la carpeta temporal cada vez que reiniciaba el gm:studio. Lo que te recomiendo yo es añadirlos a los "included files", en el árbol de recursos están justo debajo de los rooms, solo le das click derecho y le pones en "create included file" y allí seleccionas el archivo y en que plataformas lo necesitas. después para abrirlo solo haces esto:

[gml]file_text_open_read("Ingles.txt");[/gml]
nota: Aunque pongas el archivo en un grupo o carpeta dentro de los included files cuando lo quieras abrir no tienes que poner la carpeta en la que se encuentra dentro de la ruta.

Otra ventaja de este método es que no tienes que preocuparte por poner la carpeta en todas las plataformas a donde lo exportas, una desventaja es que gm al exportar el ejecutable los mete dentro del archivo que se llama "data.win" y no los puedes ver, aunque puedes usar esto solo como algo para pruebas y al momento de crear tu ejecutable haces lo que dice kamikaze.