Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: chute666 en Octubre 07, 2014, 09:11:31 AM

Título: Sistema de experiencia[SOLUCIONADO]
Publicado por: chute666 en Octubre 07, 2014, 09:11:31 AM
Hola de nuevo chicos, siento la ausencia, estoi en un curso de programacion de paginas web, porfin aprendiendo programacion, me e fijado que los codigos de game maker, son bastante parecidos al java script jejejeje porfin entiendo lo que hago xD
Bueno que me voi por las ramas....
quisiera saver cual seria el sistema mas completito de experiencia... expongo un ejemplo para que intenteis saver a lo que me refiero....
por ejemplo..
empezar en el nivel "1" matar a un par de bichos (consiguiendo por ejemplo 100 de experiencia) y subir al nivel 2, conseguir 150 y subir al 3.. conseguir 300 y subir al 4, lo que no quiero es que sea automatico, quiero establecer yo mismo la experiencia necesaria para que suba de nivel, pense en un --Array-- como por ejemplo:
nivel[mi_nivel]=100
nivel[mi_nivel]=150

etc etc...
pero de esta forma me da error en simbolo, y despues tampoco sabria como crear la barra de experiencia, se que podria crear una variable que contubiera el maximo de experiencia requerida y cuando la experiencia que consigo sea mayor o igual a la maxima que suba de nivel.... pero no se reflejarlo....
bueno me vuelvo a ir por las ramas, simplemente quisiera saver un sistema de experiencia para mi personaje de manera que yo pueda controlarlo todo y no dejar nada al azar, se que es mas complicado, pero me gusta tenerlo todo bajo control.. espero no averme liado mucho y que me puedan ayudar.. SALUDOS!!!
Título: Re:Sistema de experiencia
Publicado por: kostra en Octubre 07, 2014, 01:14:12 PM
yo me inventé un sistema, y bueno, aquí te lo expongo xd

en create del jugador, tendríamos las variables:
ex = 0; //experiencia, pongo ex, en vez de exp, porque exp ya existe en gml xd
maxex = 10; //experiencia a llegar para subir nivel
level = 1; //o cero, como prefieras xd
   sub = 2.5; //esto es para controlar la media de subida de maxex por subida de level, a más número, más dificultad de subir nivel. el 2.5 para mí es una buena media conforme a una división que haré en step


y en step:

if ex >= maxex
{
   suma = ex-maxex; //Para sumarle luego un poco la exp por si consigues más del máximo, se leañadirá luego un poquito al empezar un nuevo nivel
   level+=1; //subimos nivel
   maxex += maxex*(sub/5); //y aquí la subida de maxex para que el siguiente nivel cueste más de llegar, el 5 es el número que a mis propias pruebas, va mejor según mi criterio. Eso tú verás xd
   ex = suma; //el poquito que se le añade por si te pasas de exp al subir nivel y así no se desperdicia xd
}


Y bueno, en los enemigos, yo le pondría una variable por ejemplo "ex" también, y en el evento destroy o como tengas puesto cuando muere, poner un "obj_player.ex += ex;" para que se le sume, aunque eso ya lo sabrás xd, solo remarcaba que te recomiendo usar una variable, para cuando copies otros enemigos o quieras modificar, se te sea más fácil xd
Título: Re:Sistema de experiencia
Publicado por: chute666 en Octubre 07, 2014, 01:20:11 PM
ole tu! jejeje eso de añadirle ese pokito no se me abia ocurrido.... voi a estudiar todo lo que me as comentado para entenderlo totalmente, y de esta forma poder entenderlo como si yo mismo lo hubiera inventado xD
de todas formas vereis preguntas mias por aqui, y cualquier aporte que pueda hacer lo are ^^ ya comentare como salio el experimento.

(edito) porcierto como puedo hacer para que el usuario sepa cuanta exp le falta para subir?
en numero....
y a la barrita de experiencia.... supongo que
que la "ex" sera la variable que ira aumentando... i la maxex la variable a la cual debe yegar eso si lo se jajajaja
pero como lo reflejo en una "maldita barrita " sin que esta se deformeeeee jajajajajajajjajajajaa
Título: Re:Sistema de experiencia
Publicado por: Marth en Octubre 07, 2014, 04:47:56 PM
Yo tengo otro modo para hacer el tema de cuanta experiencia necesitas.

if(experiencia>=(pow(nivel+1,2))){
nivel++
experiencia-=pow(nivel,2)
}


para mostrar una barra de experiencia, puedes usar algo como esto:

