Portal SAMP
[Ajuda] Como identificar motor ligado - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Como identificar motor ligado (/showthread.php?tid=945)

Páginas: 1 2


Como identificar motor ligado - LeleziiN - 18/03/2021

Bom alguém saberia mim dizer como é que posso identifica com uma TextDraw se o motor do veículo está ligado ou desligado, tipo eu criei um sistema de ignição para os veículos do meu servidor, mais queria por uma TextDraw para identifica-lo quando a pessoa entra-se no veiculo.

Eu fiz aqui mais não está funcionando correto, poderiam mim ajudar??

Código PHP:
if(newkeys == KEY_YES)
    {
        if((IsPlayerConnected(playerid)) && (IsPlayerInAnyVehicle(playerid) == 1) && (Logado[playerid] == 1))
        {
             new 
modelo;
            
modelo GetVehicleModel(GetPlayerVehicleID(playerid));
            if((
modelo != 594) && (modelo != 481) && (modelo != 509) && (modelo != 510))
            {
        
        if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
                {
        
            return SendClientMessage(playeridCORX1"| INFO | Você precisa ser motorista de um veículo!");
        
        }
        
        new motlualarporcappormaob;
        
        new veiculoid GetPlayerVehicleID(playerid);
        
        GetVehicleParamsEx(veiculoidmotlualarporcappormaob);
        
        if(mot == VEHICLE_PARAMS_OFF || mot == VEHICLE_PARAMS_UNSET)
                {
        
            SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_ONlualarporcappormaob);
        
            TextDrawShowForPlayer(playeridBarraMotorx[playerid]);
        
            if(PrintON[playerid] == 1TextDrawHideForPlayer(playeridBarraMotorx[playerid]);
        
        } else {
        
            SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_OFFlualarporcappormaob);
        
            TextDrawShowForPlayer(playeridBarraMotor[playerid]);
        
            if(PrintON[playerid] == 1TextDrawHideForPlayer(playeridBarraMotor[playerid]);
        
        }
    
        }
        }
        return 1;
    



RE: Como identificar motor ligado - Levi.M - 18/03/2021

Esse PrintON[playerid] está verificando oque?

EDIT: Não sei se está certo, mais tente esse:
Código PHP:
    if(newkeys == KEY_YES)
    {
        if((
IsPlayerConnected(playerid)) && (IsPlayerInAnyVehicle(playerid) == 1) && (Logado[playerid] == 1))
        {
            new 
modelo;
            
modelo GetVehicleModel(GetPlayerVehicleID(playerid));
            if((
modelo != 594) && (modelo != 481) && (modelo != 509) && (modelo != 510))
            {
                if(
GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
                {
                    new 
motlualarporcappormaob;
                    new 
veiculoid GetPlayerVehicleID(playerid);
                    
GetVehicleParamsEx(veiculoidmotlualarporcappormaob);
                    if(
mot == VEHICLE_PARAMS_OFF || mot == VEHICLE_PARAMS_UNSET)
                    {
                        
SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_ONlualarporcappormaob);
                        
TextDrawShowForPlayer(playeridBarraMotorx[playerid]);
                        
TextDrawHideForPlayer(playeridBarraMotor[playerid]);
                    } else {
                        
SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_OFFlualarporcappormaob);
                        
TextDrawShowForPlayer(playeridBarraMotor[playerid]);
                        
TextDrawHideForPlayer(playeridBarraMotorx[playerid]);
                    }
                }
            }
        }
        return 
1;
    } 



RE: Como identificar motor ligado - LeleziiN - 19/03/2021

(18/03/2021 11:45)Levi.M Escreveu: Esse PrintON[playerid] está verificando oque?

EDIT: Não sei se está certo, mais tente esse:
Código PHP:
    if(newkeys == KEY_YES)
    {
        if((IsPlayerConnected(playerid)) && (IsPlayerInAnyVehicle(playerid) == 1) && (Logado[playerid] == 1))
        {
            new 
modelo;
            modelo GetVehicleModel(GetPlayerVehicleID(playerid));
            if((modelo != 594) && (modelo != 481) && (modelo != 509) && (modelo != 510))
            {
                if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
        
        {
    
                new motlualarporcappormaob;
    
                new veiculoid GetPlayerVehicleID(playerid);
    
                GetVehicleParamsEx(veiculoidmotlualarporcappormaob);
    
                if(mot == VEHICLE_PARAMS_OFF || mot == VEHICLE_PARAMS_UNSET)
    
                {
    
                    SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_ONlualarporcappormaob);
    
                    TextDrawShowForPlayer(playeridBarraMotorx[playerid]);
    
                    TextDrawHideForPlayer(playeridBarraMotor[playerid]);
    
                } else {
    
                    SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_OFFlualarporcappormaob);
    
                    TextDrawShowForPlayer(playeridBarraMotor[playerid]);
    
                    TextDrawHideForPlayer(playeridBarraMotorx[playerid]);
    
                }
                }
            }
        }
        return 1;
    

Continuou a mesma coisa mano


RE: Como identificar motor ligado - k2bi_YT - 19/03/2021

Qual é a função dessa PrintON[playerid]?


RE: Como identificar motor ligado - LeleziiN - 19/03/2021

(19/03/2021 12:14)k2bi_YT Escreveu: Qual é a função dessa PrintON[playerid]?

foi um erro já removi.

Mais eu queria fazer que quando eu entresse no veiculo e aperta-se 'Y' ligava o veiculo e aparecia uma textdraw com o nome MotorOn indicando que o motor estava ligado com a parte On verde (~g~~h~On)

Até ai eu fiz mais quando saiu do veiculo e entro de volta a textdraw de motor ligado desaparece


