Julio 04, 2010, 05:03:52 PM Ultima modificación: Julio 06, 2010, 04:26:45 AM por J-Dek
Ante todo agradecer a los usuarios del foro ya que me inic? en el juego que estoy haciendo siendo un novato y gracias a todos estoy aprendiendo mucho.

Lo que quiero hacer ahora es que dependiendo del nivel que tenga mi personaje o el personaje rival, haga yo, haga el, m?s o menos da?o.

Teniendo la vida configurada as?:

ps=45
maxps=45
expe=0
maxexpe=110
nivel=5


?c?mo podr?a hacerlo?

PD: LE HE DADO A NOTIFICAR SIN QUERER.


#2 Julio 04, 2010, 07:17:41 PM Ultima modificación: Julio 05, 2010, 05:00:16 AM por J-Dek
me ha servido, gracias!

---edit---

sigue sin servir

Ahora mismo, en vez de poner ''expe'' puse nivel, ya que el rival no tiene ''expe'' y mi ''expe'' est? a 0, por lo tanto puse ''nivel''.

sirve para quitarle yo vida al rival, dependiendo del nivel que el tenga, le quito m?s o menos pero realmente si te paras a pensar, no funcionar?a bien
*ahora mismo est? puesto para que le quite 6 de vida si el nivel es 3, fijaos en ese code, pero si ataco con mi protagonista de nivel 5 a otro mayor, de nivel 10, le quitar? el doble tambi?n, sea 20, podr?a vencerlos f?cilmente
*realmente eso no funciona muy bien
*me he parado a pensarlo, y si fuese al rev?s, si el me tuviera que quitar vida, pasar?a lo mismo, dar?a igual a que nivel estemos los dos, cuanto m?s nivel, m?s f?cil ser?a vencernos mutuamente

(en el objeto rayo, que colisiona contra el enemigo, est? esto: taillow3_vida.ps-=2*taillow3_vida.nivel)

tambi?n lo podes hacer con un porcentaje al azar con una random y el porcentaje dependa del nivel que tenga el personaje y este porcentaje sume al nivel de da?o normal
La cosa es que,.... no tengo la menor idea.

http://matuxgames.blogspot.com/

O pod?s usar la diferencia de nivel que haya entre ambos:

global.player2vida -= floor(((global.player1nivel/2)+5)-(global.player2nivel/4))

Pero igual, es un sistema algo malo, deber?as usar ataque y defensa, como m?nimo

PD: Notificar es para que te lleguen e-mails cada vez que responden el tema en el que lo activaste




#5 Julio 05, 2010, 11:43:14 AM Ultima modificación: Julio 05, 2010, 02:23:14 PM por J-Dek
player1vida (objeto):

ps=45
maxps=45
expe=0
maxexpe=110
nivel=5


enemigo1vida (objeto):

ps=30
maxps=30
nivel=3


Cita de: Texic en Julio 05, 2010, 07:22:24 AM
O pod?s usar la diferencia de nivel que haya entre ambos:

global.player2vida -= floor(((global.player1nivel/2)+5)-(global.player2nivel/4))

Pero igual, es un sistema algo malo, deber?as usar ataque y defensa, como m?nimo

PD: Notificar es para que te lleguen e-mails cada vez que responden el tema en el que lo activaste

Pero si uso la diferencia de nivel puede pasar esto:
Si soy nivel 5 y el rival nivel 2, le quito 3 de vida. Luego, si es al rev?s, si soy nivel 2 y el rival nivel 5, le quito 3 de vida tambi?n!! :S

Mi idea ser?a que, si soy nivel 5 y el rival nivel 3. Que detecte la diferencia de nivel, y se sume, por lo tanto, (yo)nivel 5 + (el)nivel 3 = 8. Al rival le quito 8 de vida.

Si mi nivel es m?s bajo, que detecte la diferencia y se reste: (yo)nivel 3 - (el)nivel 5 = 2.

Y todo esto se aplica tambi?n cuando me ataca el rival. Pero no tengo ni idea de como hacerlo ahora mismo. Lo que yo quiero hacer es a lo que tu te refieres Texic? Pero como ves yo no uso globales para la vida :S

