[ajuda] SetTimer nгo esta a funcionar direito
#1

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 ?
Reply
#2

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
Reply
#3

Vou testar amigo ! digo ja alguma coisa !
Reply
#4

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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)