RE: Como identificar motor ligado - LeleziiN - 20/03/2021

Alguém para mim ajuda nesse problema?


RE: Como identificar motor ligado - k2bi_YT - 21/03/2021

Código PHP:
if(newkeys KEY_YES)
{
    if(
IsPlayerInAnyVehicle(playerid))
    {
         new 
modelo;
        
modelo GetVehicleModel(GetPlayerVehicleID(playerid));
        if(
modelo == 594 || modelo == 481 || modelo == 509 || modelo == 510) return 1
        
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playeridCORX1"| INFO | Você precisa ser motorista de um veículo!");
        new 
motlualarporcappormaob;
        new 
veiculoid GetPlayerVehicleID(playerid);
        
GetVehicleParamsEx(veiculoidmotlualarporcappormaob);
        if(!
mot)
        {
            
SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_ONlualarporcappormaob);
            
TextDrawShowForPlayer(playeridBarraMotorx[playerid]);
            
SendClientMessage(playerid, -1"Motor ON.");
        }
        else if(
mot)
        {
            
SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_OFFlualarporcappormaob);
            
TextDrawShowForPlayer(playeridBarraMotor[playerid]);
            
SendClientMessage(playerid, -1"Motor OFF.");
        }  
    }
    return 
1;




RE: Como identificar motor ligado - LeleziiN - 21/03/2021

(21/03/2021 08:52)k2bi_YT Escreveu:
Código PHP:
if(newkeys KEY_YES)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
         new modelo;
        modelo GetVehicleModel(GetPlayerVehicleID(playerid));
        if(modelo == 594 || modelo == 481 || modelo == 509 || modelo == 510) return 1
        
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playeridCORX1"| INFO | Você precisa ser motorista de um veículo!");
        new motlualarporcappormaob;
        new veiculoid GetPlayerVehicleID(playerid);
        GetVehicleParamsEx(veiculoidmotlualarporcappormaob);
        if(!mot)
        {
            SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_ONlualarporcappormaob);
            TextDrawShowForPlayer(playeridBarraMotorx[playerid]);
            SendClientMessage(playerid, -1"Motor ON.");
        }
        else if(mot)
        {
            SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_OFFlualarporcappormaob);
            TextDrawShowForPlayer(playeridBarraMotor[playerid]);
            SendClientMessage(playerid, -1"Motor OFF.");
        }  
    
}
    return 1;


Mais dessa forma a textdraw que é uma barrinha verde para motor ligado e outra vermelha para motor desligado irar funcionar correto?
pq o problema que estou tendo é que quando eu ligo o motor do veículo e saiu dele, e entro de volta a barrinha verde que era para tá identificando se o motor está ligado desaparece


RE: Como identificar motor ligado - k2bi_YT - 21/03/2021

Adicione isso na callback OnPlayerStateChange

Como eu não sei qual textdraw vai identificar o motor ligado, fiz assim para você conseguir entender, mas basta colocar na ordem correta

Exemplo: Se o motor estiver desligado, deve esconder a textdraw que identifica como ON e mostrar a que identifica como OFF e vice-versa

Caso eu tenha ajudado na função de ligar o motor (newkeys & KEY_YES), basta apenas adicionar esse codigo abaixo na sua GM e testar, mas possivelmente você vai ter que esconder uma e mostrar outra na hora de acionar a tecla para ligar o motor, adicionando TextDrawShowForPlayer e TextDrawHideForPlayer na callback OnPlayerKeyStateChange
Código PHP:
public OnPlayerStateChange(playeridnewstateoldstate)
{
    if(
IsPlayerInAnyVehicle(playerid))
    {
        new 
motlualarporcappormaob;
        new 
veiculoid GetPlayerVehicleID(playerid);
        
GetVehicleParamsEx(veiculoidmotlualarporcappormaob);
        if(!
mot)
        {
            
SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_ONlualarporcappormaob);
            
TextDrawHideForPlayer(playeridBarraMotorx[playerid]);//Caso essa textdraw for a identificação do motor desligado (caso não, basta inverter de  | Hide para Show |)
            
TextDrawShowForPlayer(playeridBarraMotor[playerid]);//Caso essa textdraw for a identificação do motor desligado (caso não, basta inverter de  | Hide para Show |)
        
}
        else if(
mot)
        {
            
SetVehicleParamsEx(veiculoidVEHICLE_PARAMS_OFFlualarporcappormaob);
            
TextDrawHideForPlayer(playeridBarraMotor[playerid]);
            
TextDrawShowForPlayer(playeridBarraMotorx[playerid]);
        }  
    }
    else
    {
        
TextDrawHideForPlayer(playeridBarraMotor[playerid]);//Caso essa textdraw for a identificação do motor desligado (caso não, basta inverter de  | Hide para Show |)
        
TextDrawHideForPlayer(playeridBarraMotorx[playerid]);//Caso essa textdraw for a identificação do motor desligado (caso não, basta inverter de  | Hide para Show |)
    
}
    return 
1;




RE: Como identificar motor ligado - LeleziiN - 21/03/2021

Bom mano eu tinha dado uma mudada no formato na questão da TextDraw, agora eu fiz dessa forma uma barrinha verde para motor ligado e nada para motor desligado. Tipo quando eu entrar no veiculo desligado fica dessa forma

[Imagem: sa-mp-425.png]

Ai quando aperto a tela 'Y' fica asse mostrando essa barrinha verde identificando que o motor tá ligado

[Imagem: sa-mp-426.png]

Mais o problema é que quando eu saiu do veículo que está ligado e entro em outro desligado a barrinha verde fica aparecendo no veiculo desligado, como posso resolver isso??