[Tutorial] Como Cronometrar.
#1

Cronometrar
Creo que este es el tutorial mбs corto que voy a hacer en mi vida. Por ejemplo, si queremos cronometrar cuanto tiempo durу un auto en ir de un lugar a otro, o cuanto tiempo tardo una persona de hacer una prueba de reacciуn, necesitamos una funciуn muy ъtil, llamada GetTickCount().

GetTickCount() retorna el tiempo que lleva el servidor corriendo en milisegundos.

Ejemplo, si el servidor lleva una hora de iniciado y utilizamos esa funciуn, nos retornarб:
pawn Код:
/*
  1 segundo == 1000 milisegundos
  1 hora == 3600 segundos
  3600 * 1000 == 3600000 milisegundos
*/
Bueno, ya sabemos como funciona, pero, їcomo podemos usarlo?

La mejor forma y la ъnica que se me viene a la mente por ahora es como una referencia y a la misma vez punto para calcular la diferencia. En otras palabras, tomaremos cuantos milisegundos habнan cuando comenzamos nuestro cronуmetro y se los restamos al la cantidad de milisegundos cuando terminamos nuestro cronуmetro.

Ejemplo: Queremos saber cuanto tardarб "x" jugador en entrar en la selecciуn de skins.
pawn Код:
new Referencia[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
  Referencia[playerid] = GetTickCount(); // esta va a ser nuestro punto de partida
  return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
  printf("El jugador nъmero %d tardу %d milisegundos en...", playerid, GetTickCount() - Referencia);
  return 1;
}
їPor quй "GetTickCount() - Referencia"?

Porque al iniciar nuestro cronуmetro tomamos cuantos milisengundos habнan al conectarse el jugador, y luego al momento de que empieza a seleccionar skin le restamos los milisegundos actuales a los que tomamos al conectarse al jugador.

Si cuando se conectу habнan 1540 milisegundos y cuando empezу a seleccionar skin habнan 2090, entonces la operaciуn serнa asн:
pawn Код:
2090 - 1540 = 550
GetTickCount() - Referencia = 550
Si queremos pasar esos milisegundos a segundos, utilizamos la funciуn floatdiv(Float:a, Float:b).

pawn Код:
new Ref;

public OnPlayerDeath(playerid, killerid, reason)
{
  Ref = GetTickCount();
  return 1;
}

public OnPlayerSpawn(playerid)
{
  new string[70];

  format(string, sizeof(string), "El jugador Nє %d tardу %f segundos en aparecer desde que muriу!", playerid, floatdiv(GetTickCount - Ref, 1000)); // se divide entre mil
  SendClientMessage(playerid, COLOR, string);
  return 1;
}
їAlguna pregunta?
Hazla aquн y sin salirte del tema, por supuesto.

Reply


Messages In This Thread
[Tutorial] Como Cronometrar. - by Miguel - 20.05.2010, 04:45
Re: [Tutorial] Como cronometrar. - by xenowort - 20.05.2010, 17:09
Re: [Tutorial] Como Cronometrar. - by TheChaoz - 20.05.2010, 22:39
Re: [Tutorial] Como Cronometrar. - by Miguel - 21.05.2010, 01:43
Re: [Tutorial] Como Cronometrar. - by angel-laam - 21.05.2010, 02:12
Respuesta: [Tutorial] Como Cronometrar. - by [J]ulian - 24.10.2011, 02:17
Re: [Tutorial] Como Cronometrar. - by Miguel - 24.10.2011, 03:05
Respuesta: [Tutorial] Como Cronometrar. - by [J]ulian - 24.10.2011, 03:09
Respuesta: [Tutorial] Como Cronometrar. - by [J]ulian - 24.10.2011, 05:25
Re: [Tutorial] Como Cronometrar. - by DreamOnIt - 24.10.2011, 17:41

Forum Jump:


Users browsing this thread: 2 Guest(s)