Jump to content

AJUDA AÍ, É COISA SIMPLES


Recommended Posts

Estou começando a programar em Lua e no MTA agora, estou fazendo meu primeiro mod e não sei o que está errado. É um mod muito simples, só de ligar e desligar o motor do carro com a letra K e desligar quando entra e sai do veículo.

 

function desligarMotor (source)
local veiculo

    if ( getElementType(source) == "vehicle" ) then
        veiculo = source
    end
    if ( getElementType(source) == "player" ) then
        veiculo = getElementData ( source, "cl_ownedvehicle" )
    end
    
    if ( getVehicleEngineState ( veiculo ) == true ) then
        setVehicleEngineState (veiculo, false)
    end

end

function mudarMotor()
local veiculo

    if ( getElementType(source) == "vehicle" ) then
        veiculo = source
    end
    if ( getElementType(source) == "player" ) then
        veiculo = getElementData ( source, "cl_ownedvehicle" )
    end

local estado = getVehicleEngineState (veiculo)
    if estado == false then
        setVehicleEngineState (veiculo, true)
    end
    else 
    setVehicleEngineState (veiculo, false)
    end
end

bindKey ( source, "k", "down", mudarMotor )

addEventHandler ( "onPlayerVehicleEnter", getRootElement(), desligarMotor )
addEventHandler ( "onPlayerVehicleExit", getRootElement(), desligarMotor )

 


Edited by Boechat
Link to comment
7 hours ago, Boechat said:

Estou começando a programar em Lua e no MTA agora, estou fazendo meu primeiro mod e não sei o que está errado. É um mod muito simples, só de ligar e desligar o motor do carro com a letra K e desligar quando entra e sai do veículo.

 


function desligarMotor (source)
local veiculo

    if ( getElementType(source) == "vehicle" ) then
        veiculo = source
    end
    if ( getElementType(source) == "player" ) then
        veiculo = getElementData ( source, "cl_ownedvehicle" )
    end
    
    if ( getVehicleEngineState ( veiculo ) == true ) then
        setVehicleEngineState (veiculo, false)
    end

end

function mudarMotor()
local veiculo

    if ( getElementType(source) == "vehicle" ) then
        veiculo = source
    end
    if ( getElementType(source) == "player" ) then
        veiculo = getElementData ( source, "cl_ownedvehicle" )
    end

local estado = getVehicleEngineState (veiculo)
    if estado == false then
        setVehicleEngineState (veiculo, true)
    end
    else 
    setVehicleEngineState (veiculo, false)
    end
end

bindKey ( source, "k", "down", mudarMotor )

addEventHandler ( "onPlayerVehicleEnter", getRootElement(), desligarMotor )
addEventHandler ( "onPlayerVehicleExit", getRootElement(), desligarMotor )

 


me fale para qual propósito você está usando "local veiculo", geralmente deve usar um getElementData ou algo parecido depois do local veiculo, exemplo
local veiculo = getElementData(veh,"status:motor")

Link to comment

Teste :

-- #1, Lado Server-Side, você precisa registrar a Key para o Jogador.

addEventHandler("onPlayerLogin", root, function ()
   bindKey ( source, "k", "down", ligar_desligar_motor )
end)

addEventHandler("onResourceStart", resourceRoot, function ()
   for i, player in ipairs( getElementsByType("player") ) do
      bindKey ( player, "k", "down", ligar_desligar_motor )
   end
end)

addEventHandler("onResourceStop", resourceRoot, function ()
   for i, player in ipairs( getElementsByType("player") ) do
      unbindKey ( player, "k", "down", ligar_desligar_motor )
   end
end)

-- #2, funções.

function ligar_desligar_motor ( player )
   local veh = getPedOccupiedVehicle ( player )
   if veh then
      if ( getVehicleEngineState (veh) == false ) then
         setVehicleEngineState (veh, true)
      else
         setVehicleEngineState (veh, false)
      end
   end
end

-- #3, eventos.

addEventHandler ( "onPlayerVehicleEnter", root, function ( theVehicle, seat )
   if seat == 0 then
      if ( getVehicleEngineState (theVehicle) == false ) then
         setVehicleEngineState (theVehicle, true)
      end
   end
end)

addEventHandler ( "onPlayerVehicleExit", root, function ( theVehicle, seat )
   if seat == 0 then
      if ( getVehicleEngineState (theVehicle) == true ) then
         setVehicleEngineState (theVehicle, false)
      end
   end
end)

-- # Dica, se você quer aprender, basta, cada função/evento pesquisar no wiki do MTA.
-- https://wiki.multitheftauto.com/wiki/BindKey
-- https://wiki.multitheftauto.com/wiki/GetPedOccupiedVehicle
-- https://wiki.multitheftauto.com/wiki/OnPlayerVehicleEnter
-- https://wiki.multitheftauto.com/wiki/OnPlayerVehicleExit

 

