Tengo algunas dudas sobre este tema:
He conseguido guardar un archivo .ini con algunas variables siguiendo algun post de por aqui.
Tambien he conseguido cargarlo pero no se trasladan los valores de esas variables al juego en si.
Mi codigo para guardar el .ini es este:
ini_open("options.ini")
ini_write_real("Armas",obj_player.cuchillo,num_cuchillo) //la variable cuchillo no es global
ini_close()
Para cargalo uso:
ini_open("options.ini")
ini_read_real("Armas",obj_player.cuchillo,1)
ini_close()
¿Que debo hacer para, por si por ejemplo, la variable cuchillo esta en 3 cuango la guardo, cuando la cargue sea 3?. ¿Debo hacer algo mas despues de cargar el .ini?
Gracias.
edito:
lo encontre...me faltaba poner la variable antes de cargarla:
cuchillo=ini_read_real("Armas","obj_player.cuchillo",0)
Tenes que ver cuales son los argumentos de
ini_read_real() y
ini_write_real(), está en el manual (http://www.comunidadgm.org/manual_GM/Archivos_INI.htm) y te pongo lo que dice:
Citar
ini_read_real(section,key,default) Lee el valor real de la llave indicada con key de la sección indicada como section. Cuando no existe la llave o la sección se devuelve el valor especificado por default.
ini_write_real(section,key,value) Escribe el valor real value en la llave indicada con key en la sección indicada con section.
Entonces vos deberías escribir
ini_read_real(seccion,nombre de variable,0)En la seccion va el nombre del grupo de variables por asi decirlo, en el INI eso está entre corchetes, así:
[Seccion]. en el segundo pones el nombre de la variable a leer, en este caso creo que seria
obj_player.cuchillo. Cuidado que la seccion y la llave (nombre de variable) van como String, o sea como texto. Entonces van entre comillas ("")
Y despues el 0 es el valor que devuelve si no encontró la seccion o la llave, podes poner el que quieras
Despues en ini_write_real es un poco distinto. Sería así:
ini_write_real(seccion,nombre de variable,valor a guardar)Al igual que la anterior los dos primeros son Strings, y el tercero es un valor, un numero. Entonces ahi podrías poner una variable.
Si en tu ejemplo
num_cuchillo es la variable a guardar y
obj_player.cuchillo es la llave yo pienso que quisiste hacer esto:
CitarMi codigo para guardar el .ini es este:
ini_open("options.ini")
ini_write_real("Armas","obj_player.cuchillo",num_cuchillo) //la variable cuchillo no es global
ini_close()
Para cargalo uso:
ini_open("options.ini")
ini_read_real("Armas","obj_player.cuchillo",1)
ini_close()
Si en cambio la variable
obj_player.cuchillo guarda un string tu código debería funcionar
CitarMi codigo para guardar el .ini es este:
ini_open("options.ini")
ini_write_real("Armas",obj_player.cuchillo,num_cuchillo) //la variable cuchillo no es global
ini_close()
Para cargalo uso:
ini_open("options.ini")
ini_read_real("Armas",obj_player.cuchillo,1)
ini_close()
Lo que no entiendo es tu solucion al problema, porque estas leyendo la llave
obj_player.cuchillo que no existe, porque en
ini_write_real no usaste comillas
Bueno, tienes razon, ha sido un error al escribirlo por mi parte. :-[
Como dices, tanto el apartado seccion como el key van entre comillas.
De cualquier manera, mi principal error era no poner la variable antes del ini_read..... Para que dicha variable tomara el valor que esta cargando del ini.
Estoy aun peleandome con todo esto...pero al menos por aqui, parece que he encontrado una via de escapatoria al callejon sin salida en el que me habia metido. :)
La verdad es que voy aprendiendo sobre la marcha y muchas veces descubro funciones o maneras de hacer las cosas que me obligan a rehacer parte del codigo que ya tengo para que quede mas "pulido". No tengo mucha idea de programacion pero voy arrastrando experiencia del antiguo basic y unos pinitos con el añorado Div Games Studio.
Cita de: Domenec en Mayo 02, 2013, 09:32:52 PM
De cualquier manera, mi principal error era no poner la variable antes del ini_read..... Para que dicha variable tomara el valor que esta cargando del ini.
Ahh de eso no me habia dado cuenta jaja. Me alegro que funcione