Hola a todos, tengo una pequeña y probablemente tonta pregunta:
Tengo una pieza de código, quiero ejecutarla únicamente si una variable ha sido creada, me explico un poco:
[gml]
if variable_exists(variable) = true //Código Fake...xD
{
//Ejecutar código
}
[/gml]
a ver si me expliqué...xD
eso depende, si usas game maker 8.1 o menor se usaba algo como global_variable_exists, pero fue quitada en el studio, asi que la unica manera seria usando ds_maps
¿Y esas ds_map cómo se usan?
seria algo asi.
en el primer objeto que se crea o cualquiera que este antes de la ejecucion de la comprobacion creas la ds map en el evento create
[gml]
variable_mapa = ds_map_create();
[/gml]
luego pon esto en tu comprobacion
[gml]
if ds_map_exists(variable_mapa,"tu_variable_creada")
{
//tu codigo
}
[/gml]
y para crear la variable haces esto
[gml]
ds_map_add(variable_mapa,"tu_variable_creada","valor que tendra, puede ser tanto string, como entero")
[/gml]
de todas maneras aqui te dejo la documentacion de las ds_maps
http://docs.yoyogames.com/source/dadiospice/002_reference/data%20structures/ds%20maps/index.html
ps: le hice quote a tu primer comentario para saber como poner codigo gml en el foro, para el que tampoco lo sabia es: [gml][/gml]
En GMS tienes este ejemplo, mira a ver si te ayuda:
http://docs.yoyogames.com/source/dadiospice/002_reference/001_gml%20language%20overview/is_undefined.html
se me olvidaba, para cambiar el valor del la variable almacenada, por si lo necesitas, usa
[gml]
ds_map_replace(variable_mapa,"tu_variable_creada","nuevo valor")
[/gml]
¿mi variable debe estar entre comillas?
la variable debe estar entre comilla, pero el valor no necesariamente debe estar entre comillas, el valor puede ser entero o string.
hasta donde se tambien puedes usar como key un valor entero, pero no creo que sea recomendable por cuestiones de lectura.
Creo que tienes un poco de lio, jejeje.
Las variables, siempre tienen que crearse, en el CREATE, en el caso de que no las estes usando dandole un valor, por ejemplo 0.
Tu pregunta, creo que mas bien seria, si la variable coge valor, entonces ejecuta tal.
Pero para entender esto deberias de explicar un poco mas la idea.
Bueno espero haberte ayudado.
Cita de: NiuWeb en Noviembre 13, 2015, 06:16:00 PM
Hola a todos, tengo una pequeña y probablemente tonta pregunta:
Tengo una pieza de código, quiero ejecutarla únicamente si una variable ha sido creada, me explico un poco:
[gml]
if variable_exists(variable) = true //Código Fake...xD
{
//Ejecutar código
}
[/gml]
a ver si me expliqué...xD
Cita de: nonoroman en Noviembre 16, 2015, 02:38:16 PM
Creo que tienes un poco de lio, jejeje.
Las variables, siempre tienen que crearse, en el CREATE, en el caso de que no las estes usando dandole un valor, por ejemplo 0.
Tu pregunta, creo que mas bien seria, si la variable coge valor, entonces ejecuta tal.
Pero para entender esto deberias de explicar un poco mas la idea.
Bueno espero haberte ayudado.
Cita de: NiuWeb en Noviembre 13, 2015, 06:16:00 PM
Hola a todos, tengo una pequeña y probablemente tonta pregunta:
Tengo una pieza de código, quiero ejecutarla únicamente si una variable ha sido creada, me explico un poco:
[gml]
if variable_exists(variable) = true //Código Fake...xD
{
//Ejecutar código
}
[/gml]
a ver si me expliqué...xD
Yo creo que lo que busca es una forma de emular las antiguas funciones de GM
variable_local_exists y
variable_global_exists, como dijo jmbs19. Es perfectamente posible que uno necesite saber si una variable existe y en función de eso hacer algo.
Es más o menos como dice Guacusio, digo más o menos porque nunca he probado esas funciones.
A ver, explico para qué necesito esto:
Estor creando una extensión .GEX, y dentro de ella tengo algunos scripts. Uno de estos scripts va a inicializar una variable global, y quisiera comprobar, mediante otros scripts, si esta variable global ya se ha creado. Y necesito específicamente esto. No algo como, no sé, comprobar si el scrpit se ha ejecutato. Sólo comprobar si esa variable global se HA CREADO.
una preguntita así que me interesa... por qué han quitado esas funciones? entiendo que quiten algunas por el tema de que no son compatibles con los nuevos modulos, pero comprobar que una variable existe??? igual que la función de sleep, ya sé que es mala, pero es faltarte y quererla xD
Cita de: NiuWeb en Noviembre 16, 2015, 05:13:32 PM
Estor creando una extensión .GEX, y dentro de ella tengo algunos scripts. Uno de estos scripts va a inicializar una variable global, y quisiera comprobar, mediante otros scripts, si esta variable global ya se ha creado. Y necesito específicamente esto. No algo como, no sé, comprobar si el scrpit se ha ejecutato. Sólo comprobar si esa variable global se HA CREADO.
Entiendo que hay muchos escenarios donde las extintas funciones variable_local_exists y variable_global_exist resuelverían muchos problemas, pero de entrada, lo ideal cuando se diseña una extensión es hacer que esa extensión no sea dependiente ni de objetos ni variables propias del proyecto, sino diseñar la extensión de manera "genérica" para que pueda actuar "universalmente" sin que se imponga que deban existir ciertas variables. No estoy diciendo que no se pueda tener una extensión que trabaje sobre variables del proyecto, pero no es lo recomendado, y es algo que los diseñadores de extensiones tratan de evitar.
Cita de: kostra en Noviembre 16, 2015, 09:16:04 PM
una preguntita así que me interesa... por qué han quitado esas funciones? entiendo que quiten algunas por el tema de que no son compatibles con los nuevos modulos, pero comprobar que una variable existe??? igual que la función de sleep, ya sé que es mala, pero es faltarte y quererla xD
El ejecutable del juego en GMS es un código compilado, a diferencia de las versiones anteriores que trabajaban con un intérprete. Eso hace que el código fuente GML se pierda en la compilación e implica que las funciones que manipulan código GML en tiempo real (como el antiguo execute_string o las que manipulan variables en base a su nombre) dejen de ser compatibles.
Cita de: Guacusio en Noviembre 17, 2015, 12:51:05 AM
Cita de: kostra en Noviembre 16, 2015, 09:16:04 PM
una preguntita así que me interesa... por qué han quitado esas funciones? entiendo que quiten algunas por el tema de que no son compatibles con los nuevos modulos, pero comprobar que una variable existe??? igual que la función de sleep, ya sé que es mala, pero es faltarte y quererla xD
El ejecutable del juego en GMS es un código compilado, a diferencia de las versiones anteriores que trabajaban con un intérprete. Eso hace que el código fuente GML se pierda en la compilación e implica que las funciones que manipulan código GML en tiempo real (como el antiguo execute_string o las que manipulan variables en base a su nombre) dejen de ser compatibles.
Vaale ahora lo entiendo, gracias :B