Link to comment
9 hours ago, Sucrilhex said:

me fale para qual propósito você está usando "local veiculo", geralmente deve usar um getElementData ou algo parecido depois do local veiculo, exemplo
local veiculo = getElementData(veh,"status:motor")

Como eu disse, eu estou começando, não sei direito quem ativaria e seria o source. Na real, nem sei muito bem o que é source kkk é quem ativa a função? imagino que sim. Se o source fosse um veiculo, a local veiculo = source, se fosse um player, a local veiculo seria o veiculo que o player é dono.

local veiculo

    if ( getElementType(source) == "vehicle" ) then
        veiculo = source
    end
    if ( getElementType(source) == "player" ) then
        veiculo = getElementData ( source, "cl_ownedvehicle" )
    end

 

3 hours ago, Angelo Pereira said:

Teste :


-- #1, Lado Server-Side, você precisa registrar a Key para o Jogador.

addEventHandler("onPlayerLogin", root, function ()
   bindKey ( source, "k", "down", ligar_desligar_motor )
end)

addEventHandler("onResourceStart", resourceRoot, function ()
   for i, player in ipairs( getElementsByType("player") ) do
      bindKey ( player, "k", "down", ligar_desligar_motor )
   end
end)

addEventHandler("onResourceStop", resourceRoot, function ()
   for i, player in ipairs( getElementsByType("player") ) do
      unbindKey ( player, "k", "down", ligar_desligar_motor )
   end
end)

-- #2, funções.

function ligar_desligar_motor ( player )
   local veh = getPedOccupiedVehicle ( player )
   if veh then
      if ( getVehicleEngineState (veh) == false ) then
         setVehicleEngineState (veh, true)
      else
         setVehicleEngineState (veh, false)
      end
   end
end

-- #3, eventos.

addEventHandler ( "onPlayerVehicleEnter", root, function ( theVehicle, seat )
   if seat == 0 then
      if ( getVehicleEngineState (theVehicle) == false ) then
         setVehicleEngineState (theVehicle, true)
      end
   end
end)

addEventHandler ( "onPlayerVehicleExit", root, function ( theVehicle, seat )
   if seat == 0 then
      if ( getVehicleEngineState (theVehicle) == true ) then
         setVehicleEngineState (theVehicle, false)
      end
   end
end)

-- # Dica, se você quer aprender, basta, cada função/evento pesquisar no wiki do MTA.
-- https://wiki.multitheftauto.com/wiki/BindKey
-- https://wiki.multitheftauto.com/wiki/GetPedOccupiedVehicle
-- https://wiki.multitheftauto.com/wiki/OnPlayerVehicleEnter
-- https://wiki.multitheftauto.com/wiki/OnPlayerVehicleExit

 

Comoçou a dar um erro ERROR: Problem with resource: LigarMotor; Couldn't parse meta file for resource 'LigarMotor' [Line 3: Error reading Attributes.]

 

Minha meta.xml: 

<meta>
	 <info author="Samuel Boechat" description="Motor do carro" version="1.0" type="misc" />
	 <script src="server.Lua" type="server"" />
 	 <config src="help.xml" type="client" />

</meta>

 

Link to comment
1 hour ago, Boechat said:

Como eu disse, eu estou começando, não sei direito quem ativaria e seria o source. Na real, nem sei muito bem o que é source kkk é quem ativa a função? imagino que sim. Se o source fosse um veiculo, a local veiculo = source, se fosse um player, a local veiculo seria o veiculo que o player é dono.


local veiculo

    if ( getElementType(source) == "vehicle" ) then
        veiculo = source
    end
    if ( getElementType(source) == "player" ) then
        veiculo = getElementData ( source, "cl_ownedvehicle" )
    end

 

Comoçou a dar um erro ERROR: Problem with resource: LigarMotor; Couldn't parse meta file for resource 'LigarMotor' [Line 3: Error reading Attributes.]

 

Minha meta.xml: 


<meta>
	 <info author="Samuel Boechat" description="Motor do carro" version="1.0" type="misc" />
	 <script src="server.Lua" type="server"" />
 	 <config src="help.xml" type="client" />

</meta>

 

realmente existe o arquivo help.xml na pasta do script? se não existir apague essa parte do meta

Link to comment

Bom, o erro em si, é na linha 3 do meta, está contendo duas aspas, precisa remover uma das aspas : ( marcado em vermelho )

          <script src="server.Lua" type="server"" />

          Também lembrando :

O nome que você denominou no seu script lá dentro da pasta do seu resource, você precisa coloca o mesmo nome no meta.

 

Exemplo : Tenho um script chamado : LigarMotor.Lua

Então no meta será : 

<meta>
	<info author="Samuel Boechat" description="Motor do carro" version="1.0" type="misc" />
	<script src="LigarMotor.Lua" type="server" />
</meta>

 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...