Mayo 02, 2013, 04:54:45 PM Ultima modificación: Mayo 02, 2013, 06:19:36 PM por Domenec
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 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
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


#2 Mayo 02, 2013, 09:32:52 PM Ultima modificación: Mayo 02, 2013, 09:37:15 PM por Domenec
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
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy