[FilterScript] Sistema de Engniзгo do veiculo
#1

SISTEMA DE ENGNIЗГO DO VEICULO

Olб galera,
Bom esse й meu primeiro FilterScript, sou novato na linguagem pawn, e criei esse simples sistema de engniзгo do veiculo por teclas. Algumas pessoas procuram isto e acabam nгo achando exatamente como funciona.
Pesso a vocкs, que vejam o code, e dккm suas opiniхes.
O FS й simples, mas com o tempo eu vo aprendendo e evoluindo o sistema.[/I][/B]


Acesso ao code/pastebin aqui!.

Aceito - Criticas & elogios..
Afinal com erros que aprendemos.


pawn Код:
#include <a_samp>

// Codes de uso livre! Apenas reconheзa o trabalho e deixe os creditos!

public OnFilterScriptInit()
{
    print("________________________________________");
    print("Sistema simples de inginiзгo do veiculo ");
    print("          By Nill.Oliveira              ");
    print("________________________________________");
    return 1;
}
/*----------------------------------------------------------------------------*/
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/farol", cmdtext, true, 10) == 0)
{
    new luz[MAX_VEHICLES];
    new motor, farol, alarme, porta, capo, portamala, objetivo;
    new carro = GetPlayerVehicleID(playerid);
    if(carro != INVALID_VEHICLE_ID)
    {
        if(luz[playerid] == 0)
        {
            GetVehicleParamsEx(carro, motor, farol, alarme, porta, capo, portamala, objetivo);
            SetVehicleParamsEx(carro, motor, VEHICLE_PARAMS_ON, alarme, porta, capo, portamala, objetivo);
            luz[playerid] = 1;
            SendClientMessage(playerid, -1, "Farol do veiculo Ligado.");
        }
        else if(luz[playerid] == 1)
        {
            GetVehicleParamsEx(carro, motor, farol, alarme, porta, capo, portamala, objetivo);
            SetVehicleParamsEx(carro, motor, VEHICLE_PARAMS_OFF, alarme, porta, capo, portamala, objetivo);
            luz[playerid] = 0;
            SendClientMessage(playerid, -1, "Farol do veiculo Desligado.");
        }
    }
}
if (strcmp("/motor", cmdtext, true, 10) == 0)
{
    new enginicao[MAX_VEHICLES];
    new motor, farol, alarme, portas, capo, portamalas, objetivo;
    new carro = GetPlayerVehicleID(playerid);
    if(carro != INVALID_VEHICLE_ID)
    {
        if(enginicao[playerid] == 0)
        {
            GetVehicleParamsEx(carro, motor, farol, alarme, portas, capo, portamalas, objetivo);
            SetVehicleParamsEx(carro, VEHICLE_PARAMS_ON, farol, alarme, portas, capo, portamalas, objetivo);
            enginicao[playerid] = 1;
            SendClientMessage(playerid, -1, "Motor do veiculo Ligado.");
        }
        else if(enginicao[playerid] == 1)
        {
            GetVehicleParamsEx(carro, motor, farol, alarme, portas, capo, portamalas, objetivo);
            SetVehicleParamsEx(carro, VEHICLE_PARAMS_OFF, farol, alarme, portas, capo, portamalas, objetivo);
            enginicao[playerid] = 0;
            SendClientMessage(playerid, -1, "Motor do veiculo Desligado.");
        }
    }
}
if (strcmp("/repararcarro", cmdtext, true) == 0)
    {
        if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage (playerid, 0x00FF00AA, "Vocк nгo estб em um veiculo.");
        {
            new veiculo = GetPlayerVehicleID (playerid);
            SetVehicleHealth (veiculo, 1000.0);
            SendClientMessage (playerid, -1, "O motor do veнculo foi totalmente consertado.");
            return 1;
        }
    }
return 0;
}

/*----------------------------------------------------------------------------*/
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Ligar ou desligar a Luz do veiculo precione [Y] e motor [N].");
    new motor, farol, alarme, portas, capo, portamalas, objetivo;
    {
        GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
        SetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
    }
    return 1;
}

/*----------------------------------------------------------------------------*/
public OnPlayerExitVehicle(playerid, vehicleid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Desligue o motor do veiculo, poupe seu combustivel!");
    return 1;
}

/*----------------------------------------------------------------------------*/
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if((newkeys == 65536) && (IsPlayerInAnyVehicle(playerid)))
        {
            OnPlayerCommandText(playerid, "/farol");
            return 1;
        }
    if((newkeys == 131072) && (IsPlayerInAnyVehicle(playerid)))
        {
            OnPlayerCommandText(playerid, "/motor");
            return 1;
        }
    return 1;
}
Reply
#2

Oque eu posso dizer............ Legal, legal, vai ser um grande impacto
quando for usar..
Reply
#3

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Oque eu posso dizer............ Legal, legal, vai ser um grande impacto
quando for usar..
grande impacto quando for usar?
de que maneira vocк se refere ?
Reply
#4

Horrivel.
Reply
#5

Kkkk da pra fazer bem mais coisas que isto .

Abreviando : Pessimo!
Reply
#6

Pode ser que alguem possa usar como base para outro!
Dava para melhorar isso muitas variaveis sobrando.

pawn Код:
if((newkeys == 131072) && (IsPlayerInAnyVehicle(playerid)))
        {
            OnPlayerCommandText(playerid, "/motor");
            return 1;
        }
pra q? o comando colocasse a funзгo!

mais como primeiro estб legalzin!
Reply
#7

furem meus olhos...
Reply
#8

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение
Horrivel.
Quote:
Originally Posted by mau.tito
Посмотреть сообщение
Kkkk da pra fazer bem mais coisas que isto .

Abreviando : Pessimo!
Quote:
Originally Posted by tonisantolia
Посмотреть сообщение
furem meus olhos...
Ei gente, que isso? Vamos ajudar ele em vez de criticar, atй porque vocкs (nгo os 3) nгo podem falar nada, haha, sem comentбrios.

Nil, nesse caso
pawn Код:
new mensagem[128];
 format(mensagem, sizeof (mensagem), "Ligar ou desligar a Luz do veiculo precione [Y] e motor [N].");
 SendClientMessage(playerid, 0xFFFFFFFF, mensagem);
Nгo precisa de format, й sу:
pawn Код:
SendClientMessage(playerid, 0xFFFFFFFF, "Ligar ou desligar a Luz do veiculo precione [Y] e motor [N].");
Format vocк usa quando vai obter texto/valor de uma variбvel, como ID, Nome, nivel admin, etc. Nгo sei explicar bem, kk.


Nesse comando:
pawn Код:
if (strcmp("/repararcarro", cmdtext, true) == 0)
    {
        new vehicleid = GetPlayerVehicleID (playerid);
        SetVehicleHealth (vehicleid, 1000.0);
        SendClientMessage (playerid, -1, "O motor do veнculo foi totalmente reparado.");
        return 1;
    }
Deveria ter verificado se ele estб em um veнculo, nгo?

Tem variбveis que poderiam ser bool e globais.

O return da OnPlayerCommandText tem que ser 0 e vocк poderia ter melhorado nos return dos comandos.

Se eu achar mais erro, postarei aqui.
Reply
#9

Poderia fazer melhor, continue tentando.
Reply
#10

Quote:
Originally Posted by humildadeforever
View Post
Ei gente, que isso? Vamos ajudar ele em vez de criticar, atй porque vocкs (nгo os 3) nгo podem falar nada, haha, sem comentбrios.

Nil, nesse caso
pawn Code:
new mensagem[128];
 format(mensagem, sizeof (mensagem), "Ligar ou desligar a Luz do veiculo precione [Y] e motor [N].");
 SendClientMessage(playerid, 0xFFFFFFFF, mensagem);
Nгo precisa de format, й sу:
pawn Code:
SendClientMessage(playerid, 0xFFFFFFFF, "Ligar ou desligar a Luz do veiculo precione [Y] e motor [N].");
Format vocк usa quando vai obter texto/valor de uma variбvel, como ID, Nome, nivel admin, etc. Nгo sei explicar bem, kk.


Nesse comando:
pawn Code:
if (strcmp("/repararcarro", cmdtext, true) == 0)
    {
        new vehicleid = GetPlayerVehicleID (playerid);
        SetVehicleHealth (vehicleid, 1000.0);
        SendClientMessage (playerid, -1, "O motor do veнculo foi totalmente reparado.");
        return 1;
    }
Deveria ter verificado se ele estб em um veнculo, nгo?

Tem variбveis que poderiam ser bool e globais.

O return da OnPlayerCommandText tem que ser 0 e vocк poderia ter melhorado nos return dos comandos.

Se eu achar mais erro, postarei aqui.
Vleu pelas dicas, e consertei oqe voce falou.

Quote:
Originally Posted by [NVC]iTrevaS
View Post
Poderia fazer melhor, continue tentando.
Sim, vo continuar tentando ..
Reply
#11

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
Ei gente, que isso? Vamos ajudar ele em vez de criticar.
Realmente .
Porriso fiz algo bem proximo do que tentou fazer .

Use como base , estude-o ela para que possa fazer o seu novamente .
Caso de duvidas chame no msn.


pawn Код:
#include a_samp
enum Dvei
{
    bool:vMotor,
    bool:vFarol//pode ser adicionado mais
}
new VeiculoInfo[MAX_VEHICLES][Dvei];
new motor, farol, alarme, portas, capo, portamalas, objetivo;
public OnFilterScriptInit()
{
    for(new i; i < MAX_VEHICLES; i ++)
    {
         VeiculoInfo[i][vMotor] = false;
         VeiculoInfo[i][vFarol] = false;
         GetVehicleParamsEx(i, motor, farol, alarme, portas, capo, portamalas, objetivo);
         SetVehicleParamsEx(i, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarme, portas, capo, portamalas,objetivo);
    }
    return 1;
}
public OnFilterScriptExit()
{
    return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{

    if(VeiculoInfo[vehicleid][vMotor] == false)
         SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo desligado [2] para liga-lo.");
         else
         SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo ligado [2] para desliga-lo.");
         
    if(VeiculoInfo[vehicleid][vFarol] == false)
         SendClientMessage(playerid, 0xFFFFFFFF, "Farol desligado [H] para liga-lo.");
         else
         SendClientMessage(playerid, 0xFFFFFFFF, "Farol ligado [H] para desliga-lo.");
         
    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SUBMISSION  && oldkeys == KEY_SUBMISSION)
    {
         new vehicleid = GetPlayerVehicleID (playerid);
         if(VeiculoInfo[vehicleid][vMotor] == false)
         {
               VeiculoInfo[vehicleid][vMotor] = true;
               SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo ligado [2] para desliga-lo.");
               GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
               SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, farol, alarme, portas, capo, portamalas,objetivo);
         }
         else
         {
               VeiculoInfo[vehicleid][vMotor] = false;
               SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo desligado [2] para liga-lo.");
               GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
               SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, farol, alarme, portas, capo, portamalas,objetivo);
         }
    }
    if(newkeys == KEY_CTRL_BACK  && oldkeys == KEY_CTRL_BACK)
    {
         new vehicleid = GetPlayerVehicleID (playerid);
         if(VeiculoInfo[vehicleid][vFarol] == false)
         {
                VeiculoInfo[vehicleid][vFarol] = true;
                SendClientMessage(playerid, 0xFFFFFFFF, "Farol ligado [H] para desliga-lo.");
                GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
                SetVehicleParamsEx(vehicleid, motor, VEHICLE_PARAMS_ON, alarme, portas, capo, portamalas,objetivo);
         }
         else
         {
                VeiculoInfo[vehicleid][vFarol] = false;
                SendClientMessage(playerid, 0xFFFFFFFF, "Farol desligado [H] para liga-lo.");
                GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
                SetVehicleParamsEx(vehicleid, motor, VEHICLE_PARAMS_OFF, alarme, portas, capo, portamalas,objetivo);
          }
    }
    return 1;
}

