Cron?metro y cuenta atr?s

  • Autor: Selkie
  • Descripci?n: Con algunos scripts, permite mostrar una cantidad de frames en minutos y segundos, pausarla y reiniciarla; as? como una cuenta atr?s usando una alarma.
  • Creado en GM8  :GM8:

El script principal es el time_calc(frames,fps), que transforma una cantidad de frames, en tiempo del formato minutos:segundos:cent?simas.
[gml]//argument0 = variable de frames
//argument1 = frames por segundo( > fps = < velocidad)
//
//Hacer coincidir las fps del script con las de la room para tiempo real
//
//m = minutos ; s = segundos ; d = d?cimas de segundo

m = argument0/(60*argument1)
m = floor(m)
s = (argument0 - m * 60*argument1)/argument1
if s < 0.01 {d = "0.00"}
if s!= 0{d = frac(s)}
s = floor(s)

if s < 10{s = "0"+string(s)}

time = string(m)+":"+string(s)+":"+string_char_at(string(d),3)+string_char_at(string(d),4)[/gml]

En argument0 pondremos la variable que contenga las frames, y en argument1 las fps de la room (doblando este argumento, hacemos que la cuenta sea el doble de lenta, mientras que si ponemos la mitad, ser? el doble de r?pida).
Por ejemplo, 2440 frames a 40fps ser?n 1:01:00 (Un minuto y un segundo).

Si usamos la funci?n de cron?metro, puede que nos interese pausarlo y reiniciarlo, para eso usamos dos peque?os scripts, cron_start() y cron_reset(frames,run)
cron_start:
[gml]//Pausa y reanuda el cron?metro
switch global.cron{
case 0: global.cron = 1; break;
case 1: global.cron = 0; break;}[/gml]

cron_reset:
[gml]//argument0 = frames con las que aparecer?
//argument1 >> 0 = en pausa; 1 = en movimiento
frames = argument0
global.cron = argument1[/gml]

Esto son todos los scripts, el resto del c?digo est? en el cuerpo del objeto, completo en la demo adjunta.

?Saludos!



Gracias por tu script Selkie. Con esta script se podr? hacer minijuegos con cuenta atr?s

Tienes que tener cuidado al dividir por los FPS, a veces valen 0 y dan un error, la verdad es que esto no es siempre my eficiente, es mejor usar una extension la de high resolution timer esta muy bien y es precisa, este no. is quieres usar un coronometro con funciones ya implementada puedes usar time_current, encontraras mas info en la ayuda. Y cambia el codigo que pausa o reanuda el cronometro por:
[gml]global.cron=!global.cron;[/gml]