Septiembre 01, 2011, 08:08:33 PM Ultima modificación: Septiembre 02, 2011, 05:17:37 AM por p34
Hola.
Estoy haciendo un juego de disparos y quiero que cuando recojo un arma y ya tengo 2 armas (una primaria y otra secundaria) entonces agarre el arma nueva y cree un arma con las variables de la que tenia en la mano.
Lo que trate hacer es que cree otro objeto con las variables del que tenia en la mano
[gml]if arma1 != "no" and arma2 != "NO"
{
var i;
i = instance_create(x,y,obj_arma_glob);
with(i){balas_ = balas; cargadores_ = cargadores} // etc.
}
[/gml]
pero el problema es que aveces si las crea y otras veces solamente desaparece el arma nueva
Estoy usando mal "var"? o como le puedo hacer ???
Una persona puede equivocarse mil veces pero solo fracasa cuando le echa la culpa a otro por sus errores

Cita de: p34 en Septiembre 01, 2011, 08:08:33 PM
Hola.
Estoy haciendo un juego de disparos y quiero que cuando recojo un arma y ya tengo 2 armas (una primaria y otra secundaria) entonces agarre el arma nueva y cree un arma con las variables de la que tenia en la mano.
Lo que trate hacer es que cree otro objeto con las variables del que tenia en la mano
[gml]if arma1 != "no" and arma2 != "NO"
{
var i;
i = instance_create(x,y,obj_arma_glob);
with(i){balas_ = balas; cargadores_ = cargadores} // etc.
}
[/gml]
pero el problema es que aveces si las crea y otras veces solamente desaparece el arma nueva
Estoy usando mal "var"? o como le puedo hacer ???

Var crea una variable temporal que solo se puede usar en ese pedazo de codigo... en cuanto a lo que quieres no se porque dices que a veces y a veces no, pero igual proba cambiando esto

[gml]with(i){balas_ = balas; cargadores_ = cargadores} // etc.[/gml]

por esto:

[gml]i.balas_ = balas; i.cargadores_ = cargadores; // etc.[/gml]

Ya que si  pones el primero entonces las variables (balas_ y balas) pertenecen a la nueva arma y no a la que tenias


No conozco el uso que le das, pero proba y me avisas.


--
Saludos.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


#2 Septiembre 02, 2011, 05:09:49 AM Ultima modificación: Septiembre 02, 2011, 05:12:34 AM por p34
Gracias,
El uso que le doy es que yo tengo un arma y quiero agarrar otra del suelo pero no quiero que la primera solamente desparezca, entonces creo un objeto contenido en una variable temporal y en ese objeto le pongo todas las variables que tenia en el arma para que si la quiero agarrar otra vez, se quede con los mismas balas en el cartucho y en los cargadores.

Ya pude hacerlo, el problema de que aveces aparecia y aveces no es porque en el objeto nuevo tenia variabes declaradas como balas_ y cartuchos_ y los tenia iguales a cero (balas_ = 0;) entonces tengo un codigo para que cuando las balas y los cargadores sean 0 el arma se destruya y parece que estas variables se sobreponian a los nuevos valores que les estaba dando pero no siempre, entonces solo aveces desaparecia el arma.
No he tratado poner "i.balas_ // etc." Pero segun yo es lo mismo que como yo lo tengo "with(i) // etc."
Lo que hice fue poner en el arma
[gml] var balas_, cartuchos_, // etc. [/gml] y asi las variables no tienen valores que se le sobrepongan a los asignados a los nuevos valores
Una persona puede equivocarse mil veces pero solo fracasa cuando le echa la culpa a otro por sus errores