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;
}
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;
}
SetTimerEx("NoExiste",5000,false,"i",playerid);
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 Код:
|
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.
![]() |
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;
}
Nunca es la ъnica opciуn, tambiйn puedes GetTickCount/gettime en OnPlayerUpdate y "simular" un timer.
pawn Код:
|
Nunca es la ъnica opciуn, tambiйn puedes GetTickCount/gettime en OnPlayerUpdate y "simular" un timer.
pawn Код:
|