Este comando asigna un valor a una variable de forma similar al comando PONE, pero ese valor siempre lo
obtiene de otra variable formada, total o parcialmente, por el contenido de otras variables que ya existan.
Nombre de la variable a la que queremos asignarle el valor.
Si la variable no existe, se creará con el valor asignado.
nombre_variable_leer:
Nombre de otra variable que ya existe cuyo valor queremos asignarlo a la variable indicada en 'nombre_variable_asig'. Soporta
símbolos %% para construir el nombre de la variable.
Si la variable construida no existe, el valor asignado será 0.
Para entender el funcionamiento del comando PONI lo mejor es ver como funciona el comando PONE y comprobar
que ciertas asignaciones no se pueden hacer con el comando PONE.
ACCI PONE objeto_5=espada
ACCI PONE llave=5
ACCI PONE activado=objeto_%llave%
En el anterior ejemplo lo que conseguimos es que la variable 'activado' ahora contenga el texto objeto_5. Si eso
es lo que queremos, no hay ningún problema en usar el comando PONE de esta forma.
Pero y si lo que queremos es asignar a la variable 'activado' el valor de una variable llamada 'objeto_5', la
que contiene el texto 'espada', podríamos intentar algo como esto:
ACCI PONE objeto_5=espada
ACCI PONE llave=5
ACCI PONE activado=%objeto_5%
Pues si, así sería, ahora la variable 'activado' contiene el valor espada, pero para ello debemos escribir
el nombre completo de la variable '%objeto_5%' sin poder formar ese nombre de variable basándonos en el contenido
de otras variables a modo de índice dinámico. En este caso el índice que intentamos usar es el contenido de la
variable 'llave', en este caso el número 5.
Pues entonces lo podemos probar de otra forma. Primero construyo el nombre de la variable y lo almaceno en
la variable 'mivari' y luego cargo la variable 'activado' con el contenido de 'mivari' usando '%mivari%':
ACCI PONE objeto_5=espada
ACCI PONE llave=5
ACCI PONE mivari=objeto_%llave%
ACCI PONE activado=%mivari%
No, así lo único que conseguimos es que la variable 'activado' ahora contenga el texto objeto_5, lo mismo
que al principio.
Por eso es necesario el comando PONI. Para realizar lo que estamos intentando hacer con el comando PONE, lo realizaríamos
con el comando PONI de esta forma:
ACCI PONE objeto_5=espada
ACCI PONE llave=5
ACCI PONI activado=objeto_%llave%
Ahora si, la variable 'activado' contendrá el valor espada usando el contenido de la variable
'llave' a modo de índice para acceder al contenido de la variable 'objeto_5'.
Para resumir: El comando PONI lo que hace es leer todo lo que hayas indicado detrás del símbolo '=' para crear
un nombre de variable con todo ello, leer el contenido de esa variable y asignarlo a la variable indicada delante del
símbolo '='.
Puedes usar múltiples símbolos %% si quieres indicar diversas variables para construir en nombre de la variable:
ACCI PONI contenedor=objeto_%nume%%signo%_seta
Esta forma de manejar las variables es un poco más compleja que la manera tradicional pero a cambio te
proporciona una potencia similar a los 'arrays' uni-dimensionales y multi-dimensionales de lenguajes como el C/C++ o el Java.
Funcionamiento del comando en el modo de juego online
Consulta el comando PONE. El funcionamiento es exactamente igual.