Jump to content

Explosao


Recommended Posts

Entao to querendo fazer uma coisa pra tornar o carro ser possivel de receber dano somente se estiver sendo ocupado por players, antigamente era assim, depois mudaram para o carro receber dano mesmo sem ninguem dentro para ficar mais realista, é possivel fazer como era antes? (Sem ninguem dentro = carro indestrutivel / com alguem dentro = carro destrutivel)

Link to comment

Entao NewAge, tentei fazer aqui mas meu problema é com essas coisas de array que não entendo nada, não sei fazer para verificar qual veiculo ta tomando dano. Por exemplo nesse codigo que tentei fazer todos os carros ficam imortais, mesmo se um jogador entra nele (ele nao detecta que tem alguem dentro) e em qualquer outra forma que tento ou todos ficam indestrutivel ou todos destrutiveis, e nao apenas os ocupados..

  
function teste() 
  if isVehicleOccupied then 
  cancelEvent() 
 end 
end 
addEventHandler("onClientVehicleDamage", getRootElement(), teste) 
  

Link to comment

Como descrito na pagina da wiki do evento onClientVehicleDamage o veiculo que recebeu o dano é representado pela variável source.

Outra coisa é que você deve usar isVehicleOccupied como uma função, Não como variavel, ela tambem deve estar inclusa no código por não ser uma função nativa.

function isVehicleOccupied(vehicle) 
    assert(isElement(vehicle) and getElementType(vehicle) == "vehicle", "Bad argument @ isVehicleOccupied [expected vehicle, got " .. tostring(vehicle) .. "]") 
    local _, occupant = next(getVehicleOccupants(vehicle)) 
    return occupant and true, occupant 
end 
  
function teste() 
    if not isVehicleOccupied ( source ) then -- o not é necessario para dizer que 'se o veiculo não (not) estiver ocupado fazer'.. 
        cancelEvent() 
    end 
end 
addEventHandler("onClientVehicleDamage", getRootElement(), teste) 

Se não for do seu gosto cancelar o evento onClientVehicleDamagevocê pode usar a função setVehicleDamageProof com algumas checagens :P

Link to comment

Entao newage, eu tentei fazer dessa forma, como não sabia se era client ou server side, tentei nos dois. Acontece que dessa forma ainda pode ser bugado pois o que está acontecendo é o seguinte: Se tem 1 carro e 1 player, o carro só fica destrutivel se o player está dentro do carro, mas agora se há mais de um carro, ele não consegue especificar qual o carro tornar destrutivel, ele torna todos e ai quando o player sai do carro todos eles ainda estão setados como destrutivel. Em outras palavras só funciona se for 1 carro e 1 player apenas :x

Link to comment
Entao newage, eu tentei fazer dessa forma, como não sabia se era client ou server side, tentei nos dois. Acontece que dessa forma ainda pode ser bugado pois o que está acontecendo é o seguinte: Se tem 1 carro e 1 player, o carro só fica destrutivel se o player está dentro do carro, mas agora se há mais de um carro, ele não consegue especificar qual o carro tornar destrutivel, ele torna todos e ai quando o player sai do carro todos eles ainda estão setados como destrutivel. Em outras palavras só funciona se for 1 carro e 1 player apenas :x

Nunca reparei isso, enfim, tente esse script (server side):

addEventHandler ( "onResourceStart", resourceRoot, 
function ( ) 
    for _,v in ipairs ( getElementsByType ( "vehicle" ) ) do 
        if getVehicleOccupants ( v ) and #getVehicleOccupants ( v ) > 0 then 
            setVehicleDamageProof ( v, true ) 
        end 
    end 
end ) 
  
addEventHandler ( "onVehicleEnter", root, 
function ( ) 
    setVehicleDamageProof ( source, false ) 
end ) 
  
addEventHandler ( "onVehicleExit", root, 
function ( ) 
    if #getVehicleOccupants ( source ) > 0 then -- talvez seja necessário trocar o 0 pelo 1, não testei.. 
        setVehicleDamageProof ( source, true ) 
    end 
end ) 

Link to comment

Muito obrigado !!!!!!!!

Funcionou perfeitamente. Tive que mudar o "> 0" para "< 1" Pois queria quando não houvesse ocupantes setar como true, caso contrario false.

Cara muito obrigado mesmo! Estou com algumas duvidas sobre esse codigo, se puder me ajudar agradeceria mais ainda

1. Por que nas funçoes de entrar/sair do carro o source é o veiculo? Na minha mentalidade deveria ser o player que está entrando/saindo.

2. Só há uma array quando a resource é ligada para verificar todos os carros que estão sem ocupantes e setar para god, como que ao entrar/sair de um carro ele não acaba setando todos para true/false? Eu achava que eram necessarias mais arrays verificando o carro e tudo mais.

Muito obrigado!

Link to comment
Muito obrigado !!!!!!!!

Funcionou perfeitamente. Tive que mudar o "> 0" para "< 1" Pois queria quando não houvesse ocupantes setar como true, caso contrario false.

Cara muito obrigado mesmo! Estou com algumas duvidas sobre esse codigo, se puder me ajudar agradeceria mais ainda

1. Por que nas funçoes de entrar/sair do carro o source é o veiculo? Na minha mentalidade deveria ser o player que está entrando/saindo.

2. Só há uma array quando a resource é ligada para verificar todos os carros que estão sem ocupantes e setar para god, como que ao entrar/sair de um carro ele não acaba setando todos para true/false? Eu achava que eram necessarias mais arrays verificando o carro e tudo mais.

Muito obrigado!

1 - Na maioria das funções server side é assim, o player que entrou por exemplo é passado nos parâmetros do evento onVehicleEnter/Exit (Você sempre pode ver isso na wiki...).

2 - Ele não seta todos pois definimos o primeiro parâmetro da função setVehicleDamageProof, Que diz qual veiculo ficará in/destrutível.

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