Blacko0t Posted June 22, 2015 Share Posted June 22, 2015 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
n3wage Posted June 22, 2015 Share Posted June 22, 2015 onClientVehicleDamage, isVehicleOccupied, cancelEvent Link to comment
Blacko0t Posted June 22, 2015 Author Share Posted June 22, 2015 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
n3wage Posted June 22, 2015 Share Posted June 22, 2015 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 Link to comment
Blacko0t Posted June 23, 2015 Author Share Posted June 23, 2015 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 Link to comment
n3wage Posted June 24, 2015 Share Posted June 24, 2015 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 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
Blacko0t Posted June 25, 2015 Author Share Posted June 25, 2015 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
n3wage Posted June 25, 2015 Share Posted June 25, 2015 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now