Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zHeMaa en Diciembre 02, 2014, 10:31:18 PM

Título: Enemigo suelta objeto al morir
Publicado por: zHeMaa en Diciembre 02, 2014, 10:31:18 PM
Buenas! Quisiera saber como hacer para que cuando mate un enemigo suelte "x" objeto a ser posible con porcentajes.

Por ejemplo mato a un enemigo y entre lo que puede soltar esta.. poción hp, poción mp y oro.

Poción hp -> 20%
Poción mp -> 10%
Oro -> 80%

Entonces seria que mas o menos (ya sabéis que los % tampoco son 100% reales) la poción de hp caería al matar 5 enemigos aproximadamente, la de mp le costaría un poco mas caer y el oro prácticamente saldría al matar todos los enemigos. Esto es simplemente un ejemplo de lo que me gustaría conseguir, si es posible claro. Podéis usar esos nombres por ejemplo para hacerme el código luego yo ya lo retocare!

Os dejo mi código, el problema de mi código es que cae un objeto 100%, vamos que matas al enemigo y Siempre te cae un objeto, cosa que lo que yo quiero es que caiga un objeto al azar (pero que uno tenga mas prioridad que otro) o que no suelte nada.

choose(instance_create(x,y,choose(obj_pocionhp,obj_pocionmp,obj_pocionvelocidad,obj_pocionprueba)),instance_destroy())

Muchas gracias de antemano, un saludo!  :)
Título: Re:Enemigo suelta objeto al morir
Publicado por: vitito93 en Diciembre 02, 2014, 10:41:11 PM
a = irandom(10)
if a=7{creo pocion}
if a>=8{creo espada}
if a<=4{creo el item con mas posibilidades}
algo asi tendrias que hacer.
Título: Re:Enemigo suelta objeto al morir
Publicado por: penumbra en Diciembre 02, 2014, 10:48:11 PM
Cita de: zHeMaa en Diciembre 02, 2014, 10:31:18 PM
choose(instance_create(x,y,choose(obj_pocionhp,obj_pocionmp,obj_pocionvelocidad,obj_pocionprueba)),instance_destroy())

Eso debería ser
[gml]
randomize()
instance_create(x, y, choose(obj_pocionmp,obj_pocionhp,obj_pocionhp, obj_oro, obj_oro, obj_oro, obj_oro) )
instance_destroy()
[/gml]
Título: Re:Enemigo suelta objeto al morir
Publicado por: zHeMaa en Diciembre 02, 2014, 10:59:00 PM
Muchísimas gracias, me funcionan las 2 correctamente! El problema del código de vitito93 es que me funciona, pero no lo acabo de entender 100%..

Y para que no caiga ningun objeto, porque por ejemplo lo del Oro en mi juego no lo tengo añadido, lo he quitado y solo he dejado:
instance_create(x, y, choose(obj_pocionmp,obj_pocionhp,obj_pocionhp))

Para hacer que no caiga nada que debo hacer?

Graciaas!  :)
Título: Re:Enemigo suelta objeto al morir
Publicado por: Clamud en Diciembre 02, 2014, 11:08:32 PM
Esto:
[gml]
objeto = choose( obj_pocionmp, obj_pocionhp, noone );
if( objeto != noone ) instance_create( x,y, objeto );
[/gml]
En la sección de scripts hay otros ejemplos de selección con probabilidad.
Título: Re:Enemigo suelta objeto al morir
Publicado por: zHeMaa en Diciembre 02, 2014, 11:37:28 PM
Al final he creado un objeto llamado obj_nada que básicamente esta vació, y lo he añadido entre los demás quedando algo así:

instance_create(x, y, choose(obj_pocionhp,obj_pocionhp,obj_pocionmp,obj_pocionmp,obj_nada,obj_nada,obj_nada,obj_nada,obj_nada))

Muchísimas gracias a todos por responder!
Un saludo!
Título: Re:Enemigo suelta objeto al morir
Publicado por: vitito93 en Diciembre 04, 2014, 04:03:41 PM
Jaja es una manera complicada de hacerlo, pero sirve.