Octubre 19, 2013, 11:49:09 PM Ultima modificación: Octubre 22, 2013, 05:21:41 PM por unixhacker2600
Hola quería saber porqué no funciona mi código,os lo dejo:
ini_open(working_directory+"\Data\Options.ini")
global.render_distance=ini_read_real("graphics","renderdistance",0)
ini_close()

creo que no me abre el .ini,querría saber porqué y como arreglarlo.

El problema es que GM nada más permite manipular los *.ini ÚNICAMENTE desde el directorio raíz del proyecto, es decir en el mismo directorio donde está el ejecutable. Si queres usar *.ini desde otro directorio tenes que usar alguna librería.

Usen txt, es mucho mejor que un horrible y feo ini




El *.ini es estructurado y ordenado, vos buscas la llave y ya, el *.txt no.

Al revés, el txt es el estructurado y ordenado, hay que acceder a los elementos secuencialmente, si bien el ini es más simplón restringe mucho con eso de que tiene que ser la carpeta del juego, y no es recomendable usar una dll para eso, perderías el soporte multiplataforma de gm studio, e inclusive en windows surgen más incompatibilidades según el sistema operativo y las actualizaciones que tengas encima




#5 Octubre 22, 2013, 05:23:32 PM Ultima modificación: Octubre 22, 2013, 05:25:40 PM por unixhacker2600
Vale,pero a mi me gustaría un .ini,este código no funciona y el ini esta en la carpeta del proyecto!
Que estoy haciendo mal?Me lo podeis explicar?
ahora probé con este código:
ini_open("Options.ini")
global.render_distance=ini_read_real("Graphics","Render_Distance",320)
ini_close()

Solo arrastra el .ini en los "included files" que están en el arbol de recursos debajo de los rooms  ;).

@Texic: Estoy casi seguro de que gm no te permite manipular de ningún modo archivos fuera de la carpeta del proyecto, independientemente de si estos son .ini o .txt.

Mmm...es raro que no funcione, ¿que te larga al leer el valor del global? Es decir, si aunque sea te larga el valor por defecto que le pusiste (320) o que valor.

Aparentemente está todo bien, quizás es un problema de sintaxis, es decir que podes haber escrito algo mal en el código con respecto al *.ini.

Cita de: brunoxzx en Octubre 22, 2013, 07:59:01 PM@Texic: Estoy casi seguro de que gm no te permite manipular de ningún modo archivos fuera de la carpeta del proyecto, independientemente de si estos son .ini o .txt.
Te equivocás, al menos en GM8 para atrás, es solo con las funciones ini la restricción.
De hecho yo una vez hice unos scripts para leer inis en otros directorios usando funciones de archivos de texto. Y funcionaba, pero descarté la idea porque el código era un spaghetti bastante importante.
Vim.

#9 Octubre 23, 2013, 03:48:39 AM Ultima modificación: Octubre 23, 2013, 03:55:20 AM por brunoxzx
Cita de: Wadk en Octubre 23, 2013, 02:32:42 AM
Te equivocás, al menos en GM8 para atrás, es solo con las funciones ini la restricción.
De hecho yo una vez hice unos scripts para leer inis en otros directorios usando funciones de archivos de texto. Y funcionaba, pero descarté la idea porque el código era un spaghetti bastante importante.
Ah, en gmStudio la cosa cambió un poco con eso del soporte multiplataforma.

Para no liarse con la seguridad de acceso a diferentes directorios en múltiples sistemas operativos, decidieron hacer que solo se pueda acceder a archivos en la sandbox(así es como ellos lo llaman) que básicamente significa que únicamente tienes acceso de LECTURA a archivos dentro de el directorio de tu juego y escritura al almacenamiento local. Al intentar escribir en cualquiera de esos archivos que están en el directorio de tu juego, gm automáticamente crea una copia de dicho archivo en un directorio de almacenamiento local, distinto en cada dispositivo (en windows es %localappdata%), una vez hecho esto cada vez que intentes acceder al archivo se accederá a la versión del almacenamiento local. En windows y mac solo hay un modo de acceder a archivos fuera de la sandbox y es usando las funciones get_open_filename() y get_save_filename().

Encontré el fallo!
el .ini se guardaba en C:\Users\Miguéns\AppData\Local\rog1