draw_healthbar(view_xview[0]+650,room_height-10,view_xview[0]+775,room_height-5,experiencia*100/nivel,c_black,c_white,c_white,0,1,0)
Título: Re:Sistema de experiencia
Publicado por: chute666 en Octubre 07, 2014, 06:38:32 PM
No entendi mucho d tu sistema... Dice algo como.... Si la experiencia es menor que.. (Nose que es eso d pow etc) pues que suba d nivel etc.... Lo d la barra ya lo voi a probsr ahora aver k tal sale
Título: Re:Sistema de experiencia
Publicado por: kostra en Octubre 07, 2014, 06:39:57 PM
puedesponer una healthbar como dice marth y encima poner un draw text con las dos variables, la ex y la maxex separadas con una barra, pero te aconsejo que edites el código y los calculos los encierres con un "round()" para que no te pete de decimales todo :) aunque si lo haces solamente en la muestra del draw text, mejor, así no desvaría la media de subida de exp y todo es más preciso :P


PD: creo que lo hice bastante entendible, poniendo anotaciones en absolutamente todo xd
Título: Re:Sistema de experiencia
Publicado por: TheSandBoxMKG en Octubre 07, 2014, 06:51:11 PM
Con esto indicas cuanto se necesita para subir al siguente nivel
[gml]globalvar maxex; //estas variables se hacen global
maxex[0]=100
maxex[1]=150
maxex[2]=300[/gml]

Al inicio del juego (no de la room):
[gml]globalvar ex,nivel; //estas variables se hacen global
nivel=0//empezamos en el nivel 0
ex=0//con 0 experiencia[/gml]

En el step event
[gml]globalvar ex,maxex,nivel; //estas variables se hacen global
if ex>=maxex[nivel] then { //verificamos si la experiencia es mayor a la máxima de cada nivel
   ex-=maxex[nivel] //restamos la ex por la máxima actual
   nivel+=1// subimos un nivel
}[/gml]

cuando matas una serpiente
[gml]globalvar ex; //estas variables se hacen global
ex+=100 // subimos 100 de experiencia[/gml]
Título: Re:Sistema de experiencia
Publicado por: chute666 en Octubre 07, 2014, 06:55:44 PM
Si kostra lo esplicaste genial enserio.
The sandbox... Eres un makina tio jejeje gracias a los tres estudiare la forma con la que mejor me desembuelva y la yevare acabo... Gracias!



Edito... Perdonad mi ignorancia...
Creo un objeto .. Con game start y pongo lo ke dijiste sandbox?
Y en ese mismo objeto el step?
Xk si tal creo un evento create y le meto todas las variables del pj... Como oro... Vida etc etc
Título: Re:Sistema de experiencia
Publicado por: TheSandBoxMKG en Octubre 07, 2014, 07:43:09 PM
Cita de: chute666 en Octubre 07, 2014, 06:55:44 PM
Si kostra lo esplicaste genial enserio.
The sandbox... Eres un makina tio jejeje gracias a los tres estudiare la forma con la que mejor me desembuelva y la yevare acabo... Gracias!



Edito... Perdonad mi ignorancia...
Creo un objeto .. Con game start y pongo lo ke dijiste sandbox?
Y en ese mismo objeto el step?
Xk si tal creo un evento create y le meto todas las variables del pj... Como oro... Vida etc etc

puede ser el jugador también, el evento, si, es game start.
modifiqué un poco el código para que no se produjeran errores:

En el Game Start del jugador (si es que está en la primera room y sino, creá un objeto que pongas en el primer room)

[gml]globalvar ex,nivel,maxnivel; //estas variables se hacen global
nivel=0//empezamos en el nivel 0
ex=0//con 0 experiencia
maxnivel=5//Aqui ponemos como ejemplo el nivel máximo como 5[/gml]
Esto también en game start:
[gml]globalvar maxex; //estas variables se hacen global
maxex[0]=100
maxex[1]=150
maxex[2]=300
maxex[3]=500
maxex[4]=900
maxex[5]=1//en el ultimo nivel siempre ponemos 1[/gml]

En el step event del jugador:
[gml]globalvar ex,maxex,nivel,maxnivel; //estas variables se hacen global
if ex>=maxex[nivel] and nivel!=maxnivel then { //verificamos si la experiencia es mayor a la máxima de cada nivel y si el nivel no es el máximo
   ex-=maxex[nivel] //restamos la ex por la máxima actual
   nivel+=1// subimos un nivel
}
if nivel=maxnivel then ex=1//Si es el nivel máximo, ponemos 1 como experiencia[/gml]

Y cuando matas una serpiente queda igual
[gml]globalvar ex; //estas variables se hacen global
ex+=100 // subimos 100 de experiencia[/gml]
Título: Re:Sistema de experiencia
Publicado por: chute666 en Octubre 08, 2014, 09:24:35 AM
sip gracias ya lo tengo, me as ayudado mucho, y bien detalladito para patosos como yo edito el tema y pongo solucionado...
gracias de nuevo ^^