21.08.2010, 16:30
Oia que bunitinho meu sistema de login *-*!
Para te auxiliar, vou te arranjar um sistema de gasolina + velocнmetro. Particularmente, eu nгo gosteo . Mais prefiro MUITO MAIS ajudar, ao invйs de criticar.
Para te auxiliar, vou te arranjar um sistema de gasolina + velocнmetro. Particularmente, eu nгo gosteo . Mais prefiro MUITO MAIS ajudar, ao invйs de criticar.
pawn Код:
//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.
}