Combustнvel nгo desconta -
Ley - 29.05.2018
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;
}
Re: Combustнvel nгo desconta -
PT - 29.05.2018
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
Re: Combustнvel nгo desconta -
AutoMatic2 - 29.05.2018
Tenta usar esse sistema >_<
Pastebin:
https://pastebin.com/bH8SV8tK
Re: Combustнvel nгo desconta -
Cleyson - 30.05.2018
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;
}