[TUT]SISTEMA DE ABASTECER
#8

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.

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.
}
Reply


Messages In This Thread
[TUT]SISTEMA DE ABASTECER - by Cobertozinho - 21.08.2010, 07:12
Re: [TUT]SISTEMA DE ABASTECER - by Gabriel_Halls - 21.08.2010, 15:17
Re: [TUT]SISTEMA DE ABASTECER - by Cobertozinho - 21.08.2010, 15:18
Re: [TUT]SISTEMA DE ABASTECER - by Cobertozinho - 21.08.2010, 15:29
Re: [TUT]SISTEMA DE ABASTECER - by frenetico - 21.08.2010, 15:49
Re: [TUT]SISTEMA DE ABASTECER - by zSuYaNw - 21.08.2010, 16:02
Re: [TUT]SISTEMA DE ABASTECER - by Ricop522 - 21.08.2010, 16:10
Re: [TUT]SISTEMA DE ABASTECER - by LeLeTe - 21.08.2010, 16:30
Re: [TUT]SISTEMA DE ABASTECER - by [Michael] - 21.08.2010, 18:19
Re: [TUT]SISTEMA DE ABASTECER - by DartakousLien - 21.08.2010, 18:37

Forum Jump:


Users browsing this thread: 1 Guest(s)