[Ajuda] Flood mensagem public
#1

O que estб errado? quando meu carro para de funcionar, manda a mensagem, mas fica floodando a mensagem, alguйm poderia me ajudar??

PHP код:
forward CheckCarHealth();
public 
CheckCarHealth()
{
    new 
PlayerAvisado[MAX_PLAYERS] = 0;
    for(new 
i=0; i<GetMaxPlayers(); i++)
    {
        if (
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
        {
            new 
Float:health;
            
GetVehicleHealth(GetPlayerVehicleID(i),health);
            if(
health <= 400)
            {
                if(
GetPlayerState(i) == PLAYER_STATE_DRIVER)
                {
                    new 
mot, lu, alar, por, cap, porma, ob;
                    new 
carro = GetPlayerVehicleID(i);
                    
GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob);
                    
SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alar, por, cap, porma, ob);
                    
SetVehicleHealth(carro, 400);
                }
                if(
PlayerAvisado[i] == 0 && health <= 400 )
                {
                    
SendClientMessage(i, -1, "{B4B5B7}| INFO | Seu veнculo parou de funcionar, chame um mecвnico (/mecanico)!");
                    
PlayerAvisado[i] = 1;
                }
                return 
1;
            }
        }
    }
    return 
1;
} 
Reply
#2

PHP код:
//  Abaixo das Includes
new bool:PlayerAvisado[MAX_PLAYERS]; 
public 
OnPlayerConnect(playerid) {
    
PlayerAvisado[playerid] = false;
    return 
1;
}
forward CheckCarHealth(); 
public 
CheckCarHealth() 
{ 
    for(new 
i = 0; i < GetMaxPlayers(); i++) 
    { 
        if (
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && PlayerAvisado[i] == false) 
        { 
            new 
Float:health; 
            
GetVehicleHealth(GetPlayerVehicleID(i),health); 
            if(
health <= 400) 
            { 
                if(
GetPlayerState(i) == PLAYER_STATE_DRIVER) 
                { 
                    new 
mot, lu, alar, por, cap, porma, ob; 
                    new 
carro = GetPlayerVehicleID(i); 
                    
GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob); 
                    
SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alar, por, cap, porma, ob); 
                    
SetVehicleHealth(carro, 400); 
                }
                
                
SendClientMessage(i, -1, "{B4B5B7}| INFO | Seu veнculo parou de funcionar, chame um mecвnico (/mecanico)!"); 
                
PlayerAvisado[i] = true;
                return 
1; 
            } 
        } 
    } 
    return 
1; 
} 
Nгo se esqueзa de criar um timer ou algo do gкnero para "resetar" o valor de "PlayerAvisado", caso contrбrio o player recebera a notificaзгo uma ъnica vez durante toda sua jogatina.
Reply
#3

Quote:
Originally Posted by Gii
Посмотреть сообщение
PHP код:
//  Abaixo das Includes
new bool:PlayerAvisado[MAX_PLAYERS]; 
public 
OnPlayerConnect(playerid) {
    
PlayerAvisado[playerid] = false;
    return 
1;
}
forward CheckCarHealth(); 
public 
CheckCarHealth() 
{ 
    for(new 
i = 0; i < GetMaxPlayers(); i++) 
    { 
        if (
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && PlayerAvisado[i] == false) 
        { 
            new 
Float:health; 
            
GetVehicleHealth(GetPlayerVehicleID(i),health); 
            if(
health <= 400) 
            { 
                if(
GetPlayerState(i) == PLAYER_STATE_DRIVER) 
                { 
                    new 
mot, lu, alar, por, cap, porma, ob; 
                    new 
carro = GetPlayerVehicleID(i); 
                    
GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob); 
                    
SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alar, por, cap, porma, ob); 
                    
SetVehicleHealth(carro, 400); 
                }
                
                
SendClientMessage(i, -1, "{B4B5B7}| INFO | Seu veнculo parou de funcionar, chame um mecвnico (/mecanico)!"); 
                
PlayerAvisado[i] = true;
                return 
1; 
            } 
        } 
    } 
    return 
1; 
} 
Nгo se esqueзa de criar um timer ou algo do gкnero para "resetar" o valor de "PlayerAvisado", caso contrбrio o player recebera a notificaзгo uma ъnica vez durante toda sua jogatina.
Colocar o timer no ongamemodeinit pra verificar a public sempre?
Reply
#4

PHP код:
//  Abaixo das Includes 
new PlayerAvisado[MAX_PLAYERS] = { 0, ... };
forward CheckCarHealth();  
public 
CheckCarHealth()  
{  
    for(new 
i = 0; i < GetMaxPlayers(); i++)  
    {  
        if (
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && PlayerAvisado[i] <= gettime() )  
        {  
            new 
Float:health;  
            
GetVehicleHealth(GetPlayerVehicleID(i),health);  
            if(
health <= 400)  
            {  
                if(
GetPlayerState(i) == PLAYER_STATE_DRIVER)  
                {  
                    new 
mot, lu, alar, por, cap, porma, ob;  
                    new 
carro = GetPlayerVehicleID(i);  
                    
GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob);  
                    
SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alar, por, cap, porma, ob);  
                    
SetVehicleHealth(carro, 400);  
                } 
                 
                
SendClientMessage(i, -1, "{B4B5B7}| INFO | Seu veнculo parou de funcionar, chame um mecвnico (/mecanico)!");  
                
PlayerAvisado[i] = gettime() + 10; // em 10 segundos ele receberб o aviso novamente
                
return 1;  
            }  
        }  
    }  
    return 
1;  
} 
Reply
#5

Quote:
Originally Posted by Gii
Посмотреть сообщение
PHP код:
//  Abaixo das Includes 
new PlayerAvisado[MAX_PLAYERS] = { 0, ... };
forward CheckCarHealth();  
public 
CheckCarHealth()  
{  
    for(new 
i = 0; i < GetMaxPlayers(); i++)  
    {  
        if (
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && PlayerAvisado[i] <= gettime() )  
        {  
            new 
Float:health;  
            
GetVehicleHealth(GetPlayerVehicleID(i),health);  
            if(
health <= 400)  
            {  
                if(
GetPlayerState(i) == PLAYER_STATE_DRIVER)  
                {  
                    new 
mot, lu, alar, por, cap, porma, ob;  
                    new 
carro = GetPlayerVehicleID(i);  
                    
GetVehicleParamsEx(carro, mot, lu, alar, por, cap, porma, ob);  
                    
SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alar, por, cap, porma, ob);  
                    
SetVehicleHealth(carro, 400);  
                } 
                 
                
SendClientMessage(i, -1, "{B4B5B7}| INFO | Seu veнculo parou de funcionar, chame um mecвnico (/mecanico)!");  
                
PlayerAvisado[i] = gettime() + 10; // em 10 segundos ele receberб o aviso novamente
                
return 1;  
            }  
        }  
    }  
    return 
1;  
} 
Eu quero que ele envie uma vez sу a mensagem, nгo mais!
Reply


Forum Jump:


Users browsing this thread: