[AJUDA] Tempo entre multa?
#1

Olб eu estou com um certo problema com o meu radar '-', й que quando passo por ele, as vezes tomo cerca de 2 multas em 1 passada '-' e eu queria add um tempo para multa, exemplo passei no radar agora, daqui a 10 segundos poderб multar denovo ... '-' sу para nгo dar 2 multas ou algo do tipo, se alguйm puder me ajudar...


Obrigado , e Sou muito grato.

pawn Код:
stock AddFlitsPaal(playerid, modelid, Float:xx, Float:yy, Float:zz, radius, speed)
{
    new fine[MAX_PLAYERS];
    new str[256];

    if(objectcreated!=maxobject)
    {
        CreateObject(modelid, xx, yy, zz, 0.0, 0.0, 10);
        objectcreated++;
    }
    if((distance1[playerid])>speed)
    {
        if(IsPlayerInCircle(playerid, xx, yy, radius)  && GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
        {
            fine[playerid]=((distance1[playerid]*17/10)-speed);
            GivePlayerMoneyEx(playerid, -520);
            format(str,sizeof(str), "[{D50000}RADAR{FFFF00}] Vocк ultrapassou o limite de velocidade {FFFFFF}%d km/h{FFFF00} e foi multado em {16EB43}520{FFFF00} reais.",speed, distance1[playerid] ,fine[playerid]);
            SendClientMessage(playerid, 0xFFFF00AA, str);
            PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);
        }
    }

}
Ai o cуdigo se precisar ... '

Help? Alguйm? :/'
Reply
#2

Como o GM ta fazendo pra chega nesse IsPlayerInCircle?

Ta usando algum timer?
Reply
#3

Mercurio acho que vocк poderia fazer o seguinte:

1 - Colocar uma varйavel la em cima no comeзo do script por exemplo "new RadarCheck;"
2 - Colocar a seguinte logica de pois de "IsPlayerInCircle":
O player sу pode ser multado se o valor da vareavel for igual a 0. Se for igual a 0:
RadarCheck = 1
SetTimer("RestartRadar", 5000, false);
3 - Agora devemo criar uma funзгo chamada "RestartRadar" e definir ela la em cima do script.

