[Ayuda]No se activa el Timer
#1

Tengo este codigo para las llamadas (aun esta en periodo de creacion)
pawn Код:
YCMD:llamar(playerid, params[], help)
{
    if(!sscanf(params, "i", params[0]))
    {
        SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
        for(new i=0; i<MAX_PLAYERS; i++)
        {
            if(PlayerInfo[i][pTelefono] == params[0] && i != playerid)
            {
                new llamador[256], llamado[256];
                format(llamador, sizeof(llamador), "%s saca el telefono", GetName(playerid));
                ProxDetector2(30, playerid, llamador,0xC2A2DAAA,0xAA8EBFAA,0x947BA6AA,0x7D688CAA,0x665573AA);
                if(!IsPlayerConnected(i))
                {
                    new noconectado[256];
                    format(noconectado, sizeof(noconectado), "%s guarda el telefono", GetName(playerid));
                    ProxDetector2(30, playerid, noconectado,0xC2A2DAAA,0xAA8EBFAA,0x947BA6AA,0x7D688CAA,0x665573AA);
                    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
                    SendClientMessage(playerid, 0xFFCC26AA, "Operadora: "COL_WHITE"El telefono se encuentra apagado o fuera de covertura, intentelo de nuevo mбs tarde");
                }
                else
                {
                    SendClientMessage(playerid, 0xFFCC26AA, "Operadora: "COL_WHITE"Llamando");
                    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
                }
                break;
            }
            else
            {
                SetTimer("NoExiste", 5000, false);//aqui esta el problema, no se ejecuta
                GameTextForPlayer(playerid, "Llamando...", 3000, 1);
                break;
            }
        }
    }
    else SendClientMessage(playerid, COL_AYUDA, "Uso: "COL_WHITE"/llamar [numero]");
    return 1;
}
Ven el timer que se llama "NoExiste", no se carga esa funcion

pawn Код:
forward NoExiste(playerid);
public NoExiste(playerid)
{
    new string[128];
    format(string, sizeof(string), "%s guarda el telefono", GetName(playerid));
    ProxDetector2(30, playerid, string, 0xC2A2DAAA, 0xAA8EBFAA, 0x947BA6AA, 0x7D688CAA, 0x665573AA);
    SendClientMessage(playerid, 0xFFCC26AA, "Operadora: "COL_WHITE"El numero al que llama no existe");
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
    return 1;
}
Creo que deberia de funcionar... pero no lo hace ayuda
Reply
#2

Por quй activas un timer global? no hace falta ya que tenes que comprobar para un solo jugador.

Ademбs, el forward y public estбn mal hechos. Si te fijas estбs colocando parбmetros en el forward que el timer no ejecuta.

Ahora si harнas esto:

pawn Код:
SetTimerEx("NoExiste",5000,false,"i",playerid);
el forward y public harнan efecto.
Reply
#3

Quote:
Originally Posted by Juance
Посмотреть сообщение
Por quй activas un timer global? no hace falta ya que tenes que comprobar para un solo jugador.

Ademбs, el forward y public estбn mal hechos. Si te fijas estбs colocando parбmetros en el forward que el timer no ejecuta.

Ahora si harнas esto:

pawn Код:
SetTimerEx("NoExiste",5000,false,"i",playerid);
el forward y public harнan efecto.
Soy nuevo en timers la verdad, siempre he intentado hacer todo sin timers... pero a veces es la unica opcion. Voy a probarlo, gracias de antemano.
Reply
#4

Quote:
Originally Posted by chusothe41
Посмотреть сообщение
Soy nuevo en timers la verdad, siempre he intentado hacer todo sin timers... pero a veces es la unica opcion. Voy a probarlo, gracias de antemano.
Nunca es la ъnica opciуn, tambiйn puedes GetTickCount/gettime en OnPlayerUpdate y "simular" un timer.

pawn Код:
new time[MAX_PLAYERS];

time[playerid] = gettime() + 5; // 5 segundos.

public OnPlayerUpdate(playerid)
{
    if(time[playerid] < gettime())
    {
        //tus acciones
        time[playerid] += 5; // hacemos que ese timer se repita cada 5 segundos, si sуlo queres 1 repeticiуn no aсadir esta linea.
    }
    return 1;
}
їEs mбs eficaz?, їEs menos eficaz? No lo se, pero los timer nunca son la ъnica opciуn.
Reply
#5

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Nunca es la ъnica opciуn, tambiйn puedes GetTickCount/gettime en OnPlayerUpdate y "simular" un timer.

pawn Код:
new time[MAX_PLAYERS];

time[playerid] = gettime() + 5; // 5 segundos.

public OnPlayerUpdate(playerid)
{
    if(time[playerid] < gettime())
    {
        //tus acciones
        time[playerid] += 5; // hacemos que ese timer se repita cada 5 segundos, si sуlo queres 1 repeticiуn no aсadir esta linea.
    }
    return 1;
}
їEs mбs eficaz?, їEs menos eficaz? No lo se, pero los timer nunca son la ъnica opciуn.
Si, tambien pero OnPlayerUpdate es una funcion... que hay que tener cuidado con ella
Reply
#6

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Nunca es la ъnica opciуn, tambiйn puedes GetTickCount/gettime en OnPlayerUpdate y "simular" un timer.

pawn Код:
new time[MAX_PLAYERS];

time[playerid] = gettime() + 5; // 5 segundos.

public OnPlayerUpdate(playerid)
{
    if(time[playerid] < gettime())
    {
        //tus acciones
        time[playerid] += 5; // hacemos que ese timer se repita cada 5 segundos, si sуlo queres 1 repeticiуn no aсadir esta linea.
    }
    return 1;
}
їEs mбs eficaz?, їEs menos eficaz? No lo se, pero los timer nunca son la ъnica opciуn.
OnPlayerUpdate no es necesario, es mбs, consumirб una minorнa de tiempo y la variable memoria.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)