Duda con el gettime
#1

Buenas a todos, bueno, voy al grano.
Tengo una gran duda con el gettime que no encuentro la vuelta al tema.

Si yo coloco:

pawn Код:
forward HoraEnPunto();
public HoraEnPunto()
{
    new hora,minuto,segundo;
    gettime(hora,minuto,segundo);
    if(minuto == 0)
    {
        SendClientMessageToAll(-1,"Ha pasado una hora");
    }
}
Me estarнa detectando la hora exacta? . Si es asн, lo utilizo como una funciуn en OnGameModeInit o debo crear un timer que ejecute cada X segundo la funciуn?

Lo que estoy creando es que se guarden las horas en la variable pHorasJugadas, pero claramente tendrнan que guardarse si el jugador pasa 1 hora jugando en el servidor.
Reply
#2

OnGameModeInit se llama cuando se enciende el servidor amigo, entonces si colocas la funciуn en dicho callback sуlo ejecutarнa la funciуn HoraEnPunto(); cuando lo enciendas.
Reply
#3

Quote:
Originally Posted by aoEXE
Посмотреть сообщение
OnGameModeInit se llama cuando se enciende el servidor amigo, entonces si colocas la funciуn en dicho callback sуlo ejecutarнa la funciуn HoraEnPunto(); cuando lo enciendas.
Si, lo sй. Tendrнa que ejecutar un timer de 30 segundos y dentro de ese timer ejecutar la funciуn.
El tema es que ese mensaje se enviarнa si el minuto es 0, que es cuando pasa una hora, pero si un usuario conecta en el minuto 58, dos minutos despuйs pasу una hora, pero para el servidor en general, no para el usuario. No sй si me explico bien.
Reply
#4

pawn Код:
forward HoraEnPunto();
public HoraEnPunto()
{
    new hora,minuto,segundo;
    gettime(hora,minuto,segundo);
    if(minuto >= 60) //compueba si los minutos es mayor o igual a 60 (60 minutos igual a una hora)
    {
        SendClientMessageToAll(-1,"Ha pasado una hora");
        //aqui le colocas la variable que guardara las horas jugadas
        /*
        EJEMPLO:
            variable ++;
        */

    }
}
Reply
#5

Quote:
Originally Posted by OTACON
Посмотреть сообщение
pawn Код:
forward HoraEnPunto();
public HoraEnPunto()
{
    new hora,minuto,segundo;
    gettime(hora,minuto,segundo);
    if(minuto >= 60) //compueba si los minutos es mayor o igual a 60 (60 minutos igual a una hora)
    {
        SendClientMessageToAll(-1,"Ha pasado una hora");
        //aqui le oclocas la variable
        /*
        EJEMPLO:
            variable ++;
        */

    }
}
їPero quй pasarнa si un usuario conecta en el minuto 58? Al ejecutar la variable estarнa tomando como que jugу una hora y no es asн.
Reply
#6

pawn Код:
static MinutosGuardados[MAX_PLAYERS];

//en OnPlayerConnect
MinutosGuardados[playerid] = 0;

forward HoraEnPunto();
public HoraEnPunto()//el timer colocas en 1000 milisegundos igual a un segundo
//el timer debe ser con un bucle o  untimerEx con el parametro playerid y destruir y crear cuando se conecta el jugador.
{
    new hora,minuto,segundo;
    gettime(hora,minuto,segundo);

    if(segundo >= 60)
    {
        MinutosGuardados[playerid]++; //cada un minuto guardarda la variable
    }

    if(minuto >= 60) //veifica que haya pasado 60 minutos igual una hora.
    {

        if( MinutosGuardados[playerid] >= minuto) //verifica si la variable que contaba los minutos es igual o mayor a los minutos actuales (que anteriormente es 60)
        {
            SendClientMessageToAll(-1,"Ha pasado una hora");
MinutosGuardados[playerid] = 0;//resetea la variable que cuenta los minutos para volver a contar.
            //lo demas
        }
    }

}
Reply
#7

pawn Код:
new Timer[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
KillTimer(Timer[playerid]); // Destruir el timer
Timer[playerid] = SetTimerEx("HoraEnPunto",1000,true,"i",playerid); // y luego colocarlo en funcionamiento.
// їA eso te referнas?
return 1;
}
Reply
#8

exacto, no te olvides de resetear la variable que contara los minutos..
Reply
#9

Deberнa guardar entonces tambiйn los minutos jugados, porque la cuenta en SI cumplirнa la hora jugada, y las funciones que yo harнa serнa que si el jugador con su cuenta cumplio una hora, o cuatro horas.
Entonces indicarнa que minutosguardados es 0 al conectar, pero cargar los mismos del file.
Reply
#10

¬¬...

dentro de if( MinutosGuardados[playerid] >= minuto) le colocas otro if con las horasmaxima para obtener tal funcion.

y arriba del if( MinutosGuardados[playerid] >= minuto) le colocas la variable que suma las horas como sumaste los minutos (osea pHorasJugadas).

PD: los minutos los debes de contar cuando el jugador esta jugando cuando se desconecta y conecta de nuevo debes de contar de nuevo los minutos.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)