Si apartir de lo que tengo sabeis una manera efectiva de hacerlo, soy todo oidos.

#6 Julio 05, 2010, 06:19:19 PM Ultima modificación: Julio 05, 2010, 08:20:50 PM por Texic
Pues la f?rmula hace lo que dijiste, no trabaja estrictamente con la diferencia, sino que la utiliza en forma de ataque y defensa, es una f?rmula que saqu? del rpg maker 2003, quiz?s necesita peque?os ajustes en esas divisiones de nivel, pero fijate hasta que te quede c?modo. Y que no uses globales no importa, cambia las globales de la f?rmula por las variables que uses. Yo anduve jugando un poco y llegue a esta f?rmula, creo que est? bastante precisa
global.player2vida-=max(floor(((global.player1nivel))-(global.player2nivel/2)),1)

PD: Esta es la f?rmula real, ni se acerca a la que te d?, ni a una que puedas hacer manualmente: F?rmula
Esta es algo m?s simple, pero para ambas te faltan variables: F?rmula 2




#7 Julio 06, 2010, 03:11:26 AM Ultima modificación: Julio 06, 2010, 03:16:16 AM por J-Dek
Bien, segun ahi dices ese code indica que mi ataque le quite vida en relacion al nivel como he dicho.

Ahora lo tengo as?:

taillow3_vida.ps-=max(floor(((pokemon1vida.nivel))-(taillow3_vida.nivel/2)),1)

Taillow es el enemigo, suponiendo que ahora es el el que me ataca a mi, solamente tendr?a que cambiar los objetos de lugar en ese c?digo. Unas pregunta m?s, al final del c?digo, ?que indican el 2 y el 1? ?Funcionar?a bien si la diferencia de nivel fuera m?s grande?

---EDIT---

Acabo de probarlo variando los niveles, evidentemente si el rival est? al nivel 3 le quito mas vida que si est? al nivel 50, pero tanto si est? al nivel 50, al 70 o al 100, tampoco hay mucha diferencia, le quito m?s o menos lo mismo de vida.

El /2 significa dividido 2. El 1 es parte de la funcion max(), es para asegurarse de que nunca saque menos de 1, sino le sumar?a vida al oponente. Si la diferencia fuera m?s grande funciona si, fijate, en este ejemplo ta implementado para probar. Si no te gusta la proporci?n, prob? multiplicando y dividiendo los niveles, asi como yo dividi el nivel del enemigo en 2. O rest? y/o sum? valores, es ajustable




#9 Julio 06, 2010, 03:26:57 AM Ultima modificación: Julio 06, 2010, 03:28:52 AM por Texic
Bueno, si esa es poco fiable, tengo esta otra, es la que us? para el plore (Con m?s stats, pero la adapt? al tuyo)
global.danio=((((((2*global.player1nivel/5)+2)*global.player1nivel*30)/global.player2nivel)/50)+2)




Pero creo que me sirve el otro, ya que en esa ?ltima formula ya vienen los niveles por defecto por lo qu veo, entonces, no s? si me servir?a porque si pongo es code, y el pok?mon cambia de nivel, no funcionar?a, o si? :S que lio...

pD: con la wiki de game maker estoy aprendiendo mucho tambi?n! xD

Si las dem?s f?rmulas no te sirven, puedes usar esta:
PS_ENEMIGO-=ceil(SUS_MAX_PS/100*POTENCIA_DEL_ATAQUE*TU_NIVEL/NIVEL_ENEMIGO)
y para cuando te ataque
TUS_PS-=ceil(TUS_MAX_PS/100*POTENCIA_DEL_ATAQUE*NIVEL_ENEMIGO/TU_NIVEL)

por ejemplo:
tu: nivel 5 ps 45 potencia del ataque 25
enemigo: nivel 3 ps 30
al tu atacar le quitar?as (ceil es un redondeo hacia arriba)
ceil(30/100*25*5/3)
=ceil(0.3*25*5/3)=ceil(7.5*5/3)=ceil(37.5/3)=ceil(12.5)=13
entonces quedaria con 17 ps (30-13)

aqui esta un ejemplo aber si funciona lo hice muy rapido 8)