[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 
iMAX_PLAYERSi++) {
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER && InfoPlayer[i][Combustivel] == && !IsPlayerInVehicle(i481) && !IsPlayerInVehicle(i509) && !IsPlayerInVehicle(i510)) 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(ixCPlayer[i],yCPlayer[i],zCPlayer[i]);
            }
            else
            {
                if(
IsPlayerInRangeOfPoint(i850xCPlayer[i], yCPlayer[i], zCPlayer[i])) return 0;
                else
                {
                    --
InfoPlayer[i][Combustivel];
                    
TextDrawHideForPlayer(iCombustivelT[i]);
                    
GetPlayerPos(ixCPlayer[i],yCPlayer[i],zCPlayer[i]);
                    
format(formatosizeof(formato),"~y~~h~Combustivel:~w~ %i"InfoPlayer[i][Combustivel]);
                    
TextDrawSetString(CombustivelT[i],formato);
                    
TextDrawShowForPlayer(iCombustivelT[i]);
                }
            }
            
            if(
InfoPlayer[i][Combustivel] == || InfoPlayer[i][Combustivel] == 2)
            {
                
SendClientMessage(i0xFF0808AA"Seu combustнvel estб acabando, vб atй um posto de gasolina mais prуximo!");
                
PlayerPlaySound(i10570.00.010.0);
                   return 
0;
            }
        }
    }
    return 
1;

Reply
#2

Cara esta parte:

PHP код:
   for(new iMAX_PLAYERSi++) { 
        if(
GetPlayerState(i) == PLAYER_STATE_DRIVER && InfoPlayer[i][Combustivel] == && !IsPlayerInVehicle(i481) && !IsPlayerInVehicle(i509) && !IsPlayerInVehicle(i510)) 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(ixCPlayer[i],yCPlayer[i],zCPlayer[i]); 
            } 
            else 
            { 
                if(
IsPlayerInRangeOfPoint(i850xCPlayer[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"15000true"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(formatosizeof(formato),"~y~~h~Combustivel:~w~ %i"InfoPlayer[playerid][Combustivel]); 
    
TextDrawSetString(CombustivelT[playerid],formato); 
    
TextDrawShowForPlayer(playeridCombustivelT[playerid]); 
             
    if(
InfoPlayer[playerid][Combustivel] < 5
    { 
        
SendClientMessage(playerid0xFF0808AA"Seu combustнvel estб acabando, vб atй um posto de gasolina mais prуximo!"); 
        
PlayerPlaySound(playerid10570.00.010.0); 
        return 
0
    } 
    if(
InfoPlayer[playerid][Combustivel] == 0
    { 
        
SendClientMessage(playerid0xFF0808AA"Seu combustнvel acabou!"); 
        
RemovePlayerFromVehicle(playerid);
        return 
0
    }
    
InfoPlayer[playerid][Combustivel] --;
    return 
1

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)