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
alaberga regué el café.

BA:STFW&RTFM

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
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

¿Y esas ds_map cómo se usan?
alaberga regué el café.

BA:STFW&RTFM

#3 Noviembre 13, 2015, 07:10:29 PM Ultima modificación: Noviembre 13, 2015, 07:14:49 PM por jmbs19
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]
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien


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]
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

¿mi variable debe estar entre comillas?
alaberga regué el café.

BA:STFW&RTFM

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.
no puedo creer que me hice un tumblr.
YGE Productions yep, otro tumblr.
y como no, el manual tambien

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
PCNONOGames  www.pcnono.es

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.
alaberga regué el café.

BA:STFW&RTFM

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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

#12 Noviembre 16, 2015, 10:57:21 PM Ultima modificación: Noviembre 16, 2015, 10:59:02 PM por penumbra
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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]