#edit
Acho que errei algo
Reply
#12

Cara, estб bom para o primeiro FS.
Vou dar algumas dicas:

Nгo й preciso de:
PHP Code:
#if defined FILTERSCRIPT
#else
  
#endif 
Estude ZCMD(Processador de comandos), muito mais fбcil e melhor do que strcmp.
Tente optimizar seus cуdigos, nгo criar tantas variбveis, se caso for usar uma variбvel para dois casos ( 0 e 1 ), use booleanas ( true e false ).
Melhorar a identificaзгo de onde vai ser executado a funзгo, do tipo verificar se o player esta ou nгo dentro do veiculo.
Melhorar a indentaзгo do cуdigo, para ficar mais "limpo".
Melhorar alguns erros no cуdigo, tipo esse:
PHP Code:
    new motorfarolalarmeportascapoportamalasobjetivo;
    {
        
GetVehicleParamsEx(vehicleidmotorfarolalarmeportascapoportamalasobjetivo);
        
SetVehicleParamsEx(vehicleidmotorfarolalarmeportascapoportamalasobjetivo);
    } 
ETC, ETC..


#DICA: Refaz esse FS ae, melhora as coisas que estгo erradas, vai te ajudar

Bom, espero ter ajudado
Reply
#13

Quote:
Originally Posted by Don_Speed
View Post
Realmente .
Porriso fiz algo bem proximo do que tentou fazer .

Use como base , estude-o ela para que possa fazer o seu novamente .
Caso de duvidas chame no msn.


pawn Code:
#include a_samp
enum Dvei
{
    bool:vMotor,
    bool:vFarol//pode ser adicionado mais
}
new VeiculoInfo[MAX_VEHICLES][Dvei];
new motor, farol, alarme, portas, capo, portamalas, objetivo;
public OnFilterScriptInit()
{
    for(new i; i < MAX_VEHICLES; i ++)
    {
         VeiculoInfo[i][vMotor] = false;
         VeiculoInfo[i][vFarol] = false;
         GetVehicleParamsEx(i, motor, farol, alarme, portas, capo, portamalas, objetivo);
         SetVehicleParamsEx(i, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarme, portas, capo, portamalas,objetivo);
    }
    return 1;
}
public OnFilterScriptExit()
{
    return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{

    if(VeiculoInfo[vehicleid][vMotor] == false)
         SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo desligado [2] para liga-lo.");
         else
         SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo ligado [2] para desliga-lo.");
         
    if(VeiculoInfo[vehicleid][vFarol] == false)
         SendClientMessage(playerid, 0xFFFFFFFF, "Farol desligado [H] para liga-lo.");
         else
         SendClientMessage(playerid, 0xFFFFFFFF, "Farol ligado [H] para desliga-lo.");
         
    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SUBMISSION  && oldkeys == KEY_SUBMISSION)
    {
         new vehicleid = GetPlayerVehicleID (playerid);
         if(VeiculoInfo[vehicleid][vMotor] == false)
         {
               VeiculoInfo[vehicleid][vMotor] = true;
               SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo ligado [2] para desliga-lo.");
               GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
               SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, farol, alarme, portas, capo, portamalas,objetivo);
         }
         else
         {
               VeiculoInfo[vehicleid][vMotor] = false;
               SendClientMessage(playerid, 0xFFFFFFFF, "Veiculo desligado [2] para liga-lo.");
               GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
               SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, farol, alarme, portas, capo, portamalas,objetivo);
         }
    }
    if(newkeys == KEY_CTRL_BACK  && oldkeys == KEY_CTRL_BACK)
    {
         new vehicleid = GetPlayerVehicleID (playerid);
         if(VeiculoInfo[vehicleid][vFarol] == false)
         {
                VeiculoInfo[vehicleid][vFarol] = true;
                SendClientMessage(playerid, 0xFFFFFFFF, "Farol ligado [H] para desliga-lo.");
                GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
                SetVehicleParamsEx(vehicleid, motor, VEHICLE_PARAMS_ON, alarme, portas, capo, portamalas,objetivo);
         }
         else
         {
                VeiculoInfo[vehicleid][vFarol] = false;
                SendClientMessage(playerid, 0xFFFFFFFF, "Farol desligado [H] para liga-lo.");
                GetVehicleParamsEx(vehicleid, motor, farol, alarme, portas, capo, portamalas, objetivo);
                SetVehicleParamsEx(vehicleid, motor, VEHICLE_PARAMS_OFF, alarme, portas, capo, portamalas,objetivo);
          }
    }
    return 1;
}

