SetTimerEx - string como argumento -
retsaoremo - 14.02.2013
Olб meus queridos, fiz um delay de comandos aqui da seguinte forma:
comando:
pawn Код:
CMD:consertar(playerid, params[])
{
if(GetPVarInt(playerid, "CMDconsertar") == 1)
return SendClientMessage(playerid, COLOR_RED, "[ x ] Vocк ainda nгo pode usar este comando.");
//SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
RepairVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, -1, "[>>>] Veнculo consertado!");
SetPVarInt(playerid, "CMDconsertar", 1);
printf("Nome var: CMDconsertar, Valor: %i", GetPVarInt(playerid, "CMDconsertar"));
SetTimerEx("DelayComandos", 30000, false, "ds", playerid, "CMDconsertar");
return 1;
}
funзгo:
pawn Код:
forward DelayComandos(playerid, nomevar[]);
public DelayComandos(playerid, nomevar[])
{
printf("Entrou funcao");
printf("Valor %s: %i", nomevar, GetPVarInt(playerid, nomevar));
DeletePVar(playerid, nomevar);
printf("Deletou %s, valor: %i", nomevar, GetPVarInt(playerid, nomevar));
new str[64];
format(str, sizeof str, "[>>>] Vocк jб pode usar o comando %s novamente.", nomevar);
SendClientMessage(playerid, -1, str);
return 1;
}
O que acontece й que quando entra na funзгo DelayComandos, o GetPVarInt(playerid, "CMDconsertar") tem valor 0.
como mostra a imagem
Alguem sabe o que estб acontecendo ?
Re: SetTimerEx - string como argumento -
Maklister - 14.02.2013
Vocк estб deletando a VAR estando em 0
Re: SetTimerEx - string como argumento -
DouglasRodrigues - 14.02.2013
E nгo funciona ?
Re: SetTimerEx - string como argumento -
retsaoremo - 14.02.2013
Quote:
Originally Posted by Murilo_sousa
Vocк estб deletando a VAR estando em 0
|
Eu sei que estou deletando. Mas o problema й que ela jб entra como 0 mesmo antes de deletar como mostra a imagem do console do servidor.
Quote:
Originally Posted by DouglasRodrigues
E nгo funciona ?
|
Nгo, acontece o problema que citei :/
Re: SetTimerEx - string como argumento -
retsaoremo - 14.02.2013
Jб ouvi falar que nгo й possнvel "passar" strings por SetTimerEx, mas creio que se nгo fosse possнvel nгo ia ler a string em "printf("Valor %s: %i", nomevar, GetPVarInt(playerid, nomevar));".
Ou estou errado ?
Re: SetTimerEx - string como argumento -
retsaoremo - 14.02.2013
Coloquei isso no comeзo da funзгo para verificar os valores que entram:
pawn Код:
printf("Valor 1: %i", GetPVarInt(pid, nomevar));
printf("Valor 2: %i", GetPVarInt(pid, "CMDconsertar"));
e fica Valor 1: 0
Valor 2: 1
aff....
Re: SetTimerEx - string como argumento -
leonardo1434 - 14.02.2013
PHP код:
CMD:consertar(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid)) return 0;
static timer;
if(timer > gettime()) return SendClientMessage(playerid, COLOR_RED, "[ x ] Vocк ainda nгo pode usar este comando.");
//SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
RepairVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, -1, "[>>>] Veнculo consertado!");
timer = gettime() + 30;
//SetTimerEx("DelayComandos", 0, false, "ds", playerid, "CMDconsertar");
DelayComandos(playerid,"CMDconsertar");
return 1;
}
forward DelayComandos(playerid, nomevar[]);
public DelayComandos(playerid, nomevar[])
{
printf(nomevar);
new string[145];
format(string, sizeof string, "[>>>] Vocк jб pode usar o comando %s novamente.", nomevar);
SendClientMessage(playerid, -1, string);
return 1;
}
Desse jeito й bem mais simples e otimizado. Pois nгo usa Pvar e nem pхe o settimer em sleep atй chegar sua vez.
Re: SetTimerEx - string como argumento -
retsaoremo - 15.02.2013
Quote:
Originally Posted by leonardo1434
PHP код:
CMD:consertar(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid)) return 0;
static timer;
if(timer > gettime()) return SendClientMessage(playerid, COLOR_RED, "[ x ] Vocк ainda nгo pode usar este comando.");
//SetVehicleHealth(GetPlayerVehicleID(playerid), 1000.0);
RepairVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, -1, "[>>>] Veнculo consertado!");
timer = gettime() + 30;
//SetTimerEx("DelayComandos", 0, false, "ds", playerid, "CMDconsertar");
DelayComandos(playerid,"CMDconsertar");
return 1;
}
forward DelayComandos(playerid, nomevar[]);
public DelayComandos(playerid, nomevar[])
{
printf(nomevar);
new string[145];
format(string, sizeof string, "[>>>] Vocк jб pode usar o comando %s novamente.", nomevar);
SendClientMessage(playerid, -1, string);
return 1;
}
Desse jeito й bem mais simples e otimizado. Pois nгo usa Pvar e nem pхe o settimer em sleep atй chegar sua vez.
|
Olб leonardo.
Vocк pode me explicar o jeito que vocк usou o gettime() e a var timer ?
e de qualquer jeito nгo vou ter que usar o SetTimer para nгo executar a funзгo logo apуs executar o comando ?
Re: SetTimerEx - string como argumento -
leonardo1434 - 15.02.2013
https://sampforum.blast.hk/showthread.php?tid=254915
https://sampwiki.blast.hk/wiki/Keywords:Initialisers#static
Tais partes em amarelo/comentadas, sгo partes que nгo sгo necessбrias, pois jб foram supridas as necessidades da funзгo em si.
Re: SetTimerEx - string como argumento -
retsaoremo - 15.02.2013
Entendo. Mas logo quando uso o comando a funзгo DelayComandos й executada e jб diz: "[>>>] Vocк jб pode usar o comando %s novamente.".
O correto seria depois de, neste caso, 30 segundos executar a funзгo DelayComandos.