Hola a todos, hace mucho que no entraba al foro xD
bueno, estoy haciendo un script, y quiciera saber si de alguna forma es posible escribir desde dentro de un script
me explico:
///objeto:
blabla-=keyboard_check_pressed(vk_down)
blabla+=keyboard_check_pressed(vk_up)
///script:
if blabla>5
{blabla=0}
if blabla<0
{blabla=5}
en la parte del "script" la variable "blabla", no se regresa a 0, o se va a 5...
Este no es un script de suma importancia ni muchomenos, pero pues queria ver si es posible hacer esto xD
Gracias de antemano!
Entiendo que la función keyboard_check_pressed devuelve true (en game maker un 1) si la tecla que pasas como argumento es presionada por lo tanto tu script aparentemente lo veo bien.
Supongo (he visto todavía muy poco de Game Maker) que lo mismo tu variable blabla debería ser global para poder modificarla. Creo!
Pruébalo a ver si así te funciona.
Saludos
Pues no sé qué pase, yo acabo de probar el mismo código que pegaste y me funciona bien, si es más de 5, se regresa a 0, si es menor a 0, cambia a 5.
Respondiendo a la pregunta del script, desde luego que es posible cambiar una variable dentro del script.
a)Suponiendo que el script sólo trabaja con una variable nada más, si la variable blabla es global, no importa en qué objeto se llame al script (pero se debe llamar en el evento adecuado).
b) El script también puede modificar la variable aunque la variable no sea global, pero en este caso, el script debe llamarse en el objeto donde la variable sea local a la instancia. Por ejemplo, si en el obj_player usas el script anterior, el objeto player debe tener una variable blabla declarada en CREATE, y en todo el juego no debe haber una variable global con el mismo nombre (blabla) o podría haber errores.
c) Al script se le puede pasar cualquier variable como argumento, y dentro el script hace las comparaciones correspondientes, sólo que en lugar de usar blabla se usa argument0 (suponiendo que es la única variable que se necesita procesar)
Muchas gracias Penumbra por las aclaraciones.
Un saludo
Perdonen, no me explique bien, o mas bien me explique mal xD
a lo que me referia aera a esto:
///script:
if argument0>argument1
{argument0=0}
if argument0<0
{argument0=argument1}
///objeto:
variable-=keyboard_check_pressed(vk_down)
variable+=keyboard_check_pressed(vk_up)
script(blabla,5)
no eh intentado con globales, pero mas que nada el punto de este script era poder poner cualquier nombre de variable (ya sea local o global) ya inicializada en el objeto dentro del argumento 0... intente con return tambien, pero no funciono, fue algo asi:
///script:
if argument0>argument1
{return 0}
if argument0<0
{return argument1}
///objeto:
variable-=keyboard_check_pressed(vk_down)
variable+=keyboard_check_pressed(vk_up)
blabla=script(blabla,5)
Mas que nada era para ahorrar espacio en un objeto con varios menus xD
¿Por qué dices que a ti no te funciona? O de plano no entiendo qué quieres lograr, según mi idea, quieres pasar una variable de instancia como argumento y de un script llamado en esa propia instancia, y que el script devuelva la misma variable del argument0 como o salida, pero procesada.
¿por qué cambiaste?
¿blabla+=keyboard_check_pressed(vk_up) por variable+=keyboard_check_pressed(vk_down)?
En mis pruebas uso la variable inicializada en el objeto que llama al script como argumento del propio scrript, y al final el resultado se guarda en la propia variable, y si cambia bien cuando la dibujo en draw.... no sé si tengas código adicional que altere esa variable en STEP
Lo de variable, es que queria corregir lo de "blabla" por que se ve muy tonto, pero a la mera hora me arrepenti xD
Y asi como lo puse (excepto que reemplazando "variable" por "blabla") no funciona, dejare un ejemplo simple, pero quiero hacer dos aclaraciones, mi game maker es el 8, asi que cabe la posibilidad de que en el 8.1 si funcione
y como lo dije, lo que quiero es ver si me puedo ahorrar codigo...
Modificado: de nuevo me equivoque en el ejemplo xD todo por andar copie y pegue xD pero sigue siendo lo mismo a lo que me referia xD