[ajuda] SetTimer nгo esta a funcionar direito -
Rick_DR - 02.03.2012
Boas amigos !
Ando a criar um sistema de importar uns carros, algo para os jogadores terem que fazer no servidor, mas queria meter um settimer para nao deixar fazer importaзoes sempre, so de X em X minutos !
o comando esta assim:
pawn Код:
if(strcmp("/import", cmdtext, true) == 0)
{
if(roubo[playerid] <= 0) {
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(IsPlayerInRangeOfPoint(playerid,15,89.8899,-305.0462,1.5781)==0) return SendClientMessage(playerid, cor1, "Nгo estas num posto para importar!");
SetPlayerCheckpoint(playerid, 2801.9988,-2356.5833,13.6302,6.0);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,sizeof(pName));
new string[248];
format(string,sizeof(string),"Faz como o %s ! Escreve {FA0505}/ajudaimport ",pName);
SendClientMessageToAll(cor1, string);
roubo[playerid]=1;
SendClientMessage(playerid,0x14B4E3AA, "Leva o carro ate ao destino!");
SetVehicleNumberPlate(CreateVehicle(535, 89.8899,-305.0462,1.5781,0.2829, 145, 145, 100), "IMPORT");
}
if(roubo[playerid] > 0) {
SendClientMessage(playerid, cor1, "{FF0000}[ERRO] {ADADAD}Para jб nгo queremos mais carros!");
return 1;
}
return 1;
}
Depois em OnPlayerEnterCheckpoint tenho assim
pawn Код:
public OnPlayerEnterCheckpoint(playerid)
{
GetVehicleHealth(veiculo,vidavv);
veiculo = GetPlayerVehicleID(playerid);
if(!IsPlayerInImportVehicles(playerid)) return SendClientMessage(playerid, cor1, "{FF0000}[ERRO] {ADADAD}Este nгo foi o carro que pedi !");
if(IsPlayerInAnyVehicle(playerid)) {
new Float:health;
new veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health <700) {
SendClientMessage(playerid, 0x14E551AA, "{FF0000}[Import] {ADADAD}Que mau trabalho! Sу levas metade do pagamento! 1000Ђ");
GivePlayerMoney(playerid, 1000);
}
if(health >700)
{
SendClientMessage(playerid, 0x14E551AA, "{FF0000}[Import] {ADADAD}Exelente trabalho, 2000Ђ! Volta dentro de 20min");
GivePlayerMoney(playerid, 2000);
}
DestroyVehicle(veiculo);
SetTimer("temporoubo",300000, false); // 1000 = 1 segundo
DisablePlayerCheckpoint(playerid);
return 1;
}
if(roubo[playerid] == 1){
SendClientMessage(playerid, cor1, "oi");
}
return 1;
}
e finalmente o settimer
pawn Код:
public temporoubo(playerid)
{
roubo[playerid]=0;
SendClientMessage(playerid, 0xBDE551AA, "{FF0000}[Import] {ADADAD}Temos outro trabalho! {FA0505}/ajudaimport! ");
return 1;
}
Sabem me dizer onde esta o erro para o settimer nao funcionar no tempo pedido ?
Re: [ajuda] SetTimer nгo esta a funcionar direito -
CyNiC - 02.03.2012
Esse timer й global, tem que criar um timer especнfico para o jogador, use SetTimerEx.
pawn Код:
SetTimerEx("temporoubo",300000, false, "d", playerid);
https://sampwiki.blast.hk/wiki/SetTimerEx
Re: [ajuda] SetTimer nгo esta a funcionar direito -
Rick_DR - 02.03.2012
Vou testar amigo ! digo ja alguma coisa !
Re: [ajuda] SetTimer nгo esta a funcionar direito -
Etton - 02.03.2012
Vocк nгo precisa criar times para esta situaзгo, presumo que times dгo lag, entгo use este tipo(gettime):
Код:
if(strcmp("/import", cmdtext, true) == 0)
{
if(roubo[playerid] > gettime()) return SendClientMessage(playerid, cor1, "{FF0000}[ERRO] {ADADAD}Para jб nгo queremos mais carros!");
else
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(IsPlayerInRangeOfPoint(playerid,15,89.8899,-305.0462,1.5781)==0) return SendClientMessage(playerid, cor1, "Nгo estas num posto para importar!");
SetPlayerCheckpoint(playerid, 2801.9988,-2356.5833,13.6302,6.0);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,sizeof(pName));
new string[248];
format(string,sizeof(string),"Faz como o %s ! Escreve {FA0505}/ajudaimport ",pName);
SendClientMessageToAll(cor1, string);
SendClientMessage(playerid,0x14B4E3AA, "Leva o carro ate ao destino!");
SetVehicleNumberPlate(CreateVehicle(535, 89.8899,-305.0462,1.5781,0.2829, 145, 145, 100), "IMPORT");
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
GetVehicleHealth(veiculo,vidavv);
veiculo = GetPlayerVehicleID(playerid);
if(!IsPlayerInImportVehicles(playerid)) return SendClientMessage(playerid, cor1, "{FF0000}[ERRO] {ADADAD}Este nгo foi o carro que pedi!");
if(IsPlayerInAnyVehicle(playerid))
{
new Float:health;
new veh;
veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh, health);
if(health <700)
{
SendClientMessage(playerid, 0x14E551AA, "{FF0000}[Import] {ADADAD}Que mau trabalho! Sу levas metade do pagamento! 1000Ђ");
GivePlayerMoney(playerid, 1000);
}
if(health >700)
{
SendClientMessage(playerid, 0x14E551AA, "{FF0000}[Import] {ADADAD}Exelente trabalho, 2000Ђ! Volta dentro de 20min");
GivePlayerMoney(playerid, 2000);
}
DestroyVehicle(veiculo);
roubo[playerid] = gettime() + 300; // 300 = 5 mins neste caso...
DisablePlayerCheckpoint(playerid);
return 1;
}
return 1;
}
Teste e vк se funciona!
Ajudei? REP xD