#edit
Acho que errei algo
Valeu, vo estudar isto.

Quote:
Originally Posted by kratty
View Post
Cara, estб bom para o primeiro FS.
Vou dar algumas dicas:

Nгo й preciso de:
PHP Code:
#if defined FILTERSCRIPT
#else
  
#endif 
Estude ZCMD(Processador de comandos), muito mais fбcil e melhor do que strcmp.
Tente optimizar seus cуdigos, nгo criar tantas variбveis, se caso for usar uma variбvel para dois casos ( 0 e 1 ), use booleanas ( true e false ).
Melhorar a identificaзгo de onde vai ser executado a funзгo, do tipo verificar se o player esta ou nгo dentro do veiculo.
Melhorar a indentaзгo do cуdigo, para ficar mais "limpo".
Melhorar alguns erros no cуdigo, tipo esse:
PHP Code:
    new motorfarolalarmeportascapoportamalasobjetivo;
    {
        
GetVehicleParamsEx(vehicleidmotorfarolalarmeportascapoportamalasobjetivo);
        
SetVehicleParamsEx(vehicleidmotorfarolalarmeportascapoportamalasobjetivo);
    } 
ETC, ETC..


#DICA: Refaz esse FS ae, melhora as coisas que estгo erradas, vai te ajudar

Bom, espero ter ajudado
Obrigado pela sugestхes e dicas Kratty.

@EDIT

Refeito.
Reply
#14

Eu nгo posso falar nada, meu sistema de cinto de seguranзa ficou uma desgraзa !
Reply
#15

Quote:
Originally Posted by Lucas-Fc
View Post
Eu nгo posso falar nada, meu sistema de cinto de seguranзa ficou uma desgraзa !
Isso sim usaria MAX_PLAYERS , nesse caso do nill e MAX_VEHICLES .
Reply
#16

Quote:
Originally Posted by humildadeforever
Посмотреть сообщение
Ei gente, que isso? Vamos ajudar ele em vez de criticar, atй porque vocкs (nгo os 3) nгo podem falar nada, haha, sem comentбrios.
Eles nasceram sabendo pawn. ^^

@Topic

Se consertar alguns bugzinhos, aposto que users GF irгo usar. .
Reply
#17

Nada mal. '-'
Reply
#18

Por favor cara, leia meu tutorial postado que estб em minha assinatura
"Oque vocк precisa Saber".
Reply
#19

Quote:
Originally Posted by @Riichard
View Post
Eles nasceram sabendo pawn. ^^

@Topic

Se consertar alguns bugzinhos, aposto que users GF irгo usar. .
Obrigado pela dica, valeu!

Quote:
Originally Posted by jpeg
View Post
Nada mal. '-'
Valeu vey!

Quote:
Originally Posted by [Full]Garfield[XDB]
View Post
Por favor cara, leia meu tutorial postado que estб em minha assinatura
"Oque vocк precisa Saber".
Seu topico ta como pagina principal do meu navegador, to lendo direto.

Com os comentarios de vocкs, eu vou aprendendo cada vez mas..
Obrigado a todos. ^^
Reply
#20

.......
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)