[Ajuda] Combustнvel nгo desconta
#1

Olб users, estou enfrentando um problema com a quantia de combustнvel no players.

O problema й que a textdraw ela й apresentada, porйm, onde й para descontar o combustнvel nгo estб descontando:
PHP код:
--InfoPlayer[i][Combustivel]; 
Alguйm poderia me ajudar? Nesse cуdigo estб restringindo caso o usuбrio esteja em uma bicicleta, que nгo precisa de combustнvel.

PHP код:
forward CombustivelVeiculo();
public 
CombustivelVeiculo() {
    for(new 
i; i < MAX_PLAYERS; i++) {
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER && InfoPlayer[i][Combustivel] == 0 && !IsPlayerInVehicle(i, 481) && !IsPlayerInVehicle(i, 509) && !IsPlayerInVehicle(i, 510)) return RemovePlayerFromVehicle(i);
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(i)) != 481 && GetVehicleModel(GetPlayerVehicleID(i)) != 509 && GetVehicleModel(GetPlayerVehicleID(i)) != 510) {
            if(
xCPlayer[i] == 0)
            {
                
GetPlayerPos(i, xCPlayer[i],yCPlayer[i],zCPlayer[i]);
            }
            else
            {
                if(
IsPlayerInRangeOfPoint(i, 850, xCPlayer[i], yCPlayer[i], zCPlayer[i])) return 0;
                else
                {
                    --
InfoPlayer[i][Combustivel];
                    
TextDrawHideForPlayer(i, CombustivelT[i]);
                    
GetPlayerPos(i, xCPlayer[i],yCPlayer[i],zCPlayer[i]);
                    
format(formato, sizeof(formato),"~y~~h~Combustivel:~w~ %i", InfoPlayer[i][Combustivel]);
                    
TextDrawSetString(CombustivelT[i],formato);
                    
TextDrawShowForPlayer(i, CombustivelT[i]);
                }
            }
            
            if(
InfoPlayer[i][Combustivel] == 5 || InfoPlayer[i][Combustivel] == 2)
            {
                
SendClientMessage(i, 0xFF0808AA, "Seu combustнvel estб acabando, vб atй um posto de gasolina mais prуximo!");
                
PlayerPlaySound(i, 1057, 0.0, 0.0, 10.0);
                   return 
0;
            }
        }
    }
    return 
1;
} 
Reply
#2

Cara esta parte:

PHP код:
   for(new i; i < MAX_PLAYERS; i++) { 
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER && InfoPlayer[i][Combustivel] == 0 && !IsPlayerInVehicle(i, 481) && !IsPlayerInVehicle(i, 509) && !IsPlayerInVehicle(i, 510)) return RemovePlayerFromVehicle(i); 
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(i)) != 481 && GetVehicleModel(GetPlayerVehicleID(i)) != 509 && GetVehicleModel(GetPlayerVehicleID(i)) != 510) { 
            if(
xCPlayer[i] == 0) 
            { 
                
GetPlayerPos(i, xCPlayer[i],yCPlayer[i],zCPlayer[i]); 
            } 
            else 
            { 
                if(
IsPlayerInRangeOfPoint(i, 850, xCPlayer[i], yCPlayer[i], zCPlayer[i])) return 0; 
                else 
                { 
Esta nada otimizado pense numa logica melhor de melhorar isso porque assim cara ta uma bagunca. vc checa coisas que nem precisa... use a negaзгo !

restringa a quantidade de players a ser passados no loop.. comece por apenas aqueles que tao on.. depois aqueles que vc verificar

e depois eu sempre usei assim InfoPlayer[i][Combustivel] --;

mas vc que sabe
Reply
#3

Tenta usar esse sistema >_<

Pastebin:

https://pastebin.com/bH8SV8tK
Reply
#4

Seu cуdigo parece muito confuso.

Fiz aqui rapidamente pra vocк, adapte ao seu gamemode e veja as alteraзхes e otimizaзгo feita.
Se houver algum erro me comunique pois criei por aqui e mesmo e nem copilei.

PHP код:
SetTimerEx("CombustivelVeiculo", 15000, true, "i", playerid);
forward CombustivelVeiculo(playerid); 
public 
CombustivelVeiculo(playerid) 
{ 
    if(!
IsPlayerInAnyVehicle(playerid)) return 1; // retorna se nao tiver em veiculos
    
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1; //retorna se nao tiver como motorista
    
new modelo = GetVehicleModel(GetPlayerVehicleID(playerid));
    if(
modelo == 509 || modelo == 510) return 1; // retorna se tiver em bikes 
 
    
format(formato, sizeof(formato),"~y~~h~Combustivel:~w~ %i", InfoPlayer[playerid][Combustivel]); 
    
TextDrawSetString(CombustivelT[playerid],formato); 
    
TextDrawShowForPlayer(playerid, CombustivelT[playerid]); 
             
    if(
InfoPlayer[playerid][Combustivel] < 5) 
    { 
        
SendClientMessage(playerid, 0xFF0808AA, "Seu combustнvel estб acabando, vб atй um posto de gasolina mais prуximo!"); 
        
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); 
        return 
0; 
    } 
    if(
InfoPlayer[playerid][Combustivel] == 0) 
    { 
        
SendClientMessage(playerid, 0xFF0808AA, "Seu combustнvel acabou!"); 
        
RemovePlayerFromVehicle(playerid);
        return 
0; 
    }
    
InfoPlayer[playerid][Combustivel] --;
    return 
1; 
} 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)