#include <a_samp>
new fuel[MAX_VEHICLES]; //fuel por o veнculo
forward timer_fuel_lower();//timer para abaixar o valor do combustнvel
forward timer_refuel(playerid); //timer para reabastecer o veнculo
new isrefuelling[MAX_PLAYERS] = 0; //bool para verific se o jogador jб estб reabastecendo
new Text:td_fuel[MAX_PLAYERS]; //textdraw com combustнvel
for(new i=0;i<MAX_VEHICLES;i++) {
fuel[i] = 100; //sets combustнvel de cada carro a 100 em um laзo
}
SetTimer("timer_fuel_lower",4200,true); //sets o temporizador para deixar cair o combustнvel
for(new i=0;i<MAX_VEHICLES;i++) {
fuel[i] = 100;//sets combustнvel de cada carro a 100 em um laзo
}
SetTimer("timer_fuel_lower",4200,true); //sets o temporizador para deixar cair o combustнvel
td_fuel[playerid] = TextDrawCreate(45,324,"Fuel: 100"); //criar o textdraw na posiзгo
TextDrawBackgroundColor(td_fuel[playerid],0x00000033); //Aki sera o BackgroundColor Do TextDraw
TextDrawFont(td_fuel[playerid],3); O Tipo De Fonte
TextDrawLetterSize(td_fuel[playerid],0.699999,1.700000); //O Tamanho da Fonte
TextDrawColor(td_fuel[playerid],0x000000ff); //A Cor
TextDrawSetShadow(td_fuel[playerid],3); //E A Sombra
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
new vid = GetPlayerVehicleID(playerid);
new string[125];format(string,sizeof string,"Gasolina:%i",fuel[vid]); //Faz A Atualizaзao Do Combustivel (assim nгo saltarб de 100 a seu valor real)
TextDrawSetString(td_fuel[playerid],string);
TextDrawShowForPlayer(playerid,td_fuel[playerid]);
} else {
TextDrawHideForPlayer(playerid,td_fuel[playerid]);
}
return 1;
}
if (!strcmp("/abastecer",cmdtext,true,7)) {
if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"Voce nao esta em um veiculo!"); //if um jogador nгo estб em um veнculo, ele para aqui
if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,"Voce ja esta reabastecendo!"); //if que um jogador jб estб reabastecendo, para aqui
if (GetPlayerMoney(playerid) - 80 <0) return SendClientMessage(playerid,0xFFC800FF,"Voce Nao Tem Dinheiro Suficiente!"); //o Player Nao Tem 80 Reias Para Pagar, Para Aqui
GivePlayerMoney(playerid,-80); //Sets the player's cash -$80
SetCameraBehindPlayer(playerid); //Sets a cвmera atrбs do jogador (os olhares melhoram porque o jogador serб congelado por alguns segundos)
TogglePlayerControllable(playerid,0);
isrefuelling[playerid] = 1;
TextDrawSetString(td_fuel[playerid],"Reabastecimento..."); //Aki A Mensagem Q Mostra O player Reabastecimento
SetTimerEx("timer_refuel",4500,false,"i",playerid);
public timer_fuel_lower()
{
for(new i=0;i<MAX_PLAYERS;i++) { //loop para todos os jogadores
if (isrefuelling[i]) return 0; //Parar quando um jogador jб reabastecer
new vid = GetPlayerVehicleID(i); //identificaзгo do veнculo
if (GetPlayerVehicleSeat(i) == 0) { //if o jogador й um excitador (deve somente abaixar o combustнvel quando theres um excitador!)
fuel[vid] = fuel[vid] -1; abaixando o valor do combustнvel
if (fuel[vid]<1) //if combustнvel estб vazio
{
fuel[vid] = 0; // que ajusta o combustнvel a 0 (mais o temporizador o ajustarб -1 -2 -3 etc. antes de remover o jogador)
RemovePlayerFromVehicle(i); // remove o jogador fora do veнculo
GameTextForPlayer(i,"~r~You are out of ~w~fuel~r~!",5000,4); //Mostra O Texto
}
}
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]); //preparando a corda com valor seguinte do combustнvel
TextDrawSetString(td_fuel[i],string); //actualizando o textdraw
}
return 1;
}
public timer_refuel(playerid)
{
new vid = GetPlayerVehicleID(playerid);
fuel[vid] = fuel[vid] = 100; Aki E A Gasolina Em 100
isrefuelling[playerid] = 0;//anti-Spam
TextDrawSetString(td_fuel[playerid],"Fuel:100");//actualizaзгo pequena no textdraw
TogglePlayerControllable(playerid,1);//unfreeze o jogador
}
//Use e abuse.
//No comeзo de seu FS/GM
#define MAX_CARROS 100 //Aqui, mude para o tanto de veнculos em seu servidor.
new Text:Black0;
new Text:Black1;
new Text:Black2;
new Text:Black3;
new Text:LightBlack;
new Text:VHS[MAX_PLAYERS];
new bool:TextShow[MAX_PLAYERS];
new bool:VHSCreated[MAX_PLAYERS];
new bool:Reabastecendo[MAX_PLAYERS];
new Combustivel[MAX_CARROS];
//Em OnGameModeInit...
// TextDraws do Velocнmetro
Black0 = TextDrawCreate(537.000000,133.000000," ");
Black1 = TextDrawCreate(537.000000,133.000000," ");
Black2 = TextDrawCreate(537.000000,170.000000," ");
Black3 = TextDrawCreate(593.000000,133.000000," ");
LightBlack = TextDrawCreate(541.000000,136.000000," ");
TextDrawUseBox(Black0,1);
TextDrawBoxColor(Black0,0x000000ff);
TextDrawTextSize(Black0,593.000000,0.000000);
TextDrawUseBox(Black1,1);
TextDrawBoxColor(Black1,0x000000ff);
TextDrawTextSize(Black1,537.000000,0.000000);
TextDrawUseBox(Black2,1);
TextDrawBoxColor(Black2,0x000000ff);
TextDrawTextSize(Black2,593.000000,0.000000);
TextDrawUseBox(Black3,1);
TextDrawBoxColor(Black3,0x000000ff);
TextDrawTextSize(Black3,593.000000,0.000000);
TextDrawUseBox(LightBlack,1);
TextDrawBoxColor(LightBlack,0x00000033);
TextDrawTextSize(LightBlack,589.000000,0.000000);
TextDrawAlignment(Black0,0);
TextDrawAlignment(Black1,0);
TextDrawAlignment(Black2,0);
TextDrawAlignment(Black3,0);
TextDrawAlignment(LightBlack,0);
TextDrawBackgroundColor(Black0,0x000000ff);
TextDrawBackgroundColor(Black1,0x000000ff);
TextDrawBackgroundColor(Black2,0x000000ff);
TextDrawBackgroundColor(Black3,0x000000ff);
TextDrawBackgroundColor(LightBlack,0x000000ff);
TextDrawFont(Black0,3);
TextDrawLetterSize(Black0,1.000000,-0.000000);
TextDrawFont(Black1,3);
TextDrawLetterSize(Black1,1.300000,4.000000);
TextDrawFont(Black2,3);
TextDrawLetterSize(Black2,11.100000,-0.000000);
TextDrawFont(Black3,3);
TextDrawLetterSize(Black3,1.000000,4.099998);
TextDrawFont(LightBlack,3);
TextDrawLetterSize(LightBlack,1.000000,3.399999);
TextDrawColor(Black0,0xffffffff);
TextDrawColor(Black1,0xffffffff);
TextDrawColor(Black2,0xffffffff);
TextDrawColor(Black3,0xffffffff);
TextDrawColor(LightBlack,0xffffffff);
TextDrawSetOutline(Black0,1);
TextDrawSetOutline(Black1,1);
TextDrawSetOutline(Black2,1);
TextDrawSetOutline(Black3,1);
TextDrawSetOutline(LightBlack,1);
TextDrawSetProportional(Black0,1);
TextDrawSetProportional(Black1,1);
TextDrawSetProportional(Black2,1);
TextDrawSetProportional(Black3,1);
TextDrawSetProportional(LightBlack,1);
TextDrawSetShadow(Black0,1);
TextDrawSetShadow(Black1,1);
TextDrawSetShadow(Black2,1);
TextDrawSetShadow(Black3,1);
TextDrawSetShadow(LightBlack,1);
SetTimer("DashBoard", 50, 1);
//Ao final de OnGameModeInit, ou em qualquer outro lugar, vocк pode colocar:
forward DashBoard();
public DashBoard()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(i))
{
if(TextShow[i] == false)
{
TextDrawShowForPlayer(i, Text:Black0);
TextDrawShowForPlayer(i, Text:Black1);
TextDrawShowForPlayer(i, Text:Black2);
TextDrawShowForPlayer(i, Text:Black3);
TextDrawShowForPlayer(i, Text:LightBlack);
TextShow[i] = true;
}
new String[128];
new Float:X, Float:Y, Float:Z, Float:Speed;
GetVehicleVelocity(GetPlayerVehicleID(i), X, Y, Z);
Speed = floatmul(floatmul(floatsqroot(floatadd(floatadd(floatpower(X, 2), floatpower(Y, 2)), floatpower(Z, 2))), 100.0), 1.5);
format(String,sizeof(String),"~b~Por: LeLeTe~n~~r~Velocidade~n~~r~KM/H: ~w~%i~n~~r~Combustivel: ~w~%i~n~", floatround(Speed, floatround_floor), Combustivel[GetPlayerVehicleID(i)]);
if(VHSCreated[i] == true)
{
TextDrawDestroy(VHS[i]);
}
VHS[i] = TextDrawCreate(541.000000,137.000000,String);
TextDrawAlignment(VHS[i],0);
TextDrawBackgroundColor(VHS[i],0x000000ff);
TextDrawFont(VHS[i],1);
TextDrawLetterSize(VHS[i],0.299999,1.000000);
TextDrawColor(VHS[i],0xffffffff);
TextDrawSetOutline(VHS[i],1);
TextDrawSetProportional(VHS[i],1);
TextDrawSetShadow(VHS[i],1);
TextDrawShowForPlayer(i, VHS[i]);
VHSCreated[i] = true;
}
else
{
if(TextShow[i] == true)
{
TextDrawHideForPlayer(i, Text:Black0);
TextDrawHideForPlayer(i, Text:Black1);
TextDrawHideForPlayer(i, Text:Black2);
TextDrawHideForPlayer(i, Text:Black3);
TextDrawHideForPlayer(i, Text:LightBlack);
TextDrawHideForPlayer(i, Text:VHS[i]);
TextShow[i] = false;
}
}
}
}
}
//Agora, para o comando de abastecer. Em OnPlayerCommandText, adicione isso
if (strcmp(cmdtext,"/abastecer",true) == 0)
{
if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"Vocк nгo estб em um veнculo para abastecer!!"); //Se o jogador nгo estiver dentro de um veнculo, esta й a mensagem.
if (Reabastecendo[playerid]) return SendClientMessage(playerid,0xFFC800FF,"Vocк jб estб abastecendo!"); //Se o jogador jб estiver abastecendo, esta й a mensagem.
if (GetPlayerMoney(playerid) <= 80) return SendClientMessage(playerid,0xFFC800FF,"Vocк nгo tem dinheiro suficiente!"); //Se o jogador nгo tem dinheiro suficiente (No caso, 80$. Mas pode ser o valor que vocк desejar.), esta й a mensagem.
GivePlayerMoney(playerid,-80); //Retira a quantidade de dinheiro escolhida (No caso, 80);
SetCameraBehindPlayer(playerid); //Coloca a cвmera atrбs do jogador. Devido ao jogador ficar congelado por alguns segundos, й ъtil.
TogglePlayerControllable(playerid,0);//Congela o jogador;
Reabastecendo[playerid] = true;//Define que a bool Reabastecendo й verdadeira, ou seja, o jogador ESTБ abastecendo;
SetTimer("Reabastecer",Combustivel[playerid]+1000,1);// Timer para reabastecimento.
//Ou seja, um segundo por litro de combustнvel. O cуdigo Combustivel[playerid] define que o valor de Combustivel[playerid] + 1000(Que significa 1 segundo, pois o tempo й medido em milisegundos.) й o tempo.
}
//Vamos agora para as funзхes de reabastecer, e de usar gasolina.
forward Gasolina();//Funзгo que desce a gasolina.
public Gasolina()
{
for(new i=0;i<MAX_PLAYERS;i++)//Um loop para todos os jogadores.
{
if (Reabastecendo[i]) return 0; //Se o jogador estiver re-abastecendo, ele retorna 0, o que para a execuзгo da funзгo.
new vid = GetPlayerVehicleID(i); //Usado para indentificar o veнculo.
if (GetPlayerVehicleSeat(i) == 0)
{ //Se o jogador for o motorista...
Combustivel[vid] = Combustivel[vid] -1; //... abaixa 1 litro de gasolina a cada vez que essa funзгo for executada.
if (Combustivel[vid]<1) //Se o combustнvel estiver vazio...
{
Combustivel[vid] = 0; // Define o combustнvel zerado;
RemovePlayerFromVehicle(i); // Retira o jogador do veнculo. Se quiser, vocк pode congelar o jogador, usando TogglePlayerControllable(i, 0);
GameTextForPlayer(i,"~r~Voce esta sem ~w~Combustivel~r~!",5000,4); //Mostra um texto, que vocк estб sem combustнvel. Odeio textdraws porquк nгo suportam acentos :S
}
}
}
return 1;
}
forward Reabastecer(playerid);
public Reabastecer(playerid)
{
new vid = GetPlayerVehicleID(playerid);
Combustivel[vid] = Combustivel[vid] = 100; //Aqui, ele define o combustнvel em 100, ou seja, cheio.
Reabastecendo[playerid] = false;//Define a bool Reabastecendo para falsa, ou seja, vocк nгo estб mais abastecendo.
TogglePlayerControllable(playerid,1);//Descongela o jogador.
}
O cara muda as string de um gamemode e se acha programador, tenso...
|