Pregunta MUY simple.
[gml]obj = instance_create(x,y,obj_item)
obj.price = 10;[/gml]
Qué se ejecuta antes, la asignación de obj.price = 10;, o la verificación que ponga en el create de obj_item, algo así como "if price != 10 bla bla bla?
Espero se entienda..
De lo que recuerdo haber leido, justo después de usar instance_create, lo primero que se invoca es el evento CREATE de la nueva instancia (el evento actual se interrumpe momentaneamente), entonces, supongo que se ejecutaría primero el código de CREATE y después el flujo regresaría a ejecutar la asignación obj.price = 10
Esto creo que es así. Es fácil comprobarlo con el depurador, pero no puedo hacerlo de momento, porque le ha dado por fallar.
De ser así tengo un problema xD y me toca editar millones de objetos y ponerles un controlador de un step con una alarm... SHIT! xDD
PD: no tengo ni idea de cómo se usa el depurador xD
con depurador te refieres al debugger?, porque el nuevo este de gms no entiendo nada, echo de menos el de gm8 T_T
Cita de: kostra en Noviembre 24, 2015, 07:36:56 PM
porque el nuevo este de gms no entiendo nada, echo de menos el de gm8 T_T
Una vez que comiences a moverle, vas a amarlo. El depurado de GM8 es como una bicicleta con rueditas traseras y el de GMS como una motocicleta.
claro, pero para ello he de aprender a usarlo, lo he intentado pero no entiendo nada, nosé por ejemplo buscar X variable qué valor tiene, o ver las globales, como hacía en la bicicleta con rueditas traseras xD
Algún tutorial por la red? no estaría mal aprender.
Doy por zanjado el tema, muchas gracias.
Tú decides qué páneles (información) se muestra, y en qué parte. Cada panel, en su parte superior, tiene una especie de barra de título, con un botón de cierre a la derecha. Haz click derecho en alguna de esas barras de título, y aparecerá:
(http://i.imgur.com/2Egx0fg.png)
Ahí tú eliges qué ver. "Globals" muestra, obviamente, las globales. "Locals" muestra todas las variables propias de alguna instancia, tanto las predefinidas de GM, como las que hayas creado. Se puede ver todo, los valores en los arreglos, en las listas, en los mapas, etc, las variables de los ciclos, for, etc. y sin tener que escribir, como en el depurador antiguo.
Si quieres ver valores en específico, de objetos/instancias en específico, se usaría el panel "watches" para monitorear una variable en específico, por ejemplo, se podría escribir: obj_control.tiempo
Muchíiiiisimas gracias, ya lo probaré :P
Lo que hago ahora para testeo de bugs es usar más show_messages como siempre recomienda guacusio, la verdad que esa tontería me ha salvado de muchos errores infernales xD
PD: acabo de testear directamente mi proyecto sin ponerle a los mil items un temporizador en su create y por lo visto, se ejecuta antes el obj.price = 10; ya que todo funciona perfectamente, así que no es como tú decías jeje, que suerte he tenido :')
Eh, emmm..... ya sé que el tema se cerró, pero micduda es casiclocmismo....xD
Quisiera ssber qué se ejecuta primero:
[gml]
with instance_create(x,y,obj)
a = 3;
[/gml]
Si el create de obj o el with...
Cita de: NiuWeb en Noviembre 25, 2015, 05:51:52 PM
Eh, emmm..... ya sé que el tema se cerró, pero micduda es casiclocmismo....xD
Quisiera ssber qué se ejecuta primero:
[gml]
with instance_create(x,y,obj)
a = 3;
[/gml]
Si el create de obj o el with...
Primero se crea la instancia de obj, luego se ejecuta su evento create y al final se ejecuta a=3 en ella.
prueba, a mi me han dicho lo mismo y ha sido lo contrario xD
Pienso igual que Guacusio. Si alguien lo puede probar mediante el debugger, estaría bueno. De momento, no puedo probarlo, porque estoy viendo el rastreador de bugs de YoYo, y parece que el en la última actualización, el depurador trae fallos. A mi no me deja meter breakpoints en ninguna parte, ni GMS normal ni la versión early access. En cuanto agrego un breakpoint, el juego falla.
Me parece recordar que Mike Daily alguna vez mencionó en la GMC que los dos únicos momentos en que un evento se interrumpe para dar paso a otro es cuando se ejecuta instance_create (para dar paso inmediato al evento CREATE) o cuando se encuentra la función instance_destroy(). Igual y me falla la memoria, pero eso recuerdo.
Hacer la prueba es muy sencillo; basta con usar un par de show_message:
objeto_A
create:
with instance_create(0,0,objeto_B)
show_message("with");
objeto B
create:
show_message("evento create");
Colocando en el room una instancia de A, aparece la siguiente secuencia de mensajes:
"evento create"
"with"
Como dice penumbra, lo mismo ocurre con el evento destroy, y también pasa en los eventos no mor lives y no more health. Todos ellos interrumpen el código y ejecutan su evento completo en el preciso momento en que se disparan.
pues no me explico que en mi código
obj = instance_create(room_width/2,room_height/2,osure);
obj.price = price;
en el create de osure:
obj= instance_create(x+23,y+12,obtnyes);
obj.price = price;
aqui representa que osure le asigna price a obtnyes de su propio price, pues si se ejecuta eso antes debería de salirme error, pues no existe la variable... sin embargo, me "translada" la variable sin problemas hast ael final, y mi item se compra perfectamente restándole su original precio :B
Cita de: kostra en Noviembre 26, 2015, 02:08:01 AM
pues no me explico que en mi código
obj = instance_create(room_width/2,room_height/2,osure);
obj.price = price;
en el create de osure:
obj= instance_create(x+23,y+12,obtnyes);
obj.price = price;
aqui representa que osure le asigna price a obtnyes de su propio price, pues si se ejecuta eso antes debería de salirme error, pues no existe la variable... sin embargo, me "translada" la variable sin problemas hast ael final, y mi item se compra perfectamente restándole su original precio :B
Yo tampoco me explico que no te salga un error. Copié y pegué el mismo código que indicaste y obtengo lo siguiente:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object osure:
Push :: Execution Error - Variable Get 100002.price(100008, -2147483648)
at gml_Object_osure_CreateEvent_1 (line 2) - obj.price = price;
############################################################################################
, que significa que la variable price de osure no está definida.
kostra tu game maker esta embrujado XD, ya enserio, eso es raro, seria que nos puedes enviar un par de capturas para ver eso? quizas tengas esa variable declarada en el osure antes del codigo que pasaste. sin embargo eso no explicaria que, segun tu, la variable si se esta pasando desde el primer obj al ultimo.
nada nada, por lo visto, sí tenia un control en el objeto osure, disculpen JAJAJAJA xD