PHP код:
public RestartRadar()
{
    
RadarCheck 0;

No caso ficaria assim:
PHP код:
new RadarCheck;
forward RestartRadar();
stock AddFlitsPaal(playeridmodelidFloat:xxFloat:yyFloat:zzradiusspeed)
{
    new 
fine[MAX_PLAYERS];
    new 
str[256];
    if(
objectcreated!=maxobject)
    {
        
CreateObject(modelidxxyyzz0.00.010);
        
objectcreated++;
    }
    if((
distance1[playerid])>speed)
    {
        if(
IsPlayerInCircle(playeridxxyyradius)  && GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
        {
            if (
RadarCheck == 0)
            {
                
fine[playerid]=((distance1[playerid]*17/10)-speed);
                
GivePlayerMoneyEx(playerid, -520);
                
format(str,sizeof(str), "[{D50000}RADAR{FFFF00}] Vocк ultrapassou o limite de velocidade {FFFFFF}%d km/h{FFFF00} e foi multado em {16EB43}520{FFFF00} reais.",speeddistance1[playerid] ,fine[playerid]);
                
SendClientMessage(playerid0xFFFF00AAstr);
                
PlayerPlaySound(playerid11320.00.00.0);
                
RadarCheck 1;
                
SetTimer("RestartRadar"5000false);
            }
        }
    }
}
public 
RestartRadar()
{
    
RadarCheck 0;

Reply
#4

Quote:
Originally Posted by Walberti Evaristo
Посмотреть сообщение
Mercurio acho que vocк poderia fazer o seguinte:

1 - Colocar uma varйavel la em cima no comeзo do script por exemplo "new RadarCheck;"
2 - Colocar a seguinte logica de pois de "IsPlayerInCircle":
O player sу pode ser multado se o valor da vareavel for igual a 0. Se for igual a 0:
RadarCheck = 1
SetTimer("RestartRadar", 5000, false);
3 - Agora devemo criar uma funзгo chamada "RestartRadar" e definir ela la em cima do script.

PHP код:
public RestartRadar()
{
    
RadarCheck 0;

No caso ficaria assim:
PHP код:
new RadarCheck;
forward RestartRadar();
stock AddFlitsPaal(playeridmodelidFloat:xxFloat:yyFloat:zzradiusspeed)
{
    new 
fine[MAX_PLAYERS];
    new 
str[256];
    if(
objectcreated!=maxobject)
    {
        
CreateObject(modelidxxyyzz0.00.010);
        
objectcreated++;
    }
    if((
distance1[playerid])>speed)
    {
        if(
IsPlayerInCircle(playeridxxyyradius)  && GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
        {
            if (
RadarCheck == 0)
            {
                
fine[playerid]=((distance1[playerid]*17/10)-speed);
                
GivePlayerMoneyEx(playerid, -520);
                
format(str,sizeof(str), "[{D50000}RADAR{FFFF00}] Vocк ultrapassou o limite de velocidade {FFFFFF}%d km/h{FFFF00} e foi multado em {16EB43}520{FFFF00} reais.",speeddistance1[playerid] ,fine[playerid]);
                
SendClientMessage(playerid0xFFFF00AAstr);
                
PlayerPlaySound(playerid11320.00.00.0);
                
RadarCheck 1;
                
SetTimer("RestartRadar"5000false);
            }
        }
    }
}
public 
RestartRadar()
{
    
RadarCheck 0;

SetTimer? wtf
RadarCheck ?
facepalm

Use SetTimerEx com o parametro playerid e RadarCheck com playerid para que o JOGADOR nao leve multa 2 vezes. Assim se dois carros passarem, sу 1 toma multa
Reply
#5

pawn Код:
IsPlayerInCircle(playerid,Float:x,Float:y,radius)
{
    if(GetPlayerDistanceToPoint1(playerid,Float:x,Float:y) < radius)
    {
        return 1;
    }
    return 0;
}
pawn Код:
stock AddFlitsPaal(playerid, modelid, Float:xx, Float:yy, Float:zz, radius, speed)
{
    new fine[MAX_PLAYERS];
    new str[256];

    if(objectcreated!=maxobject)
    {
        CreateObject(modelid, xx, yy, zz, 0.0, 0.0, 10);
        objectcreated++;
    }
    if((distance1[playerid])>speed)
    {
        if(IsPlayerInCircle(playerid, xx, yy, radius)  && GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
        {
            fine[playerid]=((distance1[playerid]*17/10)-speed);
            GivePlayerMoneyEx(playerid, -520);
            format(str,sizeof(str), "[{D50000}RADAR{FFFF00}] Vocк ultrapassou o limite de velocidade {FFFFFF}%d km/h{FFFF00} e foi multado em {16EB43}520{FFFF00} reais.",speed, distance1[playerid] ,fine[playerid]);
            SendClientMessage(playerid, 0xFFFF00AA, str);
            PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);
        }
    }

}
Alguйm ajuda ae POR FAVOR ;('
Reply
#6

Amigo, pelo que entendi no seu cуdigo, nao tem como saber como vocк estб checando...

NA parte que checa vocк pode setar um SetPVarInt(playerid,"PassouRadar,1);
E aplicar um SetTimeEx que passa pra etPVarInt(playerid,"PassouRadar2); depois de um tempo, e colocar isso quando ele passar no Radar:

if (GetPVarInt(playerid,"PassouRadar) == 2);

Ai como o passouradar 2 ta setado depois de um tempo de ele passar, ele toma a multa,assim nгo buga e ele tome 2 vezes. espero ter ajudado
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)