Febrero 11, 2011, 07:35:16 PM Ultima modificación: Febrero 13, 2011, 04:26:43 PM por kaliman777
Hola muchachos:

?C?mo har?a con c?dgo GML esta instrucci?n:

Si global.scor es igual a 100, dibujar los 100 y luego que decrezcan de 100 a 0 en 5 segundos.
Es decir que se vea una cuenta regresiva.

Espero su ayuda, gracias.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

#1 Febrero 11, 2011, 08:46:33 PM Ultima modificación: Febrero 11, 2011, 09:10:30 PM por slampdesign
Seria asi:

[gml]if global.score=100
{draw_text(x,y,score)}[/gml]

Citary luego que decrezcan de 100 a 0 en 5 segundos.
Es decir que se vea una cuenta regresiva.

Deberias explicarte mejor en esta parte...quieres q dibuje la variable score o que dibuje un texto con la cantidad de la variable aparte??

#2 Febrero 11, 2011, 10:49:43 PM Ultima modificación: Febrero 11, 2011, 10:53:08 PM por kaliman777
Cita de: slampdesign en Febrero 11, 2011, 08:46:33 PM
Seria asi:

[gml]if global.score=100
{draw_text(x,y,score)}[/gml]

Citary luego que decrezcan de 100 a 0 en 5 segundos.
Es decir que se vea una cuenta regresiva.

Deberias explicarte mejor en esta parte...quieres q dibuje la variable score o que dibuje un texto con la cantidad de la variable aparte??
Slampdesign: me refiero a que una vez que est?n dibujados los 100 cr?ditos, empiecen a decrecer de 1 en 1 hasta que se vuelva 0. Debe ser algo como STEP: if...global.score-=1 hasta que llegue a cero.
Repito: una vez dibujada la variable ?c?mo la hago decrecer de 1 en 1 hasta 0?
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

Creas la variable regreso=0; entonces, en step:

if regreso=0 and score>=100 {regreso=1;}
if regreso=1 {
score-=1;
if score<=0 {score=0; regreso=0;}
}

as?, al llegar a 100 se activa la cuenta atr?s y, al bajar a cero, vuelve a la normalidad. Claro, aqu? baja 1 punto por step, 100 puntos, lo que equivalen a... si no tocaste nada de la room speed, 30 puntos = 1 sec, tardaria en llegar a cero unos 3 segundos y algo... y debe ser en 5 segundos. Dios, con reglas de 3 se calcularia...
30 puntos = 1 sec
100 puntos = x
x= 100/30= 3.33333333... Osea, de 1 en 1, se bajan 100 puntos en 3.3 segundos. Entonces, para que sea en 5 segundos..
5 segundos son 150 steps. As? que, x?150=100; x=100/150= 0.66666666.... bajando 0.66666... puntos por step en el codigo de arriba, en 5 segundos, llega de 100 a 0. Me hice un l?o haciendo reglas de 3 cuando era algo tan simple xD

#4 Febrero 12, 2011, 05:01:02 PM Ultima modificación: Febrero 12, 2011, 09:33:45 PM por kaliman777
Gracias DarkKRuleR: Andas muy h?bil con las Matem?ticas, je je. Aprobaste con 100%. Me gusta el c?digo, es sencillo y esperaba algo justo as?. Apliqu? tu c?digo y funka a mil, pero tengo un problemita extra:

Cuando se dibuja el score, lo reduce a 0, excelente pero al querer que el score global suba despacio, me sube hasta infinito sin detenerse. Es decir, al igual que lo ganado decrece quiero hacer lo contrario con lo que debe subir el score global.?c?mo lo detengo? Pongo aqu? el info del objeto.

[gml]Information about object: controla_score

Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Create Event:
execute code:

global.dinero=0;
global.ganado=0;
global.apuesta=0;
regreso=0;
conteo=0;


Step Event:
execute code:

if regreso=0 and global.ganado>=1 {regreso=1;}
if regreso=1 {
global.ganado-=1;
if global.ganado<=0 {global.ganado=0; regreso=0;}
}

if global.ganado>=1 && conteo=0 {conteo=1}
{
 do
 {
  global.dinero+=1
 }
 until max(global.dinero,global.dinero+global.ganado)
}





Draw Event:
execute code:

draw_set_font(font_0)
draw_set_halign(fa_right)
draw_text(20,10,global.apuesta)
draw_text(120,10,global.ganado)
draw_text(200,10,global.dinero)

[/gml]
Pendientes y gracias de nuevo.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

#5 Febrero 12, 2011, 11:52:34 PM Ultima modificación: Febrero 12, 2011, 11:54:16 PM por DarkKRuleR
Bueno... lo normal es que el score suba al realizar determinadas acciones. As? que, al ocurrir tal acci?n, simplemente sumas score, score+=valor. Ya que, si fuera al contrario, osea, que subiera constantemente, no le veo sentido... solo se sube el score cuando ocurre algo.

Pero bueno, si quisieras eso, que al llegar a cero suba a 100 en 5 segundos, usa el codigo anterior con otra variable, en lugar de regreso, adelanto o algo as?, y duplicas el codigo con esa. AUnque lo veo raro

Bueno DarkKRuler: he hecho algo ya, aunque tiene un desv?o de un punto, es decir le digo global.ganado=20 y me reporta 19.

Pero logr? lo que hace tiempos no pod?a: que lo ganado baje a 0 y el global suba de 1 en 1. Eso sirve para agregar un efecto divino a juegos de cualquier tipo. En vez de la aburrida suma de puntuaci?n de una sentada, ahora podremos ver como los contadores se mueven sumando y restando puntos.

Estoy tan emocionado que pongo aqu? una copia para los que quieran poner el efecto a sus contadores de score.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

Funciona bastante bien, pero tiene un problema. Si ganas puntos antes de que acabe la suma de puntos (clickear muy rapido en este caso), ganas menos puntos, dependiendo del juego puede funcionar sin problemas, pero si ganas puntos muy seguido hay que hacer algo mas complejo para que funciones bien >.<